def dynamic_url(): log.debug('attempting to GET a thing') restore_bucket_vars() if 'proxy' in app.current_request.uri_params: path, bucket, filename = process_varargs(app.current_request.uri_params['proxy'], b_map) log.debug('path, bucket, filename: {}'.format(( path, bucket, filename))) if not bucket: template_vars = {'contentstring': 'File not found', 'title': 'File not found'} headers = {} return make_html_response(template_vars, headers, 404, 'error.html') else: path, bucket, filename = (None, None, None) cookievars = get_cookie_vars(app.current_request.headers) user_profile = None if cookievars: log.debug('cookievars: {}'.format(cookievars)) if os.getenv('JWT_COOKIENAME','asf-urs') in cookievars: # this means our cookie is a jwt and we don't need to go digging in the session db user_profile = cookievars[os.getenv('JWT_COOKIENAME','asf-urs')] else: log.warning('jwt cookie not found, falling back to old style') user_profile = get_session(cookievars['urs-user-id'], cookievars['urs-access-token']) # Check for public bucket if check_public_bucket(bucket, public_buckets, b_map): log.debug("Accessing public bucket {0}".format(path)) elif not user_profile: return do_auth_and_return(app.current_request.context) # Check that the bucket is either NOT private, or user belongs to that group private_check = check_private_bucket(bucket, private_buckets, b_map) log.debug('private check: {}'.format(private_check)) u_in_g, new_user_profile = user_in_group(private_check, cookievars, user_profile, False) if new_user_profile and new_user_profile != user_profile: log.debug("Profile was mutated from {0} => {1}".format(user_profile,new_user_profile)) user_profile = new_user_profile log.debug('user_in_group: {}'.format(u_in_g)) if private_check and not u_in_g: template_vars = {'contentstring': 'This data is not currently available.', 'title': 'Could not access data'} headers = {} return make_html_response(template_vars, headers, 403, 'error.html') if not filename: log.warning("Request was made to directory listing instead of object: {0}".format(path)) template_vars = {'contentstring': 'Request does not appear to be valid.', 'title': 'Request Not Serviceable'} headers = {} return make_html_response(template_vars, headers, 404, 'error.html') return try_download_from_bucket(bucket, filename, user_profile)
def dynamic_url_head(): log.debug('attempting to HEAD a thing') restore_bucket_vars() if 'proxy' in app.current_request.uri_params: path, bucket, filename = process_varargs(app.current_request.uri_params['proxy'], b_map) process_results = 'path: {}, bucket: {}, filename:{}'.format(path, bucket, filename) log.debug(process_results) if not bucket: template_vars = {'contentstring': 'Bucket not available', 'title': 'Bucket not available'} headers = {} return make_html_response(template_vars, headers, 404, 'error.html') return try_download_head(bucket, filename) return Response(body='HEAD failed', headers={}, status_code=400)