From c6e68fac977ca97b03612264208c2372dcdcf8a0 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Fri, 4 Aug 2023 23:08:44 +0800 Subject: [PATCH] Follow up #2852 (#3527) --- server/database.js | 7 +++++++ server/docker.js | 20 ++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/server/database.js b/server/database.js index 42d642794..ba20663fb 100644 --- a/server/database.js +++ b/server/database.js @@ -26,6 +26,8 @@ class Database { static path; + static dockerTLSDir; + /** * @type {boolean} */ @@ -112,6 +114,11 @@ class Database { fs.mkdirSync(Database.screenshotDir, { recursive: true }); } + Database.dockerTLSDir = path.join(Database.dataDir, "docker-tls/"); + if (! fs.existsSync(Database.dockerTLSDir)) { + fs.mkdirSync(Database.dockerTLSDir, { recursive: true }); + } + log.info("db", `Data Dir: ${Database.dataDir}`); } diff --git a/server/docker.js b/server/docker.js index 11f066613..1a8c0a5d2 100644 --- a/server/docker.js +++ b/server/docker.js @@ -3,13 +3,14 @@ const { R } = require("redbean-node"); const version = require("../package.json").version; const https = require("https"); const fs = require("fs"); +const path = require("path"); +const Database = require("./database"); class DockerHost { - static CertificateBasePath = process.env.DOCKER_TLS_DIR_PATH || "data/docker-tls/"; - static CertificateFileNameCA = process.env.DOCKER_TLS_FILE_NAME_CA || "ca.pem"; - static CertificateFileNameCert = process.env.DOCKER_TLS_FILE_NAME_CA || "cert.pem"; - static CertificateFileNameKey = process.env.DOCKER_TLS_FILE_NAME_CA || "key.pem"; + static CertificateFileNameCA = "ca.pem"; + static CertificateFileNameCert = "cert.pem"; + static CertificateFileNameKey = "key.pem"; /** * Save a docker host @@ -67,7 +68,6 @@ class DockerHost { * @returns {number} Total amount of containers on the host */ static async testDockerHost(dockerHost) { - const options = { url: "/containers/json?all=true", headers: { @@ -141,11 +141,11 @@ class DockerHost { }; let certOptions = {}; - let dirName = url.replace(/^https:\/\/([^/:]+)(\/|:).*$/, "$1"); - let dirPath = DockerHost.CertificateBasePath + dirName + "/"; - let caPath = dirPath + DockerHost.CertificateFileNameCA; - let certPath = dirPath + DockerHost.CertificateFileNameCert; - let keyPath = dirPath + DockerHost.CertificateFileNameKey; + let dirName = (new URL(url)).hostname; + + let caPath = path.join(Database.dockerTLSDir, dirName, DockerHost.CertificateFileNameCA); + let certPath = path.join(Database.dockerTLSDir, dirName, DockerHost.CertificateFileNameCert); + let keyPath = path.join(Database.dockerTLSDir, dirName, DockerHost.CertificateFileNameKey); if (dockerType === "tcp" && fs.existsSync(caPath) && fs.existsSync(certPath) && fs.existsSync(keyPath)) { let ca = fs.readFileSync(caPath);