xref: /plan9/sys/src/libauthsrv/authdial.c (revision ebbc20e5471a99fea471766f93d3489b41066397)
19a747e4fSDavid du Colombier #include <u.h>
29a747e4fSDavid du Colombier #include <libc.h>
39a747e4fSDavid du Colombier #include <authsrv.h>
49a747e4fSDavid du Colombier #include <bio.h>
59a747e4fSDavid du Colombier #include <ndb.h>
69a747e4fSDavid du Colombier 
79a747e4fSDavid du Colombier int
authdial(char * netroot,char * dom)89a747e4fSDavid du Colombier authdial(char *netroot, char *dom)
99a747e4fSDavid du Colombier {
1057837e0bSDavid du Colombier 	char *p;
1157837e0bSDavid du Colombier 	int rv;
129a747e4fSDavid du Colombier 
13*ebbc20e5SDavid du Colombier 	if(dom == nil)
14*ebbc20e5SDavid du Colombier 		/* look for one relative to my machine */
15*ebbc20e5SDavid du Colombier 		return dial(netmkaddr("$auth", netroot, "ticket"), 0, 0, 0);
16*ebbc20e5SDavid du Colombier 
179a747e4fSDavid du Colombier 	/* look up an auth server in an authentication domain */
1857837e0bSDavid du Colombier 	p = csgetvalue(netroot, "authdom", dom, "auth", nil);
199a747e4fSDavid du Colombier 
209a747e4fSDavid du Colombier 	/* if that didn't work, just try the IP domain */
2157837e0bSDavid du Colombier 	if(p == nil)
2257837e0bSDavid du Colombier 		p = csgetvalue(netroot, "dom", dom, "auth", nil);
23*ebbc20e5SDavid du Colombier 	/*
24*ebbc20e5SDavid du Colombier 	 * if that didn't work, try p9auth.$dom.  this is very helpful if
25*ebbc20e5SDavid du Colombier 	 * you can't edit /lib/ndb.
26*ebbc20e5SDavid du Colombier 	 */
27*ebbc20e5SDavid du Colombier 	if(p == nil)
28*ebbc20e5SDavid du Colombier 		p = smprint("p9auth.%s", dom);
29*ebbc20e5SDavid du Colombier 	if(p == nil){			/* should no longer ever happen */
309a747e4fSDavid du Colombier 		werrstr("no auth server found for %s", dom);
319a747e4fSDavid du Colombier 		return -1;
329a747e4fSDavid du Colombier 	}
3357837e0bSDavid du Colombier 	rv = dial(netmkaddr(p, netroot, "ticket"), 0, 0, 0);
3457837e0bSDavid du Colombier 	free(p);
3557837e0bSDavid du Colombier 	return rv;
369a747e4fSDavid du Colombier }
37