From 42400cf81f4fb04897bc1b609fc08720bc542df8 Mon Sep 17 00:00:00 2001 From: rsc Date: Fri, 11 Feb 2005 17:01:18 +0000 Subject: add fsamount, nsamount; use ndb for authdial; use explicit %# --- src/libauth/fsamount.c | 33 +++++++++++++++++++++++++++++++++ src/libauth/mkfile | 2 ++ src/libauth/nsamount.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 src/libauth/fsamount.c create mode 100644 src/libauth/nsamount.c (limited to 'src/libauth') 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 +#include +#include +#include +#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 +#include +#include +#include +#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; +} + -- cgit v1.2.3