xref: /inferno-os/dis/grid/spreesrv (revision 46439007cf417cbd9ac8049bb4122c890097a0fa)
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