-
This commit is contained in:
parent
c738064672
commit
e0c7058cb1
73
README.md
Normal file
73
README.md
Normal 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
2
app.py
@ -93,7 +93,7 @@ def create_conf_post():
|
|||||||
os.mkdir(os.path.join(os.getcwd(), 'configs', folder))
|
os.mkdir(os.path.join(os.getcwd(), 'configs', folder))
|
||||||
authorized_keys_config = request.form['authorized_keys_config']
|
authorized_keys_config = request.form['authorized_keys_config']
|
||||||
authorized_keys_file = open(folder+"/authorized_keys", "w")
|
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()
|
authorized_keys_file.close()
|
||||||
except:
|
except:
|
||||||
shutil.copy('./configs/authorized_keys',
|
shutil.copy('./configs/authorized_keys',
|
||||||
|
@ -5,5 +5,4 @@ Jinja2==3.1.2
|
|||||||
MarkupSafe==2.1.2
|
MarkupSafe==2.1.2
|
||||||
psycopg2-binary==2.9.6
|
psycopg2-binary==2.9.6
|
||||||
Werkzeug==2.2.3
|
Werkzeug==2.2.3
|
||||||
webssh
|
webssh
|
||||||
PyCryptodome
|
|
17
utils.py
17
utils.py
@ -41,20 +41,8 @@ def ping_client(ip):
|
|||||||
|
|
||||||
|
|
||||||
def ssh_thread_function():
|
def ssh_thread_function():
|
||||||
try:
|
subprocess.run(['wssh', '--fbidhttp=False', '--port='+config.webssh_port])
|
||||||
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")])
|
|
||||||
|
|
||||||
|
|
||||||
def check_allocation_thread_function():
|
def check_allocation_thread_function():
|
||||||
@ -83,7 +71,6 @@ class PingThread(threading.Thread):
|
|||||||
if date is None:
|
if date is None:
|
||||||
return
|
return
|
||||||
delta = datetime.datetime.utcnow() - date
|
delta = datetime.datetime.utcnow() - date
|
||||||
print(delta)
|
|
||||||
if delta.total_seconds() > DELETE_TIMEOUT:
|
if delta.total_seconds() > DELETE_TIMEOUT:
|
||||||
db.del_image_allocation_id(self.Id)
|
db.del_image_allocation_id(self.Id)
|
||||||
print("deleted:", self.Id)
|
print("deleted:", self.Id)
|
||||||
|
Loading…
Reference in New Issue
Block a user