FastTrack Programmer's Guide
Introduction
What are the CGI and the server plug-in API?
Conventions used in this book
Chapter 1 Server programming overview
Comparison of server programming tools
Java and java applets
JavaScript
Server plug-in API
Server application programming
CGI (Common Gateway Interface)
Server plug-in API
Java and JavaScript Server APIs
Chapter 2 CGI basics
The CGI request process in detail
The client sends the request
The server creates the CGI process
The server assigns variables and opens data paths
The CGI program sends the response to the client
Security concerns about CGI
Accessing CGI programs through URLs
Embedding information in URLs
Accepting user input from URLs and other sources
HTML form data
Input to an ISINDEX search dialog
ISMAP or imagemaps
Data the server sends to the CGI program
Accessing environment variables
Using Java Applets
Using C or C++
Using Perl
Using the Bourne shell
Using the C shell
Environment variables and their formats
Secure server variable formats
HTTP headers as environment variables
Using standard input to get information
Sending command-line arguments to your CGI program
Sending output from CGI programs
Bypassing the server: nonparsed headers
CGI generic headers
CGI-specific headers
Sample program output
Configuring your server to use CGI programs
Specifying a CGI directory
Activating CGI as a file type for parts of the server
Setting up a default query handler
Customizing server-parsed HTML
Server-parsed HTML commands
Environment variables that affect parsing
Adding signatures (trailers) to files
Chapter 3 Tips for developing CGI programs
A sample CGI shell script
A sample CGI program in Perl
A more detailed Perl example
A sample CGI program as a Java Applet
A sample CGI program in ANSI C
Chapter 4 Server operation
How the server handles client requests
What are server application functions?
Configuring the server
The magnus.conf file
Directive syntax
The obj.conf file
The structure of obj.conf
Required objects for obj.conf
Data in the server: the parameter block
Details for each directive/step
AuthTrans
NameTrans
PathCheck
ObjectType
Service
Initialization functions
Equivalents to CGI Environment Variables
Some new features in version 2.0
Threading
Caching
Software multihoming
Chapter 5 Creating server plug-in functions
What is the server plug-in API?
Writing plug-in functions
The server plug-in API header files
Getting data from the server: the parameter block
Passing parameters to server application functions
Parameter-manipulating functions
Data structures and data access functions
Application function status codes
Reporting errors to the server
Compiling and linking your code
Loading your shared object
Using your plug-in functions
Chapter 6 Server plug-in API function definitions
cinfo_find base/cinfo.h
condvar_init base/crit.h
condvar_notify base/crit.h
condvar_terminate base/crit.h
condvar_wait base/crit.h
crit_enter base/crit.h
crit_exit base/crit.h
crit_init base/crit.h
crit_terminate base/crit.h
daemon_atrestart netsite.h
filebuf_buf2sd base/buffer.h
filebuf_close base/buffer.h
filebuf_getc base/buffer.h
filebuf_open base/buffer.h
filebuf_open_nostat base/buffer.h
FREE netsite.h
func_exec frame/func.h
func_find frame/func.h
log_error frame/log.h
magnus_atrestart netsite.h
MALLOC netsite.h
net_ip2host base/net.h
net_read base/net.h
net_socket base/net.h
net_write base/net.h
netbuf_buf2sd base/buffer.h
netbuf_close base/buffer.h
netbuf_getc base/buffer.h
netbuf_grab base/buffer.h
netbuf_open base/buffer.h
param_create base/pblock.h
param_free base/pblock.h
pblock_copy base/pblock.h
pblock_create base/pblock.h
pblock_dup base/pblock.h
pblock_find base/pblock.h
pblock_findval base/pblock.h
pblock_free base/pblock.h
pblock_nninsert base/pblock.h
pblock_nvinsert base/pblock.h
pblock_pb2env base/pblock.h
pblock_pblock2str base/pblock.h
pblock_pinsert base/pblock.h
pblock_remove base/pblock.h
pblock_str2pblock base/pblock.h
PERM_FREE netsite.h
PERM_MALLOC netsite.h
PERM_STRDUP netsite.h
protocol_dump822 frame/protocol.h
protocol_set_finfo frame/protocol.h
protocol_start_response frame/protocol.h
protocol_status frame/protocol.h
protocol_uri2url frame/protocol.h
protocol_uri2url_dynamic frame/protocol.h
REALLOC netsite.h
request_create frame/req.h
request_free frame/req.h
request_header frame/req.h
request_stat_path frame/req.h
request_translate_uri frame/req.h
sem_grab base/sem.h
sem_init base/sem.h
sem_release base/sem.h
sem_terminate base/sem.h
sem_tgrab base/sem.h
session_create base/session.h
session_free base/session.h
session_maxdns base/session.h
shexp_casecmp base/shexp.h
shexp_cmp base/shexp.h
shexp_match base/shexp.h
shexp_valid base/shexp.h
shmem_alloc base/shmem.h
shmem_free base/shmem.h
STRDUP netsite.h
system_errmsg base/file.h
system_fclose base/file.h
system_flock base/file.h
system_fopenRO base/file.h
system_fopenRW base/file.h
system_fopenWA base/file.h
system_fread base/file.h
system_fwrite base/file.h
system_fwrite_atomic base/file.h
system_gmtime base/file.h
system_localtime base/file.h
system_ulock base/file.h
system_unix2local base/file.h
systhread_current base/systhr.h
systhread_getdata base/systhr.h
systhread_newkey base/systhr.h
systhread_setdata base/systhr.h
systhread_sleep base/systhr.h
systhread_start base/systhr.h
systhread_terminate base/systhr.h
systhread_timerset base/systhr.h
util_can_exec base/util.h
util_chdir2path base/util.h
util_env_create base/util.h
util_env_find base/util.h
util_env_free base/util.h
util_env_replace base/util.h
util_env_str base/util.h
util_getline base/util.h
util_hostname base/util.h
util_is_mozilla base/util.h
util_is_url base/util.h
util_itoa base/util.h
util_later_than base/util.h
util_sh_escape base/util.h
util_snprintf base/util.h
util_sprintf base/util.h
util_strcasecmp base/systems.h
util_strncasecmp base/systems.h
util_uri_escape base/util.h
util_uri_is_evil base/util.h
util_uri_parse base/util.h
util_uri_unescape base/util.h
util_vsnprintf base/util.h
util_vsprintf base/util.h
Chapter 7 Java API
Class netscape.server.applet.HttpApplet
Variables
BAD_REQUEST
boundaryCount
boundaryGen
boundaryStack
FORBIDDEN
formData
NO_RESPONSE
NOT_FOUND
NOT_IMPLEMENTED
NOT_MODIFIED
OK
REDIRECT
SERVER_ERROR
UNAUTHORIZED
Constructor
public HttpApplet()
Methods
getMethod
getURI
getProtocol
getQuery
getPath
setContentType
getURL
returnNormalResponse--one parameter
returnNormalResponse--two parameters
returnFile--two parameters
returnFile--one parameter
returnErrorResponse--three parameters
returnErrorResponse--two parameters
returnMultipartResponse--one parameter
returnMultipartResponse--two parameters
endMultipartResponse
startResponse
setStatus--two parameters
setStatus--one parameter
setFileInfo
translateURI
uri2url
getFormData
getFormField
handleRequest
Class netscape.server.applet.Server
Variables
Methods
getAddress
getListeningAddress
getListeningPort
securityActive
Class netscape.server.applet.ServerApplet
Variables
ABORTED
EXIT
name
NOACTION
PROCEED
responseStarted
socket
Constructor
ServerApplet
Methods
getClientSocket
getClientProperty
getConfigProperty
getHeader
getInputStream
getOutputStream
getRequestProperty
getResponseProperty
getServer
getServerProperty
handleRequest
inform
reportMisconfiguration
reportCatastrophe
reportFailure
reportSecurity
run
setResponseProperty
warn
Class netscape.server.applet.URIUtil
Variables
Methods
isEvil
splitFormData
uriEscape
urlEscape
urlUnescape
Appendix A Server data structures
The Session data structure
The parameter block (pblock) data structure
The pb_entry data structure
The pb_param data structure
The Client parameter block
The Request data structure
The stat data structure
The shared memory structure shmem_s
The netbuf data structure
The filebuffer data structure
The cinfo data structure
The SYS_NETFD data structure
The SYS_FILE data structure
The SEMAPHORE data structure
The sockaddr_in data structure
The CONDVAR data structure
The CRITICAL data structure
The SYS_THREAD data structure
Appendix B Server configuration files
Syntax
Case sensitivity
Separators
Quotes
Spaces
Comments
Line continuation
Directives in magnus.conf
ServerName directive
Port directive
User directive
MaxProcs directive
MinThreads directive
MaxThreads directive
ErrorLog directive
PidLog directive
LoadObjects directive
RootObject directive
Chroot directive
DNS directive
Security directive
ServerKey directive
ServerCert directive
Ciphers directive
Directives in obj.conf
Summaries of the obj.conf directives
Init directive
load-types function
init-clf
flex-init function
init-uhome function
cindex-init function
pool-init function
cache-init function
dns-cache-init function
init-cgi function
AuthTrans Directive
basic-ncsa function
NameTrans directive
pfx2dir function
unix-home function
document-root function
redirect function
mozilla-redirect function
home-page function
PathCheck directive
unix-uri-clean function
find-index function
require-auth function
deny-existence function
find-links function
find-pathinfo function
ObjectType directive
type-by-extension function
image-switch function
type-by-exp function
force-type function
shtml-hacktype function
Service directive
send-file function
send-error function
send-range function
append-trailer function
send-cgi function
query-handler function
imagemap function
index-simple function
index-common function
parse-html function
upload-file function
remove-file function
list-dir function
make-dir function
remove-dir function
rename-file function
key-toosmall function
AddLog directive
common-log function
flex-log function
record-useragent function
Error directive
key-toosmall function
The mime.types file
The admpw file
Index
Legal Page