sc-manager/api/core/ioroutes.mjs

162 lines
3.3 KiB
JavaScript

import defaults from '../defaults.mjs'
import { formatLog } from './loghelper.mjs'
/*
* Event: 'core.config'
*
* Get config
*/
export async function config(ctx, data, cb) {
let merge = {
applications: []
}
for (let app of ctx.core.applications) {
merge[app.name] = app.config
merge.applications.push(app.name)
}
let out = defaults(ctx.db.config, merge)
console.log(out)
cb(out)
}
/*
* Event: 'core.restart'
*
* Restart server
*/
export async function restart(ctx, data, cb) {
ctx.core.restart()
}
/*
* Event: 'core.getlastlogs'
*
* Returns last few log messages from log
*/
export async function getlastlogs(ctx, data, cb) {
cb(ctx.logroot.ringbuffer.records.map(formatLog))
}
/*
* Event: 'core.listenlogs'
*
* Start listening to new log lines
*/
export async function listenlogs(ctx) {
ctx.socket.join('logger')
}
/*
* Event: 'core.unlistenlogs'
*
* Stop listening to new log lines
*/
export async function unlistenlogs(ctx) {
ctx.socket.leave('logger')
}
/*
* Event: 'core.update'
*
* Update specific software
*/
export async function update(ctx, data, cb) {
if (data.name !== 'app' && data.name !== 'manage') {
ctx.log.warn('Invalid update command for app ' + data.name)
ctx.log.event.warn('Invalid update command for app ' + data.name)
return
}
await ctx.core.installLatestVersion(data.name)
}
/*
* Event: 'core.start'
*
* Start specific software
*/
export async function start(ctx, data, cb) {
if (data.name !== 'app' && data.name !== 'manage') {
ctx.log.warn('Invalid start command for app ' + data.name)
ctx.log.event.warn('Invalid start command for app ' + data.name)
return
}
await ctx.core.tryStartProgram(data.name)
}
/*
* Event: 'core.updatestart'
*
* Update and start specific software
*/
export async function updatestart(ctx, data, cb) {
if (data.name !== 'app' && data.name !== 'manage') {
ctx.log.warn('Invalid updatestart command for app ' + data.name)
ctx.log.event.warn('Invalid updatestart command for app ' + data.name)
return
}
await ctx.core.start(data.name)
}
/*
* Event: 'core.listencore'
*
* Start listening to new log lines
*/
export async function listencore(ctx) {
ctx.socket.join('core')
ctx.socket.emit('core.db', ctx.db.data.core)
ctx.socket.emit('core.status', {})
}
/*
* Event: 'core.unlistencore'
*
* Stop listening to new log lines
*/
export async function unlistencore(ctx) {
ctx.socket.leave('core')
}
/*
* Event: 'core.listentoapp'
*
* Start listening to changes in core app
*/
export async function listentoapp(ctx) {
ctx.socket.join('core.app')
ctx.socket.emit('core.program.log', {
name: 'app',
logs: ctx.core.getProgramLogs('app')
})
}
/*
* Event: 'core.listentomanage'
*
* Start listening to changes in core manage
*/
export async function listentomanage(ctx) {
ctx.socket.join('core.manage')
ctx.socket.emit('core.program.log', {
name: 'manage',
logs: ctx.core.getProgramLogs('manage')
})
}
/*
* Event: 'core.unlistentoapp'
*
* Stop listening to new log lines
*/
export async function unlistentoapp(ctx) {
ctx.socket.leave('core.app')
}
/*
* Event: 'core.unlistentomanage'
*
* Stop listening to new log lines
*/
export async function unlistentomanage(ctx) {
ctx.socket.leave('core.manage')
}