From e0c7058cb18c4191f2569f441a5e74fcf8ee706f Mon Sep 17 00:00:00 2001 From: Mateusz779 Date: Thu, 27 Apr 2023 10:17:28 +0200 Subject: [PATCH] - --- README.md | 73 ++++++++++++++++++++++++++++++++++++++++++++++++ app.py | 2 +- requirements.txt | 3 +- utils.py | 17 ++--------- 4 files changed, 77 insertions(+), 18 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..8ddb39d --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ + +# Projekt systemów zdalnych + +Projekt uruchamiania zdalnych systemów. + + +## Instalacja wymaganych składników + +Aby zainstalować wymagane składniki wydaj komendę: + +```bash + sudo apt install python3-venv python3-pip +``` + +A następnie: + +```bash + python3 -m venv venv + source venv/bin/activate +``` + +I zainstaluj wymagane paczki pip + +```bash + pip install -r requirements.txt +``` + + + +## Konfiguracja + +Konfiguracja znajduje się w pliku config.py + + + +## Uruchomienie + +Aby uruchomić serwer deweloperski: + +```bash + flask run --host=0.0.0.0 +``` + + +## Dodanie nowego użytkownika + +Aby dodać użytkownika do bazy w pliku app.py w funkcji +```python +login_api +``` +należy odkomentować linijkę: + +```python + # db.add_user(username, password) +``` + +A następnie przejść na stronę logowania wpisac żądaną nazwę użytkownika i hasło a następnie wyłączyć serwer zakomentować tą linijkę i uruchomic serwer ponownie. +## Aktualizacja i instalacja kolejnych pakietów do rootfs + +Aby zainstalować nowe pakiety należy uruchomic skrypt +```bash +update_rootfs.sh +``` + +W celu instalacji dodatkowych pakietów można wydać polecenie: +```bash +sudo ./update_rootfs.sh -n -s -i "" +``` + +Natomiast w celu aktualizacji pakietów w obrazie : +```bash +sudo ./update_rootfs.sh -n -s -u +``` \ No newline at end of file diff --git a/app.py b/app.py index 9c17152..2df1b27 100644 --- a/app.py +++ b/app.py @@ -93,7 +93,7 @@ def create_conf_post(): os.mkdir(os.path.join(os.getcwd(), 'configs', folder)) authorized_keys_config = request.form['authorized_keys_config'] authorized_keys_file = open(folder+"/authorized_keys", "w") - authorized_keys_file.write(authorized_keys_config + "\n" + open(os.path.join(os.getcwd(), 'keys', "sshkey.pub"),'r').read()) + authorized_keys_file.write(authorized_keys_config + "\n") authorized_keys_file.close() except: shutil.copy('./configs/authorized_keys', diff --git a/requirements.txt b/requirements.txt index 65e88ad..737696f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,5 +5,4 @@ Jinja2==3.1.2 MarkupSafe==2.1.2 psycopg2-binary==2.9.6 Werkzeug==2.2.3 -webssh -PyCryptodome +webssh \ No newline at end of file diff --git a/utils.py b/utils.py index 14a722b..36caad8 100644 --- a/utils.py +++ b/utils.py @@ -41,20 +41,8 @@ def ping_client(ip): def ssh_thread_function(): - try: - os.mkdir(os.path.join(os.getcwd(), 'keys')) - except: - pass - if os.path.exists(os.path.join(os.getcwd(), 'keys', "sshkey")) is False: - key = RSA.generate(3072) - with open(os.path.join(os.getcwd(), 'keys', "sshkey"), 'wb') as content_file: - chmod(os.path.join(os.getcwd(), 'keys', "sshkey"), 0o600) - content_file.write(key.exportKey('OpenSSH')) - pubkey = key.publickey() - with open(os.path.join(os.getcwd(), 'keys', "sshkey.pub"), 'wb') as content_file: - content_file.write(pubkey.exportKey('OpenSSH')) - subprocess.run(['wssh', '--fbidhttp=False', '--port='+config.webssh_port, - '--hostfile='+os.path.join(os.getcwd(), 'keys', "sshkey")]) + subprocess.run(['wssh', '--fbidhttp=False', '--port='+config.webssh_port]) + def check_allocation_thread_function(): @@ -83,7 +71,6 @@ class PingThread(threading.Thread): if date is None: return delta = datetime.datetime.utcnow() - date - print(delta) if delta.total_seconds() > DELETE_TIMEOUT: db.del_image_allocation_id(self.Id) print("deleted:", self.Id)