Răsfoiți Sursa

이메일 기능 수정 및 언어팩 세부사항 통폐합

Surplus_Up (2DU) 7 ani în urmă
părinte
comite
071a22e7c0
4 a modificat fișierele cu 66 adăugiri și 64 ștergeri
  1. 29 42
      app.py
  2. 27 0
      func.py
  3. 6 12
      language/en-US.json
  4. 4 10
      language/ko-KR.json

+ 29 - 42
app.py

@@ -5,7 +5,6 @@ import tornado.ioloop
 import tornado.httpserver
 import tornado.wsgi
 import urllib.request
-import email.mime.text
 import platform
 import zipfile
 import bcrypt
@@ -14,7 +13,6 @@ import shutil
 import threading
 import logging
 import random
-import smtplib
 import sys
 
 from func import *
@@ -61,24 +59,7 @@ app = flask.Flask(__name__, template_folder = './')
 flask_reggie.Reggie(app)
 
 compress = flask_compress.Compress()
-compress.init_app(app)
-
-smtp = smtplib.SMTP('smtp.gmail.com', 587)
-smtp.ehlo()
-smtp.starttls()
-
-curs.execute('select name, data from other where name = "g_email" or name = "g_pass"')
-rep_data = curs.fetchall()
-if rep_data:
-    g_email = ''
-    g_pass = ''
-    for i in rep_data:
-        if i[0] == 'g_email':
-            g_email = i[1]
-        else:
-            g_pass = i[1]
-
-    smtp.login(g_email, g_pass)
+# compress.init_app(app)
 
 class EverythingConverter(werkzeug.routing.PathConverter):
     regex = '.*?'
@@ -322,7 +303,7 @@ def alarm():
         for data_one in data_list:
             data += '<li>' + data_one[0] + ' (' + data_one[1] + ')</li>'
     else:
-        data += '<li>' + load_lang('no_alarm') + '</li>'
+        data += '<li>-</li>'
     
     data += '</ul>'
 
@@ -435,7 +416,7 @@ def setting(num = 0):
         return re_error('/ban')
 
     if num == 0:
-        li_list = [load_lang('main'), load_lang('set_text'), load_lang('main_head'), 'robots.txt', 'google']
+        li_list = [load_lang('main'), load_lang('set_text'), load_lang('main') + ' head', 'robots.txt', 'google']
         
         x = 0
         
@@ -451,8 +432,8 @@ def setting(num = 0):
             menu = [['manager', load_lang('admin')]]
         ))
     elif num == 1:
-        i_list = ['name', 'logo', 'frontpage', 'license', 'upload', 'skin', 'edit', 'reg', 'ip_view', 'back_up', 'port', 'key', 'update']
-        n_list = ['wiki', '', 'FrontPage', 'CC 0', '2', '', 'normal', '', '', '0', '3000', 'test', 'stable']
+        i_list = ['name', 'logo', 'frontpage', 'license', 'upload', 'skin', 'edit', 'reg', 'ip_view', 'back_up', 'port', 'key', 'update', 'email_have']
+        n_list = ['wiki', '', 'FrontPage', 'CC 0', '2', '', 'normal', '', '', '0', '3000', 'test', 'stable', '']
         
         if flask.request.method == 'POST':
             i = 0
@@ -508,6 +489,10 @@ def setting(num = 0):
             if d_list[8]:
                 ch_2 = 'checked="checked"'
             
+            ch_3 = ''
+            if d_list[13]:
+                ch_3 = 'checked="checked"'
+
             div2 = load_skin(d_list[5])
 
             div3 =''
@@ -547,24 +532,26 @@ def setting(num = 0):
                             <br>
                             <input placeholder="''' + load_lang('max_file_size') + '''" type="text" name="upload" value="''' + html.escape(d_list[4]) + '''">
                             <hr>
-                            <span>''' + load_lang('back_up_interval') + ' [' + load_lang('hour') + '] (off : 0) {' + load_lang('need_to_restart') + '''}</span>
+                            <span>''' + load_lang('backup_interval') + ' [' + load_lang('hour') + '''] (off : 0) {restart}</span>
                             <br>
                             <br>
-                            <input placeholder="''' + load_lang('back_up_interval') + '''" type="text" name="back_up" value="''' + html.escape(d_list[9]) + '''">
+                            <input placeholder="''' + load_lang('backup_interval') + '''" type="text" name="back_up" value="''' + html.escape(d_list[9]) + '''">
                             <hr>
                             <span>''' + load_lang('skin') + '''</span>
                             <br>
                             <br>
                             <select name="skin">''' + div2 + '''</select>
                             <hr>
-                            <span>''' + load_lang('default_acl') + '''</span>
+                            <span>''' + load_lang('default') + ''' acl</span>
                             <br>
                             <br>
                             <select name="edit">''' + div + '''</select>
                             <hr>
