|  | 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') | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | 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('/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) | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | 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/<filename>', 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') | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | @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 = ''' | 
					
						
						|  | <!doctype html> | 
					
						
						|  | <html lang="en"> | 
					
						
						|  | <head> | 
					
						
						|  | <meta charset="utf-8"> | 
					
						
						|  | <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> | 
					
						
						|  | <title>Contacts</title> | 
					
						
						|  | <style> | 
					
						
						|  | table { | 
					
						
						|  | width: 70%; | 
					
						
						|  | border-collapse: collapse; | 
					
						
						|  | } | 
					
						
						|  | th, td { | 
					
						
						|  | border: 1px solid black; | 
					
						
						|  | padding: 8px; | 
					
						
						|  | text-align: left; | 
					
						
						|  | } | 
					
						
						|  | th { | 
					
						
						|  | background-color: #f2f2f2; | 
					
						
						|  | } | 
					
						
						|  | </style> | 
					
						
						|  | </head> | 
					
						
						|  | <body> | 
					
						
						|  | <h1>Contacts</h1> | 
					
						
						|  | <table> | 
					
						
						|  | <tr> | 
					
						
						|  | <th>Name</th> | 
					
						
						|  | <th>Phone</th> | 
					
						
						|  | <th>Email</th> | 
					
						
						|  | </tr> | 
					
						
						|  | {% for contact in contacts %} | 
					
						
						|  | <tr> | 
					
						
						|  | <td>{{ contact[0] }}</td> | 
					
						
						|  | <td>{{ contact[1] }}</td> | 
					
						
						|  | <td>{{ contact[2] }}</td> | 
					
						
						|  | </tr> | 
					
						
						|  | {% endfor %} | 
					
						
						|  | </table> | 
					
						
						|  | </body> | 
					
						
						|  | </html> | 
					
						
						|  | ''' | 
					
						
						|  |  | 
					
						
						|  | 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))) | 
					
						
						|  |  |