#!/bin/sh # sms.era - interfejs do wysyłania SMSów na telefony sieci ERA # Sebastian Zagrodzki # Jacek Fiok # Strona domowa: sms.jfiok.org [ -r /usr/local/share/sms/smsrc ] && . /usr/local/share/sms/smsrc [ -r /etc/smsrc ] && . /etc/smsrc [ -r $HOME/etc/smsrc ] && . $HOME/etc/smsrc [ -r $HOME/.smsrc ] && . $HOME/.smsrc [ -z "$KATALOG" ] && KATALOG=/usr/local/share/sms [ -z "$NETCAT" ] && [ -x /bin/nc -o -x /usr/bin/nc ] && NETCAT="nc" [ -z "$NETCAT" -a -f "$KATALOG/nc-emulator" ] && NETCAT=". $KATALOG/nc-emulator" if [ -z "$NETCAT" ]; then echo "Nie moge znalezc netcata!" exit 127 fi [ -z "$TIMEOUT" ] && TIMEOUT=20 [ -z "$PRZEGLADARKA" ] && PRZEGLADARKA="Links (current; Linux 2.4.20 i586)" NUMER="$1" WIADOMOSC="$2" WIADOMOSCENCODED=$( echo "$WIADOMOSC" | tr '\n' ' ' | sed -e 's/%/%25/g' -e 's/\@/%40/g' -e 's/\!/%21/g' -e 's/\#/%23/g' -e 's/\$/%24/g' -e 's/\^/%5e/g' -e 's/&/%26/g' -e 's/\*/%2a/g' -e 's/)/%29/g' -e 's/(/%28/g' -e 's/_/%5f/g' -e 's/\+/%2b/g' -e 's/-/%2d/g' -e 's/=/%3d/g' -e 's/\\/%5c/g' -e 's/|/%7c/g' -e 's/\//%2f/g' -e 's/,/%2c/g' -e 's/:/%3a/g' -e 's/;/%3b/g' -e 's/'\''/%27/g' -e 's/\"/%22/g' -e 's/ /+/g' -e 's/+$//' ) ODP="$( echo -e 'POST /sms/sendsms.asp HTTP/1.1\r\nConnection: close\r\nUser-Agent: '"$PRZEGLADARKA"'\r\nHost: boa.eragsm.pl\r\nReferer: http://www.eragsm.pl/ofer_c/uslugi/sms.htm\r\nContent-type: application/x-www-form-urlencoded\r\nContent-length: 5\r\n\r\nsms=1\r\n' | $NETCAT -w "$TIMEOUT" boa.eragsm.pl 80 )" # patch 02.04.2003 Michal Szychowiak (Michal.Szychowiak@cs.put.poznan.pl) # patch 05.04.2003 jfiok: # 0. (notice) spamlen jest przez 2, bo w JS pojawia się podwójnie. # 1. JS na era.pl mówi 156 a nie 160 max. # 2. nasz ogonlen robi za długość podpisu. SPAM="$( echo "$ODP" | grep -i '"/Era:' | sed -e 's/.*\(\/Era:[^"]*\)"/\1/g' )" PODPIS="sms" ogonlen=${#PODPIS} SMSLEN=$(( 156 - ${#SPAM}/2 - $ogonlen )) # echo sms length: $SMSLEN ZOSTALO=$(( $SMSLEN - ${#WIADOMOSC} )) if [ "$ZOSTALO" -lt 0 ]; then WIADOMOSC="`echo \"${WIADOMOSC}\" | cut -c 1-$MAXLEN`" fi COOKIE="$( echo "$ODP" | grep -i 'set-cookie:' | cut -f 2 -d " " | cut -f 1 -d ";" )" KOD="$( echo "$ODP" | grep -i 'name="kod"' | sed 's/.*name="\(.*\)" value="\(.*\)".*/\1=\2/' )" KOD2="$( echo "$ODP" | grep 'name="Kod' | sed 's/.*name="\(Kod.*\)" value="\(.*\)".*/\1=\2/' )" DLUGOSC=$(( 99 + ${#WIADOMOSCENCODED} + ${#KOD} + ${#KOD2} )) ODP=$( echo -e 'POST /sms/sendsms.asp HTTP/1.1\r\nConnection: close\r\nReferer: http://boa.eragsm.pl/sms/sendsms.asp\r\nUser-Agent: '"$PRZEGLADARKA"'\r\nHost: boa.eragsm.pl\r\nCookie: '"$COOKIE"'\r\nContent-type: application/x-www-form-urlencoded\r\nContent-length: '"$DLUGOSC"'\r\n\r\nbookopen=&numer='"$NUMER"'&ksiazka=ksiazka+telefoniczna&message='"$WIADOMOSCENCODED"'&podpis='"$PODPIS"'&kontakt=&Send=tak-nadac&'"$KOD2"'&'"$KOD"'\r\n' | $NETCAT -w "$TIMEOUT" boa.eragsm.pl 80 ) if { echo "$ODP" | grep -q "200 OK" ; [ "$?" = "1" ] ;} 2>/dev/null then if { echo "$ODP" | grep -qi "Too many users are" ;} 2>/dev/null then echo "Serwer przeciążony; spróbuj później." exit 5 fi echo "Blad przy polaczeniu! Wiadomość mogła nie zostać wysłana..." echo "Odpowiedź serwera: $ODP" exit 1 elif { echo "$ODP" | grep -q "Na ten numer GSM" ;} 2>/dev/null then echo "Limit wiadomości na dziś przekroczony!" exit 3 elif { echo "$ODP" | grep -q "nie została wysłana" ;} 2>/dev/null then echo -e "Nieznana odpowiedz:\n$ODP" exit 127 elif { echo "$ODP" | grep -q "została wysłana!" ;} 2>/dev/null then echo "Wszystko OK" exit 0 elif { echo "$ODP" | grep -q "spoza sieci" ;} 2>/dev/null then echo "Zły numer!" exit 2 else echo -e "Nieznana odpowiedz:\n$ODP" exit 127 fi