mirror of https://github.com/tp4a/teleport
调整win版安装脚本。
parent
2b6d3a0529
commit
63a691394c
|
@ -74,11 +74,11 @@ class BuilderWin(BuilderBase):
|
||||||
utils.makedirs(tmp_cfg_path)
|
utils.makedirs(tmp_cfg_path)
|
||||||
|
|
||||||
utils.copy_file(os.path.join(env.root_path, 'out', 'client', ctx.bits_path, ctx.target_path), tmp_app_path, 'tp_assist.exe')
|
utils.copy_file(os.path.join(env.root_path, 'out', 'client', ctx.bits_path, ctx.target_path), tmp_app_path, 'tp_assist.exe')
|
||||||
utils.copy_file(os.path.join(env.root_path, 'client', 'tp_assist_win', 'cfg'), tmp_cfg_path, ('tp-assist.default.json', 'tp-assist.json'))
|
utils.copy_file(os.path.join(env.root_path, 'client', 'cfg'), tmp_cfg_path, ('tp-assist.windows.json', 'tp-assist.json'))
|
||||||
|
|
||||||
utils.copy_file(os.path.join(env.root_path, 'client', 'tp_assist_win', 'cfg'), tmp_cfg_path, 'cacert.cer')
|
utils.copy_file(os.path.join(env.root_path, 'client', 'cfg'), tmp_cfg_path, 'cacert.cer')
|
||||||
utils.copy_file(os.path.join(env.root_path, 'client', 'tp_assist_win', 'cfg'), tmp_cfg_path, 'localhost.key')
|
utils.copy_file(os.path.join(env.root_path, 'client', 'cfg'), tmp_cfg_path, 'localhost.key')
|
||||||
utils.copy_file(os.path.join(env.root_path, 'client', 'tp_assist_win', 'cfg'), tmp_cfg_path, 'localhost.pem')
|
utils.copy_file(os.path.join(env.root_path, 'client', 'cfg'), tmp_cfg_path, 'localhost.pem')
|
||||||
|
|
||||||
utils.copy_ex(os.path.join(env.root_path, 'client', 'tp_assist_win'), tmp_app_path, 'site')
|
utils.copy_ex(os.path.join(env.root_path, 'client', 'tp_assist_win'), tmp_app_path, 'site')
|
||||||
|
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIID4TCCAsmgAwIBAgIBADANBgkqhkiG9w0BAQsFADBSMQswCQYDVQQGEwJDTjEN
|
|
||||||
MAsGA1UECgwEVFA0QTEZMBcGA1UECwwQVFA0QSBUZWxlcG9ydCBDQTEZMBcGA1UE
|
|
||||||
AwwQVFA0QSBUZWxlcG9ydCBDQTAgFw0xODExMDgxNzMyMjJaGA8yMTE4MTAxNTE3
|
|
||||||
MzIyMlowUjELMAkGA1UEBhMCQ04xDTALBgNVBAoMBFRQNEExGTAXBgNVBAsMEFRQ
|
|
||||||
NEEgVGVsZXBvcnQgQ0ExGTAXBgNVBAMMEFRQNEEgVGVsZXBvcnQgQ0EwggEiMA0G
|
|
||||||
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCml/ERetMxXh17Uf4IlLjDfgGwnpQZ
|
|
||||||
L0UoCO2vAHk0h4eRx5x4fMB/Ml1YHYghVKJ9rxWeb+v5wWz9a8CFtNu+s46nG9cw
|
|
||||||
XdneQ2UT4L5+7a+mOyNGAcascfLWfUYoMnF0ugIf3OfsUeAwinMnvKi2I2b8XdXH
|
|
||||||
cXRqToEYmcovPLKaXByXFLjcMHMRwR5Es0zIRx+4uuIvCICndLRX5IGy/HGEPZyV
|
|
||||||
Vtrrrvkngz54UHB3C3sKuHuHBOxvJ1grJV9fLFptsbPhMonXfYKJpf+ODwmkEDFS
|
|
||||||
+4vV61ctYvUiElCPeQte23v6lIujqoLoHzYoi8J5BxEwBggeCgAZ/YYFAgMBAAGj
|
|
||||||
gb8wgbwwHQYDVR0OBBYEFKHqO88fYp8ard6SKPi8X4Gpr+uiMHoGA1UdIwRzMHGA
|
|
||||||
FKHqO88fYp8ard6SKPi8X4Gpr+uioVakVDBSMQswCQYDVQQGEwJDTjENMAsGA1UE
|
|
||||||
CgwEVFA0QTEZMBcGA1UECwwQVFA0QSBUZWxlcG9ydCBDQTEZMBcGA1UEAwwQVFA0
|
|
||||||
QSBUZWxlcG9ydCBDQYIBADAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
|
|
||||||
BjANBgkqhkiG9w0BAQsFAAOCAQEAQWYR/WBsaWEwTE9IuoULsGs0G5CWwfIvezil
|
|
||||||
HUmtQQb2G3P0kxv43xU3PT3czfbd22h9diSHyyYXOShHIfNx7ZD4SUMGyukcfPst
|
|
||||||
oyLcnlMK2hxtu3s5hTc76D+m7ylLQgV52jwHOXXS9toRhIo76HY6Q5Qbz9koP/x+
|
|
||||||
MOwmNJ+dLQj/qI1WZZI7FS7Idi2dB5KMp11a2kxgeBIxwkCreBm/MLfdLRyaMdGX
|
|
||||||
1L05AI0d7lCu+N+Fu2QX9wToBZ4rRQFrdakgCXqXCdM1O4Akf1KvCDXHUJKgMQUE
|
|
||||||
Hav+XOE7nrtxIwfH4VjmCZYRE+8ZTYbG8xSHDwIRMxhsLnb63w==
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,28 +0,0 @@
|
||||||
-----BEGIN PRIVATE KEY-----
|
|
||||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDxI1ZDRvuNnkVB
|
|
||||||
JgTZmnwF97d7Ace+R0gSSkWi2l2oezakLSdUUkiysr1wx45u2Du36FNqMGg7LiCZ
|
|
||||||
SX1e2Zba96PI6vwNGnlprCfXTe2eV3W8kMPKA6c9X8BTktMZINNHO3K591jGx+uM
|
|
||||||
fyrl6/CFVPHNkl73Ium9u91JXIX9BOata4RTlphmHADc+hPXuC6oeN8qayZvV2rV
|
|
||||||
Jfx1wMlWCMiGJM36JJO5pywteBCKQkVJuJ7y29XF2wT690o+i6ugk+yI2/2OpiET
|
|
||||||
2E5SYdvyhlbcU+iBERsnY3X7IvFY8/m00YIjIc3reGSEwt9M5WTPRCjgonnpQGAx
|
|
||||||
9xWXwqkzAgMBAAECggEAT9b2YdInye0EWxy+cFoBBGzPeE/PlcW+LCghRFlutzEM
|
|
||||||
l3FH21hfL6OUq7m3BCZeJ3cp3zfl2upb6sT1WKlMlHV36jc7ew8v8fgJPPVVXp7w
|
|
||||||
oZ2A5estvVltsX4knOZMbgJV6xLldvOMnvkf9/6VpV/Jq9nxzXvmzmZcT0TuLCaF
|
|
||||||
uPk/g/yD5qQ8LkWXDVJeBiDrrOZYo5F+T8bveYKKIEZV0ZAlXwJqVOUFnhffIaDF
|
|
||||||
fZVDOv4K3+q0aRDLTY2hxptHZiKzpLXgU634nBN3fiy0Fj88upNIus22gjaz+Jfx
|
|
||||||
2pYv22iGNXAMFQwGaeuT7d4+qhgxze8C7YlLJsJWCQKBgQD8kkXbgYG+8NoKmovz
|
|
||||||
ki9nuK1R6On5pNjZ344SJm6t/s4FaxQhE/4oHvODwgolqKyT2Sq1K8/5NInRGA29
|
|
||||||
xPqqkkhwWk3Zf9VTXgmuXsOikPhbCOuiehO+6/ZthmHYy1jBMqkAIWYaL9Ytn2qb
|
|
||||||
dKMHwzNdnppQNdQnwmXI2ZdRBQKBgQD0aVTSOmKfKdIxH9qFLdbi2CoyJMzjAjm9
|
|
||||||
Ss5M0OhI9wZnCXyjPBx4hOs+M/BKx4lQ296u2Dh+gSK3L8K3x8lVqqx8gd614qaC
|
|
||||||
EWzXZpAbd1S835o2vVYEWXU0iI9s0jkj+VnILEWBMRPYManRUATB2phwRPulimdu
|
|
||||||
o+BWN0GG1wKBgCYBxO1hMasQB1+tHf5LM0MCcWJwEDV27wLqNzDYA7O/MjVyhZbs
|
|
||||||
sURMVAyxuGEuXrno5hpZO3SeyVZjrj2uVKIyXSA7FpfyOqHO9tn8fKgL9LOORhcv
|
|
||||||
E6WZUH3uyO6cuwBnpTLV082BAVPgN2SpSpcycppV8Za8Yu6QvExbIgAZAoGBALcq
|
|
||||||
ANETxDj3hHggIQlRkwqpaOXvQkSVtGOxne1fWdTkmz24lFlYgRWotwsErX29D6Ez
|
|
||||||
RSzPCXd0m2mhN1G3PaEfqOgeA6NXWeV73Y+HY1PSGAT7pXyEY+QajoVyGdo5qWzW
|
|
||||||
P3yOAQCSoQaSIWulhgspILhyWgxzLpRx53t1KXw9AoGBAOxsrIrx/S6onTz58ncZ
|
|
||||||
m99OWwJX4WmY5KKhc5dWrfgHrNfldSbhjRhjALy6hSPzkaVy01wXKeeIZl64rUbd
|
|
||||||
S/r58yALQ5wuIHAi53BLStxgqEdHQHLg16GqL3b/+Waaf+Fy9y5eoUQ976HPr33G
|
|
||||||
uDJ1AAnWjX3KvcyZeWLFTU2/
|
|
||||||
-----END PRIVATE KEY-----
|
|
|
@ -1,24 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEGTCCAwGgAwIBAgIEASUKPDANBgkqhkiG9w0BAQsFADBSMQswCQYDVQQGEwJD
|
|
||||||
TjENMAsGA1UECgwEVFA0QTEZMBcGA1UECwwQVFA0QSBUZWxlcG9ydCBDQTEZMBcG
|
|
||||||
A1UEAwwQVFA0QSBUZWxlcG9ydCBDQTAgFw0xODExMDgxNzMyMjdaGA8yMTE4MTAx
|
|
||||||
NTE3MzIyN1owXzELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkJKMQswCQYDVQQHDAJ0
|
|
||||||
cDERMA8GA1UECgwIVGVsZXBvcnQxDzANBgNVBAsMBkFzc2lzdDESMBAGA1UEAwwJ
|
|
||||||
bG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8SNWQ0b7
|
|
||||||
jZ5FQSYE2Zp8Bfe3ewHHvkdIEkpFotpdqHs2pC0nVFJIsrK9cMeObtg7t+hTajBo
|
|
||||||
Oy4gmUl9XtmW2vejyOr8DRp5aawn103tnld1vJDDygOnPV/AU5LTGSDTRztyufdY
|
|
||||||
xsfrjH8q5evwhVTxzZJe9yLpvbvdSVyF/QTmrWuEU5aYZhwA3PoT17guqHjfKmsm
|
|
||||||
b1dq1SX8dcDJVgjIhiTN+iSTuacsLXgQikJFSbie8tvVxdsE+vdKPouroJPsiNv9
|
|
||||||
jqYhE9hOUmHb8oZW3FPogREbJ2N1+yLxWPP5tNGCIyHN63hkhMLfTOVkz0Qo4KJ5
|
|
||||||
6UBgMfcVl8KpMwIDAQABo4HnMIHkMB0GA1UdDgQWBBRc5d0h39QISTM55kCqPyy1
|
|
||||||
dohEHTB6BgNVHSMEczBxgBSh6jvPH2KfGq3ekij4vF+Bqa/roqFWpFQwUjELMAkG
|
|
||||||
A1UEBhMCQ04xDTALBgNVBAoMBFRQNEExGTAXBgNVBAsMEFRQNEEgVGVsZXBvcnQg
|
|
||||||
Q0ExGTAXBgNVBAMMEFRQNEEgVGVsZXBvcnQgQ0GCAQAwDAYDVR0TAQH/BAIwADAO
|
|
||||||
BgNVHQ8BAf8EBAMCA4gwEwYDVR0lBAwwCgYIKwYBBQUHAwEwFAYDVR0RBA0wC4IJ
|
|
||||||
bG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQAfj/CpFDhv5CrnN2kxhtRAmesJ
|
|
||||||
q6/KxxkBaimjbS/BpfvqfC9RxGH7MIqGUkbC4/ADkEt2OmVU4+f2R3+rCl+x+r1t
|
|
||||||
9+3r/JSYYVBxFnF1GbDhiY9sKahgb4HoFjE2Fj8eVODcEzdApLr198p5IIIyfBys
|
|
||||||
WHV4CYFMvq5qCKbSR/JMfrm9GArAh1J+B+JMIfm8xwerFi0tfK2YT+N4QkvbidjG
|
|
||||||
sd+RKlR51GHo9m4iEQ7mDd9H8joVrVs2MVLGf2EoVU5y/Ahee4g7k3SKrn3GI/Ec
|
|
||||||
6BRCht+INCLI3bnC3MtJHJRzv5Vmu4pSh3cwnVHfe+VWLGvGlp2+KeC02xZ2
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1,9 +0,0 @@
|
||||||
[common]
|
|
||||||
client_list=other
|
|
||||||
current_client=winscp
|
|
||||||
[other]
|
|
||||||
alias_name=自定义
|
|
||||||
command_line=
|
|
||||||
desc=desc
|
|
||||||
name=other
|
|
||||||
path=
|
|
|
@ -1,21 +0,0 @@
|
||||||
[common]
|
|
||||||
client_list=securecrt,xshell,other
|
|
||||||
current_client=putty
|
|
||||||
[other]
|
|
||||||
alias_name=自定义
|
|
||||||
command_line=
|
|
||||||
desc=desc
|
|
||||||
name=other
|
|
||||||
path=
|
|
||||||
[securecrt]
|
|
||||||
alias_name=SecureCRT
|
|
||||||
command_line=/T /N "TP#ssh://{real_ip}" /SSH2 /P {host_port} /PASSWORD **** {user_name}@{host_ip}
|
|
||||||
desc=SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。
|
|
||||||
name=securecrt
|
|
||||||
path=
|
|
||||||
[xshell]
|
|
||||||
alias_name=Xshell
|
|
||||||
command_line=-newtab "TP#ssh://{real_ip}" -url ssh://{user_name}:****@{host_ip}:{host_port}
|
|
||||||
desc=Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。
|
|
||||||
name=xshell
|
|
||||||
path=
|
|
|
@ -1,15 +0,0 @@
|
||||||
[common]
|
|
||||||
client_list=securecrt,other
|
|
||||||
current_client=putty
|
|
||||||
[other]
|
|
||||||
alias_name=自定义
|
|
||||||
command_line=
|
|
||||||
desc=
|
|
||||||
name=other
|
|
||||||
path=
|
|
||||||
[securecrt]
|
|
||||||
alias_name=SecureCRT
|
|
||||||
command_line=/T /N "TP#telnet://{real_ip}" /ARG {user_name} /SCRIPT "{assist_tools_path}\securecrt-telnet.vbs" /TELNET {host_ip} {host_port}
|
|
||||||
desc=SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。
|
|
||||||
name=securecrt
|
|
||||||
path=
|
|
|
@ -1,82 +0,0 @@
|
||||||
{
|
|
||||||
"ssh": {
|
|
||||||
"selected": "putty",
|
|
||||||
"available": [
|
|
||||||
{
|
|
||||||
"name":"putty",
|
|
||||||
"display": "PuTTY(内置)",
|
|
||||||
"app": "{assist_tools_path}\\putty\\putty.exe",
|
|
||||||
"cmdline": "-ssh -pw **** -P {host_port} -l {user_name} {host_ip}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "crt",
|
|
||||||
"display": "SecureCRT",
|
|
||||||
"app": "",
|
|
||||||
"cmdline": "/T /N \"TP#ssh://{real_ip}\" /SSH2 /P {host_port} /PASSWORD **** {user_name}@{host_ip}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "xshell",
|
|
||||||
"display": "Xshell",
|
|
||||||
"app": "",
|
|
||||||
"cmdline": "-newtab \"TP#ssh://{real_ip}\" -url ssh://{user_name}:****@{host_ip}:{host_port}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "other",
|
|
||||||
"display": "自定义",
|
|
||||||
"app": "",
|
|
||||||
"cmdline": ""
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"scp": {
|
|
||||||
"selected": "winscp",
|
|
||||||
"available": [
|
|
||||||
{
|
|
||||||
"name":"winscp",
|
|
||||||
"display": "WinSCP(内置)",
|
|
||||||
"app": "{assist_tools_path}\\winscp\\winscp.exe",
|
|
||||||
"cmdline": "/sessionname=\"TP#{real_ip}\" {user_name}:****@{host_ip}:{host_port}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "other",
|
|
||||||
"display": "自定义",
|
|
||||||
"app": "",
|
|
||||||
"cmdline": ""
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"telnet": {
|
|
||||||
"selected": "putty",
|
|
||||||
"available": [
|
|
||||||
{
|
|
||||||
"name":"putty",
|
|
||||||
"display": "PuTTY(内置)",
|
|
||||||
"app": "{assist_tools_path}\\putty\\putty.exe",
|
|
||||||
"cmdline": "telnet://{user_name}@{host_ip}:{host_port}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "crt",
|
|
||||||
"display": "SecureCRT",
|
|
||||||
"app": "",
|
|
||||||
"cmdline": "/T /N \"TP#telnet://{real_ip}\" /ARG {user_name} /SCRIPT \"{assist_tools_path}\\securecrt-telnet.vbs\" /TELNET {host_ip} {host_port}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "other",
|
|
||||||
"display": "自定义",
|
|
||||||
"app": "",
|
|
||||||
"cmdline": ""
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"rdp" : {
|
|
||||||
"available" : [
|
|
||||||
{
|
|
||||||
"app" : "{assist_tools_path}\\tprdp\\tprdp-client.exe",
|
|
||||||
"cmdline" : "/v:{host_ip}:{host_port} /u:{user_name} /t:\"TP#{real_ip}\"",
|
|
||||||
"display" : "FreeRDP(内置)",
|
|
||||||
"name" : "freerdp"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"selected" : "freerdp"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -88,8 +88,8 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmd
|
||||||
if (0 == g_ulSingleInstanceMsgId)
|
if (0 == g_ulSingleInstanceMsgId)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
LPWSTR szCmdLine=(LPWSTR)::GetCommandLineW(); //获取命令行参数;
|
LPWSTR szCmdLine=(LPWSTR)::GetCommandLineW(); //获取命令行参数;
|
||||||
g_argv=CommandLineToArgvW(szCmdLine, &g_argc); //拆分命令行参数字符串;
|
g_argv=CommandLineToArgvW(szCmdLine, &g_argc); //拆分命令行参数字符串;
|
||||||
std::wstring arg;
|
std::wstring arg;
|
||||||
for (int i=0; i < g_argc; ++i) {
|
for (int i=0; i < g_argc; ++i) {
|
||||||
arg = g_argv[i];
|
arg = g_argv[i];
|
||||||
|
@ -99,7 +99,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmd
|
||||||
g_argv=NULL;
|
g_argv=NULL;
|
||||||
return -1;
|
return -1;
|
||||||
}else if (arg.find(L"teleport_ip",0) !=std::wstring::npos && arg.find(L"teleport_port") != std::wstring::npos && arg.find(L"remote_host_ip") != std::wstring::npos && arg.find(L"session_id") != std::wstring::npos) {
|
}else if (arg.find(L"teleport_ip",0) !=std::wstring::npos && arg.find(L"teleport_port") != std::wstring::npos && arg.find(L"remote_host_ip") != std::wstring::npos && arg.find(L"session_id") != std::wstring::npos) {
|
||||||
//把wchar_t **转换为std::string
|
//把wchar_t **转换为std::string
|
||||||
size_t len = wcslen(g_argv[i]) + 1;
|
size_t len = wcslen(g_argv[i]) + 1;
|
||||||
size_t converted = 0;
|
size_t converted = 0;
|
||||||
char *CStr;
|
char *CStr;
|
||||||
|
@ -107,7 +107,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmd
|
||||||
wcstombs_s(&converted, CStr, len, g_argv[i], _TRUNCATE);
|
wcstombs_s(&converted, CStr, len, g_argv[i], _TRUNCATE);
|
||||||
std::string func_args = CStr;
|
std::string func_args = CStr;
|
||||||
|
|
||||||
//调用TsHttpRpc类里的_rpc_func_run_client启动客户端
|
//调用TsHttpRpc类里的_rpc_func_run_client启动客户端
|
||||||
TsHttpRpc ts_http_rpc;
|
TsHttpRpc ts_http_rpc;
|
||||||
ex_astr buf;
|
ex_astr buf;
|
||||||
ts_http_rpc._rpc_func_url_protocol(func_args, buf);
|
ts_http_rpc._rpc_func_url_protocol(func_args, buf);
|
||||||
|
|
|
@ -17,22 +17,22 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
1.
|
1.
|
||||||
SecureCRT支持设置标签页的标题,命令行参数 /N "tab name"就可以
|
SecureCRT支持设置标签页的标题,命令行参数 /N "tab name"就可以
|
||||||
Example:
|
Example:
|
||||||
To launch a new Telnet session, displaying the name "Houston, TX" on the tab, use the following:
|
To launch a new Telnet session, displaying the name "Houston, TX" on the tab, use the following:
|
||||||
/T /N "Houston, TX" /TELNET 192.168.0.6
|
/T /N "Houston, TX" /TELNET 192.168.0.6
|
||||||
|
|
||||||
2.
|
2.
|
||||||
多次启动的SecureCRT放到一个窗口的不同标签页中,使用参数: /T
|
多次启动的SecureCRT放到一个窗口的不同标签页中,使用参数: /T
|
||||||
SecureCRT.exe /T /N "TP#ssh://192.168.1.3" /SSH2 /L root /PASSWORD 1234 120.26.109.25
|
SecureCRT.exe /T /N "TP#ssh://192.168.1.3" /SSH2 /L root /PASSWORD 1234 120.26.109.25
|
||||||
|
|
||||||
3.
|
3.
|
||||||
telnet客户端的启动:
|
telnet客户端的启动:
|
||||||
putty.exe telnet://administrator@127.0.0.1:52389
|
putty.exe telnet://administrator@127.0.0.1:52389
|
||||||
如果是SecureCRT,则需要
|
如果是SecureCRT,则需要
|
||||||
SecureCRT.exe /T /N "TP#telnet://192.168.1.3" /SCRIPT X:\path\to\startup.vbs /TELNET 127.0.0.1 52389
|
SecureCRT.exe /T /N "TP#telnet://192.168.1.3" /SCRIPT X:\path\to\startup.vbs /TELNET 127.0.0.1 52389
|
||||||
其中,startup.vbs的内容为:
|
其中,startup.vbs的内容为:
|
||||||
---------文件开始---------
|
---------文件开始---------
|
||||||
#$language = "VBScript"
|
#$language = "VBScript"
|
||||||
#$interface = "1.0"
|
#$interface = "1.0"
|
||||||
Sub main
|
Sub main
|
||||||
|
@ -41,11 +41,11 @@ Sub main
|
||||||
crt.Screen.Send "SESSION-ID" & VbCr
|
crt.Screen.Send "SESSION-ID" & VbCr
|
||||||
crt.Screen.Synchronous = False
|
crt.Screen.Synchronous = False
|
||||||
End Sub
|
End Sub
|
||||||
---------文件结束---------
|
---------文件结束---------
|
||||||
|
|
||||||
4. 为了让putty的窗口标签显示正常的IP,可以尝试在连接成功后,主动向服务端发送下列命令:
|
4. 为了让putty的窗口标签显示正常的IP,可以尝试在连接成功后,主动向服务端发送下列命令:
|
||||||
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@192.168.1.2: \w\a\]$PS1"
|
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@192.168.1.2: \w\a\]$PS1"
|
||||||
手工测试了,ubuntu服务器可以,不知道是否能够支持所有的Linux。SecureCRT对此表示忽略。
|
手工测试了,ubuntu服务器可以,不知道是否能够支持所有的Linux。SecureCRT对此表示忽略。
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define RDP_CLIENT_SYSTEM_BUILTIN
|
//#define RDP_CLIENT_SYSTEM_BUILTIN
|
||||||
|
@ -210,7 +210,7 @@ bool calc_psw51b(const char* password, std::string& ret) {
|
||||||
|
|
||||||
bool isDegital(std::string str) {
|
bool isDegital(std::string str) {
|
||||||
for (int i = 0; i < str.size(); i++) {
|
for (int i = 0; i < str.size(); i++) {
|
||||||
if (str.at(i) == '-' && str.size() > 1) // 有可能出现负数
|
if (str.at(i) == '-' && str.size() > 1) // 有可能出现负数
|
||||||
continue;
|
continue;
|
||||||
if (str.at(i) > '9' || str.at(i) < '0')
|
if (str.at(i) > '9' || str.at(i) < '0')
|
||||||
return false;
|
return false;
|
||||||
|
@ -378,7 +378,7 @@ void TsHttpRpc::_mg_event_handler(struct mg_connection *nc, int ev, void *ev_dat
|
||||||
bool b_is_index = false;
|
bool b_is_index = false;
|
||||||
|
|
||||||
if (uri == "/") {
|
if (uri == "/") {
|
||||||
ex_wstr page = L"<html lang=\"zh_CN\"><head><meta charset=\"utf-8\"/><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><title>Teleport助手</title>\n<style type=\"text/css\">\n.box{padding:20px;margin:40px;border:1px solid #78b17c;background-color:#e4ffe5;}\n</style>\n</head><body><div class=\"box\">Teleport助手工作正常!</div></body></html>";
|
ex_wstr page = L"<html lang=\"zh_CN\"><head><meta charset=\"utf-8\"/><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><title>Teleport助手</title>\n<style type=\"text/css\">\n.box{padding:20px;margin:40px;border:1px solid #78b17c;background-color:#e4ffe5;}\n</style>\n</head><body><div class=\"box\">Teleport助手工作正常!</div></body></html>";
|
||||||
ex_wstr2astr(page, ret_buf, EX_CODEPAGE_UTF8);
|
ex_wstr2astr(page, ret_buf, EX_CODEPAGE_UTF8);
|
||||||
|
|
||||||
mg_printf(nc, "HTTP/1.0 200 OK\r\nAccess-Control-Allow-Origin: *\r\nContent-Length: %d\r\nContent-Type: text/html\r\n\r\n%s", ret_buf.size() - 1, &ret_buf[0]);
|
mg_printf(nc, "HTTP/1.0 200 OK\r\nAccess-Control-Allow-Origin: *\r\nContent-Length: %d\r\nContent-Type: text/html\r\n\r\n%s", ret_buf.size() - 1, &ret_buf[0]);
|
||||||
|
@ -475,7 +475,7 @@ int TsHttpRpc::_parse_request(struct http_message* req, ex_astr& func_cmd, ex_as
|
||||||
|
|
||||||
ex_astrs strs;
|
ex_astrs strs;
|
||||||
|
|
||||||
size_t pos_start = 1; // 跳过第一个字节,一定是 '/'
|
size_t pos_start = 1; // 跳过第一个字节,一定是 '/'
|
||||||
|
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
for (i = pos_start; i < req->uri.len; ++i) {
|
for (i = pos_start; i < req->uri.len; ++i) {
|
||||||
|
@ -485,7 +485,7 @@ int TsHttpRpc::_parse_request(struct http_message* req, ex_astr& func_cmd, ex_as
|
||||||
tmp_uri.assign(req->uri.p + pos_start, i - pos_start);
|
tmp_uri.assign(req->uri.p + pos_start, i - pos_start);
|
||||||
strs.push_back(tmp_uri);
|
strs.push_back(tmp_uri);
|
||||||
}
|
}
|
||||||
pos_start = i + 1; // 跳过当前找到的分隔符
|
pos_start = i + 1; // 跳过当前找到的分隔符
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pos_start < req->uri.len) {
|
if (pos_start < req->uri.len) {
|
||||||
|
@ -519,7 +519,7 @@ int TsHttpRpc::_parse_request(struct http_message* req, ex_astr& func_cmd, ex_as
|
||||||
}
|
}
|
||||||
|
|
||||||
if (func_args.length() > 0) {
|
if (func_args.length() > 0) {
|
||||||
// 将参数进行 url-decode 解码
|
// 将参数进行 url-decode 解码
|
||||||
int len = func_args.length() * 2;
|
int len = func_args.length() * 2;
|
||||||
ex_chars sztmp;
|
ex_chars sztmp;
|
||||||
sztmp.resize(len);
|
sztmp.resize(len);
|
||||||
|
@ -555,7 +555,7 @@ void TsHttpRpc::_process_js_request(const ex_astr& func_cmd, const ex_astr& func
|
||||||
}
|
}
|
||||||
|
|
||||||
void TsHttpRpc::_create_json_ret(ex_astr& buf, int errcode) {
|
void TsHttpRpc::_create_json_ret(ex_astr& buf, int errcode) {
|
||||||
// 返回: {"code":123}
|
// 返回: {"code":123}
|
||||||
|
|
||||||
Json::FastWriter jr_writer;
|
Json::FastWriter jr_writer;
|
||||||
Json::Value jr_root;
|
Json::Value jr_root;
|
||||||
|
@ -571,8 +571,8 @@ void TsHttpRpc::_create_json_ret(ex_astr& buf, Json::Value& jr_root) {
|
||||||
|
|
||||||
void TsHttpRpc::_rpc_func_url_protocol(const ex_astr& args, ex_astr& buf)
|
void TsHttpRpc::_rpc_func_url_protocol(const ex_astr& args, ex_astr& buf)
|
||||||
{
|
{
|
||||||
//处理urlprotocol调用访式
|
//处理urlprotocol调用访式
|
||||||
// 将参数进行 url-decode 解码
|
// 将参数进行 url-decode 解码
|
||||||
std::string func_args = args;
|
std::string func_args = args;
|
||||||
if (func_args.length() > 0)
|
if (func_args.length() > 0)
|
||||||
{
|
{
|
||||||
|
@ -586,17 +586,17 @@ void TsHttpRpc::_rpc_func_url_protocol(const ex_astr& args, ex_astr& buf)
|
||||||
func_args = &sztmp[0];
|
func_args = &sztmp[0];
|
||||||
}
|
}
|
||||||
EXLOGD(("%s\n"), func_args.c_str());
|
EXLOGD(("%s\n"), func_args.c_str());
|
||||||
//处理传参过来的teleport://{}/,只保留参数部份
|
//处理传参过来的teleport://{}/,只保留参数部份
|
||||||
std::string urlproto_appname = TP_URLPROTO_APP_NAME;
|
std::string urlproto_appname = TP_URLPROTO_APP_NAME;
|
||||||
urlproto_appname += "://{";
|
urlproto_appname += "://{";
|
||||||
func_args.erase(0, urlproto_appname.length());//去除第一个URLPROTO_APP_NAME以及://字符
|
func_args.erase(0, urlproto_appname.length());//去除第一个URLPROTO_APP_NAME以及://字符
|
||||||
int pos = func_args.length() - 1;
|
int pos = func_args.length() - 1;
|
||||||
if (func_args.substr(pos, 1) == "/")
|
if (func_args.substr(pos, 1) == "/")
|
||||||
func_args.erase(pos - 1, 2);//去除最后一个}/字符
|
func_args.erase(pos - 1, 2);//去除最后一个}/字符
|
||||||
else
|
else
|
||||||
func_args.erase(pos, 1);
|
func_args.erase(pos, 1);
|
||||||
|
|
||||||
//由于命令行、ie浏览器参数传递时会把原来json结构中的"号去掉,需要重新格式化参数为json格式
|
//由于命令行、ie浏览器参数传递时会把原来json结构中的"号去掉,需要重新格式化参数为json格式
|
||||||
if (func_args.find("\"", 0) == std::string::npos) {
|
if (func_args.find("\"", 0) == std::string::npos) {
|
||||||
std::vector<std::string> strv;
|
std::vector<std::string> strv;
|
||||||
SplitString(func_args, strv, ",");
|
SplitString(func_args, strv, ",");
|
||||||
|
@ -617,16 +617,16 @@ void TsHttpRpc::_rpc_func_url_protocol(const ex_astr& args, ex_astr& buf)
|
||||||
}
|
}
|
||||||
func_args = "{" + func_args + "}";
|
func_args = "{" + func_args + "}";
|
||||||
EXLOGD(("%s\n"), func_args.c_str());
|
EXLOGD(("%s\n"), func_args.c_str());
|
||||||
//调用TsHttpRpc类里的_rpc_func_run_client启动客户端
|
//调用TsHttpRpc类里的_rpc_func_run_client启动客户端
|
||||||
_rpc_func_run_client(func_args, buf);
|
_rpc_func_run_client(func_args, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) {
|
void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) {
|
||||||
// 入参:{"ip":"192.168.5.11","port":22,"uname":"root","uauth":"abcdefg","authmode":1,"protocol":2}
|
// 入参:{"ip":"192.168.5.11","port":22,"uname":"root","uauth":"abcdefg","authmode":1,"protocol":2}
|
||||||
// authmode: 1=password, 2=private-key
|
// authmode: 1=password, 2=private-key
|
||||||
// protocol: 1=rdp, 2=ssh
|
// protocol: 1=rdp, 2=ssh
|
||||||
// SSH返回: {"code":0, "data":{"sid":"0123abcde"}}
|
// SSH返回: {"code":0, "data":{"sid":"0123abcde"}}
|
||||||
// RDP返回: {"code":0, "data":{"sid":"0123abcde0A"}}
|
// RDP返回: {"code":0, "data":{"sid":"0123abcde0A"}}
|
||||||
|
|
||||||
Json::Reader jreader;
|
Json::Reader jreader;
|
||||||
Json::Value jsRoot;
|
Json::Value jsRoot;
|
||||||
|
@ -640,7 +640,7 @@ void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断参数是否正确
|
// 判断参数是否正确
|
||||||
if (!jsRoot["teleport_ip"].isString()
|
if (!jsRoot["teleport_ip"].isString()
|
||||||
|| !jsRoot["teleport_port"].isNumeric() || !jsRoot["remote_host_ip"].isString()
|
|| !jsRoot["teleport_port"].isNumeric() || !jsRoot["remote_host_ip"].isString()
|
||||||
|| !jsRoot["session_id"].isString() || !jsRoot["protocol_type"].isNumeric() || !jsRoot["protocol_sub_type"].isNumeric()
|
|| !jsRoot["session_id"].isString() || !jsRoot["protocol_type"].isNumeric() || !jsRoot["protocol_sub_type"].isNumeric()
|
||||||
|
@ -749,7 +749,7 @@ void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) {
|
||||||
int iHeight = GetSystemMetrics(SM_CYSCREEN);
|
int iHeight = GetSystemMetrics(SM_CYSCREEN);
|
||||||
|
|
||||||
if (rdp_w == 0 || rdp_h == 0) {
|
if (rdp_w == 0 || rdp_h == 0) {
|
||||||
//全屏
|
//全屏
|
||||||
width = iWidth;
|
width = iWidth;
|
||||||
higth = iHeight;
|
higth = iHeight;
|
||||||
display = 2;
|
display = 2;
|
||||||
|
@ -818,7 +818,7 @@ void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) {
|
||||||
fclose(f);
|
fclose(f);
|
||||||
ex_astr2wstr(sz_file_name, tmp_rdp_file);
|
ex_astr2wstr(sz_file_name, tmp_rdp_file);
|
||||||
|
|
||||||
// 变量替换
|
// 变量替换
|
||||||
ex_replace_all(w_exe_path, _T("{tmp_rdp_file}"), tmp_rdp_file);
|
ex_replace_all(w_exe_path, _T("{tmp_rdp_file}"), tmp_rdp_file);
|
||||||
} else if (g_cfg.rdp_name == L"freerdp") {
|
} else if (g_cfg.rdp_name == L"freerdp") {
|
||||||
w_exe_path += L"{size} {console} {clipboard} {drives} ";
|
w_exe_path += L"{size} {console} {clipboard} {drives} ";
|
||||||
|
@ -827,7 +827,7 @@ void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) {
|
||||||
ex_wstr w_screen;
|
ex_wstr w_screen;
|
||||||
|
|
||||||
if (rdp_w == 0 || rdp_h == 0) {
|
if (rdp_w == 0 || rdp_h == 0) {
|
||||||
//全屏
|
//全屏
|
||||||
w_screen = _T("/f");
|
w_screen = _T("/f");
|
||||||
} else {
|
} else {
|
||||||
char sz_size[64] = { 0 };
|
char sz_size[64] = { 0 };
|
||||||
|
@ -853,10 +853,10 @@ void TsHttpRpc::_rpc_func_run_client(const ex_astr& func_args, ex_astr& buf) {
|
||||||
|
|
||||||
w_sid = L"02" + w_sid;
|
w_sid = L"02" + w_sid;
|
||||||
|
|
||||||
w_exe_path += L" /gdi:sw"; // 使用软件渲染,gdi:hw使用硬件加速,但是会出现很多黑块(录像回放时又是正常的!)
|
w_exe_path += L" /gdi:sw"; // 使用软件渲染,gdi:hw使用硬件加速,但是会出现很多黑块(录像回放时又是正常的!)
|
||||||
w_exe_path += L" -grab-keyboard"; // [new style] 防止启动FreeRDP后,失去本地键盘响应,必须得先最小化一下FreeRDP窗口(不过貌似不起作用)
|
w_exe_path += L" -grab-keyboard"; // [new style] 防止启动FreeRDP后,失去本地键盘响应,必须得先最小化一下FreeRDP窗口(不过貌似不起作用)
|
||||||
|
|
||||||
// 变量替换
|
// 变量替换
|
||||||
ex_replace_all(w_exe_path, _T("{size}"), w_screen);
|
ex_replace_all(w_exe_path, _T("{size}"), w_screen);
|
||||||
|
|
||||||
if (flag_console && rdp_console)
|
if (flag_console && rdp_console)
|
||||||
|
@ -941,7 +941,7 @@ void TsHttpRpc::_rpc_func_rdp_play(const ex_astr& func_args, ex_astr& buf) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断参数是否正确
|
// 判断参数是否正确
|
||||||
if (!jsRoot["rid"].isInt()
|
if (!jsRoot["rid"].isInt()
|
||||||
|| !jsRoot["web"].isString()
|
|| !jsRoot["web"].isString()
|
||||||
|| !jsRoot["sid"].isString()
|
|| !jsRoot["sid"].isString()
|
||||||
|
@ -965,9 +965,9 @@ void TsHttpRpc::_rpc_func_rdp_play(const ex_astr& func_args, ex_astr& buf) {
|
||||||
char cmd_args[1024] = { 0 };
|
char cmd_args[1024] = { 0 };
|
||||||
ex_strformat(cmd_args, 1023, "%d \"%s\" \"%09d-%s-%s-%s-%s\"", rid, a_sid.c_str(), rid, a_user.c_str(), a_acc.c_str(), a_host.c_str(), a_start.c_str());
|
ex_strformat(cmd_args, 1023, "%d \"%s\" \"%09d-%s-%s-%s-%s\"", rid, a_sid.c_str(), rid, a_user.c_str(), a_acc.c_str(), a_host.c_str(), a_start.c_str());
|
||||||
|
|
||||||
// TODO: 理论上不应该由助手来提前做域名转为IP这样的操作,而是应该将域名发送给播放器,由播放器自己去处理
|
// TODO: 理论上不应该由助手来提前做域名转为IP这样的操作,而是应该将域名发送给播放器,由播放器自己去处理
|
||||||
// 但是在改造FreeRDP制作的播放器时,为了从服务器上下载文件,使用了Mongoose库,如果传入的是域名,会出现问题(貌似是异步查询DNS的问题)
|
// 但是在改造FreeRDP制作的播放器时,为了从服务器上下载文件,使用了Mongoose库,如果传入的是域名,会出现问题(貌似是异步查询DNS的问题)
|
||||||
// 所以暂时先由助手进行域名IP转换。
|
// 所以暂时先由助手进行域名IP转换。
|
||||||
{
|
{
|
||||||
unsigned int port_i = 0;
|
unsigned int port_i = 0;
|
||||||
struct mg_str scheme, query, fragment, user_info, host, path;
|
struct mg_str scheme, query, fragment, user_info, host, path;
|
||||||
|
@ -983,7 +983,7 @@ void TsHttpRpc::_rpc_func_rdp_play(const ex_astr& func_args, ex_astr& buf) {
|
||||||
ex_astr _scheme;
|
ex_astr _scheme;
|
||||||
_scheme.assign(scheme.p, scheme.len);
|
_scheme.assign(scheme.p, scheme.len);
|
||||||
|
|
||||||
// 将host从域名转换为IP
|
// 将host从域名转换为IP
|
||||||
ex_astr str_tp_host;
|
ex_astr str_tp_host;
|
||||||
str_tp_host.assign(host.p, host.len);
|
str_tp_host.assign(host.p, host.len);
|
||||||
struct hostent *tp_host = gethostbyname(str_tp_host.c_str());
|
struct hostent *tp_host = gethostbyname(str_tp_host.c_str());
|
||||||
|
@ -1087,7 +1087,7 @@ void TsHttpRpc::_rpc_func_file_action(const ex_astr& func_args, ex_astr& buf) {
|
||||||
_create_json_ret(buf, TPE_JSON_FORMAT);
|
_create_json_ret(buf, TPE_JSON_FORMAT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 判断参数是否正确
|
// 判断参数是否正确
|
||||||
if (!jsRoot["action"].isNumeric()) {
|
if (!jsRoot["action"].isNumeric()) {
|
||||||
_create_json_ret(buf, TPE_PARAM);
|
_create_json_ret(buf, TPE_PARAM);
|
||||||
return;
|
return;
|
||||||
|
@ -1110,9 +1110,9 @@ void TsHttpRpc::_rpc_func_file_action(const ex_astr& func_args, ex_astr& buf) {
|
||||||
ZeroMemory(&ofn, sizeof(ofn));
|
ZeroMemory(&ofn, sizeof(ofn));
|
||||||
|
|
||||||
ofn.lStructSize = sizeof(ofn);
|
ofn.lStructSize = sizeof(ofn);
|
||||||
ofn.lpstrTitle = _T("选择文件");
|
ofn.lpstrTitle = _T("选择文件");
|
||||||
ofn.hwndOwner = hParent;
|
ofn.hwndOwner = hParent;
|
||||||
ofn.lpstrFilter = _T("可执行程序 (*.exe)\0*.exe\0");
|
ofn.lpstrFilter = _T("可执行程序 (*.exe)\0*.exe\0");
|
||||||
ofn.lpstrFile = wszReturnPath;
|
ofn.lpstrFile = wszReturnPath;
|
||||||
ofn.nMaxFile = MAX_PATH;
|
ofn.nMaxFile = MAX_PATH;
|
||||||
ofn.lpstrInitialDir = wsDefaultPath.c_str();
|
ofn.lpstrInitialDir = wsDefaultPath.c_str();
|
||||||
|
@ -1130,12 +1130,12 @@ void TsHttpRpc::_rpc_func_file_action(const ex_astr& func_args, ex_astr& buf) {
|
||||||
ZeroMemory(&bi, sizeof(BROWSEINFO));
|
ZeroMemory(&bi, sizeof(BROWSEINFO));
|
||||||
bi.hwndOwner = NULL;
|
bi.hwndOwner = NULL;
|
||||||
bi.pidlRoot = NULL;
|
bi.pidlRoot = NULL;
|
||||||
bi.pszDisplayName = wszReturnPath; //此参数如为NULL则不能显示对话框
|
bi.pszDisplayName = wszReturnPath; //此参数如为NULL则不能显示对话框
|
||||||
bi.lpszTitle = _T("选择目录");
|
bi.lpszTitle = _T("选择目录");
|
||||||
bi.ulFlags = BIF_RETURNONLYFSDIRS;
|
bi.ulFlags = BIF_RETURNONLYFSDIRS;
|
||||||
bi.lpfn = NULL;
|
bi.lpfn = NULL;
|
||||||
bi.iImage = 0; //初始化入口参数bi结束
|
bi.iImage = 0; //初始化入口参数bi结束
|
||||||
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框
|
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框
|
||||||
if (pIDList) {
|
if (pIDList) {
|
||||||
ret = true;
|
ret = true;
|
||||||
SHGetPathFromIDList(pIDList, wszReturnPath);
|
SHGetPathFromIDList(pIDList, wszReturnPath);
|
||||||
|
|
|
@ -15,28 +15,28 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
//=================================================================
|
//=================================================================
|
||||||
接口使用说明:
|
接口使用说明:
|
||||||
|
|
||||||
本程序启动后,监听 localhost:50022,接收http请求,请求格式要求如下:
|
本程序启动后,监听 localhost:50022,接收http请求,请求格式要求如下:
|
||||||
|
|
||||||
GET 方式
|
GET 方式
|
||||||
http://localhost:50022/method/json_param
|
http://localhost:50022/method/json_param
|
||||||
其中json_param是使用url_encode进行编码后的json格式字符串
|
其中json_param是使用url_encode进行编码后的json格式字符串
|
||||||
|
|
||||||
POST 方式
|
POST 方式
|
||||||
http://localhost:50022/method
|
http://localhost:50022/method
|
||||||
post的数据区域是json_param
|
post的数据区域是json_param
|
||||||
|
|
||||||
其中,URI分为三个部分:
|
其中,URI分为三个部分:
|
||||||
method 请求执行的任务方法。
|
method 请求执行的任务方法。
|
||||||
json_param 此任务方法的附加参数,如果没有附加参数,这部分可以省略。
|
json_param 此任务方法的附加参数,如果没有附加参数,这部分可以省略。
|
||||||
|
|
||||||
返回格式:执行结束后,返回一个json格式的字符串给请求者,格式如下:
|
返回格式:执行结束后,返回一个json格式的字符串给请求者,格式如下:
|
||||||
|
|
||||||
{"code":0,"data":varb}
|
{"code":0,"data":varb}
|
||||||
|
|
||||||
其中,code是必有的,其值是一个错误编码,0表示成功。如果失败,则可能没有data域。操作成功时,data域就是
|
其中,code是必有的,其值是一个错误编码,0表示成功。如果失败,则可能没有data域。操作成功时,data域就是
|
||||||
操作的返回数据,其格式根据具体执行的任务方法不同而不同。
|
操作的返回数据,其格式根据具体执行的任务方法不同而不同。
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -1,34 +1,34 @@
|
||||||
#ifndef __TELEPORT_CONST_H__
|
#ifndef __TELEPORT_CONST_H__
|
||||||
#define __TELEPORT_CONST_H__
|
#define __TELEPORT_CONST_H__
|
||||||
|
|
||||||
// 注意同步更新三个不同语言的const文件
|
// 注意同步更新三个不同语言的const文件
|
||||||
|
|
||||||
// 本文件设定teleport各个模块之间通讯时的错误值(JSON数据),包括:
|
// 本文件设定teleport各个模块之间通讯时的错误值(JSON数据),包括:
|
||||||
// - WEB界面与助手
|
// - WEB界面与助手
|
||||||
// - WEB界面与WEB后台
|
// - WEB界面与WEB后台
|
||||||
// - WEB后台与CORE核心服务
|
// - WEB后台与CORE核心服务
|
||||||
|
|
||||||
//=======================================================
|
//=======================================================
|
||||||
// Urlprotocol相关
|
// Urlprotocol相关
|
||||||
//=======================================================
|
//=======================================================
|
||||||
#define TP_URLPROTO_APP_NAME "teleport"
|
#define TP_URLPROTO_APP_NAME "teleport"
|
||||||
|
|
||||||
//=======================================================
|
//=======================================================
|
||||||
// 远程连接认证方式
|
// 远程连接认证方式
|
||||||
//=======================================================
|
//=======================================================
|
||||||
#define TP_AUTH_TYPE_NONE 0
|
#define TP_AUTH_TYPE_NONE 0
|
||||||
#define TP_AUTH_TYPE_PASSWORD 1
|
#define TP_AUTH_TYPE_PASSWORD 1
|
||||||
#define TP_AUTH_TYPE_PRIVATE_KEY 2
|
#define TP_AUTH_TYPE_PRIVATE_KEY 2
|
||||||
|
|
||||||
//=======================================================
|
//=======================================================
|
||||||
// 远程连接协议
|
// 远程连接协议
|
||||||
//=======================================================
|
//=======================================================
|
||||||
#define TP_PROTOCOL_TYPE_RDP 1
|
#define TP_PROTOCOL_TYPE_RDP 1
|
||||||
#define TP_PROTOCOL_TYPE_SSH 2
|
#define TP_PROTOCOL_TYPE_SSH 2
|
||||||
#define TP_PROTOCOL_TYPE_TELNET 3
|
#define TP_PROTOCOL_TYPE_TELNET 3
|
||||||
|
|
||||||
//=======================================================
|
//=======================================================
|
||||||
// 远程连接子协议
|
// 远程连接子协议
|
||||||
//=======================================================
|
//=======================================================
|
||||||
#define TP_PROTOCOL_TYPE_RDP_DESKTOP 100
|
#define TP_PROTOCOL_TYPE_RDP_DESKTOP 100
|
||||||
#define TP_PROTOCOL_TYPE_SSH_SHELL 200
|
#define TP_PROTOCOL_TYPE_SSH_SHELL 200
|
||||||
|
@ -37,114 +37,114 @@
|
||||||
|
|
||||||
|
|
||||||
//=======================================================
|
//=======================================================
|
||||||
// 远程主机操作系统
|
// 远程主机操作系统
|
||||||
//=======================================================
|
//=======================================================
|
||||||
#define TP_OS_TYPE_WINDOWS 1
|
#define TP_OS_TYPE_WINDOWS 1
|
||||||
#define TP_OS_TYPE_LINUX 2
|
#define TP_OS_TYPE_LINUX 2
|
||||||
|
|
||||||
//=======================================================
|
//=======================================================
|
||||||
// 远程连接会话状态
|
// 远程连接会话状态
|
||||||
//=======================================================
|
//=======================================================
|
||||||
#define TP_SESS_STAT_RUNNING 0 // 会话开始了,正在连接
|
#define TP_SESS_STAT_RUNNING 0 // 会话开始了,正在连接
|
||||||
#define TP_SESS_STAT_END 9999 // 会话成功结束
|
#define TP_SESS_STAT_END 9999 // 会话成功结束
|
||||||
#define TP_SESS_STAT_ERR_AUTH_DENIED 1 // 会话结束,因为认证失败
|
#define TP_SESS_STAT_ERR_AUTH_DENIED 1 // 会话结束,因为认证失败
|
||||||
#define TP_SESS_STAT_ERR_CONNECT 2 // 会话结束,因为无法连接到远程主机
|
#define TP_SESS_STAT_ERR_CONNECT 2 // 会话结束,因为无法连接到远程主机
|
||||||
#define TP_SESS_STAT_ERR_BAD_SSH_KEY 3 // 会话结束,因为无法识别SSH私钥
|
#define TP_SESS_STAT_ERR_BAD_SSH_KEY 3 // 会话结束,因为无法识别SSH私钥
|
||||||
#define TP_SESS_STAT_ERR_INTERNAL 4 // 会话结束,因为内部错误
|
#define TP_SESS_STAT_ERR_INTERNAL 4 // 会话结束,因为内部错误
|
||||||
#define TP_SESS_STAT_ERR_UNSUPPORT_PROTOCOL 5 // 会话结束,因为协议不支持(RDP)
|
#define TP_SESS_STAT_ERR_UNSUPPORT_PROTOCOL 5 // 会话结束,因为协议不支持(RDP)
|
||||||
#define TP_SESS_STAT_ERR_BAD_PKG 6 // 会话结束,因为收到错误的报文
|
#define TP_SESS_STAT_ERR_BAD_PKG 6 // 会话结束,因为收到错误的报文
|
||||||
#define TP_SESS_STAT_ERR_RESET 7 // 会话结束,因为teleport核心服务重置了
|
#define TP_SESS_STAT_ERR_RESET 7 // 会话结束,因为teleport核心服务重置了
|
||||||
#define TP_SESS_STAT_ERR_IO 8 // 会话结束,因为网络中断
|
#define TP_SESS_STAT_ERR_IO 8 // 会话结束,因为网络中断
|
||||||
#define TP_SESS_STAT_ERR_SESSION 9 // 会话结束,因为无效的会话ID
|
#define TP_SESS_STAT_ERR_SESSION 9 // 会话结束,因为无效的会话ID
|
||||||
#define TP_SESS_STAT_ERR_AUTH_TYPE 10 // 会话结束,因为不被允许的认证方式
|
#define TP_SESS_STAT_ERR_AUTH_TYPE 10 // 会话结束,因为不被允许的认证方式
|
||||||
#define TP_SESS_STAT_STARTED 100 // 已经连接成功了,开始记录录像了
|
#define TP_SESS_STAT_STARTED 100 // 已经连接成功了,开始记录录像了
|
||||||
#define TP_SESS_STAT_ERR_START_INTERNAL 104 // 会话结束,因为内部错误
|
#define TP_SESS_STAT_ERR_START_INTERNAL 104 // 会话结束,因为内部错误
|
||||||
#define TP_SESS_STAT_ERR_START_BAD_PKG 106 // 会话结束,因为收到错误的报文
|
#define TP_SESS_STAT_ERR_START_BAD_PKG 106 // 会话结束,因为收到错误的报文
|
||||||
#define TP_SESS_STAT_ERR_START_RESET 107 // 会话结束,因为teleport核心服务重置了
|
#define TP_SESS_STAT_ERR_START_RESET 107 // 会话结束,因为teleport核心服务重置了
|
||||||
#define TP_SESS_STAT_ERR_START_IO 108 // 会话结束,因为网络中断
|
#define TP_SESS_STAT_ERR_START_IO 108 // 会话结束,因为网络中断
|
||||||
|
|
||||||
|
|
||||||
//=======================================================
|
//=======================================================
|
||||||
// 授权标记
|
// 授权标记
|
||||||
//=======================================================
|
//=======================================================
|
||||||
#define TP_FLAG_ALL 0xFFFFFFFF
|
#define TP_FLAG_ALL 0xFFFFFFFF
|
||||||
// 会话记录相关
|
// 会话记录相关
|
||||||
#define TP_FLAG_RECORD_REPLAY 0x00000001 // 允许记录历史(录像回放)
|
#define TP_FLAG_RECORD_REPLAY 0x00000001 // 允许记录历史(录像回放)
|
||||||
#define TP_FLAG_RECORD_REAL_TIME 0x00000002 // 允许实时监控
|
#define TP_FLAG_RECORD_REAL_TIME 0x00000002 // 允许实时监控
|
||||||
// RDP相关
|
// RDP相关
|
||||||
#define TP_FLAG_RDP_DESKTOP 0x00000001 // 允许远程桌面
|
#define TP_FLAG_RDP_DESKTOP 0x00000001 // 允许远程桌面
|
||||||
#define TP_FLAG_RDP_CLIPBOARD 0x00000002 // 允许剪贴板
|
#define TP_FLAG_RDP_CLIPBOARD 0x00000002 // 允许剪贴板
|
||||||
#define TP_FLAG_RDP_DISK 0x00000004 // 允许磁盘映射
|
#define TP_FLAG_RDP_DISK 0x00000004 // 允许磁盘映射
|
||||||
#define TP_FLAG_RDP_APP 0x00000008 // 允许远程APP(尚未实现)
|
#define TP_FLAG_RDP_APP 0x00000008 // 允许远程APP(尚未实现)
|
||||||
#define TP_FLAG_RDP_CONSOLE 0x00001000 //允许连接到管理员会话(RDP的console选项)
|
#define TP_FLAG_RDP_CONSOLE 0x00001000 //允许连接到管理员会话(RDP的console选项)
|
||||||
// SSH相关
|
// SSH相关
|
||||||
#define TP_FLAG_SSH_SHELL 0x00000001 // 允许SHELL
|
#define TP_FLAG_SSH_SHELL 0x00000001 // 允许SHELL
|
||||||
#define TP_FLAG_SSH_SFTP 0x00000002 // 允许SFTP
|
#define TP_FLAG_SSH_SFTP 0x00000002 // 允许SFTP
|
||||||
#define TP_FLAG_SSH_X11 0x00000004 // 允许X11转发(尚未实现)
|
#define TP_FLAG_SSH_X11 0x00000004 // 允许X11转发(尚未实现)
|
||||||
#define TP_FLAG_SSH_EXEC 0x00000008 // 允许exec执行远程命令(尚未实现)
|
#define TP_FLAG_SSH_EXEC 0x00000008 // 允许exec执行远程命令(尚未实现)
|
||||||
#define TP_FLAG_SSH_TUNNEL 0x00000010 // allow ssh tunnel. (not impl.)
|
#define TP_FLAG_SSH_TUNNEL 0x00000010 // allow ssh tunnel. (not impl.)
|
||||||
|
|
||||||
|
|
||||||
//=======================================================
|
//=======================================================
|
||||||
// 错误值
|
// 错误值
|
||||||
//=======================================================
|
//=======================================================
|
||||||
#define TPE_OK 0 // 成功
|
#define TPE_OK 0 // 成功
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
// 通用错误值
|
// 通用错误值
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
#define TPE_NEED_MORE_DATA 1 // 需要更多数据(不一定是错误)
|
#define TPE_NEED_MORE_DATA 1 // 需要更多数据(不一定是错误)
|
||||||
#define TPE_NEED_LOGIN 2 // 需要登录
|
#define TPE_NEED_LOGIN 2 // 需要登录
|
||||||
#define TPE_PRIVILEGE 3 // 没有操作权限
|
#define TPE_PRIVILEGE 3 // 没有操作权限
|
||||||
#define TPE_NOT_IMPLEMENT 7 // 功能尚未实现
|
#define TPE_NOT_IMPLEMENT 7 // 功能尚未实现
|
||||||
#define TPE_EXISTS 8 // 目标已经存在
|
#define TPE_EXISTS 8 // 目标已经存在
|
||||||
#define TPE_NOT_EXISTS 9 // 目标不存在
|
#define TPE_NOT_EXISTS 9 // 目标不存在
|
||||||
|
|
||||||
// 100~299是通用错误值
|
// 100~299是通用错误值
|
||||||
|
|
||||||
#define TPE_FAILED 100 // 内部错误
|
#define TPE_FAILED 100 // 内部错误
|
||||||
#define TPE_NETWORK 101 // 网络错误
|
#define TPE_NETWORK 101 // 网络错误
|
||||||
#define TPE_DATABASE 102 // 数据库操作失败
|
#define TPE_DATABASE 102 // 数据库操作失败
|
||||||
|
|
||||||
// HTTP请求相关错误
|
// HTTP请求相关错误
|
||||||
#define TPE_HTTP_METHOD 120 // 无效的请求方法(不是GET/POST等),或者错误的请求方法(例如需要POST,却使用GET方式请求)
|
#define TPE_HTTP_METHOD 120 // 无效的请求方法(不是GET/POST等),或者错误的请求方法(例如需要POST,却使用GET方式请求)
|
||||||
#define TPE_HTTP_URL_ENCODE 121 // URL编码错误(无法解码)
|
#define TPE_HTTP_URL_ENCODE 121 // URL编码错误(无法解码)
|
||||||
//#define TPE_HTTP_URI 122 // 无效的URI
|
//#define TPE_HTTP_URI 122 // 无效的URI
|
||||||
|
|
||||||
#define TPE_UNKNOWN_CMD 124 // 未知的命令
|
#define TPE_UNKNOWN_CMD 124 // 未知的命令
|
||||||
#define TPE_JSON_FORMAT 125 // 错误的JSON格式(需要JSON格式数据,但是却无法按JSON格式解码)
|
#define TPE_JSON_FORMAT 125 // 错误的JSON格式(需要JSON格式数据,但是却无法按JSON格式解码)
|
||||||
#define TPE_PARAM 126 // 参数错误
|
#define TPE_PARAM 126 // 参数错误
|
||||||
#define TPE_DATA 127 // 数据错误
|
#define TPE_DATA 127 // 数据错误
|
||||||
|
|
||||||
// #define TPE_OPENFILE_ERROR 0x1007 // 无法打开文件
|
// #define TPE_OPENFILE_ERROR 0x1007 // 无法打开文件
|
||||||
// #define TPE_GETTEMPPATH_ERROR 0x1007
|
// #define TPE_GETTEMPPATH_ERROR 0x1007
|
||||||
#define TPE_OPENFILE 300
|
#define TPE_OPENFILE 300
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
// WEB服务专用错误值
|
// WEB服务专用错误值
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
#define TPE_CAPTCHA_EXPIRED 10000 // 验证码已过期
|
#define TPE_CAPTCHA_EXPIRED 10000 // 验证码已过期
|
||||||
#define TPE_CAPTCHA_MISMATCH 10001 // 验证码错误
|
#define TPE_CAPTCHA_MISMATCH 10001 // 验证码错误
|
||||||
#define TPE_OATH_MISMATCH 10002 // 身份验证器动态验证码错误
|
#define TPE_OATH_MISMATCH 10002 // 身份验证器动态验证码错误
|
||||||
#define TPE_SYS_MAINTENANCE 10003 // 系统维护中
|
#define TPE_SYS_MAINTENANCE 10003 // 系统维护中
|
||||||
|
|
||||||
#define TPE_USER_LOCKED 10100 // 用户已经被锁定(连续多次错误密码)
|
#define TPE_USER_LOCKED 10100 // 用户已经被锁定(连续多次错误密码)
|
||||||
#define TPE_USER_DISABLED 10101 // 用户已经被禁用
|
#define TPE_USER_DISABLED 10101 // 用户已经被禁用
|
||||||
#define TPE_USER_AUTH 10102 // 身份验证失败
|
#define TPE_USER_AUTH 10102 // 身份验证失败
|
||||||
|
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
// 助手程序专用错误值
|
// 助手程序专用错误值
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
#define TPE_NO_ASSIST 100000 // 未能检测到助手程序
|
#define TPE_NO_ASSIST 100000 // 未能检测到助手程序
|
||||||
#define TPE_OLD_ASSIST 100001 // 助手程序版本太低
|
#define TPE_OLD_ASSIST 100001 // 助手程序版本太低
|
||||||
#define TPE_START_CLIENT 100002 // 无法启动客户端程序(无法创建进程)
|
#define TPE_START_CLIENT 100002 // 无法启动客户端程序(无法创建进程)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
// 核心服务专用错误值
|
// 核心服务专用错误值
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
#define TPE_NO_CORE_SERVER 200000 // 未能检测到核心服务
|
#define TPE_NO_CORE_SERVER 200000 // 未能检测到核心服务
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -8,16 +8,16 @@
|
||||||
;
|
;
|
||||||
;==========================================================================;
|
;==========================================================================;
|
||||||
|
|
||||||
!define COMPANY_NAME "EOMSoft"
|
!define COMPANY_NAME "TP4A"
|
||||||
|
|
||||||
!define BASE_NAME "teleport-assist"
|
!define BASE_NAME "teleport-assist"
|
||||||
!define PRODUCT_NAME "Teleport-Assist"
|
!define PRODUCT_NAME "Teleport-Assist"
|
||||||
!define PRODUCT_WEBSITE "teleport.eomsoft.net"
|
!define PRODUCT_WEBSITE "tp4a.com"
|
||||||
|
|
||||||
; 产品安装包GUID
|
; 产品安装包GUID
|
||||||
!define PRODUCT_GUID "{2FFD2BF7-24C0-4AC5-BF7B-B8C7420CF694_TP_ASSIST}"
|
!define PRODUCT_GUID "{2FFD2BF7-24C0-4AC5-BF7B-B8C7420CF694_TP_ASSIST}"
|
||||||
!define PRODUCT_NAME_DESC "EOMSoft-Teleport"
|
!define PRODUCT_NAME_DESC "TP4A-Teleport"
|
||||||
!define PRODUCT_NAME_DISPLAY "Teleport by EOMSoft"
|
!define PRODUCT_NAME_DISPLAY "Teleport by TP4A"
|
||||||
|
|
||||||
!define PRODUCT_VER "3.2"
|
!define PRODUCT_VER "3.2"
|
||||||
!define FILE_VER "3.2.0.0"
|
!define FILE_VER "3.2.0.0"
|
||||||
|
|
Loading…
Reference in New Issue