mirror of https://github.com/tp4a/teleport
temp.
parent
40619185a7
commit
461c8d2dad
|
@ -15,9 +15,8 @@ class Builder:
|
|||
self.ver_in = os.path.join(env.root_path, 'version.in')
|
||||
|
||||
self.VER_TP_SERVER = ''
|
||||
self.VER_TP_SRV_WWW = ''
|
||||
self.VER_TP_SRV_TPCORE = ''
|
||||
self.VER_TP_SRV_TPWEB = ''
|
||||
self.VER_TP_TPCORE = ''
|
||||
self.VER_TP_TPWEB = ''
|
||||
self.VER_TP_ASSIST = ''
|
||||
|
||||
def build(self):
|
||||
|
@ -31,32 +30,29 @@ class Builder:
|
|||
if l.startswith('TP_SERVER '):
|
||||
x = l.split(' ')
|
||||
self.VER_TP_SERVER = x[1].strip()
|
||||
elif l.startswith('TP_SRV_WWW '):
|
||||
elif l.startswith('TP_TPCORE '):
|
||||
x = l.split(' ')
|
||||
self.VER_TP_SRV_WWW = x[1].strip()
|
||||
elif l.startswith('TP_SRV_TPCORE '):
|
||||
self.VER_TP_TPCORE = x[1].strip()
|
||||
elif l.startswith('TP_TPWEB '):
|
||||
x = l.split(' ')
|
||||
self.VER_TP_SRV_TPCORE = x[1].strip()
|
||||
elif l.startswith('TP_SRV_TPWEB '):
|
||||
x = l.split(' ')
|
||||
self.VER_TP_SRV_TPWEB = x[1].strip()
|
||||
self.VER_TP_TPWEB = x[1].strip()
|
||||
elif l.startswith('TP_ASSIST '):
|
||||
x = l.split(' ')
|
||||
self.VER_TP_ASSIST = x[1].strip()
|
||||
|
||||
cc.v('new version:')
|
||||
cc.v(' Server : ', self.VER_TP_SERVER)
|
||||
cc.v(' - WWW Server : ', self.VER_TP_SRV_WWW)
|
||||
cc.v(' - Core Server : ', self.VER_TP_SRV_TPCORE)
|
||||
cc.v(' - Web Server : ', self.VER_TP_SRV_TPWEB)
|
||||
cc.v(' - tp_core : ', self.VER_TP_TPCORE)
|
||||
cc.v(' - tp_web : ', self.VER_TP_TPWEB)
|
||||
cc.v(' Assist : ', self.VER_TP_ASSIST)
|
||||
cc.v('')
|
||||
|
||||
self.make_builder_ver()
|
||||
self.make_srv_www_ver()
|
||||
self.make_srv_tpcore_ver()
|
||||
self.make_srv_tpweb_ver()
|
||||
self.make_assist_ver()
|
||||
self.make_server_ver()
|
||||
self.make_tpcore_ver()
|
||||
self.make_tpweb_ver()
|
||||
self.make_assist_win_ver()
|
||||
self.make_assist_macos_ver()
|
||||
|
||||
def make_builder_ver(self):
|
||||
ver_file = os.path.join(env.root_path, 'build', 'builder', 'core', 'ver.py')
|
||||
|
@ -66,7 +62,6 @@ class Builder:
|
|||
if not os.path.exists(ver_file):
|
||||
rewrite = True
|
||||
else:
|
||||
old_content = ''
|
||||
with open(ver_file, 'r') as f:
|
||||
old_content = f.read()
|
||||
if old_content != ver_content:
|
||||
|
@ -77,9 +72,9 @@ class Builder:
|
|||
with open(ver_file, 'w') as f:
|
||||
f.write(ver_content)
|
||||
|
||||
def make_srv_tpcore_ver(self):
|
||||
def make_tpcore_ver(self):
|
||||
ver_file = os.path.join(env.root_path, 'server', 'tp_core', 'core', 'ts_ver.h')
|
||||
ver_content = '#ifndef __TS_SERVER_VER_H__\n#define __TS_SERVER_VER_H__\n\n#define TP_SERVER_VER\tL"{}"\n\n#endif // __TS_SERVER_VER_H__\n'.format(self.VER_TP_SRV_TPCORE)
|
||||
ver_content = '#ifndef __TS_SERVER_VER_H__\n#define __TS_SERVER_VER_H__\n\n#define TP_SERVER_VER\tL"{}"\n\n#endif // __TS_SERVER_VER_H__\n'.format(self.VER_TP_TPCORE)
|
||||
|
||||
rewrite = False
|
||||
if not os.path.exists(ver_file):
|
||||
|
@ -96,12 +91,12 @@ class Builder:
|
|||
f.write(ver_content)
|
||||
|
||||
rc_file = os.path.join(env.root_path, 'server', 'tp_core', 'core', 'tp_core.rc')
|
||||
self._update_vs_rc(rc_file, self.VER_TP_SRV_TPCORE)
|
||||
self._update_ver_rc(rc_file, self.VER_TP_TPCORE)
|
||||
|
||||
def make_srv_www_ver(self):
|
||||
def make_server_ver(self):
|
||||
ver_file = os.path.join(env.root_path, 'server', 'www', 'teleport', 'webroot', 'app', 'app_ver.py')
|
||||
# ver_content = '# -*- coding: utf8 -*-\n\nTS_VER = "{}"\n'.format(self.VER_TELEPORT_SERVER)
|
||||
ver_content = '# -*- coding: utf8 -*-\nTP_SRV_WWW_VER = "{}"\n'.format(self.VER_TP_SRV_WWW)
|
||||
ver_content = '# -*- coding: utf8 -*-\nTP_SERVER_VER = "{}"\n'.format(self.VER_TP_SERVER)
|
||||
|
||||
rewrite = False
|
||||
if not os.path.exists(ver_file):
|
||||
|
@ -117,7 +112,7 @@ class Builder:
|
|||
with open(ver_file, 'w') as f:
|
||||
f.write(ver_content)
|
||||
|
||||
def make_assist_ver(self):
|
||||
def make_assist_win_ver(self):
|
||||
ver_file = os.path.join(env.root_path, 'client', 'tp_assist_win', 'ts_ver.h')
|
||||
ver_content = '#ifndef __TS_ASSIST_VER_H__\n#define __TS_ASSIST_VER_H__\n\n#define TP_ASSIST_VER\tL"{}"\n\n#endif // __TS_ASSIST_VER_H__\n'.format(self.VER_TP_ASSIST)
|
||||
|
||||
|
@ -125,7 +120,6 @@ class Builder:
|
|||
if not os.path.exists(ver_file):
|
||||
rewrite = True
|
||||
else:
|
||||
old_content = ''
|
||||
with open(ver_file, 'r') as f:
|
||||
old_content = f.read()
|
||||
if old_content != ver_content:
|
||||
|
@ -137,14 +131,18 @@ class Builder:
|
|||
f.write(ver_content)
|
||||
|
||||
rc_file = os.path.join(env.root_path, 'client', 'tp_assist_win', 'tp_assist.rc')
|
||||
self._update_vs_rc(rc_file, self.VER_TP_ASSIST)
|
||||
self._update_ver_rc(rc_file, self.VER_TP_ASSIST)
|
||||
|
||||
nsi_file = os.path.join(env.root_path, 'dist', 'client', 'windows', 'assist', 'installer.nsi')
|
||||
self._update_nsi_rc(nsi_file, self.VER_TP_ASSIST)
|
||||
self._update_ver_nsi(nsi_file, self.VER_TP_ASSIST)
|
||||
|
||||
def make_srv_tpweb_ver(self):
|
||||
def make_assist_macos_ver(self):
|
||||
plist_file = os.path.join(env.root_path, 'client', 'tp_assist_macos', 'src', 'tp_assist-Info.plist')
|
||||
self._update_ver_plist(plist_file, self.VER_TP_ASSIST)
|
||||
|
||||
def make_tpweb_ver(self):
|
||||
ver_file = os.path.join(env.root_path, 'server', 'tp_web', 'src', 'ts_ver.h')
|
||||
ver_content = '#ifndef __TS_SERVER_VER_H__\n#define __TS_SERVER_VER_H__\n\n#define TP_SERVER_VER\tL"{}"\n\n#endif // __TS_SERVER_VER_H__\n'.format(self.VER_TP_SRV_TPWEB)
|
||||
ver_content = '#ifndef __TS_SERVER_VER_H__\n#define __TS_SERVER_VER_H__\n\n#define TP_SERVER_VER\tL"{}"\n\n#endif // __TS_SERVER_VER_H__\n'.format(self.VER_TP_TPWEB)
|
||||
|
||||
rewrite = False
|
||||
if not os.path.exists(ver_file):
|
||||
|
@ -161,14 +159,14 @@ class Builder:
|
|||
f.write(ver_content)
|
||||
|
||||
rc_file = os.path.join(env.root_path, 'server', 'tp_web', 'src', 'tp_web.rc')
|
||||
self._update_vs_rc(rc_file, self.VER_TP_SRV_TPWEB)
|
||||
self._update_ver_rc(rc_file, self.VER_TP_TPWEB)
|
||||
|
||||
def _update_vs_rc(self, rcFilePath, ver):
|
||||
def _update_ver_rc(self, rcFilePath, ver):
|
||||
""" update rc file version info """
|
||||
|
||||
t_ver = ver.split('.')
|
||||
if len(t_ver) != 4:
|
||||
raise RuntimeError('Invalid version for assist.')
|
||||
raise RuntimeError('Invalid version for .rc file.')
|
||||
|
||||
bOK = False
|
||||
try:
|
||||
|
@ -272,14 +270,13 @@ class Builder:
|
|||
wrcFile.close()
|
||||
|
||||
except IOError:
|
||||
raise RuntimeError('can not open rc file.')
|
||||
raise RuntimeError('can not process rc file.')
|
||||
|
||||
def _update_nsi_rc(self, nsiFilePath, ver):
|
||||
def _update_ver_nsi(self, nsiFilePath, ver):
|
||||
""" update nsis file version info """
|
||||
# nver = ver.split('.')
|
||||
t_ver = ver.split('.')
|
||||
if len(t_ver) != 4:
|
||||
raise RuntimeError('Invalid version for assist.')
|
||||
raise RuntimeError('Invalid version for nsis file.')
|
||||
|
||||
bOK = False
|
||||
try:
|
||||
|
@ -346,7 +343,77 @@ class Builder:
|
|||
return bOK
|
||||
|
||||
except IOError:
|
||||
raise RuntimeError('can not open nsi file.')
|
||||
raise RuntimeError('can not process nsi file.')
|
||||
|
||||
def _update_ver_plist(self, plist_file, ver):
|
||||
""" update plist file version info for MacOS app."""
|
||||
t_ver = ver.split('.')
|
||||
if len(t_ver) != 4:
|
||||
raise RuntimeError('Invalid version for plist file.')
|
||||
|
||||
bOK = False
|
||||
try:
|
||||
# open rc file
|
||||
f = codecs.open(plist_file, 'r', 'utf8')
|
||||
# read out all lines of rc file
|
||||
lines = f.readlines()
|
||||
f.close()
|
||||
|
||||
is_ver = False
|
||||
for x in range(len(lines)):
|
||||
l = lines[x]
|
||||
|
||||
if l.find('<key>CFBundleShortVersionString</key>') != -1:
|
||||
is_ver = True
|
||||
continue
|
||||
if l.find('<key>CFBundleVersion</key>') != -1:
|
||||
is_ver = True
|
||||
continue
|
||||
# pos1 = rcline.find(' FILEVERSION ')
|
||||
# pos2 = rcline.rfind('\\0"')
|
||||
# _ver = rcline[pos1 + 13: pos2].strip()
|
||||
#
|
||||
# rcSplitList = _ver.split(",")
|
||||
# if (len(rcSplitList) < 4):
|
||||
# rcSplitList = _ver.split(".")
|
||||
# if (len(rcSplitList) < 4):
|
||||
# raise RuntimeError('Invalid .rc file.')
|
||||
# if '.'.join(rcSplitList) == ver:
|
||||
# continue
|
||||
#
|
||||
# rcline = '%s%s,%s,%s,%s\n' % (rcline[0:pos1 + 13], t_ver[0], t_ver[1], t_ver[2], t_ver[3])
|
||||
#
|
||||
# rcLines[x] = ""
|
||||
# rcLines[x] = rcline
|
||||
# # cc.v('[ver] new ver: %s' % rcLines[x])
|
||||
# bOK = True
|
||||
|
||||
if is_ver:
|
||||
is_ver = False
|
||||
|
||||
pos1 = l.find('<string>')
|
||||
pos2 = l.rfind('</string>')
|
||||
if pos1 == -1 or pos2 == -2:
|
||||
continue
|
||||
_ver = l[pos1 + 8: pos2].strip()
|
||||
|
||||
v = _ver.split(".")
|
||||
if len(v) < 4:
|
||||
raise RuntimeError('Invalid .plist file.')
|
||||
old_ver = '.'.join(v)
|
||||
if old_ver == ver:
|
||||
continue
|
||||
lines[x] = '<string>{ver}</string>'.format(ver=ver)
|
||||
bOK = True
|
||||
|
||||
if bOK:
|
||||
cc.v(' update {}...'.format(plist_file))
|
||||
wrcFile = codecs.open(plist_file, 'w', 'utf8')
|
||||
wrcFile.writelines(lines)
|
||||
wrcFile.close()
|
||||
|
||||
except IOError:
|
||||
raise RuntimeError('can not process plist file.')
|
||||
|
||||
|
||||
def main():
|
||||
|
|
|
@ -5,26 +5,26 @@
|
|||
#include <algorithm>
|
||||
#include <teleport_const.h>
|
||||
|
||||
TP_SSH_CHANNEL_PAIR::TP_SSH_CHANNEL_PAIR() {
|
||||
type = TS_SSH_CHANNEL_TYPE_UNKNOWN;
|
||||
|
||||
cli_channel = NULL;
|
||||
srv_channel = NULL;
|
||||
|
||||
TP_SSH_CHANNEL_PAIR::TP_SSH_CHANNEL_PAIR() {
|
||||
type = TS_SSH_CHANNEL_TYPE_UNKNOWN;
|
||||
|
||||
cli_channel = NULL;
|
||||
srv_channel = NULL;
|
||||
|
||||
retcode = TP_SESS_STAT_RUNNING;
|
||||
db_id = 0;
|
||||
channel_id = 0;
|
||||
|
||||
win_width = 0;
|
||||
is_first_server_data = true;
|
||||
|
||||
server_ready = false;
|
||||
maybe_cmd = false;
|
||||
process_srv = false;
|
||||
client_single_char = false;
|
||||
|
||||
cmd_char_pos = cmd_char_list.begin();
|
||||
}
|
||||
|
||||
win_width = 0;
|
||||
is_first_server_data = true;
|
||||
|
||||
server_ready = false;
|
||||
maybe_cmd = false;
|
||||
process_srv = false;
|
||||
client_single_char = false;
|
||||
|
||||
cmd_char_pos = cmd_char_list.begin();
|
||||
}
|
||||
|
||||
SshSession::SshSession(SshProxy *proxy, ssh_session sess_client) :
|
||||
ExThreadBase("ssh-session-thread"),
|
||||
|
@ -89,16 +89,16 @@ void SshSession::_set_stop_flag(void) {
|
|||
}
|
||||
}
|
||||
|
||||
void SshSession::_session_error(int err_code) {
|
||||
int db_id = 0;
|
||||
void SshSession::_session_error(int err_code) {
|
||||
int db_id = 0;
|
||||
if (!g_ssh_env.session_begin(m_conn_info, &db_id) || db_id == 0)
|
||||
{
|
||||
EXLOGE("[ssh] can not write session error to database.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
g_ssh_env.session_end(m_sid.c_str(), db_id, err_code);
|
||||
}
|
||||
}
|
||||
|
||||
bool SshSession::_record_begin(TP_SSH_CHANNEL_PAIR* cp)
|
||||
{
|
||||
|
@ -349,7 +349,7 @@ int SshSession::_on_auth_password_request(ssh_session session, const char *user,
|
|||
// 现在尝试根据session-id获取得到的信息,连接并登录真正的SSH服务器
|
||||
EXLOGV("[ssh] try to connect to real SSH server %s:%d\n", _this->m_conn_ip.c_str(), _this->m_conn_port);
|
||||
_this->m_srv_session = ssh_new();
|
||||
ssh_set_blocking(_this->m_srv_session, 1);
|
||||
ssh_set_blocking(_this->m_srv_session, 1);
|
||||
ssh_options_set(_this->m_srv_session, SSH_OPTIONS_HOST, _this->m_conn_ip.c_str());
|
||||
int port = (int)_this->m_conn_port;
|
||||
ssh_options_set(_this->m_srv_session, SSH_OPTIONS_PORT, &port);
|
||||
|
@ -545,7 +545,7 @@ ssh_channel SshSession::_on_new_channel_request(ssh_session session, void *userd
|
|||
return cli_channel;
|
||||
}
|
||||
|
||||
TP_SSH_CHANNEL_PAIR* SshSession::_get_channel_pair(int channel_side, ssh_channel channel) {
|
||||
TP_SSH_CHANNEL_PAIR* SshSession::_get_channel_pair(int channel_side, ssh_channel channel) {
|
||||
ExThreadSmartLock locker(m_lock);
|
||||
|
||||
tp_channels::iterator it = m_channels.begin();
|
||||
|
@ -561,7 +561,7 @@ TP_SSH_CHANNEL_PAIR* SshSession::_get_channel_pair(int channel_side, ssh_channel
|
|||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
int SshSession::_on_client_pty_request(ssh_session session, ssh_channel channel, const char *term, int x, int y, int px, int py, void *userdata) {
|
||||
SshSession *_this = (SshSession *)userdata;
|
||||
|
@ -810,7 +810,7 @@ int SshSession::_on_server_channel_data(ssh_session session, ssh_channel channel
|
|||
else
|
||||
auth_mode = "unknown";
|
||||
|
||||
int w = min(cp->win_width, 128);
|
||||
int w = std::min(cp->win_width, 128);
|
||||
ex_astr line(w, '=');
|
||||
|
||||
snprintf(buf, sizeof(buf),
|
||||
|
@ -859,65 +859,65 @@ int SshSession::_on_server_channel_data(ssh_session session, ssh_channel channel
|
|||
}
|
||||
else {
|
||||
if (len > 5 && len < 256) {
|
||||
const ex_u8* _begin = ex_memmem((const ex_u8*)data, len, (const ex_u8*)"\033]0;", 4);
|
||||
if (NULL != _begin) {
|
||||
size_t len_before = _begin - (const ex_u8*)data;
|
||||
const ex_u8* _end = ex_memmem(_begin + 4, len - len_before, (const ex_u8*)"\007", 1);
|
||||
if (NULL != _end)
|
||||
{
|
||||
_end++;
|
||||
|
||||
// 这个包中含有改变标题的数据,将标题换为我们想要的
|
||||
EXLOGD("-- found title\n");
|
||||
size_t len_end = len - (_end - (const ex_u8*)data);
|
||||
MemBuffer mbuf;
|
||||
|
||||
if (len_before > 0)
|
||||
mbuf.append((ex_u8*)data, len_before);
|
||||
|
||||
mbuf.append((ex_u8*)"\033]0;TP#ssh://", 13);
|
||||
mbuf.append((ex_u8*)_this->m_conn_ip.c_str(), _this->m_conn_ip.length());
|
||||
mbuf.append((ex_u8*)"\007", 1);
|
||||
|
||||
if (len_end > 0)
|
||||
mbuf.append((ex_u8*)_end, len_end);
|
||||
|
||||
if (mbuf.size() > 0)
|
||||
{
|
||||
for(;;){
|
||||
ret = ssh_channel_write(cp->cli_channel, mbuf.data(), mbuf.size());
|
||||
if (ret == SSH_ERROR)
|
||||
break;
|
||||
if (ret == mbuf.size()) {
|
||||
ret = len; // 表示我们已经处理了所有的数据了。
|
||||
break;
|
||||
}
|
||||
else {
|
||||
mbuf.pop(ret);
|
||||
ex_sleep_ms(100);
|
||||
}
|
||||
}
|
||||
const ex_u8* _begin = ex_memmem((const ex_u8*)data, len, (const ex_u8*)"\033]0;", 4);
|
||||
if (NULL != _begin) {
|
||||
size_t len_before = _begin - (const ex_u8*)data;
|
||||
const ex_u8* _end = ex_memmem(_begin + 4, len - len_before, (const ex_u8*)"\007", 1);
|
||||
if (NULL != _end)
|
||||
{
|
||||
_end++;
|
||||
|
||||
// 这个包中含有改变标题的数据,将标题换为我们想要的
|
||||
EXLOGD("-- found title\n");
|
||||
size_t len_end = len - (_end - (const ex_u8*)data);
|
||||
MemBuffer mbuf;
|
||||
|
||||
if (len_before > 0)
|
||||
mbuf.append((ex_u8*)data, len_before);
|
||||
|
||||
mbuf.append((ex_u8*)"\033]0;TP#ssh://", 13);
|
||||
mbuf.append((ex_u8*)_this->m_conn_ip.c_str(), _this->m_conn_ip.length());
|
||||
mbuf.append((ex_u8*)"\007", 1);
|
||||
|
||||
if (len_end > 0)
|
||||
mbuf.append((ex_u8*)_end, len_end);
|
||||
|
||||
if (mbuf.size() > 0)
|
||||
{
|
||||
for(;;){
|
||||
ret = ssh_channel_write(cp->cli_channel, mbuf.data(), mbuf.size());
|
||||
if (ret == SSH_ERROR)
|
||||
break;
|
||||
if (ret == mbuf.size()) {
|
||||
ret = len; // 表示我们已经处理了所有的数据了。
|
||||
break;
|
||||
}
|
||||
else {
|
||||
mbuf.pop(ret);
|
||||
ex_sleep_ms(100);
|
||||
}
|
||||
}
|
||||
// if (ret <= 0)
|
||||
// EXLOGE("[ssh] send to client failed (1).\n");
|
||||
// else
|
||||
// ret = len;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = ssh_channel_write(cp->cli_channel, data, len);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = ssh_channel_write(cp->cli_channel, data, len);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = ssh_channel_write(cp->cli_channel, data, len);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = ssh_channel_write(cp->cli_channel, data, len);
|
||||
}
|
||||
}
|
||||
else {
|
||||
ret = ssh_channel_write(cp->cli_channel, data, len);
|
||||
ret = ssh_channel_write(cp->cli_channel, data, len);
|
||||
}
|
||||
}
|
||||
else {
|
||||
ret = ssh_channel_write(cp->cli_channel, data, len);
|
||||
ret = ssh_channel_write(cp->cli_channel, data, len);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -2,6 +2,7 @@
|
|||
|
||||
$app.on_init = function (cb_stack) {
|
||||
$app.dom = {
|
||||
assist_ver: $('#tp-assist-ver'),
|
||||
btn_refresh_host: $('#btn-refresh-host'),
|
||||
btn_add_host: $('#btn-add-host'),
|
||||
chkbox_host_select_all: $('#table-host-select-all'),
|
||||
|
@ -18,6 +19,15 @@ $app.on_init = function (cb_stack) {
|
|||
upload_file_message: $('#upload-file-message')
|
||||
};
|
||||
|
||||
$tp.assist_checked = function() {
|
||||
console.log("---------");
|
||||
if($tp.assist.running) {
|
||||
$app.dom.assist_ver.html($tp.assist.version);
|
||||
} else {
|
||||
$app.dom.assist_ver.html('<a href="http://teleport.eomsoft.net/download" target="_blank" class="error">未能检测到</a>');
|
||||
}
|
||||
};
|
||||
|
||||
cb_stack
|
||||
.add($app.create_controls)
|
||||
.add($app.load_role_list);
|
||||
|
|
|
@ -59,17 +59,17 @@ var CALLBACK_STACK = {
|
|||
|
||||
// Teleport核心JS
|
||||
var $tp = {
|
||||
// server_host: window.location.hostname || '',
|
||||
// server_port: (window.location.port === "") ? 80 : parseInt(window.location.port),
|
||||
web_server: window.location.protocol+'://'+window.location.host,
|
||||
web_server: window.location.protocol+'://'+window.location.host
|
||||
|
||||
// Teleport页面应用对象,放置页面自身特有的属性和函数
|
||||
app: {
|
||||
options: {},
|
||||
on_init: function (cb_stack) {
|
||||
, app: {
|
||||
options: {}
|
||||
, on_init: function (cb_stack) {
|
||||
cb_stack.exec();
|
||||
} // should be overwrite.
|
||||
}
|
||||
|
||||
, assist_checked: null
|
||||
};
|
||||
|
||||
$tp.init = function () {
|
||||
|
@ -115,12 +115,14 @@ $tp.init = function () {
|
|||
];
|
||||
|
||||
var cs = CALLBACK_STACK.create();
|
||||
cs.add($tp.app.init);
|
||||
|
||||
|
||||
if(!_.isUndefined($tp.assist)) {
|
||||
cs.add($tp.assist.init);
|
||||
}
|
||||
|
||||
cs.add($tp.app.init);
|
||||
|
||||
cs.exec();
|
||||
};
|
||||
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
"use strict";
|
||||
|
||||
$tp.assist = {
|
||||
ver_request: '',
|
||||
ver_last: '',
|
||||
ver_current: '',
|
||||
running: false,
|
||||
version: '',
|
||||
api_url: 'http://localhost:50022/api',
|
||||
teleport_ip: window.location.hostname
|
||||
};
|
||||
|
@ -25,7 +24,12 @@ $assist.init = function (cb_stack) {
|
|||
jsonp: 'callback',
|
||||
dataType: 'json',
|
||||
success: function (ret) {
|
||||
$assist.ver_current = ret.version;
|
||||
$assist.running = true;
|
||||
$assist.version = ret.version;
|
||||
|
||||
if(_.isFunction($tp.assist_checked)) {
|
||||
$tp.assist_checked();
|
||||
}
|
||||
// if (version_compare()) {
|
||||
// error_process(ret, func_success, func_error);
|
||||
// } else {
|
||||
|
@ -33,6 +37,10 @@ $assist.init = function (cb_stack) {
|
|||
// }
|
||||
},
|
||||
error: function () {
|
||||
$assist.running = false;
|
||||
if(_.isFunction($tp.assist_checked)) {
|
||||
$tp.assist_checked();
|
||||
}
|
||||
// func_error({}, TPE_NO_ASSIST, '无法连接到teleport助手,可能尚未启动!');
|
||||
// $tp.notify_error('无法连接到teleport助手,可能尚未启动!');
|
||||
// $assist.alert_assist_not_found();
|
||||
|
|
|
@ -83,6 +83,10 @@ label {
|
|||
//font-style: italic;
|
||||
}
|
||||
|
||||
.error {
|
||||
color: @color-text-danger;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
@color-text-ignore: #999;
|
||||
@color-text-default: #333;
|
||||
@color-text-warning: #f59c1a;
|
||||
@color-text-danger: #d34242;
|
||||
|
||||
@color-text-on-dark-bg: #fff;
|
||||
@color-text-shadow-on-dark-bg: #525252;
|
||||
|
|
|
@ -77,13 +77,21 @@ body {
|
|||
//line-height: 20px;
|
||||
|
||||
& > li + li:before {
|
||||
//font-size: 24px;
|
||||
//line-height: 20px;
|
||||
//padding: 0 5px;
|
||||
//color: #ccc;
|
||||
content: "\f105";
|
||||
font-family: 'FontAwesome';
|
||||
}
|
||||
|
||||
&.breadcrumb-list {
|
||||
& > li {
|
||||
font-size: @text-size-normal;
|
||||
}
|
||||
& > li + li:before {
|
||||
//content: "\f105";
|
||||
//font-family: 'FontAwesome';
|
||||
content: " ";
|
||||
margin:0 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1073,7 +1081,7 @@ textarea.cert_pub {
|
|||
|
||||
&.tp-editable {
|
||||
cursor: pointer;
|
||||
color: #459dee;
|
||||
color: #459dee;
|
||||
&:hover {
|
||||
color: #53af43;
|
||||
}
|
||||
|
|
|
@ -205,7 +205,8 @@
|
|||
|
||||
<hr style="border:none;border-bottom:1px dotted #4a4a4a;margin-bottom:0;"/>
|
||||
<div style="color:#717171;font-size:90%;margin-top:5px;"><span style="display:inline-block;width:70px;text-align: right">服务端:</span><span class="mono">v${app_ver.TP_SERVER_VER}</span></div>
|
||||
<div style="color:#717171;font-size:90%;margin-top:5px;"><span style="display:inline-block;width:70px;text-align: right">助手:</span><span class="mono" id="tp-assist-version" data-req-version=${app_ver.TP_ASSIST_REQUIRE}>v${app_ver.TP_ASSIST_LAST_VER}</span></div>
|
||||
## <div style="color:#717171;font-size:90%;margin-top:5px;"><span style="display:inline-block;width:70px;text-align: right">助手:</span><span class="mono" id="tp-assist-version" data-req-version=$ { app_ver.TP_ASSIST_REQUIRE}>v$ { app_ver.TP_ASSIST_LAST_VER}</span></div>
|
||||
## <div style="color:#717171;font-size:90%;margin-top:5px;"><span style="display:inline-block;width:70px;text-align: right">助手:</span><span class="mono" id="tp-assist-version">未连接</span></div>
|
||||
<hr style="border:none;border-bottom:1px dotted #4a4a4a;margin-bottom:20px;margin-top:5px;"/>
|
||||
|
||||
## </div>
|
||||
|
|
|
@ -16,6 +16,13 @@
|
|||
</style>
|
||||
</%block>
|
||||
|
||||
<%block name="breadcrumb_extra">
|
||||
<ol class="breadcrumb breadcrumb-list">
|
||||
## <li><i class="fa fa-clock-o"></i> 服务器时间:<span id="tp-timer">-</span></li>
|
||||
<li><i class="fa fa-flash"></i> 助手版本:<span id="tp-assist-ver"></span></li>
|
||||
</ol>
|
||||
</%block>
|
||||
|
||||
## Begin Main Body.
|
||||
|
||||
<div class="page-content-inner">
|
||||
|
@ -29,8 +36,6 @@
|
|||
</div>
|
||||
<div class="table-extend-cell table-extend-cell-right group-actions">
|
||||
<button id="btn-add-host" class="btn btn-sm btn-primary"><i class="fa fa-plus-circle fa-fw"></i> 添加主机</button>
|
||||
## <button id="btn-add-temp-account" class="btn btn-sm btn-success"><i class="fa fa-plus-circle fa-fw"></i> 添加主机</button>
|
||||
|
||||
<button id="btn-import-asset" class="btn btn-sm btn-default"><i class="fa fa-plus-square fa-fw"></i> 导入主机和账号</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
## Begin Main Body.
|
||||
|
||||
<div class="content-box">
|
||||
<p class="welcome-message"><i class="fa fa-heart"></i> <span>欢迎安装使用 TELEPORT v${app_ver.TP_SERVER_VER} 社区版!</span></p>
|
||||
<p class="welcome-message"><i class="fa fa-heart"></i> <span>欢迎安装使用 TELEPORT v${app_ver.TP_SRV_WWW_VER} 社区版!</span></p>
|
||||
|
||||
<hr/>
|
||||
<h2><i class="fa fa-chevron-right"></i> 确定数据库类型</h2>
|
||||
|
|
|
@ -50,10 +50,10 @@
|
|||
</%block>
|
||||
</div>
|
||||
|
||||
<div class="page-header-extra" style="display:inline-block;float:right;padding-top:12px;">
|
||||
## <ol class="bread-crumb">
|
||||
## <li><i class="fa fa-clock-o fa-fw"></i> <span id="system-timer">111</span></li>
|
||||
## </ol>
|
||||
<div class="page-header-extra" style="display:inline-block;float:right;">
|
||||
<div class="breadcrumb-container">
|
||||
<%block name="breadcrumb_extra"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# -*- coding: utf8 -*-
|
||||
TP_SRV_WWW_VER = "3.0.0.1"
|
||||
# -*- coding: utf8 -*-
|
||||
TP_SERVER_VER = "3.0.0.1"
|
||||
|
|
|
@ -13,8 +13,7 @@ Revision : 修订号。主版本号和次版本号都相同但修订号不同
|
|||
Build : 构建号。构建号用于表明此版本发布之前进行了多少次构建及测试。某些情况下此版本号可以省略。
|
||||
|
||||
|
||||
TP_SERVER 3.0.0.1 # 整个服务端打包的版本,任意一个 TP_SRV_xxx 升级,此版本也需要升级
|
||||
TP_SRV_WWW 3.0.0.1 # web前后端版本
|
||||
TP_SRV_TPCORE 3.0.0.1 # 核心服务 tp_core 的版本
|
||||
TP_SRV_TPWEB 3.0.0.1 # web服务 tp_web 的版本(一般除非升级Python,否则不会变化)
|
||||
TP_SERVER 3.0.0.1 # 整个服务端打包的版本
|
||||
TP_TPCORE 3.0.0.1 # 核心服务 tp_core 的版本
|
||||
TP_TPWEB 3.0.0.1 # web服务 tp_web 的版本(一般除非升级Python,否则不会变化)
|
||||
TP_ASSIST 3.0.0.1 # 助手版本
|
||||
|
|
Loading…
Reference in New Issue