Exemplo n.º 1
0
def GetSlotBaseDir():
    global slotBaseDir
    try:
        slotBaseDir
    except:
        slotBaseDir = DefaultProperties.instance().getValue("basedir")
    return slotBaseDir
Exemplo n.º 2
0
def CreateNewEstate(estate_name, owner_uuid):
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    
    # starting at ParentEstateID
    cursor = cnx.cursor()
    query = \
        "INSERT INTO estate_settings " + \
            "(EstateName, AbuseEmailToEstateOwner, DenyAnonymous, ResetHomeOnTeleport, " + \
             "FixedSun, DenyTransacted, BlockDwell, DenyIdentified, AllowVoice, " + \
             "UseGlobalTime, PricePerMeter, TaxFree, AllowDirectTeleport, RedirectGridX, " + \
             "RedirectGridY, ParentEstateID, SunPosition, EstateSkipScripts, BillableFactor, " + \
             "PublicAccess, AbuseEmail, EstateOwner, DenyMinors) " + \
         "VALUES " + \
            "(%s, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, " + \
             "100, 0, 0, 0, 1, '', %s, 0)"
    cursor.execute(query, (estate_name, owner_uuid))
    estate_id = cursor.lastrowid
    cursor.close()
    
    cursor = cnx.cursor()
    
    #also set the parent of the new estate to itself
    query = \
        "UPDATE estate_settings SET ParentEstateID = %s WHERE EstateID = %s;"
    
    cursor.execute(query, (estate_id, estate_id))
    
    cnx.commit()
    cnx.close()
    
    return estate_id
Exemplo n.º 3
0
def CreateNewEstate(estate_name, owner_uuid):
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())

    # starting at ParentEstateID
    cursor = cnx.cursor()
    query = \
        "INSERT INTO estate_settings " + \
            "(EstateName, AbuseEmailToEstateOwner, DenyAnonymous, ResetHomeOnTeleport, " + \
             "FixedSun, DenyTransacted, BlockDwell, DenyIdentified, AllowVoice, " + \
             "UseGlobalTime, PricePerMeter, TaxFree, AllowDirectTeleport, RedirectGridX, " + \
             "RedirectGridY, ParentEstateID, SunPosition, EstateSkipScripts, BillableFactor, " + \
             "PublicAccess, AbuseEmail, EstateOwner, DenyMinors) " + \
         "VALUES " + \
            "(%s, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, " + \
             "100, 0, 0, 0, 1, '', %s, 0)"
    cursor.execute(query, (estate_name, owner_uuid))
    estate_id = cursor.lastrowid
    cursor.close()

    cursor = cnx.cursor()

    #also set the parent of the new estate to itself
    query = \
        "UPDATE estate_settings SET ParentEstateID = %s WHERE EstateID = %s;"

    cursor.execute(query, (estate_id, estate_id))

    cnx.commit()
    cnx.close()

    return estate_id
Exemplo n.º 4
0
 def __init__(self, uuid, record={}):
     ServiceBase.__init__(self, uuid, record)
     self.props = DefaultProperties.instance()
     self.estate_owner = record.get('estate_owner')
     self.estate_name = record.get('estate_name')
     self.estate_id = record.get('estate_id')
     self.parent_estate_id = record.get('parent_estate_id')
Exemplo n.º 5
0
 def __init__(self, uuid, record={}):
     ServiceBase.__init__(self, uuid, record)
     self.props = DefaultProperties.instance()
     self.estate_owner = record.get('estate_owner')
     self.estate_name = record.get('estate_name')
     self.estate_id = record.get('estate_id')
     self.parent_estate_id = record.get('parent_estate_id')
Exemplo n.º 6
0
    def __init__(self, uuid, record={}):
        ServiceBase.__init__(self, uuid, record)
        self.props = DefaultProperties.instance()
        dbconfig = self.props.getCoreDbConfig()
        self.exe_name = "OpenSim.exe"
