port=6667
realname='<nil>'
target=''
-clonefile=/net/tcp/clone
netdir=()
nick=$user
pass=()
+tls=0
+serverpass=()
fn sighup {
exit 'hang up'
}
fn work {
+ if(~ $#serverpass 1)
+ echo PASS $serverpass > $netdir/data
echo USER $user foo bar :$realname > $netdir/data
echo NICK $nick > $netdir/data
if (~ $#pass 1)
}
if(~ $target *,*)
target = `{echo $target | awk -F',' '{print $NF}'}
- while () {
- cmd=`{read}
- if(! ~ `{cat $netdir/status} *Established*)
- exit
- if(~ $#cmd 0) {
+ while (cmd=`{read}) {
+ s=$status
+ if(~ $s *eof) {
echo QUIT : Leaving... > $netdir/data
exit
}
}
fn pretty {
- while (~ `{cat $netdir/status} *Established*) {
- if(! line=`{read}) {
- echo Connection lost
- date
- exit
- }
+ while (line=`{read}) {
switch ($line) {
case *PRIVMSG*
line = `{echo -n $line | privmsg}
exit
}
-fn getip {
- echo $1 ip | ndb/dnsquery | sed 1q | awk '{print $NF}'
-}
-
fn title {
if (! ~ $#winid 0) {
if (test -f /mnt/acme/$winid/ctl)
case -p
port=$2
shift
+ case -P
+ serverpass=$2
+ shift
case -r
realname=$2
shift
case -t
target=$2
shift
+ case -T
+ tls=1
case -*
- echo 'usage: ircrc [-p port] [-r realname] [-t target] [-n nick] [server]' >[1=2]
+ echo 'usage: ircrc [-p port] [-P server password] [-r realname] [-t target] [-n nick] [-T] [server]' >[1=2]
exit 'usage'
}
shift
}
}
-ip=`{getip $server}
-if (~ $#ip 0) {
- echo cant translate $server
- exit 'unknown host'
-}
-
title
userpass=`{auth/userpasswd 'server='^$server^' service=irc user='^$nick >[2]/dev/null}
-if(~ $#userpass 2 && ~ $nick $user) {
+if(~ $#userpass 2) {
nick=$userpass(1)
pass=$userpass(2)
}
-<[4] $clonefile {
- netdir=`{basename -d $clonefile} ^ / ^ `{cat /fd/4}
- echo connect $ip!$port >$netdir/ctl || exit 'cannot connect'
- echo connected to tcp!$ip!$port on $netdir
- cat $netdir/data | tr -d '\x2\xd\x1f' | pretty &
- work
+p='/n/ircrc'
+bind '#|' $p
+echo connecting to tcp!$server!$port...
+if(~ $tls 0){
+ aux/trampoline tcp!$server!$port <>$p/data1 >[1=0] &
}
+if not {
+ tlsclient tcp!$server!$port <>$p/data1 >[1=0] &
+}
+netdir=$p
+cat $netdir/data | tr -d '\x2\xd\x1f' | pretty &
+work
+