2023-05-16 16:33:36 -04:00
|
|
|
from database import Database
|
|
|
|
from scrapper import get_files, get_uri
|
2023-05-17 05:08:40 -04:00
|
|
|
from utils import get_url, get
|
2023-05-20 13:04:18 -04:00
|
|
|
import platform
|
2023-05-27 18:16:46 -04:00
|
|
|
from terminal_menu.Menu import Menu
|
2023-05-20 13:04:18 -04:00
|
|
|
|
2023-05-16 16:33:36 -04:00
|
|
|
|
2023-05-16 17:25:05 -04:00
|
|
|
uri = ""
|
|
|
|
preview_site = {}
|
2023-05-17 05:08:40 -04:00
|
|
|
preview_database = ""
|
2023-05-16 16:33:36 -04:00
|
|
|
|
2023-05-29 13:23:39 -04:00
|
|
|
def get_user_choice_by_menu(options: list, title = None, preview_command=None, preview_size: float = 0.3, show_search_hint: bool = False, skip_empty_entries = False, cursor_pos: int = 0):
|
|
|
|
menu = Menu(options, title, preview_body_function=preview_command, preview_ratio=preview_size, skip_empty_option=skip_empty_entries, cursor_pos=cursor_pos
|
2023-05-27 18:16:46 -04:00
|
|
|
)
|
|
|
|
return (menu.show());
|
2023-05-20 13:04:18 -04:00
|
|
|
|
2023-05-16 16:33:36 -04:00
|
|
|
def add_site(database: Database) -> dict:
|
|
|
|
print("add a site:")
|
|
|
|
site = {}
|
|
|
|
site.update({"url": input("url without protocol (ip:port):")})
|
|
|
|
site.update({"user": input("user(leave blank):")})
|
|
|
|
site.update({"password": input("password(leave blank):")})
|
2023-05-17 05:08:40 -04:00
|
|
|
site.update({"id": database.get_sites_table_len()})
|
|
|
|
name = input(f"name[{str(database.get_sites_table_len())}]")
|
2023-05-16 16:33:36 -04:00
|
|
|
if (name == ""):
|
2023-05-17 05:08:40 -04:00
|
|
|
name = database.get_sites_table_len()
|
2023-05-16 16:33:36 -04:00
|
|
|
site.update({"name": name})
|
|
|
|
return (site)
|
|
|
|
|
|
|
|
def files_preview(filename: str) -> str:
|
|
|
|
if (not filename.endswith("/")):
|
|
|
|
return (None)
|
2023-05-16 17:25:05 -04:00
|
|
|
files = get_files(preview_site, uri + filename)
|
2023-05-16 16:33:36 -04:00
|
|
|
return ("\n".join(files))
|
|
|
|
|
2023-05-29 13:23:39 -04:00
|
|
|
def files(site:dict, path:str, database:Database, pos:int):
|
2023-05-16 17:25:05 -04:00
|
|
|
global uri
|
|
|
|
global preview_site
|
2023-05-16 16:33:36 -04:00
|
|
|
|
2023-05-16 17:25:05 -04:00
|
|
|
uri = path
|
|
|
|
preview_site = site
|
|
|
|
files = get_files(site, path)
|
2023-05-20 13:04:18 -04:00
|
|
|
choose = get_user_choice_by_menu(files,
|
2023-05-16 16:33:36 -04:00
|
|
|
preview_command=files_preview,
|
|
|
|
preview_size=0.3,
|
|
|
|
show_search_hint=True,
|
2023-05-29 13:23:39 -04:00
|
|
|
title=f"Index of {path}",
|
|
|
|
cursor_pos = pos)
|
2023-05-17 05:08:40 -04:00
|
|
|
if (choose == None):
|
2023-05-29 13:23:39 -04:00
|
|
|
database.set_last_cursor_pos(0)
|
2023-05-17 05:08:40 -04:00
|
|
|
return (None)
|
2023-05-29 13:23:39 -04:00
|
|
|
database.set_last_cursor_pos(choose)
|
2023-05-16 16:33:36 -04:00
|
|
|
return (files[choose])
|
|
|
|
|
|
|
|
def config_preview(site_name:str):
|
|
|
|
id = int(site_name.split(": ")[0])
|
2023-05-17 05:08:40 -04:00
|
|
|
site = preview_database.get_site_by_id(id)
|
|
|
|
if (site == None):
|
|
|
|
return
|
2023-05-16 16:33:36 -04:00
|
|
|
str = f"""
|
|
|
|
url: {site.get('url')}
|
|
|
|
user: {site.get('user')}
|
|
|
|
password: {site.get('password')}
|
|
|
|
"""
|
|
|
|
return (str)
|
|
|
|
|
2023-05-17 05:08:40 -04:00
|
|
|
def site_deleter(sites, database: Database):
|
|
|
|
global preview_database
|
|
|
|
|
|
|
|
preview_database = database
|
2023-05-20 13:04:18 -04:00
|
|
|
choose = get_user_choice_by_menu(sites,
|
2023-05-16 16:33:36 -04:00
|
|
|
show_search_hint=True,
|
|
|
|
preview_title="delete",
|
|
|
|
preview_command=config_preview)
|
|
|
|
return (choose)
|
|
|
|
|
2023-05-17 05:08:40 -04:00
|
|
|
def param_editor(lst: list):
|
2023-05-20 13:04:18 -04:00
|
|
|
choose = get_user_choice_by_menu(lst)
|
2023-05-17 05:08:40 -04:00
|
|
|
return (choose)
|
|
|
|
|
|
|
|
def site_editor(lst: list, database: Database):
|
|
|
|
global preview_database
|
|
|
|
|
|
|
|
preview_database = database
|
2023-05-20 13:04:18 -04:00
|
|
|
choose = get_user_choice_by_menu(lst + ["", "quit"],
|
2023-05-16 16:33:36 -04:00
|
|
|
skip_empty_entries=True,
|
|
|
|
show_search_hint=True,
|
2023-05-20 13:04:18 -04:00
|
|
|
title="Edit")
|
2023-05-16 16:33:36 -04:00
|
|
|
if (choose == len(lst) + 1):
|
|
|
|
return (None)
|
|
|
|
return (choose)
|
2023-05-17 05:08:40 -04:00
|
|
|
|
|
|
|
def sites(sites: list):
|
|
|
|
nb_site = len(sites)
|
2023-05-20 13:04:18 -04:00
|
|
|
choose = get_user_choice_by_menu(get(sites, "name") + ["", "add", "edit", "delete"],
|
2023-05-17 05:08:40 -04:00
|
|
|
skip_empty_entries=True,
|
|
|
|
show_search_hint=True)
|
|
|
|
return (choose)
|