254 lines
6.6 KiB
JavaScript
254 lines
6.6 KiB
JavaScript
const fs = require('fs')
|
|
const { sshRecordDBPath, hostListDBPath, keyDBPath, emailNotifyDBPath, notifyConfDBPath, groupConfDBPath } = require('../config')
|
|
const { KeyDB, HostListDB, SshRecordDB, NotifyDB, GroupDB, EmailNotifyDB } = require('./db-class')
|
|
|
|
const readKey = async () => {
|
|
return new Promise((resolve, reject) => {
|
|
const keyDB = new KeyDB().getInstance()
|
|
keyDB.findOne({}, (err, doc) => {
|
|
if (err) {
|
|
reject(err)
|
|
} else {
|
|
resolve(doc)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const writeKey = async (keyObj = {}) => {
|
|
const keyDB = new KeyDB().getInstance()
|
|
return new Promise((resolve, reject) => {
|
|
keyDB.update({}, { $set: keyObj }, { upsert: true }, (err, numReplaced) => {
|
|
if (err) {
|
|
reject(err)
|
|
} else {
|
|
keyDB.compactDatafile()
|
|
resolve(numReplaced)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const readSSHRecord = async () => {
|
|
const sshRecordDB = new SshRecordDB().getInstance()
|
|
return new Promise((resolve, reject) => {
|
|
sshRecordDB.find({}, (err, docs) => {
|
|
if (err) {
|
|
consola.error('读取ssh-record-db错误: ', err)
|
|
reject(err)
|
|
} else {
|
|
resolve(docs)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const writeSSHRecord = async (record = []) => {
|
|
return new Promise((resolve, reject) => {
|
|
const sshRecordDB = new SshRecordDB().getInstance()
|
|
sshRecordDB.remove({}, { multi: true }, (err, numRemoved) => {
|
|
if (err) {
|
|
consola.error('清空SSHRecord出错:', err)
|
|
reject(err)
|
|
} else {
|
|
sshRecordDB.insert(record, (err, newDocs) => {
|
|
if (err) {
|
|
consola.error('写入新的ssh记录出错:', err)
|
|
reject(err)
|
|
} else {
|
|
sshRecordDB.compactDatafile()
|
|
resolve(newDocs)
|
|
}
|
|
})
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const readHostList = async () => {
|
|
return new Promise((resolve, reject) => {
|
|
const hostListDB = new HostListDB().getInstance()
|
|
hostListDB.find({}, (err, docs) => {
|
|
if (err) {
|
|
consola.error('读取host-list-db错误:', err)
|
|
reject(err)
|
|
} else {
|
|
resolve(docs)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const writeHostList = async (record = []) => {
|
|
return new Promise((resolve, reject) => {
|
|
const hostListDB = new HostListDB().getInstance()
|
|
hostListDB.remove({}, { multi: true }, (err, numRemoved) => {
|
|
if (err) {
|
|
consola.error('清空HostList出错:', err)
|
|
reject(err)
|
|
} else {
|
|
// 插入新的数据列表
|
|
hostListDB.insert(record, (err, newDocs) => {
|
|
if (err) {
|
|
consola.error('写入新的HostList出错:', err)
|
|
reject(err);
|
|
} else {
|
|
hostListDB.compactDatafile()
|
|
resolve(newDocs)
|
|
}
|
|
})
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const readEmailNotifyConf = () => {
|
|
return new Promise((resolve, reject) => {
|
|
const emailNotifyDB = new EmailNotifyDB().getInstance()
|
|
emailNotifyDB.findOne({}, (err, docs) => {
|
|
if (err) {
|
|
consola.error('读取email-notify-conf-db错误:', err)
|
|
reject(err)
|
|
} else {
|
|
resolve(docs)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
const writeUserEmailList = (user) => {
|
|
const emailNotifyDB = new EmailNotifyDB().getInstance()
|
|
return new Promise(async (resolve, reject) => {
|
|
let support = await readSupportEmailList()
|
|
const emailConf = { support, user }
|
|
emailNotifyDB.update({}, { $set: emailConf }, { upsert: true }, (err, numReplaced) => {
|
|
if (err) {
|
|
reject({ code: -1, msg: err.message || err })
|
|
} else {
|
|
emailNotifyDB.compactDatafile()
|
|
resolve({ code: 0 })
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const readSupportEmailList = async () => {
|
|
let support = []
|
|
try {
|
|
support = (await readEmailNotifyConf()).support
|
|
} catch (error) {
|
|
consola.error('读取email support错误: ', error)
|
|
}
|
|
return support
|
|
}
|
|
|
|
const readUserEmailList = async () => {
|
|
let user = []
|
|
try {
|
|
user = (await readEmailNotifyConf()).user
|
|
} catch (error) {
|
|
consola.error('读取email config错误: ', error)
|
|
}
|
|
return user
|
|
}
|
|
|
|
|
|
const getNotifySwByType = async (type) => {
|
|
if (!type) throw Error('missing params: type')
|
|
try {
|
|
let notifyList = await readNotifyList()
|
|
let { sw } = notifyList.find((item) => item.type === type)
|
|
return sw
|
|
} catch (error) {
|
|
consola.error(`通知类型[${type}]不存在`)
|
|
return false
|
|
}
|
|
}
|
|
|
|
const readNotifyList = async () => {
|
|
return new Promise((resolve, reject) => {
|
|
const notifyDB = new NotifyDB().getInstance()
|
|
notifyDB.find({}, (err, docs) => {
|
|
if (err) {
|
|
consola.error('读取notify list错误: ', err)
|
|
reject(err)
|
|
} else {
|
|
resolve(docs)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const writeNotifyList = async (notifyList) => {
|
|
return new Promise((resolve, reject) => {
|
|
const notifyDB = new NotifyDB().getInstance()
|
|
notifyDB.remove({}, { multi: true }, (err, numRemoved) => {
|
|
if (err) {
|
|
consola.error('清空notify list出错:', err);
|
|
reject(err);
|
|
} else {
|
|
notifyDB.insert(notifyList, (err, newDocs) => {
|
|
if (err) {
|
|
consola.error('写入新的notify list出错:', err);
|
|
reject(err)
|
|
} else {
|
|
notifyDB.compactDatafile()
|
|
resolve(newDocs);
|
|
}
|
|
})
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const readGroupList = async () => {
|
|
return new Promise((resolve, reject) => {
|
|
const groupDB = new GroupDB().getInstance()
|
|
groupDB.find({}, (err, docs) => {
|
|
if (err) {
|
|
consola.error('读取group list错误: ', err)
|
|
reject(err)
|
|
} else {
|
|
resolve(docs)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const writeGroupList = async (list = []) => {
|
|
return new Promise((resolve, reject) => {
|
|
const groupDB = new GroupDB().getInstance()
|
|
groupDB.remove({}, { multi: true }, (err, numRemoved) => {
|
|
if (err) {
|
|
consola.error('清空group list出错:', err)
|
|
reject(err)
|
|
} else {
|
|
groupDB.insert(list, (err, newDocs) => {
|
|
if (err) {
|
|
consola.error('写入新的group list出错:', err)
|
|
reject(err)
|
|
} else {
|
|
groupDB.compactDatafile()
|
|
resolve(newDocs)
|
|
}
|
|
})
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
module.exports = {
|
|
readSSHRecord,
|
|
writeSSHRecord,
|
|
readHostList,
|
|
writeHostList,
|
|
readKey,
|
|
writeKey,
|
|
readNotifyList,
|
|
getNotifySwByType,
|
|
writeNotifyList,
|
|
readGroupList,
|
|
writeGroupList,
|
|
readSupportEmailList,
|
|
readUserEmailList,
|
|
writeUserEmailList
|
|
} |