Compare commits

...

6 commits

Author SHA1 Message Date
Louis Lam
3b9f6f9690
Merge fd05aad398 into d2f71d11d6 2024-10-22 08:49:02 +00:00
Easy
d2f71d11d6
Update API URL to compatible with the latest version of ServerChan (#5227)
Some checks are pending
Auto Test / auto-test (18, ARM64) (push) Blocked by required conditions
Auto Test / auto-test (18, macos-latest) (push) Blocked by required conditions
Auto Test / auto-test (18, ubuntu-latest) (push) Blocked by required conditions
Auto Test / auto-test (18, windows-latest) (push) Blocked by required conditions
Auto Test / auto-test (20, ARM64) (push) Blocked by required conditions
Auto Test / auto-test (20, macos-latest) (push) Blocked by required conditions
Auto Test / auto-test (20, ubuntu-latest) (push) Blocked by required conditions
Auto Test / auto-test (20, windows-latest) (push) Blocked by required conditions
Auto Test / armv7-simple-test (18, ARMv7) (push) Waiting to run
Auto Test / armv7-simple-test (20, ARMv7) (push) Waiting to run
Auto Test / check-linters (push) Waiting to run
Auto Test / e2e-test (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Merge Conflict Labeler / Labeling (push) Waiting to run
json-yaml-validate / json-yaml-validate (push) Waiting to run
2024-10-22 10:48:51 +02:00
Frank Elsinga
fd05aad398
Merge branch 'master' into async-fs 2024-05-23 20:32:23 +02:00
Louis Lam
a70a2c6b35 Minor 2023-12-04 22:48:57 +08:00
Louis Lam
2f5a6d9648 Update docker.js 2023-12-04 20:46:57 +08:00
Louis Lam
21a6b4a131 WIP 2023-12-04 20:04:31 +08:00
5 changed files with 23 additions and 15 deletions

View file

@ -1,10 +1,10 @@
const axios = require("axios"); const axios = require("axios");
const { R } = require("redbean-node"); const { R } = require("redbean-node");
const https = require("https"); const https = require("https");
const fs = require("fs"); const fs = require("fs/promises");
const path = require("path"); const path = require("path");
const Database = require("./database"); const Database = require("./database");
const { axiosAbortSignal } = require("./util-server"); const { axiosAbortSignal, fileExists } = require("./util-server");
class DockerHost { class DockerHost {
@ -81,7 +81,7 @@ class DockerHost {
options.socketPath = dockerHost.dockerDaemon; options.socketPath = dockerHost.dockerDaemon;
} else if (dockerHost.dockerType === "tcp") { } else if (dockerHost.dockerType === "tcp") {
options.baseURL = DockerHost.patchDockerURL(dockerHost.dockerDaemon); options.baseURL = DockerHost.patchDockerURL(dockerHost.dockerDaemon);
options.httpsAgent = new https.Agent(DockerHost.getHttpsAgentOptions(dockerHost.dockerType, options.baseURL)); options.httpsAgent = new https.Agent(await DockerHost.getHttpsAgentOptions(dockerHost.dockerType, options.baseURL));
} }
try { try {
@ -143,7 +143,7 @@ class DockerHost {
* @param {string} url The docker host URL rewritten to https:// * @param {string} url The docker host URL rewritten to https://
* @returns {object} HTTP agent options * @returns {object} HTTP agent options
*/ */
static getHttpsAgentOptions(dockerType, url) { static async getHttpsAgentOptions(dockerType, url) {
let baseOptions = { let baseOptions = {
maxCachedSessions: 0, maxCachedSessions: 0,
rejectUnauthorized: true rejectUnauthorized: true
@ -156,10 +156,10 @@ class DockerHost {
let certPath = path.join(Database.dockerTLSDir, dirName, DockerHost.CertificateFileNameCert); let certPath = path.join(Database.dockerTLSDir, dirName, DockerHost.CertificateFileNameCert);
let keyPath = path.join(Database.dockerTLSDir, dirName, DockerHost.CertificateFileNameKey); let keyPath = path.join(Database.dockerTLSDir, dirName, DockerHost.CertificateFileNameKey);
if (dockerType === "tcp" && fs.existsSync(caPath) && fs.existsSync(certPath) && fs.existsSync(keyPath)) { if (dockerType === "tcp" && await fileExists(caPath) && await fileExists(certPath) && await fileExists(keyPath)) {
let ca = fs.readFileSync(caPath); let ca = await fs.readFile(caPath);
let key = fs.readFileSync(keyPath); let key = await fs.readFile(keyPath);
let cert = fs.readFileSync(certPath); let cert = await fs.readFile(certPath);
certOptions = { certOptions = {
ca, ca,
key, key,

View file

@ -739,7 +739,7 @@ class Monitor extends BeanModel {
} else if (dockerHost._dockerType === "tcp") { } else if (dockerHost._dockerType === "tcp") {
options.baseURL = DockerHost.patchDockerURL(dockerHost._dockerDaemon); options.baseURL = DockerHost.patchDockerURL(dockerHost._dockerDaemon);
options.httpsAgent = new https.Agent( options.httpsAgent = new https.Agent(
DockerHost.getHttpsAgentOptions(dockerHost._dockerType, options.baseURL) await DockerHost.getHttpsAgentOptions(dockerHost._dockerType, options.baseURL)
); );
} }

View file

@ -12,8 +12,9 @@ class ServerChan extends NotificationProvider {
const okMsg = "Sent Successfully."; const okMsg = "Sent Successfully.";
// serverchan3 requires sending via ft07.com // serverchan3 requires sending via ft07.com
const url = String(notification.serverChanSendKey).startsWith("sctp") const matchResult = String(notification.serverChanSendKey).match(/^sctp(\d+)t/i);
? `https://${notification.serverChanSendKey}.push.ft07.com/send` const url = matchResult && matchResult[1]
? `https://${matchResult[1]}.push.ft07.com/send/${notification.serverChanSendKey}.send`
: `https://sctapi.ftqq.com/${notification.serverChanSendKey}.send`; : `https://sctapi.ftqq.com/${notification.serverChanSendKey}.send`;
try { try {

View file

@ -4,7 +4,7 @@ const { sendInfo } = require("../client");
const { checkLogin } = require("../util-server"); const { checkLogin } = require("../util-server");
const GameResolver = require("gamedig/lib/GameResolver"); const GameResolver = require("gamedig/lib/GameResolver");
const { testChrome } = require("../monitor-types/real-browser-monitor-type"); const { testChrome } = require("../monitor-types/real-browser-monitor-type");
const fs = require("fs"); const fs = require("fs/promises");
const path = require("path"); const path = require("path");
let gameResolver = new GameResolver(); let gameResolver = new GameResolver();
@ -90,17 +90,17 @@ module.exports.generalSocketHandler = (socket, server) => {
} }
}); });
socket.on("getPushExample", (language, callback) => { socket.on("getPushExample", async (language, callback) => {
try { try {
let dir = path.join("./extra/push-examples", language); let dir = path.join("./extra/push-examples", language);
let files = fs.readdirSync(dir); let files = await fs.readdir(dir);
for (let file of files) { for (let file of files) {
if (file.startsWith("index.")) { if (file.startsWith("index.")) {
callback({ callback({
ok: true, ok: true,
code: fs.readFileSync(path.join(dir, file), "utf8"), code: await fs.readFile(path.join(dir, file), "utf8"),
}); });
return; return;
} }

View file

@ -19,6 +19,7 @@ const radiusClient = require("node-radius-client");
const redis = require("redis"); const redis = require("redis");
const oidc = require("openid-client"); const oidc = require("openid-client");
const tls = require("tls"); const tls = require("tls");
const fs = require("fs");
const { const {
dictionaries: { dictionaries: {
@ -1062,3 +1063,9 @@ module.exports.axiosAbortSignal = (timeoutMs) => {
} }
} }
}; };
module.exports.fileExists = (file) => {
return fs.promises.access(file, fs.constants.F_OK)
.then(() => true)
.catch(() => false);
};