#        self.exe_args = "--console rest"
        self.exe_args = ""
                        
        if ((not 'sim_name' in record) or 
            (not 'sim_location_x' in record) or
            (not 'sim_location_y' in record) or
            (not 'estate_id' in record) or
            (not 'master_avatar_uuid' in record)):
            raise ServiceError("Region: Invalid Region Information provided")
        
        self.regionEntry = None   
        
        self.sim_uuid = uuid
        
        self.estate_id = record['estate_id']
        self.syncEstateInfoToEstateId()
        
        self.master_avatar_uuid = record['master_avatar_uuid']
        self.syncOwnerInfoToMasterAvatarId()
     
        self.sim_name = record.get("sim_name")
        self.set_sim_location(record.get("sim_location_x"), record.get("sim_location_y"))                        
                
        if ('slot_number' in record):
            self.slot_number = int(record.get('slot_number'))
            self.slot_directory = provision.GetSlotDirectory(self.slot_number)
        else:
            raise ServiceError("Create failed. No Slot Number Specified")
          
        rdbHost = GetRdbHost(dbconfig, uuid)
        if not rdbHost:
            # no info? that's ok in this case we assign
            print "RDB server not assigned for {0}, assigning new slot".format(uuid)
            rdbHost = AssignBestRdbHost(dbconfig, uuid)

        from inworldz.maestro.RegionHost import RegionHost
        self.regionHost = RegionHost.instance()
                     
        self.set_external_host_name(record.get('external_host_name'))  
        self.set_outside_ip(record.get('outside_ip'))          
        self.set_internal_ip_address(record.get('internal_ip_address'))
        self.set_internal_ip_port(record.get('internal_ip_port'))
        self.set_allow_alternate_ports(record.get('allow_alternate_ports'))
        self.set_lastmap_uuid(record.get("lastmap_uuid"))
        self.set_lastmap_refresh(record.get("lastmap_refresh"))
        self.set_nonphysical_prim_max(record.get("nonphysical_prim_max"))
        self.set_physical_prim_max(record.get("physical_prim_max"))
        self.set_clamp_prim_size(record.get("clamp_prim_size"))
        self.set_object_capacity(record.get("object_capacity"))
        self.set_region_product(record.get("region_product"))

        self.set_remoteadmin_url(record.get("remoteadmin_url"))
        self.remoteadmin_session = Session(self.get_remoteadmin_url())
        self.remoteadmin_sessionid = None
Exemplo n.º 7
0
def GetMaxRegionSlots():
    global maxRegionSlots
    try:
        maxRegionSlots
    except:
        maxRegionSlots = DefaultProperties.instance().getInteger(
            "max_region_slots")
    return maxRegionSlots
Exemplo n.º 8
0
def LinkRegionToExistingEstate(sim_uuid, estate_id):
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = "INSERT INTO estate_map(RegionID, EstateID) VALUES(%s, %s)"
    args = (sim_uuid, estate_id)
    cursor.execute(sql, args)
    cnx.commit()
    cursor.close()
    cnx.close()
Exemplo n.º 9
0
def LinkRegionToExistingEstate(sim_uuid, estate_id):
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = "INSERT INTO estate_map(RegionID, EstateID) VALUES(%s, %s)"
    args = (sim_uuid, estate_id)
    cursor.execute(sql, args)
    cnx.commit()
    cursor.close()
    cnx.close()
Exemplo n.º 10
0
    def __init__(self, uuid, record={}):
        ServiceBase.__init__(self, uuid, record)
        self.props = DefaultProperties.instance()
        if ('user_id' in record):
            self.user_id = str(record.get('user_id'))
        else:
            raise ServiceError("Create failed. No user id specified")

        self.first_name = str(record['first_name'] if 'first_name' in record else "")
        self.last_name = str(record['last_name'] if 'last_name' in record else "")
