#!/bin/bash # copyright: Piotr Lezon aka piio # http://piio.risp.pl # # skrypt do ekg - automatyczna sekretarka, info dla ludzi ktorych nie znam + wysylanie wiadomosci smsem + antyspam # ver 2.7 #chaneglog: #2.7+ w zaleznosci od uzytkownika wysylane wykonywane inne polecenia przy rozpoczeciu rozmowy - case #2.6+ dodane wysylanie komunikatu o niedostepnosci do ludzi z userlisty ;) #2.5+ dodane przechwytywanie linkow w postaci :// i zapisywanie ich do pliku, poprawione dzielenie na mniejsze wiadomosci #2.4+ zrobiony podzial na mniejsze wiadomosci, bedzie ladniej dochodzic dzieki powiadomieniom :) #2.3+ obsluga programu tv z infobota - 4 hity na dzis, wszystko od infobota ma obciete znaki nowej lini... #2.2+ dodana obsluga pogody z infobota, podzial na odrebne smsy dla dzis, wkrotce oraz jutro #2.1+ troche poprawek, nowe slowa-klucze dla antyspamu #2.0+ caly skrypt przepisany na nowo, duzo czytelniejszy dzieki podzialowi na funkcje ;) #TODO: ## deklaracje pozniej uzywanych zmiennych calosc=`echo $*`; rurka=ekg-pipe prognoza_file=/tmp/prognoza.txt uzytkownik=`echo $*| gawk '{print $1}'` wiadomosc=`echo $*| gawk '{print $3}'` jest=`grep $uzytkownik .gg/userlist|gawk -F ";" '{print $7"/"}'` czas=`date|gawk '{print $4}'` tmp=tmp liczba_znakow=`echo $* |wc -m` data=`date`; #echo $calosc >> $tmp/ggsendmail.last; function wyslij_info { # Jezeli wiadomosc jest rowna uzytkownik, to zostalo otwarte nowe okno rozmowy. # Sprawdzam czy uzytkownik jest na mojej liscie kontaktow. # Jesli tak, sprawdzam czy mam wyslac uzytkownikowi wiadomosc o mojej nieobecnosci. # Jesli nie znam osoby, wysylam odpowiedni komunikat. # Jezeli wiadomosc jest rozna od uzytkownik, znaczy to ze jest to wypowiedz w rozmowie. # Jesli mam ta osobe na liscie kontaktow, wysylam wiadomosc, w przeciwnym razie sprawdzam czy to nie spam. if [ $uzytkownik == $wiadomosc ] then if [ -n "$jest" ] then # tu mozna dodac jakies powitanie dla danego szkodnika ;) case "$uzytkownik" in przykladowyuser) echo "Brak powiadomienia"; ;; *) echo -e "/query $uzytkownik Niestety, nie ma mnie przy kompie. Zostaw wiadomosc, lub jesli to naprawde wazne napisz co i jak, postaram sie jak najszybciej odpisac. Pozdrawiam, Piotrek :)" >> $rurka; ;; esac telefon; else echo "/query $uzytkownik Nie ma mnie przy kompie, napisz krotko co chodzi (spam/spim=shit!) Podanie numeru kontaktowego przyspieszy odpowiedz." >> $rurka; echo "/echo Wiadomosc do $uzytkownik wyslana!" >> $rurka; fi else if [ -n "$jest" ] then calosc=`echo "$calosc" |sed 's/\\\r\\\n/ /g'`; collectlinks "$calosc"; #calosc=`echo $calosc |tr -d \\ `; #calosc=`echo $calosc |sed -e 's/\\//g`; dziel "$calosc"; else antyspam "$calosc"; fi fi } function telefon { # Sprawdzam, czy znam numer telefonu do danej osoby, jesli tak - wysylam mailem, w przeciwnym razie wyswietlam komunikat. tel=`grep $uzytkownik .gg/userlist |gawk -F ";" '{print $5}'`; if [ -n "$tel" ] then echo "/echo Numer telefonu $uzytkownik: $tel" >> $rurka; wyslij_mail "NR $uzytkownik $tel"; else echo "/echo Brak nr. telefonu dla $uzytkownik" >> $rurka; fi } function collectlinks { adresy=`echo $* | sed 's/\r/ /g' |sed 's/ /\n/g'|grep '://'`; for adres in $adresy do echo "$data $uzytkownik $adres" >> linkigg.txt; #echo "/echo Adres $adres zapisany w pliku" >> $rurka; done } function antyspam { # Z zalozenia ma sluzyc do odfiltrowywania niechcianych wiadomosci, oraz ignorowaniu i blokowaniu spamujacych uzytkownikow. # Sprawdza czy w wiadomosci nie ma pewnych slow, jesli sa to szkodnik zostaje zablokowany i ignorowany, informacja o zdarzeniu wysylana jest mailem. spam=`echo $calosc|grep -i -E -o 'gilotyna|mobile|kliknij|zarob|zarób|anonimowy|prześlij|przeslij|przekaz|osob|osób|lancuszek|łańcuszek'`; spam=`echo $spam| tr "[:upper:]" "[:lower:]"`; case "$spam" in gilotyna | mobile) echo "/shit $uzytkownik" >> $rurka; wyslij_mail "Shit $uzytkownik"; ;; kliknij | zarob |zarób) #echo "/query $uzytkownik Nie jestem zainteresowany zadna praca, w dodatku od nieznajomych. Zostales/as zablokowany/a. Jesli myslisz ze to pomylka, napisz pod adres piio(tutaj_kropka)com(a_tutaj_malpka)wp(i_znowu_kropka)pl" >> $rurka; echo "/shit $uzytkownik" >> $rurka; wyslij_mail "Shit $uzytkownik"; ;; przeslij | prześlij | przekaz | przekaż | osob | osób | lancuszek | łańcuszek) #echo "/query $uzytkownik Nie znosze lancuszkow. Zostales/as zablokowany/a. Jesli myslisz, ze to pomylka to skontaktuj sie ze mna pod adresem piio(dot)com(at)wp(dot)pl" >> $rurka; echo "/shit $uzytkownik" >> $rurka; wyslij_mail "Shit $uzytkownik"; ;; *) collectlinks "$calosc"; dziel "$calosc"; ;; esac function dziel { licznik=0; liczba=$[ liczba_znakow / 112 ]; if [ "$liczba" -eq 0 ] then wyslij_mail "$*" else while [ $licznik -le $liczba ]; do poczatek=$[ licznik * 112 ]; koniec=$[ $[ $[ licznik +1 ] * 112 ] - 1 ] czesc=`echo $* |cut -b$poczatek-$koniec`; if [ -n "$czesc" ] then wyslij_mail "#$licznik/#$liczba $czesc" echo "Czesc #$licznik z #$liczba wyslana, poczatek: $poczatek, koniec: $koniec, liczba znakow: $liczba_znakow!" >> $tmp/dziel.log; licznik=$[ licznik + 1 ]; fi done fi } function wyslij_mail { # wysyla maila na moj adres z powiadamianiem smsowym o nowej poczcie. cat <> $rurka; } wyslij_info;