Merge pull request #126 from cloudflare/zi/owners-request-client-support

add support to Owners request to server
This commit is contained in:
Kyle Isom
2016-02-19 11:52:43 -08:00
2 changed files with 48 additions and 1 deletions

View File

@@ -106,6 +106,20 @@ func unmarshalResponseData(respBytes []byte) (*core.ResponseData, error) {
return response, nil
}
func unmarshalOwnersData(respBytes []byte) (*core.OwnersData, error) {
response := new(core.OwnersData)
err := json.Unmarshal(respBytes, response)
if err != nil {
return nil, err
}
if response.Status != "ok" {
return nil, errors.New(response.Status)
}
return response, nil
}
// Create creates an admin account at the remote server
func (c *RemoteServer) Create(req core.CreateRequest) (*core.ResponseData, error) {
reqBytes, err := json.Marshal(req)
@@ -284,6 +298,21 @@ func (c *RemoteServer) Password(req []byte) (*core.ResponseData, error) {
return unmarshalResponseData(respBytes)
}
// Owners issues an Owners request to the remote server
func (c *RemoteServer) Owners(req core.OwnersRequest) (*core.OwnersData, error) {
reqBytes, err := json.Marshal(req)
if err != nil {
return nil, err
}
respBytes, err := c.doAction("owners", reqBytes)
if err != nil {
return nil, err
}
return unmarshalOwnersData(respBytes)
}
// Order issues an order request to the remote server
func (c *RemoteServer) Order(req core.OrderRequest) (*core.ResponseData, error) {
reqBytes, err := json.Marshal(req)

View File

@@ -21,7 +21,7 @@ var action, user, pswd, userEnv, pswdEnv, server, caPath string
var owners, lefters, righters, inPath, labels, outPath, outEnv string
var uses int
var uses, minUsers int
var duration, users string
@@ -42,6 +42,7 @@ var commandSet = map[string]command{
"decrypt": command{Run: runDecrypt, Desc: "decrypt a file"},
"re-encrypt": command{Run: runReEncrypt, Desc: "re-encrypt a file"},
"order": command{Run: runOrder, Desc: "place an order for delegations"},
"owners": command{Run: runOwner, Desc: "show owners list"},
}
func registerFlags() {
@@ -50,6 +51,7 @@ func registerFlags() {
flag.StringVar(&owners, "owners", "", "comma separated owner list")
flag.StringVar(&users, "users", "", "comma separated user list")
flag.IntVar(&uses, "uses", 0, "number of delegated key uses")
flag.IntVar(&minUsers, "minUsers", 2, "minimum number of delegations")
flag.StringVar(&duration, "time", "0h", "duration of delegated key uses")
flag.StringVar(&lefters, "left", "", "comma separated left owners")
flag.StringVar(&righters, "right", "", "comma separated right owners")
@@ -131,6 +133,7 @@ func runEncrypt() {
req := core.EncryptRequest{
Name: user,
Password: pswd,
Minimum: minUsers,
Owners: processCSL(owners),
LeftOwners: processCSL(lefters),
RightOwners: processCSL(righters),
@@ -241,6 +244,21 @@ func runOrder() {
fmt.Println(resp.Status)
}
func runOwner() {
inBytes, err := ioutil.ReadFile(inPath)
processError(err)
req := core.OwnersRequest{
Data: inBytes,
}
resp, err := roServer.Owners(req)
processError(err)
fmt.Println(resp.Status)
fmt.Println(resp)
}
func main() {
flag.Usage = func() {
fmt.Println("Usage: ro [options] subcommand")