Skip to content

Releases: seanox/devwex

5.7.0 20241214

14 Dec 12:21
Compare
Choose a tag to compare
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

27 Dec 15:17
Compare
Choose a tag to compare
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

07 Oct 11:44
Compare
Choose a tag to compare
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

17 Apr 07:35
Compare
Choose a tag to compare
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

17 Apr 07:33
Compare
Choose a tag to compare
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

17 Apr 07:31
Compare
Choose a tag to compare
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

17 Apr 07:29
Compare
Choose a tag to compare
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

17 Apr 07:27
Compare
Choose a tag to compare
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.