from flask import Flask, render_template, request, redirect, url_for, session, g, jsonify, flash, make_response
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
from flask_limiter import RateLimitExceeded
from flask_bcrypt import Bcrypt
from flask_caching import Cache
from flask_minify import Minify
from flask_compress import Compress
from fastapi import FastAPI
from urllib.parse import quote
from starlette.middleware.wsgi import WSGIMiddleware
from werkzeug.utils import secure_filename
from http.server import HTTPServer, BaseHTTPRequestHandler
from telegram_bot.database import get_user_info
import sqlite3
import hashlib
from capcha import generate_captcha
from config import *
from utils import *
from db import create_db
from ai_bot import generate_response, conversation_history
from api.v2.routes import v2_blueprint
from apscheduler.schedulers.background import BackgroundScheduler
from yoomoney import Quickpay, Client
import random
import datetime
import pytz
import sys
import os
import logging
import requests
from logging.handlers import RotatingFileHandler
import asyncio
import threading
# Инициализация приложения Flask
app = Flask(__name__)
bcrypt = Bcrypt(app)
cache = Cache(app, config={'CACHE_TYPE': 'SimpleCache'})
#Minify(app=app, html=True, js=True, cssless=True, bypass=['image/*', 'application/octet-stream'], fail_safe=True)
Compress(app)
app.register_blueprint(v2_blueprint, url_prefix='/api/v2')
app.config['SECRET_KEY'] = SECRET_KEY
app.config['UPLOAD_FOLDER'] = "static/images/"
app.config['SESSION_COOKIE_SECURE'] = False # Игнорировать secure cookies для .onion
app.config['SESSION_COOKIE_HTTPONLY'] = True # Предотвратить доступ к куке через JavaScript
LOG_FOLDER = 'logs'
SERVER_LOG_FOLDER = 'server_logs'
DATABASE_BACKUP = "DataBase_backup"
NONE_AVATAR_FOLDER = 'static/images/none_avatar.png'
limiter = Limiter(key_func=get_remote_address, app=app, default_limits=["20000 per day", "5000 per hour"])
# Маршрут для главной страницы
@app.route("/")
def index():
write_to_log(message="Зашли на сайт", folder=LOG_FOLDER)
update_online()
title = "Dialogia"
conn = sqlite3.connect('db.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM categories')
rows = cursor.fetchall()
categories = []
for row in rows:
category = {'id': row[0], 'name': row[1]}
cursor.execute('SELECT * FROM forums WHERE category_id=?', (row[0],))
forums_rows = cursor.fetchall()
forums = []
for forum_row in forums_rows:
forum = {'id': forum_row[0], 'name': forum_row[2]}
forums.append(forum)
category['forums'] = forums
categories.append(category)
conn.close()
return render_template("index.html", title=title, categories=categories)
# Запуск приложения
if __name__ == '__main__':
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
write_to_serverlog("Сервер запущен!", SERVER_LOG_FOLDER)
try:
# Код запуска вашего сервера
app.run(debug=True, host="127.0.0.1", port=5000)
#app.wsgi_app = WSGIMiddleware(fastapi_app ,app.wsgi_app)
except Exception as e:
write_to_serverlog(f'Ошибка при запуске сервера: {e}', SERVER_LOG_FOLDER)
finally:
write_to_serverlog('Сервер остановлен', SERVER_LOG_FOLDER)
@app.route('/forum/<int:forum_id>')
def forum(forum_id):
print(forum_id)
conn = sqlite3.connect("db.db")
cursor = conn.cursor()
cursor.execute('PRAGMA table_info(forums)')
print(cursor.fetchall())
cursor.execute('SELECT * FROM forums WHERE id=?', (forum_id,))
forum_data = cursor.fetchone()
print(forum_data)
cursor.execute('SELECT * FROM threads WHERE forum_id=?', (forum_id,))
threads = cursor.fetchall()
conn.close()
if forum_data is None:
return 'Форум не найден'
else:
return render_template('forum.html', forum=forum_data, threads=threads)
print(forum_data)
1
[(0, 'id ', 'INTEGER', 0, None, 1), (1, 'category_id', 'INTEGER', 1, None, 0), (2, 'name', 'TEXT', 1, None, 0)]
127.0.0.1 - - [26/Nov/2024 17:00:29] "GET /forum/1 HTTP/1.1" 500 -
Traceback (most recent call last):
File "C:\Users\markp\PycharmProjects\pythonProject\.venv\Lib\site-packages\flask\app.py", line 1498, in __call__
return self.wsgi_app(environ, start_response)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\markp\PycharmProjects\pythonProject\.venv\Lib\site-packages\flask\app.py", line 1476, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\markp\PycharmProjects\pythonProject\.venv\Lib\site-packages\flask\app.py", line 1473, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\markp\PycharmProjects\pythonProject\.venv\Lib\site-packages\flask\app.py", line 882, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\markp\PycharmProjects\pythonProject\.venv\Lib\site-packages\flask\app.py", line 880, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\markp\PycharmProjects\pythonProject\.venv\Lib\site-packages\flask\app.py", line 865, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "C:\Users\markp\PycharmProjects\pythonProject\Forum\main.py", line 192, in forum
cursor.execute('SELECT * FROM forums WHERE id=?', (forum_id,))
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sqlite3.OperationalError: no such column: id
127.0.0.1 - - [26/Nov/2024 17:00:29] "GET /forum/1?__debugger__=yes&cmd=resource&f=style.css HTTP/1.1" 304 -
127.0.0.1 - - [26/Nov/2024 17:00:29] "GET /forum/1?__debugger__=yes&cmd=resource&f=debugger.js HTTP/1.1" 304 -
127.0.0.1 - - [26/Nov/2024 17:00:29] "GET /forum/1?__debugger__=yes&cmd=resource&f=console.png&s=krEwKPMqQYjt9zZhWz3g HTTP/1.1" 200 -
127.0.0.1 - - [26/Nov/2024 17:00:29] "GET /forum/1?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 304 -