Files
RootPanel/plugin/linux/index.coffee
2014-10-17 02:22:05 +08:00

79 lines
2.0 KiB
CoffeeScript

_ = require 'underscore'
async = require 'async'
{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
, (html) ->
callback html
exports.registerHook 'account.resources_limit_changed',
always_notice: true
action: (account, callback) ->
linux.setResourceLimit account, callback
exports.registerServiceHook 'enable',
action: (req, callback) ->
linux.createUser req.account, ->
linux.setResourceLimit req.account, callback
exports.registerServiceHook 'disable',
action: (req, callback) ->
linux.deleteUser req.account, callback
app.get '/public/monitor', requireAuthenticate, (req, res) ->
async.parallel
resources_usage: (callback) ->
linux.getResourceUsageByAccounts (result) ->
console.log result
callback null, result
system: wrapAsync linux.getSystemInfo
storage: wrapAsync linux.getStorageInfo
process_list: wrapAsync linux.getProcessList
memory: wrapAsync linux.getMemoryInfo
x: (callback) ->
callback null, 'test'
, (err, result) ->
console.log arguments
exports.render 'monitor', req, result, (html) ->
res.send html
monitor.run()