# phone.irc by skullY # Really twisted script to talk to sms cell phones. Binds to port 25 to recieve # incoming messages. Written in Oakland, CA, USA, on 2000-03-26 09:06 GMT. # Written on a vt100 terminal # Logic: As public's come in, store each variable in an array. Before storing # the variable, check how much room is left, and only write to 140 chars. # # For incoming messages, we'll be bound to a port (Normally 25, but may be # different for testing purposes) and be talking smtp. Will log headers to # a log file, and log body, then output body to irc. //dump all assign array_size 140 assign array_num 0 assign letter_count 0 assign msg_num 0 assign message # I'm too tired to make this work the way I want. I have to do it the lazy # way. :=( #on public * { # assign new_letter_count $strlen($*) # # @new_combined_count = $strlen($*) + $letter_count # if ([$new_combined_count]<=[140]) { # @ letter_count = $letter_count + $strlen($*) # assign message $message <$0> $2- # }{ # sendmessage # @ letter_count = $strlen($*) # assign message <$0> $2- ## } #} assign msg.count 0 assign letter.count 0 assign soft.message.limit 140 on public * { @ new.letter.count = $letter.count + $strlen(<$0> $2-) if ([$new.letter.count]>=[$soft.message.limit]) { mail storemsg $* }{ storemsg $* } } alias mail { assign MAILSERVER_FD $connect(darkstar.frop.org 7778) assign SMTP_COMMAND_NUM 0 on dcc_raw "$MAILSERVER_FD *" { if ([$left(1 $3)]==[jklh a next_smtp_command } } alias next_smtp_command { if ([SMTP_COMMAND_NUM]=[0]) { msg =$MAILSERVER_FD $SMTP_COMMAND.0 @ SMTP_COMMAND_NUM = $SMTP_COMMAND_NUM + 1 } if ([SMTP_COMMAND_NUM]=[1]) { msg =$MAILSERVER_FD $SMTP_COMMAND.1 @ SMTP_COMMAND_NUM = $SMTP_COMMAND_NUM + 1 } if ([SMTP_COMMAND_NUM]=[2]) { msg =$MAILSERVER_FD $SMTP_COMMAND.2 @ SMTP_COMMAND_NUM = $SMTP_COMMAND_NUM + 1 } if ([SMTP_COMMAND_NUM]=[3]) { msg =$MAILSERVER_FD $SMTP_COMMAND.3 msg =$MAILSERVER_FD From: msg =$MAILSERVER_FD To: <5108126144@page.nextel.com> msg =$MAILSERVER_FD Date: $stime($time()) msg =$MAILSERVER_FD Subject: irc public msg =$MAILSERVER_FD msg =$MAILSERVER_FD This is where the lines will go msg =$MAILSERVER_FD . @ SMTP_COMMAND_NUM = $SMTP_COMMAND_NUM + 1 } if ([SMTP_COMMAND_NUM]=[4]) { msg =$MAILSERVER_FD $SMTP_COMMAND.4 on dcc_raw -"$MAILSERVER_FD *" assign SMTP_COMMAND_NUM 0 } } assign SMTP_COMMAND[0] helo darkstar.frop.org assign SMTP_COMMAND[1] mail from: assign SMTP_COMMAND[2] rcpt to: <5108126144@page.nextel.com> assign SMTP_COMMAND[3] data assign SMTP_COMMAND[4] quit alias storemsg { assign msgbuffer[$msg.count] $encode(<$0> $2-) @ msg.count = $msg.count + 1 @ letter.count = $letter.count + $strlen(<$0> $2-) } #alias timerset { # timer 60 { # exec cat .phone.msg | mail 5108126144@page.nextel.com # exec rm .phone.msg # exec touch .phone.msg # timerset # } #} #alias sendmessage { # # There's probably better ways to do this # exec echo $message | mail -s irc pub 5108126144@page.nextel.com #} eval : $listen(7777) # Incoming Connection. Mode determins what we're looking for # 0 is command mode, 1 is data mode assign state 0 on dcc_raw * { if ([$state]==[0]) { smtp_command $* }{ data_command $* } } alias smtp_command { if ([$2]==[N]) { msg =$0 220 ircII email interface script assign DIDACTION 1 } if ([$state]==[0]) { if ([$TOUPPER($3)]==[HELO]) { msg =$0 250 Hello, I am an irc script. Pleased to meet you. assign DIDACTION 1 } if ([$TOUPPER($3)]==[MAIL]) { msg =$0 250 ok assign DIDACTION 1 } if ([$TOUPPER($3)]==[RCPT]) { msg =$0 250 ok assign DIDACTION 1 } if ([$TOUPPER($3)]==[DATA]) { msg =$0 354 Enter text, finish with ^M.^M assign DIDACTION 1 assign state 1 } if ([$TOUPPER($3)]==[QUIT]) { msg =$0 221 Goodbye! assign DIDACTION 1 dcc close raw $0 } if ([$DIDACTION]==[0]) { msg =$0 502 unimplemented } } } alias data_command { assign DIDACTION 0 if ([$[left(1 $3)]==[/]) { eval say $3- assign DIDACTION 1 } if ([$left(1 $3)]==[.]) { assign state 0 msg =$0 250 ok, msg sent assign DIDACTION 1 } if ([$DIDACTION]==[0]) { eval say $3- } }