from flask import Flask, render_template, redirect, url_for, send_from_directory, make_response, g from blueprint.blog_views import blog_bp from blueprint.study_views import study_bp from flask_autoindex import AutoIndex # from blueprint.admin_views import admin_bp import os import sqlite3 def get_owp_db_conn(): conn = sqlite3.connect('/var/open-ww3-project-ww3-tw/databases/sqlite/owp.db') conn.row_factory = sqlite3.Row return conn app = Flask(__name__, static_url_path='/static/') index_path = '/var/open-ww3-project-ww3-tw/mirrors/' index = AutoIndex(app, browse_root=index_path, add_url_rules=False) # session #app.secret_key = "508948973a8651f160baf3b26f18c47d" app.secret_key = '玩鵬畝遜溉痕叛課還擇鼇粹拜溜泉聰倡效蘭鱅都凍芝西鄂' # 注册蓝图 app.register_blueprint(blog_bp, url_prefix='/blog') app.register_blueprint(study_bp, url_prefix='/study') # app.register_blueprint(admin_bp, url_prefix='/admin') @app.route('/') def repage(): # return '' return redirect(url_for('blog.home')) @app.route('/greet//') def greet(name): return f'Hello, {name}!' # 全局清理关闭数据库连接 @app.teardown_appcontext def close_connection(exception): db = getattr(g, '_database', None) if db is not None: db.close() @app.route('/mirrors/') @app.route('/mirrors/') def autoindex(path='.'): return index.render_autoindex(path, template='mirrors.html') @app.route('/robots.txt/') def robots(): return send_from_directory(app.static_folder, 'robots.txt') @app.route('/google02f6a3f6004a32c6.html') def google02f6a3f6004a32c6(): return send_from_directory(app.static_folder, 'google02f6a3f6004a32c6.html') @app.route('/sitemap.xml/') def sitemap(): conn = get_owp_db_conn() sql_posts = "SELECT * from posts;" posts = conn.execute(sql_posts).fetchall() conn.close() template = render_template('sitemap.xml', posts=posts[::-1], base_url="https://open-ww3-project.ww3.tw/blog/") response = make_response(template) response.headers['Content-Type'] = 'application/xml' return response if __name__ == '__main__': app.run(host="0.0.0.0", port=8085, debug=True)