linux plugin enable and disable

This commit is contained in:
jysperm
2014-10-13 09:46:15 +08:00
parent caa524f3c1
commit 2e38b4b944
4 changed files with 54 additions and 43 deletions

View File

@@ -13,16 +13,30 @@ exports.registerHook 'view.layout.menu_bar',
exports.registerHook 'account.username_filter',
filter: (username, callback) ->
linux.getPasswdMap (passwd_map) ->
callback username in _.values 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) ->
exports.render 'widget', req,
resources_usage: null
storage_usage: null
, callback
exports.registerHook 'account.resources_limit_changed',
action: (account, callback) ->
linux.setResourceLimit account, callback
exports.registerServiceHook 'enable',
action: (req, callback) ->
linux.createUser req.account, ->
linux.setResourceLimit account, callback
exports.registerServiceHook 'disable',
action: (req, callback) ->
linux.deleteUser req.account, callback

View File

@@ -1,4 +1,5 @@
fs = require 'fs'
async = require 'async'
_ = require 'underscore'
{cache} = app
@@ -18,3 +19,41 @@ exports.getPasswdMap = (callback) ->
callback result
, (passwd_map) ->
callback passwd_map
exports.createUser = (account, callback) ->
async.series [
(callback) ->
child_process.exec "sudo useradd -m -s /bin/bash #{account.username}", callback
(callback) ->
child_process.exec "sudo usermod -G #{account.username} -a www-data", callback
], (err) ->
console.error err if err
callback()
exports.deleteUser = (account, callback) ->
async.series [
(callback) ->
child_process.exec "sudo pkill -u #{account.username}", callback
(callback) ->
child_process.exec "sudo userdel -rf #{account.username}", callback
(callback) ->
child_process.exec "sudo groupdel #{account.username}", callback
], (err) ->
console.error err if err
callback()
exports.setResourceLimit = (account, callback) ->
storage_limit = account.resources_limit.storage
soft_limit = (storage_limit * 1024 * 0.8).toFixed()
hard_limit = (storage_limit * 1024 * 1.2).toFixed()
soft_inode_limit = (storage_limit * 64 * 0.8).toFixed()
hard_inode_limit = (storage_limit * 64 * 1.2).toFixed()
child_process.exec "sudo setquota -u #{account.username} #{soft_limit} #{hard_limit} #{soft_inode_limit} #{hard_inode_limit} -a", (err) ->
console.error err if err
callback()

View File

@@ -3,12 +3,6 @@ path = require 'path'
monitor = require './monitor'
module.exports =
enable: (account, callback) ->
callback()
delete: (account, callback) ->
callback()
widget: (account, callback) ->
mysql = require '../mysql/service'
mongodb = require '../mongodb/service'
@@ -19,7 +13,6 @@ module.exports =
mongodb: _.partial(mongodb.storage, account)
, (err, plugin_storage) ->
jade.renderFile path.join(__dirname, 'view/widget.jade'),
account: account
resources_usage: do ->
usage = monitor.resources_usage[account.username] ? {cpu: 0, memory: 0}
return {