# -*- coding: utf-8 -*-

##
# Távoli klienshez csatlakozás linux OS alól
##

import sys, os, time, subprocess, glob

##
# A távoli klienshez csatlakozás valósítja meg
# NX és RDP esetén a remmina programot hívja meg. Ha a remmina-ban még nem szerepel
# a kliens, a program elkészíti az indításhoz szükséges profilt.
# @param vm Paraméterek a csatlakozáshoz
#   vm.protocol  SSH, NX és RDP lehetséges
#   vm.host      A virtuális gép címe
#   vm.port      Ezen a porton csatlakozunk a virtuális géphez
#   vm.user      Csatlakozáshoz használt név
#   vm.password  Csatlakozáshoz használt jelszó
#
def connect(vm):
    if vm.protocol == "SSH":
        command = "sshpass -p %s ssh -p %s -o StrictHostKeyChecking=no %s@%s" % (vm.password, vm.port, vm.user, vm.host)
        subprocess.call(command, shell=True)
    elif vm.protocol in ("NX", "RDP"):
        server = "%s:%s" % (vm.host, vm.port)
        listdir = os.path.expanduser("~/.remmina/*.remmina")
        found = False
        for config_file in glob.glob(listdir):
            with open(config_file) as f:
                if server in f.read():
                    found = True
                    break
        if not found:
            config_file = "%s%s%s" % (os.path.expanduser("~/.remmina/"), str(int(time.time()*1000)), ".remmina")
            password = subprocess.check_output(["remminapasswd", vm.password])
            f = open(config_file, 'w')
            if vm.protocol == "NX":
                f.write(NX_template)
            else:
                f.write(RDP_template)
            f.write("name=%s:%s\nprotocol=%s\nserver=%s\nusername=%s\npassword=%s\n" % (vm.protocol, server, vm.protocol, server, vm.user, password))
            f.close()
        subprocess.call(["remmina", "-c", config_file])

NX_template = """[remmina]
ssh_auth=0
quality=2
disableencryption=0
ssh_charset=
ssh_privatekey=
resolution=
group=
ssh_loopback=0
exec=
ssh_username=
ssh_server=
ssh_enabled=0
nx_privatekey=
showcursor=0
disableclipboard=0
window_maximize=1
viewmode=4
"""

RDP_template = """[remmina]
disableclipboard=0
ssh_auth=0
clientname=
quality=2
ssh_charset=
ssh_privatekey=
console=0
resolution=
group=
ssh_loopback=0
shareprinter=0
ssh_username=
ssh_server=
security=
execpath=
sound=off
exec=
ssh_enabled=0
sharefolder=
domain=
colordepth=24
window_maximize=1
viewmode=4
"""