This commit is contained in:
Mateusz779 2023-04-27 10:17:28 +02:00
parent c738064672
commit e0c7058cb1
4 changed files with 77 additions and 18 deletions

73
README.md Normal file
View File

@ -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 <obraz wyjściowy> -s <obraz żródłowy> -i "<pakiety do instalacji>"
```
Natomiast w celu aktualizacji pakietów w obrazie :
```bash
sudo ./update_rootfs.sh -n <obraz wyjściowy> -s <obraz żródłowy> -u
```

2
app.py
View File

@ -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',

View File

@ -5,5 +5,4 @@ Jinja2==3.1.2
MarkupSafe==2.1.2
psycopg2-binary==2.9.6
Werkzeug==2.2.3
webssh
PyCryptodome
webssh

View File

@ -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)