Spaces:
Paused
Paused
File size: 2,552 Bytes
85c5f42 7ad0570 21eb37c 7ad0570 21eb37c 85c5f42 21eb37c 85c5f42 21eb37c 85c5f42 21eb37c 85c5f42 21eb37c 85c5f42 f9cf047 85c5f42 0bac7c0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
from flask import Flask, render_template, request, jsonify
from form_filler import FormFiller
import threading
import os
import logging
import random
from concurrent.futures import ThreadPoolExecutor
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from xvfbwrapper import Xvfb
from threading import Lock, Event
# Create a logger
logger = logging.getLogger(__name__)
# Set up the Flask application
app = Flask(__name__)
# Create a FormFiller instance
form_filler = FormFiller()
# Define the routes for the Flask application
@app.route('/')
def index():
return render_template('index.html')
@app.route('/start', methods=['POST'])
def start_form_filling():
url = request.json['url']
iterations = int(request.json['iterations'])
def run_form_filler():
try:
form_filler.fill_form_in_parallel(url, iterations)
except Exception as e:
logger.error(f"Error occurred: {e}")
form_filler.total_iterations = iterations
form_filler.iterations_left = iterations
form_filler.responses_sent = 0
form_filler.errors = 0
form_filler.environment_status = []
thread = threading.Thread(target=run_form_filler)
thread.start()
return jsonify({"message": "Form filling started"})
@app.route('/stop', methods=['POST'])
def stop_form_filling():
form_filler.stop()
return jsonify({"message": "Form filling stopped"})
@app.route('/status', methods=['GET'])
def get_status():
with form_filler.lock:
if form_filler.responses_sent == 0 and form_filler.errors == 0 and form_filler.iterations_left == form_filler.total_iterations:
# This condition checks if everything is still initializing
return jsonify({
"total_iterations": form_filler.total_iterations,
"responses_sent": None, # Return None instead of 0 to indicate uninitialized
"errors": None,
"iterations_left": form_filler.iterations_left,
"environment_status": None
})
else:
return jsonify({
"total_iterations": form_filler.total_iterations,
"responses_sent": form_filler.responses_sent,
"errors": form_filler.errors,
"iterations_left": form_filler.iterations_left,
"environment_status": list(form_filler.environment_status)
})
if __name__ == '__main__':
app.run()
|