mirror of
https://github.com/postmannen/ctrl.git
synced 2024-12-14 12:37:31 +00:00
added generate nkeys to scripts
This commit is contained in:
parent
6378f2b86c
commit
8d035ab3a0
6 changed files with 69 additions and 59 deletions
|
@ -1,3 +0,0 @@
|
||||||
module test
|
|
||||||
|
|
||||||
go 1.17
|
|
|
@ -1,56 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
"text/template"
|
|
||||||
|
|
||||||
"log"
|
|
||||||
)
|
|
||||||
|
|
||||||
type data struct {
|
|
||||||
IP string
|
|
||||||
Name string
|
|
||||||
Nkey string
|
|
||||||
}
|
|
||||||
|
|
||||||
const tmpNats string = `
|
|
||||||
{
|
|
||||||
# {{.Name}}
|
|
||||||
nkey: {{.Nkey}}
|
|
||||||
permissions: {
|
|
||||||
publish: {
|
|
||||||
allow: ["central.>","errorCentral.>","{{.Name}}.>"]
|
|
||||||
}
|
|
||||||
subscribe: {
|
|
||||||
allow: ["central.>","errorCentral.>","{{.Name}}.>"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
scanner := bufio.NewScanner(os.Stdin)
|
|
||||||
for scanner.Scan() {
|
|
||||||
ss := strings.Split(scanner.Text(), ",")
|
|
||||||
if len(ss) < 3 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
nkey := strings.Split(ss[2], "nkey-user=")
|
|
||||||
|
|
||||||
d := data{
|
|
||||||
IP: ss[0],
|
|
||||||
Name: ss[1],
|
|
||||||
Nkey: nkey[1],
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp, err := template.New("myTemplate").Parse(tmpNats)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("error: template parse failed: %v\n", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp.Execute(os.Stdout, d)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,3 +1,13 @@
|
||||||
|
// Will generate the node specific config to be used in the
|
||||||
|
// authentication section of the nats-server config.
|
||||||
|
// It's given it's input via stdin
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// ./generatenatsconfig < done.log
|
||||||
|
//
|
||||||
|
// The format of the input should be:
|
||||||
|
// <ip address>,<full nodename>,nkey-user=<user key of node>
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
59
scripts/nats-server/generate-nkeys/main.go
Normal file
59
scripts/nats-server/generate-nkeys/main.go
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
// Generate both public and private nkeys
|
||||||
|
// nk -gen user -pubout
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"bytes"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fileDir := flag.String("fileDir", "./", "the directory path for where to store the files")
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
cmd := exec.Command("nk", "-gen", "user", "-pubout")
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("error: check if the nk tool is installed on the system: %v\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("out: %v\n", string(out))
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(bytes.NewReader(out))
|
||||||
|
for scanner.Scan() {
|
||||||
|
text := scanner.Text()
|
||||||
|
|
||||||
|
if strings.HasPrefix(text, "S") {
|
||||||
|
p := path.Join(*fileDir, "seed.txt")
|
||||||
|
writekey(p, []byte(text))
|
||||||
|
}
|
||||||
|
if strings.HasPrefix(text, "U") {
|
||||||
|
p := path.Join(*fileDir, "user.txt")
|
||||||
|
writekey(p, []byte(text))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func writekey(fileName string, b []byte) error {
|
||||||
|
fh, err := os.OpenFile(fileName, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0600)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("error: failed to open create/open file for writing: %v", err)
|
||||||
|
}
|
||||||
|
defer fh.Close()
|
||||||
|
|
||||||
|
_, err = fh.Write(b)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("error: failed to write file: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
Loading…
Reference in a new issue