mirror of
https://github.com/rwinkhart/rcw.git
synced 2026-08-28 12:56:31 -04:00
Implement serving passphrase from daemon
This commit is contained in:
+3
-6
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user