| This directory contains an example stand-alone gSOAP Web server. It uses the |
| gSOAP HTTP GET plugin to serve HTTP GET requests as well as SOAP/XML HTTP POST |
| requests. |
| |
| This is a small but fully functional (embedded) Web server that can serve both |
| static and dynamic pages and provide SOAP/XML responses. |
| |
| This Web server implements a simple calculator XML Web service for |
| demonstration purposes. |
| |
| This application requires Zlib and Pthreads (you can replace Pthreads with |
| another thread library, but you need to study the OpenSSL Pthread |
| implementation when you plan to use OpenSSL). |
| |
| On Unix/Linux, please enable SIGPIPE handling, see the main function in |
| webserver.c. SIGPIPE handling will avoid your server from termination when |
| sockets are disconnected by clients before the transaction was completed |
| (aka broken pipe). |
| |
| Please don't be tempted to run the webserver with root permission! The best |
| way to protect your site is by creating a dummy account with very limited |
| system access and run the webserver under this account. |
| |
| Compile without OpenSSL: |
| soapcpp2 -c -n -popt opt.h |
| soapcpp2 -c webserver.h |
| Customize your COOKIE_DOMAIN in webserver.c (if you use cookies) |
| gcc -DWITH_COOKIES -DWITH_ZLIB -I../.. -o webserver webserver.c |
| options.c ../../plugin/httpget.c ../../plugin/logging.c |
| ../../plugin/threads.c ../../stdsoap2.c soapC.c soapClient.c |
| soapServer.c -lpthread -lz |
| |
| Compile with OpenSSL: |
| soapcpp2 -c -n -popt opt.h |
| soapcpp2 -c webserver.h |
| gcc -DWITH_OPENSSL -DWITH_COOKIES -DWITH_ZLIB -I../.. -o webserver |
| webserver.c options.c ../../plugin/httpget.c ../../plugin/logging.c |
| ../../plugin/threads.c ../../stdsoap2.c soapC.c |
| soapClient.c soapServer.c -lpthread -lz -lssl -lcrypto |
| |
| Use (HTTP GET): |
| Compile the web server as explained above |
| Start the web server on an even numbered port (e.g. 8080): |
| > webserver 8080 & |
| Start a web browser and open a (localhost) location: |
| http://127.0.0.1:8080 |
| and type userid 'admin' and passwd 'guest' to gain access |
| Open the location: |
| http://127.0.0.1:8080/calc.html |
| and enter an expression |
| Open the locations: |
| http://127.0.0.1:8080/test.html |
| http://127.0.0.1:8081/webserver.wsdl |
| |
| Use (HTTPS GET): |
| Create the SSL certificate |
| Compile the web server with OpenSSL as explained above |
| Start the web server on an odd numbered port (e.g. 8081) |
| > webserver 8081 & |
| Actually, you can start two servers, one on 8080 and a secure one on |
| 8081 |
| Start a web browser and open a (localhost) location: |
| https://127.0.0.1:8081 |
| and type userid 'admin' and passwd 'guest' to gain access |
| Open the location: |
| https://127.0.0.1:8081/calc.html |
| and enter an expression |
| Open the locations: |
| https://127.0.0.1:8081/test.html |
| https://127.0.0.1:8081/webserver.wsdl |
| |
| Use (HTTP POST): |
| Serves SOAP/XML calculation requests |
| |
| Command-line options: |
| -z enables compression |
| -c enables chunking |
| -k enables keep-alive |
| -i enables non-threaded iterative server |
| -v enables verbose mode |
| -t<val> sets I/O timeout value (seconds) |
| -s<val> sets server timeout value (seconds) |
| -d<host> sets cookie domain |
| -p<path> sets cookie path |
| -l[none inbound outbound both] |
| enables logging |
| |