aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libauthsrv/authdial.c35
-rw-r--r--src/libauthsrv/mkfile3
2 files changed, 22 insertions, 16 deletions
diff --git a/src/libauthsrv/authdial.c b/src/libauthsrv/authdial.c
index 5e608058..5e305a54 100644
--- a/src/libauthsrv/authdial.c
+++ b/src/libauthsrv/authdial.c
@@ -9,23 +9,30 @@ authdial(char *netroot, char *dom)
{
char *p;
int rv;
-
- if(dom != nil){
- /* look up an auth server in an authentication domain */
- p = csgetvalue(netroot, "authdom", dom, "auth", nil);
+ Ndb *db;
+ char *file;
- /* if that didn't work, just try the IP domain */
- if(p == nil)
- p = csgetvalue(netroot, "dom", dom, "auth", nil);
- if(p == nil){
- werrstr("no auth server found for %s", dom);
+ if(dom){
+ file = unsharp("#9/ndb/local");
+ db = ndbopen(file);
+ if(db == nil){
+ fprint(2, "open %s: %r\n", file);
+ free(file);
return -1;
}
- rv = dial(netmkaddr(p, netroot, "ticket"), 0, 0, 0);
- free(p);
+ free(file);
+ p = ndbgetvalue(db, nil, "authdom", dom, "auth", nil);
+ if(p == nil)
+ p = ndbgetvalue(db, nil, "dom", dom, "auth", nil);
+ if(p == nil)
+ p = dom;
+ rv = dial(netmkaddr(p, "tcp", "ticket"), 0, 0, 0);
+ if(p != dom)
+ free(p);
return rv;
- } else {
- /* look for one relative to my machine */
- return dial(netmkaddr("$auth", netroot, "ticket"), 0, 0, 0);
}
+ p = getenv("auth");
+ if(p == nil)
+ p = "$auth";
+ return dial(netmkaddr(p, "tcp", "ticket"), 0, 0, 0);
}
diff --git a/src/libauthsrv/mkfile b/src/libauthsrv/mkfile
index a69cc942..ddbefa56 100644
--- a/src/libauthsrv/mkfile
+++ b/src/libauthsrv/mkfile
@@ -1,11 +1,10 @@
-PLAN9=../..
<$PLAN9/src/mkhdr
LIB=libauthsrv.a
OFILES=\
_asgetticket.$O\
_asrdresp.$O\
-# authdial.$O\
+ authdial.$O\
convA2M.$O\
convM2A.$O\
convM2PR.$O\