9 use FS::Daemon::Preforking qw( freeside_init1 freeside_init2 daemon_run );
11 use FS::XMLRPC_Lite; #XMLRPC::Lite for XMLRPC::Serializer
12 #and XMLRPC::Transport::HTTP
19 #not utf-8 safe# base64 => [10, sub {$_[0] =~ /[^\x09\x0a\x0d\x20-\x7f]/}, 'as_base64'],
20 dateTime => [35, sub {$_[0] =~ /^\d{8}T\d\d:\d\d:\d\d$/}, 'as_dateTime'],
21 string => [40, sub {1}, 'as_string'],
24 use constant ME => 'xmlrpcd';
28 my $conf = new FS::Conf;
29 die "not running; xmlrpc_api conf option is off\n"
30 unless $conf->exists('xmlrpc_api');
31 die "not running; api_shared_secret conf option is not set\n"
32 unless $conf->config('api_shared_secret');
34 daemon_run( 'port' => 8008, 'handle_request' =>
38 my $serializer = new XMLRPC::Serializer(typelookup => \%typelookup);
40 #my $soap = SOAP::Transport::HTTP::Server
41 my $soap = XMLRPC::Transport::HTTP::Server
43 -> dispatch_to('FS::API')
44 -> serializer($serializer);
46 $soap->request($request);
49 $FS::UID::dbh->commit() if $FS::UID::dbh; #XXX handle commit error
51 return $soap->response;