From 05e3749d53e8958ec2c96057b8abd49e23ff0470 Mon Sep 17 00:00:00 2001 From: Dorian Niemiec Date: Sat, 31 Aug 2024 14:04:05 +0200 Subject: [PATCH] Replace README with README.md --- README | 30 ------------ README.md | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+), 30 deletions(-) delete mode 100644 README create mode 100644 README.md diff --git a/README b/README deleted file mode 100644 index 95a9f0c..0000000 --- a/README +++ /dev/null @@ -1,30 +0,0 @@ -This repository contains SVR.JS source code and its build system. - -Before doing anything, run "npm install". -To build SVR.JS along with the zip archive, run "npm run build". -To check SVR.JS code for errors with ESLint, run "npm run lint". -To fix and beautify SVR.JS code with ESLint and Prettier, run "npm run lint:fix". -To run SVR.JS from the "dist" folder, run "npm start". -To test SVR.JS itself, run "npm run dev". This removes existing configuration. -To perform unit tests with Jest, run "npm test". - -Structure: - - assets - files to copy into dist folder and to the archive - - dist - contains SVR.JS, assets, and SVR.JS utiltiies - - generatedAssets - assets generated by the build script - - out - contains SVR.JS zip archive - - src - contains SVR.JS source code - - index.js - entry point - - handlers - handlers for servers - - middleware - built-in middleware for servers - - res - resources - - utils - utility functions - - templates - EJS templates for build script to use - - tests - Jest unit tests - - middleware - tests for middleware - - utils - unit tests for utility functions - - utils - SVR.JS utilities (each utility has a single file) - - esbuild.config.js - the build script - - eslint.config.js - ESLint configuration - - jest.config.js - Jest configuration - - svrjs.json - SVR.JS version, name, documentation URL, and statistics server collection endpoint URL \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a458c42 --- /dev/null +++ b/README.md @@ -0,0 +1,142 @@ +

+ + + +

+

+ SVR.JS - a web server running on Node.JS
+ It's free as in freedom, scalable, secure, and configurable +

+ +* * * + +## Features + +#### Static file handling + +* Static file serving (even above 2GB) +* Directory listing serving +* Protection against path traversal +* Content-Range support (for non-HTML static files; also for HTML files from SVR.JS 3.15.1) +* Serving from web root different than SVR.JS installation directory + +#### Security + +* HTTPS support +* HTTP/2 support +* Built-in block list +* Protection against HTTP authentication brute force attacks (from SVR.JS 3.4.8; enabled by default) +* Ability to hide server version +* OCSP stapling support (from SVR.JS 3.4.9) + +#### Configuration and customization + +* Configurability via _config.json_ file +* Expandability via server-side JavaScript and mods +* Ability to serve non-standard error pages +* URL rewriting engine +* Event driven architecture powered by Node.JS, along with clustering. + +#### Compression and content delivery + +* Brotli, gzip and Deflate HTTP compression (Brotli supported since SVR.JS 3.4.11) +* SNI (Server Name Indication) support +* ETag support (from SVR.JS 3.6.1) +* Reverse proxy functionality (requires reverse-proxy-mod SVR.JS mod) +* Forward proxy functionality (requires forward-proxy-mod SVR.JS mod) + +#### Authentication and access control + +* HTTP basic authentication + +#### Gateway interfaces + +* CGI (Common Gateway Interface) support (requires RedBrick mod) +* SCGI (Simple Common Gateway Interface) support (requires OrangeCircle mod) +* JSGI (JavaScript Gateway Interface) support (requires YellowSquare mod) +* PHP support (PHP-CGI with RedBrick mod or PHP-FPM with GreenRhombus mod) + +#### Additional functionality + +* Logging +* Ability to display IP addresses, from which originally request was made (from reverse proxies; via X-Forwarded-For) + +## Building SVR.JS + +To build SVR.JS, you need Node.JS 18.0.0 or newer. + +Before building SVR.JS, install the npm packages using this command: +```bash +npm install +``` +After installing the packages, build SVR.JS with this command: +```bash +npm run build +``` +After running the command, you will get bundled SVR.JS script, around with built-in utilities and assets in the `dist` directory. You will also get a zip archive in `out` directory, that can be installed using SVR.JS installer + +## Installation (built from source) + +To install SVR.JS you just built from the source code, you can install it via SVR.JS installer for GNU/Linux or manually. + +If you want to install SVR.JS manually, you can read the [server documentation](https://svrjs.org/docs/tentative). + +If you want to install via SVR.JS installer for GNU/Linux, run this command: +```bash +curl -fsSL https://downloads.svrjs.org/installer/svr.js.installer.linux.20240509.sh > /tmp/installer.sh && sudo bash /tmp/installer.sh +``` + +You will be then prompted about the type of installation. Choose option “2” to install SVR.JS from the zip archive, and type in the path to the zip archive (hint: it is in the `out` directory). + +After typing the path, you may be prompted to install dependencies via GNU/Linux distribution’s package manager. Proceed with the installation of dependencies. + +After installation, SVR.JS should be listening at http://localhost. + +## SVR.JS documentation + +You can read the [SVR.JS documentation](https://svrjs.org/docs/tentative) to get information on how to use SVR.JS. + +## npm scripts + +To build SVR.JS along with the zip archive, run "npm run build". + +To check SVR.JS code for errors with ESLint, run "npm run lint". + +To fix and beautify SVR.JS code with ESLint and Prettier, run "npm run lint:fix". + +To run SVR.JS from the "dist" folder, run "npm start". + +To test SVR.JS itself, run "npm run dev". This removes existing configuration. + +To perform unit tests with Jest, run "npm test". + +## File structure + +The file structure for SVR.JS source code looks like this: + - assets - files to copy into dist folder and to the archive + - dist - contains SVR.JS, assets, and SVR.JS utiltiies + - generatedAssets - assets generated by the build script + - out - contains SVR.JS zip archive + - src - contains SVR.JS source code + - index.js - entry point + - handlers - handlers for servers + - middleware - built-in middleware for servers + - res - resources + - utils - utility functions + - templates - EJS templates for build script to use + - tests - Jest unit tests + - middleware - tests for middleware + - utils - unit tests for utility functions + - utils - SVR.JS utilities (each utility has a single file) + - esbuild.config.js - the build script + - eslint.config.js - ESLint configuration + - jest.config.js - Jest configuration + - svrjs.json - SVR.JS version, name, documentation URL, and statistics server collection endpoint URL + +## Contribute + +See [SVR.JS contribution page](https://svrjs.org/contribute) for details + +## License + +This project is licensed under the MIT/X11 License - see the [LICENSE](LICENSE) file for details. \ No newline at end of file