예제 #1
0
파일: vps.py 프로젝트: bhutton/vpssvr
    def start(self, id):

        VPS_DB = database.DB_VPS()
        VPS = VPS_DB.getVPS(id)

        self.execbhyve(VPS_DB.startCommand(RootPath), str(id))

        return "Started VPS {}\n".format(id)
예제 #2
0
    def createDiskImg(self, id):

        vps = database.DB_VPS()
        # return vps.getImage()
        '''cnx = mysql.connector.connect(**config)
		cursor = cnx.cursor()
		cursor.execute("select size,vps_id from disk where id=%s",(id,))
		Disk = cursor.fetchone()'''

        Disk = vps.getDisk(id)

        vps_id = Disk[1]
        size = Disk[0]
        Interface = 2

        vps.getVPS(vps_id)

        ID = vps.getID()
        Name = vps.getName()
        RAM = vps.getRAM()
        Console = vps.getConsole()
        Image = vps.getImage()
        Path = vps.getPath()
        StartScript = vps.getStartScript()
        StopScript = vps.getStopScript()

        # return "Create Disk for VPS 1\n"

        Disks = vps.getDisks(vps_id)

        VPSPath = self.getVPSPath(Path, vps_id)

        self.setImagePath(Image)

        Devices = vps.getDevices(vps_id)

        NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices(
            Devices, Interface)
        BootDrive, Drives, Interface, LinuxBoot = self.genDisks(
            Disks, Interface, ID, Path)

        create_disk = "truncate -s {}GB {}/{}/{}".format(
            size, RootPath, vps_id, id)
        output = subprocess.Popen(['/bin/sh', '-c', create_disk],
                                  stdout=subprocess.PIPE)

        BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands(
            RAM, BootDrive, Name, NetInt, Drives, Console, ID, VPSPath)

        StartScript = "{}{}/start.sh".format(RootPath, vps_id)

        StartScriptData = self.getScriptData(AddBridges, AddTaps, Bhyve,
                                             BhyveLoad, GrubBhyve, GrubBhyve2,
                                             Image, ShellInABox)

        self.generateScript(StartScript, StartScriptData)

        return "Create Disk for VPS {}\n".format(vps_id)
예제 #3
0
파일: vps.py 프로젝트: bhutton/vpssvr
    def stop(self, id):

        VPS_DB = database.DB_VPS()
        VPS = VPS_DB.getVPS(id)

        #VPS_Con = modules.vps.VMFunc()
        self.execbhyve(VPS_DB.stopCommand(RootPath), str(id))
        self.execbhyve(VPS_DB.stopConsole(RootPath), str(id))

        return "Stopped VPS {}\n".format(id)
예제 #4
0
파일: vps.py 프로젝트: bhutton/vpssvr
    def checkStatus(self, vps_id):
        self.id = vps_id

        VPS_Conn = database.DB_VPS()
        VPS = VPS_Conn.getVPS(self.id)

        vps_id = str(VPS[0])
        vps_name = VPS[1]
        vps_startscript = VPS[5]

        if (vps_startscript == ""): vps_name = str(self.id)

        if (os.path.exists("/dev/vmm/" + str(vps_id))):
            return "Running"
        else:
            return "Stopped"
예제 #5
0
    def checkStatus(self, vps_id):

        self.id = vps_id

        VPS_Conn = database.DB_VPS()
        VPS = VPS_Conn.getVPS(self.id)

        vps_id = str(VPS[0])
        vps_name = VPS[1]
        vps_startscript = VPS[5]

        if (vps_startscript == ""): vps_name = str(self.id)

        # print "{}{}/installing.txt".format(RootPath,vps_id)

        if (os.path.exists(RootPath + str(vps_id) + "/installing.txt")):
            return "Installing"

        if (os.path.exists("/dev/vmm/" + str(vps_id))):
            return "Running"
        else:
            return "Stopped"
