aboutsummaryrefslogtreecommitdiff
path: root/src/libauthsrv/authdial.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libauthsrv/authdial.c')
-rw-r--r--src/libauthsrv/authdial.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/libauthsrv/authdial.c b/src/libauthsrv/authdial.c
new file mode 100644
index 00000000..5e608058
--- /dev/null
+++ b/src/libauthsrv/authdial.c
@@ -0,0 +1,31 @@
+#include <u.h>
+#include <libc.h>
+#include <authsrv.h>
+#include <bio.h>
+#include <ndb.h>
+
+int
+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);
+
+ /* 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);
+ return -1;
+ }
+ rv = dial(netmkaddr(p, netroot, "ticket"), 0, 0, 0);
+ free(p);
+ return rv;
+ } else {
+ /* look for one relative to my machine */
+ return dial(netmkaddr("$auth", netroot, "ticket"), 0, 0, 0);
+ }
+}