mirror of
https://github.com/OneUptime/oneuptime
synced 2024-11-24 00:12:06 +00:00
132 lines
3.7 KiB
TypeScript
132 lines
3.7 KiB
TypeScript
import axios from 'axios';
|
|
const BASE_URL: string = `${process.env.BACKEND_PROTOCOL}://${process.env['ONEUPTIME_HOST']}`;
|
|
|
|
const Manager = module.exports;
|
|
|
|
//eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
Manager.create = function (_opts: $TSFixMe): void {
|
|
const manager: $TSFixMe = {};
|
|
|
|
//
|
|
// REQUIRED (basic issuance)
|
|
//
|
|
|
|
manager.get = async function ({ servername }: $TSFixMe): void {
|
|
const url: string = `${BASE_URL}/api/manager/site?servername=${servername}`;
|
|
const response = await axios({
|
|
url,
|
|
method: 'get',
|
|
});
|
|
|
|
return response.data;
|
|
};
|
|
|
|
//
|
|
// REQUIRED (basic issuance)
|
|
//
|
|
|
|
manager.set = async function (opts: $TSFixMe): void {
|
|
const url: string = `${BASE_URL}/api/manager/site?subject=${opts.subject}`;
|
|
const response = await axios({
|
|
url,
|
|
method: 'put',
|
|
data: opts,
|
|
});
|
|
|
|
return response.data;
|
|
};
|
|
|
|
//
|
|
// Optional (Fully Automatic Renewal)
|
|
//
|
|
|
|
manager.find = async function (opts: $TSFixMe): void {
|
|
// { subject, servernames, altnames, renewBefore }
|
|
if (opts.subject) {
|
|
const url: string = `${BASE_URL}/api/manager/site?subject=${opts.subject}`;
|
|
const response = await axios({
|
|
url,
|
|
method: 'get',
|
|
});
|
|
if (!response.data || response.data.length === 0) {
|
|
return [];
|
|
}
|
|
|
|
return [response.data];
|
|
}
|
|
|
|
if (Array.isArray(opts.servernames) && opts.servernames.length > 0) {
|
|
const url: string = `${BASE_URL}/api/manager/site/servernames`;
|
|
const response = await axios({
|
|
url,
|
|
method: 'post',
|
|
data: opts.servernames,
|
|
});
|
|
|
|
return response.data;
|
|
}
|
|
|
|
// i.e. find certs more than 30 days old as default
|
|
opts.issuedBefore =
|
|
opts.issuedBefore || Date.now() - 30 * 24 * 60 * 60 * 1000;
|
|
// i.e. find certs that will expire in less than 45 days as default
|
|
opts.expiresBefore =
|
|
opts.expiresBefore || Date.now() + 45 * 24 * 60 * 60 * 1000;
|
|
// i.e. find certs that should be renewed within 21 days as default
|
|
opts.renewBefore =
|
|
opts.renewBefore || Date.now() + 21 * 24 * 60 * 60 * 1000;
|
|
|
|
const url: string = `${BASE_URL}/api/manager/site/opts`;
|
|
const response = await axios({
|
|
url,
|
|
method: 'post',
|
|
data: opts,
|
|
});
|
|
|
|
return response.data;
|
|
};
|
|
|
|
//
|
|
// Optional (Special Remove Functionality)
|
|
// The default behavior is to set `deletedAt`
|
|
//
|
|
|
|
manager.remove = async function (opts: $TSFixMe): void {
|
|
const url: string = `${BASE_URL}/api/manager/site?subject=${opts.subject}`;
|
|
const response = await axios({
|
|
url,
|
|
method: 'delete',
|
|
});
|
|
|
|
return response.data;
|
|
};
|
|
|
|
//
|
|
// Optional (special settings save)
|
|
// Implemented here because this module IS the fallback
|
|
// This is a setter/getter function
|
|
//
|
|
|
|
manager.defaults = async function (opts: $TSFixMe): void {
|
|
if (!opts) {
|
|
const url: string = `${BASE_URL}/api/manager/default`;
|
|
const response = await axios({
|
|
url,
|
|
method: 'get',
|
|
});
|
|
return response.data ? response.data : {};
|
|
}
|
|
|
|
const url: string = `${BASE_URL}/api/manager/default`;
|
|
const response = await axios({
|
|
url,
|
|
method: 'put',
|
|
data: opts,
|
|
});
|
|
|
|
return response.data || {};
|
|
};
|
|
|
|
return manager;
|
|
};
|