mirror of
https://github.com/spacebarchat/server.git
synced 2024-11-24 19:32:46 +01:00
Merge pull request #495 from KagurazakaNyaa/master
Add proxy support for hard-coded external network access
This commit is contained in:
commit
2f28924ae9
@ -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
782
api/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -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"
|
||||||
},
|
},
|
||||||
|
@ -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";
|
||||||
|
|
||||||
@ -11,7 +12,10 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
|||||||
|
|
||||||
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" }
|
||||||
});
|
});
|
||||||
|
@ -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";
|
||||||
|
|
||||||
@ -11,7 +12,10 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
|||||||
|
|
||||||
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" }
|
||||||
});
|
});
|
||||||
|
@ -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";
|
||||||
@ -34,12 +35,16 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
|||||||
|
|
||||||
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
958
bundle/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -92,7 +92,9 @@
|
|||||||
"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",
|
||||||
|
48210
cdn/package-lock.json
generated
48210
cdn/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -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
1196
gateway/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -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
708
util/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -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",
|
||||||
|
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user