def process_request(self, request): logger.debug(_('inside process_request %s') % request.path) # AuthenticationMiddleware is required so that request.user exists. if not hasattr(request, 'user'): logger.debug('improperly configured: request has no user attr') raise ImproperlyConfigured( _("The Django LTI auth middleware requires the" " authentication middleware to be installed. Edit your" " MIDDLEWARE_CLASSES setting to insert" " 'django.contrib.auth.middleware.AuthenticationMiddleware'" " before the PINAuthMiddleware class.")) resource_link_id = None if request.method == 'POST' and request.POST.get( 'lti_message_type') == 'basic-lti-launch-request': logger.debug( _('received a basic-lti-launch-request - authenticating the ' 'user')) # authenticate and log the user in with Timer() as t: user = auth.authenticate(request=request) logger.debug(_('authenticate() took %s s') % t.secs) if user is not None: # User is valid. Set request.user and persist user in the session # by logging the user in. logger.debug( _('user was successfully authenticated; now log them in')) request.user = user with Timer() as t: auth.login(request, user) logger.debug(_('login() took %s s') % t.secs) resource_link_id = request.POST.get('resource_link_id', None) lti_launch = { 'context_id': request.POST.get('context_id', None), 'context_label': request.POST.get('context_label', None), 'context_title': request.POST.get('context_title', None), 'context_type': request.POST.get('context_type', None), 'custom_canvas_account_id': request.POST.get('custom_canvas_account_id', None), 'custom_canvas_account_sis_id': request.POST.get('custom_canvas_account_sis_id', None), 'custom_canvas_api_domain': request.POST.get('custom_canvas_api_domain', None), 'custom_canvas_course_id': request.POST.get('custom_canvas_course_id', None), 'custom_canvas_enrollment_state': request.POST.get('custom_canvas_enrollment_state', None), 'custom_canvas_membership_roles': request.POST.get('custom_canvas_membership_roles', '').split(','), 'custom_canvas_user_id': request.POST.get('custom_canvas_user_id', None), 'custom_canvas_user_login_id': request.POST.get('custom_canvas_user_login_id', None), 'launch_presentation_css_url': request.POST.get('launch_presentation_css_url', None), 'launch_presentation_document_target': request.POST.get('launch_presentation_document_target', None), 'launch_presentation_height': request.POST.get('launch_presentation_height', None), 'launch_presentation_locale': request.POST.get('launch_presentation_locale', None), 'launch_presentation_return_url': request.POST.get('launch_presentation_return_url', None), 'launch_presentation_width': request.POST.get('launch_presentation_width', None), 'lis_course_offering_sourcedid': request.POST.get('lis_course_offering_sourcedid', None), 'lis_outcome_service_url': request.POST.get('lis_outcome_service_url', None), 'lis_person_contact_email_primary': request.POST.get('lis_person_contact_email_primary', None), 'lis_person_name_family': request.POST.get('lis_person_name_family', None), 'lis_person_name_full': request.POST.get('lis_person_name_full', None), 'lis_person_name_given': request.POST.get('lis_person_name_given', None), 'lis_person_sourcedid': request.POST.get('lis_person_sourcedid', None), 'lti_message_type': request.POST.get('lti_message_type', None), 'resource_link_description': request.POST.get('resource_link_description', None), 'resource_link_id': resource_link_id, 'resource_link_title': request.POST.get('resource_link_title', None), 'roles': request.POST.get('roles', '').split(','), 'selection_directive': request.POST.get('selection_directive', None), 'tool_consumer_info_product_family_code': request.POST.get('tool_consumer_info_product_family_code', None), 'tool_consumer_info_version': request.POST.get('tool_consumer_info_version', None), 'tool_consumer_instance_contact_email': request.POST.get('tool_consumer_instance_contact_email', None), 'tool_consumer_instance_description': request.POST.get('tool_consumer_instance_description', None), 'tool_consumer_instance_guid': request.POST.get('tool_consumer_instance_guid', None), 'tool_consumer_instance_name': request.POST.get('tool_consumer_instance_name', None), 'tool_consumer_instance_url': request.POST.get('tool_consumer_instance_url', None), 'user_id': request.POST.get('user_id', None), 'user_image': request.POST.get('user_image', None), } # If a custom role key is defined in project, merge into existing role list if hasattr(settings, 'LTI_CUSTOM_ROLE_KEY'): custom_roles = request.POST.get( settings.LTI_CUSTOM_ROLE_KEY, '').split(',') lti_launch['roles'] += filter( None, custom_roles) # Filter out any empty roles lti_launches = request.session.get('LTI_LAUNCH') if not lti_launches or not isinstance(lti_launches, OrderedDict): lti_launches = OrderedDict() request.session['LTI_LAUNCH'] = lti_launches # Limit the number of LTI launches stored in the session max_launches = getattr(settings, 'LTI_AUTH_MAX_LAUNCHES', 10) logger.info("LTI launch count %s [max=%s]" % (len(lti_launches.keys()), max_launches)) if len(lti_launches.keys()) >= max_launches: invalidated_launch = lti_launches.popitem(last=False) logger.info( _("LTI launch invalidated: {0}").format( json.dumps(invalidated_launch, indent=4))) lti_launches[resource_link_id] = lti_launch logger.info( _("LTI launch added to session: {0}").format( json.dumps(lti_launch, indent=4))) else: # User could not be authenticated! logger.warning( _('user could not be authenticated via LTI ' 'params; let the request continue in case ' 'another auth plugin is configured')) else: resource_link_id = request.GET.get('resource_link_id', None) setattr( request, 'LTI', request.session.get('LTI_LAUNCH', {}).get(resource_link_id, {})) set_current_request(request) if not request.LTI: logger.warning( _("Could not find LTI launch for resource_link_id " "%s"), resource_link_id)
from timer import Timer if __name__ == "__main__": timer = Timer("seconds", 1000) timer.enable() while timer.get_tick() < 10: timer.run() if timer.next_tick(): print(str(timer.get_tick()) + " seconds elapsed")
# -*- coding: utf-8 -*- import requests import time import datetime import hashlib import re from urllib import parse import json import sys import random from cat_logger import logger from config import global_config from timer import Timer seckill_timers = Timer() User_Agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36' # 抢购前最好重新登录一遍避免过期 times = global_config.getRaw('config', 'buy_time') good_id = global_config.getRaw('config', 'good_id') pwd = global_config.getRaw('config', 'pwd') user_cookie = global_config.getRaw('config', 'user_cookie') appKey = '12574478' requests_session = requests.session() def get_sign_val(d):