Releases: seanox/devwex
Releases · seanox/devwex
5.7.0 20241214
5.7.0 20241214
BF: Unix/Linux: Correction of the missing second start parameter in the bash script
BF: Windows: Correction of the missing second start parameter in the batch script
BF: HTTP(S): Correction of the Accept header when using CGI
The server has incorrectly determined the content type for the CGI.
Now the CGI must take care of the Accept header, as it should.
BF: Service: Optimization of automatic resource clean-up
BF: Service: Optimization for UTF-8
In relation to RFC 20, RFC 1345, RFC 2616, RFC 7230: 7-bit US-ASCII and in
extension ISO-8859-1 are supported for request and response.
CR: Unix/Linux: Optimization of bash scripts and runtime directory handling
- Optimization of JRE determination in the runtime directory
The Directory name does not matter, it is searched for files ./java,
./jre/bin/java and ./bin/java.
- Optimization when including the runtime sub-directories
The runtime directories and, if available, the bin subdirectory are added
to the PATH variable.
- Change of the automatic runtime-script integration
The ./runtime/scripts directory is omitted, the *.sh files are searched
in the root of the ./runtime directory.
CR: Windows: Optimization of batch scripts and runtime directory handling
- Optimization of JRE determination in the runtime directory
The Directory name does not matter, it is searched for files .\java.exe,
.\jre\bin\java.exe and .\bin\java.exe.
- Optimization when including the runtime sub-directories
The runtime directories and, if available, the bin subdirectory are added
to the PATH variable.
- Change of the automatic runtime-script integration
The .\runtime\scripts directory is omitted, the *.bat and *.cmd files are
searched in the root of the .\runtime directory.
CR: HTTP(S): Optimization of the composition of the UNIQUE_ID
CR: Documentation: Switch to Markdown
CR: Test: Review and Integration in build.xml (preparation for automation)
CR: Windows: Update of service-32.exe / service-64.exe (prunsrv.exe 1.4.0.0)
https://dlcdn.apache.org//commons/daemon/binaries/windows/
https://commons.apache.org/proper/commons-daemon/changes-report.html
5.6.0 20231227
BF: Review: Optimization and corrections
And the binary becomes a bit smaller again :-)
BF: Worker: Correction of the unwanted SocketException on stop and restart
The behavior is correct, only the error output is wrong.
BF: Worker: Correction of logging if the client closes the connection unexpectedly
In some cases, the http_host variable for logging was not yet set.
BF: HTML: Cleanup of the obsolete type attribute in the style tag
BF: Project: Update of slogan (Experimental Server Engine)
BF: (Class)Loader: Optimization and corrections of error handling
Important errors such as UnsupportedClassVersionError are no longer swallowed.
BR: Windows: Optimization and corrections for case insensitive commands
concerning service.cmd
CR: XAPI: Change method String Module.explain() to String Module.expose()
CR: SAPI: Change method String Server.explain() to String Server.expose()
CR: Documentation: Reduction to English
CR: Test: Integration of the test environment
The related devwex-test project is obsolete.
CR: Windows: Update of service-32.exe / service-64.exe (prunsrv.exe 1.3.4.0)
CR: Windows: Optimization of JRE determination
5.5.0 20221007
BF: Review: Optimization and corrections (without functional impact)
The binary is getting a little smaller again. I did not expect that :-)
BF: Generator: Correction when parsing structures
Structures deeper 65535 levels no longer cause an exception.
BF: SAPI: Correction of passed context to constructor
Until now the context always ended with section :INI -- that was wrong.
BF: HTTP(S): Added status 301 in the list of status codes
BF: HTTP(S): BLOCKSIZE, INTERRUPT, ISOLATION, TIMEOUT is changeable by virtual host
BF: Build: Empty storage directory is included in the zip file
CR: Build: Releases are now only available on the release page
CR: Build: Simplification when inserting release infos
CR: License: Changed to Apache License Version 2.0
CR: Service: Added configuration file as optional program argument for startup
usage: devwex [start] [ini file]
CR: SAPI: Constructors for servers support alternative signature(s)
Server(String context, Object initialize)
Server(String context, Initialize initialize)
CR: Windows: Update of service-32.exe / service-64.exe (prunsrv.exe 1.3.1.0)
CR: HTTP(S): Consolidation of TIMEOUT, DURATION, ISOLATION
TIMEOUT timeout for sockets (SO_TIMEOUT), request, streams, option [S] is omitted
ISOLATION maximum time of (X)CGI processes
If exceeded, the request is isolated and closed with an HTTP error status.
This also protects against blocked or extremely slow data streams.
DURATION is omitted
5.4.0 20210411
BF: HTTP(S) Server Status: Update of class 4xx
BF: HTTP(S) CGI: Correction of REQUEST_URI
Without normalization/decoding (unchanged as received from the client)
BF: HTTP(S) CGI: Correction of SCRIPT_URI / SCRIPT_URL
Without normalization/decoding (unchanged as received from the client)
BF: Service: Optimization / correction of Service::Print
BF: Documentation: Update / corrections
CR: HTTP(S) CGI: Output of the error pipe of the CGI process
CR: HTTP(S) CGI: PATH_CONTEXT replaces PATH_ABSOLUTE (omitted)
CR: Build: Target release replaced archive (omitted)
CR: Windows: Integration and merge of Seanox Devwex Service project
Maintenance, build and release of the Windows service integrated into this project.
The implementation of the service has been completely revised.
5.3.0 20200831
BF: HTTP(S) AccessLog: Correction in the file name of the log file (use http_host instead of remote_host)
BF: HTTP(S) Content Types: Correction of xml/xsl/xslt to use application/xslt+xml
BF: HTTP(S) Request: Correction of the request validation
In some cases the request is aborted with status 400 when the network connector is busy,
because the worker assumed that no data is being sent.
Statuses 408 and 413 may have been overwritten with status 400.
BF: Generator: Correction of expensive/hungry RegExp
e.g. #[xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx]
BF: Manual: Correction for chrome-based browsers
CR: Manual: Improvement of the navigation
CR: Project: Automatic update of the version in README.md
CR: Build: Harmonization when updating the version
CR: HTTP(S) Status: Added option [H] (Header Only)
The option is used in devwex.ini section STATUSCODES and indicates a status,
so that requests with this status are answered only with a header and without body.
CR: HTTP(S) CGI: Not allowed/configured methods are now answered with status 405
Previously the requests were answered with status 403.
CR: HTTP(S) CGI: Update of the PHP preparation
CR: HTTP(S) CGI: Change of the option [P] to [D]
CR: HTTP(S) Directory Index: Optimization / reduction of code
Generation of the file list in the Generator instead of the Worker.
CR: HTTP(S) Directory Index: Change from placeholder 'files' to 'file'
CR: HTTP(S) Directory Index: Omission of the formatting of the file size
Approach: The directory index should only provide locale independent data.
The formatting can later be done with CSS.
CR: HTTP(S) Directory Index: Realignment of the column 'type'
CR: Worker: Optimization / reduction of code
CR: Remote: Optimization / reduction of code
CR: Sources: Update of the comment format
CR: XAPI: Integration of cascaded components
e.g. com.seanox.xapi.Server > example.time.Server
Components/classes are bound by delegated/cascaded calls instead of inheritance.
This allows e.g. to use different constructors and the insertion of additional ClassLoaders.
Inheritance can still be used, also in combination.
5.2.0 20190502
BF: HTTP(S) Correction
- Basic Authentication / Digest Access Authentication: rules are used again case-insentive
BF: Generator: Correction when rendering successive placeholders #[...]#[...]
BF: HTTP(S) Request: Optimization/correction for invalid requests/connections without data streams
CR: Generator: Optimization / Review
- Optimization: Handling of segments/scopes/fragements
Improvement of dedicated and partial use
- Omission of namespaces, replacement by the dedicated/partial use of segments
- Change of syntax, omission of character ':' for segments
old: #[foo:[[...]]], new: #[foo[[...]]]
- Enhancement by a deep/recursive processing of Hashtable + Collections
- Change of the parser/renderer:
The template is initially prepared, the later addition of placeholders and/or
segments is no longer supported.
CR: HTTP(S) AccessLog: Optimization
- Change to a print formatted syntax
date/time %t... variables %[...]
- Change in default structure from filename to: <host>_<date>-access.log
CR: Project: Uniform use of ./LICENSE and ./CHANGES
CR: KeyStore: Change to use PKCS12`
5.1.0 20180505
BF: Initialize: Korrektur Smart-Modus
- im Smart-Modus erstellte Sections werden wieder gehalten
BF: Section: Korrektur Smart-Modus
- im Smart-Modus angeforderte ungueltige Schluessel liefern wieder null
CR: Projekt: Anpasung KeyStore
- Entwicklung: Umstellung auf einen eigenen KeyStore unabhaengig vom Program(Release)-Verzeichnis
CR: HTTP(S): Optimierung/Korrektur
- Worker: Umbennung der Methode Worder::Initialize in Worker::Initiate
- AccessLog: Optimierung der Maskierung vom ASCII Bereich 0x00-0x20 / 0x80-0xFF / 0x0100-0xFFFF
0x00-0x20 / 0x80-0xFF verwenden \xXX und 0x0100-0xFFFF verwendet \uXXXX
- Directory Index: Umstellung der BreadCrumb-Navigation von path/base/name auf location/path/name
CR: (X)CGI / HTTP-XAPI / Templates: Optimierung
- Environment-Variable path_base wurde geaendert in path_url, analog zu script_url
CR: Konfiguration: Aenderung der Server/Service-Sektion
- Aenderung der Server/Service-Sektion, diese muessen jetzt auf :INI enden, bisher war es :BAS
CR: SAPI: Anpassung bei Initialisieurng und Fehlerausgabe
- Erweiterung der Fehlerausgabe beim Laden/Starten
- Umstellung der Ausgabe beim Initialiseren auf den Namen der Sektiones
- Umstellung der Initialisieurng per Konstruktor auf den vollstaendigen Context (Name der Sektion)
CR: Dokumenation: Allgemeine Korrektur und Anpassungen
- Allgemeine Korrektur und Anpassungen
5.0.0 20171206
BF: HTTP SERVER:SSL: Korrektur vom fehlenden TrustManager
BF: HTTP PUT: Korrektur/Optimierung in der Unterscheidung von Datei/Verzeichnis
Die Ressource ist ein Directory, wenn keine Content-Length gesendet wird.
Ob die URL auf Slash endet oder nicht, ist egal.
BF: HTTP Range: Korrekturen
- HTTP Range x-x verrechnete sich ggf. um ein Byte
- HTTP Range -x lieferte nicht die letzten Bytes
- HTTP Range verwendet nun auch Status 416
- Toleranz wurde verringert, ungueltige Werte werden nicht mehr interpoliert
BF: HTTP Locate: Korrektur der Pfadverarbeitung (Windows)
Der Dot-(Back)Slash-Bug in Windows (Punkt vor dem (Back)Slash) wurde korrigiert.
Beispiel: https://example.local/forbidden./foo.html konnte den Schutz von
/forbidden aushebeln, da /forbidden. offiziell nicht existiert, Windows aber
automatisch daraus /forbidden macht und ggf. hinterlegte Regeln und Direktiven
nicht greifen, da diese nicht /forbidden. abdecken.
CR: Projekt: Optimierung
- Umstellung auf Java5/8
- Umstellung der Testumgebung auf JUnit
- Umstellung der Historie auf den internen ChangeLog (release.txt)
- Optimierung vom Build-Prozess/Skript
CR: Dokumentation / Layout: Ueberarbeitung/Optimierung/Erweiterung
CR: Service
- CLEANUP Ueberarbeitung/Optimierung
Unterstuetzt nur noch on/off, Standardwert: off
- Wegfall der erweiterten Ausgabe (Startoption *)
- Remote/Telnet-Client Ueberarbeitung/Optimierung
Umstellung auf eine Standard (127.0.0.1:25000) oder frei waehlbare
Netzwerkverbindung als Programm-Argument. Die Ermittlung der
Remote-Verbindung aus der devwex.ini entfaellt. Wird der Client entfernt
benutzt, wird nur noch devwex.jar benoetigt.
- Aenderung der Methode Service.call(Class, String) in Service.load(Class, String)
- Erweiterung um Service.print(String, boolean)
CR: Generator: Ueberarbeitung/Optimierung/Erweiterung
- Umbenennung in Template
- Vereinfachung/Umstellung der Syntax auf #[...] #[0x...] #[...:[[...]]]
- Erweiterung um maskierte Text/Daten/Zeichen
- Generierung vom Segmenten wird jetzt direkt im mit der Set-Methode unterstuetzt
- Optimierung vom Parser und in der Verarbeitung
CR: HTTP Session/Worker: Ueberarbeitung/Optimierung/Erweiterung
- Umbenennung in Worker
- Implementierung der der HTTP-Methoden in separaten do-Methoden
- allgemeine Umstellung auf die einheitliche Verwendung von CGI-Variablen
betrifft u.a. (X)CGI, Filter, Status, Tempaltes
Request-Parameter/Header-Parameter werden direkt nach dem
- Variable "realm" entfaellt, dafuer gibt es die CGI-Variablen: auth_user, auth_type, auth_realm
- Variable "reference" geaendert in "location"
- Variable "process" geaendert in "gateway"
CR: HTTP Request: Ueberarbeitung/Optimierung
- Zusammenfassung von SLICING und TIMEOUT
Das initiale Lesen vom Request wird nun durch TIMEOUT begrenzt.
SLICING als eigenstaendiger Parameter entfaellt.
CR: HTTP DCGI: Ueberarbeitung/Optimierung/Umstellung auf XCGI
- das CGI-Environment wird dem HTTP-Request vorangestellt
CGI-Environment[CRLF][CRLF]Request-Header[CRLF][CRLF]Request-Body
- DCGI/XCGI Option [I] geaendert in [X]
- DCGI/XCGI Option [F] geaendert in [N] (Name)
- DCGI/XCGI Option [E] entfaellt
CR: HTTP AccessLog: Ueberarbeitung/Optimierung/Umstellung
- Erweiterung um benutzerdefinierte Ausgaben/Formate
ASCII Bereich 0x00-0x06 wird als Leerzeichen verwendet
- Erweiterung um die Verwendung von CGI-Variablen auch im Dateinamen
CR: HTTP Filter: Ueberarbeitung/Optimierung/Erweiterung
- Erweiterung um "matches" und die Verwendung von RegEx
- Umstellung der AND-Verknuepfung von [A] auf [+]
- Umstellung auf die ausschliessliche Verwendung von CGI-Variablen
Alle Request-Parameter / Header-Parameter werden als CGI-Variablen (http_...) bereitgestellt.
Konvertierung: Parameter-A wird zu http_parameter_a
Neu ist die CGI-Variable request, dieser entspricht der ersten Zeile vom HTTP-Request.
Bsp. GET /... HTTP/1.0
CR: HTTP Virtual Paths: Optimierung
- Virtuelle Pfade fuer einzelne Dateien wird wieder unterstuetzt
CR: HTTP MIMETYPES: Umbenannt in MEDIATYPES
CR: HTTP SERVER:BAS/VIRTUAL:BAS: MIMETYPE umbenannt in MEDIATYPE
CR: HTTP VIRTUAL:BAS: SERVER definiert welche Server den virtuellen Host verwenden duerfen
CR: HTTP Templates: Ueberarbeitung/Optimierung/Erweiterung
- als Variablen stehen nur noch die CGI-Variablen zur Verfuegung
- Fehlerseiten/Statusseiten lassen sich gruppieren (status-000.html, status-0xx.html oder nur status.html).
Die Ausgabe kann ueber die CGI-Variable http_status gesteuert werden.
CR: HTTP: Erweiterung der CGI-Variablen
- neu: auth_user, auth_type, auth_realm
- neu: remote_user = auth_user
CR: HTTP SERVER:SSL
- STORE umbenannt in KEYSTORE
- neues Standard-Passwort fuer den Keystore: changeIt
- Erweiterung um die Umgebungsvariable AUTH_CERT zur Pruefung eingehender Zertifikate
bei der Client-Authentication / Mutual-Authentication
- CLIENTAUTH: Erweiterung um die Option AUTO fuer eine tollerantes Verhalten
bei ungueltigen oder fehlenden Zertifikaten (Request wird vom Server beantwortet,
ggf. mit einer Fehlerseite)
CR: HTTP XAPI: Ueberarbeitung/Optimierung/Erweiterung
- Vereinfachung der API auf die Mehtoden Module.service() in Module.filter()
zur Implementierung von Web-Modulen und Filtern
CR: Initialize: Ueberarbeitung/Optimierung/Erweiterung
- Erweiterung um multiples EXTENDS
- Erweiterung um die Verarbeitung von Hex-Daten (Maskierung von Daten/Zeichen)
- Erweiterung um eine wahlweises "smarte" Verhalten
Schluessel werden automatisch angelegt, leere automatisch verworfen, ...
- namensgleiche Sektionen und Werte fuehren nun zum konsequenten Ueberschreiben
ein Teilen von Sektionen ist nicht mehr moeglich
CR: Section: Ueberarbeitung/Optimierung/Erweiterung
- Erweiterung um die Verarbeitung von Hex-Daten (Maskierung von Daten/Zeichen)
- Erweiterung um eine wahlweises "smarte" Verhalten
Schluessel werden automatisch angelegt, leere automatisch verworfen, ...
- Erweiterung um das Laden von Umgebungsvariablen (Reihenfolge: Wert, System-Properties, Umgebungsvariable)
- namensgleiche Sektionen und Werte fuehren nun zum konsequenten Ueberschreiben
ein Teilen von Sektionen ist nicht mehr moeglich
CR: Remote: Ueberarbeitung/Optimierung/Erweiterung
- Response: Wegfall vom Praefix "INFO:" beim
- STATE geaendert in STATUS
CR: XAPI: Ueberarbeitung/Optimierung/Erweiterung
- Aenderung der Methode Module.getCaption() in Module.explain()
Die Methode ist optional.
- Aenderung der Methode Module.destroy() diese muss nun implementiert werden
- Aenderung der Initialiserung
Diese erfolgt nur noch ueber den Konstruktor Module(String options).
Der Aufruf der Methoden Module.initialize(String options) entfaellt.
- Erweiterung vom Logging beim Laden
CR: SAPI: Ueberarbeitung/Optimierung/Erweiterung
- Aenderung der Methode Server.getCaption() in Server.explain()
Die Methode ist optional.
- Aenderung der Methode Server.destroy() diese muss nun implementiert werden
- Umstellung auf das Laden von Servern ueber gleichnamige Klassen
optional kann ein Scope/Paket mit der Implementierung angegeben werden
- Optimierung bei Initialisieurng
- Optimierung bei Ueberpruefung der API vor dem Laden
- Umstellung auf eine dynamische und objektbasiert Initialisieurng
Der Name der moeglichen Server-Sektionen beginnen dabei mit Klassennamen
der Server-Implementierung, zu der optional mit dem Schluessel SCOPE ein
Paket angegeben werden kann. Dadurch entfallen bisher reservierte Sektionen
wie z.B. SERVER:REMOTE:BAS und zusaetzliche Namen wie z.B. REMOTE in SERVER:REMOTE:BAS.
Namen koennen auch weiterhin verwendet werden, sind aber nicht mehr Pflicht.
Die Initialisierung erfolgt nun primaer ueber Sektionen mit der Endung BAS
und wenn eine entsprechende Implementierung im ClassPath gefunden werden
kann.
- Beim Beenden der Server wartet der Service nun konsequent.
Das Timeout und Entladen bei nicht endenden Servern wurde verworfen.