./devwex/program
gewechselt und
der Server direkt als Java-Binary oder über die verfügbaren
Startskripte aufgerufen.java -cp devwex.jar [-Dlibraries=value] [-Dparameter=value] com.seanox.devwex.Service [option]
devwex.bat [option]
devwex.sh [option]
start*
)
-Dlibraries
angegeben wurden.
Bsp. 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
)
oder Unix (Bsp. /etc/hosts
), kann die Ermittlung der Hostnamen
und damit der Zugriff auf Netzwerkressourcen, wie z.B. Server und Datenbanken,
beschleunigt werden.
devwex.ini
ist in sechs Sektionen
unterteilt und wird immer aus dem aktuellen Arbeitsverzeichnis, aus dem
der Server gestartet wurde, verwendet. Nach der Installation liegt im
Verzeichnis ./devwex/program
die bereits vorkonfigurierte
devwex.ini
vor.
EXTENDS
, gefolgt
vom Namen der referenzzierenden Sektion, nachgestellt. Damit übernimmt
die so abgeleitete Sektion alle Schlüssel und Werte der referenzzierten
Sektion und kann diese erweitern oder überschreiben.[?]
am Ende eines Schlüssels, wird versucht für
diesen ein Wert über die System-Properties der Java-Laufzeitumgebung
zu ermitteln. Kann kein Wert ermittelt werden, wird der optional eingetragene
zugewiesen. Ohne Wert gilt ein Schlüssel mit der Option [?]
als nicht angegeben und wird damit ignoriert.[+]
am Ende von Schlüssel oder Wert abgeschalten. Somit
kann auch das Semikolon als Zeichen verwendet werden.Bsp. 1: [SECTION] EXTENDS SECTION-A ;Kommentar
2: PARAM-A = WERT-1 ;Kommentar
3: PARAM-B = WERT-2; WERT-3 [+]
4: + WERT-4; WERT-5 [+]
5: PARAM-C [+] = WERT-6; WERT-7
6: PARAM-D [?][+] = WERT-8; WERT-9
7: PARAM-E [?] = WERT-0 ;Kommentar
8: PARAM-F [?] ;Kommentar
"SECTION"
wird definiert.
Die Option EXTENDS
verweist auf die Ableitung von der
Sektion "SECTION-A"
. Somit werden bei der Anforderung
der Sektion "SECTION"
alle über EXTENDS
direkt und/oder indirekt angegebenen Sektionen einbezogen. Ab dem
Semikolon werden die nachfolgenden Zeichen als Kommentar interpretiert.
"PARAM-A"
wird der Wert "WERT-1"
zugewiesen. Die nachfolgenden Zeichen werden ab dem Semikolon als
Kommentar interpretiert.
"PARAM-B"
wird der Wert "WERT-2; WERT-3"
zugewiesen. Durch die Option [+]
am Ende des Werts
wird der Zeilenkommentar abgeschaltet und alle Zeichen für
die Wertzuweisung verwendet. Die Eingabe eines Kommentars ist in
dieser Zeile nicht möglich.
"WERT-4; WERT-5"
dem bestehenden Wert vom Schlüssel "PARAM-B"
hinzugefügt.
Durch die Option [+]
am Ende der Wertzuweisung wird
der Zeilenkommentar abgeschaltet und alle Zeichen für die Wertzuweisung
verwendet. Die Eingabe eines Kommentars ist in dieser Zeile nicht
möglich. Weitere vorangestellte Optionen werden nicht unterstützt.
"PARAM-C"
der Wert "WERT-2; WERT-3"
zugewiesen. Durch die Option
[+]
am Ende des Schlüssels wird der Zeilenkommentar
abgeschaltet, womit alle Zeichen für die Wertzuweisung verwendet
werden. Die Eingabe eines Kommentars ist in dieser Zeile nicht möglich.
"PARAM-D"
erfolgt dynamisch. Dabei wird versucht, zu diesem ein Wert über
die System-Properties der Java-Laufzeitumgebung zu ermitteln. Dazu
muss dieser Schlüssel ein Bestandteile der Laufzeitumgebung
sein oder kann mit dem Programmstart in der Form -Dname=wert
übergeben werden. Die Gross- und Kleinschreibung vom Namen
kann dabei unbeachtet bleiben. So übergebene Werte werden komplett
zugewiesen. Kommentare werden hierbei nicht unterstützt. Kann
für den Schlüssel kein Wert über die System-Properties
ermittelt werden, wird die eingetragene Wertzuweisung "WERT-8; WERT-9"
verwendet. Ein Kommentar ist durch Verwendung der Option [+]
nicht möglich.
"PARAM-E"
dynamisch über die System-Properties
der Java-Laufzeitumgebung aufgelöst. Ist dies nicht möglich,
wird die eingetragene Wertzuweisung verwendet. Ohne die Option [+]
ist in dieser Zeile auch ein Kommentar anwendbar.
"PARAM-F"
dynamisch
über die System-Properties der Java-Laufzeitumgebung. Ist dies
nicht möglich, wird der Schlüssel nicht übernommen.
NAME = RESSOURCE [OPTION] [OPTION] ...
CONTAINER = com.seanox.module.Container [SIZE:256] [TYPE:FIFO]
[*]
kann ein Modul als optional gekennzeichnet
werden. Ist das Modul im Fall der Initialisierung nicht vorhanden, führt
das mit dieser Option zu keiner Fehlerausgabe.CONTAINER = com.seanox.module.Container [SIZE:256] [TYPE:FIFO] [*]
[SERVER:*:BAS]
im Namen der Sektion ermittelt und
gestartet.[SERVER:NAME:SEKTION]
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
und
ISOLATION
entfallen hier.
AUTO
verwendet hierbei alle
im System verfügbaren IP-Adressen
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
, welche sich im Arbeitsverzeichnis
befinden muss, ermittelt.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
und
ISOLATION
bei virtuellen Hosts nicht berücksichtigt
werden.
AUTO
verwendet hierbei
alle im System verfügbaren IP-Adressen
[S]
(strickt) wirkt die Begrenzung der Leerlaufzeit auch auf ausgehende
Server-Datenströme, der Wert 0 ignoriert das Timeout;
OFF
wird die Protokollierung
deaktiviert
[S]
können versteckte Einträge des Dateisystems für die
Anzeige unterdrückt werden
[MIMETYPES]
)
enthalten ist
Bsp. ACCESSLOG = ../system/access.[yyyy.MMdd].log
SSL
(Secure Socket Layer), TLS
(Transport Layer Security), Standard wenn nicht angegeben TLS
SunX509
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
angegeben,
wird das generierte Zertifikat als .keystore
Datei im Benutzerverzeichnis
abgelegt. Je nach Betriebssystem werden unterschiedliche Benutzerverzeichnisse
verwendet. z.B. c:\Dokumente und Einstellungen\[Benutzer]\.keystore
unter Windows 2000/XP oder /home/[benutzer]/.keystore
auf
Unix-basierenden System../devwex/program
befindet und die JSSE zur Verfügung steht. Der Port kann frei gewählt
werden, wobei 443 als Standard-Port für HTTPS verwendet wird.[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 = VIRTUELL > PHYSISCH [OPTION]
[M]
kann
die Modulnutzung erweitert werden, womit dann unabhängig vom
Server-Parameter METHODS
alle angefragten HTTP-Methoden
an das Modul weitergereicht werden. Hilfreich ist diese Option,
wenn ein Modul die bestehenden HTTP-Methoden erweitert.
ACC
)
DIRECTION:A = /system > ../system
/system
wird das physische Verzeichnis
../system
verwendet
DIRECTION:B = /doc > ../documents [A]
/documents
, /documentation
und /doc/test.cgi?cmd=123
wird auf das physische Verzeichnis
../documents
ohne Dateiangabe verwendet
DIRECTION:C = /test > http://www.xxx.zzz [R]
/test
erfolgt eine Weiterleitung
zu http://www.xxx.zzz
DIRECTION:D = /control > example.Connector [M]
/control
wird die Klasse
Connector
aus dem Paket example
, welches sich
im Klassenpfad des Servers befinden muss, als Modul ausgeführt
DIRECTION:E = /program [C]
/program
wird verweigert
SYSTEM:NAME = VERWEIS [OPTION]
302
verfügbar.
SYSTEM:INDEX = ../service/directory.html
../service/directory.html
verwendet
SYSTEM:404 = ../service/error.404.html
404
wird die Datei ../service/error.404.html
verwendet
SYSTEM:404 = http://www.xxx.zzz/404.php [R]
404
erfolgt eine Weiterleitung
zur Adresse http://www.xxx.zzz/404.php
./devwex/system/index.html
eingebettet, per CSS zugewiesen und qualifizieren sich über Datengruppe,
Datentyp und Dateiendung, welche als CSS-Attribute eingetragen werden.
[D]
sowie der optionalen Angabe
vom Bereich (Realm) zusammen. Daher ist die Konfiguration in den Sektionen
REF
und ACC
erforderlich. In der Sektion REF
wird der virtuelle Pfad, zu dem optional ein physischer Pfad angegeben
werden kann, mit der Basic Authentication eingetragen. Die Angabe der
Zugriffsrechte erfolgt dann in der Sektion ACC
. Hier werden
die Benutzer und deren Passwörter vorgehalten.[acc:none]
stellt dabei eine Sonderfunktion
dar, da diese Angabe die übergeordnete Autorisierung für den
angegebenen und alle untergeordneten Pfade aufhebt. Werden in der selben
Definition weitere gültige Referenzen angeben, werden diese ignoriert.[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]
macht den Unterschied)[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 alle enthaltenen Unterverzeichnissen
sind nur für ausgewählte Benutzer und mit Passwort zugänglich.
Ausgenommen davon ist das Verzeichnis /access/public
und
dessen Unterverzeichnisse.
/access
können nur die Benutzer
"ua"
und dem Passwort "pa"
, "ub"
und dem Passwort "pb"
sowie "uc"
mit dem
Passwort "pc"
zugreifen. Auch der Zugriff auf alle
Unterverzeichnisse, ist mit Ausnahme von /access/section
und /access/section/protected
, nur für diese Benutzer
möglich.
/access/section
mit allen Unterverzeichnissen
kann von den Benutzern "ua"
mit dem Passwort "pa"
und "ub"
mit dem Passwort "pbb"
verwendet
werden./access/section/protected
ist ausschliesslich für den Benutzer "uc"
mit
dem Passwort "pcc"
möglich.
/access/public
wird die Basic /
Digest Access Authentication aufgehoben und kann ohne Login und
Passwort genutzt und Unterverzeichnisse wieder mit Basic Access
Authentication versehen werden.
0x07 0x07
, danach folgen die Umgebungsvariablen bis zum ersten
Auftreten vom Steuerzeichen 0x01
. Ab hier wird der für
das CGI typische Request-Body übertragen.[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...
DATEIERWEITERUNG = METHODEN > ANWENDUNG [OPTION]
CGI = POST GET > c:/example.exe
cgi
wird der Anwendung Example zugewiesen,
welche bei Anfragen mit der Dateiendung cgi
im Pfad gestartet
wird, der Pfad zur Scriptdatei wird hier über die Umgebungsvariablen
SCRIPT_FILENAME
und PATH_TRANSLATED
übergeben
CGI = POST GET > c:/example.exe [C]
cgi
wird der Anwendung Example zugewiesen,
welche bei Anfragen mit der Dateiendung cgi
im Pfad gestartet
wird, der Pfad zur Scriptdatei wird hier der Anwendung als Startargument
übergeben
CGI = POST GET > c:/example.exe [I]
cgi
wird der Anwendung Example zugewiesen,
welche bei Anfragen mit der Dateiendung cgi
im Pfad unter
Verwendung vom DCGI gestartet wird, der Pfad zur Scriptdatei wird auch
hier über die Umgebungsvariablen SCRIPT_FILENAME
und
PATH_TRANSLATED
übergebenPHP = POST GET > c:/php/php.exe
php
wird PHP als auszuführende
CGI-Anwendung zugewiesen
CGI = POST GET > c:/perl/bin/perl.exe [C]
cgi
wird Perl als auszuführende
CGI-Anwendung zugewiesen
JAR = POST GET > java -jar [P][F].jar [I]
jar
wird Java als auszuführende
DCGI-Anwendung zugewiesen.
JAR = POST GET > java -jar [C] [I]
jar
wird Java als auszuführende
DCGI-Anwendung zugewiesen
EXE = POST GET > [C] [I]
exe
wird als auszuführende DCGI-Anwendung
definiert
EXE = POST GET > [C]
exe
wird als auszuführende CGI-Anwendung
definiert
SSX = POST GET > com.seanox.ssx.Connector [M]
ssx
wird dem im Klassenpfad befindlichen
Modul com.seanox.ssx.Connector
zugewiesen
[SERVER:X:ENV]
gesetzt
[SERVER:X:ENV]
gesetzt
[SERVER:X:ENV]
gesetzt
[+]
, wird der komplette Inhalt einer Zeile verwendet.Bsp. PATH = ./documents;./libraries;./system [+]
PATH [+] = ./documents;./libraries;./system
php.ini
berücksichtigt
werden, sollten diese in diesem Verzeichnis abgelegt werden.
php.ini
in das Arbeitsverzeichnis von Devwex abgelegt oder dem PHP der Pfad mit
dem Startparameter -c
mitgeteilt werden. Ab Version 4.x von
PHP sind die Einträge cgi.rfc2616_headers = 1
für
die korrekte Arbeitsweise der PHP-Funktion header();
und
für die Ausführungssicherheit cgi.force_redirect = 0
und cgi.redirect_status_env = 302
erforderlich. Letzteres
kann alternativ in der Sektion [SERVER:X:ENV]
der Konfigurationsdatei
devwex.ini
durch Eintrag REDIRECT_STATUS = 302
gesetzt werden.
DOCROOT
genutzt werden. Ein spezielles
CGI-BIN
ist nicht vorgesehen.
*.exe
,
*.com
) können unter Windows auch mit einer alternativen
Dateiendung verwendet werden. Wenn z.B. CGI- oder DCGI-Anwendungen als
Windows-Anwendungen (*.exe
oder *.com
) einsetzten
werden, kann für diese eine beliebige Dateiendung vergeben und verwenden
werden. So lässt sich zum Beispiel die Datei example.exe
in example.cgi
umbennen und verwenden. Die Konfiguration
gestaltet sich dann wie folgt: CGI = POST GET > [C]
ALL
werden alle eingehenden
Methoden verarbeitet.
PARAMETER = WERT
WEBSERVER = DEVWEX
WEBSERVER
wird mit dem Wert DEVWEX
eingerichtet
PATH
, SYSTEMDRIVE
, SYSTEMROOT
und für PHP REDIRECT_STATUS = 302
, als Umgebungsvariablen
in der Konfigurationsdatei devwex.ini
gesetzt werden. Ohne
Wert werden Umgebungsvariablen nicht berücksichtigt.
[?]
am Ende eines Parameters,
kann diesem ein dynamischer Wert zugewiesen werden, welcher beim Programmstart
über Startargumente oder System-Properties festgelegt wird. Somit
können z.B. systemrelevante Umgebungsvariablen, wie PATH
,
SYSTEMDRIVE
und SYSTEMROOT
für Windows,
dynamisch übergeben werden. Weitere Informationen zu diesem Thema
sind auch im Abschnitt zur Konfigurationsdatei
enthalten.
NAME = METHODE BEDINGUNG FUNKTION PARAMETER WERT [A] ... > VERWEIS [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
im Body übergeben
werden, nicht zur Verfügung stehen.
FILTER-A = GET NOT EQUALS ACCEPT-LANGUAGE EN
GET
wird verweigert, wenn im Request-Header das
Feld Accept-Language
nicht EN
entspricht.
FILTER-B = GET NOT CONTAINS ACCEPT-LANGUAGE EN
GET
wird verweigert, wenn im Request-Header das
Feld Accept-Language
nicht EN
enthält.
FILTER-C = GET IS EQUALS ACCEPT-LANGUAGE EN
GET
wird verweigert, wenn im Request-Header das
Feld Accept-Language
EN
entspricht.
FILTER-D = GET IS CONTAINS ACCEPT-LANGUAGE EN
GET
wird verweigert, wenn im Request-Header das
Feld Accept-Language
EN
enthält.
FILTER-E = GET IS STARTS REMOTE_ADDR 192.168.Die Methode
GET
wird verweigert, wenn die CGI-Umgebungsvariable
REMOTE_ADDR
mit 192.168.
beginnt.
FILTER-F = GET IS ENDS SCRIPT_URL .dat
GET
wird verweigert, wenn die CGI-Umgebungsvariable
SCRIPT_URL
mit .dat
endet.
FILTER-G = GET IS CONTAINS PATH /documents [A] GET IS EMPTY REFERER
GET
wird verweigert, wenn im Request-Header der
Parameter PATH
/documents
enthält und das
Feld REFERER
im Request-Header leer ist.
FILTER-H = GET IS CONTAINS PATH /private > ../system/error.403.html
GET
wird verweigert, wenn im Request-Header der
Parameter PATH
/private
enthält, als Template
für der Statusinformation 403
wird dabei auf die Datei
../system/error.403.html
verwiesen.
FILTER-I = GET IS CONTAINS PATH /private > http://www.xxx.zzz/403.php [R]
GET
erfolgt, wenn im Request-Header der Parameter
PATH
/private
enthält, die Weiterleitung
zur Adresse http://www.xxx.zzz/403.php
.
FILTER-J = GET IS ENDS PATH .do > example.Connector [A:...] [B:...] [M]
GET
und wenn im Request-Header der Parameter
PATH
mit .do
endet, wird das Modul Connector
mit den zusätzlichen Parametern A
und B
aus dem Paket example
aufgerufen, welches sich im Klassenpfad
des Server befinden muss.
FILTER-K = ALL ALWAYS > example.Connector [A:...] [B:...] [M]
Connector
mit den zusätzlichen
Parametern A
und B
aus dem Paket example
aufgerufen, welches sich im Klassenpfad des Server befinden muss
CODE = TEXT
200 = Success
HTTP/1.0 200 Success
404 = Document Not Found
HTTP/1.0 404 Document Not Found
MIMETYPE = DATEIERWEITERUNG DATEIERWEITERUNG ...
application/octet-stream = com exe class
*.com
, *.exe
und *.class
werden dem Mimetype application/octet-stream
zugeordnet.