-                            <input type="checkbox" name="reg" ''' + ch_1 + '''> ''' + load_lang('unable_register') + '''
+                            <input type="checkbox" name="reg" ''' + ch_1 + '''> ''' + load_lang('register') + ''' X
+                            <hr>
+                            <input type="checkbox" name="ip_view" ''' + ch_2 + '''> ip ''' + load_lang('hide') + '''
                             <hr>
-                            <input type="checkbox" name="ip_view" ''' + ch_2 + '''> ''' + load_lang('ip_hidden') + '''
+                            <input type="checkbox" name="email_have" ''' + ch_3 + '''> must have email
                             <hr>
                             <span>''' + load_lang('port') + '''</span>
                             <br>
@@ -657,7 +644,7 @@ def setting(num = 0):
                 data = ''
 
             return easy_minify(flask.render_template(skin_check(), 
-                imp = [load_lang('main_head'), wiki_set(), custom(), other2([0, 0])],
+                imp = [load_lang('main') + ' head', wiki_set(), custom(), other2([0, 0])],
                 data =  '''
                         <form method="post">
                             <textarea rows="25" name="content">''' + html.escape(data) + '''</textarea>
@@ -748,7 +735,7 @@ def setting(num = 0):
                 imp = ['google', wiki_set(), custom(), other2([0, 0])],
                 data =  '''
                         <form method="post">
-                            <h2>recaptcha</h2>
+                            <h2><a href="https://www.google.com/recaptcha/admin">recaptcha</a></h2>
                             <span>recaptcha (html)</span>
                             <br>
                             <br>
@@ -759,16 +746,16 @@ def setting(num = 0):
                             <br>
                             <input placeholder="recaptcha (secret key)" type="text" name="sec_re" value="''' + html.escape(d_list[1]) + '''">
                             <hr>
-                            <h2>google imap {''' + load_lang('need_to_restart') + '''}</h1>
+                            <h2><a href="https://support.google.com/mail/answer/7126229">google imap</a> {restart}</h1>
                             <span>google email</span>
                             <br>
                             <br>
                             <input placeholder="google email" type="text" name="g_email" value="''' + html.escape(d_list[2]) + '''">
                             <hr>
-                            <span>google password</span>
+                            <span><a href="https://security.google.com/settings/security/apppasswords">google app password</a></span>
                             <br>
                             <br>
-                            <input placeholder="google password" type="password" name="g_pass" value="''' + html.escape(d_list[3]) + '''">
+                            <input placeholder="google app password" type="password" name="g_pass" value="''' + html.escape(d_list[3]) + '''">
                             <hr>
                             <button id="save" type="submit">''' + load_lang('save') + '''</button>
                         </form>
@@ -2577,9 +2564,9 @@ def login():
             imp = [load_lang('login'), wiki_set(), custom(), other2([0, 0])],
             data =  '''
                     <form method="post">
-                        <input placeholder="''' + load_lang('id') + '''" name="id" type="text">
+                        <input placeholder="id" name="id" type="text">
                         <hr>
-                        <input placeholder="''' + load_lang('password') + '''" name="pw" type="password">
+                        <input placeholder="password" name="pw" type="password">
                         <hr>
                         ''' + captcha_get() + '''
                         <button type="submit">''' + load_lang('login') + '''</button>
@@ -2663,13 +2650,13 @@ def change_password():
                         <form method="post">
                             <span>''' + load_lang('id') +  ' : ' + ip + '''</span>
                             <hr>
-                            <input placeholder="''' + load_lang('now') + ' ' + load_lang('password') + '''" name="pw" type="password">
+                            <input placeholder="''' + load_lang('now') + ''' password" name="pw" type="password">
                             <br>
                             <br>
-                            <input placeholder="''' + load_lang('new') + ' ' + load_lang('password') + '''" name="pw2" type="password">
+                            <input placeholder="''' + load_lang('new') + ''' password" name="pw2" type="password">
                             <br>
                             <br>
-                            <input placeholder="''' + load_lang('reconfirm') + '''" name="pw3" type="password">
+                            <input placeholder="password ''' + load_lang('confirm') + '''" name="pw3" type="password">
                             <hr>
                             <input placeholder="email" name="email" type="text" value="''' + email + '''">
                             <hr>
@@ -2837,11 +2824,11 @@ def register():
             data =  '''
                     <form method="post">
                         ''' + contract + '''
-                        <input placeholder="''' + load_lang('id') + '''" name="id" type="text">
+                        <input placeholder="id" name="id" type="text">
                         <hr>
-                        <input placeholder="''' + load_lang('password') + '''" name="pw" type="password">
+                        <input placeholder="password" name="pw" type="password">
                         <hr>
-                        <input placeholder="''' + load_lang('reconfirm') + '''" name="pw2" type="password">
+                        <input placeholder="''' + load_lang('confirm') + '''" name="pw2" type="password">
                         <hr>
                         ''' + captcha_get() + '''
                         <button type="submit">''' + load_lang('register') + '''</button>

+ 27 - 0
func.py

@@ -1,8 +1,10 @@
+import email.mime.text
 import flask
 import json
 import sqlite3
 import hashlib
 import requests
+import smtplib
 import re
 import html
 import os
@@ -22,6 +24,31 @@ def load_conn(data):
 
     load_conn2(data)
 
+def send_email(who, title, data):
+    smtp = smtplib.SMTP_SSL('smtp.gmail.com', 465)
+
+    curs.execute('select name, data from other where name = "g_email" or name = "g_pass"')
+    rep_data = curs.fetchall()
+    if rep_data:
+        g_email = ''
+        g_pass = ''
+        for i in rep_data:
+            if i[0] == 'g_email':
+                g_email = i[1]
+            else:
+                g_pass = i[1]
+
+        try:
+            smtp.login(g_email, g_pass)
+        except:
+            print('error : email login error')
+
+    msg = email.mime.text.MIMEText(data)
+    msg['Subject'] = title
+    smtp.sendmail(g_email, who, msg.as_string())
+
+    smtp.quit()
+
 def easy_minify(data):
     data = re.sub('\n +<', '\n<', data)
     

+ 6 - 12
language/en-US.json

@@ -5,21 +5,17 @@
     "delete" : "delete",
     "logo" : "logo",
     "regex" : "regex",
-    "frontpage" : "front page",
+    "frontpage" : "frontpage",
     "max_file_size" : "max file size",
-    "back_up_interval" : "backup interval",
-    "default_acl" : "default acl",
+    "backup_interval" : "backup interval",
+    "default" : "default",
     "language" : "language",
     "port" : "port",
     "secret_key" : "secret key",
     "update_branch" : "update branch",
     "main" : "main",
     "set_text" : "set up notices",
-    "main_head" : "global head",
     "indexing" : "indexing",
-    "ip_hidden" : "hide ip",
-    "need_to_restart" : "restart required",
-    "unable_register" : "unable to register",
     "easy" : "easy",
     "server" : "server",
     "load" : "load",
@@ -48,7 +44,7 @@
     "record" : "record",
     "name" : "name",
     "license" : "license",
-    "interwiki" : "inter wiki",
+    "interwiki" : "interwiki",
     "update" : "update",
     "setting" : "set",
     "create" : "create",
@@ -59,7 +55,7 @@
     "stop" : "stop",
     "restart" : "restart",
     "agreement" : "agreement",
-    "backlink" : "back link",
+    "backlink" : "backlink",
     "why" : "reason",
     "random" : "random",
     "authority" : "authority",
@@ -70,7 +66,6 @@
     "check" : "check",
     "user" : "user",
     "alarm" : "alarm",
-    "id" : "id",
     "preview" : "preview",
     "watchlist" : "watching list",
     "my_info" : "user set",
@@ -80,7 +75,6 @@
     "login" : "login",
     "logout" : "logout",
     "register" : "register",
-    "no_alarm" : "there is no alram available",
     "able" : "able",
     "second": "second",
     "normal" : "normal",
@@ -105,7 +99,7 @@
     "send" : "send",
     "reload" : "reload",
     "password" : "password",
-    "reconfirm" : "reconfirm",
+    "confirm" : "confirm",
 
     "user_head_warring" : "user's head will deleted if you close the browser or when you are editting as guest",
     "http_warring" : "warning : if you are not on https connection, your information can be leaked. we won't response to that.",

+ 4 - 10
language/ko-KR.json

@@ -35,7 +35,6 @@
     "login": "로그인",
     "logout": "로그아웃",
     "register": "회원가입",
-    "no_alarm": " 알림이 없습니다.",
     "able": "가능",
     "second": "초",
     "normal": "일반",
@@ -75,7 +74,6 @@
     "preview": "미리보기",
     "next": "다음",
     "previous": "이전",
-    "id" : "계정명",
     "no_login_warring": "비 로그인 상태로 진행 시 ip가 기록될 수 있습니다.",
     "state": "상태",
     "limitless": "무기한",
@@ -92,7 +90,7 @@
     "send" : "전송",
     "reload" : "새로고침",
     "password" : "암호",
-    "reconfirm" : "확인",
+    "confirm" : "확인",
     "authority_error": "권한이  부족합니다.",
     "no_login_error": "비 로그인 상태 입니다.",
     "no_exist_user_error": "계정이 없습니다.",
@@ -115,20 +113,16 @@
     "template": "틀",
     "out": "외부",
     "logo": "로고",
-    "frontpage": "메인 문서",
+    "frontpage": "대문",
     "max_file_size": "최대 파일 크기",
-    "back_up_interval": "백업 간격",
-    "default_acl": "기본 acl",
+    "backup_interval": "백업 간격",
+    "default": "기본",
     "port": "포트",
     "secret_key": "비밀키",
     "update_branch": "업데이트 브랜치",
     "main": "메인",
     "set_text": "안내문",
-    "main_head": "메인 head",
     "indexing" : "인덱싱",
-    "unable_register" : "가입 방지",
-    "ip_hidden" : "ip 숨기기",
-    "need_to_restart" : "재시작 필요",
     "register_text" : "회원가입 문구",
     "non_login_alert" : "비 로그인 경고문"
 }