Implement serving passphrase from daemon

This commit is contained in:
2025-04-13 17:55:57 -04:00
parent a5108bc6cc
commit dc262c87e8
5 changed files with 35 additions and 15 deletions
+3 -6
View File
@@ -2,12 +2,12 @@ package daemon
import (
"crypto/sha256"
"errors"
"io"
"os"
)
var daemonHash []byte
var passphrase string
// RCWService provides an RPC method.
type RCWService struct{}
@@ -15,11 +15,8 @@ type RCWService struct{}
// GetPass is the RPC method.
// For now (as a test/example), it returns "hello" if the input is "hi".
func (h *RCWService) GetPass(request string, reply *string) error {
if request == "hi" {
*reply = "hello"
return nil
}
return errors.New("unexpected input, expected \"hi\"")
*reply = passphrase
return nil
}
// getFileHash returns the SHA256 hash of the file at the given path.
+9 -1
View File
@@ -15,7 +15,15 @@ import (
)
// Run should be called to start an RPC server.
func Run() {
func Start(inputPassphrase string) {
// ensure daemon is not already running
if daemonIsOpen() {
return
}
// store passphrase to be referenced by GetPass method
passphrase = inputPassphrase
// register RCWService with the RPC package
if err := rpc.Register(&RCWService{}); err != nil {
log.Fatalf("Error registering RPC service: %v", err)
+9 -1
View File
@@ -20,7 +20,15 @@ const (
)
// Run should be called to start an RPC server using Windows named pipes
func Run() {
func Start(inputPassphrase string) {
// ensure daemon is not already running
if daemonIsOpen() {
return
}
// store passphrase to be referenced by GetPass method
passphrase = inputPassphrase
// register RCWService with the RPC package
if err := rpc.Register(&RCWService{}); err != nil {
log.Fatalf("Error registering RPC service: %v", err)
+12
View File
@@ -0,0 +1,12 @@
package daemon
import "os"
func daemonIsOpen() bool {
// check if socketPath exists and is a file
fileInfo, err := os.Stat(socketPath)
if err != nil {
return false
}
return !fileInfo.IsDir()
}
+2 -7
View File
@@ -8,13 +8,8 @@ import (
func main() {
if len(os.Args) > 1 {
switch os.Args[1] {
case "client":
fmt.Println("RPC Reply: " + daemon.Call())
default:
daemon.Run()
}
daemon.Start(os.Args[1])
} else {
daemon.Run()
fmt.Println(daemon.Call())
}
}