39 lines · 711 B · C
RawDownload
#include <u.h>#include <libc.h>#include <authsrv.h>#include <bio.h>#include <ndb.h> intauthdial(char *netroot, char *dom){	char *p;	int rv;	Ndb *db;	char *file; 	if(dom){		file = unsharp("#9/ndb/local");		db = ndbopen(file);		if(db == nil){			fprint(2, "open %s: %r\n", file);			free(file);			return -1;		}		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);		ndbclose(db);		return rv;	}	p = getenv("auth");	if(p == nil)		p = "$auth";	return dial(netmkaddr(p, "tcp", "ticket"), 0, 0, 0);}