removed self signed certificates
This commit is contained in:
parent
2de6b99390
commit
2815bd26cf
18
index.js
18
index.js
@ -1,7 +1,5 @@
|
||||
require('dotenv').config();
|
||||
const express = require('express');
|
||||
const https = require('https');
|
||||
const fs = require('fs');
|
||||
const axios = require('axios');
|
||||
const { createHash } = require('crypto');
|
||||
const archiver = require('archiver');
|
||||
@ -75,6 +73,7 @@ app.post('/hash', async (req, res) => {
|
||||
res.status(500).json({ error: 'Internal Server Error' });
|
||||
}
|
||||
});
|
||||
|
||||
// Function to download a GitHub repo as a zip file
|
||||
async function downloadGitHubRepo(owner, repo) {
|
||||
if (!owner || !repo) {
|
||||
@ -127,18 +126,11 @@ app.post('/download-repos', async (req, res) => {
|
||||
res.status(500).json({ error: 'Internal Server Error' });
|
||||
}
|
||||
});
|
||||
// HTTPS options (provide the paths to your SSL/TLS certificate and private key)
|
||||
const httpsOptions = {
|
||||
key: fs.readFileSync('server-key.pem'),
|
||||
cert: fs.readFileSync('server-cert.pem'),
|
||||
};
|
||||
|
||||
// Create HTTPS server
|
||||
const server = https.createServer(httpsOptions, app);
|
||||
|
||||
// Start the server
|
||||
server.listen(port, () => {
|
||||
console.log(`Server is running at https://localhost:${port}`);
|
||||
app.listen(port, () => {
|
||||
console.log(`Server is running at http://localhost:${port}`);
|
||||
});
|
||||
|
||||
// Export the Express API
|
||||
module.exports = app
|
||||
module.exports = app;
|
||||
|
||||
2
index.min.js
vendored
2
index.min.js
vendored
@ -1 +1 @@
|
||||
require("dotenv").config();const express=require("express"),https=require("https"),fs=require("fs"),axios=require("axios"),{createHash:createHash}=require("crypto"),archiver=require("archiver"),rateLimit=require("express-rate-limit"),app=express(),port=process.env.PORT||3e3;app.use(express.json());const allowedDomains=process.env.ALLOWED_DOMAINS.split(",");async function hashContent(content){const hash=createHash("sha256");return hash.update(content),hash.digest("hex")}async function downloadGitHubRepo(owner,repo){if(!owner||!repo)throw new Error("Missing owner or repo");const zipUrl=`https://github.com/${owner}/${repo}/archive/refs/heads/master.zip`;return(await axios.get(zipUrl,{responseType:"arraybuffer"})).data}app.use(((req,res,next)=>{const{origin:origin}=req.headers;allowedDomains.includes(origin)&&res.setHeader("Access-Control-Allow-Origin",origin),res.setHeader("Access-Control-Allow-Methods","GET, POST, OPTIONS"),res.setHeader("Access-Control-Allow-Headers","Content-Type"),res.setHeader("Access-Control-Allow-Credentials","true"),next()})),app.use(rateLimit({windowMs:6e4,max:1})),app.post("/hash",(async(req,res)=>{try{console.log("Request:",req.body);let{url:url}=req.body;if(!url)return res.status(400).json({error:"Missing URL in the request parameters"});Array.isArray(url)||(url=[url]);const promises=url.map((async url=>{const response=await axios.get(url,{responseType:"arraybuffer",timeout:1e4});return{url:url,fileHash:await hashContent(response.data)}}));let results=await Promise.all(promises);results=results.reduce(((acc,{url:url,fileHash:fileHash})=>(acc[url]=fileHash,acc)),{}),res.json(results)}catch(error){console.error("Error:",error.message),res.status(500).json({error:"Internal Server Error"})}})),app.post("/download-repos",(async(req,res)=>{try{let{urls:urls}=req.body;if(!urls)return res.status(400).json({error:"Missing urls in the request parameters"});Array.isArray(urls)||(urls=[urls]);const archive=archiver("zip");res.attachment("repos.zip");const downloadPromises=urls.map((async url=>{const[owner,name]=url.split("/").slice(-2);if(!owner||!name)return void console.error(`Invalid url format: ${url}`);const zipBuffer=await downloadGitHubRepo(owner,name);archive.append(zipBuffer,{name:`${owner}-${name}.zip`})}));await Promise.all(downloadPromises),archive.finalize(),archive.pipe(res)}catch(error){console.error("Error:",error.message),res.status(500).json({error:"Internal Server Error"})}}));const httpsOptions={key:fs.readFileSync("server-key.pem"),cert:fs.readFileSync("server-cert.pem")},server=https.createServer(httpsOptions,app);server.listen(port,(()=>{console.log(`Server is running at https://localhost:${port}`)})),module.exports=app;
|
||||
require("dotenv").config();const express=require("express"),axios=require("axios"),{createHash:createHash}=require("crypto"),archiver=require("archiver"),rateLimit=require("express-rate-limit"),app=express(),port=process.env.PORT||3e3;app.use(express.json());const allowedDomains=process.env.ALLOWED_DOMAINS.split(",");async function hashContent(content){const hash=createHash("sha256");return hash.update(content),hash.digest("hex")}async function downloadGitHubRepo(owner,repo){if(!owner||!repo)throw new Error("Missing owner or repo");const zipUrl=`https://github.com/${owner}/${repo}/archive/refs/heads/master.zip`;return(await axios.get(zipUrl,{responseType:"arraybuffer"})).data}app.use(((req,res,next)=>{const{origin:origin}=req.headers;allowedDomains.includes(origin)&&res.setHeader("Access-Control-Allow-Origin",origin),res.setHeader("Access-Control-Allow-Methods","GET, POST, OPTIONS"),res.setHeader("Access-Control-Allow-Headers","Content-Type"),res.setHeader("Access-Control-Allow-Credentials","true"),next()})),app.use(rateLimit({windowMs:6e4,max:1})),app.post("/hash",(async(req,res)=>{try{console.log("Request:",req.body);let{url:url}=req.body;if(!url)return res.status(400).json({error:"Missing URL in the request parameters"});Array.isArray(url)||(url=[url]);const promises=url.map((async url=>{const response=await axios.get(url,{responseType:"arraybuffer",timeout:1e4});return{url:url,fileHash:await hashContent(response.data)}}));let results=await Promise.all(promises);results=results.reduce(((acc,{url:url,fileHash:fileHash})=>(acc[url]=fileHash,acc)),{}),res.json(results)}catch(error){console.error("Error:",error.message),res.status(500).json({error:"Internal Server Error"})}})),app.post("/download-repos",(async(req,res)=>{try{let{urls:urls}=req.body;if(!urls)return res.status(400).json({error:"Missing urls in the request parameters"});Array.isArray(urls)||(urls=[urls]);const archive=archiver("zip");res.attachment("repos.zip");const downloadPromises=urls.map((async url=>{const[owner,name]=url.split("/").slice(-2);if(!owner||!name)return void console.error(`Invalid url format: ${url}`);const zipBuffer=await downloadGitHubRepo(owner,name);archive.append(zipBuffer,{name:`${owner}-${name}.zip`})}));await Promise.all(downloadPromises),archive.finalize(),archive.pipe(res)}catch(error){console.error("Error:",error.message),res.status(500).json({error:"Internal Server Error"})}})),app.listen(port,(()=>{console.log(`Server is running at http://localhost:${port}`)})),module.exports=app;
|
||||
@ -1,21 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDXTCCAkWgAwIBAgIJAL9JVpuIf9GMMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
|
||||
BAYTAklOMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
|
||||
aWRnaXRzIFB0eSBMdGQwHhcNMjMxMjA1MjIzODExWhcNMjQwMTA0MjIzODExWjBF
|
||||
MQswCQYDVQQGEwJJTjETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
|
||||
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||
CgKCAQEA8sHWJ/l1BHdh5m1ff8NnGxXU6kHQq6sNkemfo46veAIFx6KRwGookJSY
|
||||
JdFyv78F+oOINrdiTI1qDiRGHJooUZTkTnx/TGw34RcjNcUEy/KDGv5DhTEyqfrd
|
||||
M5puTtmNzS9CMpf0woQDszz33MlAPm0m7uYDhbuIU31URlWyvuCWq310PHsWsMlp
|
||||
1JolMwwrN1uGFf3L0Gw1N7DaiN++8D2aPphLNqhBe6wO3hOhh3ZWVRS9hZGF/gQC
|
||||
0Heg4M4jvEXBvRQlMxHSiV8Z/SmWq3qMW9Ta0E0geb2iGUzvM3zXUxNYSfM2vz+w
|
||||
9IgcdyRexFU3O1PRLXWIIIzBY9TuCwIDAQABo1AwTjAdBgNVHQ4EFgQUjqp32Dz8
|
||||
o+ti2M5lgNlkqx/ty9YwHwYDVR0jBBgwFoAUjqp32Dz8o+ti2M5lgNlkqx/ty9Yw
|
||||
DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAgs6WwidUP5bN2yun1pxk
|
||||
0ob4MsJHlUKIrWnWkY3Gim1GF5L5QjfjI29TPbynfjdRWndu2J8R3vwIsGhOoBpk
|
||||
WLFt50YmA5q/LgNLzWEOqiv0mA2WGONr9L5TeoaMgMZAE1pR8GBrRyNUqCTPErIu
|
||||
/zCWxFqESNe0Ao3LihUkFVE/Z92+B+wVGPhRYHP1Z8CgllQ3SmnVytjZMbr/2r1v
|
||||
cvqzhHwYNBqy37ql236jNNqYkgEp7eS47C0DzvUlsEau3EsKYW38a/ViYvF1vHmS
|
||||
xB4+EZ8WIx/VSe7vIbwpJS53E6EY1VH/Bm0RYZC/O/su6UApe7dRWxYZS/cInirB
|
||||
Xw==
|
||||
-----END CERTIFICATE-----
|
||||
@ -1,28 +0,0 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDywdYn+XUEd2Hm
|
||||
bV9/w2cbFdTqQdCrqw2R6Z+jjq94AgXHopHAaiiQlJgl0XK/vwX6g4g2t2JMjWoO
|
||||
JEYcmihRlOROfH9MbDfhFyM1xQTL8oMa/kOFMTKp+t0zmm5O2Y3NL0Iyl/TChAOz
|
||||
PPfcyUA+bSbu5gOFu4hTfVRGVbK+4JarfXQ8exawyWnUmiUzDCs3W4YV/cvQbDU3
|
||||
sNqI377wPZo+mEs2qEF7rA7eE6GHdlZVFL2FkYX+BALQd6DgziO8RcG9FCUzEdKJ
|
||||
Xxn9KZareoxb1NrQTSB5vaIZTO8zfNdTE1hJ8za/P7D0iBx3JF7EVTc7U9EtdYgg
|
||||
jMFj1O4LAgMBAAECggEAYbb8iSK0o5OaaLJl2nvBKPnktla/tBoqYC12ANQSdW/6
|
||||
+5zIpncU1P27MJ3aXqx5r5j6X2v5uW7C3eZkAmdbC1uvephKdWyqIYS6u44OnDmF
|
||||
5HusmhRvnFRKbdcfx8VyesEnGE5qS1HwW1mTO+AWaApvvYIAsPgHq/Oq1JTyWjos
|
||||
KV1uz6inWgpMljVMkZy08rfzie6q6GztEEw5UR+pjcLKqqtDYnnbLhnTrgf5Vxpr
|
||||
dATY2TXRYeSy+/U2Bb5Yd7X325OX8Wa0+tIPMkUm9/VYMYOtXfOoq2lp+pNgOj8l
|
||||
VdBrPkk4Rgos8hi/M9eS0rHb9NvE0xpCqixT0RnOoQKBgQD/1vIF/vjnPBfnPwIX
|
||||
cfOHxoHrtae1hPvrTP7DIHeU2Ws3TZLmQyr8iZCQM60XeP+tueo6lxjw+hB/LlGE
|
||||
/SNIMgQlpe4VnBBbNDFQ9TjJ46J2KAFrqE8r6waT6cAHytn79YIShb4dlD3FvAig
|
||||
or+768lgRFDhvkQAZAcTwaqIBQKBgQDy6Mqzes5kr9+tWyfYRk4Gs8MlDVzBaPrt
|
||||
/E5kmjMxD/yTpJwkCCDKXHT9e6r68jT0eGIDAjQBb1alIFeK/ppgqdR1r2U4ph5m
|
||||
lnCl2/7+uks3opyYota5cqFD8qIIO39rt7kWu4ICY7IezmTXqmeZZCpYAYibDng8
|
||||
+FlyMLnKzwKBgQDz1esp589WpCGsFpNpwQN4fqvI+YN0L+DibKnLU6BlT6suNFMz
|
||||
/wRzWLFdnsL0QjB9ZVpmqSfuVIdwj7bGZ3U/E9x7/V+jXPEB3Aa8wFt1n+1xa8Oe
|
||||
1fVPSFsmknyhcKa9y0pDWRDPpEATu5kFcNgIxTtS8wmbffnV3YAZRlW/+QKBgQDE
|
||||
VYp49RrbYRgOu24CLhkk66kgSqOdJGglcVg/ki8sSbqh71vQ98zhI0fgFlQFjz1k
|
||||
F+VIf0BfpIlI4FJB4zYOSVaTZJgQ6JwL2S7lsGJzq0nehw3BhWS+8bsM+5EhzE1a
|
||||
WF4+1IHpwoEWy0XQ10fzQHXFOkAa6+Adj7JkTKPvGwKBgQCmEnIUkFI+Od33i9Bi
|
||||
mOYVoBH+Gb7VqQIdPW0FejcgciBsN67h1/pGPv5Hjs45NRRs4b3qW3liDPhsuKlx
|
||||
DnFv0WUwt5QWi/FI3iTOeoazz+beHebBd7FZTSNBRbl5wLA0AwdWULidhPKBJ2Ox
|
||||
gHZw4XgqbRFVvOeVJqdEuKiMNA==
|
||||
-----END PRIVATE KEY-----
|
||||
Loading…
Reference in New Issue
Block a user