1*46439007SCharles.Forsyth#!/dis/sh 2*46439007SCharles.Forsyth 3*46439007SCharles.Forsyth 4*46439007SCharles.Forsythload std 5*46439007SCharles.Forsythautoload=std 6*46439007SCharles.Forsythpctl forkns newpgrp 7*46439007SCharles.Forsythecho -n 62.254.170.99 > /dev/sysname 8*46439007SCharles.Forsyth 9*46439007SCharles.Forsyth# from /dis/svc/auth (except -n option) 10*46439007SCharles.Forsythfn auth { 11*46439007SCharles.Forsyth or {ftest -e /net/dns} {ftest -e /env/emuhost} {ndb/dns} 12*46439007SCharles.Forsyth or {ftest -e /net/cs} {ndb/cs} 13*46439007SCharles.Forsyth # svc/registry # unclear if we should 14*46439007SCharles.Forsyth or {ftest -f /keydb/signerkey} {echo 'auth: need to use createsignerkey(8)' >[1=2]; exit nosignerkey} 15*46439007SCharles.Forsyth or {ftest -f /keydb/keys} {echo 'auth: need to create /keydb/keys' >[1=2]; exit nokeys} 16*46439007SCharles.Forsyth nopt := () 17*46439007SCharles.Forsyth if{ftest -r /tmp/gamepasswd} { 18*46439007SCharles.Forsyth nopt=-n /tmp/gamepasswd 19*46439007SCharles.Forsyth } 20*46439007SCharles.Forsyth and {auth/keyfs $nopt} { 21*46439007SCharles.Forsyth listen -v -t -A 'tcp!*!inflogin' {auth/logind&} 22*46439007SCharles.Forsyth listen -v -t -A 'tcp!*!infkey' {auth/keysrv&} 23*46439007SCharles.Forsyth listen -v -t -A 'tcp!*!infsigner' {auth/signer&} 24*46439007SCharles.Forsyth listen -v -t -A 'tcp!*!infcsigner' {auth/countersigner&} 25*46439007SCharles.Forsyth } 26*46439007SCharles.Forsyth} 27*46439007SCharles.Forsyth 28*46439007SCharles.Forsythfn ck { 29*46439007SCharles.Forsyth or {$*} { 30*46439007SCharles.Forsyth echo signer startup failed >[1=2] 31*46439007SCharles.Forsyth rm -f /mnt/registry/tcp!doppio!inflogin 32*46439007SCharles.Forsyth kill -g ${pid} 33*46439007SCharles.Forsyth raise error 34*46439007SCharles.Forsyth } 35*46439007SCharles.Forsyth} 36*46439007SCharles.Forsyth 37*46439007SCharles.Forsythfn register { 38*46439007SCharles.Forsyth { 39*46439007SCharles.Forsyth or {echo $*} { 40*46439007SCharles.Forsyth echo spreesrv: register $* failed >[1=2] 41*46439007SCharles.Forsyth } 42*46439007SCharles.Forsyth sleep 2000000 43*46439007SCharles.Forsyth } $* > /mnt/registry/new & 44*46439007SCharles.Forsyth} 45*46439007SCharles.Forsythsysname="{cat /dev/sysname} 46*46439007SCharles.Forsyth 47*46439007SCharles.Forsythck ndb/cs 48*46439007SCharles.Forsythck mount -A 'tcp!$registry!registry' /mnt/registry 49*46439007SCharles.Forsyth 50*46439007SCharles.Forsyth@ { 51*46439007SCharles.Forsyth pctl forkns 52*46439007SCharles.Forsyth ck listen -f /usr/i4e/keyring/spree tcp!$sysname!1234 { 53*46439007SCharles.Forsyth if {~ $user spree} { 54*46439007SCharles.Forsyth export /lib/spreearchive & 55*46439007SCharles.Forsyth } 56*46439007SCharles.Forsyth } 57*46439007SCharles.Forsyth} 58*46439007SCharles.Forsyth 59*46439007SCharles.Forsyth# start auth services and announce them in the registry. 60*46439007SCharles.Forsythck bind /keydb/gamesignerkey /keydb/signerkey 61*46439007SCharles.Forsythck bind /keydb/gamekeys /keydb/keys 62*46439007SCharles.Forsythck auth 63*46439007SCharles.Forsythpk=`{getpk /keydb/signerkey} 64*46439007SCharles.Forsythck register tcp!$sysname!inflogin resource login pk $pk 65*46439007SCharles.Forsythck register tcp!$sysname!infkey resource infkey pk $pk 66*46439007SCharles.Forsyth 67*46439007SCharles.Forsythck grid/register -a resource createuser -a signer $pk { grid/usercreatesrv } 68