Exemplo n.º 11
0
def LookupEstateIds():
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = "SELECT EstateID FROM estate_settings"
    cursor.execute(sql)
    result = []
    for (EstateID, ) in cursor:
        result.append(str(EstateID))
    cursor.close()
    return result
Exemplo n.º 12
0
def LookupEstateIds():
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = "SELECT EstateID FROM estate_settings"
    cursor.execute(sql)
    result = []
    for (EstateID, ) in cursor:
        result.append(str(EstateID))
    cursor.close()
    return result
Exemplo n.º 13
0
    def __init__(self, uuid, record={}):
        ServiceBase.__init__(self, uuid, record)
        self.props = DefaultProperties.instance()
        if ('user_id' in record):
            self.user_id = str(record.get('user_id'))
        else:
            raise ServiceError("Create failed. No user id specified")

        self.first_name = str(record['first_name'] if 'first_name' in
                              record else "")
        self.last_name = str(record['last_name'] if 'last_name' in
                             record else "")
Exemplo n.º 14
0
    def GetAvailableReleases(cls):
        try:
            props = DefaultProperties.instance()
            gridshare_path = props.getValue("gridshare_path")
            (username, password) = props.getGridShareCredentials()

            ConnectUNCShare(gridshare_path, username, password)
            return (provision.GetRevisions(gridshare_path))
        except:
            import traceback
            exc_type, exc_value, exc_traceback = sys.exc_info()
            traceback.print_exception(exc_type, exc_value, exc_traceback)
            raise ServiceError(exc_value)
Exemplo n.º 15
0
def FindEstateIDForRegion(sim_uuid):
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = \
        "SELECT estate_map.RegionID, estate_map.EstateID FROM estate_map " + \
        "WHERE estate_map.RegionID = %s"
    cursor.execute(sql, (sim_uuid,))
    estate_id = None
    for (RegionID, EstateID) in cursor:
        estate_id = str(EstateID)
    cursor.close()
    return estate_id
Exemplo n.º 16
0
 def __init__(self, uuid, record={}):
     ServiceBase.__init__(self, uuid, record)
     self.props = DefaultProperties.instance()
     self.exe_name = "unknown"
     self.exe_args = ""
     self.remoteadmin_url = None
     self.remoteadmin_session = None
     self.remoteadmin_sessionid = None
          
     from inworldz.maestro.RegionHost import RegionHost
     self.regionHost = RegionHost.instance()
     self.service_basedir = provision.GetServiceBaseDir()
     self.shouldBeRunning = True
Exemplo n.º 17
0
    def __init__(self, auth, host = "localhost", port = DEFAULT_PORT, hosts_allowed = None):
        SimpleXMLRPCServer.__init__(self, (host, port), logRequests=False)

        self.auth = auth
        self.port = port
        self.host = host
        self.hosts_allowed = hosts_allowed
        
        self.ready = False        
        self.running = True

        self.api = MaestroAPI(auth) or None
        self.props = DefaultProperties.instance()
Exemplo n.º 18
0
def FindEstateIDForRegion(sim_uuid):
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = \
        "SELECT estate_map.RegionID, estate_map.EstateID FROM estate_map " + \
        "WHERE estate_map.RegionID = %s"
    cursor.execute(sql, (sim_uuid, ))
    estate_id = None
    for (RegionID, EstateID) in cursor:
        estate_id = str(EstateID)
    cursor.close()
    return estate_id
Exemplo n.º 19
0
def LookupUserIdByName(firstname, lastname):
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = "SELECT UUID from users WHERE userName = %s AND lastName = %s"
    args = (firstname, lastname)
    cursor.execute(sql, args)
    
    userid = None
    for (user_uuid,) in cursor:
        userid = user_uuid
    cursor.close()
    return str(userid)
Exemplo n.º 20
0
    def __init__(self, uuid, record={}):
        ServiceBase.__init__(self, uuid, record)
        self.props = DefaultProperties.instance()
        self.exe_name = "unknown"
        self.exe_args = ""
        self.remoteadmin_url = None
        self.remoteadmin_session = None
        self.remoteadmin_sessionid = None

        from inworldz.maestro.RegionHost import RegionHost
        self.regionHost = RegionHost.instance()
        self.service_basedir = provision.GetServiceBaseDir()
        self.shouldBeRunning = True
