mirror of https://github.com/tp4a/teleport
now we can make final installer package of teleport server for windows with zip format.
parent
f88a21a2b0
commit
4b594ed274
|
@ -28,6 +28,7 @@ __pycache__
|
||||||
**/.idea/watcherTasks.xml
|
**/.idea/watcherTasks.xml
|
||||||
**/.idea/codeStyleSettings.xml
|
**/.idea/codeStyleSettings.xml
|
||||||
**/.idea/inspectionProfiles
|
**/.idea/inspectionProfiles
|
||||||
|
**/.idea/vcs.xml
|
||||||
|
|
||||||
# for tmp folder or files.
|
# for tmp folder or files.
|
||||||
/out
|
/out
|
||||||
|
@ -37,33 +38,38 @@ __pycache__
|
||||||
/external/mongoose
|
/external/mongoose
|
||||||
/external/openssl
|
/external/openssl
|
||||||
/external/python
|
/external/python
|
||||||
|
/external/libssh-win-static/include/libssh
|
||||||
|
/external/libssh-win-static/src
|
||||||
|
/external/libssh-win-static/lib
|
||||||
|
/external/mbedtls
|
||||||
|
/external/sqlite
|
||||||
|
/client/tools/putty
|
||||||
|
/client/tools/winscp
|
||||||
|
|
||||||
|
|
||||||
# for dist folder
|
# for dist folder
|
||||||
/dist/*.zip
|
|
||||||
/dist/*.tar.gz
|
|
||||||
/dist/installer/linux/server/_tmp_
|
|
||||||
**/_tmp_
|
**/_tmp_
|
||||||
|
# /dist/*.zip
|
||||||
|
# /dist/*.tar.gz
|
||||||
|
/dist/windows/server/script/data
|
||||||
|
/dist/windows/client/assist/apps
|
||||||
|
/dist/windows/client/assist/cfg
|
||||||
|
|
||||||
/server/share/data/ts_db.db
|
/server/share/etc/core.ini
|
||||||
/server/share/data/replay
|
/server/share/etc/web.ini
|
||||||
|
# /server/share/data/ts_db.db
|
||||||
|
/server/share/data
|
||||||
|
/server/share/log
|
||||||
|
# /server/share/data/replay
|
||||||
/server/www/teleport/.idea/vcs.xml
|
/server/www/teleport/.idea/vcs.xml
|
||||||
/server/www/teleport/static/js/var.js
|
# /server/www/teleport/static/js/var.js
|
||||||
/server/www/packages/packages-windows/x64
|
/server/www/packages/packages-windows/x64
|
||||||
|
|
||||||
|
|
||||||
|
# for generated files.
|
||||||
|
/config.ini
|
||||||
|
/build.bat
|
||||||
|
|
||||||
# for not finished code
|
# for not finished code
|
||||||
/common/libex/test
|
/common/libex/test
|
||||||
/external/mbedtls
|
|
||||||
/external/sqlite
|
|
||||||
/server/share/etc/core.ini
|
|
||||||
/server/share/etc/web.ini
|
|
||||||
/client/tp_rdp
|
/client/tp_rdp
|
||||||
/external/libssh-win-static/lib
|
|
||||||
/server/share/log
|
|
||||||
/config.ini
|
|
||||||
/build.bat
|
|
||||||
/dist/windows/client/assist/apps
|
|
||||||
/dist/windows/client/assist/cfg
|
|
||||||
/client/tools/putty
|
|
||||||
/client/tools/winscp
|
|
||||||
/external/libssh-win-static/include/libssh
|
|
||||||
/external/libssh-win-static/src
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#!/bin/env python3
|
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import shutil
|
import shutil
|
||||||
|
@ -6,13 +5,12 @@ import shutil
|
||||||
from core import colorconsole as cc
|
from core import colorconsole as cc
|
||||||
from core import makepyo
|
from core import makepyo
|
||||||
from core import utils
|
from core import utils
|
||||||
|
from core.env import env
|
||||||
from core.context import *
|
from core.context import *
|
||||||
from core.ver import *
|
from core.ver import *
|
||||||
|
|
||||||
ctx = BuildContext()
|
ctx = BuildContext()
|
||||||
|
|
||||||
ROOT_PATH = utils.cfg.ROOT_PATH
|
|
||||||
|
|
||||||
|
|
||||||
# COMMON_MODULES = ['paste', 'pyasn1', 'pymemcache', 'pymysql', 'rsa', 'tornado', 'six.py']
|
# COMMON_MODULES = ['paste', 'pyasn1', 'pymemcache', 'pymysql', 'rsa', 'tornado', 'six.py']
|
||||||
|
|
||||||
|
@ -26,9 +24,9 @@ class BuilderBase:
|
||||||
|
|
||||||
def _build_web(self, base_path, dist, target_path):
|
def _build_web(self, base_path, dist, target_path):
|
||||||
cc.n('make Teleport Web package...')
|
cc.n('make Teleport Web package...')
|
||||||
# src_path = os.path.join(ROOT_PATH, 'server', 'www', 'teleport')
|
# src_path = os.path.join(env.root_path, 'server', 'www', 'teleport')
|
||||||
# pkg_path = os.path.join(ROOT_PATH, 'server', 'www', 'packages')
|
# pkg_path = os.path.join(env.root_path, 'server', 'www', 'packages')
|
||||||
src_path = os.path.join(ROOT_PATH, 'server', 'www')
|
src_path = os.path.join(env.root_path, 'server', 'www')
|
||||||
pkg_path = os.path.join(src_path, 'packages')
|
pkg_path = os.path.join(src_path, 'packages')
|
||||||
tmp_path = os.path.join(base_path, '_tmp_web_')
|
tmp_path = os.path.join(base_path, '_tmp_web_')
|
||||||
|
|
||||||
|
@ -50,14 +48,18 @@ class BuilderBase:
|
||||||
# shutil.copy(s, t)
|
# shutil.copy(s, t)
|
||||||
|
|
||||||
cc.n(' - copy packages...')
|
cc.n(' - copy packages...')
|
||||||
pkgs = ['packages-common', 'packages-{}'.format(dist)]
|
utils.copy_ex(pkg_path, os.path.join(tmp_path, 'packages'), 'packages-common')
|
||||||
for d in pkgs:
|
utils.copy_ex(os.path.join(pkg_path, 'packages-{}'.format(dist)), os.path.join(tmp_path, 'packages', 'packages-{}'.format(dist)), ctx.bits_path)
|
||||||
s = os.path.join(pkg_path, d)
|
|
||||||
t = os.path.join(tmp_path, 'packages', d)
|
|
||||||
if os.path.isdir(s):
|
# pkgs = ['packages-common', 'packages-{}'.format(dist)]
|
||||||
shutil.copytree(s, t)
|
# for d in pkgs:
|
||||||
else:
|
# s = os.path.join(pkg_path, d)
|
||||||
shutil.copy(s, t)
|
# t = os.path.join(tmp_path, 'packages', d)
|
||||||
|
# if os.path.isdir(s):
|
||||||
|
# shutil.copytree(s, t)
|
||||||
|
# else:
|
||||||
|
# shutil.copy(s, t)
|
||||||
|
|
||||||
makepyo.remove_cache(tmp_path)
|
makepyo.remove_cache(tmp_path)
|
||||||
|
|
||||||
|
@ -73,7 +75,7 @@ class BuilderBase:
|
||||||
|
|
||||||
# if not os.path.exists(os.path.join(tmp_path, 'static', 'download')):
|
# if not os.path.exists(os.path.join(tmp_path, 'static', 'download')):
|
||||||
# utils.makedirs(os.path.join(tmp_path, 'static', 'download'))
|
# utils.makedirs(os.path.join(tmp_path, 'static', 'download'))
|
||||||
# utils.copy_file(os.path.join(ROOT_PATH, 'dist'), os.path.join(tmp_path, 'static', 'download'), 'teleport-assist-win.zip')
|
# utils.copy_file(os.path.join(env.root_path, 'dist'), os.path.join(tmp_path, 'static', 'download'), 'teleport-assist-win.zip')
|
||||||
|
|
||||||
shutil.copytree(tmp_path, os.path.join(target_path, 'www'))
|
shutil.copytree(tmp_path, os.path.join(target_path, 'www'))
|
||||||
utils.remove(tmp_path)
|
utils.remove(tmp_path)
|
||||||
|
@ -82,15 +84,15 @@ class BuilderBase:
|
||||||
class BuilderWin(BuilderBase):
|
class BuilderWin(BuilderBase):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
# now = time.localtime(time.time())
|
|
||||||
# _ver = '1.0.{:2d}.{:d}{:02d}'.format(now.tm_year - 2000, now.tm_mon, now.tm_mday)
|
|
||||||
# self.name = 'teleport-server-windows-{}-{}'.format(ctx.bits_path, _ver)
|
|
||||||
self.name = 'teleport-server-windows-{}-{}'.format(ctx.bits_path, VER_TELEPORT_SERVER)
|
self.name = 'teleport-server-windows-{}-{}'.format(ctx.bits_path, VER_TELEPORT_SERVER)
|
||||||
|
self._final_file = os.path.join(env.root_path, 'out', 'installer', '{}.zip'.format(self.name))
|
||||||
|
|
||||||
self.base_path = os.path.join(ROOT_PATH, 'dist', 'installer', ctx.dist, 'server')
|
self.dist_path = os.path.join(env.root_path, 'dist', ctx.dist, 'server')
|
||||||
|
self.base_path = os.path.join(env.root_path, 'out', 'installer')
|
||||||
self.base_tmp = os.path.join(self.base_path, '_tmp_')
|
self.base_tmp = os.path.join(self.base_path, '_tmp_')
|
||||||
self.tmp_path = os.path.join(self.base_tmp, self.name, 'data', 'teleport')
|
|
||||||
|
self.path_tmp = os.path.join(self.base_tmp, self.name)
|
||||||
|
self.path_tmp_data = os.path.join(self.path_tmp, 'data')
|
||||||
|
|
||||||
def build_installer(self):
|
def build_installer(self):
|
||||||
cc.n('make teleport installer package...')
|
cc.n('make teleport installer package...')
|
||||||
|
@ -98,78 +100,45 @@ class BuilderWin(BuilderBase):
|
||||||
if os.path.exists(self.base_tmp):
|
if os.path.exists(self.base_tmp):
|
||||||
utils.remove(self.base_tmp)
|
utils.remove(self.base_tmp)
|
||||||
|
|
||||||
# self._build_web_backend(self.base_path, 'windows', self.tmp_path)
|
self._build_web(self.base_path, 'windows', self.path_tmp_data)
|
||||||
# utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'web-backend.conf')
|
utils.copy_file(os.path.join(env.root_path, 'server', 'share', 'etc'), os.path.join(self.path_tmp_data, 'tmp', 'etc'), ('web.ini.in', 'web.ini'))
|
||||||
#
|
utils.copy_file(os.path.join(env.root_path, 'server', 'share', 'etc'), os.path.join(self.path_tmp_data, 'tmp', 'etc'), ('core.ini.in', 'core.ini'))
|
||||||
# self._build_web_frontend(self.base_path, 'windows', self.tmp_path)
|
utils.copy_file(os.path.join(env.root_path, 'server', 'share', 'etc'), os.path.join(self.path_tmp_data, 'tmp', 'etc'), 'tp_ssh_server.key')
|
||||||
# utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'web-frontend.conf')
|
|
||||||
|
|
||||||
self._build_web(self.base_path, 'windows', self.tmp_path)
|
out_path = os.path.join(env.root_path, 'out', 'server', ctx.bits_path, ctx.target_path)
|
||||||
utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'web.conf')
|
bin_path = os.path.join(self.path_tmp_data, 'bin')
|
||||||
|
utils.copy_ex(out_path, bin_path, 'tp_web.exe')
|
||||||
|
utils.copy_ex(out_path, bin_path, 'tp_core.exe')
|
||||||
|
utils.copy_ex(out_path, bin_path, 'tpssh.dll')
|
||||||
|
# utils.copy_ex(out_path, bin_path, 'pysrt')
|
||||||
|
|
||||||
# out_path = os.path.join(ROOT_PATH, 'out', 'eom_ts', ctx.target_path, ctx.dist_path)
|
utils.copy_ex(os.path.join(env.root_path, 'out', 'pysrt'), bin_path, (ctx.dist_path, 'pysrt'))
|
||||||
# bin_path = os.path.join(self.tmp_path, 'bin')
|
|
||||||
# utils.copy_file(out_path, bin_path, 'eom_ts')
|
|
||||||
# utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'etc'), 'eom_ts.ini')
|
|
||||||
# utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'etc'), 'ts_ssh_server.key')
|
|
||||||
|
|
||||||
out_path = os.path.join(ROOT_PATH, 'out', 'eom_ts', ctx.bits_path, ctx.target_path)
|
# 复制安装所需的脚本
|
||||||
bin_path = os.path.join(self.tmp_path, 'bin')
|
utils.copy_ex(os.path.join(self.dist_path, 'script'), self.path_tmp, 'setup.bat')
|
||||||
utils.copy_ex(out_path, bin_path, 'eom_ts.exe')
|
utils.copy_ex(os.path.join(self.dist_path, 'script'), self.path_tmp, 'script')
|
||||||
utils.copy_ex(out_path, bin_path, 'pysrt')
|
|
||||||
|
|
||||||
utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'eom_ts.ini')
|
if os.path.exists(self._final_file):
|
||||||
# utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'license.key')
|
utils.remove(self._final_file)
|
||||||
utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'ts_ssh_server.key')
|
|
||||||
# utils.copy_ex(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'ssl')
|
|
||||||
|
|
||||||
# utils.copy_ex(os.path.join(ROOT_PATH, 'share', 'data'), os.path.join(self.tmp_path, 'tmp', 'data'), ('ts_db_release.db', 'ts_db.db'))
|
utils.make_zip(self.path_tmp, self._final_file)
|
||||||
utils.copy_ex(os.path.join(ROOT_PATH, 'share', 'data'), os.path.join(self.tmp_path, 'tmp', 'data'), 'main.sql')
|
|
||||||
|
|
||||||
# utils.copy_ex(os.path.join(ROOT_PATH, 'share', 'data'), os.path.join(self.tmp_path, 'data'), ('ts_db_release.db', 'ts_db.db'))
|
utils.remove(self.base_tmp)
|
||||||
|
|
||||||
# utils.make_zip(os.path.join(self.tmp_path, '..'), os.path.join(self.tmp_path, '..', '..', 'teleport.zip'))
|
|
||||||
# utils.copy_file(os.path.join(self.tmp_path, '..', '..'), os.path.join(self.tmp_path, '..'), 'teleport.zip')
|
|
||||||
# utils.remove(os.path.join(self.tmp_path, '..', '..', 'teleport.zip'))
|
|
||||||
# utils.remove(self.tmp_path)
|
|
||||||
|
|
||||||
# make final installer.
|
|
||||||
cc.n('pack final server installer...')
|
|
||||||
out_file = os.path.join(ROOT_PATH, 'dist', '{}.zip'.format(self.name))
|
|
||||||
|
|
||||||
if os.path.exists(out_file):
|
|
||||||
utils.remove(out_file)
|
|
||||||
|
|
||||||
# # copy installer scripts.
|
|
||||||
# for i in ['daemon', 'install.sh', 'start.sh', 'stop.sh', 'status.sh']:
|
|
||||||
# shutil.copy(os.path.join(self.base_path, 'script', i), os.path.join(self.base_tmp, self.name, i))
|
|
||||||
|
|
||||||
for i in ['install.bat', 'uninst.bat']:
|
|
||||||
shutil.copy(os.path.join(self.base_path, 'script', i), os.path.abspath(os.path.join(self.tmp_path, '..', '..', i)))
|
|
||||||
|
|
||||||
# for i in ['7z.exe']:
|
|
||||||
# shutil.copy(os.path.join(self.base_path, 'script', i), os.path.abspath(os.path.join(self.tmp_path, '..', '..', 'data', i)))
|
|
||||||
|
|
||||||
utils.make_zip(os.path.join(self.base_tmp, self.name, '..'), out_file)
|
|
||||||
|
|
||||||
|
|
||||||
class BuilderLinux(BuilderBase):
|
class BuilderLinux(BuilderBase):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
# now = time.localtime(time.time())
|
|
||||||
# _ver = '1.0.{:2d}.{:d}{:02d}'.format(now.tm_year - 2000, now.tm_mon, now.tm_mday)
|
|
||||||
# self.name = 'teleport-server-linux-{}-{}'.format(ctx.bits_path, _ver)
|
|
||||||
self.name = 'teleport-server-linux-{}-{}'.format(ctx.bits_path, VER_TELEPORT_SERVER)
|
self.name = 'teleport-server-linux-{}-{}'.format(ctx.bits_path, VER_TELEPORT_SERVER)
|
||||||
|
|
||||||
self.dist_path = os.path.join(ROOT_PATH, 'dist', ctx.dist, 'server')
|
self.dist_path = os.path.join(env.root_path, 'dist', ctx.dist, 'server')
|
||||||
self.base_path = os.path.join(ROOT_PATH, 'out', 'installer', 'server')
|
self.base_path = os.path.join(env.root_path, 'out', 'installer', 'server')
|
||||||
self.base_tmp = os.path.join(self.base_path, '_tmp_')
|
self.base_tmp = os.path.join(self.base_path, '_tmp_')
|
||||||
self.tmp_path = os.path.join(self.base_tmp, self.name, 'data', 'teleport')
|
self.tmp_path = os.path.join(self.base_tmp, self.name, 'data', 'teleport')
|
||||||
|
|
||||||
# self.server_path = os.path.join(ROOT_PATH, 'dist', 'installer', ctx.dist, 'server')
|
# self.server_path = os.path.join(env.root_path, 'dist', 'installer', ctx.dist, 'server')
|
||||||
# self.script_path = self.tmp_path = os.path.join(self.server_path, 'script')
|
# self.script_path = self.tmp_path = os.path.join(self.server_path, 'script')
|
||||||
# self.src_path = os.path.join(ROOT_PATH, 'source')
|
# self.src_path = os.path.join(env.root_path, 'source')
|
||||||
# self.out_tmp_path = os.path.join(self.tmp_path, self.name, 'server')
|
# self.out_tmp_path = os.path.join(self.tmp_path, self.name, 'server')
|
||||||
|
|
||||||
def build_installer(self):
|
def build_installer(self):
|
||||||
|
@ -178,36 +147,31 @@ class BuilderLinux(BuilderBase):
|
||||||
if os.path.exists(self.base_tmp):
|
if os.path.exists(self.base_tmp):
|
||||||
utils.remove(self.base_tmp)
|
utils.remove(self.base_tmp)
|
||||||
|
|
||||||
# self._build_web_backend(self.base_path, 'linux', self.tmp_path)
|
|
||||||
# utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'web-backend.conf')
|
|
||||||
#
|
|
||||||
# self._build_web_frontend(self.base_path, 'linux', self.tmp_path)
|
|
||||||
# utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'web-frontend.conf')
|
|
||||||
|
|
||||||
self._build_web(self.base_path, 'linux', self.tmp_path)
|
self._build_web(self.base_path, 'linux', self.tmp_path)
|
||||||
utils.copy_file(os.path.join(ROOT_PATH, 'server', 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), ('web.ini.in', 'web.ini'))
|
|
||||||
utils.copy_file(os.path.join(ROOT_PATH, 'server', 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), ('core.ini.in', 'core.ini'))
|
|
||||||
|
|
||||||
# out_path = os.path.join(ROOT_PATH, 'out', 'eom_ts', ctx.target_path, ctx.dist_path)
|
utils.copy_file(os.path.join(env.root_path, 'server', 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), ('web.ini.in', 'web.ini'))
|
||||||
# out_path = os.path.join(ROOT_PATH, 'out', 'eom_ts', ctx.bits_path, 'bin')
|
utils.copy_file(os.path.join(env.root_path, 'server', 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), ('core.ini.in', 'core.ini'))
|
||||||
|
utils.copy_file(os.path.join(env.root_path, 'server', 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'tp_ssh_server.key')
|
||||||
|
|
||||||
|
# out_path = os.path.join(env.root_path, 'out', 'eom_ts', ctx.target_path, ctx.dist_path)
|
||||||
|
# out_path = os.path.join(env.root_path, 'out', 'eom_ts', ctx.bits_path, 'bin')
|
||||||
# bin_path = os.path.join(self.tmp_path, 'bin')
|
# bin_path = os.path.join(self.tmp_path, 'bin')
|
||||||
# utils.copy_file(out_path, bin_path, 'eom_ts')
|
# utils.copy_file(out_path, bin_path, 'eom_ts')
|
||||||
|
|
||||||
out_path = os.path.join(ROOT_PATH, 'out', 'server', ctx.bits_path, 'bin')
|
out_path = os.path.join(env.root_path, 'out', 'server', ctx.bits_path, 'bin')
|
||||||
bin_path = os.path.join(self.tmp_path, 'bin')
|
bin_path = os.path.join(self.tmp_path, 'bin')
|
||||||
utils.copy_ex(out_path, bin_path, 'tp_web')
|
utils.copy_ex(out_path, bin_path, 'tp_web')
|
||||||
utils.copy_ex(out_path, bin_path, 'tp_core')
|
utils.copy_ex(out_path, bin_path, 'tp_core')
|
||||||
utils.copy_ex(out_path, bin_path, 'libtpssh.so')
|
utils.copy_ex(out_path, bin_path, 'libtpssh.so')
|
||||||
|
|
||||||
utils.copy_ex(os.path.join(ROOT_PATH, 'out', 'pysrt'), bin_path, (ctx.dist_path, 'pysrt'))
|
utils.copy_ex(os.path.join(env.root_path, 'out', 'pysrt'), bin_path, (ctx.dist_path, 'pysrt'))
|
||||||
|
|
||||||
# utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'eom_ts.ini')
|
# utils.copy_file(os.path.join(env.root_path, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'eom_ts.ini')
|
||||||
# utils.copy_file(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'license.key')
|
# utils.copy_file(os.path.join(env.root_path, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'license.key')
|
||||||
utils.copy_file(os.path.join(ROOT_PATH, 'server', 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'tp_ssh_server.key')
|
# utils.copy_ex(os.path.join(env.root_path, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'ssl')
|
||||||
# utils.copy_ex(os.path.join(ROOT_PATH, 'share', 'etc'), os.path.join(self.tmp_path, 'tmp', 'etc'), 'ssl')
|
|
||||||
|
|
||||||
# utils.copy_ex(os.path.join(ROOT_PATH, 'share', 'data'), os.path.join(self.tmp_path, 'tmp', 'data'), ('ts_db_release.db', 'ts_db.db'))
|
# utils.copy_ex(os.path.join(env.root_path, 'share', 'data'), os.path.join(self.tmp_path, 'tmp', 'data'), ('ts_db_release.db', 'ts_db.db'))
|
||||||
utils.copy_ex(os.path.join(ROOT_PATH, 'server', 'share', 'data'), os.path.join(self.tmp_path, 'tmp', 'data'), 'main.sql')
|
utils.copy_ex(os.path.join(env.root_path, 'server', 'share', 'data'), os.path.join(self.tmp_path, 'tmp', 'data'), 'main.sql')
|
||||||
|
|
||||||
# utils.make_zip(self.tmp_path, os.path.join(self.tmp_path, '..', 'eom_ts.zip'))
|
# utils.make_zip(self.tmp_path, os.path.join(self.tmp_path, '..', 'eom_ts.zip'))
|
||||||
utils.make_targz(os.path.join(self.tmp_path, '..'), 'teleport', 'teleport.tar.gz')
|
utils.make_targz(os.path.join(self.tmp_path, '..'), 'teleport', 'teleport.tar.gz')
|
||||||
|
@ -215,8 +179,8 @@ class BuilderLinux(BuilderBase):
|
||||||
|
|
||||||
# make final installer.
|
# make final installer.
|
||||||
cc.n('pack final server installer...')
|
cc.n('pack final server installer...')
|
||||||
# out_file = os.path.join(ROOT_PATH, 'dist', '{}.zip'.format(self.name))
|
# out_file = os.path.join(env.root_path, 'dist', '{}.zip'.format(self.name))
|
||||||
out_file = os.path.join(ROOT_PATH, 'out', 'installer', '{}.tar.gz'.format(self.name))
|
out_file = os.path.join(env.root_path, 'out', 'installer', '{}.tar.gz'.format(self.name))
|
||||||
|
|
||||||
if os.path.exists(out_file):
|
if os.path.exists(out_file):
|
||||||
utils.remove(out_file)
|
utils.remove(out_file)
|
||||||
|
@ -248,6 +212,9 @@ def gen_builder(dist):
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
if not env.init():
|
||||||
|
return
|
||||||
|
|
||||||
builder = None
|
builder = None
|
||||||
|
|
||||||
argv = sys.argv[1:]
|
argv = sys.argv[1:]
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
from core import colorconsole as cc
|
from core import colorconsole as cc
|
||||||
# from core import makepyo
|
# from core import makepyo
|
||||||
from core import utils
|
from core import utils
|
||||||
from core.context import *
|
|
||||||
from core.env import env
|
from core.env import env
|
||||||
|
from core.context import *
|
||||||
|
|
||||||
ctx = BuildContext()
|
ctx = BuildContext()
|
||||||
|
|
||||||
|
|
|
@ -422,10 +422,29 @@ def strip(filename):
|
||||||
|
|
||||||
def make_zip(src_path, to_file):
|
def make_zip(src_path, to_file):
|
||||||
cc.v('compress folder into .zip...')
|
cc.v('compress folder into .zip...')
|
||||||
n, _ = os.path.splitext(to_file)
|
# n, _ = os.path.splitext(to_file)
|
||||||
# x = os.path.split(to_file)[1].split('.')
|
# # x = os.path.split(to_file)[1].split('.')
|
||||||
p = os.path.dirname(to_file)
|
# p = os.path.dirname(to_file)
|
||||||
shutil.make_archive(os.path.join(p, n), 'zip', src_path)
|
# shutil.make_archive(os.path.join(p, n), 'zip', src_path)
|
||||||
|
# ensure_file_exists(to_file)
|
||||||
|
if env.is_win:
|
||||||
|
src_path = os.path.abspath(src_path)
|
||||||
|
print('src_path', src_path)
|
||||||
|
_parent = os.path.abspath(os.path.join(src_path, '..'))
|
||||||
|
print('_parent', _parent)
|
||||||
|
_folder = src_path[len(_parent) + 1:]
|
||||||
|
|
||||||
|
old_p = os.getcwd()
|
||||||
|
os.chdir(_parent)
|
||||||
|
cmd = '""{}" a "{}" "{}""'.format(env.zip7, to_file, _folder)
|
||||||
|
print(cmd)
|
||||||
|
os.system(cmd)
|
||||||
|
os.chdir(old_p)
|
||||||
|
elif env.is_linux:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
raise RuntimeError('not support this platform.')
|
||||||
|
|
||||||
ensure_file_exists(to_file)
|
ensure_file_exists(to_file)
|
||||||
|
|
||||||
|
|
||||||
|
@ -435,6 +454,8 @@ def unzip(file_name, to_path):
|
||||||
os.system(cmd)
|
os.system(cmd)
|
||||||
elif env.is_linux:
|
elif env.is_linux:
|
||||||
os.system('unzip "{}" -d "{}"'.format(file_name, to_path))
|
os.system('unzip "{}" -d "{}"'.format(file_name, to_path))
|
||||||
|
else:
|
||||||
|
raise RuntimeError('not support this platform.')
|
||||||
|
|
||||||
|
|
||||||
def make_targz(work_path, folder, to_file):
|
def make_targz(work_path, folder, to_file):
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
# -*- coding: utf8 -*-
|
|
||||||
TS_VER = "2.0.0.1"
|
|
||||||
TP_ASSIST_LAST_VER = "2.0.0.1"
|
|
||||||
TP_ASSIST_REQUIRE = "1.5.46.5"
|
|
|
@ -6,7 +6,6 @@ import time
|
||||||
from core.env import env
|
from core.env import env
|
||||||
import core.colorconsole as cc
|
import core.colorconsole as cc
|
||||||
import core.utils as utils
|
import core.utils as utils
|
||||||
from core.eom_ver import *
|
|
||||||
|
|
||||||
WIN_CORE_SERVICE_NAME = 'EOM Teleport Core Service'
|
WIN_CORE_SERVICE_NAME = 'EOM Teleport Core Service'
|
||||||
WIN_WEB_SERVICE_NAME = 'EOM Teleport Web Service'
|
WIN_WEB_SERVICE_NAME = 'EOM Teleport Web Service'
|
||||||
|
@ -21,11 +20,22 @@ class InstallerBase:
|
||||||
self._log_path = ''
|
self._log_path = ''
|
||||||
|
|
||||||
self._installed_ver_str = 'UNKNOWN'
|
self._installed_ver_str = 'UNKNOWN'
|
||||||
# self._installed_ver = [0, 0, 0, 0]
|
self._current_ver = 'UNKNOWN'
|
||||||
# self._current_ver = self._ver_str_to_ver(TS_VER)
|
|
||||||
|
|
||||||
self._def_install_path = ''
|
self._def_install_path = ''
|
||||||
|
|
||||||
|
ver_file = os.path.join(env.root_path, 'data', 'www', 'teleport', 'app', 'eom_ver.py')
|
||||||
|
try:
|
||||||
|
with open(ver_file) as f:
|
||||||
|
x = f.readlines()
|
||||||
|
for i in x:
|
||||||
|
s = i.split('=', 1)
|
||||||
|
if 'TS_VER' == s[0].strip():
|
||||||
|
self._current_ver = s[1].strip()[1:-1]
|
||||||
|
break
|
||||||
|
except FileNotFoundError:
|
||||||
|
raise RuntimeError('Cannot detect installer version.')
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
_width = 79
|
_width = 79
|
||||||
cc.v('')
|
cc.v('')
|
||||||
|
@ -33,7 +43,7 @@ class InstallerBase:
|
||||||
_str = 'Teleport Server Installation'
|
_str = 'Teleport Server Installation'
|
||||||
cc.o((cc.CR_VERBOSE, ' | '), (cc.CR_INFO, _str), (cc.CR_VERBOSE, '{}|'.format(' ' * (_width - 5 - len(_str)))))
|
cc.o((cc.CR_VERBOSE, ' | '), (cc.CR_INFO, _str), (cc.CR_VERBOSE, '{}|'.format(' ' * (_width - 5 - len(_str)))))
|
||||||
cc.v(' |{}|'.format('=' * (_width - 4)))
|
cc.v(' |{}|'.format('=' * (_width - 4)))
|
||||||
cc.o((cc.CR_VERBOSE, ' | ver: '), (cc.CR_NORMAL, TS_VER), (cc.CR_VERBOSE, '{}|'.format(' ' * (_width - 13 - len(TS_VER)))))
|
cc.o((cc.CR_VERBOSE, ' | ver: '), (cc.CR_NORMAL, self._current_ver), (cc.CR_VERBOSE, '{}|'.format(' ' * (_width - 13 - len(self._current_ver)))))
|
||||||
_str = 'author: apexliu@eomsoft.net'
|
_str = 'author: apexliu@eomsoft.net'
|
||||||
cc.v(' | {}{}|'.format(_str, ' ' * (_width - 5 - len(_str))))
|
cc.v(' | {}{}|'.format(_str, ' ' * (_width - 5 - len(_str))))
|
||||||
cc.v('[]{}[]'.format('=' * (_width - 4)))
|
cc.v('[]{}[]'.format('=' * (_width - 4)))
|
||||||
|
@ -56,9 +66,9 @@ class InstallerBase:
|
||||||
self.install()
|
self.install()
|
||||||
else:
|
else:
|
||||||
cc.v('')
|
cc.v('')
|
||||||
cc.v('Found teleport server already installed, now what are you want to do?')
|
cc.v('Found teleport server have installed at `{}` already.'.format(self._install_path))
|
||||||
while True:
|
while True:
|
||||||
x = self._prompt_choice('Please choice', [('Upgrade', 2, True), ('Uninstall', 0, False), ('Quit', 0, False)])
|
x = self._prompt_choice('What are you wanna to do?', [('upgrade', 2, True), ('uninstall', 0, False), ('quit', 0, False)])
|
||||||
x = x.lower()
|
x = x.lower()
|
||||||
if 'q' == x:
|
if 'q' == x:
|
||||||
return
|
return
|
||||||
|
@ -138,11 +148,11 @@ class InstallerBase:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def _upgrade(self):
|
def _upgrade(self):
|
||||||
x = self._ver_compare(TS_VER, self._installed_ver_str)
|
x = self._ver_compare(self._current_ver, self._installed_ver_str)
|
||||||
if x == 0:
|
if x == 0:
|
||||||
while True:
|
while True:
|
||||||
cc.v('')
|
cc.v('')
|
||||||
x = self._prompt_choice('The same version `{}` installed, are you sure to overwrite?'.format(TS_VER), [('Yes', 0, False), ('No', 0, True)])
|
x = self._prompt_choice('The same version `{}` installed, are you sure to overwrite?'.format(self._current_ver), [('Yes', 0, False), ('No', 0, True)])
|
||||||
x = x.lower()
|
x = x.lower()
|
||||||
if 'y' == x:
|
if 'y' == x:
|
||||||
break
|
break
|
||||||
|
@ -151,7 +161,7 @@ class InstallerBase:
|
||||||
elif x < 0:
|
elif x < 0:
|
||||||
while True:
|
while True:
|
||||||
cc.v('')
|
cc.v('')
|
||||||
x = self._prompt_choice('A new version `{}` installed, rollback to old version `{}` may cause Teleport Server not functionally.\nAre you sure to rollback to old version?'.format(self._installed_ver_str, TS_VER), [('Yes', 0, False), ('No', 0, True)])
|
x = self._prompt_choice('A new version `{}` installed, rollback to old version `{}` may cause Teleport Server not functionally.\nAre you sure to rollback to old version?'.format(self._installed_ver_str, self._current_ver), [('Yes', 0, False), ('No', 0, True)])
|
||||||
x = x.lower()
|
x = x.lower()
|
||||||
if 'y' == x:
|
if 'y' == x:
|
||||||
break
|
break
|
||||||
|
@ -160,7 +170,7 @@ class InstallerBase:
|
||||||
else:
|
else:
|
||||||
while True:
|
while True:
|
||||||
cc.v('')
|
cc.v('')
|
||||||
x = self._prompt_choice('Now upgrade from version `{}` to `{}`, \nAre you sure to upgrade to new version?'.format(self._installed_ver_str, TS_VER), [('Yes', 0, False), ('No', 0, True)])
|
x = self._prompt_choice('Now upgrade from version `{}` to `{}`, \nAre you sure to upgrade to new version?'.format(self._installed_ver_str, self._current_ver), [('Yes', 0, False), ('No', 0, True)])
|
||||||
x = x.lower()
|
x = x.lower()
|
||||||
if 'y' == x:
|
if 'y' == x:
|
||||||
break
|
break
|
||||||
|
@ -237,20 +247,6 @@ class InstallerBase:
|
||||||
|
|
||||||
return x
|
return x
|
||||||
|
|
||||||
# @staticmethod
|
|
||||||
# def _ver_str_to_ver(ver_str):
|
|
||||||
# x = ver_str.split('.')
|
|
||||||
# if len(x) > 4:
|
|
||||||
# x = x[:4]
|
|
||||||
# elif len(x) < 4:
|
|
||||||
# for i in range(4 - len(x)):
|
|
||||||
# x.append('0')
|
|
||||||
#
|
|
||||||
# for i in range(4):
|
|
||||||
# x[i] = int(x[i])
|
|
||||||
#
|
|
||||||
# return x
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _ver_compare(left, right):
|
def _ver_compare(left, right):
|
||||||
l = left.split('.')
|
l = left.split('.')
|
||||||
|
@ -374,7 +370,7 @@ class InstallerWin(InstallerBase):
|
||||||
utils.copy_ex(os.path.join(env.src_path, 'www'), os.path.join(self._install_path, 'www'))
|
utils.copy_ex(os.path.join(env.src_path, 'www'), os.path.join(self._install_path, 'www'))
|
||||||
|
|
||||||
if not os.path.exists(self._config_path):
|
if not os.path.exists(self._config_path):
|
||||||
utils.copy_ex(os.path.join(env.src_path, 'etc'), self._config_path)
|
utils.copy_ex(os.path.join(env.src_path, 'tmp', 'etc'), self._config_path)
|
||||||
|
|
||||||
def _delete_files(self, del_settings):
|
def _delete_files(self, del_settings):
|
||||||
utils.remove(os.path.join(self._install_path, 'bin'))
|
utils.remove(os.path.join(self._install_path, 'bin'))
|
||||||
|
|
|
@ -248,7 +248,18 @@ int _app_main(int argc, wchar_t** argv)
|
||||||
if (!_process_cmd_line(argc, argv))
|
if (!_process_cmd_line(argc, argv))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (!g_env.init())
|
if (g_run_type == RUN_PY_SCRIPT)
|
||||||
|
{
|
||||||
|
if (!g_env.init(false))
|
||||||
|
{
|
||||||
|
EXLOGE("[tpweb] env init failed.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return _main_loop();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!g_env.init(true))
|
||||||
{
|
{
|
||||||
EXLOGE("[tpweb] env init failed.\n");
|
EXLOGE("[tpweb] env init failed.\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -258,12 +269,8 @@ int _app_main(int argc, wchar_t** argv)
|
||||||
EXLOG_LEVEL(EX_LOG_LEVEL_DEBUG);
|
EXLOG_LEVEL(EX_LOG_LEVEL_DEBUG);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (g_run_type == RUN_PY_SCRIPT)
|
|
||||||
{
|
|
||||||
return _main_loop();
|
|
||||||
}
|
|
||||||
#ifdef EX_OS_WIN32
|
#ifdef EX_OS_WIN32
|
||||||
else if (g_run_type == RUN_INSTALL_SRV)
|
if (g_run_type == RUN_INSTALL_SRV)
|
||||||
{
|
{
|
||||||
return service_install();
|
return service_install();
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ TsEnv::TsEnv()
|
||||||
TsEnv::~TsEnv()
|
TsEnv::~TsEnv()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
bool TsEnv::init(void)
|
bool TsEnv::init(bool for_web)
|
||||||
{
|
{
|
||||||
EXLOG_LEVEL(EX_LOG_LEVEL_INFO);
|
EXLOG_LEVEL(EX_LOG_LEVEL_INFO);
|
||||||
|
|
||||||
|
@ -17,6 +17,9 @@ bool TsEnv::init(void)
|
||||||
m_exec_path = m_exec_file;
|
m_exec_path = m_exec_file;
|
||||||
ex_dirname(m_exec_path);
|
ex_dirname(m_exec_path);
|
||||||
|
|
||||||
|
if (!for_web)
|
||||||
|
return true;
|
||||||
|
|
||||||
// 定位 log, etc, www 路径
|
// 定位 log, etc, www 路径
|
||||||
// 默认情况下,以上三个目录均位于本可执行程序的 ../ 相对位置,
|
// 默认情况下,以上三个目录均位于本可执行程序的 ../ 相对位置,
|
||||||
// 如果不存在,则可能是开发调试模式,则尝试从源代码仓库根目录下的share目录中查找。
|
// 如果不存在,则可能是开发调试模式,则尝试从源代码仓库根目录下的share目录中查找。
|
||||||
|
|
|
@ -9,7 +9,7 @@ public:
|
||||||
TsEnv();
|
TsEnv();
|
||||||
~TsEnv();
|
~TsEnv();
|
||||||
|
|
||||||
bool init(void);
|
bool init(bool for_web);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ex_wstr m_exec_file;
|
ex_wstr m_exec_file;
|
||||||
|
|
Loading…
Reference in New Issue