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
|
||||
|
||||
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