Exemplo n.º 21
0
 def GetAvailableReleases(cls):
     try:
         props = DefaultProperties.instance()
         gridshare_path = props.getValue("gridshare_path")
         (username, password) = props.getGridShareCredentials()   
         
         ConnectUNCShare(gridshare_path, username, password)
         return (provision.GetRevisions(gridshare_path))              
     except:
         import traceback
         exc_type, exc_value, exc_traceback = sys.exc_info()
         traceback.print_exception(exc_type, exc_value, exc_traceback)
         raise ServiceError(exc_value) 
Exemplo n.º 22
0
def LookupEstateById(estate_id):
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = \
        "SELECT estate_settings.EstateID, estate_settings.EstateName, estate_settings.EstateOwner, estate_settings.ParentEstateID " + \
        "FROM estate_settings " + \
        "WHERE estate_settings.EstateID = %s"
    cursor.execute(sql, (estate_id,))
    result = None
    for (EstateID, EstateName, EstateOwner, ParentEstateID) in cursor:
        result = (str(EstateID), str(EstateName), str(EstateOwner), str(ParentEstateID))
    cursor.close()
    return result
Exemplo n.º 23
0
def LookupUserNameById(userid):
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = \
        "SELECT users.userName, users.lastName FROM users " + \
        "WHERE users.UUID = '" + str(userid) + "'"
    cursor.execute(sql, ())
    
    result = None
    for (userName, lastName) in cursor:
        result = (str(userName), str(lastName))
    cursor.close()
    return result
Exemplo n.º 24
0
def LookupEstateById(estate_id):
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = \
        "SELECT estate_settings.EstateID, estate_settings.EstateName, estate_settings.EstateOwner, estate_settings.ParentEstateID " + \
        "FROM estate_settings " + \
        "WHERE estate_settings.EstateID = %s"
    cursor.execute(sql, (estate_id, ))
    result = None
    for (EstateID, EstateName, EstateOwner, ParentEstateID) in cursor:
        result = (str(EstateID), str(EstateName), str(EstateOwner),
                  str(ParentEstateID))
    cursor.close()
    return result
Exemplo n.º 25
0
 def __init__(self, uuid, record={}):
     ServiceBase.__init__(self, uuid, record) 
     self.props = DefaultProperties.instance()
     
     self.set_maintenance_mode(record.get('maintenance_mode'))
         
     self.host_memory = Memory(genuuid.createString())
     self.host_disk = Disk(genuuid.createString())
     self.host_cpu = Cpu(genuuid.createString())
     self.process = Process(genuuid.createString())
     self.maxRegionSlots = provision.GetMaxRegionSlots()
     self.slotBaseDir = provision.GetSlotBaseDir()
     self.serviceBaseDir = provision.GetServiceBaseDir()
     self.regions = []
     self.regions_lock = threading.RLock()
Exemplo n.º 26
0
    def __init__(self, uuid, record={}):
        ServiceBase.__init__(self, uuid, record)
        self.props = DefaultProperties.instance()

        self.set_maintenance_mode(record.get('maintenance_mode'))

        self.host_memory = Memory(genuuid.createString())
        self.host_disk = Disk(genuuid.createString())
        self.host_cpu = Cpu(genuuid.createString())
        self.process = Process(genuuid.createString())
        self.maxRegionSlots = provision.GetMaxRegionSlots()
        self.slotBaseDir = provision.GetSlotBaseDir()
        self.serviceBaseDir = provision.GetServiceBaseDir()
        self.regions = []
        self.regions_lock = threading.RLock()
