from flask import Flask, request, render_template_string, send_from_directory, jsonify from flask import render_template import sqlite3 import os import uuid own_url = os.getenv('own_url') # URL сервера import unittest from whatsapp_api_webhook_server_python.webhooksHandler import startServer app = Flask(__name__, template_folder="./") app.config['DEBUG'] = True UPLOAD_FOLDER = 'static' # Создание директории, если она не существует if not os.path.exists(UPLOAD_FOLDER): os.makedirs(UPLOAD_FOLDER) # Создание базы данных и таблицы def init_db(): try: conn = sqlite3.connect('data.db') cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS contacts ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, phone TEXT NOT NULL, email TEXT NOT NULL ) ''') conn.commit() conn.close() except Exception as e: print(f"Error initializing database: {e}") # Вызов функции для инициализации базы данных init_db() @app.route('/settings', methods=['GET']) def settings(): return render_template('settings.html') @app.route('/online', methods=['GET']) def onli(): return render_template('online.html') @app.route('/ver', methods=['GET']) def veref(): return render_template('ver.html') @app.route('/se_mes', methods=['GET']) def se_mes(): return render_template('se_mes.html') @app.route('/se_mes_im', methods=['GET']) def se_mes_im(): return render_template('se_mes_im.html') @app.route('/se_mes_im2', methods=['GET']) def se_mes_im2(): return render_template('se_mes_im2.html') @app.route('/se_mes_f', methods=['GET']) def se_mes_f(): return render_template('se_mes_f.html') @app.route('/up_gr', methods=['GET']) def up_gr(): return render_template('up_gr.html') @app.route('/up_user_gp', methods=['GET']) def up_user_gp(): return render_template('up_user_gp.html') @app.route('/del_user_gp', methods=['GET']) def del_user_gp(): return render_template('del_user_gp.html') @app.route('/online', methods=['GET']) def online(): return render_template('online.html') @app.route('/upload', methods=['POST']) def upload_file(): if 'file' not in request.files: return "No file part", 400 file = request.files['file'] if file.filename == '': return "No selected file", 400 # Генерация уникального имени файла unique_filename = str(uuid.uuid4()) + os.path.splitext(file.filename)[1] save_path = os.path.join(UPLOAD_FOLDER, unique_filename) file.save(save_path) # Возвращаем полный URL загруженного файла с протоколом https full_url = request.url_root.replace('http://', 'https://') + 'uploads/' + unique_filename return f"File uploaded successfully and saved to {full_url}", 200 @app.route('/uploads/', methods=['GET']) def uploaded_file(filename): return send_from_directory(UPLOAD_FOLDER, filename) @app.route('/up_fa', methods=['GET']) def up_fa(): return render_template('up_fa.html') # Маршрут для обработки GET-запроса @app.route('/add_contact', methods=['GET']) def add_contact(): try: name = request.args.get('name') phone = request.args.get('phone') email = request.args.get('email') if not name or not phone or not email: return "Parameters 'name', 'phone', and 'email' are required.", 400 conn = sqlite3.connect('data.db') cursor = conn.cursor() cursor.execute('INSERT INTO contacts (name, phone, email) VALUES (?, ?, ?)', (name, phone, email)) conn.commit() conn.close() return f"Contact added: {name} - {phone} - {email}", 200 except Exception as e: print(f"Error adding contact: {e}") return "Internal Server Error", 500 # Маршрут для отображения таблицы контактов @app.route('/contacts') def show_contacts(): try: conn = sqlite3.connect('data.db') cursor = conn.cursor() cursor.execute('SELECT name, phone, email FROM contacts') contacts = cursor.fetchall() conn.close() # HTML-шаблон для отображения таблицы html = ''' Contacts

Contacts

{% for contact in contacts %} {% endfor %}
Name Phone Email
{{ contact[0] }} {{ contact[1] }} {{ contact[2] }}
''' return render_template_string(html, contacts=contacts) except Exception as e: print(f"Error showing contacts: {e}") return "Internal Server Error", 500 if __name__ == '__main__': app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))