import { AccessInput, BaseAccess, IsAccess } from "@certd/pipeline"; import { HttpRequestConfig } from "@certd/basic"; import { CertInfo } from "@certd/plugin-cert"; /** */ @IsAccess({ name: "dokploy", title: "Dokploy授权", desc: "", icon: "svg:icon-lucky" }) export class DokployAccess extends BaseAccess { @AccessInput({ title: "Dokploy地址", component: { placeholder: "http://192.168.11.11:5480", }, required: true, }) endpoint = ''; @AccessInput({ title: 'ApiKey', component: { placeholder: 'ApiKey', }, // naAyXbZmxtsfrDfneOCeirbQNIICmBgfBiYXQwryPIUOdzPkXkfnaKjeAdbOQdwp //tlyvdNzojaFkNfGScALLmyuFHkHcYWaxoYjiDzWFHcnZAWdjOquMSqBwHLvGDGZK helper: "[settings-profile](https://app.dokploy.com/dashboard/settings/profile)中配置API Keys", required: true, encrypt: true, }) apiKey = ''; @AccessInput({ title: "测试", component: { name: "api-test", action: "TestRequest" }, helper: "点击测试接口是否正常" }) testRequest = true; async onTestRequest() { await this.getCertList(); return "ok" } async getServerList(){ const req = { url :"/api/server.all", method: "get", } return await this.doRequest(req); } async getCertList(){ const req = { url :"/api/certificates.all", method: "get", } return await this.doRequest(req); } async createCert(opts:{cert:CertInfo,serverId:string,name:string}){ const req = { url :"/api/certificates.create", method: "post", data:{ // certificateId:opts.certificateId, "name": opts.name, "certificateData": opts.cert.crt, "privateKey": opts.cert.key, "serverId": opts.serverId, autoRenew: false, organizationId : "" } } return await this.doRequest(req); } async removeCert (opts:{id:string}){ const req = { url :"/api/certificates.remove", method: "post", data:{ certificateId:opts.id, } } return await this.doRequest(req); } async doRequest(req: HttpRequestConfig){ const headers = { "x-api-key": this.apiKey, ...req.headers }; return await this.ctx.http.request({ headers, baseURL: this.endpoint, ...req, logRes: false, }); } } new DokployAccess();