From 6931e7914ea8c51eadc67050f0cdf3ffcfcb789b Mon Sep 17 00:00:00 2001 From: zhouping Date: Mon, 24 Jun 2024 09:59:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- website/app.py | 111 +++++++++++++++-------------- website/handler.py | 13 +++- website/handlers/system/handler.py | 5 +- website/handlers/user/handler.py | 8 +-- website/handlers/user/url.py | 1 + 5 files changed, 77 insertions(+), 61 deletions(-) diff --git a/website/app.py b/website/app.py index f1c24ae..62759c0 100644 --- a/website/app.py +++ b/website/app.py @@ -10,12 +10,12 @@ import tornado.ioloop import tornado.options import tornado.web # import tornado.websocket -import torndb +# import torndb import importlib # from confluent_kafka import Producer # from rediscluster import StrictRedisCluster # from redis import sentinel -from rediscluster import RedisCluster +# from rediscluster import RedisCluster # from redis.sentinel import Sentinel # from tornado.options import define, options from tornado.options import options, define as _define, parse_command_line @@ -59,54 +59,54 @@ from website.urls import handlers, page_handlers # from website.urls import handlers_v2 # print(os.path.dirname(os.path.abspath(__file__))) -class Connection(torndb.Connection): - def __init__(self, - host, - database, - user=None, - password=None, - max_idle_time=7 * 3600, - connect_timeout=500, - time_zone="+0:00"): - self.host = host - self.database = database - self.max_idle_time = float(max_idle_time) - - args = dict(conv=torndb.CONVERSIONS, - use_unicode=True, - charset="utf8", - db=database, - init_command=('SET time_zone = "%s";' % - time_zone), - connect_timeout=connect_timeout, - sql_mode="TRADITIONAL") - if user is not None: - args["user"] = user - if password is not None: - args["passwd"] = password - - # We accept a path to a MySQL socket file or a host(:port) string - if "/" in host: - args["unix_socket"] = host - else: - self.socket = None - pair = host.split(":") - if len(pair) == 2: - args["host"] = pair[0] - args["port"] = int(pair[1]) - else: - args["host"] = host - args["port"] = 3306 - - self._db = None - self._db_args = args - self._last_use_time = time.time() - try: - self.reconnect() - except Exception: - logging.error("Cannot connect to MySQL on %s", - self.host, - exc_info=True) +# class Connection(torndb.Connection): +# def __init__(self, +# host, +# database, +# user=None, +# password=None, +# max_idle_time=7 * 3600, +# connect_timeout=500, +# time_zone="+0:00"): +# self.host = host +# self.database = database +# self.max_idle_time = float(max_idle_time) +# +# args = dict(conv=torndb.CONVERSIONS, +# use_unicode=True, +# charset="utf8", +# db=database, +# init_command=('SET time_zone = "%s";' % +# time_zone), +# connect_timeout=connect_timeout, +# sql_mode="TRADITIONAL") +# if user is not None: +# args["user"] = user +# if password is not None: +# args["passwd"] = password +# +# # We accept a path to a MySQL socket file or a host(:port) string +# if "/" in host: +# args["unix_socket"] = host +# else: +# self.socket = None +# pair = host.split(":") +# if len(pair) == 2: +# args["host"] = pair[0] +# args["port"] = int(pair[1]) +# else: +# args["host"] = host +# args["port"] = 3306 +# +# self._db = None +# self._db_args = args +# self._last_use_time = time.time() +# try: +# self.reconnect() +# except Exception: +# logging.error("Cannot connect to MySQL on %s", +# self.host, +# exc_info=True) # class NoCacheStaticFileHandler(tornado.web.StaticFileHandler): @@ -158,11 +158,12 @@ class Application(tornado.web.Application): # self.r_app = rs.master_for(settings.redis_sentinel_master, # socket_timeout=0.1, # password=settings.redis_sentinel_pwd) - if settings.redis_cluster == 1: - self.r_app = RedisCluster(startup_nodes=settings.redis_app_cluster_notes, decode_responses=True, - password=settings.redis_cluster_pwd) - else: - self.r_app = redis.Redis(*settings.redis_app, decode_responses=True) + # if settings.redis_cluster == 1: + # self.r_app = RedisCluster(startup_nodes=settings.redis_app_cluster_notes, decode_responses=True, + # password=settings.redis_cluster_pwd) + # else: + # self.r_app = redis.Redis(*settings.redis_app, decode_responses=True) + self.r_app = redis.Redis(*settings.redis_app, decode_responses=True) # self.r_app = redis.Redis(*settings.redis_app) # self.kafka_producer = Producer(**settings.kafka_conf) diff --git a/website/handler.py b/website/handler.py index b520865..361e60c 100644 --- a/website/handler.py +++ b/website/handler.py @@ -20,12 +20,13 @@ from tornado.httpclient import AsyncHTTPClient, HTTPRequest from tornado.options import options # from tornado.web import RequestHandler as BaseRequestHandler, HTTPError, asynchronous from tornado.web import RequestHandler as BaseRequestHandler, HTTPError -from torndb import Row from website import errors from website import settings from website.service.license import get_license_status +# from torndb import Row + if settings.enable_curl_async_http_client: AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient") else: @@ -34,6 +35,16 @@ else: REMOVE_SLASH_RE = re.compile(".+/$") +class Row(dict): + """A dict that allows for object-like property access syntax.""" + + def __getattr__(self, name): + try: + return self[name] + except KeyError: + raise AttributeError(name) + + def _callback_wrapper(callback): """A wrapper to handling basic callback error""" diff --git a/website/handlers/system/handler.py b/website/handlers/system/handler.py index 750cb92..494f847 100644 --- a/website/handlers/system/handler.py +++ b/website/handlers/system/handler.py @@ -44,7 +44,10 @@ class LicenseUploadHandler(APIHandler): file = file_metas[0] filename = file.filename - punctuation = """!"#$%&'()*+,/:;<=>?@[\]^`{|}~ """ + # punctuation = """!"#$%&'()*+,/:;<=>?@[\]^`{|}~ """ + # punctuation = """!"#$%&'()*+,/:;<=>?@[\\]^`{|}~ """ + punctuation = r"""!"#$%&'()*+,/:;<=>?@[\]^`{|}~ """ + regex = re.compile('[%s]' % re.escape(punctuation)) filename = regex.sub("", filename.replace('..', '')) file_size = len(file.body) diff --git a/website/handlers/user/handler.py b/website/handlers/user/handler.py index 2c4ed98..38d719a 100644 --- a/website/handlers/user/handler.py +++ b/website/handlers/user/handler.py @@ -171,13 +171,13 @@ class LoginHandler(APIHandler): class UserInfoHandler(APIHandler): def post(self): - token = self.get_argument("token") - user = self.get_current_user(token_body=self.tostr(token)) + # token = self.get_argument("token") + # user = self.get_current_user(token_body=self.tostr(token)) + user = self.get_current_user() if not user: raise errors.HTTPAPIError(errors.ERROR_UNAUTHORIZED) - self.finish({"name": user.name, "role": user.role}) - + self.finish({"name": user.name, "avtar": ""}) class UserListHandler(APIHandler): @authenticated diff --git a/website/handlers/user/url.py b/website/handlers/user/url.py index 9743e31..f4d2eae 100644 --- a/website/handlers/user/url.py +++ b/website/handlers/user/url.py @@ -8,6 +8,7 @@ handlers = [ # ("/user/info", handler.UserInfoHandler), ("/login", handler.LoginHandler), ("/logout", handler.LogoutHandler), + ("/user/info", handler.UserInfoHandler), ("/users", handler.UserListHandler), ]