mirror of https://github.com/tp4a/teleport
temp:改进配置管理界面。
parent
a98df86d19
commit
750df290c8
|
@ -579,7 +579,7 @@ class InstallerLinux(InstallerBase):
|
|||
def _start_service(self):
|
||||
cc.v('')
|
||||
cc.o('start services...')
|
||||
_ret, _ = utils.sys_exec('service teleport start', direct_output=True)
|
||||
_ret, _ = utils.sys_exec('/etc/init.d/teleport start', direct_output=True)
|
||||
if _ret != 0:
|
||||
raise RuntimeError('not all services started.')
|
||||
|
||||
|
@ -612,7 +612,7 @@ class InstallerLinux(InstallerBase):
|
|||
def _check_service(self):
|
||||
cc.v('')
|
||||
cc.o('check services status...')
|
||||
utils.sys_exec('service teleport status', direct_output=True)
|
||||
utils.sys_exec('/etc/init.d/teleport status', direct_output=True)
|
||||
|
||||
|
||||
def _main():
|
||||
|
|
|
@ -12,89 +12,6 @@ PATH_ROOT=$(cd "$(dirname "$0")"; pwd)
|
|||
PATH_TARGET=/usr/local/eom
|
||||
|
||||
"${PATH_ROOT}/data/bin/tp_web" --py "${PATH_ROOT}/script/main.py"
|
||||
exit 0
|
||||
|
||||
|
||||
if [ ! -d "${PATH_TARGET}" ]; then
|
||||
mkdir -p "${PATH_TARGET}"
|
||||
fi
|
||||
|
||||
if [ -f /etc/init.d/eom_ts ]; then
|
||||
service eom_ts stop
|
||||
rm -rf /etc/init.d/eom_ts
|
||||
fi
|
||||
rm -rf /etc/rc2.d/S50eom_ts
|
||||
rm -rf /etc/rc3.d/S50eom_ts
|
||||
rm -rf /etc/rc4.d/S50eom_ts
|
||||
rm -rf /etc/rc5.d/S50eom_ts
|
||||
|
||||
|
||||
if [ -f /etc/init.d/teleport ]; then
|
||||
service teleport stop
|
||||
rm -rf /etc/init.d/teleport
|
||||
fi
|
||||
rm -rf /etc/rc2.d/S50teleport
|
||||
rm -rf /etc/rc3.d/S50teleport
|
||||
rm -rf /etc/rc4.d/S50teleport
|
||||
rm -rf /etc/rc5.d/S50teleport
|
||||
|
||||
sleep 1
|
||||
echo ""
|
||||
echo "Installing EOM Teleport Server..."
|
||||
|
||||
cd "${PATH_TARGET}"
|
||||
tar -zxvf "${PATH_ROOT}/data/teleport.tar.gz" >/dev/null
|
||||
cd "${PATH_ROOT}"
|
||||
|
||||
if [ ! -d "${PATH_TARGET}/teleport/etc" ]; then
|
||||
cp -r "${PATH_TARGET}/teleport/tmp/etc" "${PATH_TARGET}/teleport/etc"
|
||||
else
|
||||
if [ ! -f "${PATH_TARGET}/teleport/etc/web.ini" ]; then
|
||||
cp "${PATH_TARGET}/teleport/tmp/etc/web.ini" "${PATH_TARGET}/teleport/etc/web.ini"
|
||||
fi
|
||||
if [ ! -f "${PATH_TARGET}/teleport/etc/core.ini" ]; then
|
||||
cp "${PATH_TARGET}/teleport/tmp/etc/core.ini" "${PATH_TARGET}/teleport/etc/core.ini"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d "${PATH_TARGET}/teleport/data" ]; then
|
||||
cp -r "${PATH_TARGET}/teleport/tmp/data" "${PATH_TARGET}/teleport/data"
|
||||
fi
|
||||
|
||||
chmod +x "${PATH_TARGET}/teleport/bin/tp_core"
|
||||
chmod +x "${PATH_TARGET}/teleport/bin/tp_web"
|
||||
|
||||
echo "Generate daemon startup script..."
|
||||
|
||||
cp "${PATH_ROOT}/data/start.sh" "${PATH_TARGET}/teleport/."
|
||||
chmod +x "${PATH_TARGET}/teleport/start.sh"
|
||||
cp "${PATH_ROOT}/data/stop.sh" "${PATH_TARGET}/teleport/."
|
||||
chmod +x "${PATH_TARGET}/teleport/stop.sh"
|
||||
cp "${PATH_ROOT}/data/status.sh" "${PATH_TARGET}/teleport/."
|
||||
chmod +x "${PATH_TARGET}/teleport/status.sh"
|
||||
|
||||
cp "${PATH_ROOT}/data/daemon" /etc/init.d/teleport
|
||||
chmod +x /etc/init.d/teleport
|
||||
|
||||
ln -s /etc/init.d/teleport /etc/rc2.d/S50teleport
|
||||
ln -s /etc/init.d/teleport /etc/rc3.d/S50teleport
|
||||
ln -s /etc/init.d/teleport /etc/rc4.d/S50teleport
|
||||
ln -s /etc/init.d/teleport /etc/rc5.d/S50teleport
|
||||
|
||||
# Upgrade database...
|
||||
"${PATH_TARGET}/teleport/bin/tp_web" --py "${PATH_TARGET}/teleport/www/teleport/app/eom_upgrade.py"
|
||||
|
||||
echo ""
|
||||
echo "Start teleport server..."
|
||||
echo ""
|
||||
service teleport start
|
||||
echo ""
|
||||
sleep 1
|
||||
echo "Check teleport server status..."
|
||||
echo ""
|
||||
service teleport status
|
||||
echo ""
|
||||
|
||||
|
||||
echo ""
|
||||
echo -e "\e[32mInstallation done.\033[0m"
|
||||
|
|
|
@ -30,13 +30,13 @@ class ConfigFile(AttrDict):
|
|||
self['core'] = AttrDict()
|
||||
self['core']['ssh'] = AttrDict()
|
||||
self['core']['ssh']['enable'] = False
|
||||
self['core']['ssh']['port'] = 52189
|
||||
self['core']['ssh']['port'] = 0 # 52189
|
||||
self['core']['rdp'] = AttrDict()
|
||||
self['core']['rdp']['enable'] = False
|
||||
self['core']['rdp']['port'] = 52089
|
||||
self['core']['rdp']['port'] = 0 # 52089
|
||||
self['core']['telnet'] = AttrDict()
|
||||
self['core']['telnet']['enable'] = False
|
||||
self['core']['telnet']['port'] = 52389
|
||||
self['core']['telnet']['port'] = 0 # 52389
|
||||
|
||||
def load(self, cfg_file):
|
||||
if not os.path.exists(cfg_file):
|
||||
|
@ -113,6 +113,10 @@ class ConfigFile(AttrDict):
|
|||
|
||||
self['core']['replay_path'] = conf_data['replay-path']
|
||||
|
||||
# TODO: ...
|
||||
if 'web_server_rpc' in conf_data:
|
||||
self['core']['web_server_rpc'] = conf_data['web_server_rpc']
|
||||
|
||||
except IndexError:
|
||||
log.e('invalid core config.\n')
|
||||
return False
|
||||
|
|
|
@ -106,10 +106,12 @@ controllers = [
|
|||
(r'/host/sys-user/update', host.SysUserUpdate),
|
||||
(r'/host/sys-user/delete', host.SysUserDelete),
|
||||
|
||||
(r'/set/update-config', set.UpdateConfig),
|
||||
# (r'/set/update-config', set.UpdateConfig),
|
||||
# (r'/set/os-operator', set.OsOperator),
|
||||
(r'/set/', set.IndexHandler),
|
||||
(r'/set', set.IndexHandler),
|
||||
(r'/set/info', set.InfoHandler),
|
||||
(r'/set/db', set.DatabaseHandler),
|
||||
# (r'/set/', set.IndexHandler),
|
||||
# (r'/set', set.IndexHandler),
|
||||
|
||||
(r'/uidesign', index.UIDesignHandler),
|
||||
(r'/uidesign/without-sidebar', index.UIDesignWithoutSidebarHandler),
|
||||
|
|
|
@ -3,161 +3,128 @@
|
|||
import json
|
||||
import os
|
||||
import platform
|
||||
import re
|
||||
import socket
|
||||
import subprocess
|
||||
# import re
|
||||
# import socket
|
||||
# import subprocess
|
||||
import threading
|
||||
import time
|
||||
|
||||
from eom_app.app.configs import app_cfg
|
||||
from eom_app.module import host
|
||||
# from eom_app.module import host
|
||||
from eom_app.module import set
|
||||
from .base import TPBaseAdminAuthHandler, TPBaseAdminAuthJsonHandler
|
||||
|
||||
cfg = app_cfg()
|
||||
|
||||
|
||||
def get_local_ip():
|
||||
iplist = []
|
||||
PLATFORM = platform.system().lower()
|
||||
try:
|
||||
if PLATFORM == "windows":
|
||||
ip_info = socket.gethostbyname_ex(socket.gethostname())
|
||||
return ip_info[2]
|
||||
else:
|
||||
ipstr = '([0-9]{1,3}\.){3}[0-9]{1,3}'
|
||||
ipconfig_process = subprocess.Popen("ifconfig", stdout=subprocess.PIPE)
|
||||
output = ipconfig_process.stdout.read()
|
||||
ip_pattern = re.compile('(inet addr:%s)' % ipstr)
|
||||
pattern = re.compile(ipstr)
|
||||
|
||||
for ipaddr in re.finditer(ip_pattern, str(output)):
|
||||
ip = pattern.search(ipaddr.group())
|
||||
if ip.group() != "127.0.0.1":
|
||||
iplist.append(ip.group())
|
||||
return iplist
|
||||
except Exception:
|
||||
return iplist
|
||||
# def get_local_ip():
|
||||
# iplist = []
|
||||
# PLATFORM = platform.system().lower()
|
||||
# try:
|
||||
# if PLATFORM == "windows":
|
||||
# ip_info = socket.gethostbyname_ex(socket.gethostname())
|
||||
# return ip_info[2]
|
||||
# else:
|
||||
# ipstr = '([0-9]{1,3}\.){3}[0-9]{1,3}'
|
||||
# ipconfig_process = subprocess.Popen("ifconfig", stdout=subprocess.PIPE)
|
||||
# output = ipconfig_process.stdout.read()
|
||||
# ip_pattern = re.compile('(inet addr:%s)' % ipstr)
|
||||
# pattern = re.compile(ipstr)
|
||||
#
|
||||
# for ipaddr in re.finditer(ip_pattern, str(output)):
|
||||
# ip = pattern.search(ipaddr.group())
|
||||
# if ip.group() != "127.0.0.1":
|
||||
# iplist.append(ip.group())
|
||||
# return iplist
|
||||
# except Exception:
|
||||
# return iplist
|
||||
|
||||
|
||||
class IndexHandler(TPBaseAdminAuthHandler):
|
||||
class InfoHandler(TPBaseAdminAuthHandler):
|
||||
def get(self):
|
||||
# static_path = cfg.static_path
|
||||
# var_js = os.path.join(static_path, 'js', 'var.js')
|
||||
|
||||
# f = None
|
||||
param = {
|
||||
'core': cfg.core,
|
||||
'web': {
|
||||
'core_server_rpc': cfg['core_server_rpc']
|
||||
}
|
||||
}
|
||||
self.render('set/info.mako', page_param=json.dumps(param))
|
||||
|
||||
# try:
|
||||
# config_list = host.get_config_list()
|
||||
# ts_server = dict()
|
||||
# ts_server['ip'] = config_list['ts_server_ip']
|
||||
# ts_server['ssh_port'] = config_list['ts_server_ssh_port']
|
||||
# ts_server['rdp_port'] = config_list['ts_server_rdp_port']
|
||||
# ts_server['telnet_port'] = config_list['ts_server_telnet_port']
|
||||
# # f = open(var_js, 'w')
|
||||
# # f.write("\"use strict\";\nvar teleport_ip = \"{}\";\n".format(ts_server['ip']))
|
||||
# except Exception:
|
||||
# return self.write(-1)
|
||||
# finally:
|
||||
# # if f is not None:
|
||||
# # f.close()
|
||||
# pass
|
||||
|
||||
# config_list = set.get_config_list()
|
||||
# if 'ts_server_ip' in config_list:
|
||||
# ip_list = get_local_ip()
|
||||
# if not isinstance(ip_list, list):
|
||||
# ip_list = [ip_list, ]
|
||||
#
|
||||
# # ip_list.append(config_list['ts_server_ip'])
|
||||
# if config_list['ts_server_ip'] not in ip_list:
|
||||
# ip_list.append(config_list['ts_server_ip'])
|
||||
#
|
||||
# # if isinstance(temp, list):
|
||||
# # ip_list.extend(temp)
|
||||
#
|
||||
# config_list['_ip_list'] = ip_list
|
||||
|
||||
# cfg_list = dict()
|
||||
# cfg_list['ts_server_ssh_port'] = cfg.core.ssh.port
|
||||
# cfg_list['ts_server_ssh_enabled'] = 1 if cfg.core.ssh.enabled else 0
|
||||
# cfg_list['ts_server_rdp_port'] = cfg.core.rdp.port
|
||||
# cfg_list['ts_server_rdp_enabled'] = 1 if cfg.core.rdp.enabled else 0
|
||||
# cfg_list['ts_server_telnet_port'] = cfg.core.telnet.port
|
||||
# cfg_list['ts_server_telnet_enabled'] = 1 if cfg.core.telnet.enabled else 0
|
||||
# self.render('set/index.mako', config_list=cfg_list)
|
||||
|
||||
class DatabaseHandler(TPBaseAdminAuthHandler):
|
||||
def get(self):
|
||||
param = {'core_server': cfg.core}
|
||||
self.render('set/index.mako', page_param=json.dumps(param))
|
||||
self.render('set/database.mako', page_param=json.dumps(param))
|
||||
|
||||
|
||||
def _restart_func():
|
||||
time.sleep(1)
|
||||
|
||||
PLATFORM = platform.system().lower()
|
||||
|
||||
if PLATFORM == 'windows':
|
||||
sf = os.path.join(cfg.app_path, 'tools', 'restart.bat')
|
||||
os.system('cmd.exe /c "{}"'.format(sf))
|
||||
else:
|
||||
# sf = os.path.join(cfg.app_path, 'tools', 'restart.sh')
|
||||
# os.system(sf)
|
||||
os.system('service eom_ts restart')
|
||||
|
||||
# os.system(sf)
|
||||
# def _restart_func():
|
||||
# time.sleep(1)
|
||||
#
|
||||
# PLATFORM = platform.system().lower()
|
||||
#
|
||||
# if PLATFORM == 'windows':
|
||||
# sf = os.path.join(cfg.app_path, 'tools', 'restart.bat')
|
||||
# os.system('cmd.exe /c "{}"'.format(sf))
|
||||
# else:
|
||||
# # sf = os.path.join(cfg.app_path, 'tools', 'restart.sh')
|
||||
# # os.system(sf)
|
||||
# os.system('service eom_ts restart')
|
||||
#
|
||||
# # os.system(sf)
|
||||
|
||||
|
||||
def restart_service():
|
||||
# todo: 使用eom_ts.exe运行脚本的方式(新进程)来重启服务,避免正在运行的本服务未退出的影响
|
||||
# def restart_service():
|
||||
# # todo: 使用eom_ts.exe运行脚本的方式(新进程)来重启服务,避免正在运行的本服务未退出的影响
|
||||
#
|
||||
# t = threading.Thread(target=_restart_func)
|
||||
# t.start()
|
||||
#
|
||||
|
||||
t = threading.Thread(target=_restart_func)
|
||||
t.start()
|
||||
|
||||
|
||||
class UpdateConfig(TPBaseAdminAuthJsonHandler):
|
||||
def post(self):
|
||||
args = self.get_argument('args', None)
|
||||
if args is not None:
|
||||
args = json.loads(args)
|
||||
else:
|
||||
self.write_json(-1)
|
||||
return
|
||||
|
||||
change_list = args['cfg']
|
||||
reboot = args['reboot']
|
||||
|
||||
try:
|
||||
ret = set.set_config(change_list)
|
||||
if ret:
|
||||
for i in range(len(change_list)):
|
||||
if change_list[i]['name'] == 'ts_server_ip':
|
||||
# static_path = cfg.static_path
|
||||
var_js = os.path.join(cfg.static_path, 'js', 'var.js')
|
||||
f = None
|
||||
try:
|
||||
f = open(var_js, 'w')
|
||||
# config_list = host.get_config_list()
|
||||
# ts_server = dict()
|
||||
# ts_server['ip'] = config_list['ts_server_ip']
|
||||
# ts_server['ssh_port'] = config_list['ts_server_ssh_port']
|
||||
# ts_server['rdp_port'] = config_list['ts_server_rdp_port']
|
||||
# f.write("\"use strict\";\nvar teleport_ip = \"{}\";\n".format(ts_server['ip']))
|
||||
f.write("\"use strict\";\nvar teleport_ip = \"{}\";\n".format(change_list[i]['value']))
|
||||
break
|
||||
except Exception:
|
||||
return self.write(-1)
|
||||
finally:
|
||||
if f is not None:
|
||||
f.close()
|
||||
|
||||
if reboot:
|
||||
restart_service()
|
||||
|
||||
self.write_json(0)
|
||||
else:
|
||||
self.write_json(-1)
|
||||
except:
|
||||
self.write_json(-2)
|
||||
# class UpdateConfig(TPBaseAdminAuthJsonHandler):
|
||||
# def post(self):
|
||||
# args = self.get_argument('args', None)
|
||||
# if args is not None:
|
||||
# args = json.loads(args)
|
||||
# else:
|
||||
# self.write_json(-1)
|
||||
# return
|
||||
#
|
||||
# change_list = args['cfg']
|
||||
# reboot = args['reboot']
|
||||
#
|
||||
# try:
|
||||
# ret = set.set_config(change_list)
|
||||
# if ret:
|
||||
# for i in range(len(change_list)):
|
||||
# if change_list[i]['name'] == 'ts_server_ip':
|
||||
# # static_path = cfg.static_path
|
||||
# var_js = os.path.join(cfg.static_path, 'js', 'var.js')
|
||||
# f = None
|
||||
# try:
|
||||
# f = open(var_js, 'w')
|
||||
# # config_list = host.get_config_list()
|
||||
# # ts_server = dict()
|
||||
# # ts_server['ip'] = config_list['ts_server_ip']
|
||||
# # ts_server['ssh_port'] = config_list['ts_server_ssh_port']
|
||||
# # ts_server['rdp_port'] = config_list['ts_server_rdp_port']
|
||||
# # f.write("\"use strict\";\nvar teleport_ip = \"{}\";\n".format(ts_server['ip']))
|
||||
# f.write("\"use strict\";\nvar teleport_ip = \"{}\";\n".format(change_list[i]['value']))
|
||||
# break
|
||||
# except Exception:
|
||||
# return self.write(-1)
|
||||
# finally:
|
||||
# if f is not None:
|
||||
# f.close()
|
||||
#
|
||||
# if reboot:
|
||||
# restart_service()
|
||||
#
|
||||
# self.write_json(0)
|
||||
# else:
|
||||
# self.write_json(-1)
|
||||
# except:
|
||||
# self.write_json(-2)
|
||||
|
||||
# class OsOperator(TPBaseUserAuthJsonHandler):
|
||||
# def post(self):
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
"use strict";
|
||||
|
||||
ywl.on_init = function (cb_stack, cb_args) {
|
||||
console.log(ywl.page_options);
|
||||
|
||||
var dom = {
|
||||
info: $('#info-kv')
|
||||
};
|
||||
|
||||
var html = [];
|
||||
html.push(ywl._make_info('核心服务通讯', ywl.page_options.web.core_server_rpc));
|
||||
html.push(ywl._make_info('WEB服务通讯', ywl.page_options.core.web_server_rpc));
|
||||
html.push(ywl._make_protocol_info('RDP 端口', ywl.page_options.core.rdp));
|
||||
html.push(ywl._make_protocol_info('SSH 端口', ywl.page_options.core.ssh));
|
||||
html.push(ywl._make_protocol_info('TELNET 端口', ywl.page_options.core.telnet));
|
||||
html.push(ywl._make_info('录像文件路径', ywl.page_options.core.replay_path));
|
||||
|
||||
dom.info.append(html.join(''));
|
||||
|
||||
// $("#current-rdp-port").val(core.rdp.port);
|
||||
// $("#current-ssh-port").val(core.ssh.port);
|
||||
// $("#current-telnet-port").val(core.telnet.port);
|
||||
|
||||
cb_stack.exec();
|
||||
};
|
||||
|
||||
ywl._make_protocol_info = function (name, p) {
|
||||
if(_.isUndefined(p))
|
||||
return ywl._make_info(name, '未能检测到');
|
||||
// <tr><td class="key">RDP 端口:</td><td class="value">52089</td></tr>
|
||||
var key = name;
|
||||
if (!p.enable) {
|
||||
key += '(未启用)';
|
||||
}
|
||||
|
||||
return ywl._make_info(key, p.port);
|
||||
};
|
||||
|
||||
ywl._make_info = function (key, value) {
|
||||
if(_.isUndefined(value))
|
||||
value = '未能检测到';
|
||||
return '<tr><td class="key">' + key + ':</td><td class="value">' + value + '</td></tr>';
|
||||
};
|
|
@ -1,219 +0,0 @@
|
|||
/**
|
||||
* Created by mi on 2016/7/4.
|
||||
*/
|
||||
|
||||
var REFRESH_TIMEOUT = 10;
|
||||
|
||||
var g_assist = null;
|
||||
|
||||
ywl.on_init = function (cb_stack, cb_args) {
|
||||
ywl.refresh_timeout = REFRESH_TIMEOUT;
|
||||
|
||||
g_assist = ywl.create_assist();
|
||||
|
||||
var core_server = ywl.page_options.core_server;
|
||||
console.log(ywl.page_options, core_server);
|
||||
|
||||
$("#current-rdp-port").val(core_server.rdp.port);
|
||||
$("#current-ssh-port").val(core_server.ssh.port);
|
||||
$("#current-telnet-port").val(core_server.telnet.port);
|
||||
|
||||
// $('#select-ip li a').click(function () {
|
||||
// $("#current-ts-server-ip").val($(this).text());
|
||||
// });
|
||||
|
||||
$("#btn-check").click(function () {
|
||||
var ts_server_ip = $("#current-ts-server-ip").val();
|
||||
var ts_server_rdp_port = $("#current-rdp-port").val();
|
||||
var ts_server_ssh_port = $("#current-ssh-port").val();
|
||||
var ts_server_telnet_port = $("#current-telnet-port").val();
|
||||
|
||||
var list = [];
|
||||
var item_1 = {name: 'ts_server_ip', value: ts_server_ip};
|
||||
list.push(item_1);
|
||||
|
||||
// var item_2 = {name: 'ts_server_rpc_ip', value: ts_server_rpc_ip};
|
||||
// list.push(item_2);
|
||||
//
|
||||
// var item_3 = {name: 'ts_server_rpc_port', value: ts_server_rpc_port};
|
||||
// list.push(item_3);
|
||||
|
||||
var item_4 = {name: 'ts_server_rdp_port', value: ts_server_rdp_port};
|
||||
list.push(item_4);
|
||||
|
||||
var item_5 = {name: 'ts_server_ssh_port', value: ts_server_ssh_port};
|
||||
list.push(item_5);
|
||||
var rdp_port = parseInt(ts_server_rdp_port);
|
||||
var ssh_port = parseInt(ts_server_ssh_port);
|
||||
var args_ = encodeURIComponent(JSON.stringify({server_ip: ts_server_ip, rdp_port: rdp_port, ssh_port: ssh_port}));
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
timeout: 60000,
|
||||
url: 'http://127.0.0.1:50022/ts_check/' + args_,
|
||||
jsonp: 'callback',
|
||||
dataType: 'json',
|
||||
success: function (ret) {
|
||||
if (ret.code === 0) {
|
||||
ywl.notify_success("测试通过,可以正常使用 teleport 堡垒机!");
|
||||
} else if (ret.code === 7) {
|
||||
ywl.notify_error("PING测试通过,TCP端口测试未通过,请检查防火墙设置!");
|
||||
} else {
|
||||
console.log('ret', ret);
|
||||
ywl.notify_error("测试失败,请检查 teleport 堡垒机地址是否正确,并检查防火墙设置!");
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
g_assist.alert_assist_not_found();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#btn-save-config").click(function () {
|
||||
var ts_server_ip = $("#current-ts-server-ip").val();
|
||||
// var ts_server_rpc_ip = $("#current-rpc-ip").val();
|
||||
// var ts_server_rpc_port = $("#current-rpc-port").val();
|
||||
var ts_server_rdp_port = $("#current-rdp-port").val();
|
||||
var ts_server_ssh_port = $("#current-ssh-port").val();
|
||||
var ts_server_telnet_port = $("#current-telnet-port").val();
|
||||
|
||||
var reboot = false;
|
||||
var new_config = [];
|
||||
|
||||
var old_config = ywl.page_options.config_list;
|
||||
if (ts_server_ip != old_config['ts_server_ip']) {
|
||||
new_config.push({name: 'ts_server_ip', value: ts_server_ip});
|
||||
}
|
||||
|
||||
if (ts_server_rdp_port != old_config['ts_server_rdp_port']) {
|
||||
new_config.push({name: 'ts_server_rdp_port', value: ts_server_rdp_port});
|
||||
reboot = true;
|
||||
}
|
||||
|
||||
if (ts_server_ssh_port != old_config['ts_server_ssh_port']) {
|
||||
new_config.push({name: 'ts_server_ssh_port', value: ts_server_ssh_port});
|
||||
reboot = true;
|
||||
}
|
||||
if (ts_server_telnet_port != old_config['ts_server_telnet_port']) {
|
||||
new_config.push({name: 'ts_server_telnet_port', value: ts_server_telnet_port});
|
||||
reboot = true;
|
||||
}
|
||||
if (new_config.length == 0) {
|
||||
// nothing changed.
|
||||
ywl.notify_error('配置未改变,无需保存!');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!reboot) {
|
||||
ywl.ajax_post_json('/set/update-config', {cfg: new_config, reboot: false},
|
||||
function (ret) {
|
||||
if (ret.code == 0) {
|
||||
ywl.notify_success('配置保存成功!');
|
||||
ywl.page_options.config_list['ts_server_ip'] = ts_server_ip;
|
||||
}
|
||||
else {
|
||||
ywl.notify_error('配置保存失败!');
|
||||
}
|
||||
},
|
||||
function () {
|
||||
ywl.notify_error('配置保存失败!');
|
||||
}
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// if need reboot, let user confirm.
|
||||
|
||||
var _fn_sure = function (cb_stack, cb_args) {
|
||||
|
||||
ywl.ajax_post_json('/set/update-config', {cfg: new_config, reboot: true},
|
||||
function (ret) {
|
||||
if (ret.code == 0) {
|
||||
$('#dlg_restart_service').modal({backdrop: 'static', keyboard: false});
|
||||
|
||||
ywl.refresh_timeout = REFRESH_TIMEOUT;
|
||||
setInterval(ywl.refresh, 1000);
|
||||
|
||||
// 5 秒之后刷新页面,导致重定向到登录页面
|
||||
// setTimeout(function () {
|
||||
// location.reload(true);
|
||||
// }, 5000);
|
||||
}
|
||||
else {
|
||||
ywl.notify_error('配置信息保存失败!');
|
||||
}
|
||||
},
|
||||
function () {
|
||||
ywl.notify_error('配置信息保存失败!');
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
var cb_stack = CALLBACK_STACK.create();
|
||||
ywl.dlg_confirm(cb_stack, {
|
||||
msg: '<p><strong>为使设置生效,需要重启teleport服务!服务重启过程中,WEB后台和跳板连接均会中断!</strong></p><p>您确定要保存设置并重启teleport服务吗?</p>',
|
||||
fn_yes: _fn_sure
|
||||
});
|
||||
});
|
||||
|
||||
// $("#btn-os-reboot").click(function () {
|
||||
// var _fn_sure = function (cb_stack, cb_args) {
|
||||
// ywl.ajax_post_json('/set/os-operator', {OP: 1},
|
||||
// function (ret) {
|
||||
// if (ret.code == 0) {
|
||||
// ywl.notify_success('正在重新启动系统');
|
||||
// }
|
||||
// else {
|
||||
// ywl.notify_error('重启系统失败');
|
||||
// }
|
||||
// },
|
||||
// function () {
|
||||
// ywl.notify_error('重启系统失败');
|
||||
// }
|
||||
// );
|
||||
// };
|
||||
// var cb_stack = CALLBACK_STACK.create();
|
||||
//
|
||||
// ywl.dlg_confirm(cb_stack, {
|
||||
// msg: '<p>您确定要重启系统吗?!!</p>',
|
||||
// fn_yes: _fn_sure
|
||||
// });
|
||||
//
|
||||
// });
|
||||
|
||||
// $("#btn-os-shut").click(function () {
|
||||
// var _fn_sure = function (cb_stack, cb_args) {
|
||||
// ywl.ajax_post_json('/set/os-operator', {OP: 2},
|
||||
// function (ret) {
|
||||
// if (ret.code == 0) {
|
||||
// ywl.notify_success('正在关闭系统');
|
||||
// }
|
||||
// else {
|
||||
// ywl.notify_error('关闭系统失败');
|
||||
// }
|
||||
// },
|
||||
// function () {
|
||||
// ywl.notify_error('关闭系统失败');
|
||||
// }
|
||||
// );
|
||||
// };
|
||||
// var cb_stack = CALLBACK_STACK.create();
|
||||
//
|
||||
// ywl.dlg_confirm(cb_stack, {
|
||||
// msg: '<p>您确定要关闭系统吗?!!</p>',
|
||||
// fn_yes: _fn_sure
|
||||
// });
|
||||
// });
|
||||
|
||||
cb_stack.exec();
|
||||
};
|
||||
|
||||
ywl.refresh = function () {
|
||||
ywl.refresh_timeout -= 1;
|
||||
if (0 == ywl.refresh_timeout) {
|
||||
location.reload(true);
|
||||
} else {
|
||||
$('#reboot_time').html(ywl.refresh_timeout);
|
||||
}
|
||||
};
|
|
@ -41,9 +41,23 @@
|
|||
{
|
||||
'require_type': 100,
|
||||
'id': 'set',
|
||||
'link': '/set',
|
||||
'link': '',
|
||||
'name': '配置管理',
|
||||
'icon': 'fa-cogs',
|
||||
'sub': [
|
||||
{
|
||||
'require_type': 100,
|
||||
'id': 'info',
|
||||
'link': '/set/info',
|
||||
'name': '配置信息'
|
||||
},
|
||||
{
|
||||
'require_type': 100,
|
||||
'id': 'database',
|
||||
'link': '/set/db',
|
||||
'name': '数据库管理'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
'require_type': 100,
|
||||
|
|
|
@ -1,161 +0,0 @@
|
|||
<%!
|
||||
page_title_ = '服务器配置'
|
||||
page_menu_ = ['set']
|
||||
page_id_ = 'set'
|
||||
%>
|
||||
<%inherit file="../page_base.mako"/>
|
||||
|
||||
<%block name="extend_js">
|
||||
<script type="text/javascript" src="${ static_url('js/ui/teleport.js') }"></script>
|
||||
<script type="text/javascript" src="${ static_url('js/ui/set.js') }"></script>
|
||||
</%block>
|
||||
|
||||
<%block name="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li><i class="fa fa-cogs fa-fw"></i> ${self.attr.page_title_}</li>
|
||||
</ol>
|
||||
</%block>
|
||||
|
||||
## Begin Main Body.
|
||||
|
||||
<div class="page-content">
|
||||
## <script language="javascript">
|
||||
## function changeF() {
|
||||
## document.getElementById('txt').value = document.getElementById('sel').options[document.getElementById('sel').selectedIndex].value;
|
||||
## }
|
||||
## </script>
|
||||
|
||||
<!-- begin box -->
|
||||
<div class="box">
|
||||
|
||||
<div style="width:640px">
|
||||
|
||||
<div class="form-horizontal">
|
||||
|
||||
<h4><strong>Teleport服务器配置信息</strong></h4>
|
||||
## <p>设置teleport服务器的访问地址和服务的端口。</p>
|
||||
## <p style="font-weight:bold;color:#ff3333;">请正确设置服务器地址(IP或域名),否则将无法进行跳板连接!!</p>
|
||||
## <p>设置teleport服务器的服务端口。</p>
|
||||
|
||||
## <div class="form-group form-group-sm" style="display:none;">
|
||||
## <label for="current-ts-server-ip" class="col-sm-2 control-label"><strong>堡垒机地址:</strong></label>
|
||||
##
|
||||
## <div class="col-sm-6">
|
||||
## <div class="input-group">
|
||||
## <input type="text" class="form-control" id="current-ts-server-ip">
|
||||
## <div class="input-group-btn">
|
||||
## <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 选择IP <span class="caret"></span></button>
|
||||
## <ul id='select-ip' class="dropdown-menu dropdown-menu-right">
|
||||
## </ul>
|
||||
## </div>
|
||||
## </div>
|
||||
## </div>
|
||||
## <label for="current-ts-server-ip" class="col-sm-4 control-label" style="text-align:left;color:red;"><strong>首次安装必须修改</strong></label>
|
||||
## </div>
|
||||
|
||||
<div class="form-group form-group-sm">
|
||||
<label for="current-rdp-port" class="col-sm-2 control-label"><strong>RDP 端口:</strong></label>
|
||||
<div class="col-sm-6">
|
||||
<input id="current-rdp-port" type="text" class="form-control" placeholder="默认值 52089" disabled/>
|
||||
</div>
|
||||
## <div class="col-sm-4 control-label" style="text-align: left;">可以用默认值</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group form-group-sm">
|
||||
<label for="current-ssh-port" class="col-sm-2 control-label"><strong>SSH 端口:</strong></label>
|
||||
<div class="col-sm-6">
|
||||
<input id="current-ssh-port" type="text" class="form-control" placeholder="默认值 52189" disabled/>
|
||||
</div>
|
||||
## <div class="col-sm-4 control-label" style="text-align: left;">可以用默认值</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group form-group-sm">
|
||||
<label for="current-telnet-port" class="col-sm-2 control-label"><strong>TELENT 端口:</strong></label>
|
||||
<div class="col-sm-6">
|
||||
<input id="current-telnet-port" type="text" class="form-control" placeholder="默认值 52389" disabled/>
|
||||
</div>
|
||||
## <div class="col-sm-4 control-label" style="text-align: left;">可以用默认值</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group form-group-sm">
|
||||
<div class="col-sm-2"></div>
|
||||
<div class="col-sm-6">
|
||||
注意:要修改端口号,请直接修改配置文件。修改后需要重启服务方能生效!
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
## <hr/>
|
||||
##
|
||||
## <p><strong>Teleport核心服务设置</strong></p>
|
||||
## <p>用于与teleport核心服务进行通讯,需要将WEB后台与核心服务部署在同一台主机上。</p>
|
||||
## <p>如果您需要将核心服务部署在单独的主机上,建议您为RPC访问端口设置防火墙规则,仅允许WEB后台主机访问此RPC端口,以增强安全性。</p>
|
||||
##
|
||||
## <div class="form-group form-group-sm">
|
||||
## <label for="current-rpc-ip" class="col-sm-2 control-label"><strong>IP地址:</strong></label>
|
||||
## <div class="col-sm-6">
|
||||
## <input id="current-rpc-ip" type="text" class="form-control" readonly="readonly" placeholder="默认值 127.0.0.1"/>
|
||||
## </div>
|
||||
## </div>
|
||||
##
|
||||
## <div class="form-group form-group-sm">
|
||||
## <label for="current-rpc-port" class="col-sm-2 control-label"><strong>端口:</strong></label>
|
||||
## <div class="col-sm-6">
|
||||
## <input id="current-rpc-port" type="text" class="form-control" readonly="readonly" placeholder="默认值 52080"/>
|
||||
## </div>
|
||||
## </div>
|
||||
|
||||
<hr/>
|
||||
## <div class="form-group form-group-sm">
|
||||
## <div class="col-sm-2"></div>
|
||||
## <div class="col-sm-2">
|
||||
## <a href="javascript:" id="btn-check" class="btn btn-success"><i class="fa fa-cog fa-fw"></i> 一键测试</a>
|
||||
## </div>
|
||||
## <div class="col-sm-4" style="text-align: right;">
|
||||
## <a href="javascript:" id="btn-save-config" class="btn btn-primary"><i class="fa fa-check fa-fw"></i> 保存配置</a>
|
||||
## </div>
|
||||
## </div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- end of box -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<%block name="extend_content">
|
||||
|
||||
## <div class="modal fade" id="dlg_restart_service" tabindex="-1" role="dialog">
|
||||
## <div class="modal-dialog" role="document">
|
||||
## <div class="modal-content">
|
||||
## <div class="modal-header">
|
||||
## <h3 class="modal-title" style="text-align: center;">服务重启中...</h3>
|
||||
## </div>
|
||||
## <div class="modal-body">
|
||||
## <p style="text-align: center; font-size:36px;"><i class="fa fa-cog fa-spin"></i></p>
|
||||
## <p style="text-align: center;">配置已保存,正在重启teleport服务,请稍候...</p>
|
||||
## <p style="text-align: center;"><span id="reboot_time"></span></p>
|
||||
## </div>
|
||||
##
|
||||
## <div class="modal-footer">
|
||||
## </div>
|
||||
## </div>
|
||||
## </div>
|
||||
## </div>
|
||||
|
||||
|
||||
</%block>
|
||||
|
||||
|
||||
<%block name="embed_js">
|
||||
<script type="text/javascript">
|
||||
## ywl.add_page_options({
|
||||
## config_list: ${config_list}
|
||||
## });
|
||||
ywl.add_page_options(${ page_param });
|
||||
</script>
|
||||
</%block>
|
|
@ -0,0 +1,158 @@
|
|||
<%!
|
||||
page_title_ = '配置管理'
|
||||
page_menu_ = ['set', 'info']
|
||||
page_id_ = 'set'
|
||||
%>
|
||||
<%inherit file="../page_base.mako"/>
|
||||
|
||||
<%block name="extend_js">
|
||||
## <script type="text/javascript" src="${ static_url('js/ui/teleport.js') }"></script>
|
||||
<script type="text/javascript" src="${ static_url('js/ui/config/info.js') }"></script>
|
||||
</%block>
|
||||
|
||||
<%block name="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li><i class="fa fa-cogs fa-fw"></i> ${self.attr.page_title_}</li>
|
||||
<li>配置信息</li>
|
||||
</ol>
|
||||
</%block>
|
||||
|
||||
<%block name="extend_css">
|
||||
<style type="text/css">
|
||||
.table .key {
|
||||
text-align: right;
|
||||
}
|
||||
.table .value {
|
||||
text-align: left;
|
||||
font-weight:bold;
|
||||
}
|
||||
</style>
|
||||
</%block>
|
||||
|
||||
## Begin Main Body.
|
||||
|
||||
<div class="page-content">
|
||||
|
||||
<!-- begin box -->
|
||||
<div class="box">
|
||||
|
||||
<div style="width:640px">
|
||||
|
||||
<div class="form-horizontal">
|
||||
|
||||
<h4><strong>服务器配置信息</strong></h4>
|
||||
|
||||
<table id="info-kv" class="table">
|
||||
## <tr><td class="key">RDP 端口:</td><td class="value">52089</td></tr>
|
||||
## <tr><td class="key">SSH 端口:</td><td class="value">52189</td></tr>
|
||||
## <tr><td class="key">TELNET 端口:</td><td class="value">52389</td></tr>
|
||||
## <tr><td class="key">录像文件路径:</td><td class="value">C:\teleport-server\data\replay</td></tr>
|
||||
</table>
|
||||
|
||||
##
|
||||
## <div class="form-group form-group-sm">
|
||||
## <label for="current-rdp-port" class="col-sm-2 control-label"><strong>RDP 端口:</strong></label>
|
||||
## <div class="col-sm-6">
|
||||
## <input id="current-rdp-port" type="text" class="form-control" placeholder="默认值 52089" disabled/>
|
||||
## </div>
|
||||
## ## <div class="col-sm-4 control-label" style="text-align: left;">可以用默认值</div>
|
||||
## </div>
|
||||
##
|
||||
## <div class="form-group form-group-sm">
|
||||
## <label for="current-ssh-port" class="col-sm-2 control-label"><strong>SSH 端口:</strong></label>
|
||||
## <div class="col-sm-6">
|
||||
## <input id="current-ssh-port" type="text" class="form-control" placeholder="默认值 52189" disabled/>
|
||||
## </div>
|
||||
## ## <div class="col-sm-4 control-label" style="text-align: left;">可以用默认值</div>
|
||||
## </div>
|
||||
##
|
||||
##
|
||||
## <div class="form-group form-group-sm">
|
||||
## <label for="current-telnet-port" class="col-sm-2 control-label"><strong>TELENT 端口:</strong></label>
|
||||
## <div class="col-sm-6">
|
||||
## <input id="current-telnet-port" type="text" class="form-control" placeholder="默认值 52389" disabled/>
|
||||
## </div>
|
||||
## ## <div class="col-sm-4 control-label" style="text-align: left;">可以用默认值</div>
|
||||
## </div>
|
||||
##
|
||||
##
|
||||
## <div class="form-group form-group-sm">
|
||||
## <div class="col-sm-2"></div>
|
||||
## <div class="col-sm-6">
|
||||
## 注意:要修改端口号,请直接修改配置文件。修改后需要重启服务方能生效!
|
||||
## </div>
|
||||
## </div>
|
||||
|
||||
|
||||
## <hr/>
|
||||
##
|
||||
## <p><strong>Teleport核心服务设置</strong></p>
|
||||
## <p>用于与teleport核心服务进行通讯,需要将WEB后台与核心服务部署在同一台主机上。</p>
|
||||
## <p>如果您需要将核心服务部署在单独的主机上,建议您为RPC访问端口设置防火墙规则,仅允许WEB后台主机访问此RPC端口,以增强安全性。</p>
|
||||
##
|
||||
## <div class="form-group form-group-sm">
|
||||
## <label for="current-rpc-ip" class="col-sm-2 control-label"><strong>IP地址:</strong></label>
|
||||
## <div class="col-sm-6">
|
||||
## <input id="current-rpc-ip" type="text" class="form-control" readonly="readonly" placeholder="默认值 127.0.0.1"/>
|
||||
## </div>
|
||||
## </div>
|
||||
##
|
||||
## <div class="form-group form-group-sm">
|
||||
## <label for="current-rpc-port" class="col-sm-2 control-label"><strong>端口:</strong></label>
|
||||
## <div class="col-sm-6">
|
||||
## <input id="current-rpc-port" type="text" class="form-control" readonly="readonly" placeholder="默认值 52080"/>
|
||||
## </div>
|
||||
## </div>
|
||||
|
||||
## <hr/>
|
||||
## <div class="form-group form-group-sm">
|
||||
## <div class="col-sm-2"></div>
|
||||
## <div class="col-sm-2">
|
||||
## <a href="javascript:" id="btn-check" class="btn btn-success"><i class="fa fa-cog fa-fw"></i> 一键测试</a>
|
||||
## </div>
|
||||
## <div class="col-sm-4" style="text-align: right;">
|
||||
## <a href="javascript:" id="btn-save-config" class="btn btn-primary"><i class="fa fa-check fa-fw"></i> 保存配置</a>
|
||||
## </div>
|
||||
## </div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- end of box -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<%block name="extend_content">
|
||||
|
||||
## <div class="modal fade" id="dlg_restart_service" tabindex="-1" role="dialog">
|
||||
## <div class="modal-dialog" role="document">
|
||||
## <div class="modal-content">
|
||||
## <div class="modal-header">
|
||||
## <h3 class="modal-title" style="text-align: center;">服务重启中...</h3>
|
||||
## </div>
|
||||
## <div class="modal-body">
|
||||
## <p style="text-align: center; font-size:36px;"><i class="fa fa-cog fa-spin"></i></p>
|
||||
## <p style="text-align: center;">配置已保存,正在重启teleport服务,请稍候...</p>
|
||||
## <p style="text-align: center;"><span id="reboot_time"></span></p>
|
||||
## </div>
|
||||
##
|
||||
## <div class="modal-footer">
|
||||
## </div>
|
||||
## </div>
|
||||
## </div>
|
||||
## </div>
|
||||
|
||||
|
||||
</%block>
|
||||
|
||||
|
||||
<%block name="embed_js">
|
||||
<script type="text/javascript">
|
||||
## ywl.add_page_options({
|
||||
## config_list: ${config_list}
|
||||
## });
|
||||
ywl.add_page_options(${ page_param });
|
||||
</script>
|
||||
</%block>
|
Loading…
Reference in New Issue