|
NAMEXML::Compile::SOAP::Daemon::AnyDaemon - SOAP server based on Any::DaemonINHERITANCEXML::Compile::SOAP::Daemon::AnyDaemon is a XML::Compile::SOAP::Daemon XML::Compile::SOAP::Daemon::AnyDaemon is an Any::Daemon SYNOPSIS#### have a look in the examples directory! use XML::Compile::SOAP::Daemon::AnyDaemon; use XML::Compile::SOAP11; use XML::Compile::SOAP::WSA; # optional my $daemon = XML::Compile::SOAP::Daemon::AnyDaemon->new; # daemon definitions from WSDL my $wsdl = XML::Compile::WSDL11->new(...); $wsdl->importDefinitions(...); # more schemas $daemon->operationsFromWSDL($wsdl, callbacks => ...); # daemon definitions added manually (when no WSDL) my $soap11 = XML::Compile::SOAP11::Server->new(schemas => $wsdl->schemas); my $handler = $soap11->compileHandler(...); $daemon->addHandler('getInfo', $soap11, $handler); # see what is defined: $daemon->printIndex; # finally, run the server. This never returns. $daemon->run(@daemon_options); DESCRIPTIONThis module handles the exchange of SOAP messages over HTTP with Any::Daemon as daemon implementation. It is a simple pre-forked daemon, much easier than the Net::Server implementations.We use HTTP::Daemon as HTTP-connection implementation. The HTTP::Request and HTTP::Response objects (provided by "HTTP-Message") are handled via functions provided by XML::Compile::SOAP::Daemon::LWPutil. This abstraction level of the object (code in this pm file) is not concerned with parsing or composing XML, but only worries about the HTTP transport specifics of SOAP messages. The processing of the SOAP message is handled by the XML::Compile::SOAP::Daemon base-class. The server is as flexible as possible: accept M-POST (HTTP Extension Framework) and POST (standard HTTP) for any message. It can be used for any SOAP1.1 and SOAP1.2 mixture. Although SOAP1.2 itself is not implemented yet. Extends "DESCRIPTION" in XML::Compile::SOAP::Daemon. METHODSExtends "METHODS" in XML::Compile::SOAP::Daemon.ConstructorsExtends "Constructors" in XML::Compile::SOAP::Daemon.
AttributesExtends "Attributes" in XML::Compile::SOAP::Daemon.
Running the serverExtends "Running the server" in XML::Compile::SOAP::Daemon.
PreparationsExtends "Preparations" in XML::Compile::SOAP::Daemon.
HelpersExtends "Helpers" in XML::Compile::SOAP::Daemon.
DETAILSExtends "DETAILS" in XML::Compile::SOAP::Daemon.Operation handlersExtends "Operation handlers" in XML::Compile::SOAP::Daemon.Returning errorsExtends "Returning errors" in XML::Compile::SOAP::Daemon.AnyDaemon with SSLFirst, create certificates and let them be signed by a CA (or yourself) See http://devsec.org/info/ssl-cert.html to understand this.# generate secret private key openssl genrsa -out privkey.pem 1024 # create a "certification request" (CSR) openssl req -new -key privkey.pem -out certreq.csr # send the CSR to the Certification Authority or self-sign: openssl x509 -req -days 3650 -in certreq.csr -signkey privkey.pem -out newcert.pem # publish server certificate ( openssl x509 -in newcert.pem; cat privkey.pem ) > server.pem ln -s server.pem `openssl x509 -hash -noout -in server.pem`.0 # dot-zero Assuming that the certificates are in 'certs/', the program looks like this: use Log::Report; use XML::Compile::SOAP::Daemon::AnyDaemon; use XML::Compile::WSDL11; use IO::Socket::SSL 'SSL_VERIFY_NONE'; use IO::Socket 'SOMAXCONN'; my $daemon = XML::Compile::SOAP::Daemon::AnyDaemon->new; my $wsdl = XML::Compile::WSDL11->new($wsdl); my %handlers = (); $daemon->operationsFromWSDL($wsdl, callbacks => \%handlers); my $socket = IO::Socket::SSL->new ( LocalHost => 'localhost' , LocalPort => 4444 , Listen => SOMAXCONN , Reuse => 1 , SSL_server => 1 , SSL_verify_mode => SSL_VERIFY_NONE , SSL_key_file => 'certs/privkey.pem' , SSL_cert_file => 'certs/server.pem' ) or error __x"cannot create socket at {interface}: {err}" , interface => "$host:$port" , err => IO::Socket::SSL::errstr(); $daemon->run ( name => basename($0) , max_childs => 1 , socket => $socket , child_init => \&for_instance_connect_to_db ) SEE ALSOThis module is part of XML-Compile-SOAP-Daemon distribution version 3.14, built on May 11, 2018. Website: http://perl.overmeer.net/CPAN/LICENSECopyrights 2007-2018 by [Mark Overmeer <markov@cpan.org>]. For other contributors see ChangeLog.This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://dev.perl.org/licenses/
Visit the GSP FreeBSD Man Page Interface. |