From 7e80ab6ed3ade7a6508c0d8fb3efcfd6a5bb6232 Mon Sep 17 00:00:00 2001 From: Apex Liu Date: Tue, 23 May 2017 19:30:59 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E8=B0=83=E6=95=B4=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E6=A0=B9=E6=8D=AE=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E6=98=BE=E7=A4=BA=E8=A6=81?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E7=9A=84=E6=95=B0=E6=8D=AE=E5=BA=93=EF=BC=9B?= =?UTF-8?q?2.=20=E6=94=AF=E6=8C=81=E9=87=8D=E6=96=B0=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=EF=BC=9B3.=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=87=A0=E4=B8=AA=E6=96=87=E4=BB=B6=E5=90=8D=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../www/teleport/app/eom_app/app/configs.py | 25 +- server/www/teleport/app/eom_app/app/core.py | 27 +- server/www/teleport/app/eom_app/app/db.py | 2 + .../teleport/app/eom_app/controller/host.py | 2 +- .../app/eom_app/controller/maintenance.py | 3 + .../js/ui/{admin_host.js => host/admin.js} | 0 .../js/ui/{common_host.js => host/user.js} | 0 .../www/teleport/view/host/admin_index.mako | 2 +- .../{common_index.mako => user_index.mako} | 230 +++++++++--------- .../teleport/view/maintenance/install.mako | 77 +++++- 10 files changed, 225 insertions(+), 143 deletions(-) rename server/www/teleport/static/js/ui/{admin_host.js => host/admin.js} (100%) rename server/www/teleport/static/js/ui/{common_host.js => host/user.js} (100%) rename server/www/teleport/view/host/{common_index.mako => user_index.mako} (95%) diff --git a/server/www/teleport/app/eom_app/app/configs.py b/server/www/teleport/app/eom_app/app/configs.py index 60a1a99..3ebe894 100644 --- a/server/www/teleport/app/eom_app/app/configs.py +++ b/server/www/teleport/app/eom_app/app/configs.py @@ -3,6 +3,7 @@ import configparser import os +import eom_common.eomcore.utils as utils from eom_common.eomcore.logger import log __all__ = ['app_cfg'] @@ -187,6 +188,13 @@ class BaseAppConfig(dict): def _on_load(self, cfg_parser): raise RuntimeError('can not create instance for base class.') + def reload(self): + self['_cfg_default'] = {} + self['_cfg_loaded'] = {} + self['_kvs'] = {'_': self['_kvs']['_']} + self._on_init() + return self.load(self['_cfg_file']) + def set_kv(self, key, val): x = key.split('::') if 1 == len(x): @@ -420,7 +428,7 @@ class AppConfig(BaseAppConfig): self.set_default('database::mysql-db', 'teleport', 'mysql-db=teleport') self.set_default('database::mysql-prefix', 'tp_', 'mysql-prefix=tp_') self.set_default('database::mysql-user', 'teleport', 'mysql-user=teleport') - self.set_default('database::mysql-password', None, 'mysql-password=password') + self.set_default('database::mysql-password', 'password', 'mysql-password=password') def _on_get_save_info(self): return [ @@ -498,6 +506,21 @@ class AppConfig(BaseAppConfig): if _tmp_str is not None: self.set_kv('database::mysql-password', _tmp_str) + _log_file, ok = self.get_str('common::log-file') + if ok: + self.log_path = os.path.abspath(os.path.dirname(_log_file)) + else: + _log_file = os.path.join(self.log_path, 'tpweb.log') + self.set_default('common::log-file', _log_file) + + if not os.path.exists(self.log_path): + utils.make_dir(self.log_path) + if not os.path.exists(self.log_path): + log.e('Can not create log path:{}\n'.format(self.log_path)) + return False + + log.set_attribute(filename=_log_file) + return True def update_core(self, conf_data): diff --git a/server/www/teleport/app/eom_app/app/core.py b/server/www/teleport/app/eom_app/app/core.py index ba7e12f..36754d9 100644 --- a/server/www/teleport/app/eom_app/app/core.py +++ b/server/www/teleport/app/eom_app/app/core.py @@ -33,24 +33,25 @@ class WebServerCore: cfg.template_path = os.path.abspath(options['template_path']) cfg.res_path = os.path.abspath(options['res_path']) cfg.cfg_path = os.path.abspath(options['cfg_path']) + cfg.log_path = os.path.abspath(options['log_path']) _cfg_file = os.path.join(cfg.cfg_path, 'web.ini') if not cfg.load(_cfg_file): return False - _log_file, ok = cfg.get_str('common::log-file') - if ok: - cfg.log_path = os.path.abspath(os.path.dirname(_log_file)) - else: - cfg.log_path = os.path.abspath(options['log_path']) - _log_file = os.path.join(cfg.log_path, 'tpweb.log') - cfg.set_default('common::log-file', _log_file) - - if not os.path.exists(cfg.log_path): - utils.make_dir(cfg.log_path) - if not os.path.exists(cfg.log_path): - log.e('Can not create log path:{}\n'.format(cfg.log_path)) - return False + # _log_file, ok = cfg.get_str('common::log-file') + # if ok: + # cfg.log_path = os.path.abspath(os.path.dirname(_log_file)) + # else: + # cfg.log_path = os.path.abspath(options['log_path']) + # _log_file = os.path.join(cfg.log_path, 'tpweb.log') + # cfg.set_default('common::log-file', _log_file) + # + # if not os.path.exists(cfg.log_path): + # utils.make_dir(cfg.log_path) + # if not os.path.exists(cfg.log_path): + # log.e('Can not create log path:{}\n'.format(cfg.log_path)) + # return False # log.set_attribute(min_level=cfg.common.log_level, filename=cfg.common.log_file) # if cfg.common.debug_mode: diff --git a/server/www/teleport/app/eom_app/app/db.py b/server/www/teleport/app/eom_app/app/db.py index 00a77e6..df8de39 100644 --- a/server/www/teleport/app/eom_app/app/db.py +++ b/server/www/teleport/app/eom_app/app/db.py @@ -181,6 +181,8 @@ class TPDatabase: elif self.db_type == self.DB_TYPE_MYSQL: # select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='dbname' and TABLE_NAME='tablename' ; ret = self.query('SELECT TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA="{}" and TABLE_NAME="{}";'.format(self.mysql_db, table_name)) + if ret is None: + return None if len(ret) == 0: return None else: diff --git a/server/www/teleport/app/eom_app/controller/host.py b/server/www/teleport/app/eom_app/controller/host.py index 9637be7..7d41ce8 100644 --- a/server/www/teleport/app/eom_app/controller/host.py +++ b/server/www/teleport/app/eom_app/controller/host.py @@ -49,7 +49,7 @@ class IndexHandler(TPBaseUserAuthHandler): param['cert_list'] = host.get_cert_list() self.render('host/admin_index.mako', page_param=json.dumps(param)) else: - self.render('host/common_index.mako', page_param=json.dumps(param)) + self.render('host/user_index.mako', page_param=json.dumps(param)) class UploadAndImportHandler(TPBaseAdminAuthHandler): diff --git a/server/www/teleport/app/eom_app/controller/maintenance.py b/server/www/teleport/app/eom_app/controller/maintenance.py index 08d3722..1f7ad61 100644 --- a/server/www/teleport/app/eom_app/controller/maintenance.py +++ b/server/www/teleport/app/eom_app/controller/maintenance.py @@ -19,7 +19,10 @@ class IndexHandler(TPBaseUserAuthHandler): class InstallHandler(TPBaseAdminAuthHandler): def get(self): if get_db().need_create: + cfg.reload() + _db = get_db() + _db.init() db = {'type': _db.db_type} if _db.db_type == _db.DB_TYPE_SQLITE: diff --git a/server/www/teleport/static/js/ui/admin_host.js b/server/www/teleport/static/js/ui/host/admin.js similarity index 100% rename from server/www/teleport/static/js/ui/admin_host.js rename to server/www/teleport/static/js/ui/host/admin.js diff --git a/server/www/teleport/static/js/ui/common_host.js b/server/www/teleport/static/js/ui/host/user.js similarity index 100% rename from server/www/teleport/static/js/ui/common_host.js rename to server/www/teleport/static/js/ui/host/user.js diff --git a/server/www/teleport/view/host/admin_index.mako b/server/www/teleport/view/host/admin_index.mako index 0dce2f3..6ef7f99 100644 --- a/server/www/teleport/view/host/admin_index.mako +++ b/server/www/teleport/view/host/admin_index.mako @@ -7,7 +7,7 @@ <%block name="extend_js"> - + <%block name="breadcrumb"> diff --git a/server/www/teleport/view/host/common_index.mako b/server/www/teleport/view/host/user_index.mako similarity index 95% rename from server/www/teleport/view/host/common_index.mako rename to server/www/teleport/view/host/user_index.mako index ed17d4b..76a2def 100644 --- a/server/www/teleport/view/host/common_index.mako +++ b/server/www/teleport/view/host/user_index.mako @@ -1,115 +1,115 @@ -<%! - page_title_ = '主机列表' - page_menu_ = ['host'] - page_id_ = 'host' -%> -<%inherit file="../page_base.mako"/> - -<%block name="extend_js"> - - - - -<%block name="breadcrumb"> - - - -## Begin Main Body. - -
- - -
- - -
-
- 助手版本:未知 - 刷新 -
- -
- -
- 主机分组 -
- - -
-
- - -
- 系统 -
- - -
-
- - -
- - -
- -
-
- - - - - - - - - -
- - -
- - - - - - -<%block name="extend_content"> - - - - -<%block name="embed_js"> - - +<%! + page_title_ = '主机列表' + page_menu_ = ['host'] + page_id_ = 'host' +%> +<%inherit file="../page_base.mako"/> + +<%block name="extend_js"> + + + + +<%block name="breadcrumb"> + + + +## Begin Main Body. + +
+ + +
+ + +
+
+ 助手版本:未知 + 刷新 +
+ +
+ +
+ 主机分组 +
+ + +
+
+ + +
+ 系统 +
+ + +
+
+ + +
+ + +
+ +
+
+ + + + + + + + + +
+ + +
+ + + + + + +<%block name="extend_content"> + + + + +<%block name="embed_js"> + + diff --git a/server/www/teleport/view/maintenance/install.mako b/server/www/teleport/view/maintenance/install.mako index e74fcd8..01c7ceb 100644 --- a/server/www/teleport/view/maintenance/install.mako +++ b/server/www/teleport/view/maintenance/install.mako @@ -26,7 +26,7 @@ .steps-detail { display: none; - margin: 10px; +## margin: 10px; padding: 10px; border: 1px solid #b4b4b4; background-color: #dcdcdc; @@ -44,8 +44,30 @@ border: 1px solid #9c2a26; } - #sqlite-info, #mysql-info { - display: none; + ## #db-info { + ## } + + .table { + width: auto; + margin-left: 20px; + } + + .table .key { + ## width:240px; + text-align: right; + } + + .table .value { + text-align: left; + font-weight: bold; + } + + .notice-box { + border:1px solid #e2cab4; + background-color: #ffe4cb; + padding:15px; + color: #000000; + margin-bottom:10px; } @@ -62,11 +84,11 @@

第一步:创建数据表

-

请选择要使用的数据库类型(暂时仅支持sqlite,其它类型开发中):

-
- -
-
+

TELEPORT支持SQLiteMySQL数据库,根据您的配置,将使用以下信息进行操作:

+
+
+ 注意:如果以上配置并不是您所期望的,请修改您的配置文件,然后刷新本页面。 +
@@ -77,7 +99,7 @@
@@ -91,20 +113,47 @@ "use strict"; ywl.add_page_options(${ page_param }); + + ywl._make_info = function (key, value) { + return '' + key + ':' + value + ''; + }; + ywl.on_init = function (cb_stack, cb_args) { ywl.dom = { btn_create_db: $('#btn-create-db'), steps_detail: $('#steps-detail'), - sqlite_info: $('#sqlite-info'), - mysql_info: $('#mysql-info') + db_info: $('#db-info') }; + var html = []; if (ywl.page_options.db.type === DB_TYPE_SQLITE) { + html.push(ywl._make_info('数据库类型', 'SQLite')); + html.push(ywl._make_info('数据库文件', ywl.page_options.db.sqlite_file)); } else if (ywl.page_options.db.type === DB_TYPE_MYSQL) { + html.push(ywl._make_info('数据库类型', 'MySQL')); + html.push(ywl._make_info('MySQL主机', ywl.page_options.db.mysql_host)); + html.push(ywl._make_info('MySQL端口', ywl.page_options.db.mysql_port)); + html.push(ywl._make_info('数据库名称', ywl.page_options.db.mysql_db)); + html.push(ywl._make_info('用户名', ywl.page_options.db.mysql_user)); + + var _t = []; + _t.push('
'); + _t.push('注意:请确保您在执行后续创建操作之前,已经在MySQL数据库中创建了数据库"'); + _t.push(ywl.page_options.db.mysql_db); + _t.push('"和用户"'); + _t.push(ywl.page_options.db.mysql_user); + _t.push('",并为用户"'); + _t.push(ywl.page_options.db.mysql_user); + _t.push('"设置了在数据库"'); + _t.push(ywl.page_options.db.mysql_db); + _t.push('"创建表的权限!'); + _t.push('
'); + ywl.dom.db_info.after(_t.join('')); } else { ywl.show_message('error', '未知的数据库类型,请检查您的配置文件!'); ywl.dom.btn_create_db.attr('disabled', 'disabled').hide(); } + ywl.dom.db_info.append(html.join('')); ywl.dom.btn_create_db.click(function () { @@ -145,6 +194,7 @@ if (ret.code === TPE_OK) { // show step progress. + var all_ok = true; var steps = ret.data.steps; ywl.dom.steps_detail.empty(); @@ -161,6 +211,7 @@ icon_class = 'fa-exclamation-circle'; err_class = ' class="error"'; steps[i].msg += ' 失败!' + all_ok = false; } else { err_class = ''; @@ -178,7 +229,9 @@ if (!ret.data.running) { - $('#step2').show('fast'); + if (all_ok) { + $('#step2').show('fast'); + } return; }