aboutsummaryrefslogtreecommitdiff
path: root/src/libauth
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-02-11 17:01:18 +0000
committerrsc <devnull@localhost>2005-02-11 17:01:18 +0000
commit42400cf81f4fb04897bc1b609fc08720bc542df8 (patch)
treeddec13cf64760a0ebbc7c6060d60f630c2382c59 /src/libauth
parent59518849d81a71284b90513f6ba76770b42ce32b (diff)
downloadplan9port-42400cf81f4fb04897bc1b609fc08720bc542df8.tar.gz
plan9port-42400cf81f4fb04897bc1b609fc08720bc542df8.tar.bz2
plan9port-42400cf81f4fb04897bc1b609fc08720bc542df8.zip
add fsamount, nsamount; use ndb for authdial; use explicit %#
Diffstat (limited to 'src/libauth')
-rw-r--r--src/libauth/fsamount.c33
-rw-r--r--src/libauth/mkfile2
-rw-r--r--src/libauth/nsamount.c33
3 files changed, 68 insertions, 0 deletions
diff --git a/src/libauth/fsamount.c b/src/libauth/fsamount.c
new file mode 100644
index 00000000..bece208a
--- /dev/null
+++ b/src/libauth/fsamount.c
@@ -0,0 +1,33 @@
+#include <u.h>
+#include <libc.h>
+#include <auth.h>
+#include <thread.h>
+#include <9pclient.h>
+#include "authlocal.h"
+
+CFsys*
+fsamount(int fd, char *aname)
+{
+ CFid *afid, *fid;
+ AuthInfo *ai;
+ CFsys *fs;
+
+ fs = fsinit(fd);
+ if(fs == nil)
+ return nil;
+ if((afid = fsauth(fs, getuser(), aname)) == nil)
+ goto noauth;
+ ai = fsauth_proxy(afid, amount_getkey, "proto=p9any role=client");
+ if(ai != nil)
+ auth_freeAI(ai);
+noauth:
+ fid = fsattach(fs, afid, getuser(), aname);
+ fsclose(afid);
+ if(fid == nil){
+ _fsunmount(fs);
+ return nil;
+ }
+ fssetroot(fs, fid);
+ return fs;
+}
+
diff --git a/src/libauth/mkfile b/src/libauth/mkfile
index 2512e9c7..5e5c13d2 100644
--- a/src/libauth/mkfile
+++ b/src/libauth/mkfile
@@ -16,9 +16,11 @@ OFILES=\
auth_rpc.$O\
auth_userpasswd.$O\
auth_wep.$O\
+ fsamount.$O\
login.$O\
# newns.$O\
# noworld.$O\
+ nsamount.$O\
HFILES=\
$PLAN9/include/auth.h\
diff --git a/src/libauth/nsamount.c b/src/libauth/nsamount.c
new file mode 100644
index 00000000..1447904a
--- /dev/null
+++ b/src/libauth/nsamount.c
@@ -0,0 +1,33 @@
+#include <u.h>
+#include <libc.h>
+#include <auth.h>
+#include <thread.h>
+#include <9pclient.h>
+#include "authlocal.h"
+
+CFsys*
+nsamount(char *name, char *aname)
+{
+ CFid *afid, *fid;
+ AuthInfo *ai;
+ CFsys *fs;
+
+ fs = nsinit(name);
+ if(fs == nil)
+ return nil;
+ if((afid = fsauth(fs, getuser(), aname)) == nil)
+ goto noauth;
+ ai = fsauth_proxy(afid, amount_getkey, "proto=p9any role=client");
+ if(ai != nil)
+ auth_freeAI(ai);
+noauth:
+ fid = fsattach(fs, afid, getuser(), aname);
+ fsclose(afid);
+ if(fid == nil){
+ _fsunmount(fs);
+ return nil;
+ }
+ fssetroot(fs, fid);
+ return fs;
+}
+