mirror of https://github.com/certd/certd
chore: basic 从pipeline中移除
parent
0f572f4cb3
commit
1274f56da8
|
@ -8,7 +8,7 @@ export * from './util.hash.js';
|
||||||
export * from './util.merge.js';
|
export * from './util.merge.js';
|
||||||
export * from './util.cache.js';
|
export * from './util.cache.js';
|
||||||
import sleep from './util.sleep.js';
|
import sleep from './util.sleep.js';
|
||||||
import { http } from './util.request.js';
|
import { http, download } from './util.request.js';
|
||||||
|
|
||||||
import { mergeUtils } from './util.merge.js';
|
import { mergeUtils } from './util.merge.js';
|
||||||
import { sp } from './util.sp.js';
|
import { sp } from './util.sp.js';
|
||||||
|
@ -25,6 +25,7 @@ import * as id from './util.id.js';
|
||||||
export const utils = {
|
export const utils = {
|
||||||
sleep,
|
sleep,
|
||||||
http,
|
http,
|
||||||
|
download,
|
||||||
sp,
|
sp,
|
||||||
hash: hashUtils,
|
hash: hashUtils,
|
||||||
promises,
|
promises,
|
||||||
|
|
|
@ -6,6 +6,8 @@ import { HttpsProxyAgent } from 'https-proxy-agent';
|
||||||
import nodeHttp from 'http';
|
import nodeHttp from 'http';
|
||||||
import * as https from 'node:https';
|
import * as https from 'node:https';
|
||||||
import { merge } from 'lodash-es';
|
import { merge } from 'lodash-es';
|
||||||
|
import { safePromise } from './util.promise';
|
||||||
|
import fs from 'fs';
|
||||||
export class HttpError extends Error {
|
export class HttpError extends Error {
|
||||||
status?: number;
|
status?: number;
|
||||||
statusText?: string;
|
statusText?: string;
|
||||||
|
@ -214,3 +216,38 @@ export function createAgent(opts: CreateAgentOptions = {}) {
|
||||||
httpsAgent,
|
httpsAgent,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function download(http: HttpClient, config: HttpRequestConfig, savePath: string) {
|
||||||
|
return safePromise((resolve, reject) => {
|
||||||
|
http
|
||||||
|
.request({
|
||||||
|
...config,
|
||||||
|
responseType: 'stream',
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
const writer = fs.createWriteStream(savePath);
|
||||||
|
res.data.pipe(writer);
|
||||||
|
writer.on('close', () => {
|
||||||
|
console.log('文件下载成功');
|
||||||
|
resolve(true);
|
||||||
|
});
|
||||||
|
//error
|
||||||
|
writer.on('error', err => {
|
||||||
|
console.error('下载失败', err);
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
//进度条打印
|
||||||
|
const totalLength = res.headers['content-length'];
|
||||||
|
let currentLength = 0;
|
||||||
|
res.data.on('data', (chunk: any) => {
|
||||||
|
currentLength += chunk.length;
|
||||||
|
const percent = ((currentLength / totalLength) * 100).toFixed(2);
|
||||||
|
console.log(`下载进度:${percent}%`);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.error('下载失败', err);
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Registrable } from "../registry/index.js";
|
import { Registrable } from "../registry/index.js";
|
||||||
import { FormItemProps } from "../dt/index.js";
|
import { FormItemProps } from "../dt/index.js";
|
||||||
import { HttpClient, ILogger, utils } from "../utils/index.js";
|
import { HttpClient, ILogger, utils } from "@certd/basic";
|
||||||
import _ from "lodash-es";
|
import _ from "lodash-es";
|
||||||
import { AccessRequestHandleReq } from "../core";
|
import { AccessRequestHandleReq } from "../core";
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { AccessContext, AccessDefine, AccessInputDefine } from "./api.js";
|
||||||
import { Decorator } from "../decorator/index.js";
|
import { Decorator } from "../decorator/index.js";
|
||||||
import _ from "lodash-es";
|
import _ from "lodash-es";
|
||||||
import { accessRegistry } from "./registry.js";
|
import { accessRegistry } from "./registry.js";
|
||||||
import { http, logger, utils } from "../utils/index.js";
|
import { http, logger, utils } from "@certd/basic";
|
||||||
|
|
||||||
// 提供一个唯一 key
|
// 提供一个唯一 key
|
||||||
export const ACCESS_CLASS_KEY = "pipeline:access";
|
export const ACCESS_CLASS_KEY = "pipeline:access";
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { RunHistory, RunnableCollection } from "./run-history.js";
|
||||||
import { AbstractTaskPlugin, PluginDefine, pluginRegistry, TaskInstanceContext, UserInfo } from "../plugin/index.js";
|
import { AbstractTaskPlugin, PluginDefine, pluginRegistry, TaskInstanceContext, UserInfo } from "../plugin/index.js";
|
||||||
import { ContextFactory, IContext } from "./context.js";
|
import { ContextFactory, IContext } from "./context.js";
|
||||||
import { IStorage } from "./storage.js";
|
import { IStorage } from "./storage.js";
|
||||||
import { createAxiosService, hashUtils, logger, utils } from "../utils/index.js";
|
import { createAxiosService, hashUtils, logger, utils } from "@certd/basic";
|
||||||
import { Logger } from "log4js";
|
import { Logger } from "log4js";
|
||||||
import { IAccessService } from "../access/index.js";
|
import { IAccessService } from "../access/index.js";
|
||||||
import { RegistryItem } from "../registry/index.js";
|
import { RegistryItem } from "../registry/index.js";
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { fileUtils } from "../utils/index.js";
|
import { fileUtils } from "@certd/basic";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import { logger } from "../utils/index.js";
|
import { logger } from "@certd/basic";
|
||||||
|
|
||||||
export type FileStoreOptions = {
|
export type FileStoreOptions = {
|
||||||
rootDir?: string;
|
rootDir?: string;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { HttpClient, ILogger, utils } from "../utils/index.js";
|
import { HttpClient, ILogger, utils } from "@certd/basic";
|
||||||
|
|
||||||
export type PluginRequestHandleReq<T = any> = {
|
export type PluginRequestHandleReq<T = any> = {
|
||||||
typeName: string;
|
typeName: string;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { logger } from "../utils/index.js";
|
import { logger } from "@certd/basic";
|
||||||
import { setLogger, isPlus, isComm } from "@certd/plus-core";
|
import { setLogger, isPlus, isComm } from "@certd/plus-core";
|
||||||
setLogger(logger);
|
setLogger(logger);
|
||||||
export * from "@certd/plus-core";
|
export * from "@certd/plus-core";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { HistoryResult, Pipeline, ResultType, Runnable, RunnableMap, Stage, Step, Task } from "../dt/index.js";
|
import { HistoryResult, Pipeline, ResultType, Runnable, RunnableMap, Stage, Step, Task } from "../dt/index.js";
|
||||||
import _ from "lodash-es";
|
import _ from "lodash-es";
|
||||||
import { buildLogger } from "../utils/index.js";
|
import { buildLogger } from "@certd/basic";
|
||||||
import { Logger } from "log4js";
|
import { Logger } from "log4js";
|
||||||
|
|
||||||
export type HistoryStatus = {
|
export type HistoryStatus = {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import { fileUtils } from "../utils/index.js";
|
import { fileUtils } from "@certd/basic";
|
||||||
|
|
||||||
export interface IStorage {
|
export interface IStorage {
|
||||||
get(scope: string, namespace: string, version: string, key: string): Promise<string | null>;
|
get(scope: string, namespace: string, version: string, key: string): Promise<string | null>;
|
||||||
|
|
|
@ -3,7 +3,6 @@ export * from "./dt/index.js";
|
||||||
export * from "./access/index.js";
|
export * from "./access/index.js";
|
||||||
export * from "./registry/index.js";
|
export * from "./registry/index.js";
|
||||||
export * from "./plugin/index.js";
|
export * from "./plugin/index.js";
|
||||||
export * from "./utils/index.js";
|
|
||||||
export * from "./context/index.js";
|
export * from "./context/index.js";
|
||||||
export * from "./decorator/index.js";
|
export * from "./decorator/index.js";
|
||||||
export * from "./service/index.js";
|
export * from "./service/index.js";
|
||||||
|
|
|
@ -5,8 +5,8 @@ import { Logger } from "log4js";
|
||||||
import { IAccessService } from "../access/index.js";
|
import { IAccessService } from "../access/index.js";
|
||||||
import { ICnameProxyService, IEmailService } from "../service/index.js";
|
import { ICnameProxyService, IEmailService } from "../service/index.js";
|
||||||
import { CancelError, IContext, PluginRequestHandleReq, RunnableCollection } from "../core/index.js";
|
import { CancelError, IContext, PluginRequestHandleReq, RunnableCollection } from "../core/index.js";
|
||||||
import { ILogger, logger, utils } from "../utils/index.js";
|
import { ILogger, logger, utils } from "@certd/basic";
|
||||||
import { HttpClient } from "../utils/index.js";
|
import { HttpClient } from "@certd/basic";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import { IPluginConfigService } from "../service/config";
|
import { IPluginConfigService } from "../service/config";
|
||||||
import { upperFirst } from "lodash-es";
|
import { upperFirst } from "lodash-es";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { isDev, logger } from "../utils/index.js";
|
import { isDev, logger } from "@certd/basic";
|
||||||
|
|
||||||
export type Registrable = {
|
export type Registrable = {
|
||||||
name: string;
|
name: string;
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
export * from "@certd/basic";
|
|
|
@ -18,7 +18,7 @@
|
||||||
"@kubernetes/client-node": "0.21.0"
|
"@kubernetes/client-node": "0.21.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@certd/pipeline": "^1.27.0",
|
"@certd/basic": "^1.27.0",
|
||||||
"@rollup/plugin-commonjs": "^23.0.4",
|
"@rollup/plugin-commonjs": "^23.0.4",
|
||||||
"@rollup/plugin-json": "^6.0.0",
|
"@rollup/plugin-json": "^6.0.0",
|
||||||
"@rollup/plugin-node-resolve": "^15.0.1",
|
"@rollup/plugin-node-resolve": "^15.0.1",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { CoreV1Api, KubeConfig, NetworkingV1Api, V1Ingress, V1Secret } from '@kubernetes/client-node';
|
import { CoreV1Api, KubeConfig, NetworkingV1Api, V1Ingress, V1Secret } from '@kubernetes/client-node';
|
||||||
import dns from 'dns';
|
import dns from 'dns';
|
||||||
import { ILogger } from '@certd/pipeline';
|
import { ILogger } from '@certd/basic';
|
||||||
import _ from 'lodash-es';
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
export type K8sClientOpts = {
|
export type K8sClientOpts = {
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@certd/acme-client": "^1.27.0",
|
"@certd/acme-client": "^1.27.0",
|
||||||
"@certd/basic": "^1.27.0",
|
"@certd/basic": "^1.27.0",
|
||||||
|
"@certd/plus-core": "^1.27.0",
|
||||||
"@certd/pipeline": "^1.27.0",
|
"@certd/pipeline": "^1.27.0",
|
||||||
"@midwayjs/cache": "~3.14.0",
|
"@midwayjs/cache": "~3.14.0",
|
||||||
"@midwayjs/core": "~3.17.1",
|
"@midwayjs/core": "~3.17.1",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import type { IMidwayContainer } from '@midwayjs/core';
|
import type { IMidwayContainer } from '@midwayjs/core';
|
||||||
import { Configuration } from '@midwayjs/core';
|
import { Configuration } from '@midwayjs/core';
|
||||||
import { logger } from '@certd/pipeline';
|
import { logger } from '@certd/basic';
|
||||||
@Configuration({
|
@Configuration({
|
||||||
namespace: 'lib-server',
|
namespace: 'lib-server',
|
||||||
})
|
})
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { Provide, Scope, ScopeEnum } from '@midwayjs/core';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import { cache, logger, utils } from '@certd/pipeline';
|
import { cache, logger, utils } from '@certd/basic';
|
||||||
import { NotFoundException, ParamException, PermissionException } from '../../../basic/index.js';
|
import { NotFoundException, ParamException, PermissionException } from '../../../basic/index.js';
|
||||||
|
|
||||||
export type UploadFileItem = {
|
export type UploadFileItem = {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Config, Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core';
|
import { Config, Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core';
|
||||||
import { AppKey, PlusRequestService, verify } from '@certd/pipeline';
|
import { AppKey, PlusRequestService, verify } from '@certd/plus-core';
|
||||||
import { logger } from '@certd/basic';
|
import { logger } from '@certd/basic';
|
||||||
import { SysInstallInfo, SysLicenseInfo, SysSettingsService } from '../../settings/index.js';
|
import { SysInstallInfo, SysLicenseInfo, SysSettingsService } from '../../settings/index.js';
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { HttpClient, IAccess, ILogger, Registrable, utils } from "@certd/pipeline";
|
import { HttpClient, ILogger, utils } from "@certd/basic";
|
||||||
|
import { IAccess, Registrable } from "@certd/pipeline";
|
||||||
|
|
||||||
export type DnsProviderDefine = Registrable & {
|
export type DnsProviderDefine = Registrable & {
|
||||||
accessType: string;
|
accessType: string;
|
||||||
|
|
|
@ -4,7 +4,8 @@ import { ClientExternalAccountBindingOptions, UrlMapping } from "@certd/acme-cli
|
||||||
import _ from "lodash-es";
|
import _ from "lodash-es";
|
||||||
import { Challenge } from "@certd/acme-client/types/rfc8555";
|
import { Challenge } from "@certd/acme-client/types/rfc8555";
|
||||||
import { Logger } from "log4js";
|
import { Logger } from "log4js";
|
||||||
import { IContext, utils } from "@certd/pipeline";
|
import { IContext } from "@certd/pipeline";
|
||||||
|
import { utils } from "@certd/basic";
|
||||||
import { IDnsProvider, parseDomain } from "../../dns-provider/index.js";
|
import { IDnsProvider, parseDomain } from "../../dns-provider/index.js";
|
||||||
|
|
||||||
export type CnameVerifyPlan = {
|
export type CnameVerifyPlan = {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { AbstractTaskPlugin, HttpClient, IContext, Step, TaskInput, TaskOutput } from "@certd/pipeline";
|
import { AbstractTaskPlugin, IContext, Step, TaskInput, TaskOutput } from "@certd/pipeline";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import type { CertInfo } from "./acme.js";
|
import type { CertInfo } from "./acme.js";
|
||||||
import { CertReader } from "./cert-reader.js";
|
import { CertReader } from "./cert-reader.js";
|
||||||
|
@ -6,6 +6,7 @@ import JSZip from "jszip";
|
||||||
import { CertConverter } from "./convert.js";
|
import { CertConverter } from "./convert.js";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import { pick } from "lodash-es";
|
import { pick } from "lodash-es";
|
||||||
|
import { HttpClient } from "@certd/basic";
|
||||||
|
|
||||||
export { CertReader };
|
export { CertReader };
|
||||||
export type { CertInfo };
|
export type { CertInfo };
|
||||||
|
|
|
@ -3,7 +3,7 @@ import fs from "fs";
|
||||||
import os from "os";
|
import os from "os";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import { crypto } from "@certd/acme-client";
|
import { crypto } from "@certd/acme-client";
|
||||||
import { ILogger } from "@certd/pipeline";
|
import { ILogger } from "@certd/basic";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
export type CertReaderHandleContext = {
|
export type CertReaderHandleContext = {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { ILogger, sp } from "@certd/pipeline";
|
import { ILogger, sp } from "@certd/basic";
|
||||||
import type { CertInfo } from "../cert-plugin/acme.js";
|
import type { CertInfo } from "../cert-plugin/acme.js";
|
||||||
import { CertReader, CertReaderHandleContext } from "../cert-plugin/cert-reader.js";
|
import { CertReader, CertReaderHandleContext } from "../cert-plugin/cert-reader.js";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput, utils } from "@certd/pipeline";
|
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline";
|
||||||
|
import { utils } from "@certd/basic";
|
||||||
|
|
||||||
import type { CertInfo, CnameVerifyPlan, DomainsVerifyPlan, PrivateKeyType, SSLProvider } from "./acme.js";
|
import type { CertInfo, CnameVerifyPlan, DomainsVerifyPlan, PrivateKeyType, SSLProvider } from "./acme.js";
|
||||||
import { AcmeService } from "./acme.js";
|
import { AcmeService } from "./acme.js";
|
||||||
import _ from "lodash-es";
|
import _ from "lodash-es";
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
import { IsTaskPlugin, pluginGroups, RunStrategy, sp, Step, TaskInput } from "@certd/pipeline";
|
import { IsTaskPlugin, pluginGroups, RunStrategy, Step, TaskInput } from "@certd/pipeline";
|
||||||
import type { CertInfo } from "../acme.js";
|
import type { CertInfo } from "../acme.js";
|
||||||
import { CertReader } from "../cert-reader.js";
|
import { CertReader } from "../cert-reader.js";
|
||||||
import { CertApplyBasePlugin } from "../base.js";
|
import { CertApplyBasePlugin } from "../base.js";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import { EabAccess } from "../../../access/index.js";
|
import { EabAccess } from "../../../access/index.js";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import { utils } from "@certd/basic";
|
|
||||||
import JSZip from "jszip";
|
import JSZip from "jszip";
|
||||||
|
|
||||||
export { CertReader };
|
export { CertReader };
|
||||||
|
@ -127,31 +126,51 @@ export class CertApplyLegoPlugin extends CertApplyBasePlugin {
|
||||||
const saveDir = `./data/.lego/pipeline_${this.pipeline.id}/`;
|
const saveDir = `./data/.lego/pipeline_${this.pipeline.id}/`;
|
||||||
const savePathArgs = `--path "${saveDir}"`;
|
const savePathArgs = `--path "${saveDir}"`;
|
||||||
const os_type = process.platform === "win32" ? "windows" : "linux";
|
const os_type = process.platform === "win32" ? "windows" : "linux";
|
||||||
const legoPath = path.resolve("./tools", os_type, "lego");
|
const legoDir = "./tools/lego";
|
||||||
|
const legoPath = path.resolve(legoDir, "lego");
|
||||||
if (!fs.existsSync(legoPath)) {
|
if (!fs.existsSync(legoPath)) {
|
||||||
//解压缩
|
//解压缩
|
||||||
|
const arch = process.arch;
|
||||||
|
let platform = "amd64";
|
||||||
|
if (arch === "arm64" || arch === "arm") {
|
||||||
|
platform = "arm64";
|
||||||
|
}
|
||||||
|
const LEGO_VERSION = process.env.LEGO_VERSION;
|
||||||
|
let legoZipFile = `${legoDir}/lego_v${LEGO_VERSION}_windows_${platform}.zip`;
|
||||||
if (os_type === "linux") {
|
if (os_type === "linux") {
|
||||||
//判断当前是arm64 还是amd64
|
legoZipFile = `${legoDir}/lego_v${LEGO_VERSION}_linux_${platform}.tar.gz`;
|
||||||
const arch = process.arch;
|
}
|
||||||
let platform = "amd64";
|
if (!fs.existsSync(legoZipFile)) {
|
||||||
if (arch === "arm64" || arch === "arm") {
|
this.logger.info(`lego文件不存在:${legoZipFile},准备下载`);
|
||||||
platform = "arm64";
|
const downloadUrl = `https://github.com/go-acme/lego/releases/download/v${LEGO_VERSION}/lego_v${LEGO_VERSION}_${os_type}_${platform}.tar.gz`;
|
||||||
}
|
await this.ctx.utils.download(
|
||||||
await utils.sp.spawn({
|
this.http,
|
||||||
cmd: `tar -zxvf ./tools/linux/lego_linux_${platform}.tar.gz -C ./tools/linux/`,
|
{
|
||||||
|
url: downloadUrl,
|
||||||
|
method: "GET",
|
||||||
|
},
|
||||||
|
legoZipFile
|
||||||
|
);
|
||||||
|
this.logger.info("下载lego成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (os_type === "linux") {
|
||||||
|
//tar是否存在
|
||||||
|
await this.ctx.utils.sp.spawn({
|
||||||
|
cmd: `tar -zxvf ${legoZipFile} -C ${legoDir}/`,
|
||||||
});
|
});
|
||||||
await utils.sp.spawn({
|
await this.ctx.utils.sp.spawn({
|
||||||
cmd: `chmod +x ./tools/linux/*`,
|
cmd: `chmod +x ${legoDir}/*`,
|
||||||
});
|
});
|
||||||
this.logger.info("解压lego成功");
|
this.logger.info("解压lego成功");
|
||||||
} else {
|
} else {
|
||||||
const zip = new JSZip();
|
const zip = new JSZip();
|
||||||
const data = fs.readFileSync("./tools/windows/lego_windows_amd64.zip");
|
const data = fs.readFileSync(legoZipFile);
|
||||||
const zipData = await zip.loadAsync(data);
|
const zipData = await zip.loadAsync(data);
|
||||||
const files = Object.keys(zipData.files);
|
const files = Object.keys(zipData.files);
|
||||||
for (const file of files) {
|
for (const file of files) {
|
||||||
const content = await zipData.files[file].async("nodebuffer");
|
const content = await zipData.files[file].async("nodebuffer");
|
||||||
fs.writeFileSync(`./tools/windows/${file}`, content);
|
fs.writeFileSync(legoPath, content);
|
||||||
}
|
}
|
||||||
this.logger.info("解压lego成功");
|
this.logger.info("解压lego成功");
|
||||||
}
|
}
|
||||||
|
@ -166,7 +185,7 @@ export class CertApplyLegoPlugin extends CertApplyBasePlugin {
|
||||||
} run`,
|
} run`,
|
||||||
];
|
];
|
||||||
|
|
||||||
await sp.spawn({
|
await this.ctx.utils.sp.spawn({
|
||||||
cmd: cmds,
|
cmd: cmds,
|
||||||
logger: this.logger,
|
logger: this.logger,
|
||||||
env,
|
env,
|
||||||
|
|
|
@ -17,15 +17,15 @@ WORKDIR /app/
|
||||||
COPY --from=builder /workspace/certd-server/ /app/
|
COPY --from=builder /workspace/certd-server/ /app/
|
||||||
|
|
||||||
ENV LEGO_VERSION=4.19.2
|
ENV LEGO_VERSION=4.19.2
|
||||||
ENV LEGO_DOWNLOAD_DIR /app/tools/linux
|
ENV LEGO_DOWNLOAD_DIR /app/tools/lego
|
||||||
RUN mkdir -p $LEGO_DOWNLOAD_DIR
|
RUN mkdir -p $LEGO_DOWNLOAD_DIR
|
||||||
|
|
||||||
# 根据架构下载不同的文件
|
# 根据架构下载不同的文件
|
||||||
RUN ARCH=$(uname -m) && \
|
RUN ARCH=$(uname -m) && \
|
||||||
if [ "$ARCH" = "x86_64" ]; then \
|
if [ "$ARCH" = "x86_64" ]; then \
|
||||||
wget -O $LEGO_DOWNLOAD_DIR/lego_linux_amd64.tar.gz https://github.com/go-acme/lego/releases/download/v${LEGO_VERSION}/lego_v${LEGO_VERSION}_linux_arm64.tar.gz; \
|
wget -O $LEGO_DOWNLOAD_DIR/lego_v${LEGO_VERSION}_linux_amd64.tar.gz https://github.com/go-acme/lego/releases/download/v${LEGO_VERSION}/lego_v${LEGO_VERSION}_linux_arm64.tar.gz; \
|
||||||
elif [ "$ARCH" = "aarch64" ]; then \
|
elif [ "$ARCH" = "aarch64" ]; then \
|
||||||
wget -O $LEGO_DOWNLOAD_DIR/lego_linux_arm64.tar.gz https://github.com/go-acme/lego/releases/download/v${LEGO_VERSION}/lego_v${LEGO_VERSION}_linux_amd64.tar.gz; \
|
wget -O $LEGO_DOWNLOAD_DIR/lego_v${LEGO_VERSION}_linux_arm64.tar.gz https://github.com/go-acme/lego/releases/download/v${LEGO_VERSION}/lego_v${LEGO_VERSION}_linux_amd64.tar.gz; \
|
||||||
else \
|
else \
|
||||||
echo "Unsupported architecture: $ARCH"; \
|
echo "Unsupported architecture: $ARCH"; \
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
LEGO_VERSION=4.19.2
|
|
@ -19,6 +19,5 @@ run/
|
||||||
.clinic
|
.clinic
|
||||||
|
|
||||||
.env.pgpl.yaml
|
.env.pgpl.yaml
|
||||||
|
tools/*
|
||||||
tools/windows/*
|
!tools/lego/.keep
|
||||||
!tools/windows/*.zip
|
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
"@certd/plugin-cert": "^1.27.0",
|
"@certd/plugin-cert": "^1.27.0",
|
||||||
"@certd/plugin-plus": "^1.27.0",
|
"@certd/plugin-plus": "^1.27.0",
|
||||||
"@certd/plus-core": "^1.27.0",
|
"@certd/plus-core": "^1.27.0",
|
||||||
|
"@certd/basic": "^1.27.0",
|
||||||
"@huaweicloud/huaweicloud-sdk-cdn": "^3.1.120",
|
"@huaweicloud/huaweicloud-sdk-cdn": "^3.1.120",
|
||||||
"@huaweicloud/huaweicloud-sdk-core": "^3.1.120",
|
"@huaweicloud/huaweicloud-sdk-core": "^3.1.120",
|
||||||
"@koa/cors": "^5.0.0",
|
"@koa/cors": "^5.0.0",
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { UserEntity } from '../modules/sys/authority/entity/user.js';
|
||||||
import { PipelineEntity } from '../modules/pipeline/entity/pipeline.js';
|
import { PipelineEntity } from '../modules/pipeline/entity/pipeline.js';
|
||||||
//import { logger } from '../utils/logger';
|
//import { logger } from '../utils/logger';
|
||||||
// load .env file in process.cwd
|
// load .env file in process.cwd
|
||||||
import { mergeConfig } from './loader.js';
|
import { loadDotEnv, mergeConfig } from './loader.js';
|
||||||
import { libServerEntities } from '@certd/lib-server';
|
import { libServerEntities } from '@certd/lib-server';
|
||||||
import { commercialEntities } from '@certd/commercial-core';
|
import { commercialEntities } from '@certd/commercial-core';
|
||||||
import { tmpdir } from 'node:os';
|
import { tmpdir } from 'node:os';
|
||||||
|
@ -123,6 +123,8 @@ const development = {
|
||||||
contactLink: '',
|
contactLink: '',
|
||||||
},
|
},
|
||||||
} as MidwayConfig;
|
} as MidwayConfig;
|
||||||
|
loadDotEnv();
|
||||||
|
|
||||||
mergeConfig(development, 'development');
|
mergeConfig(development, 'development');
|
||||||
|
|
||||||
mergeConfig(development, env);
|
mergeConfig(development, env);
|
||||||
|
|
|
@ -46,3 +46,14 @@ export function mergeConfig(config: any, envType: string) {
|
||||||
}
|
}
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function loadDotEnv() {
|
||||||
|
const envStr = fs.readFileSync('.env').toString();
|
||||||
|
envStr.split('\n').forEach(line => {
|
||||||
|
const [key, value] = line.split('=');
|
||||||
|
const oldValue = process.env[key];
|
||||||
|
if (!oldValue) {
|
||||||
|
process.env[key] = value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -86,6 +86,7 @@ export class AsyncSsh2Client {
|
||||||
sftp.fastPut(localPath, remotePath, (err: Error) => {
|
sftp.fastPut(localPath, remotePath, (err: Error) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
|
this.logger.error('请确认路径是否包含文件名,路径本身不能是目录,路径不能有*?之类的特殊符号,要有写入权限');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.logger.info(`上传文件成功:${localPath} => ${remotePath}`);
|
this.logger.info(`上传文件成功:${localPath} => ${remotePath}`);
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865
|
||||||
|
size 2
|
|
@ -1,3 +0,0 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:588e41dfbc2a5ef1596953b605ef0981f95135443a1e66db3e06e1fa2c061eab
|
|
||||||
size 24746505
|
|
|
@ -1,3 +0,0 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:ba47935bd3618ab13f2c10ba8589156e98617ab77f4dd101956cd21e829a6316
|
|
||||||
size 23085284
|
|
|
@ -1,3 +0,0 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:9b91a1e4f32b3f5e55fa6e455b8a72069cd2983ec7a36d275f0aa4b0d82a0de6
|
|
||||||
size 25579960
|
|
Loading…
Reference in New Issue