OpenSecurity/bin/opensecurityd.py
author om
Fri, 06 Dec 2013 12:29:15 +0100
changeset 17 0b4efa323de3
parent 16 e16d64b5e008
child 18 d7d7b8dee78e
permissions -rw-r--r--
working on opensecurityd
     1 #!/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 # ------------------------------------------------------------
     5 # opensecurityd
     6 # 
     7 # the opensecurityd as RESTful server
     8 #
     9 # Autor: Oliver Maurhart, <oliver.maurhart@ait.ac.at>
    10 #
    11 # Copyright (C) 2013 AIT Austrian Institute of Technology
    12 # AIT Austrian Institute of Technology GmbH
    13 # Donau-City-Strasse 1 | 1220 Vienna | Austria
    14 # http://www.ait.ac.at
    15 #
    16 # This program is free software; you can redistribute it and/or
    17 # modify it under the terms of the GNU General Public License
    18 # as published by the Free Software Foundation version 2.
    19 # 
    20 # This program is distributed in the hope that it will be useful,
    21 # but WITHOUT ANY WARRANTY; without even the implied warranty of
    22 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    23 # GNU General Public License for more details.
    24 # 
    25 # You should have received a copy of the GNU General Public License
    26 # along with this program; if not, write to the Free Software
    27 # Foundation, Inc., 51 Franklin Street, Fifth Floor, 
    28 # Boston, MA  02110-1301, USA.
    29 # ------------------------------------------------------------
    30 
    31 
    32 # ------------------------------------------------------------
    33 # imports
    34 
    35 import os
    36 import os.path
    37 import subprocess
    38 import sys
    39 import web
    40 from vmmanager.vmmanager import VMManager
    41 
    42 # local
    43 from environment import Environment
    44 
    45 
    46 # ------------------------------------------------------------
    47 # const
    48 
    49 __version__ = "0.1"
    50 
    51 
    52 """All the URLs we know mapping to class handler"""
    53 opensecurity_urls = (
    54     '/device_change',           'os_device_change',     # http://localhost:8080/device_change   GET
    55     '/sdvms',                   'os_sdvms',             # http://localhost:8080/sdvms           GET, PUT, DELETE
    56     '/vms',                     'os_vms',               # http://localhost:8080/vms             GET
    57     '/vms/(.*)',                'os_vm',                # http://localhost:8080/vms/[VMNAME]    GET
    58     '/',                        'os_root'               # http://localhost:8080/                GET
    59 )
    60 
    61 
    62 # ------------------------------------------------------------
    63 # vars
    64 
    65 # Global VMManager instance
    66 gvm_mgr = VMManager()
    67 
    68 
    69 # ------------------------------------------------------------
    70 # code
    71 
    72 
    73 class os_device_change:
    74     """OpenSecurity '/device_change' handler"""
    75     
    76     def GET(self):
    77         gvm_mgr.cygwin_path = 'c:\\cygwin64\\bin\\'
    78         gvm_mgr.handleDeviceChange()
    79         return "os_device_change"
    80 
    81 
    82 class os_sdvms:
    83     """OpenSecurity '/sdvms' handler"""
    84     
    85     def GET(self):
    86         """get the list of SDVMs"""
    87         return gvm_mgr.listSDVM() 
    88             
    89     def PUT(self):
    90         """create a new SDVM"""
    91         print("os_sdvms:PUT - 1")
    92         # pick the vm-name
    93         args = web.input()
    94         if not "name" in args:
    95             raise web.badrequest()
    96         print("os_sdvms:PUT - 2")
    97             
    98         return gvm_mgr.createVM(args.name)
    99             
   100     def DELETE(self):
   101         """remove a new SDVM"""
   102         # pick the vm-name
   103         args = web.input()
   104         if not "name" in args:
   105             raise web.badrequest()
   106             
   107         return gvm_mgr.removeVM(args.name)
   108 
   109 class os_vm:
   110     """OpenSecurity '/vms/[VM]' handler"""
   111     
   112     def GET(self, name):
   113         return gvm_mgr.getVMInfo(name)
   114             
   115 
   116 class os_vms:
   117     """OpenSecurity '/vms' handler"""
   118     
   119     def GET(self):
   120         return gvm_mgr.listVM() 
   121             
   122 
   123 class os_root:
   124     """OpenSecurity '/' handler"""
   125     
   126     def GET(self):
   127         res = "'os_server': { "
   128         res += "'version': '" + __version__ + "', "
   129         res += "'virtualbox_path': '" + gvm_mgr.vBoxPath + "', "
   130         res += "'machine_folder': '" + gvm_mgr.getDefaultMachineFolder() + "' "
   131         res += "}"
   132         return res
   133 
   134 
   135 # start
   136 if __name__ == "__main__":
   137     server = web.application(opensecurity_urls, globals())
   138     server.run()
   139