% $OpenXM: OpenXM/rc/fetch_asir_key.sm1,v 1.3 2000/03/10 01:25:04 takayama Exp $ %% Usages: % ../bin/sm1 -f fetch_asir_key.sm1 % Set the asir key automatically. % % ../bin/sm1 -f fetch_asir_key.sm1 -s "/func (mail) def" % ../bin/sm1 -f fetch_asir_key.sm1 -s "/func (set) def" % Step 1. Only send a mail to get a key. % Step 2. Wait for a reply and set the keys to asir_key /fetchSeed { [/in-fetchSeed /size] pushVariables [ (/bin/rm -rf work) system (mkdir work) system (echo "quit;" >work/asir_key.in) system (../bin/asir work/asir_key.out0 ) system (grep ASIR work/asir_key.out0 >work/asir_key.out) system [(stat) (work/asir_key.out)] extension 1 get 0 get /size set /arg1 size def ] pop popVariables arg1 } def /sendMail { /MAILADDRESS ( risa@sec.flab.fujitsu.co.jp )def [(Sending a mail to ) MAILADDRESS ] cat message [(mail ) MAILADDRESS ( < ) (work/asir_key.out)] cat system } def /waitReply { % Note that when you "su", $USER is not set to root, but set to your % original login name. The "From" field of your mail also seems to use % $USER /MAIL [(/var/mail/) [(getenv) (USER)] extension ] cat def (/bin/rm -rf work/reply) system { [(Waiting a reply in ) MAIL] cat message [( Type in ctrl-Z and kill ) 37 (string) dc 37 (string) dc ( to stop this script.) ] cat message [(grep risa@sec.flab.fujitsu.co.jp ) MAIL (>work/reply)] cat system [(stat) (work/reply)] extension 1 get 0 get 0 eq not { exit }{ } ifelse (sleep 5) system } loop (Got a key) message } def /setAsirKey { /MAIL [(/var/mail/) [(getenv) (USER)] extension ] cat def (/bin/rm -rf work/key) system [ (egrep '[0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z] [0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z] [0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z]' ) MAIL ( >work/key) ] cat system cat work/key >>../lib/asir/asir_key } def /fetch_check { [(This script sets OpenXM/lib/asir/asir_key for your machine,) (if your system can receive a mail at /var/mail on this machine.) ] { message } map ( ) message ( ) message (Cheching if you have a correct asir_key.) message ( ) message ( ) message fetchSeed 0 eq { ( ) message ( ) message (You already have a correct asir_key.) message ( ) message quit }{ } ifelse } def /fetch { fetch_check sendMail waitReply setAsirKey } def /func load tag 0 eq { fetch quit } { } ifelse func (mail) eq { ( ) message (Send a mail only) message fetch_check sendMail quit } { } ifelse func (set) eq { ( ) message (Wait a reply and set the keys) message waitReply setAsirKey quit } { } ifelse quit