HTTP over Named Pipes: brief introduction

Summary: firewalls on Windows prevent web server to start up. Making web server and browser talk over Named Pipes makes them unnoticable and unaffected by firewalls.

HTTP protocol is typically used over TCP - a widely spread networking protocol. Since most of malware, troyans and viruses spread via network, majority of firewalls installed on Windows computers (including firewall built into Windows) track all network activity. Once such network activity is detected first time for some program, firewalls either asks user what whether to permit it, or firewalls can be configured to silently reject such activity. Any web server running off CD or USB is not an exception - in the best case, user will be asked by firewall one or two times whether to permit network activity; in the worst case, firewall will just silently reject all network activity and web server will fail to start. If user was lucky to see firewall's prompt, a lot of users will tell firewall to prevent network activity, also preventing web server to start. For more than four years, Stunnix Web Server for CDROM also had risk not to be able to start due to this factor.

Fortunately, Stunnix Web Server for CD-ROM supports HTTP protocol over Named Pipes on Windows (instead of TCP networking protocol). Not using networking is possible since web server runs on the same computer where user of web content resides.

Using Named Pipes instead of TCP network sockets means firewalls don't notice and thus can't affect startup and operation of web site running off CD/DVD, USB or HDD. Besides web serving component, HTTP over Named Pipes is supported by special web browser. That special web browser is based on Portable FireFox. MySQL database server is also used in no-network mode, to avoid any network activity detectable by firewalls.

HTTP over Named Pipes: limitations for server-side technlogoies

Summary: PHP+MySQL/SQLite and Python/Perl+SQLite are supported.

Everything will work when HTTP over Named Pipes mode is used when you use PHP, Python and Perl for dynamic web content, and SQLite for data storage. If you use PHP for scripting (i.e. no Python and Perl), MySQL is also supported for data storage.

If you use Python or Perl for scripting, MySQL will still use TCP networking because Python and Perl MySQL drivers do not support accessing MySQL using named pipes.

ASP.NET, ASP and Tomcat are not supported for HTTP over Named Pipes mode because these technologies effectively use separate web server that does not support HTTP over Named Pipes, and "main" web engine just proxies requests between itself and that separate web server.

So, use of PHP and MySQL or SQLite is fully supported in HTTP over Named Pipes mode. But you have to change one or two lines in your code - see here for details.

HTTP over Named Pipes and client-side technlogoies

Summary: everything works just fine, including Flash.

All client-side technologies should work just fine when HTTP over Named Pipes mode is used - JavaScript, Flash, cookies, AJAX, frames, POST/GET requests, redirects, http headers, PATH_INFO and so on. We are not aware of any problem with any client-side technology caused by use of HTTP over Named Pipes mode.

So all JavaScript libraries of any complexity (including jQuery and AJAX-based) work fine when HTTP over Named Pipes mode is used. Also Flash clips work fine too, this means video and audio and banners and everything else will work. ActiveX components do not work because browser that supports HTTP over Named Pipes is based on FireFox and FireFox itself does not support Active X properly.

HTTP over Named Pipes: interoperation with other sites

Summary: everything works like you expect.

When HTTP over Named Pipes mode is used, all URLs pointing to Stunnix Web Server look like normal URLs - like this "http://127.0.0.1:9000/path/to/file.html". The included version of FireFox matches all URLs it's about to load, and if URL refers to 127.0.0.1 and the "pseudo port" associated with Stunnix Web Server for CD-ROM (here, "pseudo port" is 9000), then request is made via Named Pipes. Otherwise, request is made via TCP network protocol.

This means that your web pages and scripts can link to or load resources located in Internet, and it will just work. Beware that first time resource from Internet is accessed by the included browser, either firewall prompt will appear (asking whether to allow browser to access internet) or request will be blocked by firewall silently. So it's better not to assume that internet resources will be accessible (after all, internet connection can be absent too).

HTTP over Named Pipes: necessary changes to your code

Summary: No changes are needed.
No changes are needed to the source code!

HTTP over Named Pipes: how to enable

Summary: one check box needs to be checked in CDBuilder.
To tell Stunnix Web Server to try using HTTP over Named Pipes mode, go to CDBuilder, open Project ⇒ Site settings, and just put check a checkbox with title "Try using HTTP over named pipes instead of TCP on Windows". Do Make PrototypeCopy all files after that to update Prototype of your CD.