./devwex/program
. Here the Server can be started
directly as java binary or with the available start scripts.java -cp devwex.jar [-Dlibraries=value] [-Dparameter=value] com.seanox.devwex.Service [option]
devwex.bat [option]
devwex.sh [option]
start*
)
-Dlibraries
was indicated.
i.e. telnet 127.0.0.1 25000
STATE
VERS: 1.2013.0707
TIME: 2013-07-07 06:00:00
TIUP: 2013-07-07 06:00:00
SERV: TCP 127.0.0.1:25000
SERV: TCP 127.0.0.1:80
SERV: TCP 127.0.0.1:443
c:\windows\system32\drivers\etc\hosts
)
or Unix (i.e. /etc/hosts
), to determine the host name and
can thus access to network resources, such as Servers and databases,
be accelerated.
devwex.ini
is organized in six sections
and will be used from the current work directory where the server was
started. After installation contains the directory ./devwex/program
already preconfigured devwex.ini
.
EXTEND
bowl, and the names of referencing
section is specified. The derived section then takes over all the keys
and values in the referenced section, and can extend or override this.[?]
at the end of a key, the referred value will first
be determined using the system properties of the Java environment. If this
can not be found, the optionally given value will be used. Without a value
is a key with the option [?]
not specified, and so is ignored.[+]
at the end of a parameter or value assignment
will skip any given commentary sign in the line. So the semicolon can
be used for assigning values.i.e. 1: [SECTION] EXTENDS SECTION-A ;comment
2: PARAM-A = VALUE-1 ;comment
3: PARAM-B = VALUE-2; VALUE-3 [+]
4: + VALUE-4; VALUE-5 [+]
5: PARAM-C [+] = VALUE-6; VALUE-7
6: PARAM-D [?][+] = VALUE-8; VALUE-9
7: PARAM-E [?] = VALUE-0 ;comment
8: PARAM-F [?] ;comment
"SECTION"
is defined. With the option
EXTENDS
is inherited from the section "SECTION-A"
.
Therefore be with the section "SECTION"
all over EXTENDS
involved directly and/or indirectly given sections. The characters
after the semicolon are interpreted as comment.
"VALUE-1"
is assigned to the key "PARAM-A"
.
The characters after the semicolon are interpreted as comment.
"VALUE-2; VALUE-3"
are assigned to the key
"PARAM-B"
. The option [+]
skips the commentary
function of the semicolon. All values are used. It is not possible
to put are comment in this line.
"VALUE-4; VALUE-5"
to the value of key "PARAM-C"
.
The option [+]
skips the commentary function of the
semicolon. All values are used. It is not possible to put are comment
in this line.
"VALUE-2; VALUE-3"
are
assigned to the key "PARAM-C"
. The option [+]
skips the commentary function of the semicolon. All values are used.
It is not possible to put are comment in this line.
"PARAM-D"
is handled
dynamically. The value will first be determined using the system
properties of the Java environment. Therefore, the key part of the
current runtime environment or must be passed when starting the
program in the form -Dparameter=value
. Upper and lower
case will not be applied. The key which are defined in this way
are recognized with the complete value assignment. Comments are
not supported with this option. If a value for the parameter can
not be determined using the system properties then the given values
"VALUE-8; VALUE-9"
are used. Comments can not be used
with the option [+]
.
"PARAM-E"
will be determined
using the system properties of Java. If this fails, the optionally
given value will be used. Without the option [+]
a
comment can be used.
"PARAM-F"
will be determined using the system properties of Java. If this
is not possible, the parameters are not accepted.
NAME = RESOURCE [OPTION] [OPTION] ...
CONTAINER = com.seanox.module.Container [SIZE:256] [TYPE:FIFO]
[*]
. If the extension
not contained at initialization of modules, it does not come to a error
output.CONTAINER = com.seanox.module.Container [SIZE:256] [TYPE:FIFO] [*]
[SERVER:*:BAS]
in
the name of the section and started.[SERVER:NAME:SECTION]
GET /directory/file.cgi?value=123 HTTP/1.1
Accept-Encoding: gzip, deflate
Accept-Language: de
Accept: */*
User-Agent: Browser
Host: www.xxx.zzz
CONNECTOR
, ADDRESS
, PORT
, SERVICE
,
BACKLOG
, MAXACCESS
and ISOLATION
omitted here.
telnet 127.0.0.1 25000
STATE
VERS: 1.2013.0707
TIME: 2013-07-07 06:00:00
TIUP: 2013-07-07 06:00:00
SERV: TCP 127.0.0.1:25000
SERV: TCP 127.0.0.1:80
SERV: TCP 127.0.0.1:443
devwex.ini
loaded, which must be in the working directory.devwex.bat state
VERS: 1.2013.0707
TIME: 2013-07-07 06:00:00
TIUP: 2013-07-07 06:00:00
SERV: TCP 127.0.0.1:25000
SERV: TCP 127.0.0.1:80
SERV: TCP 127.0.0.1:443
devwex.sh state
VERS: 1.2013.0707
TIME: 2013-07-07 06:00:00
TIUP: 2013-07-07 06:00:00
SERV: TCP 127.0.0.1:25000
SERV: TCP 127.0.0.1:80
SERV: TCP 127.0.0.1:443
java -cp devwex.jar com.seanox.devwex.Service state
VERS: 1.2013.0707
TIME: 2013-07-07 06:00:00
TIUP: 2013-07-07 06:00:00
SERV: TCP 127.0.0.1:25000
SERV: TCP 127.0.0.1:80
SERV: TCP 127.0.0.1:443
CONNECTOR
, ADDRESS
, PORT
, SERVICE
BACKLOG
, MAXACCESS
and ISOLATION
are not used for virtual hosts.
AUTO
uses all in the
system applicable IP addresses
OFF
, the logging is disabled
[S]
suppresses indicates from hidden system files
[MIMETYPES]
)
i.e. ACCESSLOG = ../system/access.[yyyy.MMdd].log
SSL
Secure Socket Layer, TLS
Transport Layer Security, standard if nothing else set is TLS
SunX509
ON
activates the client authorization, standard if
not set is OFF
JKS
./java/bin/keytool -genkey -keyalg RSA -validity 365
-alias devwex -dname "CN=127.0.0.1, C=DE"
-keystore keystore -keypass default -storepass default
-keystore
the keytool
will be created the certificate as .keystore
file in the
user home directory. Depending on the operating system different user
directories are used. i.e. c:\documents and properties\[user]\.keystore
for Windows 2000/XP or /home/[benutzer]/.keystore
for Unix
based systems../devwex/program
and the JSSE
available. The port can be chosen, 443 is the standard port for HTTPS.[SERVER:X:BAS]
PORT = 443
...
[SERVER:X:SSL]
PROTOCOL = TLS
ALGORITHM = SunX509
CLIENTAUTH = OFF
STORE = keystore
TYPE = JKS
PASSWORD = default
...
[SERVER:X:BAS]
PORT = 443
...
[SERVER:X:SSL]
STORE = keystore
PASSWORD = default
...
NAME = VIRTUAL > PHYSICAL [OPTION]
[M]
use
the module can be expanded, so then all the requested HTTP methods
are independent of the server parameter METHODS
passed
on to the module. This option is useful if a module extends the
existing HTTP methods.
ACC
).
DIRECTION:A = /system > ../system
../system
will be used for the requested
directory /system
DIRECTION:B = /doc > ../documents [A]
/documents
, /documentation
,
/doc/test.cgi?cmd=123
, the physical directory ../documents
will be used without naming a certain file
DIRECTION:C = /test > http://www.xxx.zzz [R]
/test
will be redirected to
http://www.xxx.zzz
DIRECTION:D = /control > example.Connector [M]
/control
, the class Connector
of the Packages example
, which is defined in the classpath
of the server, is executed as module
DIRECTION:E = /program [C]
/program
will be denied
SYSTEM:NAME = REFERENCE [OPTION]
302
.
SYSTEM:INDEX = ../service/directory.html
../service/directory.html
used
SYSTEM:404 = ../service/error.404.html
404
will
be ../service/error.404.html
usedSYSTEM:404 = http://www.xxx.zzz/404.php [R]
404
occurs a redirection to address http://www.xxx.zzz/404.php
will result
./devwex/system/index.html
embedded, assigned by CSS and qualify on data group, data type and extension,
which are listed as CSS attributes.
[D]
and the optional indication of the realm. So the configuration is required
in sections REF
and ACC
. In section REF
will defined virtual path with the Basic Access Authentication, optional
can specify a physical path. The access rights will defined in section
ACC
. Here are defined users whith passwords.[acc:none]
exist a special option to quash
a authorization for a path and all sub path. Shall include in the same
definition more valid references, then these are ignored.[SERVER:X:REF]
ACCESS:A = /access [acc:group:a] [realm:Section-A]
ACCESS:B = /access/section [acc:group:b] [realm:Section-B]
ACCESS:C = /access/section/protected [acc:group:c] [realm:Section-C]
ACCESS:N = /access/public [acc:none]
ACCESS:X = /access/example... > ... [acc:...] [acc:...] ... [realm:...] [...
[D]
makes the difference)[SERVER:X:REF]
ACCESS:A = /access [acc:group:a] [realm:Section-A] [D]
ACCESS:B = /access/section [acc:group:b] [realm:Section-B] [D]
ACCESS:C = /access/section/protected [acc:group:c] [realm:Section-C] [D]
ACCESS:N = /access/public [acc:none]
ACCESS:X = /access/example... > ... [acc:...] [acc:...] ... [realm:...] [D] [...
[SERVER:X:ACC]
GROUP:A = ua:pa ub:pb uc:pc
GROUP:B = ua:pa ub:pbb
GROUP:C = uc:pcc
GROUP:X = user:password user:password ...
/access
und all subdirectories are only available
to selected user via password, except for the directory /access/public
and the subdirectories.
/access
can only be used with the
users "ua"
and the password "pa"
, "ub"
and the password "up"
and "uc"
with the
password "pc"
accessible. Also, access to all the subdirectories
is possible for the user. With the exception of the subdirectories
of /access/section
and /access/section/protected
.
/access/section
with all subdirectories
can be used by the users "ua"
with the password "pa"
and "ub"
with the password "pbb"
.
/access/section/protected
is
only for the user "uc"
with the password "pcc"
.
/access/public
is cancelled and can be accessed without login and password, subdirectories
can be supplied with Basic Access Authentication.
0x07 0x07
, then the following environment variables
to the first occurrence of control character 0x01
. From here,
the typical for the CGI request body is transferred.[0x07][0x07]
SERVER_PORT=80
SERVER_PROTOCOL=HTTP/1.0
SERVER_SOFTWARE=Seanox-Devwex/1.2013.0707
CONTENT_LENGTH=7
REQUEST_METHOD=POST
...
[0x01]Test...
FILE EXTENSION = METHODS > APPLICATION [OPTION]
CGI = POST GET > c:/example
SCRIPT_FILENAME
and PATH_TRANSLATED
CGI = POST GET > c:/example [C]
CGI = POST GET > c:/example [I]
SCRIPT_FILENAME
and PATH_TRANSLATED
PHP = POST GET > c:/php/php.exe
php
will be assigned to PHP as executing CGI
application
CGI = POST GET > c:/perl/bin/perl.exe [C]
perl
will be assigned to Perl as executing
CGI application
JAR = POST GET > java -jar [P][F].jar [I]
jar
will be assigned to Java as executing
CGI application
JAR = POST GET > java -jar [C] [I]
jar
will be assigned to Java as executing
CGI application
EXE = POST GET > [C] [I]
exe
is defined as executing DCGI application
EXE = POST GET > [C]
exe
is definded as executing CGI application
SSX = POST GET > com.seanox.ssx.Connector [M]
ssx
will be assigned to module com.seanox.ssx.Connector
located in the classpath
[SERVER:X:ENV]
[SERVER:X:ENV]
for microsoft windows
[SERVER:X:ENV]
for microsoft windows
[+]
, used the full contents of a line.i.e. PATH = ./documents;./libraries;./system [+]
PATH [+] = ./documents;./libraries;./system
php.ini
are used
they should be found in the same directory.
php.ini
stored in the working directory of Devwex or PHP the path to the startup
parameters -c
are indicated. Since version 4.x of PHP are
the entries cgi.rfc2616_headers = 1
for correct operation
of the PHP function header();
and for security execution
cgi.force_redirect = 0
and cgi.redirect_status_env = 302
required. Alternatively, you can put in section [SERVER:X:ENV]
to configuration file devwex.ini
, the entry REDIRECT_STATUS = 302
.
DOCROOT
directories. A special CGI-BIN
directory is not necessary.
*.exe
, *.com
)
can be used with a different file extension under windows. If i.e. CGI
or DCGI applications are used as Windows binary (*.exe
or
*.com
) without configuring these file extensions for CGI
or DCGI applications, file extensions can be chosen. Example example.exe
is renamed to example.cgi
, the referring entry in the
configuration file looks like: CGI = POST GET > [C]
ALL
will proceed all incoming
methods.
PARAMETER = VALUE
WEBSERVER = DEVWEX
WEBSERVER
is set with value DEVWEX
PATH
, SYSTEMDRIVE
, SYSTEMROOT
and for PHP REDIRECT_STATUS = 302
should be set in the configuration
file devwex.ini
. Environment variables without value will
not be considered.
[?]
at end of a parameter, this
a dynamic value can be assigned, which is set at startup as a start arguments
or system properties. This allows systemically environment variables,
e.g. PATH
, SYSTEMDRIVE
or SYSTEMROOT
are for Windows, passed dynamically. Please find more informations in
the configuration file section.
NAME = METHOD CONDITION FUNCTION PARAMETER VALUE [A] ... > REFERENCE [R]
GET /directory/file.cgi?value=123 HTTP/1.1
Accept-Encoding: gzip, deflate
Accept-Language: de
Accept: */*
User-Agent: Browser
Host: www.xxx.zzz
POST
is passed in the body, are not available.
FILTER-A = GET NOT EQUALS ACCEPT-LANGUAGE EN
GET
will be denied, if the field of request header
Accept-Language
does not equal EN
FILTER-B = GET NOT CONTAINS ACCEPT-LANGUAGE EN
GET
will be denied, if the field of request header
Accept-language
does not contain EN
FILTER-C = GET IS EQUALS ACCEPT-LANGUAGE EN
GET
will be denied, if the field of request header
Accept-Language
equals EN
FILTER-D = GET IS CONTAINS ACCEPT-LANGUAGE EN
GET
will be denied, if the field of request header
Accept-Language
contains EN
FILTER-E = GET IS STARTS REMOTE_ADDR 192.168.
GET
will be denied, if the CGI parameter REMOTE_ADDR
starts with 192.168.
FILTER-F = GET IS ENDS SCRIPT_URL .dat
GET
will be denied, if the CGI parameter SCRIPT_URL
ends with .dat
FILTER-G = GET IS CONTAINS PATH /documents [A] GET IS EMPTY REFERER
GET
will be denied, if the request parameter PATH
contains /documents
and the field of request header Referrer
is empty
FILTER-H = GET IS CONTAINS PATH /private > ../system/error.403.html
GET
will be denied, if the requesz parameter PATH
contains /private
, template for generating the status information
404
will be the file ../system/error.403.html
FILTER-I = GET IS CONTAINS PATH /private > http://www.xxx.zzz/403.php [R]
PATH
in the request header /private
,
method GET
will be forwarded to address http://www.xxx.zzz/403.php
FILTER-J = GET IS ENDS PATH .do > example.Connector [A:...] [B:...] [M]
GET
will be executed the module Connector
with the additional parameters A
and B
, which
is located in the server classpath
FILTER-K = ALL ALWAXS > example.Connector [A:...] [B:...] [M]
Connector
with
the additional parameters A
and B
, which is
located in the server classpath
CODE = TEXT
200 = Success
HTTP/1.0 200 Success
404 = Document Not Found
HTTP/1.0 404 Document Not Found
MIMETYPE = FILE-EXTENSION FILE-EXTENSION ...
application/octet-stream = com exe class
*.com
, *.exe
and
*.class
will be assigned to the mimetype application/octet-stream