Esempio n. 1
0
def finish_login(request, destination, params):
    do_logout(request)

    server = request.app.settings.servers[int(params['server'])]

    if params['type'] == 'cosignproxy':
        name = request.environ['COSIGN_SERVICE']
        fladgejt_params = dict(type='cosignproxy',
                               cosign_proxy=request.app.settings.cosign_proxy,
                               cosign_service=(name, request.cookies[name]))
    else:
        fladgejt_params = params

    try:
        client = create_client(server, fladgejt_params)
    except Exception:
        return sessions.set_cookie(
            request, None,
            app_response(request,
                         server=int(params['server']),
                         type=params['type'],
                         error=traceback.format_exc(),
                         destination=destination))

    csrf_token = sessions.generate_key()
    session = dict(csrf_token=csrf_token, credentials=params, client=client)
    sessid = sessions.create(request, session)
    return sessions.set_cookie(
        request, sessid,
        app_response(request, csrf_token=csrf_token, destination=destination))
Esempio n. 2
0
File: login.py Progetto: Adman/votr
def finish_login(request, destination, params):
    do_logout(request)

    server = request.app.settings.servers[int(params["server"])]

    if params["type"] == "cosignproxy":
        name = request.environ["COSIGN_SERVICE"]
        fladgejt_params = dict(
            type="cosignproxy",
            cosign_proxy=request.app.settings.cosign_proxy,
            cosign_service=(name, request.cookies[name]),
        )
    else:
        fladgejt_params = params

    try:
        client = create_client(server, fladgejt_params)
    except Exception:
        return sessions.set_cookie(
            request,
            None,
            app_response(
                request,
                server=int(params["server"]),
                type=params["type"],
                error=traceback.format_exc(),
                destination=destination,
            ),
        )

    csrf_token = sessions.generate_key()
    session = dict(csrf_token=csrf_token, credentials=params, client=client)
    sessid = sessions.create(request, session)
    return sessions.set_cookie(request, sessid, app_response(request, csrf_token=csrf_token, destination=destination))
Esempio n. 3
0
def prihlas_sa():
    username = os.environ['AIS_USERNAME']
    password = os.environ['AIS_PASSWORD']
    client = create_client(
        settings.servers[0],
        dict(type='cosignpassword', username=username, password=password))
    if os.environ.get('AIS_VERBOSE'): client.context.print_logs = True
    return client
Esempio n. 4
0
def finish_login(request, destination, params):
    do_logout(request)

    server = request.app.settings.servers[int(params['server'])]

    if params['type'] == 'cosignproxy':
        name = request.environ['COSIGN_SERVICE']
        fladgejt_params = dict(type='cosignproxy',
                               cosign_proxy=request.app.settings.cosign_proxy,
                               cosign_service=(name, request.cookies[name]))
    else:
        fladgejt_params = params

    sessid = datetime.utcnow().strftime('%Y%m%d_') + generate_key()
    with sessions.lock(request.app, sessid), \
            sessions.open_log_file(request, sessid) as log_file:
        logger = Logger()
        logger.log_file = log_file

        try:
            logger.log('login', 'Login started',
                       [server.get('title'),
                        params.get('type'), destination])
            client = create_client(server, fladgejt_params, logger=logger)
            csrf_token = generate_key()
            session = dict(csrf_token=csrf_token,
                           credentials=save_credentials(params),
                           client=client)
            sessions.create(request, sessid, session)
        except Exception as e:
            error = traceback.format_exc()
            logger.log('login',
                       'Login failed with {}'.format(type(e).__name__), error)
            response = app_response(request,
                                    server=int(params['server']),
                                    type=params['type'],
                                    error=error,
                                    destination=destination)
            return sessions.set_session_cookie(request, response, None)

        logger.log('login', 'Login finished')

    response = app_response(request,
                            csrf_token=csrf_token,
                            destination=destination)
    return sessions.set_session_cookie(request, response, sessid)
Esempio n. 5
0
def main():
    from fladgejt.login import create_client

    json_input = json.load(sys.stdin)
    fakulta = json_input['fakulta']
    semestre = json_input['semestre']
    relevantne_roky = [ak_rok for ak_rok, sem in semestre]

    client = create_client(json_input['server'], json_input['params'])

