From 581bef790c4c4b60411f26248a7bfe8f756cd60d Mon Sep 17 00:00:00 2001 From: linroex Date: Thu, 21 Oct 2021 02:52:10 -0400 Subject: [PATCH] update --- Config.sample.py | 8 +-- main.py | 26 +------- ntust_me_mail.py | 93 ----------------------------- requirements.txt | 23 ++++--- templates/email_service_verify.html | 10 ---- templates/index.html | 8 +-- templates/success_mail.html | 55 ----------------- templates/verify_mail.html | 55 ----------------- 8 files changed, 23 insertions(+), 255 deletions(-) delete mode 100644 ntust_me_mail.py delete mode 100644 templates/email_service_verify.html delete mode 100644 templates/success_mail.html delete mode 100644 templates/verify_mail.html diff --git a/Config.sample.py b/Config.sample.py index da26795..16e73c0 100644 --- a/Config.sample.py +++ b/Config.sample.py @@ -4,10 +4,6 @@ 'db_connection_string': 'mysql+mysqlconnector://shortenurl:Taj0moV2Ab0Wyb6I@localhost/shorturl', 'add_quota_per': 300, 'offset': 0, - 'API_URL': 'https://api.mailgun.net/v3', - 'API_KEY': '', - 'DOMAIN': '', - 'SENDER': '', - 'secret': '', - 'BASE_PATH': os.path.dirname(os.path.realpath(__file__)) + 'BASE_PATH': os.path.dirname(os.path.realpath(__file__)), + 'domain': 'https://nycu.one/' } \ No newline at end of file diff --git a/main.py b/main.py index a266ec0..c7366c1 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,5 @@ import sys -import ntust_me_mail as MailS import short_url import Helper @@ -88,7 +87,7 @@ def add(): db.session.add(Visit(request.environ['REMOTE_ADDR'], 'add')) db.session.commit() - return jsonify({'url': request.url_root + key}) + return jsonify({'url': config['domain'] + key}) @app.route('/', methods=['GET']) def go(key): @@ -99,28 +98,7 @@ def go(key): db.session.add(Visit(request.environ['REMOTE_ADDR'], 'go')) db.session.commit() - return redirect(result.url), 200 - -@app.route('/email/verify', methods=['GET']) -def email_verify(): - applier = Email_Apply.query.get(request.args['token']) - - if applier == None: - return render_template('email_service_verify.html', message='申請失敗,請聯繫 linroex@ntust.me') - else: - password = MailS.get_random_password(12) - - MailS.add_smtp_credentials(applier.username, password) - MailS.add_forward_route(applier.username, applier.email) - - email = applier.username + '@' + config['DOMAIN'] - - MailS.send_mail(email, 'NTUST.ME 電子信箱申請成功通知信', 'success_mail.html', data = {'name': applier.realname, 'email_address': email, 'password': password}) - - db.session.delete(applier) - db.session.commit() - - return render_template('email_service_verify.html', message='申請成功,請檢視信箱,會有相關使用資訊') + return redirect(result.url) if __name__ == '__main__': if sys.argv[1] == 'init': diff --git a/ntust_me_mail.py b/ntust_me_mail.py deleted file mode 100644 index 89a4fc1..0000000 --- a/ntust_me_mail.py +++ /dev/null @@ -1,93 +0,0 @@ -import csv -import requests - -from requests.auth import HTTPBasicAuth -from Config import config - -from flask import Flask - -from flask_sqlalchemy import SQLAlchemy - -app = Flask(__name__) - -app.config.setdefault('SQLALCHEMY_TRACK_MODIFICATIONS', True) -app.config['SQLALCHEMY_DATABASE_URI'] = config['db_connection_string'] - -db = SQLAlchemy(app) - -class Email_Apply(db.Model): - token = db.Column(db.String(65), primary_key=True) - realname = db.Column(db.String(15)) - username = db.Column(db.String(15)) - email = db.Column(db.String(255)) - - def __init__(self, realname, username, email, token): - self.token = token - self.realname = realname - self.username = username - self.email = email.lower() - -def generate_verify_token(email): - import hashlib - from time import time - - return hashlib.sha224((email + str(time()) + config['secret']).encode('utf8')).hexdigest() - -def get_random_password(length): - from random import choice - from string import ascii_uppercase - - return ''.join([choice(ascii_uppercase) for c in range(length)]) - -def add_smtp_credentials(login, password): - return requests.post( - '{API_URL}/domains/{DOMAIN}/credentials'.format(API_URL=config['API_URL'], DOMAIN=config['DOMAIN']), - auth = HTTPBasicAuth('api', config['API_KEY']), - data = { - 'login': login, - 'password': password - } - ) - -def send_mail(receiver, subject, template, data): - content = open(config['BASE_PATH'] + '/templates/' + template, encoding='utf-8').read().format(**data) - - return requests.post( - '{API_URL}/{DOMAIN}/messages'.format(API_URL=config['API_URL'], DOMAIN=config['DOMAIN']), - auth=("api", config['API_KEY']), - data={"from": config['SENDER'], - "to": receiver, - "subject": subject, - "html": content, - "o:tracking-opens":True}) - -def add_forward_route(login, forward_dest): - return requests.post( - '{API_URL}/routes'.format(API_URL=config['API_URL']), - auth = HTTPBasicAuth('api', config['API_KEY']), - data = { - 'priority': 0, - 'description': '{login}@{DOMAIN} forward route'.format(login=login, DOMAIN=config['DOMAIN']), - "expression": 'match_recipient("{login}@{DOMAIN}")'.format(login=login, DOMAIN=config['DOMAIN']), - "action": 'forward("{dest}")'.format(dest=forward_dest) - } - ) - -def main(): - with open('/Users/linroex/Downloads/NTUST.ME 信箱封測申請-report (1).csv', encoding='utf8') as f: - f.readline() - appliers = csv.reader(f) - - for applier in appliers: - name = applier[1] - login = applier[2] - email = applier[3] - token = generate_verify_token(email) - - send_mail(email, 'NTUST.ME 電子信箱申請確認信', 'verify_mail.html', data = {'name': name, 'token': token}) - - db.session.add(Email_Apply(name, login, email, token)) - db.session.commit() - -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 1688357..fad5f65 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,18 @@ -Flask==0.10.1 -Flask-SQLAlchemy==2.1 -itsdangerous==0.24 -Jinja2==2.8 -MarkupSafe==0.23 +click==8.0.3 +dataclasses==0.8 +Flask==2.0.2 +Flask-SQLAlchemy==2.5.1 +greenlet==1.1.2 +gunicorn==20.1.0 +importlib-metadata==4.8.1 +itsdangerous==2.0.1 +Jinja2==3.0.2 +MarkupSafe==2.0.1 mysql-connector-python==8.0.15 +protobuf==3.18.1 requests==2.9.1 short-url==1.2.1 -SQLAlchemy==1.0.11 -Werkzeug==0.11.3 -wheel==0.24.0 +SQLAlchemy==1.4.25 +typing-extensions==3.10.0.2 +Werkzeug==2.0.2 +zipp==3.6.0 diff --git a/templates/email_service_verify.html b/templates/email_service_verify.html deleted file mode 100644 index 36c6484..0000000 --- a/templates/email_service_verify.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - NTUST.ME 電子郵件服務 - - -

