
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
abhttpserver
Advanced tools
This abstract class can be instantiated to create a simple and easy to use HTTP server. It serves all HTTP and HTTPS requests concurrently on separate TCP/IP ports.
npm install abhttpserver
npm install @types/node
Starts an HTTP server on port 8080 which responds every client request with "Hello world!".
import { ABHttpServer, ABRequest } from './ABHttpServer'
import { ServerResponse } from 'http';
class MyServer extends ABHttpServer {
allMethods(request: ABRequest, response: ServerResponse) {
this.sendText(response, `Hello world!`)
}
}
var myServer = new MyServer(8080)
Start a HTTP and HTTPS server on ports 8080 and 8081). All requests from both servers are handled thru the same class methods. For GET requests with an URL /stats, the server sends back a JSON object with some server statistic, all other GET requests will receive a text line with the send URL. All POST requests will be answered with the data sent in the body of the POST request.
import { ABHttpServer, ABRequest} from './ABHttpServer'
import { ServerResponse } from 'http';
class MyServer extends ABHttpServer {
get(request: ABRequest, response: ServerResponse) {
if (request.url.path === 'stats') {
this.sendJSON(response, this.getStatistics())
} else {
this.sendText(response, `The URL sent was ${request.url.path}`)
}
}
post(request: ABRequest, response: ServerResponse) {
this.sendJSON(response, { data: `The raw data sent was ${request.http.data}` })
}
}
var myServer = new MyServer(8080, 8081)
Redirect all non-secure HTTP GET request to HTTPS.
import { ABHttpServer, ABRequest } from './ABHttpServer'
import { ServerResponse } from 'http';
class MyServer extends ABHttpServer {
get(request: ABRequest, response: ServerResponse) {
if (!request.http.tls) {
this.redirectUrl(response, `https://${request.server.hostname}:8081/${request.url.path}`)
return
}
this.sendText(response, `The secure connection is established`)
}
}
var myServer = new MyServer(8080, 8081)
Basic HTTP server to serve static files. The HTTP content type is set according to the file name extension.
import { ABHttpServer, ABRequest } from './ABHttpServer'
import { ServerResponse } from 'http';
class MyServer extends ABHttpServer {
get(request: ABRequest, response: ServerResponse) {
this.sendFile(response, request.url.path)
}
}
var myServer = new MyServer(8080, 8081)
Detailed debugging to the console is supported by setting the environment variable AB_DEBUG (all uppercase) to true. The debugging data includes most of the HTTP/HTTPS server events and may result in a lot of data sent to the console.
AB_DEBUG=true node app.js
2018-11-18T16:16:06.819Z ABHttpServer: Class version x.x.x constructor called (8080, 8081)
2018-11-18T16:16:06.829Z ABHttpServer: Creating HTTP server on port 8080
2018-11-18T16:16:06.834Z ABHttpServer: Creating HTTPS server on port 8081
2018-11-18T16:16:06.843Z ABHttpServer: HTTP server is listening
2018-11-18T16:16:06.843Z ABHttpServer: HTTP server started on port 8080
2018-11-18T16:16:06.843Z ABHttpServer: HTTPS server is listening
2018-11-18T16:16:06.843Z ABHttpServer: HTTPS server started on port 8081
2018-11-18T16:16:28.373Z ABHttpServer: HTTP client connected
2018-11-18T16:16:28.376Z ABHttpServer: HTTP client request received
2018-11-18T16:16:28.377Z ABHttpServer: <= HTTP/1.1 (Non-TLS) - Method GET - URL /anyUrl - Content-Length 12
2018-11-18T16:16:28.378Z ABHttpServer: => HTTP Status 200 - Content-Length 23 - Content-Type text/plain
2018-11-18T16:16:33.382Z ABHttpServer: HTTP server is idle
2018-11-18T16:16:52.725Z ABHttpServer: HTTPS client connected
2018-11-18T16:16:52.733Z ABHttpServer: HTTPS completed TLS handshaking
2018-11-18T16:16:52.734Z ABHttpServer: HTTPS client request received
2018-11-18T16:16:52.734Z ABHttpServer: <= HTTP/1.1 (TLSv1.2) - Method GET - URL /secureURL - Content-Length 12
2018-11-18T16:16:52.734Z ABHttpServer: => HTTP Status 200 - Content-Length 26 - Content-Type text/plain
2018-11-18T16:17:06.587Z ABHttpServer: HTTPS client request received
2018-11-18T16:17:06.587Z ABHttpServer: <= HTTP/1.1 (TLSv1.2) - Method POST - URL /SomeData - Content-Length 12
2018-11-18T16:17:06.587Z ABHttpServer: => HTTP Status 200 - Content-Length 45 - Content-Type application/json
See unlicense.org
This software shall be used for Good, not Evil.
You will find the source code on GitHub
Support is provided on a best efford base. If you have any question, suggestion or find any issues, please report them. You may also contact the original author thru email at the address andy.brunner@abdata.ch.
FAQs
Simple HTTP Server Framework
The npm package abhttpserver receives a total of 10 weekly downloads. As such, abhttpserver popularity was classified as not popular.
We found that abhttpserver demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.