mirror of https://github.com/tp4a/teleport
Merge branch 'dev'
commit
1fafd34f1f
|
@ -38,6 +38,9 @@ __pycache__
|
||||||
**/.idea/inspectionProfiles
|
**/.idea/inspectionProfiles
|
||||||
**/.idea/vcs.xml
|
**/.idea/vcs.xml
|
||||||
**/.idea/modules.xml
|
**/.idea/modules.xml
|
||||||
|
**/.idea/deployment.xml
|
||||||
|
**/.idea/sshConfigs.xml
|
||||||
|
**/.idea/webServers.xml
|
||||||
|
|
||||||
*.css.map
|
*.css.map
|
||||||
|
|
||||||
|
@ -61,6 +64,8 @@ __pycache__
|
||||||
|
|
||||||
# for dist folder
|
# for dist folder
|
||||||
**/_tmp_
|
**/_tmp_
|
||||||
|
/dist/docker/*.sh
|
||||||
|
/dist/docker/res/*.tar.gz
|
||||||
/dist/server/data
|
/dist/server/data
|
||||||
/dist/client/windows/assist/apps
|
/dist/client/windows/assist/apps
|
||||||
/dist/client/windows/assist/cfg
|
/dist/client/windows/assist/cfg
|
||||||
|
|
|
@ -2,18 +2,39 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import signal
|
||||||
|
|
||||||
sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)), 'webroot'))
|
sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)), 'webroot'))
|
||||||
|
|
||||||
|
g_web_app = None
|
||||||
|
|
||||||
|
|
||||||
|
def signal_handler(signum, frame):
|
||||||
|
global g_web_app
|
||||||
|
if g_web_app is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
print('got signal: signum={}'.format(signum))
|
||||||
|
print('stopping...')
|
||||||
|
g_web_app.stop()
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
global g_web_app
|
||||||
|
|
||||||
from app.app_env import PATH_APP_ROOT, PATH_DATA
|
from app.app_env import PATH_APP_ROOT, PATH_DATA
|
||||||
from app.base.webapp import tp_web_app
|
from app.base.webapp import tp_web_app
|
||||||
_web_app = tp_web_app()
|
g_web_app = tp_web_app()
|
||||||
if not _web_app.init(PATH_APP_ROOT, PATH_DATA):
|
if not g_web_app.init(PATH_APP_ROOT, PATH_DATA):
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
return _web_app.run()
|
signal.signal(signal.SIGINT, signal_handler) # Ctrl-C
|
||||||
|
signal.signal(signal.SIGHUP, signal_handler) # 发送给具有Terminal的Controlling Process,当terminal 被disconnect时候发送
|
||||||
|
signal.signal(signal.SIGTERM, signal_handler) # kill
|
||||||
|
|
||||||
|
ret = g_web_app.run()
|
||||||
|
g_web_app.finalize()
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -1420,7 +1420,7 @@ $app.create_dlg_ldap_config = function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
// dlg.ldap_config.use_ssl = dlg.dom.btn_use_ssl.hasClass('tp-selected');
|
// dlg.ldap_config.use_ssl = dlg.dom.btn_use_ssl.hasClass('tp-selected');
|
||||||
dlg.ldap_config.use_ssl = $(this).is(':checked')
|
dlg.ldap_config.use_ssl = dlg.dom.btn_use_ssl.is(':checked')
|
||||||
|
|
||||||
if (dlg.mode === 'set') {
|
if (dlg.mode === 'set') {
|
||||||
if (tp_is_empty_str(dlg.ldap_config.password)) {
|
if (tp_is_empty_str(dlg.ldap_config.password)) {
|
||||||
|
|
|
@ -596,7 +596,7 @@ class AppConfig(BaseAppConfig):
|
||||||
if not self.sys.ldap.is_exists('port'):
|
if not self.sys.ldap.is_exists('port'):
|
||||||
self.sys.ldap.port = 389
|
self.sys.ldap.port = 389
|
||||||
if not self.sys.ldap.is_exists('use_ssl'):
|
if not self.sys.ldap.is_exists('use_ssl'):
|
||||||
self.sys.ldap.use = False
|
self.sys.ldap.use_ssl = False
|
||||||
if not self.sys.ldap.is_exists('domain'):
|
if not self.sys.ldap.is_exists('domain'):
|
||||||
self.sys.ldap.domain = ''
|
self.sys.ldap.domain = ''
|
||||||
if not self.sys.ldap.is_exists('admin'):
|
if not self.sys.ldap.is_exists('admin'):
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
import threading
|
||||||
import time
|
import time
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
import urllib.request
|
import urllib.request
|
||||||
|
@ -22,6 +23,7 @@ from app.base.session import tp_session
|
||||||
from app.base.cron import tp_cron
|
from app.base.cron import tp_cron
|
||||||
from app.base.stats import tp_stats
|
from app.base.stats import tp_stats
|
||||||
from app.base.host_alive import tp_host_alive
|
from app.base.host_alive import tp_host_alive
|
||||||
|
from app.base.utils import tp_generate_random
|
||||||
from app.app_ver import TP_SERVER_VER
|
from app.app_ver import TP_SERVER_VER
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,6 +32,10 @@ class WebApp:
|
||||||
import builtins
|
import builtins
|
||||||
if '__web_app__' in builtins.__dict__:
|
if '__web_app__' in builtins.__dict__:
|
||||||
raise RuntimeError('WebApp object exists, you can not create more than one instance.')
|
raise RuntimeError('WebApp object exists, you can not create more than one instance.')
|
||||||
|
|
||||||
|
self._need_stop = False
|
||||||
|
self._thread = None
|
||||||
|
|
||||||
self._cfg_file = ''
|
self._cfg_file = ''
|
||||||
|
|
||||||
def init(self, path_app_root, path_data):
|
def init(self, path_app_root, path_data):
|
||||||
|
@ -51,6 +57,8 @@ class WebApp:
|
||||||
if not cfg.load(self._cfg_file):
|
if not cfg.load(self._cfg_file):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
cfg.random_exit_uri = '/exit_{}'.format(tp_generate_random(16))
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _get_core_server_config(self):
|
def _get_core_server_config(self):
|
||||||
|
@ -71,12 +79,26 @@ class WebApp:
|
||||||
except:
|
except:
|
||||||
log.w('can not connect to core-server to get config, maybe it not start yet, ignore.\n')
|
log.w('can not connect to core-server to get config, maybe it not start yet, ignore.\n')
|
||||||
|
|
||||||
|
def finalize(self):
|
||||||
|
print('DONE')
|
||||||
|
|
||||||
|
log.finalize()
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
log.i('\n')
|
log.i('\n')
|
||||||
log.i('###############################################################\n')
|
log.i('###############################################################\n')
|
||||||
log.i('Teleport Web Server v{}\n'.format(TP_SERVER_VER))
|
log.i('Teleport Web Server v{}\n'.format(TP_SERVER_VER))
|
||||||
log.i('Load config file: {}\n'.format(self._cfg_file))
|
log.i('Load config file: {}\n'.format(self._cfg_file))
|
||||||
|
|
||||||
|
self._thread = threading.Thread(target=self._run_loop)
|
||||||
|
self._thread.start()
|
||||||
|
while not self._need_stop:
|
||||||
|
time.sleep(1)
|
||||||
|
self._thread.join()
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def _run_loop(self):
|
||||||
ext_srv_cfg = tp_ext_srv_cfg()
|
ext_srv_cfg = tp_ext_srv_cfg()
|
||||||
if not ext_srv_cfg.init():
|
if not ext_srv_cfg.init():
|
||||||
return 0
|
return 0
|
||||||
|
@ -197,6 +219,17 @@ class WebApp:
|
||||||
tp_cron().stop()
|
tp_cron().stop()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
if self._need_stop:
|
||||||
|
return
|
||||||
|
self._need_stop = True
|
||||||
|
cfg = tp_cfg()
|
||||||
|
try:
|
||||||
|
c = urllib.request.urlopen('http://127.0.0.1:{}{}'.format(cfg.common.port, cfg.random_exit_uri))
|
||||||
|
c.read()
|
||||||
|
except:
|
||||||
|
log.e('\n')
|
||||||
|
|
||||||
|
|
||||||
def tp_web_app():
|
def tp_web_app():
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
import tornado.ioloop
|
import tornado.ioloop
|
||||||
from app.base.controller import TPBaseHandler
|
from app.base.controller import TPBaseHandler
|
||||||
from app.base.logger import log
|
from app.base.logger import log
|
||||||
|
from app.base.configs import tp_cfg
|
||||||
from app.const import *
|
from app.const import *
|
||||||
from tornado.escape import json_encode
|
from tornado.escape import json_encode
|
||||||
|
|
||||||
|
@ -25,6 +26,11 @@ class IndexHandler(TPBaseHandler):
|
||||||
|
|
||||||
class CatchAllHandler(TPBaseHandler):
|
class CatchAllHandler(TPBaseHandler):
|
||||||
def get(self):
|
def get(self):
|
||||||
|
if self.request.uri == tp_cfg().random_exit_uri:
|
||||||
|
tornado.ioloop.IOLoop.instance().stop()
|
||||||
|
self.write('EXIT')
|
||||||
|
return
|
||||||
|
|
||||||
log.w('catch all, GET: {}\n'.format(self.request.uri))
|
log.w('catch all, GET: {}\n'.format(self.request.uri))
|
||||||
self.show_error_page(TPE_HTTP_404_NOT_FOUND)
|
self.show_error_page(TPE_HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
|
|
|
@ -124,13 +124,14 @@ def login(handler, username, password=None, oath_code=None, check_bind_oath=Fals
|
||||||
_ldap_server = tp_cfg().sys.ldap.server
|
_ldap_server = tp_cfg().sys.ldap.server
|
||||||
_ldap_port = tp_cfg().sys.ldap.port
|
_ldap_port = tp_cfg().sys.ldap.port
|
||||||
_ldap_base_dn = tp_cfg().sys.ldap.base_dn
|
_ldap_base_dn = tp_cfg().sys.ldap.base_dn
|
||||||
|
_ldap_use_ssl = tp_cfg().sys.ldap.use_ssl
|
||||||
except:
|
except:
|
||||||
msg = 'LDAP尚未正确配置'
|
msg = 'LDAP尚未正确配置'
|
||||||
syslog.sys_log(user_info, handler.request.remote_ip, TPE_USER_AUTH, msg)
|
syslog.sys_log(user_info, handler.request.remote_ip, TPE_USER_AUTH, msg)
|
||||||
return TPE_USER_AUTH, None, msg
|
return TPE_USER_AUTH, None, msg
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ldap = Ldap(_ldap_server, _ldap_port, _ldap_base_dn)
|
ldap = Ldap(_ldap_server, _ldap_port, _ldap_base_dn, _ldap_use_ssl)
|
||||||
ret, err_msg = ldap.valid_user(user_info['ldap_dn'], password)
|
ret, err_msg = ldap.valid_user(user_info['ldap_dn'], password)
|
||||||
if ret != TPE_OK:
|
if ret != TPE_OK:
|
||||||
if ret == TPE_USER_AUTH:
|
if ret == TPE_USER_AUTH:
|
||||||
|
|
Loading…
Reference in New Issue