xref: /plan9/sys/src/cmd/unix/drawterm/libauthsrv/authdial.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1 #include <u.h>
2 #include <libc.h>
3 #include <authsrv.h>
4 #include <bio.h>
5 #include <ndb.h>
6 
7 int
authdial(char * netroot,char * dom)8 authdial(char *netroot, char *dom)
9 {
10 	char server[Ndbvlen];
11 	Ndbtuple *nt;
12 
13 
14 	if(dom != nil){
15 		/* look up an auth server in an authentication domain */
16 		nt = csgetval(netroot, "authdom", dom, "auth", server);
17 
18 		/* if that didn't work, just try the IP domain */
19 		if(nt == nil)
20 			nt = csgetval(netroot, "dom", dom, "auth", server);
21 		if(nt == nil){
22 			werrstr("no auth server found for %s", dom);
23 			return -1;
24 		}
25 		ndbfree(nt);
26 		return dial(netmkaddr(server, netroot, "ticket"), 0, 0, 0);
27 	} else {
28 		/* look for one relative to my machine */
29 		return dial(netmkaddr("$auth", netroot, "ticket"), 0, 0, 0);
30 	}
31 }
32