Exemplo n.º 27
0
def GetSlotDirectory(slotnum):
    global regionLeafBase
    try:
        regionLeafBase
    except:
        regionLeafBase = DefaultProperties.instance().getValue(
            "region_leaf_base")
    # Calculate the base directory
    if ((slotnum < 0) or (slotnum > GetMaxRegionSlots())):
        raise Exception(
            "GetSlotDirectory: Invalid Slot specified - {0}".format(slotnum))
    elif (slotnum == 0):
        return (os.path.join(GetSlotBaseDir(), regionLeafBase))
    else:
        return (os.path.join(GetSlotBaseDir(),
                             regionLeafBase + " - " + str(slotnum)))
Exemplo n.º 28
0
 def starting(self):
     try:
         self.appdata = getCurrentUsersAppDataPath()
         self.propfile = os.path.join(self.appdata, product_name(), "maestro.config") 
         self.address = "0.0.0.0"
         self.port = 12089
         self.props = DefaultProperties.instance()
         self.props.loadConfiguration(self.propfile)
         self.server = MaestroServer(AUTH_WINDOWS, self.address, self.port, self.propfile)
         self.thread = Thread(target = self.server.run, args = ())
         self.thread.start()
         return True
     except Exception, e:
         import traceback
         exc_type, exc_value, exc_traceback = sys.exc_info()
         traceback.print_exception(exc_type, exc_value, exc_traceback)   
         return False
Exemplo n.º 29
0
    def __init__(self,
                 auth,
                 host="localhost",
                 port=DEFAULT_PORT,
                 hosts_allowed=None):
        SimpleXMLRPCServer.__init__(self, (host, port), logRequests=False)

        self.auth = auth
        self.port = port
        self.host = host
        self.hosts_allowed = hosts_allowed

        self.ready = False
        self.running = True

        self.api = MaestroAPI(auth) or None
        self.props = DefaultProperties.instance()
Exemplo n.º 30
0
 def starting(self):
     try:
         self.appdata = getCurrentUsersAppDataPath()
         self.propfile = os.path.join(self.appdata, product_name(),
                                      "maestro.config")
         self.address = "0.0.0.0"
         self.port = 12089
         self.props = DefaultProperties.instance()
         self.props.loadConfiguration(self.propfile)
         self.server = MaestroServer(AUTH_WINDOWS, self.address, self.port,
                                     self.propfile)
         self.thread = Thread(target=self.server.run, args=())
         self.thread.start()
         return True
     except Exception, e:
         import traceback
         exc_type, exc_value, exc_traceback = sys.exc_info()
         traceback.print_exception(exc_type, exc_value, exc_traceback)
         return False
Exemplo n.º 31
0
def main(argv=None):
    '''Command line options.'''
    program_name = os.path.basename(sys.argv[0])
    program_version = "v0.8"
    program_build_date = "%s" % __updated__

    program_version_string = '%%prog %s (%s)' % (program_version, program_build_date)
    #program_usage = '''usage: spam two eggs''' # optional - will be autogenerated by optparse
    program_longdesc = '''''' # optional - give further explanation about what the program does
    program_license = "Copyright (c) 2015 InWorldz Inc. All Rights Reserved. Released under the Apache 2.0 License"

    if argv is None:
        argv = sys.argv[1:]
    try:
        # setup option parser
        parser = OptionParser(version=program_version_string, epilog=program_longdesc, description=program_license)

        parser.add_option("-a", "--address", dest="address", help="set the address to bind to when starting the server instance [default: %default]")
        parser.add_option("-p", "--port", dest="port", help="set the port to bind to when starting the server instance [default: %default]")
        parser.add_option("-f", "--propfile", dest="propfile", help="specify a properties file to use to define runtime properties [default: %default]")
        parser.add_option("-v", "--verbose", dest="verbose", action="count", help="set verbosity level [default: %default]")

        # set defaults
        appdata = getCurrentUsersAppDataPath()
        propfile = os.path.join(appdata, product_name(), "maestro.config")
        parser.set_defaults(address="0.0.0.0", port=DEFAULT_PORT, verbose=1, propfile=propfile)

        # process options
        (opts, args) = parser.parse_args(argv)

        print sys.argv[0]

        if opts.verbose > 0:
            print("verbosity level = %d" % opts.verbose)

        if opts.address and opts.verbose > 0:
            print("address = %s" % opts.address)

        if opts.port and opts.verbose > 0:
            print("port = %s" % opts.port)

        if opts.propfile and opts.verbose > 0:
            print("propfile = %s" % opts.propfile)

        # Load Default Properties
        props = DefaultProperties.instance()
        if (opts.propfile != None):
            props.loadConfiguration(propfile)

        #set encryption key
        CredentialCrypt.SECRET = props.getValue("credential_crypt_secret")
        CredentialCrypt.IV = props.getValue("credential_crypt_iv")

        # Create our server and start this up
        server = MaestroServer(AUTH_WINDOWS, opts.address, opts.port, opts.propfile)

        print "The Maestro service is ready and accepting requests."
        print "To stop the service simply close the console."

        # This will not return until exiting
        server.run()

    except Exception, e:
        sys.stderr.write(traceback.format_exc())
        sys.stderr.write("for help use --help")
        return 2
