mirror of https://github.com/tp4a/teleport
temp.
parent
f5392091f9
commit
37f8fc8b6f
|
@ -3,82 +3,14 @@
|
|||
$app.on_init = function (cb_stack) {
|
||||
console.log($app.options);
|
||||
|
||||
$app.dom = {
|
||||
|
||||
// 邮件系统设置
|
||||
mail: {
|
||||
smtp_server: $('#smtp-server-info'),
|
||||
smtp_port: $('#smtp-port-info'),
|
||||
smtp_ssl: $('#smtp-ssl-info'),
|
||||
smtp_sender: $('#smtp-sender-info'),
|
||||
btn_edit_mail_config: $('#btn-edit-mail-config'),
|
||||
|
||||
dlg_edit_mail_config: $('#dlg-edit-mail-config'),
|
||||
edit_smtp_server: $('#edit-smtp-server'),
|
||||
edit_smtp_port: $('#edit-smtp-port'),
|
||||
edit_smtp_ssl: $('#edit-smtp-ssl'),
|
||||
edit_smtp_sender: $('#edit-smtp-sender'),
|
||||
edit_smtp_password: $('#edit-smtp-password'),
|
||||
edit_smtp_test_recipient: $('#edit-smtp-test-recipient'),
|
||||
btn_send_test_mail: $('#btn-send-test-mail'),
|
||||
msg_send_test_mail: $('#msg-send-test-mail'),
|
||||
btn_save_mail_config: $('#btn-save-mail-config')
|
||||
}
|
||||
};
|
||||
|
||||
$app.smtp = $app.create_config_smtp();
|
||||
cb_stack.add($app.smtp.init);
|
||||
|
||||
//=========================================
|
||||
// 邮件系统配置相关
|
||||
//=========================================
|
||||
// $app.update_mail_info = function (smtp) {
|
||||
// if (0 === smtp.server.length) {
|
||||
// var not_set = '<span class="error">未设置</span>';
|
||||
// $app.dom.mail.smtp_server.html(not_set);
|
||||
// $app.dom.mail.smtp_port.html(not_set);
|
||||
// $app.dom.mail.smtp_ssl.html(not_set);
|
||||
// $app.dom.mail.smtp_sender.html(not_set);
|
||||
// } else {
|
||||
// $app.dom.mail.smtp_server.html(smtp.server);
|
||||
// $app.dom.mail.smtp_port.html(smtp.port);
|
||||
// $app.dom.mail.smtp_sender.html(smtp.sender);
|
||||
//
|
||||
// if (smtp.ssl)
|
||||
// $app.dom.mail.smtp_ssl.html('是');
|
||||
// else
|
||||
// $app.dom.mail.smtp_ssl.html('否');
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// $app.update_mail_info($app.options.sys_cfg.smtp);
|
||||
$app.smtp = $app.create_config_smtp();
|
||||
cb_stack.add($app.smtp.init);
|
||||
|
||||
// $app.dom.mail.btn_edit_mail_config.click(function () {
|
||||
// var smtp = $app.options.sys_cfg.smtp;
|
||||
//
|
||||
// $app.dom.mail.edit_smtp_server.val(smtp.server);
|
||||
//
|
||||
// $app.dom.mail.edit_smtp_port.val(smtp.port);
|
||||
//
|
||||
// if (!smtp.ssl)
|
||||
// $app.dom.mail.edit_smtp_ssl.removeClass('tp-selected');
|
||||
// else
|
||||
// $app.dom.mail.edit_smtp_ssl.removeClass('tp-selected').addClass('tp-selected');
|
||||
//
|
||||
// $app.dom.mail.edit_smtp_sender.val(smtp.sender);
|
||||
// $app.dom.mail.edit_smtp_password.val('');
|
||||
//
|
||||
// $app.dom.mail.dlg_edit_mail_config.modal();
|
||||
// });
|
||||
// $app.dom.mail.btn_edit_mail_config.trigger('click');
|
||||
// $app.dom.mail.edit_smtp_ssl.click(function () {
|
||||
// if ($app.dom.mail.edit_smtp_ssl.hasClass('tp-selected'))
|
||||
// $app.dom.mail.edit_smtp_ssl.removeClass('tp-selected');
|
||||
// else
|
||||
// $app.dom.mail.edit_smtp_ssl.addClass('tp-selected');
|
||||
// });
|
||||
// $app.dom.mail.btn_send_test_mail.click($app._on_btn_send_test_mail);
|
||||
// $app.dom.mail.btn_save_mail_config.click($app._on_btn_save_mail_config);
|
||||
$app.sec = $app.create_config_sec();
|
||||
cb_stack.add($app.sec.init);
|
||||
|
||||
cb_stack.exec();
|
||||
};
|
||||
|
@ -139,11 +71,6 @@ $app.create_config_smtp = function () {
|
|||
_smtp.dom.port.html(smtp.port);
|
||||
_smtp.dom.sender.html(smtp.sender);
|
||||
_smtp.dom.ssl.html(smtp.ssl ? '是' : '否');
|
||||
//
|
||||
// if (smtp.ssl)
|
||||
// _smtp.dom.ssl.html('是');
|
||||
// else
|
||||
// _smtp.dom.ssl.html('否');
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -278,4 +205,75 @@ $app.create_config_smtp = function () {
|
|||
return _smtp;
|
||||
};
|
||||
|
||||
$app.create_config_sec = function () {
|
||||
var _sec = {};
|
||||
|
||||
_sec.dom = {
|
||||
btn_save: $('#btn-save-secure-config'),
|
||||
|
||||
btn_password_allow_reset: $('#sec-allow-reset-password'),
|
||||
btn_password_force_strong: $('#sec-force-strong-password'),
|
||||
input_password_timeout: $('#sec-password-timeout'),
|
||||
|
||||
input_session_timeout: $('#sec-session-timeout'),
|
||||
input_login_retry: $('#sec-login-retry'),
|
||||
input_lock_timeout: $('#sec-lock-timeout'),
|
||||
btn_auth_username_password: $('#sec-auth-username-password'),
|
||||
btn_auth_username_password_captcha: $('#sec-auth-username-password-captcha'),
|
||||
btn_auth_username_oath: $('#sec-auth-username-oath'),
|
||||
btn_auth_username_password_oath: $('#sec-auth-username-password-oath')
|
||||
};
|
||||
|
||||
_sec.init = function (cb_stack) {
|
||||
_sec.update_dom_password($app.options.sys_cfg.password);
|
||||
_sec.update_dom_login($app.options.sys_cfg.login);
|
||||
|
||||
$('#tab-security').find('.tp-checkbox.tp-editable').click(function () {
|
||||
if ($(this).hasClass('tp-selected'))
|
||||
$(this).removeClass('tp-selected');
|
||||
else
|
||||
$(this).addClass('tp-selected');
|
||||
});
|
||||
|
||||
_sec.dom.btn_save.click(function () {
|
||||
_sec.on_btn_save();
|
||||
});
|
||||
|
||||
cb_stack.exec();
|
||||
};
|
||||
|
||||
_sec.update_dom_password = function (password) {
|
||||
_sec.dom.btn_password_allow_reset.removeClass('tp-selected');
|
||||
if (password.allow_reset)
|
||||
_sec.dom.btn_password_allow_reset.addClass('tp-selected');
|
||||
|
||||
_sec.dom.btn_password_force_strong.removeClass('tp-selected');
|
||||
if (password.force_strong)
|
||||
_sec.dom.btn_password_force_strong.addClass('tp-selected');
|
||||
|
||||
_sec.dom.input_password_timeout.val(password.timeout);
|
||||
};
|
||||
|
||||
_sec.update_dom_login = function (login) {
|
||||
_sec.dom.input_session_timeout.val(login.session_timeout);
|
||||
_sec.dom.input_login_retry.val(login.retry);
|
||||
_sec.dom.input_lock_timeout.val(login.lock_timeout);
|
||||
|
||||
_sec.dom.btn_auth_username_password.removeClass('tp-selected');
|
||||
if (login.auth & TP_LOGIN_AUTH_USERNAME_PASSWORD)
|
||||
_sec.dom.btn_auth_username_password.addClass('tp-selected');
|
||||
if (login.auth & TP_LOGIN_AUTH_USERNAME_PASSWORD_CAPTCHA)
|
||||
_sec.dom.btn_auth_username_password_captcha.addClass('tp-selected');
|
||||
if (login.auth & TP_LOGIN_AUTH_USERNAME_OATH)
|
||||
_sec.dom.btn_auth_username_oath.addClass('tp-selected');
|
||||
if (login.auth & TP_LOGIN_AUTH_USERNAME_PASSWORD_OATH)
|
||||
_sec.dom.btn_auth_username_password_oath.addClass('tp-selected');
|
||||
};
|
||||
|
||||
_sec.on_btn_save = function() {
|
||||
var _password_allow_reset = _sec.dom.btn_password_allow_reset.hasClass('tp-selected');
|
||||
|
||||
};
|
||||
|
||||
return _sec;
|
||||
};
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<div class="box box-nav-tabs">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#tab-security" data-toggle="tab">安全</a></li>
|
||||
<li><a href="#tab-email" data-toggle="tab">邮件系统</a></li>
|
||||
<li><a href="#tab-smtp" data-toggle="tab">邮件系统</a></li>
|
||||
<li><a href="#tab-storage" data-toggle="tab">存储</a></li>
|
||||
<li><a href="#tab-backup" data-toggle="tab">备份</a></li>
|
||||
</ul>
|
||||
|
@ -33,21 +33,21 @@
|
|||
<tr>
|
||||
<td class="key">找回密码</td>
|
||||
<td class="value">
|
||||
<div id="sec-allow-reset-password" class="tp-checkbox tp-editable tp-selected">允许用户找回密码</div>
|
||||
<div id="sec-allow-reset-password" class="tp-checkbox tp-editable">允许用户找回密码</div>
|
||||
<span class="desc">关闭此功能,只能由管理员为用户重置密码。默认开启。</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key">密码强度</td>
|
||||
<td class="value">
|
||||
<div id="sec-force-strong-password" class="tp-checkbox tp-editable tp-selected">强制使用强密码</div>
|
||||
<div id="sec-force-strong-password" class="tp-checkbox tp-editable">强制使用强密码</div>
|
||||
<span class="desc">至少8个英文字符,必须包含大写字母、小写字母、数字和标点符号。默认开启。</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key">密码有效期</td>
|
||||
<td class="value">
|
||||
<input type="text" value="0"/><span class="unit">天</span><span class="desc">0~180。密码过期后用户将无法登录,为0则密码永不过期。默认为0。</span>
|
||||
<input id="sec-password-timeout" type="text" value="0"/><span class="unit">天</span><span class="desc">0~180。密码过期后用户将无法登录,为0则密码永不过期。默认为0。</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
@ -60,19 +60,19 @@
|
|||
<tr>
|
||||
<td class="key">WEB会话超时</td>
|
||||
<td class="value">
|
||||
<input type="text" value="30"/><span class="unit">分钟</span><span class="desc">5~1440。超过设定时长无操作,用户将被强制登出。默认为30分钟。</span>
|
||||
<input id="sec-session-timeout" type="text" value="30"/><span class="unit">分钟</span><span class="desc">5~1440。超过设定时长无操作,用户将被强制登出。默认为30分钟。</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key">密码尝试次数</td>
|
||||
<td class="value">
|
||||
<input type="text" value="0"/><span class="unit">次</span><span class="desc">0~10。密码连续错误超过设定次数,用户将被临时锁定,为0则不限制。默认为0。</span>
|
||||
<input id="sec-login-retry" type="text" value="0"/><span class="unit">次</span><span class="desc">0~10。密码连续错误超过设定次数,用户将被临时锁定,为0则不限制。默认为0。</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key">临时锁定时长</td>
|
||||
<td class="value">
|
||||
<input type="text" value="30"/><span class="unit">分钟</span><span class="desc">0~9999。用户被临时锁定的持续时间,为0则持续到由管理员解锁。默认为30分钟。</span>
|
||||
<input id="sec-lock-timeout" type="text" value="30"/><span class="unit">分钟</span><span class="desc">0~9999。用户被临时锁定的持续时间,为0则持续到由管理员解锁。默认为30分钟。</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -84,19 +84,25 @@
|
|||
<tr>
|
||||
<td class="key"></td>
|
||||
<td class="value">
|
||||
<div id="sec-allow-reset-password" class="tp-checkbox tp-editable tp-selected">用户名 + 密码</div>
|
||||
<div id="sec-auth-username-password" class="tp-checkbox tp-editable">用户名 + 密码</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key"></td>
|
||||
<td class="value">
|
||||
<div id="sec-allow-reset-password" class="tp-checkbox tp-editable tp-selected">用户名 + 密码 + 验证码</div>
|
||||
<div id="sec-auth-username-password-captcha" class="tp-checkbox tp-editable">用户名 + 密码 + 验证码</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key"></td>
|
||||
<td class="value">
|
||||
<div id="sec-allow-reset-password" class="tp-checkbox tp-editable tp-selected">用户名 + 密码 + 身份认证器动态密码</div>
|
||||
<div id="sec-auth-username-oath" class="tp-checkbox tp-editable">用户名 + 身份认证器动态密码</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key"></td>
|
||||
<td class="value">
|
||||
<div id="sec-auth-username-password-oath" class="tp-checkbox tp-editable">用户名 + 密码 + 身份认证器动态密码</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -106,7 +112,7 @@
|
|||
</div>
|
||||
|
||||
<!-- panel for mail config -->
|
||||
<div class="tab-pane" id="tab-email">
|
||||
<div class="tab-pane" id="tab-smtp">
|
||||
<table class="table table-info-list">
|
||||
<tr>
|
||||
<td class="key">SMTP服务器</td>
|
||||
|
|
|
@ -468,12 +468,12 @@ class AppConfig(BaseAppConfig):
|
|||
_password = {}
|
||||
|
||||
self.sys.password = tp_convert_to_attr_dict(_password)
|
||||
if not self.sys.password.is_exists('find'):
|
||||
self.sys.password.find = True
|
||||
if not self.sys.password.is_exists('strong'):
|
||||
self.sys.password.strong = True
|
||||
if not self.sys.password.is_exists('allow_reset'):
|
||||
self.sys.password.allow_reset = True
|
||||
if not self.sys.password.is_exists('force_strong'):
|
||||
self.sys.password.force_strong = True
|
||||
if not self.sys.password.is_exists('timeout'):
|
||||
self.sys.password.timeout = 30
|
||||
self.sys.password.timeout = 0
|
||||
|
||||
# =====================================
|
||||
# 登录相关
|
||||
|
@ -492,7 +492,7 @@ class AppConfig(BaseAppConfig):
|
|||
if not self.sys.login.is_exists('lock_timeout'):
|
||||
self.sys.login.lock_timeout = 30 # 30 min
|
||||
if not self.sys.login.is_exists('auth'):
|
||||
self.sys.login.auth = TP_LOGIN_AUTH_USERNAME_PASSWORD | TP_LOGIN_AUTH_USERNAME_PASSWORD_CAPTCHA | TP_LOGIN_AUTH_USERNAME_OATH
|
||||
self.sys.login.auth = TP_LOGIN_AUTH_USERNAME_PASSWORD | TP_LOGIN_AUTH_USERNAME_PASSWORD_CAPTCHA | TP_LOGIN_AUTH_USERNAME_OATH | TP_LOGIN_AUTH_USERNAME_PASSWORD_OATH
|
||||
# print('==login==', json.dumps(self.sys.login, separators=(',', ':')))
|
||||
|
||||
# =====================================
|
||||
|
|
|
@ -704,16 +704,16 @@ class DatabaseInit:
|
|||
'INSERT INTO `{}config` (`name`, `value`) VALUES ("db_ver", "{}");'.format(self.db.table_prefix, self.db.DB_VERSION)
|
||||
)
|
||||
|
||||
self._db_exec(
|
||||
'设置初始化配置',
|
||||
[
|
||||
'INSERT INTO `{}config` (`name`, `value`) VALUES ("smtp_server", "");'.format(self.db.table_prefix),
|
||||
'INSERT INTO `{}config` (`name`, `value`) VALUES ("smtp_port", "-1");'.format(self.db.table_prefix),
|
||||
'INSERT INTO `{}config` (`name`, `value`) VALUES ("smtp_ssl", "-1");'.format(self.db.table_prefix),
|
||||
'INSERT INTO `{}config` (`name`, `value`) VALUES ("smtp_sender", "");'.format(self.db.table_prefix),
|
||||
'INSERT INTO `{}config` (`name`, `value`) VALUES ("smtp_password", "");'.format(self.db.table_prefix),
|
||||
]
|
||||
)
|
||||
# self._db_exec(
|
||||
# '设置初始化配置',
|
||||
# [
|
||||
# 'INSERT INTO `{}config` (`name`, `value`) VALUES ("smtp_server", "");'.format(self.db.table_prefix),
|
||||
# 'INSERT INTO `{}config` (`name`, `value`) VALUES ("smtp_port", "-1");'.format(self.db.table_prefix),
|
||||
# 'INSERT INTO `{}config` (`name`, `value`) VALUES ("smtp_ssl", "-1");'.format(self.db.table_prefix),
|
||||
# 'INSERT INTO `{}config` (`name`, `value`) VALUES ("smtp_sender", "");'.format(self.db.table_prefix),
|
||||
# 'INSERT INTO `{}config` (`name`, `value`) VALUES ("smtp_password", "");'.format(self.db.table_prefix),
|
||||
# ]
|
||||
# )
|
||||
|
||||
privilege_admin = TP_PRIVILEGE_ALL
|
||||
privilege_ops = TP_PRIVILEGE_LOGIN_WEB | TP_PRIVILEGE_OPS
|
||||
|
|
|
@ -46,6 +46,7 @@ class TPDatabase:
|
|||
self.current_ver = 0
|
||||
|
||||
self.auto_increment = ''
|
||||
self.place_holder = ''
|
||||
|
||||
self._table_prefix = ''
|
||||
self._conn_pool = None
|
||||
|
@ -109,6 +110,7 @@ class TPDatabase:
|
|||
def _init_sqlite(self, db_file):
|
||||
self.db_type = self.DB_TYPE_SQLITE
|
||||
self.auto_increment = 'AUTOINCREMENT'
|
||||
self.place_holder = '?'
|
||||
self.sqlite_file = db_file
|
||||
|
||||
self._table_prefix = 'tp_'
|
||||
|
@ -124,6 +126,7 @@ class TPDatabase:
|
|||
def _init_mysql(self, mysql_host, mysql_port, mysql_db, mysql_prefix, mysql_user, mysql_password):
|
||||
self.db_type = self.DB_TYPE_MYSQL
|
||||
self.auto_increment = 'AUTO_INCREMENT'
|
||||
self.place_holder = '%s'
|
||||
|
||||
self._table_prefix = mysql_prefix
|
||||
self.mysql_host = mysql_host
|
||||
|
@ -196,10 +199,11 @@ class TPDatabase:
|
|||
# log.d('[db] cost {} seconds.\n'.format(_end - _start))
|
||||
return ret
|
||||
|
||||
def exec(self, sql):
|
||||
log.d('[db] {}\n'.format(sql))
|
||||
def exec(self, sql, args=()):
|
||||
# log.d('[db] {}\n'.format(sql, args))
|
||||
print('[db]', sql, args)
|
||||
# _start = datetime.datetime.utcnow().timestamp()
|
||||
ret = self._conn_pool.exec(sql)
|
||||
ret = self._conn_pool.exec(sql, args)
|
||||
# _end = datetime.datetime.utcnow().timestamp()
|
||||
# log.d('[db] cost {} seconds.\n'.format(_end - _start))
|
||||
return ret
|
||||
|
@ -327,11 +331,11 @@ class TPDatabasePool:
|
|||
return None
|
||||
return self._do_query(_conn, sql)
|
||||
|
||||
def exec(self, sql):
|
||||
def exec(self, sql, args):
|
||||
_conn = self._get_connect()
|
||||
if _conn is None:
|
||||
return False
|
||||
return self._do_exec(_conn, sql)
|
||||
return self._do_exec(_conn, sql, args)
|
||||
|
||||
def transaction(self, sql_list):
|
||||
_conn = self._get_connect()
|
||||
|
@ -363,7 +367,7 @@ class TPDatabasePool:
|
|||
def _do_query(self, conn, sql):
|
||||
return None
|
||||
|
||||
def _do_exec(self, conn, sql):
|
||||
def _do_exec(self, conn, sql, args):
|
||||
return None
|
||||
|
||||
def _do_transaction(self, conn, sql_list):
|
||||
|
@ -401,10 +405,10 @@ class TPSqlitePool(TPDatabasePool):
|
|||
finally:
|
||||
cursor.close()
|
||||
|
||||
def _do_exec(self, conn, sql):
|
||||
def _do_exec(self, conn, sql, args):
|
||||
try:
|
||||
with conn:
|
||||
conn.execute(sql)
|
||||
conn.execute(sql, args)
|
||||
return True
|
||||
except Exception as e:
|
||||
log.e('[sqlite] _do_exec() failed: {}\n'.format(e.__str__()))
|
||||
|
|
|
@ -75,7 +75,7 @@ class DoRoleUpdateHandler(TPBaseJsonHandler):
|
|||
return self.write_json(TPE_PARAM)
|
||||
|
||||
if role_id == 0:
|
||||
err, role_id = system_model.add_role(self, role_id, role_name, privilege)
|
||||
err, role_id = system_model.add_role(self, role_name, privilege)
|
||||
else:
|
||||
if role_id == 1:
|
||||
return self.write_json(TPE_FAILED, '禁止修改系统管理员角色!')
|
||||
|
@ -246,8 +246,8 @@ class DoSaveCfgSmtpHandler(TPBaseJsonHandler):
|
|||
return self.write_json(TPE_PARAM)
|
||||
|
||||
# 调用Model模块来操作数据库
|
||||
code, msg = system_model.save_mail_config(_server, _port, _ssl, _sender, _password)
|
||||
if code == TPE_OK:
|
||||
err = system_model.save_smtp_config(self, _server, _port, _ssl, _sender, _password)
|
||||
if err == TPE_OK:
|
||||
# 同时更新内存缓存
|
||||
get_cfg().sys.smtp.server = _server
|
||||
get_cfg().sys.smtp.port = _port
|
||||
|
@ -255,4 +255,4 @@ class DoSaveCfgSmtpHandler(TPBaseJsonHandler):
|
|||
get_cfg().sys.smtp.sender = _sender
|
||||
get_cfg().sys_smtp_password = _password
|
||||
|
||||
self.write_json(code, message=msg)
|
||||
self.write_json(err)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import json
|
||||
from app.const import *
|
||||
from app.base.db import get_db, SQL
|
||||
from app.base.logger import log
|
||||
|
@ -7,26 +8,38 @@ from app.base.utils import tp_timestamp_utc_now
|
|||
from . import syslog
|
||||
|
||||
|
||||
def save_mail_config(_server, _port, _ssl, _sender, _password):
|
||||
log.v('save mail config.\n')
|
||||
|
||||
def save_smtp_config(handler, _server, _port, _ssl, _sender, _password):
|
||||
db = get_db()
|
||||
|
||||
sql_list = list()
|
||||
sql_list.append('UPDATE `{}config` SET `value`="{}" WHERE `name`="smtp_server";'.format(db.table_prefix, _server))
|
||||
sql_list.append('UPDATE `{}config` SET `value`="{}" WHERE `name`="smtp_port";'.format(db.table_prefix, _port))
|
||||
sql_list.append('UPDATE `{}config` SET `value`="{}" WHERE `name`="smtp_ssl";'.format(db.table_prefix, _ssl))
|
||||
sql_list.append('UPDATE `{}config` SET `value`="{}" WHERE `name`="smtp_sender";'.format(db.table_prefix, _sender))
|
||||
sql_list.append('UPDATE `{}config` SET `value`="{}" WHERE `name`="smtp_password";'.format(db.table_prefix, _password))
|
||||
_smtp = {
|
||||
'server': _server,
|
||||
'port': _port,
|
||||
'ssl': _ssl,
|
||||
'sender': _sender,
|
||||
'password': _password
|
||||
}
|
||||
|
||||
ret = db.transaction(sql_list)
|
||||
if ret:
|
||||
return TPE_OK, ''
|
||||
str_smtp = json.dumps(_smtp, separators=(',', ':'))
|
||||
|
||||
return TPE_FAILED, '数据库操作失败'
|
||||
sql = 'SELECT name FROM `{dbtp}config` WHERE name="smtp";'.format(dbtp=db.table_prefix)
|
||||
db_ret = db.query(sql)
|
||||
if db_ret is not None and len(db_ret) > 0:
|
||||
sql = 'UPDATE `{dbtp}config` SET value={dbph} WHERE name="smtp";'.format(dbtp=db.table_prefix, dbph=db.place_holder)
|
||||
db_ret = db.exec(sql, (str_smtp,))
|
||||
else:
|
||||
sql = 'INSERT INTO `{dbtp}config` (name, value) VALUES ("smtp", {dbph});'.format(dbtp=db.table_prefix, dbph=db.place_holder)
|
||||
db_ret = db.exec(sql, (str_smtp,))
|
||||
|
||||
if not db_ret:
|
||||
return TPE_DATABASE
|
||||
|
||||
operator = handler.get_current_user()
|
||||
syslog.sys_log(operator, handler.request.remote_ip, TPE_OK, "更新SMTP设置")
|
||||
|
||||
return TPE_OK
|
||||
|
||||
|
||||
def add_role(handler, role_id, role_name, privilege):
|
||||
def add_role(handler, role_name, privilege):
|
||||
db = get_db()
|
||||
_time_now = tp_timestamp_utc_now()
|
||||
operator = handler.get_current_user()
|
||||
|
@ -39,8 +52,7 @@ def add_role(handler, role_id, role_name, privilege):
|
|||
|
||||
sql = 'INSERT INTO `{}role` (name, privilege, creator_id, create_time) VALUES ' \
|
||||
'("{name}", {privilege}, {creator_id}, {create_time});' \
|
||||
''.format(db.table_prefix,
|
||||
name=role_name, privilege=privilege, creator_id=operator['id'], create_time=_time_now)
|
||||
''.format(db.table_prefix, name=role_name, privilege=privilege, creator_id=operator['id'], create_time=_time_now)
|
||||
db_ret = db.exec(sql)
|
||||
if not db_ret:
|
||||
return TPE_DATABASE, 0
|
||||
|
@ -104,40 +116,3 @@ def remove_role(handler, role_id):
|
|||
syslog.sys_log(handler.get_current_user(), handler.request.remote_ip, TPE_OK, "删除角色:{}".format(role_name))
|
||||
|
||||
return TPE_OK
|
||||
|
||||
|
||||
# def get_config_list():
|
||||
# try:
|
||||
# from eom_app.module.common import get_db_con
|
||||
# from eom_app.module.common import DbItem
|
||||
# sql_exec = get_db_con()
|
||||
# field_a = ['name', 'value']
|
||||
# string_sql = 'SELECT {} FROM ts_config as a ;'.format(','.join(['a.{}'.format(i) for i in field_a]))
|
||||
# db_ret = sql_exec.ExecProcQuery(string_sql)
|
||||
# h = dict()
|
||||
# for item in db_ret:
|
||||
# x = DbItem()
|
||||
# x.load(item, ['a_{}'.format(i) for i in field_a])
|
||||
# h[x.a_name] = x.a_value
|
||||
#
|
||||
# return h
|
||||
# except Exception as e:
|
||||
# return None
|
||||
#
|
||||
#
|
||||
# def set_config(change_list):
|
||||
# from eom_app.module.common import get_db_con
|
||||
# sql_exec = get_db_con()
|
||||
# #
|
||||
# for item in change_list:
|
||||
# name = item['name']
|
||||
# value = item['value']
|
||||
# str_sql = 'UPDATE ts_config SET value = \'{}\' ' \
|
||||
# ' WHERE name = \'{}\''.format(value, name)
|
||||
# ret = sql_exec.ExecProcNonQuery(str_sql)
|
||||
#
|
||||
# return ret
|
||||
#
|
||||
# def get_config_list():
|
||||
# print(cfg.base)
|
||||
# return cfg.base
|
||||
|
|
Loading…
Reference in New Issue