def main(client_id, user_arguments_dict): """Main function used by front end""" (configuration, logger, output_objects, op_name) = \ initialize_main_variables(client_id, op_header=False, op_menu=client_id) output_objects.append({'object_type': 'header', 'text' : '%s Screen Saver Sandbox Monitor' % \ configuration.short_title }) defaults = signature()[1] (validate_status, accepted) = validate_input(user_arguments_dict, defaults, output_objects, allow_rejects=False) if not validate_status: return (accepted, returnvalues.CLIENT_ERROR) show_all = accepted['show_all'][-1].lower() sort = accepted['sort'][-1] group_by = accepted['group_by'][-1].lower() if not configuration.site_enable_sandboxes: output_objects.append({'object_type': 'text', 'text': '''Sandbox resources are disabled on this site. Please contact the Grid admins %s if you think they should be enabled. ''' % configuration.admin_email}) return (output_objects, returnvalues.OK) # Load the user file try: userdb = load_sandbox_db(configuration) except Exception, exc: output_objects.append({'object_type': 'error_text', 'text' : 'Could not load any sandbox information'}) return (output_objects, returnvalues.SYSTEM_ERROR)
def main(client_id, user_arguments_dict): """Main function used by front end""" (configuration, logger, output_objects, op_name) = \ initialize_main_variables(client_id, op_header=False, op_menu=client_id) output_objects.append({ 'object_type': 'header', 'text': 'Personal Sandbox Administration and Monitor' }) defaults = signature()[1] (validate_status, accepted) = validate_input(user_arguments_dict, defaults, output_objects, allow_rejects=False) if not validate_status: output_objects.append({ 'object_type': 'link', 'destination': 'ssslogin.py', 'text': 'Retry login' }) return (accepted, returnvalues.CLIENT_ERROR) username = accepted['username'][-1].strip() password = accepted['password'][-1].strip() newuser = accepted['newuser'][-1].strip() expert_string = accepted['expert'][-1].strip() expert = False if 'true' == expert_string.lower(): expert = True admin_email = configuration.admin_email if not configuration.site_enable_sandboxes: output_objects.append({ 'object_type': 'text', 'text': '''Sandbox resources are disabled on this site. Please contact the site admins %s if you think they should be enabled. ''' % configuration.admin_email }) return (output_objects, returnvalues.OK) # Load the user DB try: userdb = load_sandbox_db(configuration) except IOError: # First time - create empty dict userdb = {} except Exception, exc: output_objects.append({ 'object_type': 'error_text', 'text': 'Could not read sandbox database! %s' % exc }) return (output_objects, returnvalues.SYSTEM_ERROR)
def main(client_id, user_arguments_dict): """Main function used by front end""" (configuration, logger, output_objects, _) = \ initialize_main_variables(client_id, op_header=False, op_menu=client_id) output_objects.append({'object_type': 'header', 'text' : 'Personal Sandbox Administration and Monitor'}) defaults = signature()[1] (validate_status, accepted) = validate_input(user_arguments_dict, defaults, output_objects, allow_rejects=False) if not validate_status: output_objects.append({'object_type': 'link', 'destination' : 'ssslogin.py', 'text': 'Retry login'}) return (accepted, returnvalues.CLIENT_ERROR) username = accepted['username'][-1].strip() password = accepted['password'][-1].strip() newuser = accepted['newuser'][-1].strip() expert_string = accepted['expert'][-1].strip() expert = False if 'true' == expert_string.lower(): expert = True admin_email = configuration.admin_email if not configuration.site_enable_sandboxes: output_objects.append({'object_type': 'text', 'text': '''Sandbox resources are disabled on this site. Please contact the Grid admins %s if you think they should be enabled. ''' % configuration.admin_email}) return (output_objects, returnvalues.OK) # Load the user DB try: userdb = load_sandbox_db(configuration) except IOError: # First time - create empty dict userdb = {} except Exception, exc: output_objects.append({'object_type': 'error_text', 'text' : 'Could not read sandbox database! %s' % exc}) return (output_objects, returnvalues.SYSTEM_ERROR)
def main(client_id, user_arguments_dict): """Main function used by front end""" (configuration, logger, output_objects, op_name) = \ initialize_main_variables(client_id, op_header=False, op_menu=client_id) output_objects.append({'object_type': 'header', 'text' : '%s Screen Saver Sandbox Monitor' % \ configuration.short_title }) defaults = signature()[1] (validate_status, accepted) = validate_input(user_arguments_dict, defaults, output_objects, allow_rejects=False) if not validate_status: return (accepted, returnvalues.CLIENT_ERROR) show_all = accepted['show_all'][-1].lower() sort = accepted['sort'][-1] group_by = accepted['group_by'][-1].lower() if not configuration.site_enable_sandboxes: output_objects.append({ 'object_type': 'text', 'text': '''Sandbox resources are disabled on this site. Please contact the site admins %s if you think they should be enabled. ''' % configuration.admin_email }) return (output_objects, returnvalues.OK) # Load the user file try: userdb = load_sandbox_db(configuration) except Exception, exc: output_objects.append({ 'object_type': 'error_text', 'text': 'Could not load any sandbox information' }) return (output_objects, returnvalues.SYSTEM_ERROR)
def main(client_id, user_arguments_dict): """Main function used by front end""" (configuration, logger, output_objects, op_name) = \ initialize_main_variables(client_id, op_header=False, op_menu=client_id) output_objects.append({'object_type': 'header', 'text' : '%s Screen Saver Sandbox Download' % \ configuration.short_title }) defaults = signature()[1] (validate_status, accepted) = validate_input(user_arguments_dict, defaults, output_objects, allow_rejects=False) if not validate_status: return (accepted, returnvalues.CLIENT_ERROR) username = accepted['username'][-1] password = accepted['password'][-1] hd_size = accepted['hd_size'][-1] image_format = accepted['image_format'][-1] net_bw = accepted['net_bw'][-1] memory = accepted['memory'][-1] operating_system = accepted['operating_system'][-1] win_solution = accepted['win_solution'][-1] vgrid_list = accepted['vgrid'] cputime = 1000000 sandboxkey = hexlify(open('/dev/urandom').read(32)) ip_address = 'UNKNOWN' if os.environ.has_key('REMOTE_ADDR'): ip_address = os.environ['REMOTE_ADDR'] if not configuration.site_enable_sandboxes: output_objects.append({ 'object_type': 'text', 'text': '''Sandbox resources are disabled on this site. Please contact the site admins %s if you think they should be enabled. ''' % configuration.admin_email }) return (output_objects, returnvalues.OK) if not safe_handler(configuration, 'post', op_name, username, get_csrf_limit(configuration), accepted): output_objects.append({ 'object_type': 'error_text', 'text': '''Only accepting CSRF-filtered POST requests to prevent unintended updates''' }) return (output_objects, returnvalues.CLIENT_ERROR) # check that requested image format is valid if not image_format in ['raw', 'qcow', 'cow', 'qcow2', 'vmdk']: output_objects.append({ 'object_type': 'error_text', 'text': 'Unsupported image format: %s' % image_format }) return (output_objects, returnvalues.CLIENT_ERROR) # check that requested vgrids are valid - anybody can offer their sandbox # for a vgrid but it is still left to the vgrid owners to explicitly # accept all resources all_vgrids = get_vgrid_map_vgrids(configuration) for vgrid in vgrid_list: if not vgrid in all_vgrids: output_objects.append({ 'object_type': 'error_text', 'text': 'Failed to validate %s %s: %s' % (configuration.site_vgrid_label, vgrid, all_vgrids) }) return (output_objects, returnvalues.SYSTEM_ERROR) # Load the user file try: userdb = load_sandbox_db(configuration) except Exception, exc: output_objects.append({ 'object_type': 'error_text', 'text': 'Failed to read login info: %s' % exc }) return (output_objects, returnvalues.SYSTEM_ERROR)
def main(client_id, user_arguments_dict): """Main function used by front end""" (configuration, logger, output_objects, op_name) = \ initialize_main_variables(client_id, op_header=False, op_menu=client_id) output_objects.append({'object_type': 'header', 'text' : '%s Screen Saver Sandbox Download' % \ configuration.short_title }) defaults = signature()[1] (validate_status, accepted) = validate_input(user_arguments_dict, defaults, output_objects, allow_rejects=False) if not validate_status: return (accepted, returnvalues.CLIENT_ERROR) if not correct_handler('POST'): output_objects.append( {'object_type': 'error_text', 'text' : 'Only accepting POST requests to prevent unintended updates'}) return (output_objects, returnvalues.CLIENT_ERROR) username = accepted['username'][-1] password = accepted['password'][-1] hd_size = accepted['hd_size'][-1] image_format = accepted['image_format'][-1] net_bw = accepted['net_bw'][-1] memory = accepted['memory'][-1] operating_system = accepted['operating_system'][-1] win_solution = accepted['win_solution'][-1] vgrid_list = accepted['vgrid'] cputime = 1000000 sandboxkey = hexlify(open('/dev/urandom').read(32)) ip_address = 'UNKNOWN' if os.environ.has_key('REMOTE_ADDR'): ip_address = os.environ['REMOTE_ADDR'] if not configuration.site_enable_sandboxes: output_objects.append({'object_type': 'text', 'text': '''Sandbox resources are disabled on this site. Please contact the Grid admins %s if you think they should be enabled. ''' % configuration.admin_email}) return (output_objects, returnvalues.OK) # check that requested image format is valid if not image_format in ['raw', 'qcow', 'cow', 'qcow2', 'vmdk']: output_objects.append({'object_type': 'error_text', 'text' : 'Unsupported image format: %s' % image_format}) return (output_objects, returnvalues.CLIENT_ERROR) # check that requested vgrids are valid - anybody can offer their sandbox # for a vgrid but it is still left to the vgrid owners to explicitly # accept all resources (vg_status, all_vgrids) = vgrid_list_vgrids(configuration) for vgrid in vgrid_list: if not vg_status or not vgrid in all_vgrids: output_objects.append({'object_type': 'error_text', 'text' : 'Failed to validate %s %s: %s' % (configuration.site_vgrid_label, vgrid, all_vgrids)}) return (output_objects, returnvalues.SYSTEM_ERROR) # Load the user file try: userdb = load_sandbox_db(configuration) except Exception, exc: output_objects.append({'object_type': 'error_text', 'text' : 'Failed to read login info: %s' % exc}) return (output_objects, returnvalues.SYSTEM_ERROR)