예제 #6
0
파일: vps.py 프로젝트: bhutton/vpssvr
    def deleteDisk(self, id):

        vps = database.DB_VPS()

        vps_id = vps.getDiskVPSID(id)

        vps.getVPS(vps_id)

        ID = vps.getID()
        Name = vps.getName()
        RAM = vps.getRAM()
        Console = vps.getConsole()
        Image = vps.getImage()
        Path = vps.getPath()
        StartScript = vps.getStartScript()
        StopScript = vps.getStopScript()

        if (Path == ""): VPSPath = RootPath + "/" + str(vps_id)
        else: VPSPath = Path

        if (Image == 1): SrcImg = SrcImgFreeBSD
        elif (Image == 2): SrcImg = SrcImgUbuntu
        elif (Image == 3): SrcImg = SrcImgCentos

        delete_disk = "rm {}/{}".format(VPSPath, id)

        output = subprocess.Popen(['/bin/sh', '-c', delete_disk],
                                  stdout=subprocess.PIPE)

        vps.deleteDisk(id)

        ####
        #
        # Regenerate Scripts
        #
        ####

        Disks = vps.getDisks(vps_id)
        Devices = vps.getDevices(vps_id)

        Interface = 2

        NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices(
            Devices, Interface)
        BootDrive, Drives, Interface, LinuxBoot = self.genDisks(
            Disks, Interface, ID, VPSPath)

        BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands(
            RAM, BootDrive, Name, NetInt, Drives, Console, ID, VPSPath)

        StartScript = "{}/start.sh".format(VPSPath)

        # FreeBSD
        if (Image == 1):
            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox)

        elif (Image == 2):
            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox)

        elif (Image == 3):
            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox)

        StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
            AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox)
        self.generateScript(StartScript, StartScriptData)

        return "Disk Delete"
예제 #7
0
파일: vps.py 프로젝트: bhutton/vpssvr
    def createDisk(self, id):

        cnx = mysql.connector.connect(**config)
        cursor = cnx.cursor()
        cursor.execute("select size,vps_id from disk where id=%s", (id, ))
        Disk = cursor.fetchone()

        vps_id = Disk[1]
        size = Disk[0]
        Interface = 2

        vps = database.DB_VPS()
        vps.getVPS(vps_id)

        ID = vps.getID()
        Name = vps.getName()
        RAM = vps.getRAM()
        Console = vps.getConsole()
        Image = vps.getImage()
        Path = vps.getPath()
        StartScript = vps.getStartScript()
        StopScript = vps.getStopScript()

        Disks = vps.getDisks(vps_id)

        if (Path == ""): VPSPath = RootPath + "/" + str(vps_id)
        else: VPSPath = Path

        if (Image == 1): SrcImg = SrcImgFreeBSD
        elif (Image == 2): SrcImg = SrcImgUbuntu
        elif (Image == 3): SrcImg = SrcImgCentos

        Devices = vps.getDevices(vps_id)

        NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices(
            Devices, Interface)
        BootDrive, Drives, Interface, LinuxBoot = self.genDisks(
            Disks, Interface, ID, Path)

        create_disk = "truncate -s {}GB {}/{}/{}".format(
            size, RootPath, vps_id, id)
        output = subprocess.Popen(['/bin/sh', '-c', create_disk],
                                  stdout=subprocess.PIPE)

        BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands(
            RAM, BootDrive, Name, NetInt, Drives, Console, ID, VPSPath)

        StartScript = "{}{}/start.sh".format(RootPath, vps_id)

        # FreeBSD
        if (Image == 1):
            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox)

        elif (Image == 2):
            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox)

        elif (Image == 3):
            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox)

        self.generateScript(StartScript, StartScriptData)

        return "Create Disk for VPS {}\n".format(vps_id)
예제 #8
0
파일: vps.py 프로젝트: bhutton/vpssvr
    def updateVPS(self, vps_id):

        vps = database.DB_VPS()
        #vpsConn = modules.vps.VMFunc()
        vps.getVPS(vps_id)

        ID = vps.getID()
        Name = vps.getName()
        RAM = vps.getRAM()
        Console = vps.getConsole()
        Image = vps.getImage()
        Path = vps.getPath()
        StartScript = vps.getStartScript()
        StopScript = vps.getStopScript()

        Disks = vps.getDisks(vps_id)

        if (Path == ""): VPSPath = RootPath + "/" + str(vps_id)
        else: VPSPath = Path

        print "VPS Path: {}".format(VPSPath)

        Devices = vps.getDevices(vps_id)
        StopShellInABox = "/usr/bin/sockstat -4 -l | grep :{}{}".format(
            ShellInABoxPref, ID)

        Interface = 2

        NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices(
            Devices, Interface)
        BootDrive, Drives, Interface, LinuxBoot = self.genDisks(
            Disks, Interface, ID, VPSPath)

        BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands(
            RAM, BootDrive, Name, NetInt, Drives, Console, ID, VPSPath)

        StartScript = "{}/start.sh".format(VPSPath)
        StopScript = "{}/stop.sh".format(VPSPath)
        DeviceMapScript = "{}/device.map".format(VPSPath)
        StartConsole = "{}/startconsole.sh".format(VPSPath)
        StopConsole = "{}/stopconsole.sh".format(VPSPath)

        StopScriptData = "{} --destroy --vm={}\n".format(Bhyvectl, ID)

        # FreeBSD
        if (Image == 1):
            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox)

        # Ubuntu
        elif (Image == 2):
            DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format(VPSPath, LinuxBoot)

            self.generateScript(DeviceMapScript, DevicemapData)
            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox)

            print "Linux Device - Image 2 = {}".format(DevicemapData)

        # Centos
        elif (Image == 3):

            DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format(VPSPath, LinuxBoot)

            self.generateScript(DeviceMapScript, DevicemapData)

            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox)

            print "Linux Device - Image 3 = {}".format(StartScriptData)

        StartConsoleScript = ShellInABox
        StopConsoleScript = StopShellInABox

        self.generateScript(StartConsole, StartConsoleScript)
        self.generateScript(StopConsole, StopConsoleScript)

        self.generateScript(StartScript, StartScriptData)
        self.generateScript(StopScript, StopScriptData)

        return "Updated"