Exemplo n.º 32
0
    props = DefaultProperties.instance()
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = \
        "SELECT estate_map.RegionID, estate_map.EstateID FROM estate_map " + \
        "WHERE estate_map.RegionID = %s"
    cursor.execute(sql, (sim_uuid, ))
    estate_id = None
    for (RegionID, EstateID) in cursor:
        estate_id = str(EstateID)
    cursor.close()
    return estate_id


if __name__ == "__main__":
    import os
    from inworldz.util.filesystem import getCurrentUsersAppDataPath
    from inworldz.util.user import LookupUserIdByName
    from inworldz.maestro.version import product_name
    appdata = getCurrentUsersAppDataPath()
    propfile = os.path.join(appdata, product_name(), "maestro.config")
    props = DefaultProperties.instance()
    props.loadConfiguration(propfile)

    userid = LookupUserIdByName("Mike", "Chase")
    print userid
    estate_id = CreateNewEstate("The Rift", userid)
    print estate_id
    print LookupEstateById(estate_id)
    print LookupEstateIds()
Exemplo n.º 33
0
    cnx = mysql.connector.connect(**props.getCoreDbConfig())
    cursor = cnx.cursor()
    sql = \
        "SELECT estate_map.RegionID, estate_map.EstateID FROM estate_map " + \
        "WHERE estate_map.RegionID = %s"
    cursor.execute(sql, (sim_uuid,))
    estate_id = None
    for (RegionID, EstateID) in cursor:
        estate_id = str(EstateID)
    cursor.close()
    return estate_id
    
    
if __name__ == "__main__":
    import os
    from inworldz.util.filesystem import getCurrentUsersAppDataPath
    from inworldz.util.user import LookupUserIdByName
    from inworldz.maestro.version import product_name
    appdata = getCurrentUsersAppDataPath()
    propfile = os.path.join(appdata, product_name(), "maestro.config")
    props = DefaultProperties.instance()
    props.loadConfiguration(propfile)
    
    userid = LookupUserIdByName("Mike", "Chase")
    print userid
    estate_id = CreateNewEstate("The Rift", userid)
    print estate_id
    print LookupEstateById(estate_id)
    print LookupEstateIds()

Exemplo n.º 34
0
 def __init__(self, uuid, record={}):
     ServiceBase.__init__(self, uuid, record)
     self.props = DefaultProperties.instance()
     self.thisHost = RegionHost.instance()
     """ Should lookup and init a proxy for other hosts here also """
Exemplo n.º 35
0
 def __init__(self, uuid, record={}):
     ServiceBase.__init__(self, uuid, record) 
     self.props = DefaultProperties.instance()
     self.thisHost = RegionHost.instance()
     """ Should lookup and init a proxy for other hosts here also """