System and method for an administration server6393477Abstract An administration server system and method which is capable of managing multiple copies or instances of servers includes an administration server; an administration server instance file; an administration server read-only configuration file for storing configuration directives; an administration server read-write configuration file for storing configuration directives; a services table; a rules list; and a worker thread pool. The administration server starts a main administration thread with any override parameters read from the administration server instance file; builds the rules list from configuration files directives; and for all server attributes in the configuration files, sets up any required threads; connects to a socket specified in the configuration or attributes file, or services table; upon receiving a browser request, passes a socket descriptor to a worker thread; reads the browser request and applies the rules list to the browser request and, upon a first match, selectively processes an applicable rule; returns the output to the browser; closes the connection to the socket; and returns the worker thread to the worker thread pool. Claims We claim: Description U.S. patent applications Ser. No. 09/135,149 filed Aug. 17, 1998, entitled "SYSTEM AND METHOD FOR CONFIGURING AND ADMINISTERING MULTIPLE INSTANCES OF WEB SERVERS", and Ser. No. 09/135,253 filed Aug. 17, 1998, entitled "SYSTEM AND METHOD FOR PORTING A MULTITHREADED PROGRAM TO A JOB MODEL", are filed concurrently herewith and assigned to the same assignee. They contain related subject matter incorporated herein by this reference.
TABLE 1
*ADMIN Server
1 // pseudo code for Server 310
2 // error handling is not shown here but is required for
3 // product level implementations
4 START TCP SERVER COMMAND 320 RECEIVED INDICATING START
5 *ADMIN SERVER 310 OR START TCP COMMAND RECEIVED AND
6 AUTOSTART=*YES
7 READ AND PARSE *ADMIN SERVER INSTANCE FILE 318
8 START MAIN *ADMIN THREAD WTTH ANY OVERRIDE PARAMETERS
9 //main thread processing
10
11 SETUP SIGNAL HANDLERS
12 // useful for such things as realizing the end tcp server
13 // command has been issued. This way polling is avoided
14 // for the end command, and the main loop can do real work
15 READ AND PARSE CONFIGURATION FILES 314, 316
16 BUILD RULES LIST
17 // this rules list is what governs the behavior of the
18 // server
19 FOR ALL SERVER ATTRIBUTES IN CONFIGURATION FILE 314,
20 316
21 // server attributes include such things as number of worker
22 // threads code pages for translations, access and error
23 // logging if turned on
24 // additional listener thread 328 if running HTTPS also
25 SETUP APPROPRIATE ERROR, LOGGING, ALARM THREADS
26 SETUP WORKER THREADS 330
27
28 // if all goes well, bind to specified socket and wait
29 // for work
30 // usually 2001 for *ADMIN HTTP
31 // usually 2010 for *ADMIN HTTPs (secure HTTP transactions)
32 CONNECT TO SOCKET SPECIFIED IN CONFIG OR OVERRIDE PARMS
33 OR SERVICES TABLE
34 WAIT IN ACCEPT LOOP FOR BROWSER REQUESTS
35 WHEN REQUEST ARRIVES, PASS THE SOCKET DESCRIPTOR TO A
36 WORKER THREAD 330
37 BACK TO WAIT IN ACCEPT LOOP
38 // a worker thread that is not busy is selected from the
39 // pool 330 of worker threads.
40 now worker thread has the socket descriptor
41
42 READ HTTP REQUEST FROM SOCKET
43 APPLY RULES LIST TO HTTP REOUEST
44 IF A MATCH OCCURS
45 // there may be more than one, but first match wins
46 PROCESS RULE WITH "THIS" HTTP REQUEST
47 // CASE statement as long as number of rules in rules list
48 // rule is applied to path part of URL
49 SELECT RULE
50 CASE: PROTECT
51 DETERMINE PROTECTION SETUP SUB-DIRECTIVES
52 APPLY SUB-DIRECTIVE POLICIES
53 CHECK CREDENTIALS AND AUTHENTICATE USER
54 IF USER IS AUTHENTICATED
55 CONTINUE PROCESSING THROUGH RULES LIST
56 ELSE, SEND BACK AUTHENTICATION FAILURE
57 CASE: PASS
58 LOCATE RESOURCE SPECIFIED IN THE PATH PART OF
59 THE URL, GET READY TO SEND RESOURCE
60
61 CASE: FAIL
62
63 GENERATE FORBIDDEN BY RULE MESSAGE
64 CASE: EXEC
65 LOCATE PROGRAM TO RUN (IN THE URL)
66 PREP ENVIRONMENT BY SETTING UP STDIN,
67 ENVIRONMENT VARIABLES AND STDOUT
68 RUN PROGRAM
69 WHEN PROGRAM RETURNS, DATA IS IN STDOUT
70 CASE: MAP
71
72 FOR MATCHED ITEM IN TEMPLATE FIELD
73 REPLACE MATCHED ITEM WITH REPLACEMENT
74 FIELD
75 CONTINUE PROCESSING THROUGH RULES LIST
76 // end of processing through rules list, resource requested
77 // should be buffered and present, therefore get ready to
78 // send it to the browser
79 // must be HTTP like before returning data to browser
80 // that includes things such as choosing correct MIME types,
81 // counting output bytes, time of day, server response
82 // headers
83 APPLY THE CCRRECT HTTP RESPONSE HEADERS
84 RETURN OUTPUT TO BROWSER
85 CLOSE THIS CONNECTION
86 // note, socket options allow the application to close the
87 // connection without worrying about how much data was sent
88 // (since this is TCP)
89 RETURN THIS THREAD 330 TO WORKER THREAD POOL
90 WAIT FOR MORE WORK
91
92 // end of pseudo code for Server 310
The services table referred to at line 33 is used by many of the components of the IBM AS/400 TCP/IP, and is not shown in the figures. At lines 66-67 reference is made to variables STDIn and STDOUT. These are pathways used by the server to receive or send information from/to the CGI programs, with STDIN to the CGI and STDOUT from the CGI. Referring to Table 2, a sample instance file 318 is set forth. This sample instance file 318 indicates what configuration files 314, 316 are read and processed in step 324 by *ADMIN server 310. There can be other things in this instance file, and such things would be placed here when the "Instance Parameter" form 420 (FIG. 8) has been correctly filled out. The two files indicated here at lines 2 and 3 would be read and parsed by the *ADMIN server 310 in step 322. The other flag shown at line 3, -AutoStartN, indicates that this sample server 310 will not Autostart when its TCP/IP stack is invoked. (However, admin server 310 can be autostarted by changing its instance parameter values.) The -r show which configuration file members are being read by the web server for a particular instance (the read-only before the read-write). Line 4 shows that the instance is not autostarted.
TABLE 2
Instance File 318
1 // Sample of instance file that drives the admin server 310
2
3 -r /QSYS.LIB/QTCP.LIB/QATMHTTPI.FILE/DEFAULT.MBR
4 -r /QSYS.LIB/QUSRSYS.LIB/QATMHTTPA.FILE/ADMIN.MBR
5 -AutoStartN
Referring to Table 3, a sample configuration file is presented for controlling the operation of *ADMIN server 310. In this table, a "#" indicates a comment line, and these are not processed by the server. other lines set forth the directives that get processed into "rules". These rules are then applied on a per request basis to the path port ion of the URL. Following is a description of the functions provided by configuration file 314, including the manner in which to interpret the Enable, Protect, Map, Pass, Exec and AddType commands. DirAccess (Table 3, Line 13) This directive specifies whether the server is to return directory listings when requested. The values on the Welcome and AlwaysWelcome directives determine when a request is interpreted as a request for a directory listing. The default value is Off, which means that the server cannot return directory listings for any directories and subdirectories. If it is desired to control which directories and subdirectories the server can return DirAccess Selective If the value is changed to On, the server will return directory listings. If the value is changed to Selective, the server will return directory listings for any directory that contains a file named wwwbrws object. The contents of the wwwbrws file are not important, the server only checks for its existence. The object is a member name of an AS/400 physical file or a type of object in an integrated file system directory. For case-sensitive file systems such as /QOpenSys, the wwwbrws name is lower-case. Examples DirAccess On DirAccess Selective Enable Line 15 This directive is used to specify which HTTP methods the server is to accept. As many of the HTTP methods may be enabled as needed. For each method the server is to accept, a separate Enable directive is entered followed by the name of the method. Example Enable POST Protection Table 3 Lines 21-31 This directive is used to define a protection setup within the configuration file. The protection setup is given a name and the type of protection is defined using protection subdirectives. Note In the configuration file, Protection directives must be placed before any DefProt.or Protect directives that point to them. The format of the directive is: Protection label-name { subdirective value subdirective value . . . } where: label-name The name to be associated with this protection setup. The name can then be used by subsequent DefProt and Protect directives to point to this protection setup. subdirective value A protection subdirective and its value is placed on each line between the left brace and the right brace. No comment lines may appear between the braces. See "Protection Subdirectives" for descriptions of the protection subdirectives. Example Protection NAME-ME { AuthType Basic ServerID restricted PasswdFile QUSRSYS/WWW/PASSWORD GroupFile /WWW/group.grp GetMask groupname } Protection Subdirectives Following are descriptions of each of the protection subdirectives that can be used in a protection setup. The subdirectives are in alphabetical order. Protection setups are within the configuration file as part of DefProt, Protect, or Protection directives. A Mask, GetMask, or PostMask subdirective must be specified in the protection setup. See "Protection example" and the previous descriptions of the DefProt, Protect, and Protection directives for examples of using protection setups. ACLOverride Specifies that ACL files override protection setups.l. This subdirective is used with a value of On if Access Control List files (ACL) is to override the masks specified in the protection setup. If a directory being protected by the protection setup has an ACL file, the mask subdirectives in the protection setup are ignored. (The mask subdirectives are GetMask, Mask, and PostMask.) See "Using Access Control List (ACL) files" for more information on ACL files. Example ACLOverride On AuthType Specifies authentication type. This subdirective is used to limit access based on user names and passwords. The type of authentication to use when the client sends a password to the server is specified. With basic authentication (AuthType Basic), passwords are sent to the server as plain text. They are encoded, but not encrypted. Only basic authentication is supported. Example AuthType Basic GetMask Specifies the user names, groups, and addresses allowed to get files. This subdirective is used to specify user names, groups, and address templates authorized to make GET requests to a protected directory. The special value all@(*) will allow all requesters access. See "Rules for specifying user names, group names, and address templates". Example GetMask authors, (niceguy,goodie)@96.96.3.1,128.141.*.* GroupFile Specifies the location of the associated group file. This subdirective is used to specify the path and file name of the server group file that this protection setup is to use. The groups defined within the server group file can then be used by: 1. Any mask subdirectives that are part of the protection setup. (The mask subdirectives are GetMask, Mask, and PostMask.) 2. Any ACL file on a directory that is protected by the protection setup. See "Using server group files" more information about server group files. Example GroupFile /docs/etc/WWW/restrict.grp Mask Specifies the user names, groups, and addresses allowed to make HTTP requests. This subdirective is used to specify user names, groups, and address templates authorized to make HTTP requests not covered by other mask subdirectives. The special value all@(*) will allow all requesters access. See "Rules for specifying user names, group names, and address templates". See "Methods--Set method acceptance" for descriptions of the HTTP methods supported by the server. Note Masks are case sensitive. The following is an example of how Mask protection is issued on a user ID: Example MASK WEBADM,webadm PasswdFile Specifies the location of the associated validation list. This subdirective is used when limiting access based on user names and passwords. The PasswdFile directive may be issued by one of the following methods: 1. Specify the path name of the validation list that this protection setup is to use: libname/validation_list_name 2. Specify %%SYSTEM%% to indicate that the AS/400 user profiles are to be used to validate user names and passwords. Example PasswdFile %%SYSTEM%% PasswdFile QUSRSYS/HEROES In the above example, note that %%SYSTEM%% lets the server know that password verification is done with an AS/400 user profile. PostMask Specifies the user names, groups, and addresses allowed to post files. For a secure server, this subdirective is used to specify users, groups, and address templates authorized to make POST requests to a protected directory. The special value all@(*) will allow all requesters access. See "Rules for specifying user names, group names, and address templates". Example PostMask Anyone@9.136.* ServerID Specifies a name to associate with the validation list. This subdirective is used when limiting access based on user names and passwords. A name to associate with the validation list being used is specified. The name does not need to be a real machine name. The name is used as an identifier to the requester. Since different protection setups can use different validation lists, having a name associated with the protection setup can help the client decide which password to send. This name may be displayed when prompting for a user name and password. Example ServerID restricted UserID Specifies the Access Control user ID that the server should use. This subdirective is used to specify the AS/400 user profile that the server switches to while completing the HTTP transaction. %%SYSTEM%% is specified to use the profile of the server, default QTMHHTTP. %%CLIENT%% is specified to use the user profile that was supplied when challenged for user ID and password. The values specified here (on the UserId Protection subdirective) override the values specified on the UserId directive. Example UserID WWW Protect Table 3 Line 37 This directive is used to activate protection setup rules for requests that match a template. For protection to work property, DefProt and Protect directives must be placed before any Pass or Exec directives in the configuration file. The format of the directive is different depending upon whether it is to point to a label containing the protection subdirectives or to include the protection subdirectives as part of the Protect directive. 1. To point to a label containing the protection subdirectives, the format is as follows: Protect request-template [label [FOR IP-address-template]]] 2. To include the protection subdirectives as part of the Protect directive, the format is as follows: Protect request-template [IP-address-template]] { subdirective value subdirective value . . . } where: request-template A template for requests for which protection is to be activated. The server compares incoming client requests to the template and activates protection if there is a match. label This parameter is used to identify the protection setup containing the protection subdirectives to activate for requests that match request-template. This parameter is optional. If it is omitted, the protection setup is defined by the most recent DefProt directive that contains a matching template. Protection setup is defined with protection subdirectives. See "Protection Subdirectives" for descriptions of the protection subdirectives. A protection setup label name that matches a name defined earlier on a Protection directive. The Protection directive contains the protection subdirectives. subdirective value A parameter used to include the protection subdirectives as part of the Protect directive. The left brace character must be the last character on the same line as the Protect directive. Each subdirective follows on its own line. The right brace character must be on its own line following the last subdirective line. No comment lines may be placed between the braces. See "Protection Subdirectives" for descriptions of the protection subdirectives. FOR IP-address-template If the server has multiple connections, this parameter can be used to specify an address template. The server uses the directive only for requests that come to the server on a connection with an address matching the template. It is the address of the server's connection that is compared to the template, not the address of the requesting client. A complete IP address may be specified (for example, 204.146.167.72) Or, an asterisk can be used as a wildcard character to specify a template (for example, 9.99.* ). This parameter is optional. Without this parameter, the server uses the directive for all requests regardless of the connection the requests come in on. To use this parameter, the label or subdirective value parameters must also be used. Examples
UserID ANYBODY
Protection DEF-PROT
UserID BUSYBODY
AuthType Basic
ServerID restricted
PasswdFile QUSRSYS1/WWW/restrict
GroupFile /docs/WWW/restrict.grp
GetMask authors
}
Protect /secret/business/* DEF-PROT
Protect /topsecret/* {
AuthType Basic
ServerID restricted
PasswdFile QUSRSYS/TOPBRASS
GroupFile /docs/WWW/restrict.grp
GetMask topbrass
}
Pass /secret/scoop/* /WWW/restricted/*
Pass /secret/business/* /WWW/confidential/*
Pass /topsecret/* /WWW/topsecret/*
In the above example, the server would activate protection as follows: 1. Since the Protect directive does not specify a protection setup, the protection setup on the previously matching DefProt directive is used. Also, the server changes to the user profile of webname as defined on the DefProt directive. 2. Requests beginning with /secret/business/ activate protection. The protection setup is defined on the Protection directive that has a label of DEF-PROT. Also, the server changes to the user profile of busybody as defined in the DEF-PROT protection setup. 3. Requests beginning with /topsecret/ activate protection. The protection setup is included directly on the Protect directive. The user profile defaults to ANYBODY. (ANYBODY comes from the UserId directive at the beginning of the example.) Note: The user profile ANYBODY must exist and the server much have authority to use it. Examples
Protect /secret/* CustomerA-PROT webname
204.146.167.72
Protect /secret/* CustomerB-PROT webname 9.67.*
Protect /topsecret/* webname 204.146.167.72 {
AuthType Basic
ServerID restricted
PasswdFile QUSRSYS/WWW/CUSTOMERA
GroupFile /docs/WWW/customer-A.grp
GetMask A-brass
}
Protect /topsecret/* webname 9.67.*
AuthType Basic
ServerID restricted
PasswdFile QUSRSYS/WWW/CUSTOMERB
GroupFile /docs/WWW/customer-B.grp
GetMask B-brass
}
The above examples use the optional IP address template parameter. If the server receives requests that begin with /secret/ or /topsecret/, it activates a different protection setup for the request based on the IP address of the connection the request comes in on. For /secret/ requests coming. in on 204.146.167.72, the server activates the protection setup defined on a Protection directive with a label of CustomerA-PROT. For /topsecret/ requests coming in on 204.146.167.72, the server activates the protection setup defined inline on the first Protect directive for /topsecret/. For /secret/ requests coming in on any connection with an address beginning 9.67, the server activates the protection setup defined on a Protection directive with a label of CustomerB-PROT. For /topsecret/ requests coming in on any connection with an address beginning 9.67, the server activates the protection setup defined inline on the second Protect directive for /topsecret/. Map Table 3 Line 49 This directive is used to specify a template for requests change to a new request string. After the server changes the request, it takes the new request string and compares it to the request templates on subsequent directives. The format of the directive is: Map request-template new-request [IP-address-template] where: request-template A template for requests that the server is to change and then continue comparing the new request string to other templates. An asterisk may be used as a wildcard in the template. new-request The new request string the server is to continue to compare to the request templates on subsequent directives. new-request may contain a wildcard if the request-template has one. The part of the request that matches the request-template wildcard is inserted in place of the wildcard in new-request. IP-address-template If the server has multiple connections, this parameter can be used to specify an address template. The server uses the directive only for requests that come to the server on a connection with an address matching the template. It is the address of the server's connection that is compared to the template, not the address of the requesting client. A complete IP address may be specified (for example, 204.146.167.72). Or, an asterisk may be used as a wildcard character and a template specified (for example, 9.99.* ). This parameter is optional. Without this parameter, the server uses the directive for all requests regardless of the connection the requests come in on. Examples Example for a Map request with /cgi-bin/ as a PGM object: Map /cgi-bin/* /cgi-bin/*.pgm Exec /cgi-bin/*.pgm /qsys.lib/cgilib.lib/* In the above example, the server would take any requests starting with /cgi-bin/ and change the /cgi-bin/ portion of the request to /cgi-bin/*.pgm. Anything that followed /cgi-bin/ on the original request would also be included in the new request string. So /cgi-bin/whatsup/ would change to /cgi-bin/whatsup.pgm. The Exec directive would change the /cgi-bin/whatsup.pgm to /qsys.lib/cgilib.lib/*. This change allows the Internet Connection Secure Server to execute the program cgipgm in library cgilib. The server would take the new request string and continue to compare it to request templates on subsequent directives.
Map /stuff/* /customerA/good/stuff/* 204.146.167.72
Map /stuff/* /customerB/good/stuff/* 9.99*
The above examples use the optional IP address template parameter. If the server receives requests that begin with /stuff/, it changes the request to a different request string based on the IP address of the connection the request comes in on. For requests coming in on 204.146.167.72 the server changes the /stuff/ portion of the request to /customerA/good/stuff/. For requests coming in on any connection with an address beginning 9.99, the server changes the /stuff/ portion of the request to /customerB/good/stuff/. Pass Table 3 Line 76 This directive is used to specify a template for requests to be accepted and responded to with a document from the server. Once a request matches a template on a Pass directive, the request is not compared to request templates on any subsequent directives. The format of the directive is: Pass request-template [file-path IP-address-template]] where: request-template A template for requests the server is to accept and respond to with a document from the server. An asterisk can be used as a wildcard in the template. file-path The path to the file that contains the document the server is to return. file-path may contain a wildcard if the request-template has one. The part of the request that matches the request-template wildcard is inserted in place of the wildcard in file-path. This parameter is optional. If a path is not specified, the request itself is used as the path. IP-address-template If the server has multiple connections, this parameter can be used to specify an address template. The server uses the directive only for requests that come to the server on a connection with an address matching the template. It is the address of the server's connection that is compared to the template, not the address of the requesting client. A complete IP address may be specified (for example, 204.146.167.72). Or, an asterisk can be used as a wildcard character and a template specified (for example, 9.99.* ). This parameter is optional. To use this parameter, the file-path parameter must also be used. Without the IP-address-template parameter, the server uses the directive for all requests regardless of the connection the requests come in on. Examples
QDLS: Pass /doc/* /QDLS/WEBTEST/*.HTM
Root: Pass /root/* /WEBSAMP/*.html
QOpenSys: Pass /x/* /QOpenSys/WEBSAMP/*.html
QSYS: Pass /lib/*
/QSYS.LIB/WEBSAMP.LIB/HTMLDOC.FILE/*.MBR
Specifying Pass with /* as a template and no replacement string allows the server to serve any AS/400 file that QTMHHTTP user profile has read access to, with a request that specifies the AS/400 real document name; for example, /QSYS.LIB/PERSONAL.LIB/DATA.FILE/PAY.MBR. A Pass directive with /* as a template can be used to refer to a replacement string that would serve an AS/400 document; for example, Pass /* /www/webdata/web.html. This would be used after all other Map, Pass, Exec, and Redirect directives to prevent anyone from getting an Error 403 "Forbidden by rule". In the above example for the QDLS file system, the server would respond to a request starting /doc/ with a document from /QDLS/WEBTEST/. Anything that followed /doc/ would also be used to identify the document. So the server would respond to the request /doc/test/test1/doctest.html with the document in file /QDLS/WEBTEST/test/test1/doctest.html. Pass /gooddoc/* In the above example, the server would respond to a request starting with /gooddoc/ with a document from /gooddoc. So the server would respond to the request /gooddoc/volume1/issue2/newsletter4. html with the document in file /gooddoc/volume1/issue2/newsletter4.html.
Pass /parts/* /customerA/catalog/* 204.146.167.72
Pass /parts/* /customerB/catalog/* 9.99.*
The above examples use the optional IP address template parameter. If the server receives requests that begin with /parts/, it returns a file from a different directory based on the IP address of the connection on which the request is received. For requests coming in on 204.146.167.72 the server returns a file from /customerA/catalog/. For requests coming in on any connection with an address beginning 9.99, the server returns a file from /customerB/catalog/. Exec Table 3 Line 126 This directive is used to specify a template for requests to be accept and responded to by running a CGI program. Once a request matches a template on an Exec directive, the request is not compared to request templates on any subsequent directives. The format of the directive is: Exec request-template program-path [IP-address-template] where: request-template A template for requests that server is to accept and respond to by running a CGI program. An asterisk must be used as a wildcard in the program-path. The part of the request that matches the request-template wildcard must begin with the name of the file that contains the CGI program. The request-template is case sensitive, but the replacement string is only case sensitive when it refers to a case sensitive file system. Example Map /cgi-bin/* /cgi-bin/*.pgm Exec /cgi-bin/* /qsys.lib/cgilib.lib/* This example substitutes the value after /cgi-bin/ as the name of the program. The Exec directive identifies the library where the CGI program specified in /cgi-bin/ is stored. The Exec directive changes the directive to the cgilib library. program-path The path to the file that contains the CGI program that the server is to execute for the request. CGI programs can be run from the QSYS file system, only. program-path must also contain a wildcard. The wildcard is replaced with the name of the file that contains the CGI program. The request can also contain additional data that is passed to the CGI program in the PATH_INFO environment variable. The additional data follows the first slash character that comes after the CGI program file name on the request. The data is passed according to CGI specifications. IP-address-template If the server has multiple connections, this parameter is used to specify an address template. The server uses the directive only for requests that come to the server on a connection with an address matching the template. It is the address of the server's connection that is compared to the template, not the address of the requesting client. A complete IP address may be specified (for example, 204.146.167.72). Or, an asterisk may be used as a wildcard character and a template specified (for example, 9.99.*). This parameter is optional. Without this parameter, the server uses the directive for all requests regardless of the connection the requests come in on. Example Map /cgi-bin/* /cgi-bin/*.pgm Exec /cgi-bin/* /QSYS.LIB/CGIBIN.LIB/* In the above example, the server expects to find the CGI program in library CGIBIN. In this case, the request for http://hostname/cgi-bin/mycgi causes the server to attempt to run the program named MYCGI, in library CGIBIN. The Map directive adds the .pgm to the program name so .pgm does not have to be specified on the URL request. The request arrives at the server as:
/cgi-bin/mycgi - The request arrives.
/cgi-bin/mycgi.pgm - The Map directive adds the .pgm.
/QSYS.LIB/CGIBIN.LIB/* - The request changes to identify
the path to the program
(As/400 library.)
AddType Table 3 Line 132 This directive is used to bind files with a particular extension to a MIME type/subtype. Multiple occurrences of this directive may be used in the configuration file. The format of the directive is: AddType .extension type/subtype encoding [quality] where: .extension The file extension pattern. The wildcard character (*) may be used only on the following two special extension patterns: *.* Matches all file names that contain a dot character (.) and have not been matched by other rules * Matches all file names that do not contain a dot character (.) and have not been matched by other rules type/subtype The MIME type and subtype to bind to files that match the corresponding extension pattern. encoding The MIME content encoding to which the data has been converted: 7 bit Data is all represented as short (less than 1000 characters) lines of US-ASCII data. Source code or plain text files usually fall into this category. Exceptions would be files containing line-drawing characters or accented characters. 8 bit Data is represented as short lines, but may contain characters. with the high bit set (for example, line-drawing characters or accented characters). PostScript files and text files from European sites usually fall into this category. binary This encoding can be used for all data types. Data may contain not only non-ASCII characters, but also long (greater than 1000 characters) lines. Almost every file of type image/*, audio/*, and video/* falls into this category, as do binary data files of type application/*. quality An optional indicator of relative value (on a scale of 0.0 to 1.0) for the content type. The quality value is used if multiple representations of a file are matched by a request. The server selects the file that is associated with the highest quality value. For example, if the file internet.ps is requested, and the server has the following AddType directives:
AddType .ps application/postscript 8bit 1.0
AddType *.* application/binary binary 0.3
the server would use the application/postscript line because its quality number is higher. Example AddType .bin application/octet-stream binary 0.8
TABLE 3
Configuration File 314
4 # start sample of configuration file that drives #ADMIN #
5 # server 310 #
6 # * * * * * * * * * * * * * * * * * * * * * * * * * * * #
7 # #
8 # HTTP Administration server configuration #
9 # #
10 # * * * * * * * * * * * * * * * * * * * * * * * * * * * #
11 # #
12 # HostName your.full.host.name #
13 # The default ports for the adminstration server are set #
14 # in the services table. #
15 # #
16 DirAccess Off
17 #
18 # ENABLE start
19 Enable POST
20 Enable GET
21 Enable HEAD
22 # ENABLE end #
23 # #
24 # PROTECTION start - Force authentication and treat as #
25 # AS/400 *USRPRF
26 Protection IBMDETP {
27 AuthType Basic
28 ServerID OS400ADM
29 Userid %%CLIENT%%
30 PasswdFile %%SYSTEM%%
31 GetMask All
32 PostMask All
33 }
34 # PROTECTION end #
35 # #
36 # PROTECT start #
37 Protect /QIBM/Firewall/* IBMDFTP
38 Protect /QIBM/NetC/* IBMDFTP
39 Protect / IBMDFTP
40 Protect /AS400TASKS IBMDFTP
41 Protect /QIBM/OS400/* IBMDFTP
42 Protect /QIBM/ICS/HTML/* IBMDFTP
43 Protect /QSYS.LIB/QSYSCGI.LIB/* IBMDFTP
44 Protect /QSYS.LIB/QTCPCGI.LIB/* IBMDFTP
45 Protect /QIBM/ICSS/Cert/* IBMDFTP
46 # PROTECT end #
47 # #
48 # MAP start #
49 Map /QIBM/Firewall/Admin/*
50 /QSYS.LIB/QSYSCGI.LIB/DB2WWW.PGM/QIBM
51 /ProdData/HTTP/Protect/Firewall/Macro/*
52 Map /QIBM/NetC/Admin/QSYS.LIB/QSYSCGI.LIB
53 /WEBCONFIG.PGM/loadmlt
54 Map /QIBM/NetC/Admin/webconfig/*
55 /QSYS.LIB/QSYSCGI.LIB/WEBCONFIG.PGM/*
56 Map /QIBM/NetworkStation/Admin/QYTC/QYTCMAIN.PGM
57 Map /QIBM/ICSS/Cert/Admin/*
58 /QSYS.LIB/QSYSCGI.LIB/DB2WWW.PGM
59 /QIBM/ProdData/HTTP/Protect/ICSS/Cert/Macro/*
60 Map /
61 /QSYS.LIB/QSYSCGI.LIB/DB2WWW.PGM
62 /QIBM/ProdData/HTTP/Protect
63 /OS400/Macro/qyunmain.ndm/main0
64 Map /AS400TASKS/QSYS.LIB/QSYSCGI.LIB/DB2WWW.PGM
65 /QIBM/ProdData/HTTP/Protect/OS400/Macro
66 /qyunmain.ndm/main0
67 Map /QIBM/ICS/HTML/MRI2924/rzag1mst.html
68 /QSYS.LIB/QTCPCGI.LIB/QTMHFMIN.PGM/QUICKBGN
69 Map /QIBM/ICS/HTML/MRI2924/sample.html
70 /QSYS.LIB/QTCPCGI.LIB/QTMHFMIN.PGM/SAMPLE
71 Map /QIBM/ICS/HTML/MRI2924/icswgmst.html
72 /QSYS.LJB/QTCPCGI.LIB/QTMHFMIN.PGM/WEBMSTGD
73 # MAP end #
74 # #
75 # PASS start #
76 Pass /QIBM/OS400/*
77 /QIBM/ProdData/HTTP/Protect/OS400/HTML/*
78 Pass /QIBM/Firewall/*
79 /QIBM/ProdData/HTTP/Protect/Firewall/HTML/*
80 Pass /QIBM/NetC/*
81 /QIBM/ProdData/HTTP/Protect/NetC/*
82 Pass /QIBM/NetworkStation/*
83 /QIBM/ProdData/HTTP/Protect/Networkstation/*
84 #
85 # Pass statements for misplaced GIF files
86 #
87 Pass /QIBM/ICS/HTML/MRI*/docmast.*
88 /QTBM/ProdData/HTTP/Protect/TC1/ICSS
89 /HTML/ICONS/docmast.gif
90 Pass /QIBM/ICS/HTML/MRI*/ics10s03.*
91 /QIBM/ProdData/HTTP/Protect/TC1/ICSS
92 /HTML/ICONS/ics10s03.gif
93 Pass /QIBM/ICS/HTML/MRI*/ics10s04.*
94 /QIBM/ProdData/HTTP/Protect/TC1/ICSS
95 /HTML/ICONS/ics10s04.gif
96 Pass /QIBM/ICS/HTML/MRI*/ics10s05.*
97 /QIBM/ProdData/HTTP/Protect/TC1/ICSS
98 /HTML/ICONS/ics10s05.gif
99 Pass /QIBM/ICS/HTML/MRI*/ics.10s06.*
100 /QIBM/ProdData/HTTP/Protect/TC1/ICSS
101 /HTML/ICONS/ics10s06.gif
102 Pass /QIBM/ICS/HTML/MRI*/ics10s07.*
103 /QIBM/ProdData/HTTP/Protect/TC1/ICSS
104 /HTML/ICONS/ics10s07.gif
105 Pass /QIBM/ICS/HTML/MRI*/ics10s08.*
106 /QIBM/ProdData/HTTP/Protect/TC1/ICSS
107 /HTML/ICONS/ics10s08.gif
108 Pass /QIBM/ICS/HTML/MRI*/ics10s14.*
109 /QIBM/ProdData/HTTP/Protect/TC1/ICSS
110 /HTML/ICONS/ics10s14.gif
111 Pass /QIBM/ICS/HTML/MRI*/ICFICON.*
112 /QIBM/ProdData/HTTP/Protect/TC1/ICSS
113 /HTML/ICONS/icficon.gif
114 #
115 #
116 Pass /QIBM/ICS/HTML/*
117 /QIBM/ProdData/HTTP/Protect/TC1/ICSS/HTML/*
118 Pass /QIBM/ProdData/HTTP/Public/*
119 Pass /QIBM/ICSS/Cert/Download/*
120 /QIBM/UserData/ICSS/Cert/Download/*
121 Pass /QIBM/ICSS/Cert/*
122 /QIBM/ProdData/HTTP/Protect/ICSS/Cert/HTML/*
123 # PASS end #
124 # #
125 # EXEC start #
126 Exec /QSYS.LIB/QSYSCGI.LIB/*
127 Exec /QSYS.LIB/QTCPCGI.LIB/*
128 Exec /QYTC/* /QSYS.LIB/QYTC.LIB/*
129 # EXEC end #
130 # #
131 # AddType start #
132 AddType .cacrt application/x-x509-ca-cert 7bit 1.0
133 AddType .usrcrt application/x-x509-user-cert 7bit 1.0
134 AddType .CACRT application/x-x509-ca-cert 7bit 1.0
135 AddType .USRCRT application/x-x509-user-cert 7bit 1.0
136 # AddType end #
137 # * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
138 # end Sample of configuration file that drives the admin
139 # server
Referring to FIG. 6, the hierarchy of web pages for *ADMIN server 310 is set forth. Tasks page 334 is the home page for *ADMIN server 310, and provides links to first page 336 of ICS configuration and administration, first page 338 of DCM configuration and administration, and first page 340 of firewall configuration and administration. Each of pages 336, 338 and 340 provide links to additional pages 342, 344 and 346, respectively. Referring to FIG. 7, a specific example 350 of task page 334 is shown. Task page 334 includes buttons for accessing additional pages, including button 352 which when activated will bring up an Internet connection server for configuring an HTTP server and SSL; button 354 which when activated will bring up a page for setting up and monitoring an Internet firewall; button 356 which when activated will bring up a page for configuring a net commerce server; and button 358 which when activated will bring up a page for creating, distributing and managing digital certificates. The purpose of tasks page 350 is to provide a single URL or collection point for all those applications or system components that use the web browser for configuration and administration. As shown here, four applications 352, 354, 356 and 358 appear on tasks page 350. Referring to Table 4, an HTML representation of a specific example of an AS/400 TASKS page 350 is set forth.
TABLE 4
Tasks Page 150 (HTML)
1 <HTML>
2 <HEAD>
3 <TITLE>AS/400 Tasks</TITLE>
4 <P>
5 <SCRIPT LANGUAGE="JavaScript">
6 <!--
7 function showHelpFunction( ) {
8 window.open("/QSYS.LIB/QSYSCGI.LIB/DB2WWW.PGM/
QIBM/ProdData/
9 HTTP/Protect/OS400/Macro/qyunmain.ndm/help0","",
10 "width=600,height=400,menubar=yes,scrollbars=yes,resizable=y
11 es,status")
12 //-->
13 </SCRIPT>
14 </HEAD>
15 <BODY BGCOLOR="#FFFFFF">
16 <CENTER>
17 <TABLE WIDTH=80%>
18 <TR>
19 <TD>
20 <FONT SIZE=5>
21 <STRONG>
22 <IMG SRC="/QIBM/QS400/Icons/ibmlogo.gif" ALIGN=LEFT
23 ALT="IBM">
24 </STRONG>
25 </FONT>
26 </td>
27 <TD rowspan=2>
28 <CENTER>
29 <FONT SIZE=6>
30 <STRONG>AS/400 Tasks
31 </STRONG>
32 </FONT>
33 </CENTER>
34 </TD>
35 <TD ALIGN=CENTER>
36 <IMG SRC="/QIBM/OS400/Icons/as400.gif" ALT="">
37 </TD>
38 </TR>
39 <TR>
40 <td>
41 <FONT Size=1>(C) IBM Corporation 1997
42 </FONT>
43 </TD>
44 <td>
45 <center>
46 <FoNT Size=2>RS008.ENDICOTT.IBM.COM
47 </FONT>
48 </center>
49 </td>
50 </TR>
51 <TR>
52 <TD colspan=3>
53 <HR size=1>
54 </td>
55 </TR>
56 <TR>
57 <td colspan=3>
58 <p>
59 <BR>
60
61 <CENTER>
62 <TABLE>
63 <TR>
64 <TD>
65 <A HREF="/QSYS.LTB/QTCPCGI.LIB/QTMHICFP.PGM">
66 <IMG SRC="/QIBM/ICS/HTML/ICONS/anchgrap.gif"
border="0"
67 ALT="* ">
68 </A>
69 </TD>
70 <TD>
71 <A HREF="/QSYS.LIB/QTCPCGI.LIB/QTMHICFP.PGM">
72 <STRONG>Internet Connection Server for AS/400
73 </STRONG>
74 </A>
75 <BR>
76 <FONT SIZE=2>Configure the AS/400 HTTP Server and SSL
77 </FONT>
78 </TD>
79 </TR>
80 <TR>
81 <TD>
82 <A HREF="/QIBM/Firewall/Admin/qisafwl.ndm/main0">
83 <IMG SRC="/QIBM/Firewall/Icons/qisafwl.gif" border="0"
84 ALT="*">
85 </A>
86 </TD>
87 <TD>
88 <A HREF="/QIBM/Firewall/Admin/qisafwl.ndm/main0">
89 <STRONG>IBM Firewall for AS/400
90 </STRONG>
91 </A>
92 <BR>
93 <FONT SIZE=2>Set up and monitor an Internet Firewall
94 </FONT>
95 </TD>
96 </TR>
97 <TR>
98 <TD>
99 <A HREF="/QIBM/NetC/Admin">
100 <IMG SRC="/QIBM/NetC/Server/Icons/netcomm.gif" border="0"
101 ALT="*">
102 </A>
103 </TD>
104 <TD>
105 <A HREF="/QIBM/NetC/Admin">
106 <STRONG>IBM Net.Commerce for AS/400
107 </STRONG>
108 </A>
109 <BR>
110 <FONT SIZE=2>Configure the Net.Commerce Server
111 </FONT>
112 </TD>
113 </TR>
114 <TR>
115 <TD>
116 <A HREF="/QIBM/ICSS/Cert/Admin/qycucml.ndm/main0">
117 <IMG SRC="/QIBM/ICSS/Cert/Icons/qycucml.gif" border="0"
118 ALT="* ">
119 </A>
120 </TD>
121 <TD>
122 <A HREF="/QIBM/ICSS/Cert/Admin/qycucml.ndm/main0"
123 <STRONG>Digital Certificate Manager
124 </STRONG>
125 </A>
126 <BR>
127 <FONT SIZE=2>Create, distribute, and manage Digital
128 Certificates
129 </FONT>
130 </TD>
131 </TR>
132 </TABLE>
133 </CENTER>
124 <P><BR>
135 </td>
136 </TR>
137 <TR>
138 <td>
139 <A
140 href="http://www.as400.ibm.com/anchor/MRI2924/
anchhome.htm">
141 <font size="-1">Related task information
142 </font>
143 </a>
144 </td>
145 <td>
146 </td>
147 <td>
148 <center>
149 <a href="Javascript:showHelpFunction () ">
150 <img src="/QIBM/OS400/Icons/help.gif" border="0" alt="">
151 <BR>Help
152 </a>
153 <BR>
154 <font size="-2">(Requires JavaScript)
155 </font>
156 </center>
157 </td>
158 </TR>
159 </TABLE>
160 </center>
161 </BODY>
162 </HTML>
Referring to FIG. 8, a sample representation of first page 360 of ICS configuration and administration 336 is shown. This is brought up at browser 304 by selecting the Internet Connection Server for AS/400 link 352 on tasks page 350. Internet connection secure server 360 includes buttons 362 for selecting configuration and administration, 364 for selecting a sample home page, 366 for selecting Internet connection family web site, and 368 for selecting As/400 tasks. Referring to Table 5, an HTML representation for page 360 is set forth. This first page 360 is also referred to as the front page. Tables 5-9 are created by the CGI scripts.
TABLE 5
Front Page (HTML)
1 ##Sample HTML representation of First Page of ICS
2 ##configuration and Administration
3 <html>
4 <head>
5 <title>Internet Connection Secure Server for
AS/400</title>
6
7 </head>
8 <frameset COLS="25,75">
9 <frame SRC="/QIBM/ICS/HTML/MRI2924/ICSNAV.HTML"
10 NAME="ICSNavFrame">
11 <frameset ROWS="78, 22">
12 <frame SRC="/QIBM/ICS/HTML/MRI2924/ICSSLOGO.HTML"
13 NAME="ICSLogoFrame">
14 <frame SRC="/QIBM/ICS/HTML/MRI2924/ICSBUTN.HTML"
15 NAME="ICSButtonsFrame">
16 </frameset>
17 </frameset>
18 <form NAME="icsframe" ACTION="" METHOD="POST">
19 <center>
20 </form>
21 </center>
22 </body>
23 </html>
Referring to FIG. 9, a representation of link configuration and administration page 370 is illustrated. This is a specific example of a page selected by choosing configuration and administration button 362 from page 360 (FIG. 5). This page 370 may be used to add a new ICS server instance, or manage an existing one. To add a new server instance, an instance name is entered in field 386 and add button 388 activated. To manage an existing server instance, the server is chosen by activating ADMIN radio button 372 or DEFAULT radio button 374, and the action then selected and initiated by activating change button 376, delete button 378, start button 380, stop button 382, or restart button 384. The Delete, Start, Stop and Restart functions perform that action and indicate back the results. Selecting change button 376 brings up panel 400 (FIG. 10). The global attribute values may be changed by selecting field 390. Referring to Table 6, the HTML code used to generate page 370 is set forth.
TABLE 6
General Configuration and Administration (HTML)
1 // Sample HTML representation of "Configuration and
2 // Administration"
3 <html>
4 <head>
5 <title>General Configuration and Administration</title>
6 </head>
7 <img src="/QIBM/ICS/HTML/ICONS/skycfg2.gif" align="middle"
8 alt="">
9 <strong>Configuration and Administration
10 </strong>
11 <p><hr>
12 <body>
13 <br>
14 <hl>General Configuration and Administration</hl>
15 <hr>Choose an existing server instance and an action to
16 perform on it.
17 <br>
18 <form ACTION="/QSYS.LIB/QTCPCGI.LIB/QTMHFMOU.PGM/instact"
19 METHOD="POST">
20 <INPUT TYPE=RADIO NAME="INSTANCE" VALUE="ADMIN"> ADMIN
21 <BR>
22 <INPUT TYPE=RADIO NAME="INSTANCE" VALUE="DEFAULT">DEFAULT
23 <BR>
24 <input type="submit" name="pushbutton" value="Change">
25 <input type="submit" name="pushbutton" value="Delete">
26 <input type="submit" name="pushbutton" value="Start">
27 <input type="submit" name="pushbutton" value="Stop">
28 <input type="submit" name="pushbutton" value="Restart">
29 </form>
30 <hr>To generate a new server instance, specify an instance
31 name and select the "Add" button..
32 <br>
33 <form ACTION="/QSYS.LIB/QTCPCGI.LIB/QTMHFMOU.PGM/instact"
34 METHOD="POST">
35 Instance name <input TYPE="text" NAME="instance" SIZE=10
36 MAXLENGTH=10> <input type="submit" name="pushbutton"
37 value="Add">
38 </form>
39 <hr>Change the
40 <aHREF="/QSYS.LIB/QTCPCGI.LIB/QTMHFMIN.PGM/glblattr">
41 Global Attribute Values</a>.
42 <pre>
43 <hr>
44 <a href="/QSYS.LIB/QTCPCGI.LTB/QTMHICFP.PGM"><img
45 align=middle src="/QIBM/ICS/HTML/ICONS/go2first.gif"
46 alt="Front Page .vertline. "></a> <a
47 href="/QIBM/ICS/HTML/MRI2924/HLPAS4IM.HTML"><img
48 align=middle src="/QIBM/ICS/HTML/ICONS/skyhelp.gif"
49 alt="Help"></a>
50 </pre>
51 </body>
52 </html>
Referring to FIG. 10, a sample representation page 400, the link "CHANGE", displayed in response to activating change button 376 in panel 370, is shown. In this example, on page 370 (FIG. 9), server instance "TEAM42" would have been previously created added through instance name field 386 and button 388. Returning to page 370, it would then show up in the list of instances, and would be selected for change by activating a button similar to default radio button 374 followed by change button 376 to get to page 400. Server instance page 400 allows specification of the associated configuration file 314 used by this server instance. Radio buttons 406, 408 and 410 are selected to use an existing configuration 402, to create a new configuration or associate a different configuration with this instance, respectively. There are also links 416 and 418 to configuration and administration forms 460 (FIG. 12), and instance parameters forms 420 (FIG. 11), respectively. Referring to Table 7, the HTML for generating panel 400 responsive to link CHANGE 376 is set forth.
TABLE 7
Link CHANGE (HTML)
1 // Sample HTML representation of link "CHANGE"
2 <html>
3 <head>
4 <title>Server Instance "DEFAULT "</title>
5 </head>
6 <img src="/QIBM/ICS/HTML/ICONS/skycfg2.gif" align="middle"
7 alt=""> <strong>Configuration and
Administration</strong>
8 <p><hr>
9 <body>
10 <br>
11 <hl>Server Instance "TEAM42 "</h1>
12 <hr>
13 <form ACTION="/QSYS.LIB/QTCPCGI.LIB/QTMHFMOU.PGN/assccfg"
14 METHOD="POST">
15 <h2>Associated Configuration</h2>
16 This server instance uses the configuration named
17 <strong>CONFIG</strong>. To use a different one,
18 you choose the name of an existing configuration, specify
19 the name of a new configuration, or do both. Then, choose
20 the action you want to take.
21 <p>
22 <pre>
23 Existing configuration
24 <select NAME="assccfg"> <OPTION SELECTED>CONFIG
25 <OPTION>CONFIG_BK <OPTION>CONFIGSAVE
26 </select>
27 New configuration
28 <input TYPE="text" NAME="newcfg" maxlength=10 SIZE=10>
29 </pre>
30 <input TYPE=RADIO NAME="action" VALUE="1" Checked>
31 Use existing configuration <br>
32 <input TYPE=RADIO NAME="action" VALUE="2">
33 Create new configuration <br>
34 <input TYPE=RADIO NAME="action" VALUE="3">
35 Create new configuration based on existing one
36 <pre>
37 <input type="submit" name="pushbutton" value="Apply">
38 <input name="pushbutton" type="reset" value="Reset">
39 </pre>
40 <hr>
41 <a HREF="/QSYS.LIB/QTCPCGI.LIB/QTMHFMIN.PGM/cfgact=CONFIG
42 ">
43 <h2>Configuration and Administration Forms</h2>
44 </a>
45 Change the configuration named
46 <strong>CONFIG </strong>.
47 <hr>
48 <a HREF="/QSYS.LIB/QTCPCGI.LIB/QTMHFMIN.PGM/instparm=DEFAULT
49
50 ">
51 <h2>Instance Parameters</h2>
52 </a>
53 Specify parameter values to be used by server instance
54 <strong>DEFAULT </strong>.
55 <INPUT TYPE=HIDDEN NAME="INSTANCE" VALUE="DEFAULT ">
56 <pre>
57 <hr>
58 <a href="/QSYS.LIB/QTCPCGI.LIB/QTMHICFP.PGM"><img
59 align=middle src="/QIBM/ICS/HTML/ICONS/go2first.gif"
60 alt="Front Page .vertline."></a> <a
61 href="/QIBM/ICS/HTML/MRI2924/HLPAS4CF.HTML"><img
62 align=middle src="/QIBM/ICS/HTML/ICONS/skyhelp.gif"
63 alt="Help"></a>
64 </pre>
65 </form>
66 </body>
67 </html>
Referring to FIG. 11, a sample representation of link "INSTANCE PARAMETERS", the page 420 returned upon selecting instance parameters 418 (FIG. 10), is shown. This page 420 allows specification of particular "instance" values that can override configuration directives for server 422 for those inputs 424-446 shown on the page. In this specific example, such instance values, or parameters, include autostart 424, number of server jobs minimum 426 and maximum 428, coded character set identifier 430, server mapping tables outgoing 432, 434 and incoming 436, 438, access log file name 440, error log file name 442, non-secure port 444 and secure port 446. For example, specifying a non-secure port in field 444 would override any PORT directive in configuration file 316. These attribute values reflect the contents of a member in a file that is similar to file 318, except instead of being tied to server 310, this file is tied to server 311 (it is modified by server 310, used to control the behavior of server 311). The ADMIN instance is unique in that it uses two config file members. It first reads the one from the read-only file 314, then the one from the read-write file 316. Referring to Table 8, the HTML code for generating a panel for an instance of TEAM42, which will be like panel 420 of FIG. 11 (which is for a server instance of DEFAULT) is set forth. (In order for Table 8 to produce FIG. 11, "TEAM42" in line 12 would have to be changed to "DEFAULT".)
TABLE 8
Instance Parameters (HTML)
1 // Sample HTML Representation of link "INSTANCE PARAMETERS"
2 <html>
3 <head>
4 <title>Instance Parameters</title>
5 </head>
6 <img src="/QIBM/ICS/HTML/ICONS/skycfg2.gif" align="middle"
7 alt=""><strong>Configuration and
Administration</strong>
8 <p><hr>
9 <body>
10 <br>
11 <h1>Instance Parameters</h1>
12 Server instance: <STRONG>TEAM42</STRONG>
13 <hr>
14 <form
15 ACTION="/QSYS.LIB/QTCPCGI.LIB/QTMHFNOU.PGM/instparm=DEFAULT"
16 METHOD="POST">
17 Specify parameter values to be used by this server instance.
18 <p>
19 <pre>
20 Autostart
21 <select NAME="auto"><option>NO <OPTION>YES
<OPTION
22 SELECTED>*GLOBAL </SELECT>
23 Number of server jobs:
24 Minimum
25 <input TYPE="text"
26 NAME="min"
27 VALUE= "*CFG"
28 maxlength=4
29 SIZE=4>
30 Maximum
31 <input TYPE="text"
32 NAME= "max"
33 VALUE="*CFG"
34 maxlength=6
35 SIZE=6>
36 Coded character set identifier
37 <input TYPE="text"
38 NAME="ccsid"
39 VALUE-"*GLOBAL"
40 maxlength=7
41 SIZE=7>
42 Server mapping tables:
43 Outgoing EBCDIC/ASCII table
44 <input TYPE="text"
45 NAME="outtbl"
46 VALUE="*GLOBAL"
47 maxlength=10
48 SIZE=19>
49 Library
50 <input TYPE="text"
51 NAME="outlib"
52 VALUE=""
53 maxlength=10
54 SIZE=10>
55 Incoming ASCII/EBCDIC table
56 <input TYPE="text"
57 NAME="intbl"
58 VALUE="*GLOBAL"
59 maxlength=10
60 SIZE=10>
61 Library
62 <input TYPE="text"
63 NAME="inlib"
64 VALUE=""
65 maxlength=10
66 SIZE=10>
67 ACCESS log file name
68 <input TYPE="text"
69 NAME="accfil"
70 VALUE="*CFG"
71 max length=512
72 SIZE=50>
73 ERROR log file name
74 <input TYPE="text"
75 NAME="errfil"
76 VALUE="*CFG"
77 maxlength=512
78 SIZE=50>
79 Non-secure port
80 <input TYPE="text"
81 NAME="prt"
82 VALUE="*CFG"
83 maxlength=5 SIZE=5>
84 Secure port
85 <input TYPE="text"
86 NAME="secprt"
87 VALUE="*CFG"
88 maxlength=5
89 SIZE=5>
90 </pre>
91 <pre>
92 <input type="submit" name="pushbutton" value="Apply">
93 <input type="reset" name="pushbutton" value="Reset">
94 <hr>
95 <a href="/QSYS.LIB/QTCPCGI.LIB/QTMHICFP.PGM">
96 <img align=middle src="/QIBM/ICS/HTML/ICONS/go2first.gif"
97 alt="Front Page .vertline.">
98 </a>
99 <a href="/QTBM/ICS/HTML/MRI2924/HLPAS4JN.HTML">
100 <img align=middle src="/QIBM/ICS/HTML/ICONS/skyhelp.gif"
101 alt="Help">
102 </a>
103 </pre>
104 </form>
105 </body>
106 </html>
Referring to FIG. 12, a sample representation of link configuration and administration forms panel 460, such as is displayed at browser 404 in response to selection of field 416 (FIG. 10) is set forth. This server configuration TEAM42 may be customized by selecting and using one or more of forms 461. These forms include the following: basic form 462 (see form 500, FIG. 13 for a specific example) for specifying required settings; user administration forms 463 for managing user ID and passwords, including add user form 464 for adding a new user ID to a validation list and group file, delete user form 465 for deleting a user from a validation file, check user form 466 for determining if a user exists in a validation list, and change password form 467 for changing a user password in a validation list; directories and welcome page 468 for setting viewing options, including initial page 469 for specifying the welcome pages and directory lists, directory list contents 470 for specifying list columns, and readme text 471 for providing informative directory list text; logging form 472 for customizing the access log and error log, including global log file configuration settings form 473 for specifying log fomats, access log file configuration form 474 for specifying access log location, and error log file configuration form 475 for specifying error log location; access control form 476 for setting up access control for the server, including document protection form 477 for specifying file directories to protect, protection setups form 478 for specifying file protection settings, and access control lists 479 for defining user access files; security form 480 for setting up security for the server, including security configuration form 481 for defining basic parameters for security, create keys form 482 for creating keys and request certificates, receive certificate form 483 for receiving a certificate into the key ring, and key management form 484 for working with keys, root keys, and certificates; resource mapping form 485 for redirecting URLs and defining file extensions, including request routing form 486 for routing URL requests to server files, MIME encodings form 487 for defining encodings and extensions, MIME types form 488 for defining file types and extensions, and languages form 489 for associating language encodings and extensions; timeouts form 490 for closing connections automatically; methods form 491 for setting method acceptance; accessory scripts form 492 for specifying custom method scripts; and performance settings form 493 for defining performance settings, including jobs form 494 for configuring jobs. Referring to Table 9, HTML coding for setting up configuration and administration forms panel 460 is set forth.
TABLE 9
Configuration and Administration (HTML)
1 // Sample representation of link "Configuration and
2 // Administration Forms"
3 <html>
4 <head>
5 <title>Configuration and Administration Forms</title>
6 </head>
7 <body>
8 <img src="/QIBM/ICS/HTML/ICONS/skycfg2.gif" align="middle"
9 alt="">
10 <strong>Configuration and Administration</strong>
11 <p><hr>
12 <hl>Configuration and Administration Forms</h1>
13 Configuration: <strong>TEAM42</strong>
14 <p>
15 <hr>
16 You can customize this server configuration by modifying the
17 forms below:
18 <p>
19 <ul>
20 <li>
21 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/basic=CONFIG">
22 Basic
23 </a> - Specify required settings
24 <li>
25 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/useradm=CONFIG">
26 User Administration </a>
27 - Manage user ID and passwords
28 <ul>
29 <li>
30 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/adduser=CONFIG">
31 Add User </a>
32 - Add a new user ID to a validation list and group file
33 <li>
34 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/deluser=CONFIG">
35 Delete User </a>
36 Delete a user from a validation list
37 <li>
38 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/chkuser=CQNFIG">
39 Check User</a>
40 - Determine if a user exists in a validation list
41 <li>
42
<ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/chpasswd=CONFIG">
43 Change Password</a>
44 - Change a user password in a validation list
45 </ul>
46 <li>
47 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/dirappr=CONFIG">
48 Directories and Welcome Page</a>
49 - Set viewing options
50 <ul>
51 <li>
52
<ahref="/QSYS.LIB/QTCPCGT.LIB/QTMHCFIN.PGM/initpage=CONFIG">
53 Initial Page</a>
54 - Specify welcome pages and directory lists
55 <li>
56
<ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/listcnts=CONFIG">
57 Directory List Contents</a>
58 - Specify list columns
59 <li>
60
<ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/dirreadm=CONFIG">
61 Readme Text</a>
62 - Provide informative directory list text
63 </ul>
64
<li><ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHLRIN.PGM/logging=CONFI
65 G">
66 Logging</a>
67 - Customize access log and error log
68 <ul>
69 <li>
70
<ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHLRIN.PGM/logfiles=CONFIG">
71 Global Log File Configuration Settings</a>
72 - Specify log formats
73 <li>
74 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHLRIN.PGM/accconf=CONFIG">
75 Access Log File Configuration</a>
76 - Specify access log location
77 <li>
78 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHLRIN.PGM/errconf=CONFIG">
79 Error Log File Configuration</a>
80 - Specify error log location
81 </ul>
82 <li>
83 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/access=CONFIG">
84 Access Control</a>
85 - Set up access control for the server:
86 <ul>
87 <li>
88
<ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/docautos=CONFIG">
89 Document Protection</a>
90 - Specify file directories to protect
91 <li>
92
<ahret="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/prtclist=CONFIG">
93 Protection Setups</a>
94 - Specify file protection settings
95 <li>
96 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/acldir=CONFIG">
97 Access Control Lists</a>
98 - Define user access files
99 </ul>
100 <li>
101
<ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHSCIN.PGM/security=CONFIG">
102 Security</a>
103 - Set up security for the server:
104 <ul>
105 <li>
106 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHSCIN.PGM/secconf=CONFIG">
107 Security Configuration</a>
108 - Define basic parameters for security
109 <li>
110 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHSCIN.PGM/key=CONFIG">
111 Create Keys</a>
112 - Create keys and request certificates
113 <li>
114 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHSCIN.PGM/reccert=CONFIG">
115 Receive Certificate</a>
116 - Receive a certificate into the key ring
117 <li>
118
<ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHSCIN.PGM/pwprompt=CONFIG">
119 Key Management</a>
120 - Work with keys, root keys, and certificates
121 </ul>
122 <li>
123 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/resmap=CONFIG">
124 Resource Mapping</a>
125 - Redirect URLs and define file extensions
126 <ul>
127 <li>
128 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/mpfrule=CONFIG">
129 Request Routing</a>
130 - Route URL requests to server files
131 <li>
132
<ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/addencod=CONFIG">
133 MIME Encodings</a>
134 - Define encodings and extensions
135 <li>
136 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/addtype=CONFIG">
137 MIME Types</a>
138 - Define file types and extensions
139 <li>
140 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/addlang=CONFIG">
141 Languages</a>
142 - Associate language encodings and extensions
143 <ul>
144 <li>
145 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/timeout=CONFIG">
146 TimeCuts</a>
147 - Close connections automaticaliy
148 <li>
149
<ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/methenab=CONFIG">
150 Methods</a>
151 - Set method acceptance
152 <li>
153 <ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/accscr=CONFIG">
154 Accessory Scripts</a>
155 - Specify custom method scripts
156 <li>Performance Settings</a>- Define performance
settings:
157 <ul>
158 <li>
159
<ahref="/QSYS.LIB/QTCPCGI.LIB/QTMHCFIN.PGM/performa=CONFIG">
160 Jobs</a>
161 - Configure jobs
162 </ul>
163 </ul>
164 <hr>
165 <a hret="/QSYS.LIB/QTCPCGI.LIB/QTMHICFP.PGM">
166 <img src="/QIBM/ICS/HTML/ICONS/go2first.gif"
167 alt="Front Page .vertline."></a>
168 <img src="/QIBM/ICS/HTML/ICONS/greycfg.gif"
169 alt="Configuration and Administration Forms .vertline.">
170 <a href="/QIBM/ICS/HTML/MRI2924/sample.html">
171 <img src="/QIBM/ICS/HTML/ICONS/skyhome.gif"
172 alt="Sample Home Page .vertline."></a>
173 <a href="http://www.ics.raleigh.ibm.com/">
174 <img src="/QIBM/ICS/HTML/ICONS/skyres.gif"
175 alt="Resource List .vertline."></a>
176 <a href="/QIBM/ICS/HTML/MRI2924/rzaglmst.html">
177 <img src="/QIBM/TCS/HTML/ICONS/skydoc.gif"
178 alt="Documentation"></a>
179 </body>
180 </html>
Referring further to FIGS. 1 and 2, if the auto start attribute for administration server 310 is set to *NO, this server 310 starts only upon command, such as the AS/400 STRTCPSVR(*HTTP)(*ADMIN) command. The system administrator may, however, using the browser, configure the default autostart attribute for any server instance 310, 311 to yes, and thus may configure ADMIN server instance 310 so that it will autostart. Referring again to FIG. 3, to add a new instance of an HTTP server, the user types in an instance name 371 and selects ADD 388. The user will then be shown a confirmation page, can then return to page 400, and select 418 to get the instance parameters page. Referring further to FIG. 9, the link "Global attribute values" 390 shows an additional page similar to that in FIG. 11 to allow modification of the default HTTP server 311 attributes 323. These default attributes are those which are modified with the CHGHTTPA command, and are shown in FIG. 15, global attribute file 532. Referring further to FIGS. 10 and 11, a configuration for a particular instance of an HTTP server is illustrated. In such a case, the configuration name is mandatory as this is the configuration used by this instance of the HTTP server. Different instances may use the same or unique configurations. If instances share configurations, and need to co-exist, certain override parameters must be specified. For example, if a port directive is in the configuration, and two instances share that configuration, only one of the instances will start up the other instance will fail unless there is an override parameter in the appropriate PORT field. Once "apply" 448 is chosen, messages indicate the outcome, which may be either the instance is not changed successfully or the instance is changed. "Reset" 450 resets values back to previously defined values, which may include blank fields. Referring to FIG. 9, if the link "Global Attribute Values" 390 is selected in panel 370, a page is produced which allows setting of the values of 533, 534, 535, 536, 537, and 538 in FIG. 15. Referring further to FIG. 10, the sample page illustrated is an indication of what is required on a configuration page. A system administrator can change attributes for this instance via link 418; designate what configuration file is used via items 402, 404, 406, 408, 410, 412, and 414; and specify configuration file values via link 416. Referring to FIG. 13, a sample page illustrates basic panel 500. This panel 500 is displayed responsive to selection of link 462 in panel 460, FIG. 12. Instructions 502 may include a statement displayed on the browser in panel 500, such as the following: "Specify the host name of the computer on which the server is installed, the port number on which the server listens for requests, and the directory the server uses as the root of the data hierarchy (server root). Host name should be a fully qualified name. Default port number should be the well-known HTTP port number (80), or a port number above 1024. Port numbers less than 1024 may be reserved by other programs." Representative data entry fields on page 500 include host name 504, default port number 506, server root 508. Button 510 is activated to look up the host name of requesting clients, button 512 to apply, and 514 to reset. This panel 500 is representative of the many similar panels which would be displayed by selection in panel 460 of links 463-494. Referring to FIG. 14, a sample page illustrates the contents of confirmation panel, which is displayed back to the user at browser 304 in response to data entered via basic page 500. Referring to FIG. 15, secure server instance management files and formats are illustrated for enabling management of multiple server instances. Referring to FIG. 15 in connection with FIG. 2, in accordance with the preferred embodiment of the invention, one of the server instances is default server instance 311, and another is the ADMIN server 310 instance that is used for the browser interface to the configuration and administration utilities. Multiple HTTP server instance management is handled by using instance file (*PF) 516, configuration file (*SRCPF) 526, and attribute file (*PF) 532. Each member 515, 517, 519, 521 of instance file 516 represents a single HTTP server instance. Instance name 525 is not actually contained within each member of 516, but rather is used to determine which member within file 516 is accessed. Instance file 516 is the same as instance file 318 (FIG. 1), and file 515 is a member within file 516. A particular member 515 defines an instance. Each instance (member) 515, 517, 519, 521 contains optional attribute overrides 518, configuration file member name 522, and optional configuration directive overrides 524. The instance (member) name 525 is used to specify the server instance for configuration and administration purposes. Optional attribute overrides 518 are used to override the values in attribute file 532 for this server instance 515. Configuration file member name 522 identifies, as is represented by line 523, the configuration file member 526 from which server instance 515 reads configuration directives 530 at server startup. Optional configuration directive overrides 524 are used to override configuration directives such as port, sslport, AccessLog and ErrorLog. Each member in configuration file 526 (only one member is shown) represents a set of directives 528, 530 that can be used by server instance 515, 517, 519, 521 at startup time. In accordance with a preferred embodiment of the invention, attribute file 532 includes only one member with [fileds] fields autostart 533, minjob 534, maxjob 535, ccsid 536, out ccsid 537 and in ccsid 538. Minjob 534 and maxjob 535 attributes map to MinActiveThreads and MaxActiveThreads to enable a job structure to be implemented on a thread model, as is further described in copending patent application Ser. No. 09/135,253, filed Aug. 17, 1998 (supra). Referring to FIGS. 16 and 17, the STRTCPSVR 540 and ENDTCPSVR 550 commands are adapted to support multiple server instances. Use of SYTRTCPSVR command 540 is an alternative to use of the browser based ADMIN server to create startup values in the instance file. Referring to FIG. 16, the format of start TCP server command 540 is illustrated, which includes STRTCPSVR field 542, SERVER( ) field 544, RESTART field 546 and HTTPSVR( ) field 548. The start TCP/IP server command 540 is used to start the TCP/IP application servers. The syntax of STRTCPSVR statement 540 is as follows:
STRTCPSVR field 542: STRTCPSVR
SERVER( ) field 544:
SERVER(.vertline.*ALL.parallel.*SNMP.vertline.*ROUTD.vertline.*TELNET.vert
line.
*FTP.vertline.*SMTP.vertline.*LPD.vertline.*WSG.vertline.*POP.vertline.*HT
TP.vertline. . . .
.vertline.)
RESTART field 546: RESTART(.vertline.*NONE.vertline.*HTTP.vertline.)
HTTPSVR( ) field 548: HTTPSVR(.vertline.*ALL.parallel.server-instance-name
.vertline.*ADMIN.parallel.*NONE.vertline.instance-startup-
values.vertline.)
where: SERVER specifies the TCP/IP application servers to be started by this command. *ALL specifies that all of the TCP/IP application servers and all HTTP instances are started. *SNMP specifies that simple network management protocol (SNMP) agent jobs are started. *ROUTED specifies that the RouteD server is started. *TELNET specifies that the TELNET server is started. More than one TELNET server job may be running. *FTP specifies that file transfer protocol (FTP) servers are started based on the number of servers configured with a change FTP attributes (CHGFTPA) command. More than one FTP server job may be running. *SMTP specifies that the simple mail transfer protocol (SMTP) client and server jobs are started. *LPD specifies that line printer daemon (LPD) servers are started based on the number of servers configured with the change LPD attributes (CHGLPDA) command. More than one LPD servers may be running. *WSG specifies the 5250/Hypertext markup language (HTML) workstation gateway (WSG) server is started. *POP specifies the post office protocol (POP) version 3 servers are started based on the number of servers configured with the change POP attributes (CHGPOPA) command. *HTTP specifies the world wide web hyptertext transfer protocol (HTTP) servers are started based on the number of servers specified in the change HTTP attributes (CHGHTTPA) command. RESTART specifies whether to restart the selected server when the STRTCPSVR command 540 is run. The SERVER parameter 544 must be *ALL or *HTTP or this parameter is ignored. *NONE specifies that no server is to be restarted. *HTTP specifies that the HTTP server is to be restarted if already running, thus forcing the HTTP server to read in the HTTP configuration and use any configuration values or attributes that have changed since it was last started. HTTPSVR( ) specifies the HTTP server instance to be started as well as any additional startup values to be used by the HTTP server to control the server instance. *ALL specifies that all sever instances for the HTTP server will be started. SERVER-INSTANCE-NAME specifies the server instance will be started. *ADMIN specifies that the administration HTTP server will be started. This administration server is an instance of the HTTP server that allows administration of system functions using a web browser. INSTANCE-STARTUP-VALUES specifies additional startup values to be used for this server instance. The user is required to have *IOSYSCFG special authority to specify overrides. These values are used to override previously defined server startup values for the specified server instance, and are as follows: netcp[nnn] overrides the DefaultNetCp directive. fscp[nnn] overrides default DefaultFsCP directive. p[nnn] overrides port directive. sslport[nnnn.] overrides SSLPort directive. r[configuration file] overrides configuration file for this instance of the server. l[log-file-name] same as "AccessLog log-file-name" newlog[log-file-name] same as "AccessLog log-file-name and Logformat Common". ddslog[log-file-name] same as "AccessLog log-file-name and Logformat DDS". errlog[logo-file-name] same as "ErrorLog log-file-name". minat[nn] overrides the MinActiveThreads directive. maxat[nn] overrides the MaxActiveThreads directive. INSTANCE-STARTUP-VALUES specified on the STRTCPSVR *HTTP command take precedence or can augment configuration data in instance files. Instance files take precedence over or can augment data in configuration files. Examples STRTCPSVR SERVER(*ALL): starts all of the TCP/IP application servers that have been configured. If the change FTP attributes (CHGFTPA) command was previously used to configure two FTP servers, both servers are started when STRTCPSVR is issued. Where appropriate, the number of servers to start is based on the number of servers configured for the server being started. The configuration option to automaticaly start the servers (AUTOSTART) is ignored by the STRTCPSVR command 540. The AUTOSTART parameteris only used by the STRTCP command. STRTCPSVR SERVER(*TELNET): starts the TCP/IP TELNET application server. If the TELNET server was previously started, one additional TELNET server job is started. STRTCPSVR SERVER(*HTTP) RESTART(*HTTP): restarts the TCP/IP HTTP application server for all instances of the HTTP server. If the HTTP server was not currently running, then all defined instances of the HTTP server are started. STARTCPSVR SERVER(*HTTP) HTTPSVR(httpl): starts the TCP/IP HTTP application server instance named `httpl` using the startup values prevously defined for this server instance. STRTCPSVR SERVER(*HTTP) HTTPSVR(HTTP1 `-p 81 -sslport 443`): starts the TCP/IP HTTP application server instance named `httpl`, and specifies that the server instance should listen on port 81 for unsecure requests and on port 443 for secure requests. The ports defined here override any previously defined ports used by this server instance. Referring to FIG. 17, the format of end TCP server command 550 is illustrated, which includes ENDTCPSVR field 552, SERVER( ) field 554 and HTTPSVR( ) field 556. ENDTCPSVR command 550 is used to end the TCP/IP application server jobs that are specified in the SERVER parameter 554. If the jobs have any current active connections, these connections are ended immediately. The syntax of the ENDTCPSVR command 550 is as follows:
ENDTCPSVR field 552: ENDTCPSVR
SERVER( ) field 554:
SERVER(.vertline.*SNMP.vertline.*ROUTED.vertline.*TELNET.vertline.
*FTP.vertline.*SMTP.vertline.*LPD.vertline.*HTTP.vertline.*WSG
*POP.vertline. . . . .vertline.*ALL.vertline.
HTTPSVR( ) field 556: HTTPSVR(.vertline.*ALL.vertline.SERVER-INSTANCE-
NAME.vertline.*ADM.vertline.N.vertline.)
where: SERVER-INSTANCE-NAME specifies the HTTP server instance to be ended. Examples ENDTCPSVR SERVER(*ALL) ends all active TCP/IP application server jobs. ENDTCPSVR SERVER(*HTTP) HTTPSVR(httpl) ends the TCP/IP HTTP application server instance named `http1`. In a typical startup scenario: (1) a user initializes operation by installing several files, including default configurations for both the ADMIN HTTP server 310 and default servers 311, and issues a start TCP (STRTCP) which causes the TCP/IP stack to start, and any TCP application that has AUTOSTART=*YES starts. (2) However, because the default attribute file 323 has AUTOSTART=*NO for HTTP servers, and there is, in the preferred embodiment, no override for the ADMIN instance (attribute file 318), the user must run an explicit command to start the ADMIN server 310. (That command is STRTCPSVR 540, infra.) This is true only initially, before the ADMIN server 310 is started for the first time. The user can change the autostart attribute in the ADMIN server's instance file via browser-based config. If the admin server is not running, the only way to start is with STRTCPSVR, because it is the admin server that provides the browser-based config function. Other instances can then be started thru the browser (which actually does STRTCPSVR under the covers). (3) In response to the STRTCP command, because server 310 has basic authentication enabled, the user is required to enter a valid user ID and password in order to further configure the server. (4) Once authorized, the user issues STRTCPSVR 540 or STRTCPSVR(*HTTP), or points the browser to the ADMIN server and selects "default server" and "start". An HTTP server with a standard default configuration that serves only a "welcome.html" document is started on the standard HTTP port 80 for this host. (5) The user then configures the server (either by the browser and selecting "which server" and "configure" or WRKHTTPCFG(*configuration)). Using either method, the user is able to (by configuration name): select a configuration file, and then change that particular configuration file. Referring to FIG. 18, in accordance with the Internet connection secure server embodiment of the invention, a server can listen on both a secure port 204 using secure sockets layer (SSL) and a non-secure port 202 using sockets for requests coming from HTTP clients on network 200. When a listening thread 206 detects a request coming into port 202 or 204 from network 200, it passes the socket descriptor for the request off to a worker thread 212 or 214 that is waiting in a thread pool 210 of initialized threads. Worker thread 212 or 214 processes the request and completes the transaction by sending a response back to the HTTP client on network 200. Service threads 220 run in the background to handle server utility functions including alarm 222 and log writer 224. Referring to FIG. 19 in connection with FIG. 18, as part of initialization, main thread 240 processes configuration file 244 directives. The MinActiveThreads and MaxActiveThreads directives are used to set the boundaries of the pool 206, 210, 220 of available threads that can be used by the server 190. Main program thread 240 initializes thread pool 210 and then uses a thread 202 from pool 210 to bind( ) 260 and listens( ) 262 on an IP address port 202. When server 190 is started with directives normalmode on and sslmode on there will be one thread 206, 262 listening on port 80 (the HTTP default port 202) and one thread 206, 272 listening on port 443 (the HTTPS default port 204). Hereafter, these threads may be referred to as listing threads, or parent threads. HTTP and HTTPS default ports 202, 204 can be overriden with a directives port (for (HTTP) and an sslport (for HTTPS). These threads 206 will listen on all IP addresses defined for this host unless the BindSpecific directive is in configuration file 244 and it contains a valid IP address for this host. Then threads 206 only listen on the ports for that IP address. When a request comes in on either or both ports 202, 204, the listening thread 262, 272 does an accept 264, 274 and passes the incoming request off to a work thread 266, 276 that comes from thread pool 210. Listening thread 262, 272 then goes back to accepts( ) mode 264, 274. The work thread 266, 276 processes the incoming request and sends a response to the client. When work thread 266, 276 completes its tasks it returns to pool 210 of available threads. Two service threads 220, including log writer thread 224 and alarm thread 222, are spun off at server 190 initialization and wait in the background until their services are needed. Log writer routine 224 is spun off in its own thread when server 190 starts. It spends most of its time sleeping, but wakes up periodically to write out to log files 226 anything that needs to be logged. It handles writing to the access and error logs. At initialization, startup job 240, 250 opens the log files 226 that are specified in configuration directives 244 (or over-rides) and then passes the file descriptors to the log writer thread 224. As is represented by lines 234 and 236, server listening threads 206 and worker threads 210 add log data to log queue 228 for log writer thread 224 to log. When log writer thread 224 wakes up it checks queue 228 for data to be logged. When there is data to be logged, log writer thread 224 locks the queue with a mutually exclusive (mutex) lock on line 218 and, as is represented by line 238, copies the log data from queue 228 into list 216, zeros out queue 228, and then releases mutex 218. Log writer thread 224 can then log the data from list 216 without having other threads 206, 210 blocked from writing to queue 228. Alarm thread 222 is spun off (spawned) in its own thread when server 190 starts. It spends most of its time sleeping. It wakes up periodically and checks a list of timers 232 that are associated with active work threads 210, such as 266, 268, 276, 278. When a timer 232 expires it indicates that a work thread 210 had a problem completing its task on time. When alarm thread 222 finds an expired timer the timer is removed from the list of timers 232, the outstanding function being processed is t | ||||||
