dev
Apex Liu 2021-07-12 16:22:55 +08:00
parent 37b697fd8b
commit 931d4016e7
30 changed files with 380 additions and 311 deletions

2
.gitignore vendored
View File

@ -35,7 +35,6 @@ __pycache__
**/.idea/inspectionProfiles
**/.idea/codeStyles
**/.idea/dataSources
**/.idea/inspectionProfiles
**/.idea/vcs.xml
**/.idea/modules.xml
**/.idea/deployment.xml
@ -88,6 +87,7 @@ __pycache__
/server/tp_core/protocol/rdp
/client/tools/tprdp
/client/build-tp-player-*
/server/tools/tpr2mp4
# for MacOS.
.DS_Store

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.18)
MESSAGE(STATUS "operation system is ${CMAKE_SYSTEM}")
MESSAGE(STATUS "root source directory is ${PROJECT_SOURCE_DIR}")

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.18)
project(teleport)
include(CMakeCfg.txt)
@ -15,3 +15,7 @@ add_subdirectory(server/tp_core/testssh)
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/server/tp_core/protocol/rdp")
add_subdirectory(server/tp_core/protocol/rdp)
endif ()
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/server/tools/tpr2mp4")
add_subdirectory(server/tools/tpr2mp4)
endif ()

View File

@ -1,13 +0,0 @@
@echo off
rem ============================================
rem 请调整以下路径,以适配您自己的的系统环境。
rem 注意必须使用Pyhont 3.732位版本
rem 可以从这里下载:
rem https://www.python.org/ftp/python/3.7.0/python-3.7.0.exe
rem ============================================
SET PYEXEC=C:\Program Files\Python\python.exe
"%PYEXEC%" -B build/build.py %1 %2 %3 %4 %5

View File

@ -1,65 +0,0 @@
#!/bin/bash
PATH_ROOT=$(cd "$(dirname "$0")"; pwd)
function on_error()
{
echo -e "\033[01m\033[31m"
echo "==================[ !! ERROR !! ]=================="
echo ""
echo -e $1
echo ""
echo "==================================================="
echo -e "\033[0m"
exit 1
}
function build_linux
{
if [ `id -u` -eq 0 ]; then
on_error "Do not build as root."
fi
if [ ! -f "/etc/centos-release" ] ; then
on_error "Sorry, build script works on CentOS 7 only."
fi
X=$(yum list installed | grep "libffi-devel")
if [ "$X-x" = "-x" ] ; then
on_error "Need libffi-devel to build Python, try:\r\n sudo yum install libffi-devel"
fi
X=$(yum list installed | grep "zlib-devel")
if [ "$X-x" = "-x" ] ; then
on_error "Need zlib-devel to build Python, try:\r\n sudo yum install zlib-devel"
fi
PYEXEC=${PATH_ROOT}/external/linux/release/bin/python3.7
PYSTATIC=${PATH_ROOT}/external/linux/release/lib/libpython3.7m.a
if [ ! -f "${PYSTATIC}" ] ; then
echo "python static not found, now build it..."
"${PATH_ROOT}/build/build-py-static.sh"
if [ ! -f "${PYSTATIC}" ] ; then
on_error "can not build python static."
fi
fi
${PYEXEC} -B "${PATH_ROOT}/build/build.py" $@
}
function build_macos
{
python3 -B "${PATH_ROOT}/build/build.py" $@
}
SYSTEM=`uname -s`
if [ $SYSTEM = "Linux" ] ; then
build_linux $@
elif [ $SYSTEM = "Darwin" ] ; then
build_macos $@
else
echo "Unsupported platform."
fi

View File

@ -1,23 +1,21 @@
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----

View File