#    full_name = client.get_full_name()   # TODO
    is_student = False
    subjects = []

    if client.get_som_student():
        studia = client.get_studia()
        for studium in studia:
            if studium.sp_skratka == 'ZEkP' and not studium.organizacna_jednotka: studium = studium._replace(organizacna_jednotka='PriF')
            if fakulta and studium.organizacna_jednotka != fakulta: continue   # TODO: pouzivat zapisny_list.organizacna_jednotka, ked bude v REST API
            for zapisny_list in client.get_zapisne_listy(studium.studium_key):
                if zapisny_list.akademicky_rok not in relevantne_roky: continue
                is_student = True
                for predmet in client.get_hodnotenia(zapisny_list.zapisny_list_key)[0]:
                    if [zapisny_list.akademicky_rok, predmet.semester] not in semestre: continue
                    subjects.append(dict(
                        skratka=predmet.skratka,
                        nazov=predmet.nazov,
                        semester=predmet.semester,
                        akRok=zapisny_list.akademicky_rok,
                        rokStudia=zapisny_list.rocnik,
                        studijnyProgram=dict(skratka=studium.sp_skratka, nazov=studium.sp_popis),
                    ))

    client.logout()

    result = {}
#    result['full_name'] = full_name
    result['is_student'] = is_student
    result['subjects'] = subjects

    print(json.dumps(result))
Esempio n. 6
0
def prihlas_sa():
    username = os.environ['AIS_USERNAME']
    password = os.environ['AIS_PASSWORD']
    client = create_client(settings.servers[0], dict(type='cosignpassword', username=username, password=password))
    if os.environ.get('AIS_VERBOSE'): client.context.print_logs = True
    return client
Esempio n. 7
0
def main():
    from fladgejt.login import create_client

    json_input = json.load(sys.stdin)
    fakulta = json_input['fakulta']
    semestre = json_input['semestre']
    relevantne_roky = [ak_rok for ak_rok, sem in semestre]

    client = create_client(json_input['server'], json_input['params'])

    #    full_name = client.get_full_name()   # TODO
    is_student = False
    subjects = []
    ostatne_studia = []

    if client.get_som_student():
        studia = client.get_studia()
        for studium in studia:
            if studium.sp_skratka == 'ZEkP' and not studium.organizacna_jednotka:
                studium = studium._replace(organizacna_jednotka='PriF')

            if fakulta and studium.organizacna_jednotka != fakulta:
                for zapisny_list in client.get_zapisne_listy(
                        studium.studium_key):
                    # Ak je to pre nas relevantne studium, vratime ho
                    # Dolezite pri zistovani chybajucej org. jednotky v AISe
                    if zapisny_list.akademicky_rok in relevantne_roky:
                        toto_studium = {}
                        toto_studium[
                            'skratka'] = studium.sp_skratka or "Neznamy program"
                        toto_studium[
                            'oj'] = studium.organizacna_jednotka or "bez fakulty"
                        ostatne_studia.append(toto_studium)
                continue  # TODO: pouzivat zapisny_list.organizacna_jednotka, ked bude v REST API

            for zapisny_list in client.get_zapisne_listy(studium.studium_key):
                if zapisny_list.akademicky_rok not in relevantne_roky: continue
                is_student = True
                for predmet in client.get_hodnotenia(
                        zapisny_list.zapisny_list_key)[0]:
                    if [zapisny_list.akademicky_rok,
                            predmet.semester] not in semestre:
                        continue
                    if predmet.hodn_znamka == 'U': continue
                    subjects.append(
                        dict(
                            skratka=predmet.skratka,
                            nazov=predmet.nazov,
                            semester=predmet.semester,
                            akRok=zapisny_list.akademicky_rok,
                            rokStudia=zapisny_list.rocnik,
                            studijnyProgram=dict(skratka=studium.sp_skratka,
                                                 nazov=studium.sp_popis),
                        ))

    client.logout()

    result = {}
    #    result['full_name'] = full_name
    result['is_student'] = is_student
    result['subjects'] = subjects
    result['ostatne_studia'] = ostatne_studia

    print(json.dumps(result))