290 lines
7.4 KiB
JavaScript
290 lines
7.4 KiB
JavaScript
const { KeyDB, HostListDB, SshRecordDB, NotifyDB, GroupDB, EmailNotifyDB, ScriptsDB } = 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) => {
|
|
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) => {
|
|
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()
|
|
// eslint-disable-next-line no-async-promise-executor
|
|
return new Promise(async (resolve, reject) => {
|
|
let support = await readSupportEmailList()
|
|
const emailConf = { support, user }
|
|
emailNotifyDB.update({}, { $set: emailConf }, { upsert: true }, (err) => {
|
|
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) => {
|
|
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) => {
|
|
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)
|
|
}
|
|
})
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const readScriptList = async () => {
|
|
return new Promise((resolve, reject) => {
|
|
const scriptsDB = new ScriptsDB().getInstance()
|
|
scriptsDB.find({}, (err, docs) => {
|
|
if (err) {
|
|
consola.error('读取scripts list错误: ', err)
|
|
reject(err)
|
|
} else {
|
|
resolve(docs)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const writeScriptList = async (list = []) => {
|
|
return new Promise((resolve, reject) => {
|
|
const scriptsDB = new ScriptsDB().getInstance()
|
|
scriptsDB.remove({}, { multi: true }, (err) => {
|
|
if (err) {
|
|
consola.error('清空group list出错:', err)
|
|
reject(err)
|
|
} else {
|
|
scriptsDB.insert(list, (err, newDocs) => {
|
|
if (err) {
|
|
consola.error('写入新的group list出错:', err)
|
|
reject(err)
|
|
} else {
|
|
scriptsDB.compactDatafile()
|
|
resolve(newDocs)
|
|
}
|
|
})
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
module.exports = {
|
|
readSSHRecord,
|
|
writeSSHRecord,
|
|
readHostList,
|
|
writeHostList,
|
|
readKey,
|
|
writeKey,
|
|
readNotifyList,
|
|
getNotifySwByType,
|
|
writeNotifyList,
|
|
readGroupList,
|
|
writeGroupList,
|
|
readSupportEmailList,
|
|
readUserEmailList,
|
|
writeUserEmailList,
|
|
readScriptList,
|
|
writeScriptList
|
|
} |