@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+xdLVfN5IErS1
UplYesMvkFZVBWlH2AojfJ8pSnaqfE6XeVWc/hoCpiqTSkGdoX4NLgy8cjAcvI9Z
1E4Xdcuch161F4HH68V0CZsSK7LHHjXI9SLbjSyoUL0BvDIEGG9D2Zyqy8xTiVc6
gBZBvR1pGRsh59KiRMNCPN67lT6PGTt+OxMJmh2laYBWh28Lbqx4R1nBl8/m1wZa
QFhTTz0WBrBm4/3j95bQXIUjP0kW8uFcaIg0oA3/1EM5DrVQqJfp7ePEWevToP3H
4Ny1/Wg/gWTpSiB/dgN8c3vXokWxabGJG/Oq5CWjtw9gWFyR0I/OmFh8cnWPf2vf
QFVYQnv1AgMBAAECggEAeGs2ojuns6bbGnmBAjC7dBKP7Cr2QbtE6xGHBfFS5lqA
4WxddjOPB40L4t1EfdOqVXdz4p/RbtI3SmSQxo48cBmi1nx4F1Hj2VMW52ld+AJB
wQ+7aQq73aLZK3c3uw4Rbaq3EbiCyVgwD2U6p1RQdD68ubIzauostmrlzVJvorMZ
1J0hz1gsJuH87WpkgRdp910hEYiM7eUBrOKG+K0trohVeStsjjJyV47LKxXDtf2F
yUQvpbbIgHh2mXe29+d42hio2VrB5y1/+dc7wMiPlwBPG5xpv4eW1aaIGNTsHYCO
1dy8KQirOsrGLIp0GzEej2XL/wTlHJfv3nSpYR2gIQKBgQD4I3lySzFqFUlrvZoX
F9gYKbbH81gQakoAyk68qy4ENve5g+cChHTI6cO4fW8zIeEtLs/kDdpGuV20NmaD
Pb8lcd7nONGhQ1l75aNAy978e2WuAYQ4xfMLR+8jKdTDG9ttIqhGFSNXetMGINLJ
GkCl5fWAJ4p6oKBsUy2FgESECwKBgQDE0RWNQofR0UmxMPeHtD6i3pX2j3bb0GdM
1yh8vqE1IqXJesVM//gIgSZ4n3hd93AXDQIvJ6xkdtNKbnGi5wJLf1OiYW3iSkfC
l+Lgup10CVHJpOrBLxUGYZWjY4LsEX3z3MBNW4DQ6SNmIJN7xJAAewzq0UMMGk6P
IIQ7rvT//wKBgQCqiDa+xc6ACYEb+oIbvNdWQ9TKNgMfxOx2/pJ+N2a4ns5BQNVS
dZWNPpq0AACcM3x9gN5+7MZGNL6hS4HIUHc9VLTMU9A98/tbmsZHkdT90BBhNcmY
+vG9nwJKOEVwkYSLzHW5NG3FgTPl0kkKzHABk7jVClexTxLxX3i5dx2fYQKBgCla
bRbTJcp2GO+8BCZlPsvlzMiTeDvTXAEPLBiZzTFm6EKfIxl8ptbSnAy4JQhJVyng
t9bElTo+pUJ8VjAOLbNDO4Vgxz/Gr7E5TJg/XZnl42Nk3VZd2CMRGenMnNOREU/N
0DHwye4bLi7lJVfaAw+2yw4DjfzbAiqcgGwx5JRtAoGBAPFqMyLgZGtCBLrrJVxD
kswm0gABU7l/UXS7OfLTWmfr0vDzoZEcVeBcabwmpRnsTaj1+EHcpl8kZogO4mcg
0RiT+lc2E8TfZL5c4HEr4wSLbz8FEeKwhFa6ScNUOj5vVSnsFzW1xkVEBIM8akMR
UI4+yvEjUIpuQt35cyE9K/nx
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDf3tDR3kM5solf
OA9AKlM+DzFgG9G0RzR8b91KdIwWzIk+WyyqOHEkyXX3QmykKWqE74ZTB1/iWpWk
5Z73LonGgdc9alfkP/esAUPbF1030Z7AO9Kswt9ZRFv4qEMCFkPdz5bJ5EFble2z
OVmkLcJJpvDvuB82Sja4gfVaG+Lt++om9CxSL93bvn9cWs8EMC9ClbgPqu3N5Gnb
mulQDFwsnJDTkMhn8QvkXWkoQrI43vSqdQpGzqGCKcdpDhYbLzd/Vmf9bZTIvYZb
n1TYT8o+zGcpwQyT0HDhT9LlwRgh0jbYy63wSil0pLnA1DruZyZIgp8sQXKh6IU6
h9g4tC2jAgMBAAECggEAL1hMCVZcGUOs0bplX0iUOje0VYMMone8neR6hFiJl/jB
vbJCi+1L4F/K1vPxTfaEVIDjg4O3v4MwyqLVL6lj8dtbzd1DoT31/yZ1V0xlpnxq
enUsZOUBnztZyAitwy86Qxq35RKkz92xW4nxb0tOH41yvv/NegnP8M1rOhdTssiC
nX8KQgdZLuVI3Q5PeJpycKTthXIsxqQufZJZAyYrXZsR6gkGaNlOV/7eNFrh6PPS
pStHHQYWPyjyUZREHzo371ZKawXaC5pJZY7b4s76mCPOxpL8VjFuXKAdW61po6XV
Ff4wAd/eutyaur6ZgriY8oRX+10FnyYiwRo3QUv+4QKBgQD9PNGvN6BqKxhWM3Su
HGpcp/fyNMidoKdP1maFEtisMUIhNm+i1CSsn1dn006bv/6igSmVNI4FdyCU8dP/
tbWUWl0r3fTRnlduJxkvZmoVXqW78BXx4ejnKDZfTNtUNWT/4h1nKTYQh42O/WXC
Wzl/LB154dDMMUIp+KEnOFQhdwKBgQDiT/yqcoYVYCV2nk/q2BML8/NvhHK1+Hgv
oqGKe2zmNxQcCH/H70TjWJRojxQJZe4311MP2Qu5RvgHfmtotb3Fi2gGYv6dwS9n
VdcFILjoiQAMe8KLfZBGAmsN3bQ9g2BrbD1sFjVCUsOT1c2zI4ESQXW5Dz4F5Fpe
9zBYR1DANQKBgF15mLDDqLvnwmj3P2eRZ5ViDvzhjPfaOEgZDOisBzywRge6b0S8
Z/ksK/hQIGEPYq+bW70OlCniSi2Qgj+OVEM5g9DQcjD58K3hUsOTWy8eK7EOsxsA
15aT2lYdKYyQ1QI69b2BkcpSLueME4bFY5jUsOCvgQIOYKzbcKjoeu2LAoGAFl3L
XdkVsVUgPrnkshQKxdqlS3cukxdsYWDUUEhkedglr6OTZWIbT9C4UiEZ3NfrFC++
sMlFpFkEOFFhMicMC1L8w+zStyqZkb/lEUernqezjohIsNqHALRKekNYBeBPDi7T
XzROrTBazeiKfNLcdb5scQ61lYV8/Pe3GnJp46UCgYEAmI8xIBGBNWcXY1V4ismY
FM/8anrOFSPrgmyp9NcUu7mXxIWTPg+3vIykwV+uqkWh0BgSnGitQ9BKIHgJU3sz
K8ft7edhwgKq3x8y0Gs8+1JOm2TvKhavZoKcSOi6/2xeGunMbEpL/zsOcEMOmp+V
a/PsyIEsETicUZJmFZxAiGs=
-----END PRIVATE KEY-----

View File

