diff options
-rwxr-xr-x | localkannel-dispatch | 32 | ||||
-rwxr-xr-x | localmarkdown2sms | 52 | ||||
-rwxr-xr-x | localsendsms | 47 |
3 files changed, 74 insertions, 57 deletions
diff --git a/localkannel-dispatch b/localkannel-dispatch index d2339bd..ee9cd36 100755 --- a/localkannel-dispatch +++ b/localkannel-dispatch @@ -30,6 +30,13 @@ uriunescape() { fi } +# Resolve var from "variable = value" pair in file below /etc/local +getfilevar() { + file="/etc/local/$1" + var="$2" + grep -m1 "^$var" "$file" | awk -F '(= )' '{print $2}' +} + lastservicephone() { logfile=/var/log/kannel/smsbox.log tac $logfile $logfile.1 \ @@ -66,16 +73,21 @@ case "$SMS_REALM" in ;; hellobudapest) provider="clickatell" + gotestphones="+36307418279" # Jonas + gophones="" + SMS_ERRFROM="+36307418279" # Jonas + SMS_ERRTO1="" + SMS_ERRTO2="" mdpath="/home/www-hearth/public_webdata/hellobudapest/content/sms" - export mdpath + export SMS_ERRFROM SMS_ERRTO1 SMS_ERRTO2 mdpath ;; hellotorino) provider="clickatell" gotestphones="+393453915741 +393453805531 +393453801457" # Jonas, Jacob, Vera gophones="+393407574815 +393407574813 +393381467977 +393478617029" # Alessandra, Vela, Marco, Silvia - SMS_ERRFROM="+393453915741" - SMS_ERRTO1="+393453801457" - SMS_ERRTO2="+393483281187" + SMS_ERRFROM="+393453915741" # Jonas + SMS_ERRTO1="+393453801457" # Vera + SMS_ERRTO2="+393483281187" # Rescue mdpath="/home/www-hearth/public_webdata/hellotorino/content/sms" export SMS_ERRFROM SMS_ERRTO1 SMS_ERRTO2 mdpath ;; @@ -100,8 +112,8 @@ case "$provider" in coolsms) unset SMS_SMSC SMS_URL="https://sms.coolsmsc.dk:8081/" - SMS_USER="drjones1" - SMS_PW="rahYSeGY" + SMS_USER=$(getfilevar coolsms user) + SMS_PW=$(getfilevar coolsms pw) SMS_CP="cp1252" SMS_MSGTAG="message" export SMS_URL SMS_USER SMS_PW SMS_CP SMS_MSGTAG @@ -111,11 +123,11 @@ case "$provider" in clickatell) unset SMS_SMSC SMS_URL="https://api.clickatell.com/http/sendmsg" - SMS_USER="jonas" - SMS_PW="inaritab6" + SMS_USER=$(getfilevar clickatell user) + SMS_PW=$(getfilevar clickatell pw) SMS_CP="iso8859-1" SMS_USERTAG="user" - SMS_API="3231280" + SMS_API=$(getfilevar clickatell api) SMS_CALLBACK="3" SMS_CONCAT="3" SMS_ESCALATE="1" @@ -152,7 +164,7 @@ esac case "$app" in @*) # FIXME: Avoid hardcoding national prefix - targetphone="$(echo "$app" | perl -pe 's/^@//;' -e 's/^([^+])/+39\1/')" + targetphone="$(echo "$app" | perl -pe 's/^@//;' -e 's/^([^+])/+36\1/')" # TODO: silence errors - or better: bounce those back to original sender targetfrom=$(lastservicephone "$targetphone") [ -n "$targetfrom" ] || exit1 "refusing to redirect: unknown target phone number \"$targetphone\"." diff --git a/localmarkdown2sms b/localmarkdown2sms index f13c097..9b227e5 100755 --- a/localmarkdown2sms +++ b/localmarkdown2sms @@ -29,7 +29,7 @@ use File::Spec; use File::Slurp; use Time::Duration::Parse; use Text::Unidecode; -use Encode 2.12 qw(encode decode_utf8 _utf8_off); # need v2.12 to support coderef +use Encode 2.12 qw(encode decode _utf8_off); # need v2.12 to support coderef use LWP::UserAgent; use URI::Escape; use Proc::Daemon; @@ -204,11 +204,11 @@ sub tidymsg { sub transliterate { my ($tocharset, $string) = @_; - my $res = encode($tocharset, decode_utf8($string), sub { + my $res = encode($tocharset, decode('GSM0338', encode('GSM0338', decode('UTF-8', $string), sub { my $ascii = unidecode(chr $_[0]); _utf8_off($ascii); $ascii; - }); + }))); return $res; } @@ -216,26 +216,26 @@ sub transliterate { sub sendmsg { my ($from, $to, $desc, $msg) = @_; + my $ua = LWP::UserAgent->new(agent => "localmarkdown2sms"); + $ua->timeout(10); + my $url = $sms_url + . '?' . $sms_usertag . '=' . uri_escape($sms_user) + . '&password=' . uri_escape($sms_pw) + . '&to=' . uri_escape($to); + $url .= '&api_id=' . uri_escape($sms_api) if ($sms_api); + $url .= '&callback=' . uri_escape($sms_callback) if ($sms_callback); + $url .= '&from=' . uri_escape($from) if ($from); + $url .= '&smsc=' . uri_escape($sms_smsc) if ($sms_smsc); + $url .= '&concatenation=true' if ($sms_concatenation); + $url .= '&concat=' . uri_escape($sms_concat) if ($sms_concat); + $url .= '&dlr-mask=' . uri_escape($sms_dlr_mask) if ($sms_dlr_mask); + $url .= '&dlr-url=' . uri_escape($sms_dlr_url) if ($sms_dlr_url); + $url .= '&escalate=' . uri_escape($sms_escalate) if ($sms_escalate); + $url .= '&validity=' . uri_escape($sms_validity) if ($sms_validity); + $url .= '&req_feat=' . uri_escape($sms_req_feat) if ($sms_req_feat); + $url .= '&binfo=' . uri_escape($sms_binfo) if ($sms_binfo); + $url .= '&' . $sms_msgtag . '=' . uri_escape(transliterate($sms_cp, $msg)); unless ($dummy) { - my $ua = LWP::UserAgent->new(agent => "localmarkdown2sms"); - $ua->timeout(10); - my $url = $sms_url - . '?' . $sms_usertag . '=' . uri_escape($sms_user) - . '&password=' . uri_escape($sms_pw) - . '&to=' . uri_escape($to); - $url .= '&api_id=' . uri_escape($sms_api) if ($sms_api); - $url .= '&callback=' . uri_escape($sms_callback) if ($sms_callback); - $url .= '&from=' . uri_escape($from) if ($from); - $url .= '&smsc=' . uri_escape($sms_smsc) if ($sms_smsc); - $url .= '&concatenation=true' if ($sms_concatenation); - $url .= '&concat=' . uri_escape($sms_concat) if ($sms_concat); - $url .= '&dlr-mask=' . uri_escape($sms_dlr_mask) if ($sms_dlr_mask); - $url .= '&dlr-url=' . uri_escape($sms_dlr_url) if ($sms_dlr_url); - $url .= '&escalate=' . uri_escape($sms_escalate) if ($sms_escalate); - $url .= '&validity=' . uri_escape($sms_validity) if ($sms_validity); - $url .= '&req_feat=' . uri_escape($sms_req_feat) if ($sms_req_feat); - $url .= '&binfo=' . uri_escape($sms_binfo) if ($sms_binfo); - $url .= '&' . $sms_msgtag . '=' . uri_escape(transliterate($sms_cp, $msg)); DEBUG "Sending request: $url"; my $response = $ua->request(HTTP::Request->new('GET', $url)); unless ($response->is_success) { @@ -243,18 +243,22 @@ sub sendmsg { } DEBUG "Done $desc"; } else { + DEBUG "[DUMMY] Sending request: $url"; print STDERR "\n [$from --> $to: $desc]\n\n"; - print STDERR $msg . "\n"; + print STDERR transliterate($sms_cp, $msg) . "\n"; } } my $num_children = $#{ $reply{$key} } + 1; # How many children we'll create if (0 == $num_children) { + my $err_da = "Ikke genkendt som et nøgleord: Check venligst for tastefejl og prøv igen."; my $err_en = "Sorry, not recognized as a keyword: Please check spelling and try again."; + my $err_hu = "Érvénytelen kulcsszó. Kérjük, ellenőrizd és próbáld újra."; my $err_it = "Spiacente, non riconosco come parola chiave: Controlla l'ortografia e riprova."; my $errmsg = "[warning] $phone requested unknown keyword \"$key\"\nFull text: $inputstring"; - &sendmsg($sms_phone, $phone, "fallback message", "$key?\n$err_it\n$err_en"); +# FIXME: Make use of local errormsg optional and configurable. + &sendmsg($sms_phone, $phone, "fallback message", "$key?\n$err_hu\n$err_en"); ($sms_errto1) and &sendmsg($sms_errfrom, $sms_errto1, "warning", $errmsg); ($sms_errto2) and &sendmsg($sms_errfrom, $sms_errto2, "warning", $errmsg); exit; diff --git a/localsendsms b/localsendsms index 6b69e93..3f5ca07 100755 --- a/localsendsms +++ b/localsendsms @@ -11,7 +11,7 @@ use warnings; use Env qw[$debug $info $warn $dummy $urldecode]; use Log::Log4perl qw(:easy); use Text::Unidecode; -use Encode 2.12 qw(encode decode_utf8 _utf8_off); # need v2.12 to support coderef +use Encode 2.12 qw(encode decode _utf8_off); # need v2.12 to support coderef use LWP::UserAgent; use URI::Escape; @@ -60,11 +60,11 @@ if ($debug) { sub transliterate { my ($tocharset, $string) = @_; - my $res = encode($tocharset, decode_utf8($string), sub { + my $res = encode($tocharset, decode('GSM0338', encode('GSM0338', decode('UTF-8', $string), sub { my $ascii = unidecode(chr $_[0]); _utf8_off($ascii); $ascii; - }); + }))); return $res; } @@ -72,26 +72,26 @@ sub transliterate { sub sendmsg { my ($from, $to, $desc, $msg) = @_; + my $ua = LWP::UserAgent->new(agent => "localsendsms"); + $ua->timeout(10); + my $url = $sms_url + . '?' . $sms_usertag . '=' . uri_escape($sms_user) + . '&password=' . uri_escape($sms_pw) + . '&to=' . uri_escape($to); + $url .= '&api_id=' . uri_escape($sms_api) if ($sms_api); + $url .= '&callback=' . uri_escape($sms_callback) if ($sms_callback); + $url .= '&from=' . uri_escape($from) if ($from); + $url .= '&smsc=' . uri_escape($sms_smsc) if ($sms_smsc); + $url .= '&concatenation=true' if ($sms_concatenation); + $url .= '&concat=' . uri_escape($sms_concat) if ($sms_concat); + $url .= '&dlr-mask=' . uri_escape($sms_dlr_mask) if ($sms_dlr_mask); + $url .= '&dlr-url=' . uri_escape($sms_dlr_url) if ($sms_dlr_url); + $url .= '&escalate=' . uri_escape($sms_escalate) if ($sms_escalate); + $url .= '&validity=' . uri_escape($sms_validity) if ($sms_validity); + $url .= '&req_feat=' . uri_escape($sms_req_feat) if ($sms_req_feat); + $url .= '&binfo=' . uri_escape($sms_binfo) if ($sms_binfo); + $url .= '&' . $sms_msgtag . '=' . uri_escape(transliterate($sms_cp, $msg)); unless ($dummy) { - my $ua = LWP::UserAgent->new(agent => "localsendsms"); - $ua->timeout(10); - my $url = $sms_url - . '?' . $sms_usertag . '=' . uri_escape($sms_user) - . '&password=' . uri_escape($sms_pw) - . '&to=' . uri_escape($to); - $url .= '&api_id=' . uri_escape($sms_api) if ($sms_api); - $url .= '&callback=' . uri_escape($sms_callback) if ($sms_callback); - $url .= '&from=' . uri_escape($from) if ($from); - $url .= '&smsc=' . uri_escape($sms_smsc) if ($sms_smsc); - $url .= '&concatenation=true' if ($sms_concatenation); - $url .= '&concat=' . uri_escape($sms_concat) if ($sms_concat); - $url .= '&dlr-mask=' . uri_escape($sms_dlr_mask) if ($sms_dlr_mask); - $url .= '&dlr-url=' . uri_escape($sms_dlr_url) if ($sms_dlr_url); - $url .= '&escalate=' . uri_escape($sms_escalate) if ($sms_escalate); - $url .= '&validity=' . uri_escape($sms_validity) if ($sms_validity); - $url .= '&req_feat=' . uri_escape($sms_req_feat) if ($sms_req_feat); - $url .= '&binfo=' . uri_escape($sms_binfo) if ($sms_binfo); - $url .= '&' . $sms_msgtag . '=' . uri_escape(transliterate($sms_cp, $msg)); DEBUG "Sending request: $url"; my $response = $ua->request(HTTP::Request->new('GET', $url)); unless ($response->is_success) { @@ -99,8 +99,9 @@ sub sendmsg { } DEBUG "Done $desc"; } else { + DEBUG "[DUMMY] Sending request: $url"; print STDERR "\n [$from --> $to: $desc]\n\n"; - print STDERR $msg . "\n"; + print STDERR transliterate($sms_cp, $msg) . "\n"; } } |