Beispiel #1
0
    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)
Beispiel #2
0
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")
Beispiel #3
0
# -*- 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):