@ -1,25 +1,22 @@
-----BEGIN CERTIFICATE-----
MIIEHzCCAwegAwIBAgIEASUKQDANBgkqhkiG9w0BAQsFADBSMQswCQYDVQQGEwJD
TjENMAsGA1UECgwEVFA0QTEZMBcGA1UECwwQVFA0QSBUZWxlcG9ydCBDQTEZMBcG
A1UEAwwQVFA0QSBUZWxlcG9ydCBDQTAgFw0xOTAxMjUxMDM0MTVaGA8yMTE5MDEw
MTEwMzQxNVowXzELMAkGA1UEBhMCQ04xCzAJBgNVBAgMAkJKMQswCQYDVQQHDAJ0
cDERMA8GA1UECgwIVGVsZXBvcnQxDzANBgNVBAsMBkFzc2lzdDESMBAGA1UEAwwJ
MTI3LjAuMC4xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvsXS1Xze
SBK0tVKZWHrDL5BWVQVpR9gKI3yfKUp2qnxOl3lVnP4aAqYqk0pBnaF+DS4MvHIw
HLyPWdROF3XLnIdetReBx+vFdAmbEiuyxx41yPUi240sqFC9AbwyBBhvQ9mcqsvM
U4lXOoAWQb0daRkbIefSokTDQjzeu5U+jxk7fjsTCZodpWmAVodvC26seEdZwZfP
5tcGWkBYU089FgawZuP94/eW0FyFIz9JFvLhXGiINKAN/9RDOQ61UKiX6e3jxFnr
06D9x+Dctf1oP4Fk6Uogf3YDfHN716JFsWmxiRvzquQlo7cPYFhckdCPzphYfHJ1
j39r30BVWEJ79QIDAQABo4HtMIHqMB0GA1UdDgQWBBQHRB+sP9RolTsf34gPFAJw
6UKn2zB6BgNVHSMEczBxgBSh6jvPH2KfGq3ekij4vF+Bqa/roqFWpFQwUjELMAkG
A1UEBhMCQ04xDTALBgNVBAoMBFRQNEExGTAXBgNVBAsMEFRQNEEgVGVsZXBvcnQg
Q0ExGTAXBgNVBAMMEFRQNEEgVGVsZXBvcnQgQ0GCAQAwDAYDVR0TAQH/BAIwADAO
BgNVHQ8BAf8EBAMCA4gwEwYDVR0lBAwwCgYIKwYBBQUHAwEwGgYDVR0RBBMwEYIJ
bG9jYWxob3N0hwR/AAABMA0GCSqGSIb3DQEBCwUAA4IBAQCagioxwrTdc9N5IVSH
qbOXTGpUE4R7dvfCKatNJrGen7lAGdfqgomwM+fjRO5Jt0Kc15q8gxvQ3kePwaBY
11f1FJ8iDMqxX7Hmb3KT0FeWKmUPgH3YtlitSAD7DrqMxBh5sr/28zN8XIjWWhY1
huv7APQbuicxl/YZumPKa3r8FI1ca4pn4TKsm+YMN6Buy6k9CQV6POtNmawLNgNP
axErEeTzNsis1JalHFAdr6mPWY0xaZsdrMeJHMx/7lvM7Qo+odEyswguoCS8Bc1Y
6ZlEYZUev7lN0amqnoh25KrrGqpyHCXtXAEEwVyTmdpYDtqsetDYv7aCrfeITPBm
GAyD
MIIDkzCCAnugAwIBAgIGAhNQQY0BMA0GCSqGSIb3DQEBCwUAMDMxCzAJBgNVBAYT
AkNOMQ0wCwYDVQQKEwR0cDRhMRUwEwYDVQQDEwxUUDRBIFJvb3QgQ0EwHhcNMjEw
NzAzMDU1MDU0WhcNMjIwNzAzMDU1MDU0WjAUMRIwEAYDVQQDEwlsb2NhbGhvc3Qw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDf3tDR3kM5solfOA9AKlM+
DzFgG9G0RzR8b91KdIwWzIk+WyyqOHEkyXX3QmykKWqE74ZTB1/iWpWk5Z73LonG
gdc9alfkP/esAUPbF1030Z7AO9Kswt9ZRFv4qEMCFkPdz5bJ5EFble2zOVmkLcJJ
pvDvuB82Sja4gfVaG+Lt++om9CxSL93bvn9cWs8EMC9ClbgPqu3N5GnbmulQDFws
nJDTkMhn8QvkXWkoQrI43vSqdQpGzqGCKcdpDhYbLzd/Vmf9bZTIvYZbn1TYT8o+
zGcpwQyT0HDhT9LlwRgh0jbYy63wSil0pLnA1DruZyZIgp8sQXKh6IU6h9g4tC2j
AgMBAAGjgcswgcgwHQYDVR0OBBYEFBKWKx7CKoM7m5kaK5uN5woCrFFCMFsGA1Ud
IwRUMFKAFHvC5d4JNsH7eZ8sVzCbdqdnYLhQoTekNTAzMQswCQYDVQQGEwJDTjEN
MAsGA1UEChMEdHA0YTEVMBMGA1UEAxMMVFA0QSBSb290IENBggEAMAwGA1UdEwEB
/wQCMAAwCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMBoGA1UdEQQT
MBGCCWxvY2FsaG9zdIcEfwAAATANBgkqhkiG9w0BAQsFAAOCAQEAeM48uhEnkmdw
viwmdErYx/aYjl4Cs1woFAalkrhX42Ogld3B/LhIuBePiuKrPmrCOtM03qUXFKq4
Fg0A4eZnUiPHxTUzToa4yipY2xlxTh5oxy/MmXRyKfCO10mq7gTqtU7iUYy3fPvE
eDfL5ZIaCT+G8a/UI/EQjfhu00C37zRIvfhYkqCho+NoM087oADVQ9CGStWy4aHs
hh2fkKBZEYgOFSm6jPotEiqGJr2KHZ7pLi9f8zGsW2Srdpc7IC1aYD2QzHMqptzt
YEAFsMw2OvK+7zJGkJkNnejlcr9gc6j2JWkYYTuCI2D+rh0nFDkmMnDchzyYJyOQ
6U4OOh97yg==
-----END CERTIFICATE-----

View File

