node-red-contrib-motechat
Version:
ultranet topic and payload communication
106 lines (86 loc) • 2.75 kB
JavaScript
const level = require('level')
const path = require('path')
const os = require('os')
const fs = require('fs-extra')
const { userDir = '', u = '' } = require('yargs').argv
const customPath = userDir || u
const home = (() => {
if (process.env.SNAP_USER_DATA) return process.env.SNAP_USER_DATA;
if (process.platform === 'win32') return process.env.HOMEPATH
if (process.platform === 'linux' || process.platform === 'darwin') return process.env.HOME
})()
const dbPath = customPath
? path.join(customPath, '.node-red-contrib-motechat')
: path.join(home, '.node-red', '.node-red-contrib-motechat')
fs.ensureDirSync(dbPath)
const db = level(dbPath, { valueEncoding: 'json' })
const getDDN = () => new Promise(resolve => {
db.get('DDN', (err, value) => resolve(value))
})
const getMote = () => new Promise(resolve => {
db.get('mote', (err, value) => resolve(value))
})
const getDSIM = () => new Promise(resolve => {
db.get('dSIM', (err, value) => resolve(value))
})
const getConfig = () => new Promise(resolve => {
db.get('config', (err, value) => resolve(value))
})
const setDDN = (DDN = "") => new Promise(resolve => {
db.put('DDN', { DDN }, (err = 0) => {
if (err) resolve(1)
resolve(0)
})
})
const setMote = (mote = {
EiOwner: process.env.EI_OWNER || "",
EiName: process.env.MCHAT_EINAME || os.hostname(),
EiType: process.env.EI_TYPE || ".flow",
EiTag: process.env.EI_TAG || "",
EiLoc: process.env.EI_LOC || ""
}) => new Promise(resolve => {
db.put('mote', mote, (err = 0) => {
if (err) resolve(1)
resolve(0)
})
})
const setDSIM = (dSIM = {
SToken: "", EiToken: ""
}) => new Promise(resolve => {
db.put('dSIM', dSIM, (err = 0) => {
if (err) resolve(1)
resolve(0)
})
})
const setConfig = (config = {
AppName: process.env.MCHAT_APPNAME || os.hostname(),
AppKey: process.env.APP_KEY || "1u6WauSf",
DCenter: process.env.MCHAT_DC || "dc",
IOC: process.env.MCHAT_IOC || "",
MotebusGW: process.env.MCHAT_MBGWIP || "127.0.0.1",
MotebusPort: process.env.MCHAT_MBGWPORT || "6262",
WatchLevel: process.env.WATCHLEVEL || "0"
}) => new Promise(resolve => {
db.put('config', config, (err = 0) => {
if (err) resolve(1)
resolve(0)
})
})
const init = async () => {
let DDN = await getDDN()
if (!DDN) setDDN()
await setMote()
let dSIM = await getDSIM()
if (!dSIM) setDSIM()
await setConfig()
return {
...(await getDDN()),
mote: await getMote(),
dSIM: await getDSIM(),
config: await getConfig()
}
}
module.exports = {
init, getDDN, getMote, getDSIM, getConfig,
setDDN, setMote, setDSIM, setConfig
}