plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

authdial.c (711B)


      1 #include <u.h>
      2 #include <libc.h>
      3 #include <authsrv.h>
      4 #include <bio.h>
      5 #include <ndb.h>
      6 
      7 int
      8 authdial(char *netroot, char *dom)
      9 {
     10 	char *p;
     11 	int rv;
     12 	Ndb *db;
     13 	char *file;
     14 
     15 	if(dom){
     16 		file = unsharp("#9/ndb/local");
     17 		db = ndbopen(file);
     18 		if(db == nil){
     19 			fprint(2, "open %s: %r\n", file);
     20 			free(file);
     21 			return -1;
     22 		}
     23 		free(file);
     24 		p = ndbgetvalue(db, nil, "authdom", dom, "auth", nil);
     25 		if(p == nil)
     26 			p = ndbgetvalue(db, nil, "dom", dom, "auth", nil);
     27 		if(p == nil)
     28 			p = dom;
     29 		rv = dial(netmkaddr(p, "tcp", "ticket"), 0, 0, 0);
     30 		if(p != dom)
     31 			free(p);
     32 		ndbclose(db);
     33 		return rv;
     34 	}
     35 	p = getenv("auth");
     36 	if(p == nil)
     37 		p = "$auth";
     38 	return dial(netmkaddr(p, "tcp", "ticket"), 0, 0, 0);
     39 }