Und in welcher Variable steht nun die tatsächliche Nummer konkret drin?
Schade, das war es leider nicht. In ${CDR(src)} steht auch nur die vom User gesetzte und nicht die tatsächliche Nummer ...
Ich habs gerade über ISDN probiert. Anrufer mit gesetzter Nummer wurde mit gesetzter Nummer angezeigt und in ${CDR(src)} stand auch genau diese gesetzte Nummer. Nach Gesprächsende stand im isdn-log die tatsächliche (network provided) Nummer.
Ich benutze nur den Treiber für die Fritz-Karte und Asterisk ...
Code:..... SPAMSCORE=$(lynx -dump http://www.tellows.de/basic/num/$PHONENR | sed -ne '/Score:/{s/.*.: //p}') echo "SET VARIABLE SPAMSCORE \"$SPAMSCORE\"" .....
Und die Variable $SPAMCORE aus dem Shell Script, wie fragt man die im Dialplan ab? Muss man die vorher nicht irgendwie zurück importieren?
Was ich aber noch gefunden habe ist die variable agi_callerid - kann ich mir das übergeben damit ersparen?
GotoIf($[${SPAMCORE} = [7-9]]?spamcontext)
Das macht das echo "SET VARIABLE ...", damit steht sie im Dialplan als Channel-Variable zur Verfügung.
Das wird so nicht klappen, entweder baust Du das GotoIf mit einer RegEx auf, oder prüfst auf >6.
exten => _X.,1,GotoIf($[${REGEX("[7-9]" ${SPAMSCORE})}]?spamcontext)
exten => _X.,1,GotoIf($[${SPAMCORE} >6]?spamcontext)
#!/bin/sh
PHONENR=$1
SPAMSCORE=$(lynx -dump http://www.tellows.de/basic/num/$PHONENR | sed -ne '/Score:/{s/.*.: //p}')
echo "SET VARIABLE SPAMSCORE \"$SPAMSCORE\""
same => n,Gosub(spamcheck,${EXTEN},1)
[spamtrap]
exten => _X.,1,Set(CALLERID(pres)=prohib) ;hide own caller id
exten => _X.,n,Answer
exten => _X.,n,Ringing
exten => _X.,n,Wait(10)
exten => _X.,n,MixMonitor(/var/spool/asterisk/monitor/honeypot${STRFTIME(${EPOCH},,%Y-%m-%d)}from${CALLERID(num)}.wav)
;exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/honeypot1hallomitwem)
;exten => _X.,n,WaitForSilence(2000)
exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/honeypot2hallo)
exten => _X.,n,WaitForSilence(2000)
;exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/honeypot3firmanichtverstanden)
;exten => _X.,n,WaitForSilence(2000)
exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/honeypot4achsowaskann)
exten => _X.,n,WaitForSilence(2000)
exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/honeypot5okumwasgeht)
exten => _X.,n,WaitForSilence(2000)
exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/spam)
exten => _X.,n,StopMixMonitor
exten => _X.,n,Hangup
exten => h,1,Set(EMAILADDR=${DB(cidmail/${EXTCALLED})})
exten => h,n,AGI(spammail.agi,${CALLERID(num)},${EXTCALLED},${SPAMSCORE},${STRFTIME(${EPOCH},,%Y-%m-%d)},${EMAILADDR}) ;/var/lib/asterisk/agi-bin
exten => h,n,NoOp(result is ${SPAMMAIL})
[spamcheck]
exten => _X.,1,AGI(spamscore.agi,${CALLERID(num)}) ;/var/lib/asterisk/agi-bin
exten => _X.,n,NoOp(Spamscore is ${SPAMSCORE})
exten => _X.,n,GotoIf($[${REGEX("[7-9]" ${SPAMSCORE})}]?spamtrap,${EXTEN},1)
exten => _X.,n,GotoIf(${BLACKLIST()}?spamtrap,${EXTEN},1)
exten => _X.,n,Return
#!/bin/sh
CALLERID=$1
EXTEN=$2
SPAMSCORE=$3
TIME=$4 #time call was recorded, its in the file name
EMAIL=$5
sleep 10 #make sure wav is written already
if [ -s /var/spool/asterisk/monitor/honeypot${TIME}from${CALLERID}.wav ]; then
SPAMMAIL=$(echo "Anruf von ${CALLERID} zu ${EXTEN} mit Spamscore ${SPAMSCORE} wurde geblockt weil in Blacklist oder Score 7-9." | env -i /usr/bin/mutt -d 65535 -s "[PBX]: Geblockter Anruf von ${CALLERID} zu ${EXTEN}" -a /var/spool/asterisk/monitor/honeypot${TIME}from${CALLERID}.wav -- ${EMAIL})
else
SPAMMAIL=$(echo "Anruf von ${CALLERID} zu ${EXTEN} mit Spamscore ${SPAMSCORE} wurde geblockt weil in Blacklist oder Score 7-9." | env -i /usr/bin/mutt -d 65535 -s "[PBX]: Geblockter Anruf von ${CALLERID} zu ${EXTEN}" -- ${EMAIL})
fi
echo "SET VARIABLE SPAMMAIL \"$SPAMMAIL\""
#!/bin/sh
PHONENR=$1
SPAMSCORE=$(lynx -dump http://www.tellows.de/basic/num/$PHONENR | sed -ne '/Score:/{s/.*.: //p}')
echo "SET VARIABLE SPAMSCORE \"$SPAMSCORE\""