#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;
	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);
		return rv;
	}
	p = getenv("auth");
	if(p == nil)
		p = "$auth";
	return dial(netmkaddr(p, "tcp", "ticket"), 0, 0, 0);
}
