hassio-nextcloud-backup/nextcloud_backup/backend/src/services/webdavConfigService.ts

43 lines
1.3 KiB
TypeScript
Raw Normal View History

2022-09-29 12:42:25 +02:00
import fs from "fs";
import Joi from "joi"
import logger from "../config/winston.js";
import { default_root } from "../tools/pathTools.js";
import WebdavConfigValidation from "../types/services/webdavConfigValidation.js";
import { WebdavConfig, WebdavEndpointType } from "../types/services/webdavConfig.js"
const webdavConfigPath = "/data/webdavConfigV2.json";
export function validateWebdavConfig(config: WebdavConfig){
const validator = Joi.object(WebdavConfigValidation);
return validator.validateAsync(config);
}
export function saveWebdavConfig(config: WebdavConfig){
fs.writeFileSync(webdavConfigPath, JSON.stringify(config, undefined, 2));
}
export function getWebdavConfig(): WebdavConfig {
if (!fs.existsSync(webdavConfigPath)) {
logger.warn("Webdav Config file not found, creating default one !")
const defaultConfig = getWebdavDefaultConfig();
saveWebdavConfig(defaultConfig);
return defaultConfig;
} else {
return JSON.parse(fs.readFileSync(webdavConfigPath).toString());
}
}
export function getWebdavDefaultConfig(): WebdavConfig {
return {
url: "",
username: "",
password: "",
backupDir: default_root,
allowSelfSignedCerts: false,
webdavEndpoint: {
type: WebdavEndpointType.NEXTCLOUD,
}
}
}