예제 #9
0
파일: vps.py 프로젝트: bhutton/vpssvr
    def createvps(self, id):

        vps = database.DB_VPS()
        vps.getVPS(id)

        ID = vps.getID()
        Name = vps.getName()
        RAM = vps.getRAM()
        Console = vps.getConsole()
        Image = vps.getImage()
        Path = vps.getPath()
        StartScript = vps.getStartScript()
        StopScript = vps.getStopScript()
        Disks = vps.getDisks(id)
        Devices = vps.getDevices(id)

        if (Path == ""): Path = RootPath + "/" + str(ID)

        Interface = 2

        NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices(
            Devices, Interface)

        BootDrive, Drives, Interface, LinuxBoot = self.genDisks(
            Disks, Interface, ID, Path)

        BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands(
            RAM, BootDrive, Name, NetInt, Drives, Console, ID, Path)

        StopShellInABox = "/usr/bin/sockstat -4 -l | grep :{}{}".format(
            ShellInABoxPref, ID)
        Network = "/sbin/ifconfig "

        DstImg = Path + "/" + "disk.img"

        if (Image == 1): SrcImg = SrcImgFreeBSD
        elif (Image == 2): SrcImg = SrcImgUbuntu
        elif (Image == 3): SrcImg = SrcImgCentos

        if not os.path.exists(Path):
            os.makedirs(Path)

        if (self.createDisk == "on"):
            print "Copying file..."
            shutil.copyfile(SrcImg, BootDrive)

            StartScript = "{}/start.sh".format(Path)
            StopScript = "{}/stop.sh".format(Path)
            StartConsole = "{}/startconsole.sh".format(Path)
            StopConsole = "{}/stopconsole.sh".format(Path)
            DeviceMapScript = "{}/device.map".format(Path)

            # FreeBSD
            if (Image == 1):
                StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                    AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox)

            elif (Image == 2):
                DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format(
                    Path, LinuxBoot)

                self.generateScript(DeviceMapScript, DevicemapData)

                StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                    AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox)
                print "Linux Device - Image 2 = {}".format(DevicemapData)

            elif (Image == 3):
                DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format(
                    Path, LinuxBoot)

                self.generateScript(DeviceMapScript, DevicemapData)

                StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                    AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox)
                print "Linux Device - Image 3 = {}".format(DevicemapData)

            StopScriptData = "{} --destroy --vm={}\n".format(Bhyvectl, ID)
            StartConsoleScript = ShellInABox
            StopConsoleScript = StopShellInABox

            self.generateScript(StartScript, StartScriptData)
            self.generateScript(StopScript, StopScriptData)
            self.generateScript(StartConsole, StartConsoleScript)
            self.generateScript(StopConsole, StopConsoleScript)

        return "Created VPS: {}\n".format(id)
