fixbugs in linux plugin

This commit is contained in:
jysperm
2014-10-15 22:53:06 +08:00
parent 20d540b05a
commit 7acea73539
9 changed files with 32 additions and 16 deletions

View File

@@ -3,6 +3,7 @@ nodemailer = require 'nodemailer'
path = require 'path'
harp = require 'harp'
fs = require 'fs'
morgan = require 'morgan'
moment = require 'moment-timezone'
redis = require 'redis'
express = require 'express'
@@ -83,7 +84,7 @@ exports.run = ->
app.use connect.json()
app.use connect.urlencoded()
app.use connect.logger()
app.use morgan('dev')
app.use require('cookie-parser')()
app.use require 'middleware-injector'

View File

@@ -123,7 +123,12 @@ exports.joinPlan = (req, account, plan_name, callback) ->
hook.action req, callback
, callback
, ->
callback()
unless stringify(original_account.resources_limit) == stringify(account.resources_limit)
async.each pluggable.selectHook(account, 'account.resources_limit_changed'), (hook, callback) ->
hook.action account, callback
, callback
else
callback()
exports.leavePlan = (req, account, plan_name, callback) ->
leaved_services = _.reject account.billing.services, (service_name) ->
@@ -133,8 +138,7 @@ exports.leavePlan = (req, account, plan_name, callback) ->
return false
original_resources_limit = account.resources_limit
new_resources_limit = exports.calcResourcesLimit _.without account.billing.plans, plan_name
original_account = account
modifier =
$pull:
@@ -142,7 +146,7 @@ exports.leavePlan = (req, account, plan_name, callback) ->
$pullAll:
'billing.services': leaved_services
$set:
'resources_limit': new_resources_limit
'resources_limit': exports.calcResourcesLimit _.without account.billing.plans, plan_name
$unset: {}
modifier.$unset["billing.last_billing_at.#{plan_name}"] = true
@@ -151,11 +155,11 @@ exports.leavePlan = (req, account, plan_name, callback) ->
new: true
, (err, account) ->
async.each leaved_services, (service_name, callback) ->
async.each pluggable.selectHook(account, "service.#{service_name}.disable"), (hook, callback) ->
async.each pluggable.selectHook(original_account, "service.#{service_name}.disable"), (hook, callback) ->
hook.action req, callback
, callback
, ->
unless stringify(original_resources_limit) == stringify(new_resources_limit)
unless stringify(original_account.resources_limit) == stringify(account.resources_limit)
async.each pluggable.selectHook(account, 'account.resources_limit_changed'), (hook, callback) ->
hook.action account, callback
, callback

View File

@@ -97,7 +97,7 @@ exports.register = (account, callback) ->
tokens: []
async.each pluggable.selectHook({meta: 'any'}, 'account.before_register'), (hook, callback) ->
async.each pluggable.selectHook(account, 'account.before_register'), (hook, callback) ->
hook.filter account, callback
, ->
exports.insert account, (err, result) ->

View File

@@ -10,12 +10,17 @@ config = require './../config'
exports.plugins = {}
hookHelper = (options) ->
return _.extend [], options
exports.hooks =
account:
# filter: function(username, callback(is_allow))
username_filter: []
username_filter: hookHelper
always_notice: true
# filter: function(account, callback)
before_register: []
before_register: hookHelper
always_notice: true
# action: function(account, callback)
resources_limit_changed: []
@@ -100,10 +105,10 @@ exports.selectHook = (account, hook_name) ->
return _.filter pointer, (hook) ->
if hook.plugin_info.type == 'extension'
return true
else if pointer.always_notice or hook.always_notice
return true
else if !account
return false
else if account.meta == 'any'
return true
else if hook.plugin_info.name in account.billing.services
return true
else

View File

@@ -27,7 +27,7 @@ exports.post '/register', errorHandling, (req, res) ->
unless utils.rx.password.test req.body.password
return res.error 'invalid_password'
async.each pluggable.selectHook({meta: 'any'}, 'account.username_filter'), (hook, callback) ->
async.each pluggable.selectHook(null, 'account.username_filter'), (hook, callback) ->
hook.filter req.body.username, (is_allow) ->
if is_allow
callback()

View File

@@ -10,7 +10,7 @@ block main
.form-group
label.col-sm-2.col-md-offset-1.control-label= t('view.preferences.qq')
.col-sm-5
input.input-qq.form-control(type='text', value=account.settings.qq)
input.input-qq.form-control(type='text', value=account.preferences.qq)
.form-group
.col-sm-offset-3
button.action-save.btn.btn-lg.btn-success(type='button')= t('common.save')

View File

@@ -47,6 +47,7 @@
"cookie-parser": "^1.3.3",
"csrf": "^2.0.1",
"connect-redis": "^2.0.1",
"express-session": "^1.8.2"
"express-session": "^1.8.2",
"morgan": "^1.3.2"
}
}

View File

@@ -43,6 +43,7 @@ exports.registerHook 'view.panel.widgets',
callback html
exports.registerHook 'account.resources_limit_changed',
always_notice: true
action: (account, callback) ->
linux.setResourceLimit account, callback

View File

@@ -25,7 +25,8 @@ exports.createUser = (account, callback) ->
exports.deleteUser = (account, callback) ->
async.series [
(callback) ->
child_process.exec "sudo pkill -u #{account.username}", callback
child_process.exec "sudo pkill -u #{account.username}", ->
callback()
(callback) ->
child_process.exec "sudo userdel -rf #{account.username}", callback
@@ -39,6 +40,9 @@ exports.deleteUser = (account, callback) ->
callback()
exports.setResourceLimit = (account, callback) ->
unless 'linux' in account.billing.services
return callback()
storage_limit = account.resources_limit.storage
soft_limit = (storage_limit * 1024 * 0.8).toFixed()
hard_limit = (storage_limit * 1024 * 1.2).toFixed()