mirror of
https://github.com/HackPlan/RootPanel.git
synced 2026-04-24 03:35:59 +08:00
linux plugin enable and disable
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user