examples/rps: Add flag to set ACLs
Now that we can't use --v23.permissions.file for general purpose
permissions, we need another way to set ACLs.
Change-Id: I33c7741e75901a1344caaa5605a09b1add83db46
diff --git a/examples/rps/internal/auth.go b/examples/rps/internal/auth.go
new file mode 100644
index 0000000..a01b128
--- /dev/null
+++ b/examples/rps/internal/auth.go
@@ -0,0 +1,18 @@
+// Copyright 2015 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package internal
+
+import (
+ "v.io/v23/security"
+ "v.io/v23/security/access"
+)
+
+func NewAuthorizer(fname string) security.Authorizer {
+ a, err := access.PermissionsAuthorizerFromFile(fname, access.TypicalTagType())
+ if err != nil {
+ panic(err)
+ }
+ return a
+}
diff --git a/examples/rps/rpsbot/main.go b/examples/rps/rpsbot/main.go
index 492be26..120f109 100644
--- a/examples/rps/rpsbot/main.go
+++ b/examples/rps/rpsbot/main.go
@@ -19,7 +19,6 @@
"v.io/x/lib/vlog"
"v.io/x/ref/examples/rps"
"v.io/x/ref/examples/rps/internal"
- "v.io/x/ref/lib/security/securityflag"
"v.io/x/ref/lib/signals"
_ "v.io/x/ref/profiles/roaming"
@@ -28,13 +27,14 @@
var (
name = flag.String("name", "", "identifier to publish itself as (defaults to user@hostname)")
numGames = flag.Int("num-games", -1, "number of games to play (-1 means unlimited)")
+ aclFile = flag.String("acl-file", "", "file containing the JSON-encoded ACL")
)
func main() {
ctx, shutdown := v23.Init()
defer shutdown()
- auth := securityflag.NewAuthorizerOrDie()
+ auth := internal.NewAuthorizer(*aclFile)
server, err := v23.NewServer(ctx)
if err != nil {
vlog.Fatalf("NewServer failed: %v", err)
diff --git a/examples/rps/rpsplayer/main.go b/examples/rps/rpsplayer/main.go
index 9f84800..5b50c17 100644
--- a/examples/rps/rpsplayer/main.go
+++ b/examples/rps/rpsplayer/main.go
@@ -24,13 +24,13 @@
"v.io/x/lib/vlog"
"v.io/x/ref/examples/rps"
"v.io/x/ref/examples/rps/internal"
- "v.io/x/ref/lib/security/securityflag"
_ "v.io/x/ref/profiles/roaming"
)
var (
- name = flag.String("name", "", "identifier to publish itself as (defaults to user@hostname)")
+ name = flag.String("name", "", "identifier to publish itself as (defaults to user@hostname)")
+ aclFile = flag.String("acl-file", "", "file containing the JSON-encoded ACL")
)
func main() {
@@ -122,7 +122,7 @@
if *name == "" {
*name = internal.CreateName()
}
- if err := server.Serve(fmt.Sprintf("rps/player/%s", *name), rps.PlayerServer(&impl{ch: ch}), securityflag.NewAuthorizerOrDie()); err != nil {
+ if err := server.Serve(fmt.Sprintf("rps/player/%s", *name), rps.PlayerServer(&impl{ch: ch}), internal.NewAuthorizer(*aclFile)); err != nil {
vlog.Fatalf("Serve failed: %v", err)
}
vlog.Infof("Listening on endpoint /%s", ep)
diff --git a/examples/rps/rpsscorekeeper/main.go b/examples/rps/rpsscorekeeper/main.go
index a5611e5..973609d 100644
--- a/examples/rps/rpsscorekeeper/main.go
+++ b/examples/rps/rpsscorekeeper/main.go
@@ -8,6 +8,7 @@
package main
import (
+ "flag"
"fmt"
"os"
@@ -17,11 +18,14 @@
"v.io/x/lib/vlog"
"v.io/x/ref/examples/rps"
"v.io/x/ref/examples/rps/internal"
- "v.io/x/ref/lib/security/securityflag"
_ "v.io/x/ref/profiles/roaming"
)
+var (
+ aclFile = flag.String("acl-file", "", "file containing the JSON-encoded ACL")
+)
+
type impl struct {
ch chan rps.ScoreCard
}
@@ -55,7 +59,7 @@
if err != nil {
vlog.Fatalf("os.Hostname failed: %v", err)
}
- if err := server.Serve(fmt.Sprintf("rps/scorekeeper/%s", hostname), rps.ScoreKeeperServer(rpsService), securityflag.NewAuthorizerOrDie()); err != nil {
+ if err := server.Serve(fmt.Sprintf("rps/scorekeeper/%s", hostname), rps.ScoreKeeperServer(rpsService), internal.NewAuthorizer(*aclFile)); err != nil {
vlog.Fatalf("Serve failed: %v", err)
}
vlog.Infof("Listening on endpoint /%s", ep)