Add Jitsi autoprovisioning tool.

3.5
Andreas Granig 14 years ago
parent 3349162e16
commit 9de6e1212a

1
debian/control vendored

@ -32,6 +32,7 @@ Depends: gettext,
libcatalyst-perl,
liblocale-maketext-lexicon-perl,
librpc-xml-perl,
libapache2-request-perl,
ngcp-ossbss-billing (>= 2.0.2),
ngcp-ossbss-voip (>= 3.0.0),
ngcp-templates-www-csc,

@ -1,5 +1,7 @@
csc.yml usr/share/ngcp-www-csc/lib/csc/
lib usr/share/ngcp-www-csc/
lib/csc usr/share/ngcp-www-csc/lib/
lib/csc.pm usr/share/ngcp-www-csc/lib/
lib/JitsiProvisioning.pm usr/share/perl5/Sipwise/
root usr/share/ngcp-www-csc/lib/csc/
script/csc_cgi.pl usr/share/ngcp-www-csc/script/
script/csc_fastcgi.pl usr/share/ngcp-www-csc/script/

@ -18,7 +18,7 @@ esac
. /usr/share/debconf/confmodule
# enable required modules
a2enmod ssl perl
a2enmod ssl perl apreq
# enable optional modules
a2enmod dump_io || echo "Missing some optional Apache module(s), ignoring."

@ -30,6 +30,13 @@ PerlSwitches -I/usr/share/ngcp-www-csc/lib
PerlResponseHandler csc
</Location>
<Location /jitsi>
SetEnv no-gzip 1
SetHandler perl-script
PerlResponseHandler Sipwise::JitsiProvisioning
Allow from all
</Location>
# requires module dumpio
# LogLevel debug
# DumpIOInput Off

@ -66,4 +66,11 @@
device="[% www_csc.main_menu.device %]"
account="[% www_csc.main_menu.account %]"
/>
<uaprovisioning>
<xcap
host="[% networking.eaddress %]"
port="[% nginx.xcap_port %]"
proto="https"
/>
</uaprovisioning>
</config>

@ -0,0 +1,86 @@
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;
Loading…
Cancel
Save