Generalize RPC client code, add basic RPC functionality to client

This commit is contained in:
2013-09-03 23:33:36 -04:00
parent 2dcd08d502
commit d883e3d92d
6 changed files with 408 additions and 274 deletions

View File

@ -1,26 +0,0 @@
package main
import (
"log"
"net"
"net/rpc"
"syscall"
)
func RPCCall(socket, method string, args interface{}, reply interface{}) error {
client, err := rpc.DialHTTP("unix", socket)
if err != nil {
if err2, ok := err.(*net.OpError); ok {
if err2.Err == syscall.ENOENT {
log.Fatal("The socket (" + socket + ") was not found")
} else if err2.Err == syscall.ECONNREFUSED {
log.Fatal("A connection was refused to " + socket + ". Please check the permissions and ensure the server is running.")
}
}
return err
}
defer client.Close()
err = client.Call(method, args, reply)
return err
}

View File

@ -74,7 +74,7 @@ func StopServer(args []string) {
i := 99
returnCode := 0
err := RPCCall(rpcSock, "ServerStopper.StopServer", &returnCode, &i)
err := asink.RPCCall(rpcSock, "ServerStopper.StopServer", &returnCode, &i)
if err != nil {
panic(err)
}

View File

@ -1,6 +1,7 @@
package main
import (
"asink"
"code.google.com/p/gopass"
"flag"
"fmt"
@ -70,7 +71,7 @@ func UserAdd(args []string) {
user.PWHash = HashPassword(passwordOne)
i := 99
err = RPCCall(*rpcSocket, "UserModifier.AddUser", user, &i)
err = asink.RPCCall(*rpcSocket, "UserModifier.AddUser", user, &i)
if err != nil {
if _, ok := err.(rpc.ServerError); ok && err.Error() == DuplicateUsernameErr.Error() {
fmt.Println("Error: " + err.Error())
@ -94,7 +95,7 @@ func UserDel(args []string) {
user.Username = args[0]
i := 99
err := RPCCall(*rpcSocket, "UserModifier.RemoveUser", user, &i)
err := asink.RPCCall(*rpcSocket, "UserModifier.RemoveUser", user, &i)
if err != nil {
if _, ok := err.(rpc.ServerError); ok && err.Error() == NoUserErr.Error() {
fmt.Println("Error: " + err.Error())
@ -162,7 +163,7 @@ func UserMod(args []string) {
}
i := 99
err := RPCCall(*rpcSocket, "UserModifier.ModifyUser", rpcargs, &i)
err := asink.RPCCall(*rpcSocket, "UserModifier.ModifyUser", rpcargs, &i)
if err != nil {
if _, ok := err.(rpc.ServerError); ok && err.Error() == NoUserErr.Error() {
fmt.Println("Error: " + err.Error())