mirror of https://github.com/tp4a/teleport
change class name, otherwise crash when rdp and ssh work together.
parent
e7313c6e4e
commit
8e8a06628d
|
@ -503,8 +503,8 @@ class BuilderLinux(BuilderBase):
|
||||||
os.chdir(old_p)
|
os.chdir(old_p)
|
||||||
|
|
||||||
def fix_output(self):
|
def fix_output(self):
|
||||||
# remove .so files, otherwise eom_ts will link to .so but not .a in default.
|
# remove .so files, otherwise will link to .so but not .a in default.
|
||||||
rm = ['libsqlite3.la', 'libsqlite3.so.0', 'libuv.la', 'libuv.so.1', 'libsqlite3.so', 'libsqlite3.so.0.8.6', 'libuv.so', 'libuv.so.1.0.0']
|
rm = ['libsqlite3.la', 'libsqlite3.so.0', 'libsqlite3.so', 'libsqlite3.so.0.8.6', 'libuv.la', 'libuv.so.1', 'libuv.so', 'libuv.so.1.0.0']
|
||||||
for i in rm:
|
for i in rm:
|
||||||
_path = os.path.join(self.PATH_RELEASE, 'lib', i)
|
_path = os.path.join(self.PATH_RELEASE, 'lib', i)
|
||||||
if os.path.exists(_path):
|
if os.path.exists(_path):
|
||||||
|
@ -551,8 +551,8 @@ def main():
|
||||||
builder.build_mbedtls()
|
builder.build_mbedtls()
|
||||||
builder.build_libssh()
|
builder.build_libssh()
|
||||||
builder.build_sqlite()
|
builder.build_sqlite()
|
||||||
#
|
|
||||||
# builder.fix_output()
|
builder.fix_output()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
#define __EX_INI_H__
|
#define __EX_INI_H__
|
||||||
|
|
||||||
/*
|
/*
|
||||||
特别注意:
|
<EFBFBD>ر<EFBFBD>ע<EFBFBD>⣺
|
||||||
|
|
||||||
1. 以 分号';' 或者 井号'#' 作为注释行的第一个字符
|
1. <EFBFBD><EFBFBD> <EFBFBD>ֺ<EFBFBD>';' <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>'#' <EFBFBD><EFBFBD>Ϊע<EFBFBD><EFBFBD><EFBFBD>еĵ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
|
||||||
2. 不支持行内注释
|
2. <EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
|
||||||
3. 值对以第一个等号分隔,等号前后如果有空格会被忽略,之后的空格会保留,包括行尾空格
|
3. ֵ<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ⱥŷָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пո<EFBFBD>ᱻ<EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>֮<EFBFBD><EFBFBD>Ŀո<EFBFBD>ᱣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD>ո<EFBFBD>
|
||||||
4. 如果有不属于某个小节的值对,可以使用GetDumySection()获取
|
4. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD>С<EFBFBD>ڵ<EFBFBD>ֵ<EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>GetDumySection()<EFBFBD><EFBFBD>ȡ
|
||||||
DumySection主要是为了能够兼容简单的Python文件做配置文件。
|
DumySection<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>Python<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ex_str.h"
|
#include "ex_str.h"
|
||||||
|
@ -77,6 +77,8 @@ public:
|
||||||
ExIniFile();
|
ExIniFile();
|
||||||
~ExIniFile();
|
~ExIniFile();
|
||||||
|
|
||||||
|
const ex_wstr& get_filename(void){return m_file_path;}
|
||||||
|
|
||||||
void ClearUp(void);
|
void ClearUp(void);
|
||||||
|
|
||||||
// Read and parse special file.
|
// Read and parse special file.
|
||||||
|
|
|
@ -232,6 +232,8 @@ bool ExIniFile::LoadFromFile(const ex_wstr& strFileName, bool bClearOld)
|
||||||
fseek(f, 0L, SEEK_SET);
|
fseek(f, 0L, SEEK_SET);
|
||||||
fread(&vFile[0], 1, ulFileSize, f);
|
fread(&vFile[0], 1, ulFileSize, f);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
|
m_file_path = strFileName;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char *pOffset = &vFile[0];
|
char *pOffset = &vFile[0];
|
||||||
|
|
|
@ -8,15 +8,22 @@
|
||||||
<file url="file://$PROJECT_DIR$/../common/libex/src/ex_ini.cpp" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/../common/libex/src/ex_ini.cpp" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/../common/libex/src/ex_log.cpp" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/../common/libex/src/ex_log.cpp" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/../common/libex/src/ex_util.cpp" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/../common/libex/src/ex_util.cpp" charset="GBK" />
|
||||||
|
<file url="file://$PROJECT_DIR$/tp_core/common/base_record.cpp" charset="GBK" />
|
||||||
|
<file url="file://$PROJECT_DIR$/tp_core/common/base_record.h" charset="GBK" />
|
||||||
|
<file url="file://$PROJECT_DIR$/tp_core/common/ts_const.h" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/tp_core/common/ts_membuf.cpp" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/tp_core/common/ts_membuf.cpp" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/tp_core/common/ts_membuf.h" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/tp_core/common/ts_membuf.h" charset="GBK" />
|
||||||
|
<file url="file://$PROJECT_DIR$/tp_core/common/ts_memstream.h" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/tp_core/core/main.cpp" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/tp_core/core/main.cpp" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/tp_core/core/ts_db.cpp" charset="GBK" />
|
|
||||||
<file url="file://$PROJECT_DIR$/tp_core/core/ts_env.cpp" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/tp_core/core/ts_env.cpp" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/tp_core/core/ts_http_rpc.h" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/tp_core/core/ts_http_rpc.h" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/tp_core/core/ts_main.cpp" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/tp_core/core/ts_main.cpp" charset="GBK" />
|
||||||
|
<file url="file://$PROJECT_DIR$/tp_core/protocol/rdp/rdp_recorder.h" charset="GBK" />
|
||||||
|
<file url="file://$PROJECT_DIR$/tp_core/protocol/rdp/rdp_session.h" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/tp_core/protocol/ssh/ssh_proxy.cpp" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/tp_core/protocol/ssh/ssh_proxy.cpp" charset="GBK" />
|
||||||
|
<file url="file://$PROJECT_DIR$/tp_core/protocol/ssh/ssh_proxy.h" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/tp_core/protocol/ssh/ssh_recorder.cpp" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/tp_core/protocol/ssh/ssh_recorder.cpp" charset="GBK" />
|
||||||
|
<file url="file://$PROJECT_DIR$/tp_core/protocol/ssh/ssh_recorder.h" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/tp_core/protocol/ssh/ssh_session.cpp" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/tp_core/protocol/ssh/ssh_session.cpp" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/tp_core/protocol/ssh/ssh_session.h" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/tp_core/protocol/ssh/ssh_session.h" charset="GBK" />
|
||||||
<file url="file://$PROJECT_DIR$/tp_web/src/main.cpp" charset="GBK" />
|
<file url="file://$PROJECT_DIR$/tp_web/src/main.cpp" charset="GBK" />
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
#include "ts_membuf.h"
|
#include "ts_membuf.h"
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
|
|
||||||
MemBuffer::MemBuffer() : m_buffer(NULL), m_data_size(0), m_buffer_size(0)
|
MemBuffer::MemBuffer()// : m_buffer(NULL), m_data_size(0), m_buffer_size(0)
|
||||||
{
|
{
|
||||||
|
m_buffer = NULL;
|
||||||
|
m_data_size = 0;
|
||||||
|
m_buffer_size = 0;
|
||||||
|
//EXLOGI("[mbuf:%p] create new instance.\n", this);
|
||||||
}
|
}
|
||||||
|
|
||||||
MemBuffer::~MemBuffer()
|
MemBuffer::~MemBuffer()
|
||||||
|
@ -16,16 +20,19 @@ MemBuffer::~MemBuffer()
|
||||||
m_buffer_size = 0;
|
m_buffer_size = 0;
|
||||||
|
|
||||||
//TSLOGD("[mbuf] #%d destroied with buffer-size: %d, data-size: %d.\n", m_index, m_buffer_size, m_data_size);
|
//TSLOGD("[mbuf] #%d destroied with buffer-size: %d, data-size: %d.\n", m_index, m_buffer_size, m_data_size);
|
||||||
|
//EXLOGI("[mbuf:%p] destroy instance\n", this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MemBuffer::append(const ex_u8* data, size_t size)
|
void MemBuffer::append(const ex_u8* data, size_t size)
|
||||||
{
|
{
|
||||||
|
//EXLOGD("[mbuf:%p] call reserve() in append()\n", this);
|
||||||
reserve(m_data_size + size);
|
reserve(m_data_size + size);
|
||||||
|
|
||||||
// TODO: should return boolean.
|
// TODO: should return boolean.
|
||||||
if(NULL == m_buffer)
|
if(NULL == m_buffer)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
//EXLOGD("[mbuf:%p] append(): buffer: %p, m_buf_size: %d, m_data_size: %d, data: %p, size: %d\n", this, m_buffer, m_buffer_size, m_data_size, data, size);
|
||||||
memcpy(m_buffer+m_data_size, data, size);
|
memcpy(m_buffer+m_data_size, data, size);
|
||||||
m_data_size += size;
|
m_data_size += size;
|
||||||
}
|
}
|
||||||
|
@ -33,26 +40,42 @@ void MemBuffer::append(const ex_u8* data, size_t size)
|
||||||
void MemBuffer::reserve(size_t size)
|
void MemBuffer::reserve(size_t size)
|
||||||
{
|
{
|
||||||
if (size <= m_buffer_size)
|
if (size <= m_buffer_size)
|
||||||
|
{
|
||||||
|
//EXLOGD("[mbuf:%p] reserve(1): m_buf: %p, m_buf_size: %d, need size: %d, skip.\n", this, m_buffer, m_buffer_size, size);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 将新的缓冲区大小取整到 MEMBUF_BLOCK_SIZE 的整数倍
|
// 将新的缓冲区大小取整到 MEMBUF_BLOCK_SIZE 的整数倍
|
||||||
int new_size = (size + MEMBUF_BLOCK_SIZE - 1) & ~(MEMBUF_BLOCK_SIZE - 1);
|
size_t new_size = (size + MEMBUF_BLOCK_SIZE - 1) & ~(MEMBUF_BLOCK_SIZE - 1);
|
||||||
|
//EXLOGD("[mbuf:%p] reserve(2): m_buf: %p, m_buf_size: %d, size: %d, new size: %d.\n", this, m_buffer, m_buffer_size, size, new_size);
|
||||||
|
|
||||||
if (NULL == m_buffer)
|
if (NULL == m_buffer)
|
||||||
|
{
|
||||||
|
//EXLOGD("[mbuf:%p] calloc(%d).\n", this, new_size);
|
||||||
m_buffer = (ex_u8*)calloc(1, new_size);
|
m_buffer = (ex_u8*)calloc(1, new_size);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
//EXLOGD("[mbuf:%p] realloc(%d).\n", this, new_size);
|
||||||
m_buffer = (ex_u8*)realloc(m_buffer, new_size);
|
m_buffer = (ex_u8*)realloc(m_buffer, new_size);
|
||||||
|
}
|
||||||
|
|
||||||
m_buffer_size = new_size;
|
m_buffer_size = new_size;
|
||||||
|
|
||||||
// TODO: reserve() should return boolean.
|
// TODO: reserve() should return boolean.
|
||||||
if(NULL == m_buffer)
|
if(NULL == m_buffer)
|
||||||
{
|
{
|
||||||
|
//EXLOGD("[mbuf:%p] ----- m_buffer == NULL.\n", this);
|
||||||
m_buffer_size = 0;
|
m_buffer_size = 0;
|
||||||
m_data_size = 0;
|
m_data_size = 0;
|
||||||
}
|
}
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
//EXLOGD("[mbuf:%p] m_buffer == %p.\n", this, m_buffer);
|
||||||
|
//}
|
||||||
|
|
||||||
//TSLOGD("[mbuf] reserve(): #%d, buffer-size: %d, data-size: %d\n", m_index, m_buffer_size, m_data_size);
|
//TSLOGD("[mbuf] reserve(): #%d, buffer-size: %d, data-size: %d\n", m_index, m_buffer_size, m_data_size);
|
||||||
|
//EXLOGD("[mbuf:%p] reserve(3): m_buf: %p, buffer-size: %d, data-size: %d\n", this, m_buffer, m_buffer_size, m_data_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MemBuffer::concat(const MemBuffer& m)
|
void MemBuffer::concat(const MemBuffer& m)
|
||||||
|
|
|
@ -68,6 +68,8 @@ bool TsEnv::init(bool load_config)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//EXLOGW(L"[core] load config file: %ls.\n", conf_file.c_str());
|
||||||
|
|
||||||
if (!m_ini.LoadFromFile(conf_file))
|
if (!m_ini.LoadFromFile(conf_file))
|
||||||
{
|
{
|
||||||
EXLOGE(L"[core] can not load %ls.\n", conf_file.c_str());
|
EXLOGE(L"[core] can not load %ls.\n", conf_file.c_str());
|
||||||
|
|
|
@ -148,7 +148,7 @@ bool TppManager::load_tpp(const ex_wstr& libname)
|
||||||
ex_path_join(libfile, false, filename.c_str(), NULL);
|
ex_path_join(libfile, false, filename.c_str(), NULL);
|
||||||
EXLOGV(L"[core] load protocol lib: %ls\n", libfile.c_str());
|
EXLOGV(L"[core] load protocol lib: %ls\n", libfile.c_str());
|
||||||
|
|
||||||
TPP_LIB* lib = new TPP_LIB;
|
TPP_LIB* lib = new TPP_LIB;
|
||||||
|
|
||||||
lib->dylib = ex_dlopen(libfile.c_str());
|
lib->dylib = ex_dlopen(libfile.c_str());
|
||||||
if (NULL == lib->dylib)
|
if (NULL == lib->dylib)
|
||||||
|
@ -214,11 +214,13 @@ void TppManager::stop_all(void)
|
||||||
|
|
||||||
int ts_main(void)
|
int ts_main(void)
|
||||||
{
|
{
|
||||||
EXLOGI("\n");
|
|
||||||
EXLOGI("###############################################################\n");
|
|
||||||
EXLOGI("Teleport Core Server starting ...\n");
|
|
||||||
|
|
||||||
ExIniFile& ini = g_env.get_ini();
|
ExIniFile& ini = g_env.get_ini();
|
||||||
|
|
||||||
|
EXLOGI(L"\n");
|
||||||
|
EXLOGI(L"###############################################################\n");
|
||||||
|
EXLOGI(L"Load config file: %ls.\n", ini.get_filename().c_str());
|
||||||
|
EXLOGI(L"Teleport Core Server starting ...\n");
|
||||||
|
|
||||||
ex_ini_sections& secs = ini.GetAllSections();
|
ex_ini_sections& secs = ini.GetAllSections();
|
||||||
TsHttpRpc rpc;
|
TsHttpRpc rpc;
|
||||||
|
|
||||||
|
@ -228,14 +230,14 @@ int ts_main(void)
|
||||||
do {
|
do {
|
||||||
if (!g_session_mgr.start())
|
if (!g_session_mgr.start())
|
||||||
{
|
{
|
||||||
EXLOGE("[core] failed to start session-id manager.\n");
|
EXLOGE(L"[core] failed to start session-id manager.\n");
|
||||||
all_ok = false;
|
all_ok = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!rpc.init() || !rpc.start())
|
if (!rpc.init() || !rpc.start())
|
||||||
{
|
{
|
||||||
EXLOGE("[core] rpc init/start failed.\n");
|
EXLOGE(L"[core] rpc init/start failed.\n");
|
||||||
all_ok = false;
|
all_ok = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,12 +7,12 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
||||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${Project_SOURCE_DIR}/../out/server/x64/bin")
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${Project_SOURCE_DIR}/../out/server/x64/bin")
|
||||||
|
|
||||||
|
|
||||||
aux_source_directory(. DIR_SRCS)
|
aux_source_directory(. DIR_SSH_SRCS)
|
||||||
aux_source_directory(../../common DIR_SRCS)
|
aux_source_directory(../../common DIR_SSH_SRCS)
|
||||||
aux_source_directory(../../../../common/libex/src DIR_SRCS)
|
aux_source_directory(../../../../common/libex/src DIR_SSH_SRCS)
|
||||||
|
|
||||||
list(REMOVE_ITEM DIR_SRCS "./dllmain.cpp")
|
list(REMOVE_ITEM DIR_SSH_SRCS "./dllmain.cpp")
|
||||||
list(REMOVE_ITEM DIR_SRCS "./stdafx.cpp")
|
list(REMOVE_ITEM DIR_SSH_SRCS "./stdafx.cpp")
|
||||||
|
|
||||||
include_directories(
|
include_directories(
|
||||||
../../../../common/libex/include
|
../../../../common/libex/include
|
||||||
|
@ -21,5 +21,5 @@ include_directories(
|
||||||
|
|
||||||
link_directories(../../../../external/linux/release/lib)
|
link_directories(../../../../external/linux/release/lib)
|
||||||
|
|
||||||
add_library(tpssh SHARED ${DIR_SRCS})
|
add_library(tpssh SHARED ${DIR_SSH_SRCS})
|
||||||
target_link_libraries(tpssh ssh ssl crypto mbedx509 mbedtls mbedcrypto dl pthread rt util)
|
target_link_libraries(tpssh ssh ssl crypto mbedx509 mbedtls mbedcrypto dl pthread rt util)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
static ex_u8 TPP_RECORD_MAGIC[4] = { 'T', 'P', 'R', 'R' };
|
static ex_u8 TPP_RECORD_MAGIC[4] = { 'T', 'P', 'R', 'R' };
|
||||||
|
|
||||||
TppRec::TppRec()
|
TppSshRec::TppSshRec()
|
||||||
{
|
{
|
||||||
m_cmd_cache.reserve(MAX_SIZE_PER_FILE);
|
m_cmd_cache.reserve(MAX_SIZE_PER_FILE);
|
||||||
|
|
||||||
|
@ -10,12 +10,12 @@ TppRec::TppRec()
|
||||||
memcpy((ex_u8*)(&m_head.magic), TPP_RECORD_MAGIC, sizeof(ex_u32));
|
memcpy((ex_u8*)(&m_head.magic), TPP_RECORD_MAGIC, sizeof(ex_u32));
|
||||||
}
|
}
|
||||||
|
|
||||||
TppRec::~TppRec()
|
TppSshRec::~TppSshRec()
|
||||||
{
|
{
|
||||||
end();
|
end();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TppRec::_on_begin(const TPP_SESSION_INFO* info)
|
void TppSshRec::_on_begin(const TPP_SESSION_INFO* info)
|
||||||
{
|
{
|
||||||
if (NULL == info)
|
if (NULL == info)
|
||||||
return;
|
return;
|
||||||
|
@ -30,7 +30,7 @@ void TppRec::_on_begin(const TPP_SESSION_INFO* info)
|
||||||
memcpy(m_head.ip, info->host_ip, strlen(info->host_ip) > 17 ? 17 : strlen(info->host_ip));
|
memcpy(m_head.ip, info->host_ip, strlen(info->host_ip) > 17 ? 17 : strlen(info->host_ip));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TppRec::_on_end(void)
|
void TppSshRec::_on_end(void)
|
||||||
{
|
{
|
||||||
// 如果还有剩下未写入的数据,写入文件中。
|
// 如果还有剩下未写入的数据,写入文件中。
|
||||||
if (m_cache.size() > 0)
|
if (m_cache.size() > 0)
|
||||||
|
@ -58,7 +58,7 @@ void TppRec::_on_end(void)
|
||||||
fclose(f);
|
fclose(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TppRec::record(ex_u8 type, const ex_u8* data, size_t size)
|
void TppSshRec::record(ex_u8 type, const ex_u8* data, size_t size)
|
||||||
{
|
{
|
||||||
if (data == NULL || 0 == size)
|
if (data == NULL || 0 == size)
|
||||||
return;
|
return;
|
||||||
|
@ -82,13 +82,13 @@ void TppRec::record(ex_u8 type, const ex_u8* data, size_t size)
|
||||||
m_cache.append(data, size);
|
m_cache.append(data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TppRec::record_win_size_startup(int width, int height)
|
void TppSshRec::record_win_size_startup(int width, int height)
|
||||||
{
|
{
|
||||||
m_head.width = width;
|
m_head.width = width;
|
||||||
m_head.height = height;
|
m_head.height = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TppRec::record_win_size_change(int width, int height)
|
void TppSshRec::record_win_size_change(int width, int height)
|
||||||
{
|
{
|
||||||
TS_RECORD_WIN_SIZE pkg;
|
TS_RECORD_WIN_SIZE pkg;
|
||||||
pkg.width = (ex_u16)width;
|
pkg.width = (ex_u16)width;
|
||||||
|
@ -96,7 +96,7 @@ void TppRec::record_win_size_change(int width, int height)
|
||||||
record(TS_RECORD_TYPE_SSH_TERM_SIZE, (ex_u8*)&pkg, sizeof(TS_RECORD_WIN_SIZE));
|
record(TS_RECORD_TYPE_SSH_TERM_SIZE, (ex_u8*)&pkg, sizeof(TS_RECORD_WIN_SIZE));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TppRec::record_command(const ex_astr cmd)
|
void TppSshRec::record_command(const ex_astr cmd)
|
||||||
{
|
{
|
||||||
char szTime[100] = { 0 };
|
char szTime[100] = { 0 };
|
||||||
#ifdef EX_OS_WIN32
|
#ifdef EX_OS_WIN32
|
||||||
|
@ -122,7 +122,7 @@ void TppRec::record_command(const ex_astr cmd)
|
||||||
m_cmd_cache.append((ex_u8*)cmd.c_str(), cmd.length());
|
m_cmd_cache.append((ex_u8*)cmd.c_str(), cmd.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TppRec::_save_to_data_file(void)
|
bool TppSshRec::_save_to_data_file(void)
|
||||||
{
|
{
|
||||||
wchar_t _str_file_id[24] = { 0 };
|
wchar_t _str_file_id[24] = { 0 };
|
||||||
ex_wcsformat(_str_file_id, 24, L".%03d", m_head.file_count);
|
ex_wcsformat(_str_file_id, 24, L".%03d", m_head.file_count);
|
||||||
|
@ -153,7 +153,7 @@ bool TppRec::_save_to_data_file(void)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TppRec::_save_to_cmd_file(void)
|
bool TppSshRec::_save_to_cmd_file(void)
|
||||||
{
|
{
|
||||||
ex_wstr fname = m_base_path;
|
ex_wstr fname = m_base_path;
|
||||||
ex_path_join(fname, false, m_base_fname.c_str(), NULL);
|
ex_path_join(fname, false, m_base_fname.c_str(), NULL);
|
||||||
|
|
|
@ -45,11 +45,11 @@ typedef struct TS_RECORD_WIN_SIZE
|
||||||
|
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
||||||
class TppRec : public TppRecBase
|
class TppSshRec : public TppRecBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TppRec();
|
TppSshRec();
|
||||||
virtual ~TppRec();
|
virtual ~TppSshRec();
|
||||||
|
|
||||||
void record(ex_u8 type, const ex_u8* data, size_t size);
|
void record(ex_u8 type, const ex_u8* data, size_t size);
|
||||||
void record_win_size_startup(int width, int height);
|
void record_win_size_startup(int width, int height);
|
||||||
|
|
|
@ -89,7 +89,7 @@ private:
|
||||||
int m_retcode;
|
int m_retcode;
|
||||||
int m_db_id;
|
int m_db_id;
|
||||||
|
|
||||||
TppRec m_rec;
|
TppSshRec m_rec;
|
||||||
|
|
||||||
SshProxy* m_proxy;
|
SshProxy* m_proxy;
|
||||||
ssh_session m_cli_session;
|
ssh_session m_cli_session;
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
#include "tpp_env.h"
|
#include "tpp_env.h"
|
||||||
|
|
||||||
TppEnv g_ssh_env;
|
TppSshEnv g_ssh_env;
|
||||||
|
|
||||||
TppEnv::TppEnv()
|
TppSshEnv::TppSshEnv()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
TppEnv::~TppEnv()
|
TppSshEnv::~TppSshEnv()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
bool TppEnv::_on_init(TPP_INIT_ARGS* args)
|
bool TppSshEnv::_on_init(TPP_INIT_ARGS* args)
|
||||||
{
|
{
|
||||||
ex_path_join(replay_path, false, L"ssh", NULL);
|
ex_path_join(replay_path, false, L"ssh", NULL);
|
||||||
|
|
||||||
|
@ -28,11 +28,13 @@ bool TppEnv::_on_init(TPP_INIT_ARGS* args)
|
||||||
{
|
{
|
||||||
ex_wstr2astr(tmp, bind_ip);
|
ex_wstr2astr(tmp, bind_ip);
|
||||||
}
|
}
|
||||||
|
EXLOGW("[ssh] bind-ip: %s\n", bind_ip.c_str());
|
||||||
|
|
||||||
if (!ps->GetInt(L"bind-port", bind_port))
|
if (!ps->GetInt(L"bind-port", bind_port))
|
||||||
{
|
{
|
||||||
bind_port = TS_SSH_PROXY_PORT;
|
bind_port = TS_SSH_PROXY_PORT;
|
||||||
}
|
}
|
||||||
|
EXLOGW(L"[ssh] bind-port: %d\n", bind_port);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
|
|
||||||
#include "../../common/base_env.h"
|
#include "../../common/base_env.h"
|
||||||
|
|
||||||
class TppEnv : public TppEnvBase
|
class TppSshEnv : public TppEnvBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TppEnv();
|
TppSshEnv();
|
||||||
~TppEnv();
|
~TppSshEnv();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ex_astr bind_ip;
|
ex_astr bind_ip;
|
||||||
|
@ -17,6 +17,6 @@ private:
|
||||||
bool _on_init(TPP_INIT_ARGS* args);
|
bool _on_init(TPP_INIT_ARGS* args);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern TppEnv g_ssh_env;
|
extern TppSshEnv g_ssh_env;
|
||||||
|
|
||||||
#endif // __TPP_ENV_H__
|
#endif // __TPP_ENV_H__
|
||||||
|
|
|
@ -173,7 +173,7 @@ ywl.on_host_table_created = function (tbl) {
|
||||||
if (protocol == 1) {
|
if (protocol == 1) {
|
||||||
$(cell_obj).find('[ywl-btn-record]').click(function () {
|
$(cell_obj).find('[ywl-btn-record]').click(function () {
|
||||||
var ip = window.location.hostname;//ywl.page_options.ts_server.ip;
|
var ip = window.location.hostname;//ywl.page_options.ts_server.ip;
|
||||||
var port = ywl.page_options.ts_server.port;
|
var port = parseInt(window.location.port);//ywl.page_options.ts_server.port;
|
||||||
var url = 'http://' + ip + ':' + port + '/log/replay/rdp/' + row_data.id;
|
var url = 'http://' + ip + ':' + port + '/log/replay/rdp/' + row_data.id;
|
||||||
var tail = 'log/replay/rdp/' + row_data.id;
|
var tail = 'log/replay/rdp/' + row_data.id;
|
||||||
var args = {};
|
var args = {};
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<%inherit file="../page_base.mako"/>
|
<%inherit file="../page_base.mako"/>
|
||||||
|
|
||||||
<%block name="extend_js">
|
<%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/teleport.js') }"></script>
|
||||||
<script type="text/javascript" src="${ static_url('js/ui/log.js') }"></script>
|
<script type="text/javascript" src="${ static_url('js/ui/log.js') }"></script>
|
||||||
</%block>
|
</%block>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue