Bläddra i källkod

feat: 添加Web模块

SongZihuan 2 år sedan
förälder
incheckning
b8f679cbce
3 ändrade filer med 57 tillägg och 0 borttagningar
  1. 16 0
      mail-web.py
  2. 6 0
      web/__init__.py
  3. 35 0
      web/configure.py

+ 16 - 0
mail-web.py

@@ -0,0 +1,16 @@
+from web import HuamMailFlask
+from web.configure import configure
+
+import os
+import logging
+
+env_dict = os.environ
+huan_mail_conf = env_dict.get("HUAN_MAIL_CONF")
+if huan_mail_conf is None:
+    logging.info("Configure file ./etc/conf.json")
+    configure("./etc/conf.json")
+else:
+    logging.info(f"Configure file {huan_mail_conf}")
+    configure(huan_mail_conf)
+
+app = HuamMailFlask(__name__)

+ 6 - 0
web/__init__.py

@@ -0,0 +1,6 @@
+from flask import Flask
+
+
+class HuamMailFlask(Flask):
+    def __init__(self, import_name):
+        super(HuamMailFlask, self).__init__(import_name)

+ 35 - 0
web/configure.py

@@ -0,0 +1,35 @@
+import json
+import logging
+import os
+from typing import Dict
+
+
+conf: Dict[str, any] = {
+    "DEBUG_PROFILE": False,
+    "SMTP_JSON": "smtp.json",
+    "IMAP_JSON": "imap.json",
+    "SECRET_KEY": "HuanMail-R-Salt",
+    "LOG_HOME": "",
+    "LOG_FORMAT": "[%(levelname)s]:%(name)s:%(asctime)s "
+                  "(%(filename)s:%(lineno)d %(funcName)s) "
+                  "%(process)d %(thread)d "
+                  "%(message)s",
+    "LOG_LEVEL": logging.INFO,
+    "LOG_STDERR": True,
+    "LOGO": "HuanMail.ico",
+}
+
+
+
+def configure(conf_file: str, encoding="utf-8"):
+    """ 运行配置程序, 该函数需要在其他模块被执行前调用 """
+    with open(conf_file, mode="r", encoding=encoding) as f:
+        json_str = f.read()
+        conf.update(json.loads(json_str))
+    if type(conf["LOG_LEVEL"]) is str:
+        conf["LOG_LEVEL"] = {"debug": logging.DEBUG,
+                             "info": logging.INFO,
+                             "warning": logging.WARNING,
+                             "error": logging.ERROR}.get(conf["LOG_LEVEL"])
+    if len(conf["LOG_HOME"]) > 0:
+        os.makedirs(conf["LOG_HOME"], exist_ok=True)