'pwd' => { label=>'Operator password' },
'tplid' => { label=>'Template number' },
'hlrsn' => { label=>'HLR serial number' },
+ 'timeout' => { label=>'Timeout (seconds)', default => 120 },
'debug' => { label=>'Enable debugging', type=>'checkbox' },
;
my( $self, $svc_phone ) = (shift, shift);
# svc_phone::check should ensure phonenum and sim_imsi are numeric
my @command = (
- 'ADD TPLSUB',
IMSI => '"'.$svc_phone->sim_imsi.'"',
ISDN => '"'.$svc_phone->phonenum.'"',
TPLID => $self->option('tplid'),
);
unshift @command, 'HLRSN', $self->option('hlrsn')
if $self->option('hlrsn');
+ unshift @command, 'ADD TPLSUB';
my $err_or_queue = $self->queue_command($svc_phone->svcnum, @command);
ref($err_or_queue) ? '' : $err_or_queue;
}
my( $self, $svc_phone ) = (shift, shift);
my @command = (
'RMV SUB',
- IMSI => '"'.$svc_phone->sim_imsi.'"',
+ #IMSI => '"'.$svc_phone->sim_imsi.'"',
ISDN => '"'.$svc_phone->phonenum.'"',
);
my $err_or_queue = $self->queue_command($svc_phone->svcnum, @command);
$string .= shift(@param) . '=' . shift(@param);
$string .= ',' if @param;
}
- $string .= "\n";
+ $string .= "\n;";
my @result;
eval { # timeout
local $SIG{ALRM} = sub { die "timeout\n" };
- alarm ($self->option('timeout') || 30);
+ alarm ($self->option('timeout') || 120);
warn "Sending to server:\n$string\n\n" if $DEBUG;
$socket->print($string);
warn "Received:\n";
my $line;
+ local $/ = "\r\n";
do {
$line = $socket->getline();
warn $line if $DEBUG;
return { error => $@ };
} else {
#+++ HLR9820 <date> <time>\n
- # skip empty lines
my $header = shift(@result);
- return { error => 'malformed response: '.$header }
- unless $header =~ /^\+\+\+/;
- $return{header} = $header;
+ $header =~ /(\+\+\+.*)/
+ or return { error => 'malformed response: '.$header };
+ $return{header} = $1;
#SMU #<serial number>\n
$return{smu} = shift(@result);
#%%<command string>%%\n