You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
www_csc/lib/JitsiProvisioning.pm

87 lines
3.3 KiB

package Sipwise::JitsiProvisioning;
use strict;
use warnings;
use Apache2::Request;
use Apache2::RequestRec;
use Apache2::RequestIO;
use Apache2::Const;
use XML::Simple;
my $config = '/etc/ngcp-www-csc/csc.conf';
my $cfg = XML::Simple->new()->XMLin($config)
or die "Failed to read config file '$config'";
sub handler {
my $r = shift;
my $req = Apache2::Request->new($r);
$r->content_type('text/plain');
my $uri = $req->param("user") || '';
my ($user, $domain) = split /\@/, $uri;
my $pass = $req->param("pass");
my $uuid = $req->param("uuid");
unless(defined $user && defined $domain && defined $pass && defined $uuid) {
$r->custom_response(Apache2::Const::NOT_FOUND, "invalid credentials");
return Apache2::Const::NOT_FOUND;
}
my $acc = 'accngcp'.$uuid.$user.$domain;
$acc =~ s/[^a-zA-Z0-9]//g;
my $server_ip = $domain;
my $server_port = 5061;
my $server_proto = 'TLS';
my $xcap_proto = $config->{uaprovisioning}->{xcap}->{proto};
my $xcap_ip = $config->{uaprovisioning}->{xcap}->{host};
my $xcap_port = $config->{uaprovisioning}->{xcap}->{port};
my $config = <<"EOF";
net.java.sip.communicator.impl.protocol.sip.$acc=$acc
net.java.sip.communicator.impl.protocol.sip.$acc.ACCOUNT_UID=SIP\:$user\@$domain
net.java.sip.communicator.impl.protocol.sip.$acc.PROTOCOL_NAME=SIP
net.java.sip.communicator.impl.protocol.sip.$acc.IS_ACCOUNT_DISABLED=false
net.java.sip.communicator.impl.protocol.sip.$acc.USER_ID=$user\@$domain
net.java.sip.communicator.impl.protocol.sip.$acc.PASSWORD=$pass
net.java.sip.communicator.impl.protocol.sip.$acc.DISPLAY_NAME=
net.java.sip.communicator.impl.protocol.sip.$acc.PROXY_AUTO_CONFIG=false
net.java.sip.communicator.impl.protocol.sip.$acc.PROXY_PORT=$server_port
net.java.sip.communicator.impl.protocol.sip.$acc.PROXY_ADDRESS=$server_ip
net.java.sip.communicator.impl.protocol.sip.$acc.SERVER_ADDRESS=$server_ip
net.java.sip.communicator.impl.protocol.sip.$acc.PREFERRED_TRANSPORT=$server_proto
net.java.sip.communicator.impl.protocol.sip.$acc.VOICEMAIL_CHECK_URI=sip\:voicebox\@$domain
net.java.sip.communicator.impl.protocol.sip.$acc.VOICEMAIL_URI=
net.java.sip.communicator.impl.protocol.sip.$acc.FORCE_P2P_MODE=false
net.java.sip.communicator.impl.protocol.sip.$acc.IS_PRESENCE_ENABLED=true
net.java.sip.communicator.impl.protocol.sip.$acc.XCAP_ENABLE=true
net.java.sip.communicator.impl.protocol.sip.$acc.XCAP_SERVER_URI=$xcap_proto\://$xcap_ip\:$xcap_port/xcap
net.java.sip.communicator.impl.protocol.sip.$acc.XCAP_USE_SIP_CREDETIALS=true
net.java.sip.communicator.impl.protocol.sip.$acc.SUBSCRIPTION_EXPIRATION=3600
net.java.sip.communicator.impl.protocol.sip.$acc.KEEP_ALIVE_INTERVAL=25
net.java.sip.communicator.impl.protocol.sip.$acc.KEEP_ALIVE_METHOD=OPTIONS
net.java.sip.communicator.impl.protocol.sip.$acc.DTMF_METHOD=AUTO_DTMF
net.java.sip.communicator.impl.protocol.sip.$acc.DEFAULT_ENCRYPTION=true
net.java.sip.communicator.impl.protocol.sip.$acc.DEFAULT_SIPZRTP_ATTRIBUTE=true
net.java.sip.communicator.impl.protocol.sip.$acc.POLLING_PERIOD=30
net.java.sip.communicator.impl.protocol.sip.$acc.SAVP_OPTION=0
net.java.sip.communicator.impl.protocol.sip.$acc.SDES_ENABLED=false
net.java.sip.communicator.impl.protocol.sip.$acc.ACCOUNT_ICON_PATH=resources/images/protocol/sip/sip32x32.png
net.java.sip.communicator.impl.protocol.sip.$acc.XIVO_ENABLE=false
EOF
$r->print($config);
return Apache2::Const::OK;
}
1;