authdial.c 711 B

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