delete fees, RT#81713
[freeside.git] / FS / bin / freeside-xmlrpcd
1 #!/usr/bin/perl
2
3 use FS::Daemon::Preforking qw( freeside_init1 freeside_init2 daemon_run );
4
5 use FS::XMLRPC_Lite; #XMLRPC::Lite for XMLRPC::Serializer
6                      #and XMLRPC::Transport::HTTP
7
8 use FS::Conf;
9 use FS::API;
10
11 #freeside xmlrpc.cgi
12 my %typelookup = (
13 #not utf-8 safe#  base64 => [10, sub {$_[0] =~ /[^\x09\x0a\x0d\x20-\x7f]/}, 'as_base64'],
14   dateTime => [35, sub {$_[0] =~ /^\d{8}T\d\d:\d\d:\d\d$/}, 'as_dateTime'],
15   string   => [40, sub {1}, 'as_string'],
16 );
17
18 use constant ME => 'xmlrpcd';
19 freeside_init1(ME);
20 freeside_init2(ME);
21
22 my $conf = new FS::Conf;
23 die "not running; xmlrpc_api conf option is off\n"
24   unless $conf->exists('xmlrpc_api');
25 die "not running; api_shared_secret conf option is not set\n"
26   unless $conf->config('api_shared_secret');
27
28 daemon_run( 'port' => 8008, 'handle_request' =>
29   sub {
30     my $request = shift;
31
32     my $serializer = new XMLRPC::Serializer(typelookup => \%typelookup);
33
34     #my $soap = SOAP::Transport::HTTP::Server
35     my $soap = XMLRPC::Transport::HTTP::Server
36                -> new
37                -> dispatch_to('FS::API')
38                -> serializer($serializer);
39
40     $soap->request($request);
41     $soap->handle;
42
43     $FS::UID::dbh->commit() if $FS::UID::dbh; #XXX handle commit error
44
45     return $soap->response;
46   }
47 );
48
49 1;