Necropolis v1 release
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
// embedStubs maps embedded stub filenames to their empty content.
|
||||
var embedStubs = map[string]string{
|
||||
"embedded_pubkey.go": `// Code generated by necropolis generate. DO NOT EDIT.
|
||||
package core
|
||||
|
||||
var embeddedOperatorPubKey = []byte{}
|
||||
`,
|
||||
"embedded_implant_key.go": `// Code generated by necropolis generate. DO NOT EDIT.
|
||||
package core
|
||||
|
||||
var embeddedImplantPrivKey = []byte{}
|
||||
`,
|
||||
"embedded_boxpubkey.go": `// Code generated by necropolis generate. DO NOT EDIT.
|
||||
package core
|
||||
|
||||
var embeddedOperatorBoxPubKey = []byte{}
|
||||
`,
|
||||
"embedded_authtoken.go": `// Code generated by necropolis generate. DO NOT EDIT.
|
||||
package core
|
||||
|
||||
var embeddedAuthToken = []byte{}
|
||||
`,
|
||||
}
|
||||
|
||||
// backupStubs saves the current embedded stub files in the given coreDir
|
||||
// and overwrites them with empty content so the temp-dir build can proceed.
|
||||
// Returns a restore function.
|
||||
func backupStubs(coreDir string) func() {
|
||||
backups := make(map[string][]byte)
|
||||
for name := range embedStubs {
|
||||
path := filepath.Join(coreDir, name)
|
||||
if data, err := os.ReadFile(path); err == nil {
|
||||
backups[name] = data
|
||||
}
|
||||
}
|
||||
return func() {
|
||||
for name, data := range backups {
|
||||
os.WriteFile(filepath.Join(coreDir, name), data, 0644)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// writeEmbeddedCreds writes the real operator credentials into the embedded
|
||||
// stub files in the implant source tree, replacing the empty stubs.
|
||||
func writeEmbeddedCreds(coreDir string, pub, box, priv, auth []byte) {
|
||||
pubLiteral := bytesLiteral(pub)
|
||||
boxLiteral := bytesLiteral(box)
|
||||
privLiteral := bytesLiteral(priv)
|
||||
authLiteral := bytesLiteral(auth)
|
||||
|
||||
os.WriteFile(filepath.Join(coreDir, "embedded_pubkey.go"), []byte(fmt.Sprintf(
|
||||
"// Code generated by necropolis generate. DO NOT EDIT.\npackage core\n\nvar embeddedOperatorPubKey = %s\n",
|
||||
pubLiteral)), 0644)
|
||||
os.WriteFile(filepath.Join(coreDir, "embedded_boxpubkey.go"), []byte(fmt.Sprintf(
|
||||
"// Code generated by necropolis generate. DO NOT EDIT.\npackage core\n\nvar embeddedOperatorBoxPubKey = %s\n",
|
||||
boxLiteral)), 0644)
|
||||
os.WriteFile(filepath.Join(coreDir, "embedded_implant_key.go"), []byte(fmt.Sprintf(
|
||||
"// Code generated by necropolis generate. DO NOT EDIT.\npackage core\n\nvar embeddedImplantPrivKey = %s\n",
|
||||
privLiteral)), 0644)
|
||||
os.WriteFile(filepath.Join(coreDir, "embedded_authtoken.go"), []byte(fmt.Sprintf(
|
||||
"// Code generated by necropolis generate. DO NOT EDIT.\npackage core\n\nvar embeddedAuthToken = %s\n",
|
||||
authLiteral)), 0644)
|
||||
}
|
||||
Reference in New Issue
Block a user