summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlocalkannel-dispatch32
-rwxr-xr-xlocalmarkdown2sms52
-rwxr-xr-xlocalsendsms47
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";
}
}