// I will rewrite it but I'm too lazy to const fs = require('fs'); const http = require('http'); // std::string let GNAAHeaderTemplate = fs.readFileSync('header.html', 'utf8'); const GNAAFooter = fs.readFileSync('footer.html', 'utf8'); // std::unordered_map const HTMLType = { 'Content-Type': 'text/html;charset=UTF-8' }; // Memoization, but I'm not sure if this works properly in JS // std::vector <- but the string is also used as a binary cache let Contents = []; // std::function function ReadAsset(FileName) { if (!Contents[FileName]) Contents[FileName] = fs.readFileSync(FileName); return Contents[FileName]; } // std::vector let Dasein = []; // std::function(std::string)> async function FileExistence(FileName) { if (!Dasein[FileName]) Dasein[FileName] = await fs.promises .access(FileName) .then(() => true, () => false); return Dasein[FileName]; } /* * struct Page { * std::string href, Name; * }; * std::vector */ const Pages = [ {href: "/", Name: "Home"}, {href: "/corporate", Name: "Corporate"}, {href: "/products", Name: "Products"}, {href: "/support", Name: "Support"}, {href: "/testimonials", Name: "Testimonials"}, {href: "/faq", Name: "FAQ"}, {href: "/contact", Name: "Contact"}, {href: "/join", Name: "Join"}, {href: "/members", Name: "Members"}, {href: "/gayniggers/from/outer/space", Name: "Movie"}, ]; // req: http.ClientRequest // res: http.ServerResponse async function GNAAServer(req, res) { try { res.setHeader("Cache-Control","max-age=148869"); res.setHeader("Pragma","max-age=148869"); // For dinosaur browsers res.setHeader("Connection","close"); res.removeHeader("Timeout"); const GenerateHeader = () => { let ret = `' }; const GNAAHeader = GNAAHeaderTemplate + GenerateHeader(); console.log( new Date().toLocaleString(), req.headers.host, req.url, '"' + req.headers['user-agent'] + '"' ); // std::string let Request = ''; // bool let finished = false; // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types // std::vector> const MimeTypes = { css: 'text/css', png: 'image/png', jpg: 'image/jpg', gif: 'image/gif', mp4: 'video/mp4', wav: 'audio/wav', ico: 'image/vnd.microsoft.icon', svg: 'image/svg+xml', } const NotFound = () => { res.writeHead(404, HTMLType); Request += GNAAHeader; Request += `

Not Found

The page you were looking for "` Request += req.url; Request += `" was not found on this site.
`; Request += GNAAFooter; res.end(Request) }; // std::vector const StaticPages = [ '', 'corporate', 'products', 'support', 'testimonials', 'faq', 'join', //'members', ] if (StaticPages.includes(req.url.slice(1))) { res.writeHead(200, HTMLType); Request += GNAAHeader; Request += ReadAsset('.' + (req.url === '/' ? '/index' : req.url) + '.html'); res.end(Request + GNAAFooter); } else if (req.url === "/members") { res.writeHead(200,HTMLType); res.end(ReadAsset("./members.html")); } else if (req.url === "/gayniggers/from/outer/space") { res.writeHead(200, HTMLType); res.end(` GayNiggers From Outer Space `) } else if (req.url.startsWith('/assets') || req.url.startsWith('/lastmeasure') || req.url === "/gayniggers/from/outer/space/gay.mp4" || req.url === '/favicon.ico') { const FilePath = '.' + req.url; const FileExists = await FileExistence(FilePath); if (FileExists) { const FileExt = require('path') .extname(FilePath) .slice(1) .toLowerCase(); res.writeHead(200, { 'Content-Type': MimeTypes[FileExt] }) res.end(ReadAsset(FilePath)); } else NotFound(); } else if (req.url === '/contact') { res.writeHead(200, HTMLType) Request += GNAAHeader Request += `

Contact



' InputFields.forEach(x => { Request += `` }) Request += `` Request += `
` if (req.method === 'POST') { const stream = fs.createWriteStream('gayniggers.txt', { flags: 'a' }); let body = '' req.on('data', chunk => { body += chunk if (body.length > 1e6) // spam detection req.connection.destroy(); }) let ParsedBody = {} let ParsedText = {} req.on('end', () => { ParsedBody = require('querystring').parse(body) ParsedText = JSON.stringify(ParsedBody) + '\n' stream.write(ParsedText) console.log(ParsedText) // std::vector const Fields = [ 'Name', 'Subject', 'E-mail', 'Message', ] let /*bool*/ empty = false // std::vector let EmptyFields = []; [...Fields.slice(0,3),"content"].forEach((x) => { let str = Array .prototype .filter .call(x.toLowerCase(), y => { return y !== '-'; }) .join('') if (!ParsedBody[str]) { empty = true EmptyFields.push(x) } //else console.log(ParsedBody[str]); }) /* * struct Tag { * std::string Placeholder, Name, Value; * }; * std::vector InputFields; */ let InputFields = []; Fields.slice(0, 3).forEach((i) => { let Name = Array.prototype .filter .call( i.toLowerCase(), (x) => { return x !== '-'; }) .join(''); InputFields.push({ Placeholder: i, Name: Name, Value: ParsedBody[Name] ? ParsedBody[Name] : "", }) }) if (empty) { Request += `You cannot leave the ` Request += EmptyFields[0] Request += ` blank.` } else { Request += `Thank you for contacting us!` InputFields.forEach((x) => { x.Value = "" }); ParsedBody['content'] = ""; } Request += '
` Request += x.Placeholder Request += '' Request += '
' Request += `
Message


` res.end(Request + GNAAFooter); }); } else/*GET*/ { Request += ` Name
Subject
E-mail
Message
`; Request += `

`; res.end(Request + GNAAFooter); } } else NotFound(); } catch (e) { console.error(e.message); res.writeHead(500); res.end('Something went wrong idk kek, try again nigger'); } } http.createServer(GNAAServer) .listen(1488/*, 127.0.0.1"*/);