Table of Contents
- Introduction
- Installation
- Handling Challenger
- Virtual Servers
- Configuration Examples
- Modules
- Filesystems
- RXML Tags
- Graphics
- Proxy
- Databases
- Miscellaneous Modules
- Security Considerations
- Scripting

  | · Introduction · Pike Modules · Pike Scripts · Pike Tag · CGI · SSI · FastCGI · Servlets

- Frontpage
- Upgrading
- Third Party Extensions
- Portability
- Reporting Bugs
- Appendix

Pike Modules
Pike modules are, strictly speaking, not scripts in the same sense as the other script types dealt with in this chapter. Rather, they are a way of extending the server's general capabilities. Most of Challenger's functions and capabilities are implemented as Pike modules. However, since Pike modules are often a convenient way of doing things that might otherwise have been done with regular scripts, Pike modules belong in this overview.

Pike modules can be used to implement new RXML tags, support new communication protocols, and numerous other things that would be impossible or difficult with other script types. Pike modules are also persistent entities in the server, as opposed to ordinary CGI scripts, which are executed in a single-shot fashion, starting anew each time they are invoked. FastCGI scripts are somewhat persistent, but not realiably so.

From a security viewpoint, Pike modules must be treated with utmost care. Pike modules have access to the whole server. Thus, only trusted users should be able to write their own Pike module, and Pike modules should only be downloaded from reputable web sites. Apart from the security considerations, Pike modules that take a long time executing can also cause performace degradation and other service disruptions, especially if the server isn't running with enough threads.

Challenger is an excellent tool for developing Pike modules. Compile time and run time error messages will be reported, with a Pike backtrace so the problem can be pinpointed. All such error messages will be reported on the Event Log tab and in the debug log. They will also be reported on the web page where the error occured, unless Global Variables/Show the internals is set to No.