1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-06 19:02:33 +01:00

Merge pull request #495 from KagurazakaNyaa/master

Add proxy support for hard-coded external network access
This commit is contained in:
Samuel 2021-10-23 15:36:15 -04:00 committed by GitHub
commit 2f28924ae9
15 changed files with 27414 additions and 24497 deletions

View File

@ -1,4 +1,4 @@
FROM nikolaik/python-nodejs:latest FROM node:14
WORKDIR /usr/src/fosscord-server/ WORKDIR /usr/src/fosscord-server/
COPY . . COPY . .
WORKDIR /usr/src/fosscord-server/bundle WORKDIR /usr/src/fosscord-server/bundle

782
api/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -86,6 +86,7 @@
"multer": "^1.4.2", "multer": "^1.4.2",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",
"patch-package": "^6.4.7", "patch-package": "^6.4.7",
"proxy-agent": "^5.0.0",
"supertest": "^6.1.6", "supertest": "^6.1.6",
"typeorm": "^0.2.37" "typeorm": "^0.2.37"
}, },

View File

@ -1,5 +1,6 @@
import { Router, Response, Request } from "express"; import { Router, Response, Request } from "express";
import fetch from "node-fetch"; import fetch from "node-fetch";
import ProxyAgent from 'proxy-agent';
import { route } from "@fosscord/api"; import { route } from "@fosscord/api";
import { getGifApiKey, parseGifResult } from "./trending"; import { getGifApiKey, parseGifResult } from "./trending";
@ -10,8 +11,11 @@ router.get("/", route({}), async (req: Request, res: Response) => {
const { q, media_format, locale } = req.query; const { q, media_format, locale } = req.query;
const apiKey = getGifApiKey(); const apiKey = getGifApiKey();
const agent = new ProxyAgent();
const response = await fetch(`https://g.tenor.com/v1/search?q=${q}&media_format=${media_format}&locale=${locale}&key=${apiKey}`, { const response = await fetch(`https://g.tenor.com/v1/search?q=${q}&media_format=${media_format}&locale=${locale}&key=${apiKey}`, {
agent,
method: "get", method: "get",
headers: { "Content-Type": "application/json" } headers: { "Content-Type": "application/json" }
}); });

View File

@ -1,5 +1,6 @@
import { Router, Response, Request } from "express"; import { Router, Response, Request } from "express";
import fetch from "node-fetch"; import fetch from "node-fetch";
import ProxyAgent from 'proxy-agent';
import { route } from "@fosscord/api"; import { route } from "@fosscord/api";
import { getGifApiKey, parseGifResult } from "./trending"; import { getGifApiKey, parseGifResult } from "./trending";
@ -10,8 +11,11 @@ router.get("/", route({}), async (req: Request, res: Response) => {
const { media_format, locale } = req.query; const { media_format, locale } = req.query;
const apiKey = getGifApiKey(); const apiKey = getGifApiKey();
const agent = new ProxyAgent();
const response = await fetch(`https://g.tenor.com/v1/trending?media_format=${media_format}&locale=${locale}&key=${apiKey}`, { const response = await fetch(`https://g.tenor.com/v1/trending?media_format=${media_format}&locale=${locale}&key=${apiKey}`, {
agent,
method: "get", method: "get",
headers: { "Content-Type": "application/json" } headers: { "Content-Type": "application/json" }
}); });

View File

@ -1,5 +1,6 @@
import { Router, Response, Request } from "express"; import { Router, Response, Request } from "express";
import fetch from "node-fetch"; import fetch from "node-fetch";
import ProxyAgent from 'proxy-agent';
import { route } from "@fosscord/api"; import { route } from "@fosscord/api";
import { Config } from "@fosscord/util"; import { Config } from "@fosscord/util";
import { HTTPError } from "lambert-server"; import { HTTPError } from "lambert-server";
@ -33,13 +34,17 @@ router.get("/", route({}), async (req: Request, res: Response) => {
const { media_format, locale } = req.query; const { media_format, locale } = req.query;
const apiKey = getGifApiKey(); const apiKey = getGifApiKey();
const agent = new ProxyAgent();
const [responseSource, trendGifSource] = await Promise.all([ const [responseSource, trendGifSource] = await Promise.all([
fetch(`https://g.tenor.com/v1/categories?locale=${locale}&key=${apiKey}`, { fetch(`https://g.tenor.com/v1/categories?locale=${locale}&key=${apiKey}`, {
agent,
method: "get", method: "get",
headers: { "Content-Type": "application/json" } headers: { "Content-Type": "application/json" }
}), }),
fetch(`https://g.tenor.com/v1/trending?locale=${locale}&key=${apiKey}`, { fetch(`https://g.tenor.com/v1/trending?locale=${locale}&key=${apiKey}`, {
agent,
method: "get", method: "get",
headers: { "Content-Type": "application/json" } headers: { "Content-Type": "application/json" }
}) })

958
bundle/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -92,11 +92,13 @@
"node-os-utils": "^1.3.5", "node-os-utils": "^1.3.5",
"patch-package": "^6.4.7", "patch-package": "^6.4.7",
"pg": "^8.7.1", "pg": "^8.7.1",
"proxy-agent": "^5.0.0",
"reflect-metadata": "^0.1.13", "reflect-metadata": "^0.1.13",
"sqlite3": "^5.0.2",
"supertest": "^6.1.6", "supertest": "^6.1.6",
"typeorm": "^0.2.37", "typeorm": "^0.2.37",
"typescript": "^4.1.2", "typescript": "^4.1.2",
"typescript-json-schema": "^0.50.1", "typescript-json-schema": "^0.50.1",
"ws": "^7.4.2" "ws": "^7.4.2"
} }
} }

48210
cdn/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +1,7 @@
version: "3" version: "3"
services: services:
db: server:
hostname: fosscord_db image: fosscord/server
image: mongo:latest build: .
volumes: ports:
- ./db:/data/db - 3001:3001
restart: unless-stopped
api:
hostname: fosscord_api
image: fosscord/api
depends_on:
- db
ports:
- 3001:3001
env_file: ./.docker/env
gateway:
hostname: fosscord_gateway
image: fosscord/gateway
depends_on:
- db
ports:
- 3002:3002
env_file: ./.docker/env

1196
gateway/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -33,6 +33,7 @@
"lambert-server": "^1.2.11", "lambert-server": "^1.2.11",
"missing-native-js-functions": "^1.2.18", "missing-native-js-functions": "^1.2.18",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",
"proxy-agent": "^5.0.0",
"typeorm": "^0.2.37", "typeorm": "^0.2.37",
"ws": "^7.4.2" "ws": "^7.4.2"
}, },

708
util/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -40,6 +40,7 @@
"dependencies": { "dependencies": {
"amqplib": "^0.8.0", "amqplib": "^0.8.0",
"better-sqlite3": "^7.4.3", "better-sqlite3": "^7.4.3",
"form-data": "^4.0.0",
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",
"lambert-server": "^1.2.12", "lambert-server": "^1.2.12",
"missing-native-js-functions": "^1.2.18", "missing-native-js-functions": "^1.2.18",
@ -48,6 +49,7 @@
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",
"patch-package": "^6.4.7", "patch-package": "^6.4.7",
"pg": "^8.7.1", "pg": "^8.7.1",
"proxy-agent": "^5.0.0",
"reflect-metadata": "^0.1.13", "reflect-metadata": "^0.1.13",
"typeorm": "^0.2.38", "typeorm": "^0.2.38",
"typescript": "^4.4.2", "typescript": "^4.4.2",

View File

@ -1,5 +1,6 @@
import "missing-native-js-functions"; import "missing-native-js-functions";
import fetch from "node-fetch"; import fetch from "node-fetch";
import ProxyAgent from 'proxy-agent';
import readline from "readline"; import readline from "readline";
import fs from "fs/promises"; import fs from "fs/promises";
import path from "path"; import path from "path";
@ -52,7 +53,8 @@ async function download(url: string, dir: string) {
try { try {
// TODO: use file stream instead of buffer (to prevent crash because of high memory usage for big files) // TODO: use file stream instead of buffer (to prevent crash because of high memory usage for big files)
// TODO check file hash // TODO check file hash
const response = await fetch(url); const agent = new ProxyAgent();
const response = await fetch(url, { agent });
const buffer = await response.buffer(); const buffer = await response.buffer();
const tempDir = await fs.mkdtemp("fosscord"); const tempDir = await fs.mkdtemp("fosscord");
fs.writeFile(path.join(tempDir, "Fosscord.zip"), buffer); fs.writeFile(path.join(tempDir, "Fosscord.zip"), buffer);
@ -72,7 +74,8 @@ async function getCurrentVersion(dir: string) {
async function getLatestVersion(url: string) { async function getLatestVersion(url: string) {
try { try {
const response = await fetch(url); const agent = new ProxyAgent();
const response = await fetch(url, { agent });
const content = await response.json(); const content = await response.json();
return content.version; return content.version;
} catch (error) { } catch (error) {