#!/usr/bin/env python from serviceScript import * class String: def __init__(self): self.value = None def __str__(self): if self.value == None: return "None" else: return self.value class Device: def __init__(self): self.id_dev = None self.ip = None def __str__(self): if self.id_dev == None: return "It's a new Device" else: return "Device "+self.id_dev+" --> "+self.ip class Host: def __init__(self): self.id_host = None self.url = String() self.ssh = None self.devices = [] self.services = None self.routes = [] self.hostType = String() def __str__(self): if len(self.devices) == 0: return "It's a new Host" else: return "Host "+str(self.id_host)+" on "+str(self.url)+" has "+str(len(self.devices))+" device(s)" class Slice: def __str__(self): if len(self.hosts) == 0: return "It's a new Slice" else: return "Slice "+str(self.slice_name)+" contain "+str(len(self.hosts))+" host(s)" def __init__(self): self.slice_name = String() self.hosts = [] class HostLink: def __init__(self): self.slice_name = None self.id_host = None self.url = None self.ssh = None self.bridge_name = None def __str__(self): return str(self.slice_name)+"@"+str(self.url)+"->"+str(self.bridge_name) class Link: def __init__(self): self.host1 = None self.host2 = None def __str__(self): return " "+str(self.host1)+" <===> "+str(self.host2) class Route: def __init__(self, slice_name, host_url, ssh, host_id): self.slice_name = slice_name self.host_url = host_url self.host_ssh = ssh self.host_id = host_id self.subnet = None self.gateway = None self.device = None def __str__(self): if self.slice_name == None: return "Empty route" else: return " On "+str(self.slice_name)+"@"+str(self.host_url)+" add "+self.subnet+" gw "+self.gateway+" dev "+self.device def setRoute(self): execute("sudo -S sh -c \"echo \\\"add "+self.subnet+" gw "+self.gateway+" "+self.device+"\\\" > /vsys/vroute.in\"", self.host_ssh, display = True) class Service: def __init__(self, slice_name, url, ssh): self.slice_name = slice_name self.host_url = url self.host_ssh = ssh self.services = [] def __str__(self): if len(self.services) == 0: retour = '' else: retour = " On "+str(self.slice_name)+"@"+str(self.host_url)+" set:" for service, port in self.services: if port != '': retour += "\n\t"+service+" on port "+port else: retour += "\n\t"+service return retour def setService(self): print "\tOn "+str(self.slice_name)+"@"+str(self.host_url)+" now setting :" for i in range(len(self.services)): if self.services[i][0] == "x11": setXRedirect(self.host_ssh) elif self.services[i][0] == "httpd": if port != '': self.services[i][1] = setHttpd(self.host_ssh, port, self.host_url) else: print "Error you didn't specified the port used by httpd" elif self.services[i][0] == "wireshark": setWireshark(self.host_ssh) elif self.services[i][0] == "firefox": setFirefox(self.host_ssh) elif self.services[i][0] == "php" or self.services[i][0] == 'PHP': setPHP(self.host_ssh) else: print "The service "+service+" is not available" def removeService(self): for service, port in self.services: if service == "x11": removeXRedirect(self.host_ssh) elif service == "httpd": removeHttpd(self.host_ssh) elif service == "wireshark": removeWireshark(self.host_ssh) elif service == "firefox": removeFirefox(self.host_ssh) elif service == "php" or service == 'PHP': removePHP(self.host_ssh)