Files
RootPanel/plugin/linux/index.coffee
2014-11-02 16:04:25 +08:00

71 lines
1.9 KiB
CoffeeScript

{async, _} = app.libs
{pluggable, config} = app
{requireAuthenticate} = app.middleware
{wrapAsync} = app.utils
linux = require './linux'
monitor = require './monitor'
module.exports = pluggable.createHelpers exports =
name: 'linux'
type: 'service'
exports.registerHook 'view.layout.menu_bar',
href: '/public/monitor/'
t_body: 'plugins.linux.server_monitor'
exports.registerHook 'account.username_filter',
filter: (username, callback) ->
linux.getPasswdMap (passwd_map) ->
if username in _.values passwd_map
callback false
else
callback true
exports.registerHook 'view.panel.styles',
path: '/plugin/linux/style/panel.css'
exports.registerHook 'view.panel.widgets',
generator: (req, callback) ->
linux.getResourceUsageByAccount req.account, (resources_usage) ->
resources_usage ?=
username: req.account.username
cpu: 0
memory: 0
storage: 0
process: 0
exports.render 'widget', req,
usage: resources_usage
, callback
exports.registerHook 'account.resources_limit_changed',
always_notice: true
filter: (account, callback) ->
linux.setResourceLimit account, callback
exports.registerServiceHook 'enable',
filter: (req, callback) ->
linux.createUser req.account, callback
exports.registerServiceHook 'disable',
filter: (req, callback) ->
linux.deleteUser req.account, callback
app.express.get '/public/monitor', requireAuthenticate, (req, res) ->
async.parallel
resources_usage: (callback) ->
linux.getResourceUsageByAccounts (result) ->
callback null, result
system: wrapAsync linux.getSystemInfo
storage: wrapAsync linux.getStorageInfo
process_list: wrapAsync linux.getProcessList
memory: wrapAsync linux.getMemoryInfo
, (err, result) ->
logger.error err if err
exports.render 'monitor', req, result, (html) ->
res.send html
monitor.run()