65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
import sqlite3
|
|
import argparse
|
|
import json
|
|
|
|
DB_NAME = 'form_filler.db'
|
|
conn = sqlite3.connect(DB_NAME)
|
|
|
|
def add_website(address, json_data):
|
|
try:
|
|
form_fields = json.loads(json_data)
|
|
form_fields["task"] = "form.message"
|
|
except json.JSONDecodeError:
|
|
print("Nieprawidłowy JSON!")
|
|
return
|
|
|
|
try:
|
|
conn.execute("INSERT INTO websites (address) VALUES (?)", (address,))
|
|
conn.execute("INSERT INTO data (website_address, form_fields) VALUES (?, ?)",
|
|
(address, json.dumps(form_fields)))
|
|
|
|
conn.commit()
|
|
print(f"Dodano stronę {address} z podanymi polami.")
|
|
except sqlite3.IntegrityError:
|
|
print(f"Strona już istnieje w bazie! Użyj flagi --remove aby ją usunąć.")
|
|
|
|
def remove_website(address):
|
|
cur = conn.execute("DELETE FROM websites WHERE address = ?", (address,))
|
|
conn.commit()
|
|
|
|
if cur.rowcount:
|
|
print(f"Usunięto dane strony o adresie {address}")
|
|
else:
|
|
print(f"Nie znaleziono strony o adresie {address}")
|
|
|
|
def list_websites():
|
|
rows = conn.execute("SELECT id, address, active FROM websites").fetchall()
|
|
for row in rows:
|
|
print(f"[{row[0]}] {row[1]} - {'WŁĄCZONA' if row[2] else 'WYŁĄCZONA'}")
|
|
|
|
def set_active_status(address, status):
|
|
conn.execute("UPDATE websites SET active = ? WHERE address = ?", (1 if status else 0, address))
|
|
conn.commit()
|
|
print(f"Ustawiono testowanie formularza w witrynie {address}")
|
|
|
|
def cli():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--add", nargs=2, metavar=("address", "fields"), help="Dodaj nową witrynę")
|
|
parser.add_argument("--remove", help="Usuń witrynę z bazy danych")
|
|
parser.add_argument("--active", nargs=2, metavar=("address", "0|1"), help="Włącz/wyłącz testowanie formularza na witrynie")
|
|
parser.add_argument("--list", action="store_true", help="Pokaż listę witryn")
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.add:
|
|
add_website(args.add[0], args.add[1])
|
|
elif args.remove:
|
|
remove_website(args.remove)
|
|
elif args.active:
|
|
set_active_status(args.active[0], bool(int(args.active[1])))
|
|
elif args.list:
|
|
list_websites()
|
|
|
|
if __name__ == "__main__":
|
|
cli()
|