Express

Language: JavaScript · View source on GitHub

Dockerfile

FROM node:22-slim
WORKDIR /app
COPY src/Servers/ExpressServer/package.json .
RUN npm install --omit=dev
COPY src/Servers/ExpressServer/server.js .
ENTRYPOINT ["node", "server.js", "8080"]

Source

const express = require("express");

const app = express();
const port = parseInt(process.argv[2] || "9003", 10);

app.get("/", (_req, res) => {
  res.send("OK");
});

app.post("/", (req, res) => {
  const chunks = [];
  req.on("data", (chunk) => chunks.push(chunk));
  req.on("end", () => res.send(Buffer.concat(chunks)));
});

app.all('/cookie', (req, res) => {
  let body = '';
  const raw = req.headers.cookie || '';
  for (const pair of raw.split(';')) {
    const trimmed = pair.trimStart();
    const eq = trimmed.indexOf('=');
    if (eq > 0) body += trimmed.substring(0, eq) + '=' + trimmed.substring(eq + 1) + '\n';
  }
  res.set('Content-Type', 'text/plain').send(body);
});

app.all('/echo', (req, res) => {
  let body = '';
  for (const [name, value] of Object.entries(req.headers)) {
    if (Array.isArray(value)) value.forEach(v => body += name + ': ' + v + '\n');
    else body += name + ': ' + value + '\n';
  }
  res.set('Content-Type', 'text/plain').send(body);
});

app.listen(port, "127.0.0.1", () => {
  console.log(`Express listening on 127.0.0.1:${port}`);
});

Test Results

Loading results...

Compliance

Smuggling

Malformed Input

Caching

Cookies