diff --git a/Dockerfile b/Dockerfile index c0f3ab20..d4b423ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM nikolaik/python-nodejs:latest +FROM node:14 WORKDIR /usr/src/fosscord-server/ COPY . . WORKDIR /usr/src/fosscord-server/bundle diff --git a/api/package-lock.json b/api/package-lock.json index 58e31f70..e83d8c61 100644 Binary files a/api/package-lock.json and b/api/package-lock.json differ diff --git a/api/package.json b/api/package.json index 1c6b4fc0..3be75f68 100644 --- a/api/package.json +++ b/api/package.json @@ -86,6 +86,7 @@ "multer": "^1.4.2", "node-fetch": "^2.6.1", "patch-package": "^6.4.7", + "proxy-agent": "^5.0.0", "supertest": "^6.1.6", "typeorm": "^0.2.37" }, diff --git a/api/src/routes/gifs/search.ts b/api/src/routes/gifs/search.ts index 45b3ddca..9ad7a592 100644 --- a/api/src/routes/gifs/search.ts +++ b/api/src/routes/gifs/search.ts @@ -1,5 +1,6 @@ import { Router, Response, Request } from "express"; import fetch from "node-fetch"; +import ProxyAgent from 'proxy-agent'; import { route } from "@fosscord/api"; 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 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}`, { + agent, method: "get", headers: { "Content-Type": "application/json" } }); diff --git a/api/src/routes/gifs/trending-gifs.ts b/api/src/routes/gifs/trending-gifs.ts index b5f87222..6d97bf7c 100644 --- a/api/src/routes/gifs/trending-gifs.ts +++ b/api/src/routes/gifs/trending-gifs.ts @@ -1,5 +1,6 @@ import { Router, Response, Request } from "express"; import fetch from "node-fetch"; +import ProxyAgent from 'proxy-agent'; import { route } from "@fosscord/api"; import { getGifApiKey, parseGifResult } from "./trending"; @@ -10,8 +11,11 @@ router.get("/", route({}), async (req: Request, res: Response) => { const { media_format, locale } = req.query; 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}`, { + agent, method: "get", headers: { "Content-Type": "application/json" } }); diff --git a/api/src/routes/gifs/trending.ts b/api/src/routes/gifs/trending.ts index 7ee9337e..c81b4c08 100644 --- a/api/src/routes/gifs/trending.ts +++ b/api/src/routes/gifs/trending.ts @@ -1,5 +1,6 @@ import { Router, Response, Request } from "express"; import fetch from "node-fetch"; +import ProxyAgent from 'proxy-agent'; import { route } from "@fosscord/api"; import { Config } from "@fosscord/util"; import { HTTPError } from "lambert-server"; @@ -33,13 +34,17 @@ router.get("/", route({}), async (req: Request, res: Response) => { const { media_format, locale } = req.query; const apiKey = getGifApiKey(); + + const agent = new ProxyAgent(); const [responseSource, trendGifSource] = await Promise.all([ fetch(`https://g.tenor.com/v1/categories?locale=${locale}&key=${apiKey}`, { + agent, method: "get", headers: { "Content-Type": "application/json" } }), fetch(`https://g.tenor.com/v1/trending?locale=${locale}&key=${apiKey}`, { + agent, method: "get", headers: { "Content-Type": "application/json" } }) diff --git a/bundle/package-lock.json b/bundle/package-lock.json index 2e333605..9b5e38ae 100644 Binary files a/bundle/package-lock.json and b/bundle/package-lock.json differ diff --git a/bundle/package.json b/bundle/package.json index c75f5da7..f55599bf 100644 --- a/bundle/package.json +++ b/bundle/package.json @@ -92,11 +92,13 @@ "node-os-utils": "^1.3.5", "patch-package": "^6.4.7", "pg": "^8.7.1", + "proxy-agent": "^5.0.0", "reflect-metadata": "^0.1.13", + "sqlite3": "^5.0.2", "supertest": "^6.1.6", "typeorm": "^0.2.37", "typescript": "^4.1.2", "typescript-json-schema": "^0.50.1", "ws": "^7.4.2" } -} +} \ No newline at end of file diff --git a/cdn/package-lock.json b/cdn/package-lock.json index 38ce9eaa..3afc612a 100644 Binary files a/cdn/package-lock.json and b/cdn/package-lock.json differ diff --git a/docker-compose.yml b/docker-compose.yml index 9fe41e15..3c03220c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,24 +1,7 @@ version: "3" services: - db: - hostname: fosscord_db - image: mongo:latest - volumes: - - ./db:/data/db - 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 + server: + image: fosscord/server + build: . + ports: + - 3001:3001 diff --git a/gateway/package-lock.json b/gateway/package-lock.json index 5d6c5eec..3fa72689 100644 Binary files a/gateway/package-lock.json and b/gateway/package-lock.json differ diff --git a/gateway/package.json b/gateway/package.json index c7db2160..e02a0000 100644 --- a/gateway/package.json +++ b/gateway/package.json @@ -33,6 +33,7 @@ "lambert-server": "^1.2.11", "missing-native-js-functions": "^1.2.18", "node-fetch": "^2.6.1", + "proxy-agent": "^5.0.0", "typeorm": "^0.2.37", "ws": "^7.4.2" }, diff --git a/util/package-lock.json b/util/package-lock.json index 3f4ca445..bef98bf9 100644 Binary files a/util/package-lock.json and b/util/package-lock.json differ diff --git a/util/package.json b/util/package.json index 6f465584..0b8423a5 100644 --- a/util/package.json +++ b/util/package.json @@ -40,6 +40,7 @@ "dependencies": { "amqplib": "^0.8.0", "better-sqlite3": "^7.4.3", + "form-data": "^4.0.0", "jsonwebtoken": "^8.5.1", "lambert-server": "^1.2.12", "missing-native-js-functions": "^1.2.18", @@ -48,6 +49,7 @@ "node-fetch": "^2.6.1", "patch-package": "^6.4.7", "pg": "^8.7.1", + "proxy-agent": "^5.0.0", "reflect-metadata": "^0.1.13", "typeorm": "^0.2.38", "typescript": "^4.4.2", diff --git a/util/src/util/AutoUpdate.ts b/util/src/util/AutoUpdate.ts index cafc7bdb..531bd8b7 100644 --- a/util/src/util/AutoUpdate.ts +++ b/util/src/util/AutoUpdate.ts @@ -1,5 +1,6 @@ import "missing-native-js-functions"; import fetch from "node-fetch"; +import ProxyAgent from 'proxy-agent'; import readline from "readline"; import fs from "fs/promises"; import path from "path"; @@ -52,7 +53,8 @@ async function download(url: string, dir: string) { try { // TODO: use file stream instead of buffer (to prevent crash because of high memory usage for big files) // 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 tempDir = await fs.mkdtemp("fosscord"); fs.writeFile(path.join(tempDir, "Fosscord.zip"), buffer); @@ -72,7 +74,8 @@ async function getCurrentVersion(dir: string) { async function getLatestVersion(url: string) { try { - const response = await fetch(url); + const agent = new ProxyAgent(); + const response = await fetch(url, { agent }); const content = await response.json(); return content.version; } catch (error) {