--- title: SVR.JS change log excerpt: Learn more about changes introduced in various SVR.JS versions. date: 2023-12-21 17:10:14 --- ## SVR.JS 3.15.7 _Released in August 26, 2024_ * Fix bug in getting public IP address without crypto support. * Fix bug in partial content serving functionality. * Fix bug in the factory reset function. * Fix bug in the IP address match function. * Fix bug in the URL parser with href attribute of a parsed URL missing a port number. * Fix bug with config.json read errors being undefined. * Fix bugs in the block list. * Main process crashes no longer display as worker crashes. * Server crashes now results in exit code of 1 if no exit code is not specified. * Updated dependencies. ## SVR.JS 3.14.18 LTS _Released in August 26, 2024_ * Fix bug in getting public IP address without crypto support. * Fix bug in the factory reset function. * Fix bug in the IP address match function. * Fix bug with config.json read errors being undefined. * Fix bugs in the block list. * Server crashes now results in exit code of 1 if no exit code is not specified. * Updated dependencies. ## SVR.JS 3.15.6 _Released in August 7, 2024_ * Added new config.json property - optOutOfStatisticsServer. * Implemented sending data to the statistics server, so that SVR.JS can measure the popularity of the web server. ## SVR.JS 3.14.17 LTS _Released in June 13, 2024_ * Lifted PBKDF2 restrictions on Bun 1.1.13 and later. ## SVR.JS 3.15.5 _Released in June 13, 2024_ * Lifted PBKDF2 restrictions on Bun 1.1.13 and later. ## SVR.JS 3.15.4 _Released in May 30, 2024_ * Added cap on minimum number of workers to 12 to reduce idle memory usage. ## SVR.JS 3.15.3 _Released in May 21, 2024_ * Fixed bug in the URL parser (URLs with "@" got erroneously "sanitized" to "/"). ## SVR.JS 3.15.2 _Released in May 20, 2024_ * Removed the limit of 16 workers. ## SVR.JS 3.15.1 _Released in May 13, 2024_ * Added Content-Range support for HTML files. * MIME type lookups are now performed once, not twice. * Optimized static file serving function. ## SVR.JS 3.14.16 LTS _Released in May 6, 2024_ * Prevented DoS attacks performed with forward proxy HTTP requests with malformed URLs. ## SVR.JS 3.15.0 _Released in May 6, 2024_ * Changed URL parser from wrapper over WHATWG URL parser to custom regex-based URL parser. * Optimized server code. * Redesigned default error pages. * Removed blocking file system calls from the directory listing function. * Replaced _path.extname()_ function with regex-based function. ## SVR.JS 3.14.15 _Released in April 29, 2024_ * Fixed crashes related to the request ID generation. * Optimized HTTP compression functionality. ## SVR.JS 3.14.14 _Released in April 27, 2024_ * _console.log_ and _stdout_ are now disabled, when _stdout_ is not a TTY (for example in situation when SVR.JS is running as a daemon), in order to improve performance. * Errors that occurred, while adding SNI context to a server are now ignored. ## SVR.JS 3.14.13 _Released in April 24, 2024_ * Optimized code. * SVR.JS now uses _os.availableParallelism()_ function for determining amount of processes to fork, when it is available. ## SVR.JS 3.14.12 _Released in April 13, 2024_ * Fix ".dirimages" directory returning an 500 error, if it is not present in the web root. ## SVR.JS 3.14.11 _Released in April 7, 2024_ * Added CVE-2024-27982 Node.JS vulnerability warning. * Fixed bug with Brotli compression not working, when SVR.JS is running on Bun. * Improved the performance of the server. ## SVR.JS 3.14.10 _Released in April 2, 2024_ * Disabled trailing slash removal for proxy requests. ## SVR.JS 3.14.9 _Released in April 2, 2024_ * Changed default file extensions compression exclude list. * Lifted _scrypt_ restrictions on Bun. * Optimized server script size (268 KiB => 256 KiB). * The compression exclude list is now in SVR.JS itself. ## SVR.JS 3.14.8 _Released in March 29, 2024_ * Fixed bug with _res.writeHead_ method. ## SVR.JS 3.14.7 _Released in March 19, 2024_ * Fixed bug with request domain names not showing in server logs. ## SVR.JS 3.14.6 _Released in March 17, 2024_ * Added CVE-2024-22019 Node.JS vulnerability warning. * Improved protection against user enumeration in HTTP authentication. * Replaced block list message with generic 403 Forbidden error. * Replaced some instances of "blacklist" with "block list". * Some terminal output is now bold. * Updated SVR.JS log viewer (_logviewer.js_) and log highlighter (_loghighlight.js_) * When "block localhost" CLI command is executed, SVR.JS now adds "localhost" to the block list instead of "::ffff:localhost". ## SVR.JS 3.14.5 _Released in March 9, 2024_ * Fixed "www." URL redirect functionality. * Improved HTTP/1.x API compatibility with HTTP/2. ## SVR.JS 3.14.4 _Released in March 3, 2024_ * Updated _tar_ and _graceful-fs_ libraries. * Added support for URLs with double slashes. * Rewritten HTTP to HTTPS redirect functionality. * Changed default directory listing icons. ## SVR.JS 3.14.3 _Released in February 11, 2024_ * Fixed bug with URLs beginning with multiple slashes being rewritten incorrectly. ## SVR.JS 3.14.2 _Released in February 7, 2024_ * Added new SVR.JS mod and server-side JavaScript property: _authUser_. ## SVR.JS 3.14.1 _Released in February 2, 2024_ * Added support for IP-based virtual hosts. * Fixed SVR.JS crashes with _X-SVR-JS-From-Main-Thread_ header and unknown client IPs. ## SVR.JS 3.4.42 LTS _Released in February 2, 2024_ * Custom head and foot inclusion is now returning 500 error in case of server error instead of crashing the server. ## SVR.JS 3.14.0 _Released in January 24, 2024_ * Added new _config.json_ properties: _useClientCertificate_, _rejectUnauthorizedClientCertificates_, _cipherSuite_, _ecdhCurve_, _tlsMinVersion_, _tlsMaxVersion_, _signatureAlgorithms_ and _http2Settings_. * Added support for web root postfixes (along with postfix prefixes). * Custom head and foot inclusion is now returning 500 error in case of server error instead of crashing the server. ## SVR.JS 3.13.1 _Released in January 18, 2024_ * Fixed error handling for invalid URL rewrite regexes. * Fixed bug with non-working HTTP proxy handler (excluding CONNECT method). ## SVR.JS 3.4.41 LTS _Released in January 14, 2024_ * Removed all remnants of "DorianTech". * Mitigated log file injection vulnerability for HTTP authentication. * Mitigated log file injection vulnerability for SVR.JS mod file names. * SVR.JS no longer crashes, when access to a log file is denied. ## SVR.JS 3.13.0 _Released in January 14, 2024_ * Added support for skipping URL rewriting, when the URL refers to a file or a directory. * Dropped support for svrmodpack. * Added support for 307 and 308 redirects (both in config.json and in redirect() SVR.JS API method). * Mitigated log file injection vulnerability for HTTP authentication. * Mitigated log file injection vulnerability for SVR.JS mod file names. * SVR.JS no longer crashes, when access to a log file is denied. ## SVR.JS 3.12.3 _Released in December 30, 2023_ * Removed all remnants of "DorianTech". * Fixed bug with wildcard in domain name selectors. ## SVR.JS 3.12.2 _Released in December 16, 2023_ * SVR.JS now refuses to start with misconfigured SNI in order to prevent ReDoS vulnerabilities. * Add _Host_ header pre-processing. * Changed SNI regular expression generation function. ## SVR.JS 3.4.40 LTS _Released in December 16, 2023_ * SVR.JS now refuses to start with misconfigured SNI in order to prevent ReDoS vulnerabilities. ## SVR.JS 3.12.1 _Released in December 12, 2023_ * Added client errors, server errors, and malformed HTTP request counts to SVR.JS status page. * Fixed multiple XSS vulnerabilities. ## SVR.JS 3.4.39 LTS _Released in December 12, 2023_ * Invalid compression exclusion list regexes no longer crash SVR.JS. * Fixed multiple XSS vulnerabilities. ## SVR.JS 3.12.0 _Released in December 3, 2023_ * Added trailing slash redirect support. * Added new _config.json_ property — _environmentVariables_. * Replaces base 1000 size prefixes with base 1024 ones. * Invalid compression exclusion list regexes no longer crash SVR.JS. * Changed invalid regex error message. * Corrected language errors — replaced _recieve_ with _receive_. ## SVR.JS 3.4.38 LTS _Released in November 12, 2023_ * SVR.JS now sends configuration file saving request to one random good worker instead of all workers to prevent configuration file corruption. * Fixed crashes due to destroyed HTTP/2 stream (Node.JS bug: [https://github.com/nodejs/node/issues/24470](https://github.com/nodejs/node/issues/24470)) * Fixed crash while trying to report communication problem with workers. ## SVR.JS 3.11.0 _Released in November 12, 2023_ * SVR.JS now sends configuration file saving request to one random good worker instead of all workers to prevent configuration file corruption. * Fixed crashes due to destroyed HTTP/2 stream (Node.JS bug: [https://github.com/nodejs/node/issues/24470](https://github.com/nodejs/node/issues/24470)) * Fixed language errors in HTTP error code descriptions, error console messages and the index page. * Updated the logo in the SVR.JS log viewer. ## SVR.JS 3.4.37 LTS _Released in September 17, 2023_ * Fixed bug with non-standard code regex replacements ## SVR.JS 3.10.3 _Released in September 17, 2023_ * Fixed bug with non-standard code regex replacements ## SVR.JS 3.10.2 _Released in September 12, 2023_ * Fixed bug with mods (and server-side JavaScript) executing in wrong order (bug was related with access control vulnerability fix; bug was not present in LTS versions) ## SVR.JS 3.4.36 LTS _Released in September 12, 2023_ * Removed undocumented and non-working code. * Fixed bug: _.notindex_ files in directories now no longer cause server timeouts caused by non-working undocumented code. ## SVR.JS 3.10.1 _Released in September 12, 2023_ * Dropped _pretty-bytes_ dependency. * Removed undocumented and non-working code. * Fixed bug: _.notindex_ files in directories now no longer cause server timeouts caused by non-working undocumented code. * Replaced function converting byte count to human-readable representation with new one. ## SVR.JS 3.4.35 LTS _Released in September 11, 2023_ * Added warning about worker count being limited to one when using Bun 1.0 and newer with shimmed (not native) clustering module. * Disabled server-side JavaScript bug workaround for Bun 1.0 and newer (it's not needed anymore for these Bun versions). * Improved clustering shim for Bun. ## SVR.JS 3.10.0 _Released in September 11, 2023_ * Added warning about worker count being limited to one when using Bun 1.0 and newer with shimmed (not native) clustering module. * Disabled server-side JavaScript bug workaround for Bun 1.0 and newer (it's not needed anymore for these Bun versions). * Improved clustering shim for Bun. * Improved web root error handling. ## SVR.JS 3.4.34 LTS _Released in September 10, 2023_ * Changed _enableRemoteLogBrowsing_ property to be `false` by default. * Mitigated security vulnerability: Sensitive data is no longer leaked from temp directory inside SVR.JS installation directory. ## SVR.JS 3.9.6 _Released in September 10, 2023_ * Changed _enableRemoteLogBrowsing_ property to be `false` by default. * Fixed log files only partially saving on failed master startup. * Mitigated security vulnerability: Sensitive data is no longer leaked from temp directory inside SVR.JS installation directory. * SVR.JS now logs certificate loading errors. ## SVR.JS 3.4.33 LTS * Changed enableRemoteLogBrowsing property to be false by default. * Mitigated security vulnerability: Sensitive data is no longer leaked from temp directory inside SVR.JS installation directory. _This version is unpublished and no longer available for download, because of failed security vulnerability mitigation._ ## SVR.JS 3.9.5 * Changed enableRemoteLogBrowsing property to be false by default. * Mitigated security vulnerability: Sensitive data is no longer leaked from temp directory inside SVR.JS installation directory. _This version is unpublished and no longer available for download, because of failed security vulnerability mitigation._ ## SVR.JS 3.4.32 LTS _Released in September 8, 2023_ * Added "svrmodpack" deprecation warning. * Removed unmaintained primitive analytics mod. * Removed unmaintained and undocumented hexstrbase64 library. * Added TypeError workaround for Bun 1.0.0 ## SVR.JS 3.9.4 _Released in September 8, 2023_ * Changed warning about no support for HTTP/2. * Added "svrmodpack" deprecation warning. * Removed unmaintained primitive analytics mod. * Removed unmaintained and undocumented hexstrbase64 library. * Added TypeError workaround for Bun 1.0.0 ## SVR.JS 3.4.31 LTS _Released in September 7, 2023_ * Mitigated security vulnerability: SVR.JS mods and server-side JavaScript not using href or uobject.pathname in some path checks are no longer vulnerable to access control bypass (from SVR.JS configuration). ## SVR.JS 3.9.3 _Released in September 7, 2023_ * Mitigated security vulnerability: SVR.JS mods and server-side JavaScript not using href or uobject.pathname in some path checks are no longer vulnerable to access control bypass (from SVR.JS configuration). ## SVR.JS 3.4.30 LTS _Released in September 6, 2023_ * Mitigated security vulnerability: SVR.JS mods and server-side JavaScript using req.url are no longer vulnerable to path traversal (not including query strings). ## SVR.JS 3.9.2 _Released in September 6, 2023_ * Mitigated security vulnerability: SVR.JS mods and server-side JavaScript using req.url are no longer vulnerable to path traversal (not including query strings). ## SVR.JS 3.4.29 LTS _Released in September 5, 2023_ * Added new config.json property - exposeModsInErrorPages ## SVR.JS 3.9.1 _Released in September 5, 2023_ * Added new config.json property - exposeModsInErrorPages ## SVR.JS 3.9.0 _Released in September 3, 2023_ * Dropped support for undocumented unused non-standard SVR.JS-specific headers. * Fixed bug with _wwwredirect_. * Replaced HTTP => HTTPS redirect handler * Added support for listening to specific IP address. * Added new config.json property - useWebRootServerSideScript * Added notice about logged user (HTTP authentication). * Added validation of X-Forwarded-For header ## SVR.JS 3.4.28 LTS _Released in September 3, 2023_ * Added validation for X-Forwarded-For header. ## SVR.JS 3.4.27 LTS _Released in September 2, 2023_ * Dropped support for undocumented unused non-standard SVR.JS-specific headers. * Fixed bug with _wwwredirect_. ## SVR.JS 3.4.26 LTS _Released in September 2, 2023_ * Changed default SVR.JS configuration. * Disabled server-side script exposure by default. ## SVR.JS 3.8.1 _Released in September 2, 2023_ * Changed default SVR.JS configuration. * Disabled server-side script exposure by default. ## SVR.JS 3.8.0 _Released in September 1, 2023_ * Added partial virtual hosting support * Added _host_ field to _nonStandardCodes_ and _rewriteMap_ properties. * Added _userList_ field to _nonStandardCodes_ properties (with _scode_ set to 401). * Added new config.json properties: _errorPages_, _enableDirectoryListingVHost_ and _customHeadersVHost_. * Improved HTTP authentication error handling. ## SVR.JS 3.4.25 LTS _Released in August 31, 2023_ * Improved HTTP authentication error handling. * Updated SVR.JS license. ## SVR.JS 3.7.5 _Released in August 29, 2023_ * Fixed non-working blacklist. * Updated SVR.JS license. ## SVR.JS 3.4.24 LTS _Released in August 28, 2023_ * Added reverse DNS lookup support. ## SVR.JS 3.7.4 _Released in August 28, 2023_ * Added reverse DNS lookup support. ## SVR.JS 3.4.23 LTS _Released in August 25, 2023_ * Fixed server crashes while one of two ports are in use ## SVR.JS 3.7.3 _Released in August 25, 2023_ * Fixed server crashes while one of two ports are in use ## SVR.JS 3.4.22 LTS _Released in August 21, 2023_ * ENAMETOOLONG errors now correspond to 414 code. * EMFILE errors now correspond to 503 code. ## SVR.JS 3.7.2 _Released in August 21, 2023_ * ENAMETOOLONG errors now correspond to 414 code. ## SVR.JS 3.7.1 _Released in August 21, 2023_ * Fixed bug with SVR.JS hang-up check requests logged in server logs (bug occurred on upstream Node.JS v12.22.12). ## SVR.JS 3.4.21 LTS _Released in August 20, 2023_ * Changed descriptions of 501 and 503 errors. * Disabled open proxy in default server-side JavaScript. * Fixed NotImplementedError in "cluster" module when running SVR.JS on newer versions of Bun. * Fixed redirect loops related to URL sanitizer. * Fixed SVR.JS proxy API (fixed bug, which relied of calling wrong callback [Mod.callback] instead of proper one [Mod.proxyCallback]). * Improved Bun IPC shim connection error handling. * Improved server error handling for Bun. * Updated svrpasswd tool. ## SVR.JS 3.7.0 _Released in August 20, 2023_ * Added new config.json property - disableUnusedWorkerTermination. * Added option to rewrite "dirty" URLs - rewriteDirtyURLs. * Added PBKDF2 and scrypt support for HTTP authentication. * Added termination of unused workers. * Changed descriptions of 501 and 503 errors. * Disabled checking for hung up server processes, while SVR.JS is not yet listening. * Disabled open proxy in default server-side JavaScript. * Disabled X-SVR-JS-From-Main-Thread header for non-localhost clients. * EMFILE errors now correspond to 503 Service Unavailable error code. * Fixed NotImplementedError in "cluster" module when running SVR.JS on newer versions of Bun. * Fixed redirect loops related to URL sanitizer. * Fixed SVR.JS proxy API. (fixed bug, which relied of calling wrong callback [Mod.callback] instead of proper one [Mod.proxyCallback]) * Improved Bun IPC shim connection error handling. * Improved extension checking function in directory listing generation. * Improved server error handling for Bun. * SVR.JS now exits gracefully on "stop" command. * Updated svrpasswd tool. ## SVR.JS 3.4.20 LTS _Released in August 4, 2023_ * Improved reliability while loading server-side JavaScript. ## SVR.JS 3.6.4 _Released in August 4, 2023_ * Improved reliability while loading server-side JavaScript. ## SVR.JS 3.4.19 LTS _Released in August 3, 2023_ * Fixed bug with directory listing generating invalid HTML with custom head containing __ tag with attributes. ## SVR.JS 3.6.3 _Released in August 3, 2023_ * Fixed bug with directory listing generating invalid HTML with custom head containing __ tag with attributes. ## SVR.JS 3.4.18 LTS _Released in August 2, 2023_ * Fixed bug with ENOTDIR error (was 500, now it's 404). * Fixed bug with forbidden path checker. ## SVR.JS 3.6.2 _Released in August 2, 2023_ * Fixed bug with ENOTDIR error (was 500, now it's 404). * Fixed bug with forbidden path checker. * Optimized regular expression creating function. ## SVR.JS 3.4.17 LTS _Released in July 28, 2023_ * Improved URL sanitizer. * Fixed bug with formidable wrapper. ## SVR.JS 3.6.1 _Released in July 28, 2023_ * Added support for ETags. * Added new config.json property: enableETag. * Improved URL sanitizer. * Fixed bug with formidable wrapper. ## SVR.JS 3.6.0 _Released in July 28, 2023_ * Optimized sanitized URL comparison function. * Expanded warning messages. * Added support for Unix sockets and Windows named pipes. * Cleaned up SVR.JS code. ## SVR.JS 3.4.16 LTS _Released in July 26, 2023_ * Improved URL sanitizer and mitigates security vulnerability: attacker could use "..." to traverse directories, while SVR.JS is run in Windows. * Cleaned up code. ## SVR.JS 3.5.6 _Released in July 26, 2023_ * Improved URL sanitizer and mitigates security vulnerability: attacker could use "..." to traverse directories, while SVR.JS is run in Windows. * Cleaned up code. ## SVR.JS 3.4.15 LTS _Released in July 18, 2023_ * Fixed broken URL sanitation redirect. * Improved URL sanitizer. ("%2F" now turns into "/" instead of "%252F") ## SVR.JS 3.5.5 _Released in July 18, 2023_ * Fixed broken URL sanitation redirect. * Improved URL sanitizer. ("%2F" now turns into "/" instead of "%252F") ## SVR.JS 3.4.14 LTS _Released in July 18, 2023_ * Fixed bug: SVR.JS mods now load reliably with multiple threads on startup. ## SVR.JS 3.5.4 _Released in July 18, 2023_ * Fixed bug: SVR.JS mods now load reliably with multiple threads on startup. ## SVR.JS 3.4.13 LTS _Released in July 17, 2023_ * Improved compatibility with Bun 0.9.14. * Replaced more blocking system calls with non-blocking ones. ## SVR.JS 3.5.3 _Released in July 17, 2023_ * Improved compatibility with Bun 0.9.14. ## SVR.JS 3.5.2 _Released in July 17, 2023_ * Replaced more blocking system calls with non-blocking ones. ## SVR.JS 3.5.1 _Released in July 16, 2023_ * Added better HTTP error handler. ## SVR.JS 3.4.12 LTS _Released in July 16, 2023_ * Added better HTTP error handler. ## SVR.JS 3.5.0 _Released in July 16, 2023_ * Dropped support for Node.JS 8.x and 9.x. * Directory listing icons now show even, if ".dirimages" directory is missing from web root. * Updated formidable module. ## SVR.JS 3.4.11 LTS _Released in July 16, 2023_ * Added support for Brotli compression. ## SVR.JS 3.4.10 _Released in July 15, 2023_ * Added OCSP module loading failure warning. * SVR.JS now displays error message, when it's run on JS runtime non-compatible with Node.JS. ## SVR.JS 3.4.9 _Released in July 14, 2023_ * Added new config.json option: enableOCSPStapling. * Added support for OCSP stapling. * Added new dependency: ocsp * Replaced some blocking system calls in directory listing function with non-blocking ones. * Optimized HTTP basic authentication algorithm. ## SVR.JS 3.4.8 _Released in July 13, 2023_ * Added HTTP authentication brute force protection. ## SVR.JS 3.4.7 _Released in July 11, 2023_ * Fixed SVR.JS crashing on Node.JS 8.x and 9.x. ## SVR.JS 3.4.6 _Released in July 10, 2023_ * Improved reliability in loading mods, server-side JavaScript and saving configuration file. ## SVR.JS 3.4.5 _Released in July 9, 2023_ * Fixed bug with custom head and SVR.JS status page. ## SVR.JS 3.4.4 _Released in July 7, 2023_ * req.socket.realRemoteAddress and res.socket.realRemotePort are now original users remote address and port respectively. ## SVR.JS 3.4.3 _Released in July 7, 2023_ * Fixed bug related with saving config.json. * Disabled gzip compression for .gz files. ## SVR.JS 3.4.2 _Released in July 7, 2023_ * Fixed bug with regular expression non-standard HTTP status codes. ## SVR.JS 3.4.1 _Released in July 5, 2023_ * SVR.JS now uses 2 public IP providers: SeeIP.org and ipify. ## SVR.JS 3.4.0 _Released in July 4, 2023_ * autocannon is no longer included with SVR.JS. * Fixed requirement on pretty-bytes library. * Removed version field from config.json * Fixed random worker crashes that occur, while config.json is saved. * SVR.JS no longer overrides config.json values, that are set after SVR.JS has been started. * SVR.JS no longer displays native Node.JS error message, while SVR.JS is run on read-only file system. ## SVR.JS 3.3.3 _Released in July 3, 2023_ * Improved reliability of loading mods and server-side JavaScript. ## SVR.JS 3.3.2 _Released in July 2, 2023_ * Calling callServerError or res.writeHead mutltiple times now invokes a warning instead of crashing SVR.JS. ## SVR.JS 3.3.1 _Released in July 1, 2023_ * Fixed bug: Logs didn't save during crash report generation. * Fixed bug: Worker crashes didn't display message about starting new workers. * Fixed bug with SVR.JS status page. * Added image icons for .ico and .icn files in directory listings. * Added OpenSSL 1.x EOL warning message. * SVR.JS now uses WHATWG URL parser instead of deprecated url.parse() function. ## SVR.JS 3.3.0 _Released in June 29, 2023_ * SVR.JS now forks itself at startup as many times the CPU host has cores (max 16 cores). * Fixed bug and potential security vulnerability: Non-standard codes didn't work, and thus attackers could bypass HTTP authentication. ## SVR.JS 3.2.1 _Released in June 28, 2023_ * Optimized SVR.JS blacklist and path sanitation code. * Mitigated security vulnerability: Attacker could access directory listing of directory above web root using "/.." path. ## SVR.JS 3.2.0 _Released in June 28, 2023_ * Optimized SVR.JS code. * Logs from single-threaded SVR.JS now begin with "singlethread". * Cyclic links now causes server to return 508 error instead of 404 error. ## SVR.JS 3.1.2 _Released in June 27, 2023_ * Improved forbidden paths access control. ## SVR.JS 3.1.1 _Released in June 26, 2023_ * SVR.JS is now able to run on Node.JS versions without crypto. * Changed IP provider to SeeIP (used, when crypto support is available). * Added new server status metrics: CPU usage percentage, Average request rate. * Added new command: restart. ## SVR.JS 3.1.0 _Released in June 26, 2023_ * SVR.JS is now able to run on Node.JS versions without crypto. * Added HTTP/2 no-support indication for Bun. * Added more indication of request methods. * Cleaned up SVR.JS code. * Updated supplied tar and minipass modules. ## SVR.JS 3.0.3 _Released in June 26, 2023_ * Changed public IP provider to ipify. ## SVR.JS 3.0.2 _Released in June 25, 2023_ * Fixed server-side JavaScript handling. ## SVR.JS 3.0.1 _Released in June 25, 2023_ * Improved error stack generation. * SVR.JS now serves files from directory on which script resides, unless wwwroot is specified. ## SVR.JS 3.0.0 _Released in June 25, 2023_ * 502 errors now logs their stacks. * Added better exception handler. * Added callServerError function for use in server-side JavaScript and mods. * Added cluster+ipc shim used when SVR.JS is running on Bun (SVR.JS can now run multi-threaded on Bun). * Added command-line parameter: -v/--version. * Added Content-Range support for static files. * Added custom Expect header handler. * Added custom request parse error handler. * Added date and time to logs. * Added --disable-mods option. (disables all mods and server side JavaScript) * Added displaying of contact information on 500 error. * Added experimental support for Bun (no SVR.JS command line for now...). * Added HTTP status code message to logs. * Added new command-line option: --single-threaded * Added new config.json properties: sni, serverAdministratorEmail, stackHidden, enableRemoteLogBrowsing, dontCompress, enableIPSpoofing, allowStatus, disableServerSideScriptExpose, exposeServerVersion, rewriteMap, secure, wwwroot, disableNonEncryptedServer and disableToHTTPSRedirect. * Added new depedency - formidable. * Added new method callable from mods: getCustomHeaders (gets headers from config.json file along with "Server" header). * Added new mod methods - getCustomHeaders, origHref, parsePostData and redirect. * Added new server-side JavaScript fields - customvar1, customvar2, customvar3, customvar4. * Added new utility: log highlighter at loghighlighter.js * Added new utility: log viewer at logviewer.js * Added new utility: SVR.JS user utility at svrpasswd.js * Added option to disable HTTP => HTTPS redirect server. * Added option to listen only for HTTPS. * Added {path} directive in custom error pages and headers. * Added RegEx support for non-standard error codes. * Added request ID to logs. * Added server error descriptions. * Added SNI support. * Added status page at /svrjsstatus.svr. * Added support for CIDR notation in non-standard codes. * Added support for CONNECT method (along with mod callbacks). * Added support for HTTP authentication. * Added support for RegEx for nonStandardCodes property. * Added support for X-Forwarded-For header. * Added URL rewriting. * Added warning, when SVR.JS is run as root. * Addedd error message in case SVR.JS is attempted to be started without Node.JS. * Allowed Node.JS versions without HTTP/2 support. (although HTTP/2 will not work) * Allowed starting without Internet connection. * Attackers can no longer bypass content blocking mechanism (non-standard codes set in config.json), when SVR.JS is run in Windows. * Attackers can no longer bypass content blocking mechanism, when SVR.JS is run in Windows. * Bare minimum now requires only "svr.js" script and node_modules directory. * Broken server availability addresses are now invisible in the console. * Change of working directory is now possible. * Changed demo server-side JavaScript to use new callServerError function. * Changed file type icons. * Changed HTTP error descriptions. * Changed log format. * Changed logo to new one. * Changed SVR.JS log descriptions. * config.json options which are not used by SVR.JS are now kept. * Configuration file now has diffrent placeholder content. * Connection messages when using SVR.JS as proxy aren't longer broken. * Connection with null req.socket are now dropped. * Corrected handling of multi-line log messages. * Custom headers are no longer set by default on proxy requests. * DEBUG: /crash.svr crashes the server (only in Nightly). * Default content type can be no longer set. * Deprecated config.json property: defaultpage. * Directory listing custom foots now are displayed even if foot.html file doesn't exist. * Directory listing custom heads now are displayed even if head.html file doesn't exist. * Directory listing no longer breaks with "<" and ">" characters (XSS mitigated). * Directory listing now shows original URL, when URL is rewritten. * Directory listing now shows whatever the file is block device, chacter device, FIFO or socket. * Directory traversal through symbolic links is no longer possible (new URL sanitation function). * Disabled HTTP compression for w3m and Netscape 4.x. * Error pages can use new format: . instead of .html. * Error stack can be now hidden using stackHidden property. * Factory reset no longer replaces config.json with placeholder one. * Files without extension are no longer presented as HTML content. * Fixed bug: Blacklist didn't save into config.json file. * Fixed bug: Downloading files above 2GB now works properly. * Fixed bug: Next thread no longer starts after closing ports. * Fixed bug related to broken access controls in SVR.JS when it's run in Windows. * Fixed bug with server version exposure. * Fixed crash on malformed public IP check response. * Fixed crashes with TCP resets, when using default handler for CONNECT method. * Fixed default config.json file. * Fixed directory listing, when URL contains "@" or "?" * Fixed filterHeaders method. * Fixed handling of some proxy requests by default redirect server. * Fixed HEAD method handling. * Fixed HTTP compression. * Fixed master process crash, when unable to fork process. * Fixed process crash, when unable to save to a log file. * Fixed proxy mod loader. * Fixed public IP address identification on server console. * Fixed security vulnerability: Attacker could append "%00" to URL to bypass access restrictions when SVR.JS is running on Bun. * Fixed security vulnerability: Attacker could send specially constructed HTTP request to bypass content block mechanism. * Fixed security vulnerability: Attacker could used encoded characters to bypass access restrictions. * Fixed server endlessly spawning threads in Node.JS 20.x. * Fixed SVR.JS not able to start in Android (d/node.js). * Fixed SVR.JS not able to start in Node.JS 16.x in Haiku OS. * Fixed URL mojibake. * Fixed website block, when SVR.JS is running on Bun * Fixed XSS bug in host name indication in default error pages. * HTTP => HTTPS redirect server now returns 400 error when no host is specified. * HTTP requests made to HTTPS server now return 497 error page. * HTTP requests using CONNECT method now return 501 error, if SVR.JS is run on Bun. * Icons on directory listings are no longer stretched, when padding is applies to the table. * Improved bad request handler. * Improved compatibility with Bun. * Improved compatibility with Node.JS 20.x. * Improved default error pages and directory listings for mobile devices. * Improved directory listings. * Improved file handling by URL. * Improved handling of 405 error. * Improved handling of OPTIONS method. * Improved HTTP => HTTPS redirect handler. * Improved HTTP/2 => HTTP/1.x translation API. * Improved possible server access URLs. * IPv6 URLs are now shown properly. * Links now show sizes of referenced file in directory listing. * Logs are no longer remotely accessible, when enableRemoteLogBrowsing is set to false. * Made HTTP => HTTPS redirect server more compatible with Node.JS 20.x. * Main script moved to "svr.js" file. * Many request problem will now result in 500 error instead of crash. * Mitigated path traversal at bad URL rewriting. * Mod loader no longer uses eval. * Node.JS version is now exposed in Server header (unless exposeServerVersion is false). * Non-standard codes no longer works on proxy requests. * Patched supplied fs-minipass module to work with Bun. * Removed strict depedencies for: tar, svrmodpack, hexstrbase64 and formidable. * Removed "Welcome to DorianTech Node.JS Server!" and "Goodbye." log, rendering welcomeMessage property useless. * Replaced 403 error page specific to disabled directory listing with generic one. * Replaced "domian" property with "domain" in config.json. * Replaced URL sanitation algorithm with faster one. * Server is now more protected against directory traversal attack. * Server no longer crashes on some malformed URIs. * Server now returns 403 error, when server software itself doesn't have permissions to access files. * Size function now requires pretty-bytes library. * Size function now uses custom fallback. * Stack traces from 500 errors are now displayed in logs. * SVR.JS doesn't use template config.json anymore, if config.json doesn't exist * SVR.JS no longer crashes on mod loading problem. * SVR.JS no longer crashes when displaying listing of directory containing invalid files. * SVR.JS no longer drops connections having null response socket. * SVR.JS now keeps unused properties of config.json file. * SVR.JS used as HTTPS server works even without key and cert fields in config.json. * SVR.JS version is no longer leaked via svr.js file, when exposeServerVersion property is set to false. * Updated supplied mime-types and mime-db modules. * Using SVR.JS as an proxy without proxy mod now returns no-proxy message. ## SVR.JS 2.1.4 _Released in June 18, 2023_ * Fixed security vulnerability: Attacker could used encoded characters to bypass access restrictions. (fix backported from SVR.JS 3.0.0-beta19) * Fixed access control bypass vulnerability, when server is run in Windows (fix backported from SVR.JS 3.0.0-beta19) ## SVR.JS 2.1.3 _Released in May 13, 2023_ * Added new config.json properties: exposeServerVersion and stackHidden (backported from SVR.JS 3.0.0-beta1) * Fixed path traversal vulnerability (fix backported from SVR.JS 3.0.0-beta1) * Fixed access control bypass vulnerability, when server is run in Windows (fix backported from SVR.JS 3.0.0-beta1) * Fixed server crash on malformed URL (fix backported from SVR.JS 3.0.0-beta1) ## SVR.JS 2.1.2 _Released in August 23, 2020_ * Methods other than "POST", "GET", "OPTIONS" and "HEAD" are allowed. ## SVR.JS 2.1.1 _Released in August 23, 2020_ * Fixed security vulnerability using directory listing to access secret files. ## SVR.JS 2.1.0 _Released in August 22, 2020_ * Added new property of config.json "enableDirectoryListingWithDefaultHead". * Added personalization of directory listing. * Added compability with Node.JS v8.10.0 * Replaced MIME type table with one from mime-types module. * Fixed bug: Directory listing shows wrong icons. * Changed icons in directory listing. * Changed size display in directory listing. * Deleted analytics inside SVR.JS - those analytics are now in seperate mod, of which SVR.JS comes with it. ## SVR.JS 2.0.0 _Released in August 21, 2020_ * Added support for .tar.gz mods and server side Javascript in .JS file. * Moved directory listing icons to seperate directory. * Replaced ASCII Art. * Added support for HTTP/2.0, disabled by default. * Changed default footer. * Added unpacking SVR.JS in first run. * Added checking, if head and foot exists. * Optimized directory listing for Lynx text client * Modified Server UI. * Added new properties of config.json "enableLogging" and "enableDirectoryListing". * Added "--clean" and "--reset" arguments. * Fixed security vulnerability: The block is only covering part of SVR.JS * Fixed bug: Not saving config.json on Linux. * Added multi-threading. * Deleted "getip" command. ## SVR.JS 1.2.2 _Released in August 16, 2020_ * Fixed bug, which caused mojibake in Unicode files. * Fixed bug, which caused SVR.JS to require SSL certificate, even if HTTPS mode is disabled. * Fixed bug, which caused SVR.JS to crash, if no mods are loaded. * Fixed bug, which caused SVR.JS to display blank directory, if URL is with query. ## SVR.JS 1.2.1 _Released in August 14, 2020_ * Fixed bug, which caused SVR.JS in Ubuntu to not work * Added platform showing ## SVR.JS 1.2.0 _Released in August 5, 2020_ * First released version of SVR.JS