2022-11-23 18:15:40 +00:00
|
|
|
import logging
|
|
|
|
import paramiko
|
2022-11-23 19:18:40 +00:00
|
|
|
import sshim_patch as sshim
|
|
|
|
import lxd_interface
|
2022-11-23 18:15:40 +00:00
|
|
|
import os
|
|
|
|
import re
|
2022-11-24 19:59:21 +00:00
|
|
|
import uuid
|
2022-11-23 18:15:40 +00:00
|
|
|
|
|
|
|
logging.basicConfig(level='DEBUG')
|
|
|
|
logger = logging.getLogger()
|
|
|
|
|
|
|
|
|
2022-11-24 19:59:21 +00:00
|
|
|
def connect_handler(script: sshim.Script):
|
|
|
|
instance_name = "instance-" + str(uuid.uuid4())
|
|
|
|
lxd_interface.create_instance(instance_name)
|
|
|
|
with paramiko.ProxyCommand(command_line=f'lxc exec {instance_name} -- /bin/bash') as proxy_command:
|
|
|
|
script.writeline(instance_name)
|
|
|
|
while True:
|
|
|
|
input_command = script.expect(None, echo=True) # TODO: change to false
|
|
|
|
proxy_command.send(input_command.encode())
|
|
|
|
script.sendall(proxy_command.recv(100)) # TODO: fix
|
|
|
|
script.writeline("Sent!")
|
2022-11-23 18:15:40 +00:00
|
|
|
|
|
|
|
|
2022-11-24 19:59:21 +00:00
|
|
|
server = sshim.Server(connect_handler, address='127.0.0.1', port=3022)
|
2022-11-23 18:15:40 +00:00
|
|
|
try:
|
|
|
|
server.run()
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
server.stop()
|