@@ -4,6 +4,7 @@ use feature 'say';
44
55use Data::Dumper;
66use IO::Socket::INET;
7+ use Net::Telnet;
78use POSIX qw( strftime) ;
89use 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