{{message}}

- - \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 20538f0..c8d0d8e 100644 --- a/templates/index.html +++ b/templates/index.html @@ -2,7 +2,7 @@ - NTUST Shorten URL + NYCU Shorten URL @@ -82,7 +82,7 @@

Hi

- 這是台科人專屬的短網址服務,目前十分簡易,歡迎有志參與改善的朋友和聯絡
請在下方輸入要縮的網址,多行網址請換行。 + 這是 NYCU.ONE 短網址服務,目前十分簡易,歡迎有志參與改善的朋友和聯絡
請在下方輸入要縮的網址,多行網址請換行。


@@ -105,10 +105,10 @@

轉換結果

- + - + diff --git a/templates/success_mail.html b/templates/success_mail.html deleted file mode 100644 index 241b95b..0000000 --- a/templates/success_mail.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -NTUST.ME 電子信箱申請成功通知信 - - - - - - - - - - - - -
-
- - - - - - - -
- NTUST.ME 電子信箱申請成功通知信 -
- - - - - - - - - - -
- 親愛的 {name} 您好,您申請的 NTUST.ME 電子信箱服務業已開通,相關資訊如下 -
- 電子信箱: {email_address} -
- 因技術問題,目前暫不提供 SMTP 資訊,預估 3 - 5 天時間會在發送另一封信件,並提供 SMTP 資訊 -
-
-
- -
-
- - - diff --git a/templates/verify_mail.html b/templates/verify_mail.html deleted file mode 100644 index d8ad77e..0000000 --- a/templates/verify_mail.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -NTUST.ME 電子信箱申請確認信 - - - - - - - - - - - - -
-
- - - - - - - -
- NTUST.ME 電子信箱申請確認信 -
- - - - - - - - - - -
- 親愛的 {name} 您好,感謝您申請 NTUST.ME 非台科官方電子郵件服務,為確保您的收件地址有效,特發送該信件,請點擊下方按鈕進行啟用。 -
- 啟用 -
- 如果按鈕無法點擊,也可使用該連結進行啟用: http://ntust.me/email/verify?token={token} -
-
-
- -
-
- - -