Skip to content

Commit 42e60bd

Browse files
authored
Merge pull request #401 from jfmartinezm/sip2-telnet
Sip2 telnet
2 parents 03efff7 + 4a0a1e2 commit 42e60bd

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

cpanfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ requires 'Modern::Perl';
5555
requires 'Moose';
5656
requires 'MooseX::NonMoose';
5757
requires 'Net::Server::SS::PreFork';
58+
requires 'Net::Telnet';
5859
requires 'PDF::API2';
5960
requires 'Perl6::Junction';
6061
requires 'Plack';

lib/Libki/SIP.pm

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use feature 'say';
44

55
use Data::Dumper;
66
use IO::Socket::INET;
7+
use Net::Telnet;
78
use POSIX qw(strftime);
89
use Socket qw(:crlf);
910

@@ -29,6 +30,7 @@ sub authenticate_via_sip {
2930
my $timeout = $config->{SIP}->{timeout} || 15;
3031
my $require_sip_auth = $config->{SIP}->{require_sip_auth}
3132
// 1; # Default to requiring authentication if setting doesn't exist
33+
my $sip_enable_telnet_login = $config->{SIP}->{sip_enable_telnet_login};
3234

3335
$log->debug("SIP SERVER: $host:$port");
3436
say "SIP SERVER: $host:$port" if $test_mode;
@@ -54,6 +56,28 @@ sub authenticate_via_sip {
5456
or $log->fatal("ERROR in Socket Creation : $!\n")
5557
&& ( $test_mode && die "ERROR in Socket Creation : $!\n" );
5658

59+
say "sip_enable_telnet_login: $sip_enable_telnet_login" if $test_mode;
60+
if ($sip_enable_telnet_login) {
61+
$log->debug("Telnet login enabled");
62+
$telnet = new Net::Telnet( Fhopen => $socket );
63+
$sip_username = $config->{SIP}->{username};
64+
$sip_password = $config->{SIP}->{password};
65+
$sip_telnet_login_prompt = quotemeta($config->{SIP}->{sip_telnet_login_prompt});
66+
say "login, expecting: $sip_telnet_login_prompt" if $test_mode;
67+
$ok = $telnet->login(
68+
Name => $sip_username,
69+
Password => $sip_password,
70+
Prompt => '/' . $sip_telnet_login_prompt . '/',
71+
Errmode => 'return'
72+
);
73+
if ( !$ok ) {
74+
$telnet_error = $telnet->errmsg;
75+
$log->debug("Telnet error: $telnet_error");
76+
say "telnet error: $telnet_error" if $test_mode;
77+
return { success => 0, error => 'SIP_AUTH_FAILURE', user => $user };
78+
}
79+
}
80+
5781
## Set location to empty string if not set
5882
$config->{SIP}->{location} //= q{};
5983

0 commit comments

Comments
 (0)