@ -103,7 +103,8 @@ bool Bar::init(MainWindow* owner) {
int i = 0;
for(i = 0; i < res__max; ++i) {
QString name;
name.sprintf(":/tp-player/res/bar/%s.png", img_res[i].name);
QTextStream(&name) << ":/tp-player/res/bar/" << img_res[i].name << ".png";
// name.asprintf(":/tp-player/res/bar/%s.png", img_res[i].name);
if(!m_res[i].load(name))
return false;
}
@ -223,7 +224,8 @@ void Bar::_init_imgages() {
int h = fm.height();
if(h < m_res[res_chkbox_normal].height())
h = m_res[res_chkbox_normal].height();
m_rc_skip = QRect(0, 0, fm.width(LOCAL8BIT("无操作则跳过")) + CHKBOX_RIGHT_PADDING + m_res[res_chkbox_normal].width(), h);
// m_rc_skip = QRect(0, 0, fm.width(LOCAL8BIT("无操作则跳过")) + CHKBOX_RIGHT_PADDING + m_res[res_chkbox_normal].width(), h);
m_rc_skip = QRect(0, 0, fm.horizontalAdvance(LOCAL8BIT("无操作则跳过")) + CHKBOX_RIGHT_PADDING + m_res[res_chkbox_normal].width(), h);
}
int w = m_rc_skip.width();
@ -272,7 +274,8 @@ void Bar::_init_imgages() {
pp.setFont(font);
{
QFontMetrics fm = pp.fontMetrics();
m_rc_time_passed = QRect(0, 0, fm.width("00:00:00"), fm.height());
// m_rc_time_passed = QRect(0, 0, fm.width("00:00:00"), fm.height());
m_rc_time_passed = QRect(0, 0, fm.horizontalAdvance("00:00:00"), fm.height());
m_rc_time_total = m_rc_time_passed;
}
@ -330,9 +333,11 @@ void Bar::_ms_to_str(uint32_t ms, QString& str) {
s = s % 60;
if(h > 0)
str.sprintf("%02d:%02d:%02d", h, m, s);
// str.sprintf("%02d:%02d:%02d", h, m, s);
str = QString("%1:%2:%3").arg(h, 2, 10, QLatin1Char('0')).arg(m, 2, 10, QLatin1Char('0')).arg(s, 2, 10, QLatin1Char('0'));
else
str.sprintf("%02d:%02d", m, s);
// str.sprintf("%02d:%02d", m, s);
str = QString("%1:%2").arg(m, 2, 10, QLatin1Char('0')).arg(s, 2, 10, QLatin1Char('0'));
}
void Bar::update_passed_time(uint32_t ms) {
@ -714,5 +719,3 @@ void Bar::draw(QPainter& painter, const QRect& rc_draw){
}
}
}

View File

@ -338,7 +338,8 @@ void MainWindow::_do_update_data(UpdateData* dat) {
}
else {
QString _port;
_port.sprintf("%d", m_rec_hdr.basic.conn_port);
QTextStream(&_port) << m_rec_hdr.basic.conn_port;
// _port.sprintf("%d", m_rec_hdr.basic.conn_port);
title = QString(LOCAL8BIT("用户 %1 访问 %2:%3 的 %4 账号").arg(m_rec_hdr.basic.user_username, m_rec_hdr.basic.conn_ip, _port, m_rec_hdr.basic.acc_username));
}

View File

@ -278,8 +278,10 @@ void ThrData::_run() {
// 如果数据文件尚未打开,则打开它
if(fdata == nullptr) {
str_fidx.sprintf("%d", m_file_idx+1);
QString tpd_fname = QString("%1/tp-rdp-%2.tpd").arg(m_data_path, str_fidx);
//str_fidx.sprintf("%d", m_file_idx+1);
//QString tpd_fname = QString("%1/tp-rdp-%2.tpd").arg(m_data_path, str_fidx);
QString tpd_fname;
QTextStream(&tpd_fname) << m_data_path << "/tp-rdp-" << (m_file_idx+1) << ".tpd";
tpd_fname = QDir::toNativeSeparators(tpd_fname);
QFileInfo fi_tpd(tpd_fname);

View File

@ -98,7 +98,8 @@ void ThrDownload::_run() {
if(m_need_stop)
break;
QString str_fidx;
str_fidx.sprintf("%d", file_idx+1);
QTextStream(&str_fidx) << (file_idx+1);
// str_fidx.asprintf("%d", file_idx+1);
QString tpd_fname = QString("%1/tp-rdp-%2.tpd").arg(m_data_path, str_fidx);
tpd_fname = QDir::toNativeSeparators(tpd_fname);

View File

@ -1,7 +1,7 @@
#ifndef TP_PLAYER_UTIL_H
#define TP_PLAYER_UTIL_H
#include <QTime>
#include <QElapsedTimer>
class TimeUseTest {
public:
@ -23,7 +23,7 @@ public:
uint32_t count() const {return m_count;}
private:
QTime m_time;
QElapsedTimer m_time;
uint32_t m_used_ms;
uint32_t m_count;
};

View File

@ -168,12 +168,12 @@ public:
#else
// timeval.tv_usec ==== ms
// timespec.tv_nsec === nano-second
struct timeval now = { 0 };
struct timespec out_time = { 0 };
struct timeval now = {0};
struct timespec out_time = {0};
gettimeofday(&now, nullptr);
uint64_t abs_time_ms = now.tv_sec * 1000ll + now.tv_usec + timeout_ms;
out_time.tv_sec = abs_time_ms / 1000ll;
out_time.tv_sec = abs_time_ms / 1000ll;
out_time.tv_nsec = (long)((abs_time_ms % 1000ll) * 1000ll);
pthread_cond_timedwait(&m_cond, &m_mutex, &out_time);
@ -192,7 +192,7 @@ private:
#ifdef EX_OS_WIN32
#else
pthread_mutex_t m_mutex;
pthread_cond_t m_cond;
pthread_cond_t m_cond;
#endif
};
@ -200,7 +200,7 @@ class ExEventHelper
{
public:
explicit ExEventHelper(ExEvent& event) :
m_event(event)
m_event(event)
{
#ifdef EX_OS_WIN32
#else
@ -222,7 +222,9 @@ private:
// 原子操作
int ex_atomic_add(volatile int* pt, int t);
int ex_atomic_inc(volatile int* pt);
int ex_atomic_dec(volatile int* pt);
// 线程相关操作

View File

@ -1,40 +0,0 @@
[toolchain]
#============================================
# for Windows
#============================================
# Need wget to download necessary dependency files.
wget = C:\Program Files (x86)\wget\wget.exe
# Need 7z to unzip downloaded files.
7z = C:\Program Files (x86)\7zip\7z.exe
# need perl to build openssl on Windows, if not set, default to get it from register.
# suggest install ActivePerl.
#perl = C:\Perl\bin\perl.exe
# need nasm to build openssl on Windows, if not set, default to locate it from register.
#nasm = C:\Users\username\AppData\Local\NASM\nasm.exe
# if not set nsis path, default to get it by register.
#nsis = C:\Program Files (x86)\NSIS\Unicode\makensis.exe
# if not set msbuild path, default to get it by register.
#msbuild = C:\Program Files (x86)\MSBuild\14.0\bin\MSBuild.exe
# need Qt >= 5.12 to build recorder player.
qt = C:\Qt\Qt5.12.0\5.12.0\msvc2017
# ============================================
# for Linux
# ============================================
# if not set cmake path, default to '/usr/bin/cmake'
cmake = /opt/cmake/bin/cmake
# ============================================
# for MacOS
# ============================================
# need Qt >= 5.12 to build recorder player.
qt = /Users/apex/apps/qt5.13.1/5.13.1/clang_64/bin

View File

@ -1,9 +1,27 @@
{
"toolchain": {
"pyexec": "C:\\Program Files(x86)\\python-3.7\\python.exe",
"qt_path": "C:\\Qt\\Qt5.12.0\\5.12.0\\msvc2017",
"cmake": "C:\\Program Files(x86)\\CMake\\bin\\cmake.exe"
"#.comment": {
"#.0": "This is configure file for build teleport project. You should copy this file to",
"#.1": "config.PLATFORM.json and modify it to fit your development environment.",
"#.3": "PLATFORM should be one of windows/linux/macos."
},
"#.toolchain": "path of toolchain, if not set, default to find them from register(win), /usr/bin or /usr/local/bin (linux/macos).",
"#.toolchain.example.macos": {
"qt_path": "/opt/Qt/5.15.2/clang_64/bin",
"cmake": "/usr/local/bin/cmake"
},
"#.toolchain.example.linux": {
"qt_path": "",
"cmake": "/opt/cmake/bin/cmake"
},
"#.toolchain.example.windows": {
"qt_path": "C:\\Qt\\Qt5.15.2\\5.15.2\\msvc2017",
"cmake": "C:\\Program Files(x86)\\CMake\\bin\\cmake.exe",
"wget": "",
"7z": "",
},
"remote": {
"short-name-1": {
"type": "linux",

160
make.sh.in Normal file
View File

@ -0,0 +1,160 @@
#!/bin/bash
PATH_ROOT=$(cd "$(dirname "$0")"; pwd)
# =================================================================
# Please change the following 2 lines to fit your development
# environment if you want to build teleport components for such
# platforms.
# =================================================================
PY_EXEC_WINDOWS="C:\\Program Files(x86)\\python-3.7\\python.exe"
PY_EXEC_MACOS="/usr/local/bin/python3"
set -e
function check_cfg_file
{
if [ ! -f "./${CFG_FILE}" ] ; then
on_error_begin "\`${CFG_FILE}\` does not exists."
echo "please copy \`config.json.in\` into \`${CFG_FILE}\`"
echo "and modify it to fit your condition, then try again."
on_error_end
fi
}
function build_win
{
check_cfg_file
# find pyexec from json file
# pyexec=$(grep -P '"pyexec":' ./${CFG_FILE} | grep -Po '(?<="pyexec":)([[:space:]]*)"(.*)"')
# remove left "
#pyexec=${pyexec#*\"}
# remove right "
#pyexec=${pyexec%\"*}
pyexec=${PY_EXEC_WINDOWS}
# make sure configuration item exists.
if [ "${pyexec}-x" = "-x" ] ; then
on_error "\`pyexec\` not set, please check your \`${CFG_FILE}\`"
fi
pyexec=$(cygpath -u ${pyexec})
if [ ! -f "${pyexec}" ] ; then
pyexec=$(cygpath -m ${pyexec})
on_error "Sorry, need Python 3.7 or above (x86 version) to\nbuild Teleport on Windows Platform.\n\nPython interpreter not exists: ${pyexec}"
fi
# check version and architecture of python.
# version should >= 3.7
$("${pyexec}" -c "import platform;import sys;pyv=platform.python_version_tuple();ret=0 if int(pyv[0])>=3 and int(pyv[1])>=7 else 1;sys.exit(ret)")
if [ $? -ne 0 ]; then
on_error "Sorry, need x86 version of Python 3.7 or above."
fi
# and must be x86 version.
$("${pyexec}" -c "import platform;import sys;ret=0 if platform.architecture()[0]=='32bit' else 1;sys.exit(ret)")
if [ $? -ne 0 ]; then
on_error "Sorry, need x86 version of Python 3.7 or above."
fi
${pyexec} -B "${PATH_ROOT}/build/build.py" $@
}
function build_linux
{
check_cfg_file
if [ `id -u` -eq 0 ]; then
on_error "Do not build as root."
fi
if [ ! -f "/etc/centos-release" ] ; then
on_error "Sorry, build script works on CentOS 7 only."
fi
PYEXEC=${PATH_ROOT}/external/linux/release/bin/python3.7
PYSTATIC=${PATH_ROOT}/external/linux/release/lib/libpython3.7m.a
if [ ! -f "${PYSTATIC}" ] ; then
X=$(yum list installed | grep "libffi-devel")
if [ "$X-x" = "-x" ] ; then
on_error "Need libffi-devel to build Python, try:\r\n sudo yum install libffi-devel"
fi
X=$(yum list installed | grep "zlib-devel")
if [ "$X-x" = "-x" ] ; then
on_error "Need zlib-devel to build Python, try:\r\n sudo yum install zlib-devel"
fi
echo "python static not found, now build it..."
"${PATH_ROOT}/build/build-py-static.sh"
if [ ! -f "${PYSTATIC}" ] ; then
on_error "can not build python static."
fi
fi
${PYEXEC} -B "${PATH_ROOT}/build/build.py" $@
}
function build_macos
{
check_cfg_file
${PY_EXEC_MACOS} -B "${PATH_ROOT}/build/build.py" $@
}
function on_error()
{
echo -e "\033[01m\033[31m"
echo "==================[ !! ERROR !! ]=================="
echo ""
echo -e $1
echo ""
echo "==================================================="
echo -e "\033[0m"
exit 1
}
function on_error_begin()
{
echo ""
echo -e "\033[01m\033[31mERROR: ${1}\033[0m"
echo ""
}
function on_error_end()
{
exit 1
}
##############################################
# main
##############################################
export TP_BUILD_SYSTEM="start"
SYS_NAME=`uname -s`
SYS_NAME=${SYS_NAME:0:4} # cut first 4 char.
# echo ${SYS_NAME}
# SYSTEM=${SYSTEM^^} # upper case
if [ ${SYS_NAME} = "Linu" ] ; then
export CFG_FILE=config.linux.json
build_linux $@
elif [ ${SYS_NAME} = "Darw" ] ; then
export CFG_FILE=config.macos.json
build_macos $@
elif [ ${SYS_NAME} == "MSYS" ] ; then
export CFG_FILE=config.windows.json
build_win $@
else
on_error_begin "Unsupported platform."
echo "To build teleport on Windows, please read document at:"
echo " https://docs.tp4a.com/develop/windows"
on_error_end
fi

View File

@ -1,24 +0,0 @@
-----BEGIN CERTIFICATE-----
MIID/TCCAuWgAwIBAgIBADANBgkqhkiG9w0BAQsFADBbMQswCQYDVQQGEwJDTjEQ
MA4GA1UECgwHRU9NU29mdDEcMBoGA1UECwwTRU9NU29mdCBUZWxlcG9ydCBDQTEc
MBoGA1UEAwwTRU9NU29mdCBUZWxlcG9ydCBDQTAgFw0xNjA4MDEwNjE5MThaGA8y
MTE2MDcwODA2MTkxOFowWzELMAkGA1UEBhMCQ04xEDAOBgNVBAoMB0VPTVNvZnQx
HDAaBgNVBAsME0VPTVNvZnQgVGVsZXBvcnQgQ0ExHDAaBgNVBAMME0VPTVNvZnQg
VGVsZXBvcnQgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDnWxeM
jqsyXnZqs8fxXGyrcXJZh5sVYcRBrZsjmll9jzqPzKj5cIs51EXQJQeM8b+soevL
p1pbXIv+fA1ut+bwanh7eHH43K6YHJpLklqCT2KIQlDuI3UUG0oeJFAIWzmUQjoH
BFRzfBLewkE2EcQCGyOCynVW0uo0FiB8DydzCX7z4QF/iZDcp2uYzaNRIzSA9ccB
Y93lb/BVOdNUrm61fqbZCFfXb0zbGrq5I5wo16RpNvsBnrlYOdjBca6YBHKUlFbh
xP1aOSAjDAWwxDpRRbh5rFdpSN3pW3BqepUNnYGaeEJWWj41gnr5dubGsQ1cTT9P
IJPoMmwmYeuJEGs1AgMBAAGjgckwgcYwHQYDVR0OBBYEFE//VRPN8ZMito7K2fnr
1JnYgwx9MIGDBgNVHSMEfDB6gBRP/1UTzfGTIraOytn569SZ2IMMfaFfpF0wWzEL
MAkGA1UEBhMCQ04xEDAOBgNVBAoMB0VPTVNvZnQxHDAaBgNVBAsME0VPTVNvZnQg
VGVsZXBvcnQgQ0ExHDAaBgNVBAMME0VPTVNvZnQgVGVsZXBvcnQgQ0GCAQAwDwYD
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEB
ADaRgGigRpDQE7jLAVtd7iivYn1pQqWW27ZpxdFl/tUG4MJ6sV1k3hY1mD306Qd+
jfQeaPCOXDfp+kx+EEGiuUy2XC1YJqBjV+zf7oaN1umLvCrnqooFqbwU5qYvc/2N
p0r8gbRZCmHzZmUrz3wvSqvCcmVeSC0Ya/VUSjgYu3l8ZgoQNk3YgLY79oHyePRn
7RVNotpw6s3HJgq4yExmUBLsPoZqtBasFkMV+rLkccQpr5Wr+v0fMcwqwIfEMxc9
JvTnrMNlxz9+XJKeFZJUOO2JkVbL3vaTZqh46BEkx/oJUw6Oy3oP9el+ZNbf4ccF
LoLgkdBcgnboXkvkYBajD/U=
-----END CERTIFICATE-----

View File

@ -1,24 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIEDjCCAvagAwIBAgIEASUKPDANBgkqhkiG9w0BAQsFADBbMQswCQYDVQQGEwJD
TjEQMA4GA1UECgwHRU9NU29mdDEcMBoGA1UECwwTRU9NU29mdCBUZWxlcG9ydCBD
QTEcMBoGA1UEAwwTRU9NU29mdCBUZWxlcG9ydCBDQTAeFw0xNjA4MDEwNjE5MjJa
Fw0yNjA3MzAwNjE5MjJaMFwxCzAJBgNVBAYTAkNOMRAwDgYDVQQKDAdFT01Tb2Z0
MRwwGgYDVQQLDBNFT01Tb2Z0IFRlbGVwb3J0IENBMR0wGwYDVQQDDBR0ZWxlcG9y
dC5lb21zb2Z0Lm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMYx
I2TwQOY7rUpkKaLpqGPlwevpICucp8TrE79visx54WlMJ/dQTx8+zTfUi61W/UhX
yrZcl4FoUhkI72bNYLROU+NUQdUTQqlwknqDG/IThEoEKv5xz5DKgEXY57MFrzaR
Fn5gz8SFDlVzFQrvx8z9sSI/4P419Y6Nsyp9FuINsIZCMnPAfdOWR5BIT7b1wU2Q
7+xQC6ULDxG9uxBQveM1SbkOpAPlPmER4mHXfLvCbAMDOwSAGO3Ip0M/7VJrvV1c
GU5VHXR35lZmymDQ+TTN2aFdS1RlwEcAdd14XKNgvSYnr//Opy7Krb30UTRQDWo4
XZYUsZSgbsnsCsj67PcCAwEAAaOB2DCB1TAdBgNVHQ4EFgQUcDe6t/VElznpzqfN
kJc98FigjbQwgYMGA1UdIwR8MHqAFE//VRPN8ZMito7K2fnr1JnYgwx9oV+kXTBb
MQswCQYDVQQGEwJDTjEQMA4GA1UECgwHRU9NU29mdDEcMBoGA1UECwwTRU9NU29m
dCBUZWxlcG9ydCBDQTEcMBoGA1UEAwwTRU9NU29mdCBUZWxlcG9ydCBDQYIBADAM
BgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIF4DATBgNVHSUEDDAKBggrBgEFBQcDATAN
BgkqhkiG9w0BAQsFAAOCAQEALjjdSvb1rt4QKTh7Bnyc4eP7912Vt+aZz8+0BS4E
KF9ZOS7cjO0GAffKiFfo/OGrbS8rc3tfg3Q/2ktb9dmjAV2QNfCBX5bH0UYSBvlT
IoTHVOvo4v8TEh7OCT3OiwxYzp3jAZy0dVY4UkQ1ZB9UscVMtH5POJGeGRLnHwDv
UK+u9HXvV5B27hVYpDhZwiOroOG90CCYJEgA59JDPojSWd35OjPN2A9yMd0WoWBm
zEk7nYAoJmP1a4DNRdOYGKZHZBe+JxfDKuMRJEwWqJZy7aqcnPH0umjIIsSNnjeT
oJFJdygVAU5oalPAxr9gZuTnWytDiTs6a912RoDS0XsrIw==
-----END CERTIFICATE-----

View File

@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDGMSNk8EDmO61K
ZCmi6ahj5cHr6SArnKfE6xO/b4rMeeFpTCf3UE8fPs031IutVv1IV8q2XJeBaFIZ
CO9mzWC0TlPjVEHVE0KpcJJ6gxvyE4RKBCr+cc+QyoBF2OezBa82kRZ+YM/EhQ5V
cxUK78fM/bEiP+D+NfWOjbMqfRbiDbCGQjJzwH3TlkeQSE+29cFNkO/sUAulCw8R
vbsQUL3jNUm5DqQD5T5hEeJh13y7wmwDAzsEgBjtyKdDP+1Sa71dXBlOVR10d+ZW
Zspg0Pk0zdmhXUtUZcBHAHXdeFyjYL0mJ6//zqcuyq299FE0UA1qOF2WFLGUoG7J
7ArI+uz3AgMBAAECggEBALJKShjnuLplPQMLEBmqMP2NFuJuma4iAxq2jtFMOoSv
sAPVqq5k5IirKlnrLqwE8V0+/PEIYpLbkd9LlnHYmAIb5INArOhNp05eIqdrgpxG
yl77WOIE6EDMqpArDGST3IcuBhoyZTXYrIhaOrfX9NmH7u1soa6ORBS1jFPQq+E1
8VmJnZaCJ3n0hopUWNg6ZxvysrJSetGNAlP20VKSHwbCAcRRsZU8h7sfAleW7uN5
N9lE89kRxJPxz2SPAtLlFNzhhYcJzPTSASIuCXkjwh5+uDsr1Sx9GPcx4NqtvgCt
RMZxdtR5o6nnTVSaOTne24xCXpb1Vgowh5pz6iMtyOECgYEA8ClIEiHKi41oNMsP
veP0Z+HyFjDvuNNdQHAEek4MSfWvumiRN7p8mjlf88fBxsWxg7EVMuTSyhTjRDyh
XAhsf2+raqeztvCa6FGKl0DKSMUDBAOmhGkJ/4wKEOVaUsgOGtEwYtIkG0ygnAel
CAU1hyBcHqzcrZjBKKt3+6VRRmsCgYEA00NGjZrKIijg75p2rzFJbtxaphb99WRF
6DHLJ5pJYPCXbhzEilJ7xwz4RQkZ5z5fS9U8L9Zs5aLwGzZs7hC7c8N0v8YxUa2s
tzSKlbbnf3bJ0LFFZDXpxZwV6zGLgvoRoijSa/t8Rm1hZHU6/bc9lhA0ZdimMw48
vtZOGwYIHqUCgYBFHNwsu6S6PFt8teM11mADdTZhxHt4SPtRC+t99u/6aMXFc0o3
K2eoSlKeqSHOvh2ztEZReyBeH1y3ymr1PUdb9RrzeodxYhRyPuUPWgncnzWa9iH5
gPDrpbVP33D62a+VcBXommjhok+mF10azcT1ug5IlZ58JrWPqqjAtnaJOQKBgBh/
xL7HJImxk+Q1VW4bmRhyFVENeYXriu/SVmzRR5EmVWk/jMs9pXz/1Aqtc4ONiB+T
KtehVh+LNazyMs+owRQ7pl5W7YE7UrwsK6YQ/+eYLu80n4dveRyhbSlJJZSay1Cy
yzQahd7k8FZmAeFKTqoIVws4hI2HKSQ4VfZsTKTBAoGBAN7btCRS5BCiF9U2sT4l
9e3wHDxFbOcY62hMtSnWjiN+3SdujQVFzFvpN0eNO5PPHU71hcM27bcCq8yPHROy
zb3Esbh87HjLjdLXmxvLlBGqQ95czLEF2t69k1pXtX1zYVMka1nEu0H4a17A9JCC
I9E7p6GtflkuY/XW9pij0Akm
-----END PRIVATE KEY-----

View File

@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDhDCCAmygAwIBAgIBADANBgkqhkiG9w0BAQsFADAzMQswCQYDVQQGEwJDTjEN
MAsGA1UEChMEdHA0YTEVMBMGA1UEAxMMVFA0QSBSb290IENBMCAXDTIxMDcwMzA1
NTA0N1oYDzIxMjEwNjA5MDU1MDQ3WjAzMQswCQYDVQQGEwJDTjENMAsGA1UEChME
dHA0YTEVMBMGA1UEAxMMVFA0QSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEArk1q4RZGBRJwJPYjEVUskFiFadz6trJC5430DFxwLVCEvMHh
KlgTb/a1jC53DmGsbJHlNs9yd7ja08AUITsbcUnST976LFpOe+ck6E2x1rhlWrXP
rN1B+xzfFy1AMNubr97MHoCfrdErWxKzaRUX55GRXbWMsugcfsvr7t8JQh3xbo91
0Xcq0QvC7t5PoDQ6VX6Uc0Utx7lbW4OoA7wU4d2JjUcvBlQHQsu/qZLojzXyEl2Q
AwfILypiapl01iBM2XPpaPpXC58//Etx/ul3oHsLsPEUzxbiCptx8xjE9IWaKqf6
GlnjhpZzw8W24h2CvWyy9EYw3QdUI4EBQhVZtwIDAQABo4GgMIGdMB0GA1UdDgQW
BBR7wuXeCTbB+3mfLFcwm3anZ2C4UDBbBgNVHSMEVDBSgBR7wuXeCTbB+3mfLFcw
m3anZ2C4UKE3pDUwMzELMAkGA1UEBhMCQ04xDTALBgNVBAoTBHRwNGExFTATBgNV
BAMTDFRQNEEgUm9vdCBDQYIBADAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
AwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAfd12+QaYrtM/KfZnSqDLwvGksuOZ1OOX
8xApJo35GPpFLlFTdkwQ9Z3unWXIfJGFYGAiRpy83ghraOaxqGDngqJdr1hT0RTQ
KqVlBZufbB010Dhl/6TcetZTeXLa3Xjw9d9jc79Prmc/485pa6lh2QSodHJwfz7J
zzUe5g09hzLdqrurIGdsMzFRMRwo2KpXMhx4jEqk4IMTD9rQnzCxBWS8rPbsnDTm
f0/kW3R70JbUFN5Dnd669g6t1L923+ICysR6q+Ep7cGhY1b9iMCn4Ia8r4VwgYuH
PAvw0ajzvj7RRW0M9Szo2jaWXHz6XeKmK3t8TW2x4gOn+irOenItEg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,22 @@
-----BEGIN CERTIFICATE-----
MIIDkzCCAnugAwIBAgIGAhNQQY0DMA0GCSqGSIb3DQEBCwUAMDMxCzAJBgNVBAYT
AkNOMQ0wCwYDVQQKEwR0cDRhMRUwEwYDVQQDEwxUUDRBIFJvb3QgQ0EwHhcNMjEw
NzAzMDU1MTE5WhcNMjIwNzAzMDU1MTE5WjAXMRUwEwYDVQQDEwxyZHAudHA0YS5j
b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDuEYYjr5xkYOMV4Lr8
y4iQh+twJXQpsVs6j9we/gwCe+isASIorgkeZUKuQ9b4/geeYg+o3jYIaJiW0/Q0
Gbtg98oPYBS5ck5127lYpKnWQpSHZSvqTW2QlQ33GOZCwSVXMG+nAm1yfMCi1hcX
qh/qZ6HJuJCeseIY8rX9+dGUPlfaUwUepSiU0y5FKrVRUBV4iFXVopyQWm1kSCKS
ymHpvI3pRvRGTM4bWk4XI8ucmZihPTVzecyLta+iV5TyHMvUlnss6ix9TmArFU2f
elSOwSfRkemy9ukjsTaY/MI6Z0tq9wcTzFKwqoKXQL72ThoOOYDc6+Ne570X8OmU
AngjAgMBAAGjgcgwgcUwHQYDVR0OBBYEFGs2OpTmmURVN5bUr/Emhqf6jcPfMFsG
A1UdIwRUMFKAFHvC5d4JNsH7eZ8sVzCbdqdnYLhQoTekNTAzMQswCQYDVQQGEwJD
TjENMAsGA1UEChMEdHA0YTEVMBMGA1UEAxMMVFA0QSBSb290IENBggEAMAwGA1Ud
EwEB/wQCMAAwCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMBcGA1Ud
EQQQMA6CDHJkcC50cDRhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAOmd9QaJ3ItJo
npdK9p6sGDB9RTN/761Z6j1gcZoWrF36CeO7k/wQVxjoFbjPAJ/TK7ek8dgB/Qkr
VQLII13b1N7z0Gc5sXAmOg0HVmgE9BbDvqKYmdlcvN32TaLhUUMe08izCePEoV8K
iWegTGSLxzGUzBkSeUQy0XIAyn7r6EOnvhDwdORuwRXCx06Q9vHyanFCwb27fQb/
eI5eZCoDJND2IjOXT2m8XibBXLO/aR0opCKI/PQ/iDAMGcUyO2Fz5CbG5BSDhi9C
TpxUXll6Z1IXih1/WHsvistLnXBEMFiOrwog/f0yT3eeGSz3TZxQouhsLjxBhmda
Us6pyQt91Q==
-----END CERTIFICATE-----

View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDuEYYjr5xkYOMV
4Lr8y4iQh+twJXQpsVs6j9we/gwCe+isASIorgkeZUKuQ9b4/geeYg+o3jYIaJiW
0/Q0Gbtg98oPYBS5ck5127lYpKnWQpSHZSvqTW2QlQ33GOZCwSVXMG+nAm1yfMCi
1hcXqh/qZ6HJuJCeseIY8rX9+dGUPlfaUwUepSiU0y5FKrVRUBV4iFXVopyQWm1k
SCKSymHpvI3pRvRGTM4bWk4XI8ucmZihPTVzecyLta+iV5TyHMvUlnss6ix9TmAr
FU2felSOwSfRkemy9ukjsTaY/MI6Z0tq9wcTzFKwqoKXQL72ThoOOYDc6+Ne570X
8OmUAngjAgMBAAECggEBAIdkv/0bqr4LvBp9LNsIhipsoqGtK1tq2o97sZyOrxXa
koEARAUOtXDr9fhV7LS/BGY3LuDDP8eYdO+Sq5fV6pNDWU9VPXQaZjTxOYAIZe7M
/tvh1g/y6RUJMGAPcSUV476qdVVuNACgoo35ZDi5MF2HgqPOq7EVSZkWsBo5MdA0
a8EPf/YktcThEjdqxmAfsM96OIxSLV4HSsnjoi12YgeGMPXjJ08o+kTcKdK66g3y
wlSzHijsd33L8ppKZVGxo9LgyMIF+mNqb+5eJaeDCZxIGO1XkOaYEHmPjybVRznF
do7/kon3eDhwzHt3C2/kOu9x/iJ71DQa8YinXb85s8ECgYEA+U2336pVtKYOWczf
CTYgFnWVB0uKEJsLeksQV/zPOvZmu7oTgpIQ2LO2vUkEI738RTInTSJdIzWdkEeP
JIai+tYta/tje7cqGL7i/NakLHYZbsQ4WaCIgM54qjSBgExt3nz0iIqeOIzTFjxx
rzmQ/39fL5Ft/hf8679SlxdgrU0CgYEA9HaMvjlt+gxku69tsyysjjXPlz6wdveH
fCEWFKW/Q1FZR4YnijHXj1PQTUhLTlq1K9IQOm961qcCFfiArjUj1zoNN52Puf7e
hxnmBVuYqaq/pOduyNhmclJ5KWNoNEET2lq1ZHrvVk7buvSHCG/CeBu0QXB1ORKA
1yVYqO3Fwy8CgYEA0oGnYzsHB3S35WeyZKrJSW2bmv9T41WnyWmcsU8NBLKOaLFk
S/peMzz8brQ6xJtlamBBA0ai8loRY4So/6SX9cnnrKgmho5RA3gbXnc3RTurmfYh
xrxgxrKQ/Nc9CkJ++0Dzkl/J3eI7UylSrSyknLjGfPoFsGo87Csu59mbjnkCgYEA
yYwz3WFb2pv9MQAhYWejnFuhGwEEXBEYEq70lXFRjx6yjNV+I+GT5wci5ZSFAcSn
Ocmmt4bRr8dhYNvQu8/0DK4/12p/5MjMjnY7vo8V/kxYVIy6ObywOfDlE8pxTyOY
Sp4ejwkL6gx5/Fk+OyZpHr04j/s3qiYnMzoHLr9aHOECgYEAxbqnw4OkmlvN+KG3
UPVZHujhVkfIwhvvXLzKm92g5ZeJfsbh5GWwlduNDeediosmEZp8ogdHzRTaL761
Uc7F9+dcyxnfxQnpS0wXllyVBYPnn6Zme0b1VZYJdz3ly/caT0IhwYTkEIp24lop
Y00jxcR5DCdCr5WJ4vhsIbK3m/g=
-----END PRIVATE KEY-----

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.18)
MESSAGE(STATUS "=======================================================")
MESSAGE(STATUS " tp_core")

View File

@ -11,7 +11,7 @@ public:
bool init(bool load_config);
ExIniFile& get_ini(void) { return m_ini; }
ExIniFile& get_ini() { return m_ini; }
public:
ex_wstr m_exec_file;

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.18)
MESSAGE(STATUS "=======================================================")
MESSAGE(STATUS " libtpssh")

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.18)
MESSAGE(STATUS "=======================================================")
MESSAGE(STATUS " libtptelnet")

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.18)
MESSAGE(STATUS "=======================================================")
MESSAGE(STATUS " testssh")

View File

@ -16,24 +16,25 @@ import sys
__all__ = ['PATH_APP_ROOT', 'PATH_DATA']
PATH_DATA = ''
# 将Python安装的扩展库移除避免开发调试与正式发布所依赖的库文件不一致导致发布的版本无法运行
x = []
for p in sys.path:
if p.find('site-packages') != -1 or p.find('dist-packages') != -1:
x.append(p)
for p in x:
sys.path.remove(p)
PATH_APP_ROOT = os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', '..'))
# 检查操作系统目前支持Win/Linux/MacOS
PLATFORM = platform.system().lower()
if PLATFORM not in ['windows', 'linux', 'darwin']:
print('web server does not support `{}` platform yet.'.format(PLATFORM))
sys.exit(1)
PATH_DATA = ''
# 将Python安装的扩展库移除避免开发调试与正式发布所依赖的库文件不一致导致发布的版本无法运行
if PLATFORM != 'darwin':
x = []
for p in sys.path:
if p.find('site-packages') != -1 or p.find('dist-packages') != -1:
x.append(p)
for p in x:
sys.path.remove(p)
PATH_APP_ROOT = os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', '..'))
BITS = 'x64'
if '32bit' == platform.architecture()[0]:
BITS = 'x86'
@ -44,9 +45,12 @@ if _ext_path not in sys.path:
sys.path.append(_ext_path)
# 确定一些路径
if os.path.exists(os.path.join(os.path.dirname(sys.executable), 'dev_mode')):
# 开发调试模式
PATH_DATA = os.path.abspath(os.path.join(PATH_APP_ROOT, '..', '..', 'share'))
else:
PATH_DATA = os.path.abspath(os.path.join(PATH_APP_ROOT, '..', '..', 'share'))
# if os.path.exists(os.path.join(os.path.dirname(sys.executable), 'dev_mode')):
# # 开发调试模式
# PATH_DATA = os.path.abspath(os.path.join(PATH_APP_ROOT, '..', '..', 'share'))
#
# else:
# PATH_DATA = os.path.abspath(os.path.join(PATH_APP_ROOT, '..', '..', 'data'))
if not os.path.exists(PATH_DATA):
PATH_DATA = os.path.abspath(os.path.join(PATH_APP_ROOT, '..', '..', 'data'))

View File

@ -31,10 +31,12 @@ class CatchAllHandler(TPBaseHandler):
self.write('EXIT')
return
self.set_status(404)
log.w('catch all, GET: {}\n'.format(self.request.uri))
self.show_error_page(TPE_HTTP_404_NOT_FOUND)
def post(self):
self.set_status(404)
log.w('catch all, POST: {}\n'.format(self.request.uri))
_ret = {'code': TPE_HTTP_404_NOT_FOUND, 'message': '错误的URI', 'data': {}}
self.set_header("Content-Type", "application/json")