예제 #10
0
    def deleteDisk(self, id):

        vps = database.DB_VPS()

        vps_id = vps.getDiskVPSID(id)

        vps.getVPS(vps_id)

        ID = vps.getID()
        Name = vps.getName()
        RAM = vps.getRAM()
        Console = vps.getConsole()
        Image = vps.getImage()
        Path = vps.getPath()
        StartScript = vps.getStartScript()
        StopScript = vps.getStopScript()

        VPSPath = self.getVPSPath(Path, vps_id)

        SrcImg = self.setImagePath(Image)
        if SrcImg == "Error: no image found": return "Error: no image found"

        #print Image
        '''if (Image == 1):
            SrcImg = SrcImgFreeBSD
        elif (Image == 2):
            SrcImg = SrcImgUbuntu
        elif (Image == 3):
            SrcImg = SrcImgCentos
        else:
            return "Error: no image found"'''

        delete_disk = "rm {}/{}".format(VPSPath, id)

        try:
            process = subprocess.Popen(['/bin/sh', '-c', delete_disk],
                                       stdout=subprocess.PIPE)
            output, err = process.communicate()
        except:
            # return process.returncode
            return "Delete disk failed"

        vps.deleteDisk(id)

        ####
        #
        # Regenerate Scripts
        #
        ####

        Disks = vps.getDisks(vps_id)
        Devices = vps.getDevices(vps_id)

        Interface = 2

        NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices(
            Devices, Interface)
        BootDrive, Drives, Interface, LinuxBoot = self.genDisks(
            Disks, Interface, ID, VPSPath)

        BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands(
            RAM, BootDrive, Name, NetInt, Drives, Console, ID, VPSPath)

        StartScript = "{}/start.sh".format(VPSPath)

        # FreeBSD
        if (Image == 1):
            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox)

        elif (Image == 2):
            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox)

        elif (Image == 3):
            StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox)

        StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
            AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox)

        if (self.generateScript(StartScript, StartScriptData)):
            return "An error occurred generating script"

        return "Disk {} Delete\n".format(id)
예제 #11
0
    def createvps(self, id):

        vps = database.DB_VPS()
        vps.getVPS(id)

        ID = vps.getID()
        Name = vps.getName()
        RAM = vps.getRAM()
        Console = vps.getConsole()
        Image = vps.getImage()
        Path = vps.getPath()
        StartScript = vps.getStartScript()
        StopScript = vps.getStopScript()
        Disks = vps.getDisks(id)
        Devices = vps.getDevices(id)

        if (Path == ""): Path = RootPath + "/" + str(ID)

        Interface = 2

        NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices(
            Devices, Interface)

        BootDrive, Drives, Interface, LinuxBoot = self.genDisks(
            Disks, Interface, ID, Path)

        BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands(
            RAM, BootDrive, Name, NetInt, Drives, Console, ID, Path)

        StopShellInABox = "/usr/bin/sockstat -4 -l | grep :{}{}".format(
            ShellInABoxPref, ID)
        Network = "/sbin/ifconfig "

        DstImg = Path + "/" + "disk.img"

        # Note: find a better way!!!

        if (Image == self.FreeBSD):
            SrcImg = SrcImgFreeBSD
        elif (Image == self.Ubuntu):
            SrcImg = SrcImgUbuntu
        elif (Image == self.Centos):
            SrcImg = SrcImgCentos
        elif (Image == self.Win10):
            SrcImg = SrcImgWin10

        if not os.path.exists(Path):
            if (ZFSEnable == 1):
                cmd = ZFSCmd + " create " + ZFSRoot + "/" + str(ID)

                # print "ZFS Command = {}\n".format(cmd)
                self.execcmd(cmd)
            else:
                os.makedirs(Path)

        if (self.createDisk == "on"):
            # print "Copying file... {} to {}".format(SrcImg,BootDrive)

            cmd = Touch + " " + RootPath + str(
                ID
            ) + "/installing.txt" + " && " + CP + " " + SrcImg + " " + BootDrive + " && " + RM + " " + RootPath + str(
                ID) + "/installing.txt"

            # print "{}\n".format(cmd)

            self.execcmdFork(cmd)

            StartScript = "{}/start.sh".format(Path)
            StopScript = "{}/stop.sh".format(Path)
            StartConsole = "{}/startconsole.sh".format(Path)
            StopConsole = "{}/stopconsole.sh".format(Path)
            DeviceMapScript = "{}/device.map".format(Path)

            # FreeBSD
            if (Image == 1):
                StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                    AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox)
            elif (Image == 2):
                DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format(
                    Path, LinuxBoot)
                self.generateScript(DeviceMapScript, DevicemapData)
                StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                    AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox)
            elif (Image == 3):
                DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format(
                    Path, LinuxBoot)
                self.generateScript(DeviceMapScript, DevicemapData)
                StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format(
                    AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox)

            StopScriptData = "{} --destroy --vm={}\n".format(Bhyvectl, ID)
            StartConsoleScript = ShellInABox
            StopConsoleScript = StopShellInABox

            self.generateScript(StartScript, StartScriptData)
            self.generateScript(StopScript, StopScriptData)
            self.generateScript(StartConsole, StartConsoleScript)
            self.generateScript(StopConsole, StopConsoleScript)

        return "Created VPS: {}\n".format(id)