edumfa 2.3.0__tar.gz → 2.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {edumfa-2.3.0/edumfa.egg-info → edumfa-2.4.0}/PKG-INFO +41 -32
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/changelog +48 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/changelog +6 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/prepolicy.py +0 -38
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/validate.py +3 -5
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/app.py +0 -4
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/backup.py +23 -1
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auditmodules/sqlaudit.py +1 -2
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/logginghandler.py +4 -2
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/policy.py +1 -4
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/SQLIdResolver.py +1 -1
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/indexedsecrettoken.py +2 -1
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/footer.html +72 -72
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/header.html +12 -12
- {edumfa-2.3.0 → edumfa-2.4.0/edumfa.egg-info}/PKG-INFO +41 -32
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa.egg-info/requires.txt +47 -30
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/env.py +0 -2
- {edumfa-2.3.0 → edumfa-2.4.0}/pyproject.toml +15 -12
- {edumfa-2.3.0 → edumfa-2.4.0}/requirements.txt +27 -22
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_lib_policy.py +1 -32
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_validate.py +2 -8
- {edumfa-2.3.0 → edumfa-2.4.0}/AUTHORS.md +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/LICENSE +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/MANIFEST.in +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/README.rst +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/README.md +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/apache/edumfaapp.wsgi +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/apache/sites-available/edumfa-venv.conf +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/apache/sites-available/edumfa.conf +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/config/freeradius2/edumfa +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/config/freeradius2/mods-perl-edumfa +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/config/freeradius3/edumfa +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/config/freeradius3/mods-perl-edumfa +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/crontab/edumfa +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/docker-compose-example.yml +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/docker-example/edumfa-policy.conf +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/docker-example/edumfa-setup.sh +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/docker-example/edumfa.cfg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/docker-setup.sh +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/edumfa/dictionary +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/edumfa/edumfa.cfg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/edumfa_radius.pm +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/gunicorn/edumfaapp.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/logging.cfg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/nginx/edumfaapp.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/nginx/sites-available/edumfa +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/rlm_perl.ini +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/clean +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/compat +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/control +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/copyright +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/rules +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/source/format +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/source/options +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/changelog +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/compat +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/control +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/copyright +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/edumfa-radius.install +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/edumfa-radius.postinst +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/edumfa-radius.postrm +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/rules +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/source/format +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/clean +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/compat +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/control +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-apache2.install +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-apache2.postinst +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-apache2.postrm +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-nginx.install +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-nginx.postinst +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-nginx.postrm +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/rules +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/source/format +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/source/options +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/deploy/uwsgi/apps-available/edumfa.xml +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/application.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/audit.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/auth.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/before_after.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/caconnector.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/clienttype.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/edumfaserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/event.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/decorators.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/policyhelper.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/postpolicy.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/utils.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/machine.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/machineresolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/monitoring.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/periodictask.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/policy.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/radiusserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/realm.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/recover.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/register.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/resolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/serviceid.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/smsgateway.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/smtpserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/system.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/token.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/tokengroup.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/ttype.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/user.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/babel.cfg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/admin.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/api.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/audit.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/authcache.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/ca.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/config.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/core.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/event.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/helper.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/hsm.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/main.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/policy.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/realm.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/resolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/token.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/config.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/applications/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/applications/base.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/applications/luks.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/applications/offline.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/applications/ssh.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/apps.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/audit.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auditmodules/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auditmodules/base.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auditmodules/containeraudit.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auditmodules/loggeraudit.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auth.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/authcache.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/cache/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnector.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/baseca.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/caservice_pb2.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/caservice_pb2_grpc.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/localca.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/msca.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/challenge.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/challengeresponsedecorators.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/clientapplication.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/config.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/counter.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/crypto.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/decorators.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/edumfaserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/error.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/event.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/base.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/counterhandler.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/customuserattributeshandler.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/federationhandler.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/requestmangler.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/responsemangler.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/scripthandler.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/tokenhandler.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/usernotification.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/webhookeventhandler.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/framework.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/importotp.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/lifecycle.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/log.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machine.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machineresolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machines/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machines/base.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machines/hosts.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machines/ldap.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/monitoringmodules/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/monitoringmodules/base.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/monitoringmodules/sqlstats.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/monitoringstats.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/passwordreset.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/periodictask.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/pinhandling/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/pinhandling/base.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/policydecorators.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/pooling.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/queue.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/queues/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/queues/base.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/queues/huey_queue.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/radiusserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/realm.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/HTTPResolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/LDAPIdResolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/PasswdIdResolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/SCIMIdResolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/UserIdResolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/security/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/security/aeshsm.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/security/default.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/security/encryptkey.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/security/password/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/serviceid.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/FirebaseProvider.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/HttpMessageToUidProvider.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/HttpSMSProvider.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/SMSProvider.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/ScriptSMSProvider.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/SipgateSMSProvider.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/SmppSMSProvider.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/SmtpSMSProvider.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smtpserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/sqlutils.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/subscriptions.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/task/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/task/base.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/task/eventcounter.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/task/simplestats.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/token.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokenclass.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokengroup.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/HMAC.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/applicationspecificpasswordtoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/certificatetoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/daplugtoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/daypasswordtoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/emailtoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/foureyestoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/hotptoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/legacypushtoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/mOTP.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/motptoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/ocra.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/ocratoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/papertoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/passwordtoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/pushtoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/questionnairetoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/radiustoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/registrationtoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/remotetoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/smstoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/spasstoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/sshkeytoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/tantoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/tiqrtoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/totptoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/u2f.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/u2ftoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/vasco.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/vascotoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/webauthn.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/webauthntoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/yubicotoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/yubikeytoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/user.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/usercache.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/utils/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/utils/compare.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/utils/export.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/messages.pot +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/models.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/README.md +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/app.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/audit/controllers/auditControllers.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/audit/factories/audit.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/audit/states/states.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/audit/views/audit.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/audit/views/audit.log.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/components/controllers/componentControllers.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/components/factories/component.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/components/states/states.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/components/views/component.clienttype.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/components/views/component.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/configControllers.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/eduMfaServerController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/eventController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/ldapMachineResolverController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/periodicTaskController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/radiusServerController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/serviceidController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/smsgatewayController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/smtpServerController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/tokengroupController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/factories/config.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/states/states.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.caconnectors.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.caconnectors.local.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.caconnectors.microsoft.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.edumfaserver.edit.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.edumfaserver.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.events.details.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.events.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.events.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.machineresolvers.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.mresolvers.hosts.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.mresolvers.ldap.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.mresolvers.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.periodictasks.details.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.periodictasks.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.periodictasks.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.policies.details.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.policies.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.policies.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.radius.edit.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.radius.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.realms.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.realms.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.http.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.ldap.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.passwd.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.scim.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.sql.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.serviceid.edit.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.serviceid.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.smsgateway.edit.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.smsgateway.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.smtp.edit.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.smtp.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.system.doc.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.system.edit.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.system.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.daypassword.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.email.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.hotp.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.question.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.radius.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.remote.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.sms.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.tiqr.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.totp.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.u2f.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.webauthn.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.yubico.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.yubikey.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.tokengroup.edit.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.tokengroup.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.tokens.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/dialog.confirm_delete.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dashboard/controllers/dashboardControllers.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dashboard/states/states.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dashboard/views/dashboard.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dialogs/views/dialog.about.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dialogs/views/dialog.autocreate_realm.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dialogs/views/dialog.lock.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dialogs/views/dialog.no.token.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dialogs/views/dialog.welcome.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/controllers/directives.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.assigntoken.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.assignuser.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.attachmachine.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.attachtoken.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.csvdownload.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.filter.table.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.policyconditions.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.tokendata.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/filters/filters.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/controllers/loginControllers.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/factories/auth.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/factories/u2f.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/factories/webauthn.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/states/states.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/views/enter-response.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/views/login.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/views/offline.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/views/pinchange.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/controllers/machineController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/controllers/machineDetailsController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/factories/machine.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/states/states.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/views/machine.details.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/views/machine.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/views/machine.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/recovery/controllers/recoveryControllers.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/recovery/factories/recoveryFactory.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/recovery/states/states.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/recovery/views/recovery.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/recovery/views/recovery.reset.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/register/controllers/registerControllers.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/register/factories/registerFactory.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/register/states/states.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/register/views/register.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenApplicationsController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenChallengesController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenControllers.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenDetailController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenGetSerialController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenLostController.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/factories/token.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/factories/validate.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/states/states.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/dialog.ask_token_delete.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.applications.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.applications.offline.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.applications.ssh.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.assign.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.challenges.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.details.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.display.apps.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.4eyes.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.applspec.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.certificate.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.daypassword.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.edupush.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.email.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.hotp.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.indexedsecret.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.motp.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.paper.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.push.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.question.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.radius.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.registration.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.remote.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.sms.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.spass.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.sshkey.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.tan.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.tiqr.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.totp.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.u2f.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.vasco.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.webauthn.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.yubico.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.yubikey.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.applspec.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.certificate.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.daypassword.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.edupush.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.hotp.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.motp.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.paper.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.push.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.registration.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.tan.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.tiqr.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.totp.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.u2f.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.webauthn.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.getserial.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.import.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.lost.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/translation/translations.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/controllers/userControllers.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/factories/user.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/states/states.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/dialog.ask_user_delete.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.add.dynamic.form.fields.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.add.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.details.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.list.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.password.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/angular-inform.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/angular-inform.css.map +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/bootstrap-theme.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/bootstrap-theme.css.map +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/bootstrap.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/bootstrap.css.map +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/hotkeys.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/isteven-multi-select.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.eot +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.svg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.ttf +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff2 +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/angular-inform.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/angular-inform.js.map +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/angular.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/bootstrap.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/hotkeys.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/jquery.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/angular-gettext.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/angular-idle.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/angular-sanitize.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js.map +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/isteven-multi-select.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/ng-file-upload.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/u2f-api.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ui-bootstrap-tpls.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/webauthn-client/edumfa-webauthn.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/baseline.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/content.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/eduMFA-logo.png +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/highlight.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/menu.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/papertoken.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/signin.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/table-ui.css +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/customize/README.rst +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/favicon.png +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/img/FIDO-U2F-Security-Key-444x444.png +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/img/plugup.jpg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/img/solokeys.png +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/img/u2fzero.png +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/package-lock.json +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/package.json +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/providers/errorMessageProvider.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/providers/versioningProvider.js +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/baseline.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/cert_request_form.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/deactivated.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/documentation.rst +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/index.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/menu.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/token_enrolled.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/update_contrib.sh +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/cs/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/cs/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/de/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/de/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/es/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/es/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/fr/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/it/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/it/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/nl/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/nl/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/pl/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/pl/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/pt_BR/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/ro/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/ro/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/ru/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/ru/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/si/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/si/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/tr/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/tr/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/zh_Hans/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/zh_Hans/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/zh_Hant/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/webui/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/webui/certificate.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/webui/login.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa.egg-info/SOURCES.txt +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa.egg-info/dependency_links.txt +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa.egg-info/entry_points.txt +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/edumfa.egg-info/top_level.txt +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/README +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/alembic.ini +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/script.py.mako +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/006d4747f858_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/00762b3f7a60_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/0c7123345224_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/0d011e94a8e8_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/140ba0ca4f07_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/145ce80decd_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/14a1bcb10018_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/19f727d285e2_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/1a0710df148b_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/1a69e5e5e2ac_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/1edda52b619f_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/204d8d4f351e_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/205bda834127_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/20969b4cbf06_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/2118e566df16_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/2181294eed0b_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/22558d9f3178_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/239995464c48_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/2551ee982544_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/2ac117d0a6f5_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/2c9430cfc66b_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/307a4fbe8a05_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3236a1abf1c6_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3429d523e51f_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/36428afb2457_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/37e6b49fc686_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3ae3c668f444_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3ba618f6b820_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3c6e9dd7fbac_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3d7f8b29cbb1_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3f7e8583ea2_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/4023571658f8_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/4238eac8ccab_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/449903fb6e35_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/48ee74b8a7c8_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/49a04e560d96_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/4a0aec37e7cf_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/4d9178fa8336_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/4f32a4e1bf33_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/50adc980d625_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/5402fd96fbca_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/58e4f7ebb705_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/59ef3e03bc62_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/5cb310101a1f_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/631ec59e1ca6_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/7d82d8b680a9_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/849170064430_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/86f40f535d7c_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/888b56ed5dcb_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/89e57ed16379_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/8d40dbcfda25_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/9155f0d3d028_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/a28f2733897b_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/a63df077051a_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/a7e91b18a460_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/b9131d0686eb_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/cb6d7b7bae63_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d2ae8e54b628_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d3c0f0403a84_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d415d490eb05_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d5870fd2f2a4_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d6b40a745e5_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d756b34061ff_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/dceb6cd3c41e_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/e360c56bcf8c_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/e5cbeb7c177_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/ef29ba43e290_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/fa07bd604a75.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/fabcf24d9304_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/ff26585932ec_.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/setup.cfg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/setup.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/base.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/conftest.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/ldap3mock.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/mscamock.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/pkcs11mock.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/queuemock.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/radiusmock.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/redismock.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/smppmock.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/smtpmock.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_2stepinit.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_applications.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_audit.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_auth.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_caconnector.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_clienttype.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_edumfaserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_events.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_lib_utils.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_machineresolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_machines.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_machines_serviceid.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_monitoring.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_offline_no_token.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_periodictask.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_policy.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_push_validate.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_radiusserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_register.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_roles.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_serviceids.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_smsgateway.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_smtpserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_system.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_token.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_tokengroup.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_ttype.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_u2f.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_users.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_app.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_db_model.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_applications.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_apps.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_audit.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_auth.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_authcache.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_caconnector.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_challenges.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_clientapplication.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_config.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_counter.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_crypto.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_edumfaserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_eventhandler_logging.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_eventhandler_usernotification.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_events.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_framework.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_importotp.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_lifecycle.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_machine_resolver_ldap.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_machines.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_machinetokens.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_monitoringstats.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_periodictask.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_policy.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_policydecorator.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_pooling.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_queue.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_radiusserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_realm.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_recovery.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_resolver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_serviceid.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_smsprovider.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_smtpserver.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_sqlutils.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_subscriptions.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_task_eventcounter.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_task_simplestats.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tasks.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_token.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokenclass.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokengroup.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_certificate.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_daplug.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_daypassword.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_email.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_foureyes.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_hotp.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_indexedsecret.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_motp.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_paper.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_passwordtoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_push.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_questionnaire.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_radius.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_registration.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_remote.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_sms.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_spass.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_ssh.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_tan.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_tiqr.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_totp.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_u2f.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_vasco.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_webauthn.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_yubico.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_yubikey.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_user.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_usercache.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_utils.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_utils_compare.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_mock_ldap3.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_resolver_realm.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_scripts.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_ui_certificate.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_ui_login.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/FIDO-U2F-Security-Key-444x444.png +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/NetKnights.pem +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/__init__.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/altstatic/templates/testui.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/attestation/yubico.pem +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/audit.sqlite +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/cacert.pem +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/cakey.pem +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/index.txt +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/index.txt.attr +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/openssl.cnf +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/serial +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/templates.yaml +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/dictionary +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/does_not_exist +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/emailtemplate.html +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/empty.oath +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/enckey +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/enckey.enc +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/event.conf +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/fancytoken.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/firebase-test.json +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/google-services.json +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/gpg/public.pem +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/gpg/pubring.gpg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/gpg/random_seed +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/gpg/secring.gpg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/gpg/trustdb.gpg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/hosts +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/import.oath +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/import.oath.asc +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/jwt_sign.key +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/logging.cfg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/logging.yml +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/logging_broken.yaml +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/msca-connector/ca.pem +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/msca-connector/privacyidea-encrypted.key +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/msca-connector/privacyidea.key +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/msca-connector/privacyidea.pem +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ocra.csv +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/passwd +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/passwd-duplicate-name +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/passwords +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/policy.cfg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/policy.conf +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/policy_empty_file.cfg +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/private.pem +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/pskc-aes.xml +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/pskc-password.xml +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/public.pem +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/pw-2nd-resolver +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/scripts/fail.sh +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/scripts/ls.sh +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/scripts/success.sh +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/test.sub +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/test2.sub +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/testuser-api.sqlite +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/testuser.sqlite +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/testusercache.sqlite +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/trusted_attestation_roots/solokeys_device_attestation_ca.pem +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/trusted_attestation_roots/yubico_u2f_device_attestation_ca.pem +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/yubico-oath-long.csv +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/yubico-oath.csv +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/yubico.csv +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/creategoogleauthenticator-file +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-authorizedkeys +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-convert-base32.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-convert-token +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-convert-token.1 +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-convert-xml-to-csv +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-ad-users +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-ad-users.1 +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-certificate +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-certificate.1 +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-pwidresolver-user +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-pwidresolver-user.1 +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-sqlidresolver-user +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-sqlidresolver-user.1 +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-userdb +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-userdb.1 +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-cron +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-diag +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-expired-users +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-export-edumfa-counter.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-export-linotp-counter.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-fetchssh +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-fetchssh.1 +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-fix-access-rights +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-fix-access-rights.1 +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-get-serial +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-get-unused-tokens +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-migrate-linotp.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-pip-update +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-pip-update.1 +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-queue-huey +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-schema-upgrade +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-standalone +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-sync-owncloud.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-token-janitor +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-update-counter.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-update-linotp-counter.py +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-user-action +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-usercache-cleanup +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/getgooglecodes +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/reset-edumfa +0 -0
- {edumfa-2.3.0 → edumfa-2.4.0}/tools/ssha.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: edumfa
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.0
|
|
4
4
|
Summary: eduMFA: identity, multifactor authentication (OTP), authorization, audit
|
|
5
5
|
Author-email: "edumfa.io" <edumfa@listserv.dfn.de>
|
|
6
6
|
License: GNU AFFERO GENERAL PUBLIC LICENSE
|
|
@@ -647,31 +647,32 @@ Requires-Python: >=3.8
|
|
|
647
647
|
Description-Content-Type: text/x-rst
|
|
648
648
|
License-File: LICENSE
|
|
649
649
|
License-File: AUTHORS.md
|
|
650
|
-
Requires-Dist: alembic==1.
|
|
650
|
+
Requires-Dist: alembic==1.14.0
|
|
651
651
|
Requires-Dist: argon2-cffi==23.1.0
|
|
652
652
|
Requires-Dist: argon2-cffi-bindings==21.2.0
|
|
653
|
-
Requires-Dist: async-timeout==
|
|
653
|
+
Requires-Dist: async-timeout==5.0.1
|
|
654
654
|
Requires-Dist: babel==2.16.0
|
|
655
|
-
Requires-Dist: bcrypt==4.2.
|
|
655
|
+
Requires-Dist: bcrypt==4.2.1
|
|
656
656
|
Requires-Dist: beautifulsoup4==4.12.3
|
|
657
|
-
Requires-Dist: blinker==1.8.2
|
|
657
|
+
Requires-Dist: blinker==1.8.2; python_version < "3.9"
|
|
658
|
+
Requires-Dist: blinker==1.9.0; python_version >= "3.9"
|
|
658
659
|
Requires-Dist: cachetools==5.5.0
|
|
659
|
-
Requires-Dist: cbor2==5.6.
|
|
660
|
+
Requires-Dist: cbor2==5.6.5
|
|
660
661
|
Requires-Dist: certifi==2024.8.30
|
|
661
662
|
Requires-Dist: cffi==1.17.1
|
|
662
|
-
Requires-Dist: charset-normalizer==3.
|
|
663
|
+
Requires-Dist: charset-normalizer==3.4.0
|
|
663
664
|
Requires-Dist: click==8.1.7
|
|
664
665
|
Requires-Dist: configobj==5.0.9
|
|
665
|
-
Requires-Dist: croniter==
|
|
666
|
-
Requires-Dist: cryptography==
|
|
666
|
+
Requires-Dist: croniter==5.0.1
|
|
667
|
+
Requires-Dist: cryptography==43.0.3
|
|
667
668
|
Requires-Dist: defusedxml==0.7.1
|
|
668
|
-
Requires-Dist: flask==3.0.3
|
|
669
|
+
Requires-Dist: flask==3.0.3; python_version < "3.9"
|
|
670
|
+
Requires-Dist: flask==3.1.0; python_version >= "3.9"
|
|
669
671
|
Requires-Dist: flask-babel==4.0.0
|
|
670
672
|
Requires-Dist: flask-migrate==4.0.7
|
|
671
673
|
Requires-Dist: flask-sqlalchemy==3.1.1
|
|
672
|
-
Requires-Dist:
|
|
673
|
-
Requires-Dist:
|
|
674
|
-
Requires-Dist: grpcio==1.66.2
|
|
674
|
+
Requires-Dist: google-auth==2.36.0
|
|
675
|
+
Requires-Dist: grpcio==1.68.0
|
|
675
676
|
Requires-Dist: huey==2.5.2
|
|
676
677
|
Requires-Dist: idna==3.10
|
|
677
678
|
Requires-Dist: importlib-metadata==8.5.0
|
|
@@ -679,15 +680,17 @@ Requires-Dist: itsdangerous==2.2.0
|
|
|
679
680
|
Requires-Dist: jinja2==3.1.4
|
|
680
681
|
Requires-Dist: ldap3==2.9.1
|
|
681
682
|
Requires-Dist: lxml==5.3.0
|
|
682
|
-
Requires-Dist: mako==1.3.
|
|
683
|
-
Requires-Dist: markupsafe==2.1.5
|
|
683
|
+
Requires-Dist: mako==1.3.6
|
|
684
|
+
Requires-Dist: markupsafe==2.1.5; python_version < "3.9"
|
|
685
|
+
Requires-Dist: markupsafe==3.0.2; python_version >= "3.9"
|
|
684
686
|
Requires-Dist: netaddr==1.3.0
|
|
685
687
|
Requires-Dist: passlib==1.7.4
|
|
686
688
|
Requires-Dist: pyasn1==0.6.1
|
|
687
689
|
Requires-Dist: pyasn1-modules==0.4.1
|
|
688
690
|
Requires-Dist: pycparser==2.22
|
|
689
|
-
Requires-Dist: pydash==8.0.
|
|
690
|
-
Requires-Dist: pyjwt==2.9.0
|
|
691
|
+
Requires-Dist: pydash==8.0.4
|
|
692
|
+
Requires-Dist: pyjwt==2.9.0; python_version < "3.9"
|
|
693
|
+
Requires-Dist: pyjwt==2.10.1; python_version >= "3.9"
|
|
691
694
|
Requires-Dist: pymysql==1.1.1
|
|
692
695
|
Requires-Dist: pyopenssl==24.2.1
|
|
693
696
|
Requires-Dist: pyrad==2.4
|
|
@@ -695,28 +698,31 @@ Requires-Dist: python-dateutil==2.9.0.post0
|
|
|
695
698
|
Requires-Dist: python-gnupg==0.5.3
|
|
696
699
|
Requires-Dist: pytz==2024.2
|
|
697
700
|
Requires-Dist: pyyaml==6.0.2
|
|
698
|
-
Requires-Dist: redis==5.
|
|
701
|
+
Requires-Dist: redis==5.2.0
|
|
699
702
|
Requires-Dist: requests==2.32.3
|
|
700
703
|
Requires-Dist: rsa==4.9
|
|
701
704
|
Requires-Dist: segno==1.6.1
|
|
702
705
|
Requires-Dist: six==1.16.0
|
|
703
706
|
Requires-Dist: smpplib==2.2.3
|
|
704
707
|
Requires-Dist: soupsieve==2.6
|
|
705
|
-
Requires-Dist: sqlalchemy==2.0.
|
|
708
|
+
Requires-Dist: sqlalchemy==2.0.36
|
|
706
709
|
Requires-Dist: typing-extensions==4.12.2
|
|
707
710
|
Requires-Dist: urllib3==2.2.3
|
|
708
|
-
Requires-Dist: werkzeug==3.0.
|
|
709
|
-
Requires-Dist:
|
|
710
|
-
Requires-Dist:
|
|
711
|
+
Requires-Dist: werkzeug==3.0.6; python_version < "3.9"
|
|
712
|
+
Requires-Dist: werkzeug==3.1.3; python_version >= "3.9"
|
|
713
|
+
Requires-Dist: zipp==3.20.2; python_version < "3.9"
|
|
714
|
+
Requires-Dist: zipp==3.21.0; python_version >= "3.9"
|
|
715
|
+
Requires-Dist: setuptools==75.3.0; python_version < "3.9"
|
|
716
|
+
Requires-Dist: setuptools==75.6.0; python_version >= "3.9"
|
|
711
717
|
Provides-Extra: docs
|
|
712
718
|
Requires-Dist: furo==2024.8.6; extra == "docs"
|
|
713
719
|
Requires-Dist: docutils==0.21.2; extra == "docs"
|
|
714
720
|
Requires-Dist: imagesize==1.4.1; extra == "docs"
|
|
715
|
-
Requires-Dist: packaging==24.
|
|
721
|
+
Requires-Dist: packaging==24.2; extra == "docs"
|
|
716
722
|
Requires-Dist: pyenchant==3.2.2; extra == "docs"
|
|
717
723
|
Requires-Dist: Pygments==2.18.0; extra == "docs"
|
|
718
724
|
Requires-Dist: snowballstemmer==2.2.0; extra == "docs"
|
|
719
|
-
Requires-Dist: Sphinx==8.
|
|
725
|
+
Requires-Dist: Sphinx==8.1.3; extra == "docs"
|
|
720
726
|
Requires-Dist: sphinxcontrib-applehelp==2.0.0; extra == "docs"
|
|
721
727
|
Requires-Dist: sphinxcontrib-devhelp==2.0.0; extra == "docs"
|
|
722
728
|
Requires-Dist: sphinxcontrib-htmlhelp==2.1.0; extra == "docs"
|
|
@@ -729,25 +735,28 @@ Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
|
|
|
729
735
|
Requires-Dist: sphinx-inline-tabs==2023.4.21; extra == "docs"
|
|
730
736
|
Provides-Extra: test
|
|
731
737
|
Requires-Dist: attrs==24.2.0; extra == "test"
|
|
732
|
-
Requires-Dist: coverage==7.6.1; extra == "test"
|
|
738
|
+
Requires-Dist: coverage==7.6.1; python_version < "3.9" and extra == "test"
|
|
739
|
+
Requires-Dist: coverage==7.6.8; python_version >= "3.9" and extra == "test"
|
|
733
740
|
Requires-Dist: exceptiongroup==1.2.2; extra == "test"
|
|
734
741
|
Requires-Dist: iniconfig==2.0.0; extra == "test"
|
|
735
742
|
Requires-Dist: mock==5.1.0; extra == "test"
|
|
736
|
-
Requires-Dist: packaging==24.
|
|
743
|
+
Requires-Dist: packaging==24.2; extra == "test"
|
|
737
744
|
Requires-Dist: pluggy==1.5.0; extra == "test"
|
|
738
|
-
Requires-Dist: pyparsing==3.1.4; extra == "test"
|
|
745
|
+
Requires-Dist: pyparsing==3.1.4; python_version < "3.9" and extra == "test"
|
|
746
|
+
Requires-Dist: pyparsing==3.2.0; python_version >= "3.9" and extra == "test"
|
|
739
747
|
Requires-Dist: pytest==8.3.3; extra == "test"
|
|
740
|
-
Requires-Dist: pytest-cov==5.0.0; extra == "test"
|
|
748
|
+
Requires-Dist: pytest-cov==5.0.0; python_version < "3.9" and extra == "test"
|
|
749
|
+
Requires-Dist: pytest-cov==6.0.0; python_version >= "3.9" and extra == "test"
|
|
741
750
|
Requires-Dist: responses==0.25.3; extra == "test"
|
|
742
751
|
Requires-Dist: testfixtures==8.3.0; extra == "test"
|
|
743
|
-
Requires-Dist: tomli==2.
|
|
752
|
+
Requires-Dist: tomli==2.2.1; extra == "test"
|
|
744
753
|
Requires-Dist: types-PyYAML==6.0.12.20240917; extra == "test"
|
|
745
754
|
Provides-Extra: postgres
|
|
746
|
-
Requires-Dist: psycopg2==2.9.
|
|
755
|
+
Requires-Dist: psycopg2==2.9.10; extra == "postgres"
|
|
747
756
|
Provides-Extra: hsm
|
|
748
|
-
Requires-Dist: PyKCS11==1.5.
|
|
757
|
+
Requires-Dist: PyKCS11==1.5.17; extra == "hsm"
|
|
749
758
|
Provides-Extra: kerberos
|
|
750
|
-
Requires-Dist: gssapi==1.
|
|
759
|
+
Requires-Dist: gssapi==1.9.0; extra == "kerberos"
|
|
751
760
|
|
|
752
761
|
eduMFA
|
|
753
762
|
===========
|
|
@@ -1,3 +1,51 @@
|
|
|
1
|
+
edumfa (2.4.0{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
2
|
+
|
|
3
|
+
* Add different lock-table-options for backups with galera by @pmainz in https://github.com/eduMFA/eduMFA/pull/370
|
|
4
|
+
* chore(deps): update codecov/codecov-action action to v5 by @renovate in https://github.com/eduMFA/eduMFA/pull/428
|
|
5
|
+
* chore(deps): update dependency alembic to v1.14.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/409
|
|
6
|
+
* chore(deps): update dependency async-timeout to v5.0.1 by @renovate in https://github.com/eduMFA/eduMFA/pull/412
|
|
7
|
+
* chore(deps): update dependency bcrypt to v4.2.1 by @renovate in https://github.com/eduMFA/eduMFA/pull/436
|
|
8
|
+
* chore(deps): update dependency blinker to v1.9.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/416
|
|
9
|
+
* chore(deps): update dependency cbor2 to v5.6.5 by @renovate in https://github.com/eduMFA/eduMFA/pull/362
|
|
10
|
+
* chore(deps): update dependency charset-normalizer to v3.4.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/361
|
|
11
|
+
* chore(deps): update dependency coverage to v7.6.4 by @renovate in https://github.com/eduMFA/eduMFA/pull/367
|
|
12
|
+
* chore(deps): update dependency croniter to v5 by @renovate in https://github.com/eduMFA/eduMFA/pull/398
|
|
13
|
+
* chore(deps): update dependency cryptography to v43.0.3 by @renovate in https://github.com/eduMFA/eduMFA/pull/379
|
|
14
|
+
* chore(deps): update dependency flask to v3.1.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/424
|
|
15
|
+
* chore(deps): update dependency google-auth to v2.36.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/413
|
|
16
|
+
* chore(deps): update dependency grpcio to v1.68.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/431
|
|
17
|
+
* chore(deps): update dependency gssapi to v1.9.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/347
|
|
18
|
+
* chore(deps): update dependency mako to v1.3.6 by @renovate in https://github.com/eduMFA/eduMFA/pull/381
|
|
19
|
+
* chore(deps): update dependency markupsafe to v3 by @renovate in https://github.com/eduMFA/eduMFA/pull/356
|
|
20
|
+
* chore(deps): update dependency psycopg2 to v2.9.10 by @renovate in https://github.com/eduMFA/eduMFA/pull/373
|
|
21
|
+
* chore(deps): update dependency pydash to v8.0.4 by @renovate in https://github.com/eduMFA/eduMFA/pull/407
|
|
22
|
+
* chore(deps): update dependency pyjwt to v2.10.1 by @renovate in https://github.com/eduMFA/eduMFA/pull/444
|
|
23
|
+
* chore(deps): update dependency pykcs11 to v1.5.17 by @renovate in https://github.com/eduMFA/eduMFA/pull/374
|
|
24
|
+
* chore(deps): update dependency pyparsing to v3.2.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/369
|
|
25
|
+
* chore(deps): update dependency redis to v5.2.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/387
|
|
26
|
+
* chore(deps): update dependency setuptools to v75.6.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/437
|
|
27
|
+
* chore(deps): update dependency sphinx to v8.1.3 by @renovate in https://github.com/eduMFA/eduMFA/pull/368
|
|
28
|
+
* chore(deps): update dependency sqlalchemy to v2.0.36 by @renovate in https://github.com/eduMFA/eduMFA/pull/371
|
|
29
|
+
* chore(deps): update dependency tomli to v2.0.2 by @renovate in https://github.com/eduMFA/eduMFA/pull/346
|
|
30
|
+
* chore(deps): update dependency werkzeug to v3.1.3 by @renovate in https://github.com/eduMFA/eduMFA/pull/415
|
|
31
|
+
* chore(deps): update dependency zipp to v3.21.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/417
|
|
32
|
+
* chore: Improve Ubuntu workflow by @Luc1412 in https://github.com/eduMFA/eduMFA/pull/385
|
|
33
|
+
* chore: extend filter & pyparsing fix by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/376
|
|
34
|
+
* chore: remove flask versioned dependency by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/352
|
|
35
|
+
* feat: deprecate and remove `application_tokentype` policy by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/353
|
|
36
|
+
* fix(deps): update dependency coverage to v7.6.8 by @renovate in https://github.com/eduMFA/eduMFA/pull/438
|
|
37
|
+
* fix(deps): update dependency packaging to v24.2 by @renovate in https://github.com/eduMFA/eduMFA/pull/414
|
|
38
|
+
* fix(deps): update dependency pytest-cov to v6 by @renovate in https://github.com/eduMFA/eduMFA/pull/399
|
|
39
|
+
* fix(deps): update dependency tomli to v2.2.1 by @renovate in https://github.com/eduMFA/eduMFA/pull/443
|
|
40
|
+
* fix: create venv for bandit scan by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/365
|
|
41
|
+
* fix: for events without serial or tokenowner, log 'N/A', not all tokens by @j-hoff in https://github.com/eduMFA/eduMFA/pull/445
|
|
42
|
+
* fix: indexedsecret tokens should honor DefaultChallengeValidityTime by @j-hoff in https://github.com/eduMFA/eduMFA/pull/411
|
|
43
|
+
* fix: remove password encoding from migration by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/345
|
|
44
|
+
* fix: session usage by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/449
|
|
45
|
+
* fix: session usage for audit module by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/450
|
|
46
|
+
|
|
47
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 29 Nov 2024 12:00:00 +0100
|
|
48
|
+
|
|
1
49
|
edumfa (2.3.0{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
2
50
|
|
|
3
51
|
* Add documentation for Docker images + optimize Dockerfile
|
|
@@ -323,44 +323,6 @@ def check_otp_pin(request=None, action=None):
|
|
|
323
323
|
return True
|
|
324
324
|
|
|
325
325
|
|
|
326
|
-
def check_application_tokentype(request=None, action=None):
|
|
327
|
-
"""
|
|
328
|
-
This pre policy checks if the request is allowed to specify the tokentype.
|
|
329
|
-
If the policy is not set, a possibly set parameter "type" is removed
|
|
330
|
-
from the request.
|
|
331
|
-
|
|
332
|
-
Check ACTION.APPLICATION_TOKENTYPE
|
|
333
|
-
|
|
334
|
-
This decorator should wrap
|
|
335
|
-
/validate/check, /validate/samlcheck and /validate/triggerchallenge.
|
|
336
|
-
|
|
337
|
-
:param request: The request that is intercepted during the API call
|
|
338
|
-
:type request: Request Object
|
|
339
|
-
:param action: An optional Action
|
|
340
|
-
:type action: basestring
|
|
341
|
-
:returns: Always true. Modified the parameter request
|
|
342
|
-
"""
|
|
343
|
-
application_allowed = Match.generic(g, scope=SCOPE.AUTHZ,
|
|
344
|
-
action=ACTION.APPLICATION_TOKENTYPE,
|
|
345
|
-
user_object=request.User,
|
|
346
|
-
active=True).any()
|
|
347
|
-
|
|
348
|
-
# if the application is not allowed, we remove the tokentype
|
|
349
|
-
if not application_allowed and "type" in request.all_data:
|
|
350
|
-
# We need the tokentype to be present in usernameless authentication
|
|
351
|
-
is_usernameless = Match.generic(g, scope=SCOPE.AUTH,
|
|
352
|
-
action=WEBAUTHNACTION.USERNAMELESS_AUTHN,
|
|
353
|
-
user_object=None,
|
|
354
|
-
active=True).any()
|
|
355
|
-
if "user" not in request.all_data and "serial" not in request.all_data and is_usernameless:
|
|
356
|
-
return True
|
|
357
|
-
log.info("Removing parameter 'type' from request, "
|
|
358
|
-
"since application is not allowed to authenticate by token type.")
|
|
359
|
-
del request.all_data["type"]
|
|
360
|
-
|
|
361
|
-
return True
|
|
362
|
-
|
|
363
|
-
|
|
364
326
|
def sms_identifiers(request=None, action=None):
|
|
365
327
|
"""
|
|
366
328
|
This is a token specific wrapper for sms tokens
|
|
@@ -73,7 +73,7 @@ from edumfa.api.lib.prepolicy import (prepolicy, set_realm,
|
|
|
73
73
|
api_key_required, mangle,
|
|
74
74
|
save_client_application_type,
|
|
75
75
|
check_base_action, pushtoken_wait, webauthntoken_auth, webauthntoken_authz,
|
|
76
|
-
webauthntoken_request,
|
|
76
|
+
webauthntoken_request,
|
|
77
77
|
increase_failcounter_on_challenge, legacypushtoken_wait)
|
|
78
78
|
from edumfa.api.lib.postpolicy import (postpolicy,
|
|
79
79
|
check_tokentype, check_serial,
|
|
@@ -203,7 +203,6 @@ def offlinerefill():
|
|
|
203
203
|
@postpolicy(check_serial, request=request)
|
|
204
204
|
@postpolicy(autoassign, request=request)
|
|
205
205
|
@add_serial_from_response_to_g
|
|
206
|
-
@prepolicy(check_application_tokentype, request=request)
|
|
207
206
|
@prepolicy(pushtoken_wait, request=request)
|
|
208
207
|
@prepolicy(legacypushtoken_wait, request=request)
|
|
209
208
|
@prepolicy(set_realm, request=request)
|
|
@@ -239,7 +238,7 @@ def check():
|
|
|
239
238
|
:param realm: The realm of the user, who tries to authenticate. If the
|
|
240
239
|
realm is omitted, the user is looked up in the default realm.
|
|
241
240
|
:param type: The tokentype of the tokens, that are taken into account during
|
|
242
|
-
authentication.
|
|
241
|
+
authentication.
|
|
243
242
|
It is ignored when a distinct serial is given.
|
|
244
243
|
:param pass: The password, that consists of the OTP PIN and the OTP value.
|
|
245
244
|
:param otponly: If set to 1, only the OTP value is verified. This is used
|
|
@@ -447,7 +446,6 @@ def check():
|
|
|
447
446
|
@postpolicy(preferred_client_mode, request=request)
|
|
448
447
|
@add_serial_from_response_to_g
|
|
449
448
|
@check_user_or_serial_in_request(request)
|
|
450
|
-
@prepolicy(check_application_tokentype, request=request)
|
|
451
449
|
@prepolicy(increase_failcounter_on_challenge, request=request)
|
|
452
450
|
@prepolicy(check_base_action, request, action=ACTION.TRIGGERCHALLENGE)
|
|
453
451
|
@prepolicy(webauthntoken_request, request=request)
|
|
@@ -468,7 +466,7 @@ def trigger_challenge():
|
|
|
468
466
|
realm is omitted, the user is looked up in the default realm.
|
|
469
467
|
:param serial: The serial number of the token.
|
|
470
468
|
:param type: The tokentype of the tokens, that are taken into account during
|
|
471
|
-
authentication.
|
|
469
|
+
authentication.
|
|
472
470
|
Is ignored when a distinct serial is given.
|
|
473
471
|
|
|
474
472
|
:return: a json result with a "result" of the number of matching
|
|
@@ -31,7 +31,6 @@ import yaml
|
|
|
31
31
|
from flask import Flask, request, Response
|
|
32
32
|
from flask_babel import Babel
|
|
33
33
|
from flask_migrate import Migrate
|
|
34
|
-
from flaskext.versioned import Versioned
|
|
35
34
|
|
|
36
35
|
# we need this import to add the before/after request function to the blueprints
|
|
37
36
|
import edumfa.api.before_after
|
|
@@ -130,9 +129,6 @@ def create_app(config_name="development",
|
|
|
130
129
|
if config_name:
|
|
131
130
|
app.config.from_object(config[config_name])
|
|
132
131
|
|
|
133
|
-
# Set up flask-versioned
|
|
134
|
-
versioned = Versioned(app, format='%(path)s?v=%(version)s')
|
|
135
|
-
|
|
136
132
|
try:
|
|
137
133
|
# Try to load the given config_file.
|
|
138
134
|
# If it does not exist, just ignore it.
|
|
@@ -143,7 +143,17 @@ def restore(backup_file: str):
|
|
|
143
143
|
@click.option("-r", "--radius_dir", help="Path to FreeRADIUS config directory",
|
|
144
144
|
type=click.Path(exists=True, file_okay=False, readable=True), default=None, show_default=True)
|
|
145
145
|
@click.option("-e", "--enckey", is_flag=True, help="Add the encryption key to the backup")
|
|
146
|
-
|
|
146
|
+
@click.option("-l", "--lock_table_strategy", type=click.Choice(["LAT","ST","SLT"], case_sensitive=False),
|
|
147
|
+
help="""
|
|
148
|
+
Set the strategy for how to lock tables (only needed for mariadb galera cluster).
|
|
149
|
+
Options are:\n
|
|
150
|
+
LAT: Lock ALL tables in ALL databases! (not recommended for productive instances or
|
|
151
|
+
if the cluster has more databases than just edumfa; requires at least RELOAD privilege);\n
|
|
152
|
+
ST: Single transaction (only for InnoDB);\n
|
|
153
|
+
SLT: Skip lock tables (may lead to inconsistent dumps)
|
|
154
|
+
""",
|
|
155
|
+
default=None)
|
|
156
|
+
def create(target_dir: str, config_dir: str, radius_dir=None, enckey: bool = False, lock_table_strategy: str = None):
|
|
147
157
|
"""
|
|
148
158
|
Create a new backup of the database and the configuration. The default
|
|
149
159
|
does not include the encryption key. Use the 'enckey' option to also
|
|
@@ -152,6 +162,11 @@ def create(target_dir: str, config_dir: str, radius_dir=None, enckey: bool = Fal
|
|
|
152
162
|
|
|
153
163
|
If you want to also include the RADIUS configuration into the backup
|
|
154
164
|
specify a directory using 'radius_directory'.
|
|
165
|
+
|
|
166
|
+
MariaDB Galera cluster currently does not support the LOCK TABLE option
|
|
167
|
+
causing the backup to fail. Therefore when using galera a different lock
|
|
168
|
+
table strategy needs to be set via the '-l' option.
|
|
169
|
+
Please read option documentation and choose your option carefully!
|
|
155
170
|
"""
|
|
156
171
|
CONF_DIR = config_dir
|
|
157
172
|
DATE = datetime.now().strftime("%Y%m%d-%H%M")
|
|
@@ -187,6 +202,13 @@ def create(target_dir: str, config_dir: str, radius_dir=None, enckey: bool = Fal
|
|
|
187
202
|
if parsed_sqluri.port:
|
|
188
203
|
cmd.extend(['-P', str(parsed_sqluri.port)])
|
|
189
204
|
cmd.extend(['-B', shlex_quote(database), '-r', shlex_quote(sqlfile)])
|
|
205
|
+
if lock_table_strategy:
|
|
206
|
+
if lock_table_strategy.upper() == 'LAT':
|
|
207
|
+
cmd.append('--lock-all-tables')
|
|
208
|
+
elif lock_table_strategy.upper() == 'ST':
|
|
209
|
+
cmd.append('--single-transaction')
|
|
210
|
+
elif lock_table_strategy.upper() == 'SLT':
|
|
211
|
+
cmd.append('--skip-lock-tables')
|
|
190
212
|
call(cmd, shell=False)
|
|
191
213
|
elif sqltype in PSQL_DIALECTS:
|
|
192
214
|
env = os.environ.copy()
|
|
@@ -150,8 +150,7 @@ class Audit(AuditBase):
|
|
|
150
150
|
# create a configured "Session" class. ``scoped_session`` is not
|
|
151
151
|
# necessary because we do not share session objects among threads.
|
|
152
152
|
# We use it anyway as a safety measure.
|
|
153
|
-
|
|
154
|
-
self.session = Session()
|
|
153
|
+
self.session = scoped_session(sessionmaker(bind=self.engine))
|
|
155
154
|
# Ensure that the connection gets returned to the pool when the request has
|
|
156
155
|
# been handled. This may close an already-closed session, but this is not a problem.
|
|
157
156
|
register_finalizer(self._finalize_session)
|
|
@@ -147,9 +147,11 @@ class LoggingEventHandler(BaseEventHandler):
|
|
|
147
147
|
tokens = get_tokens(serial=serial)
|
|
148
148
|
if tokens:
|
|
149
149
|
tokentype = tokens[0].get_tokentype()
|
|
150
|
-
|
|
151
|
-
token_objects = get_tokens(user=tokenowner)
|
|
150
|
+
elif tokenowner:
|
|
151
|
+
token_objects = get_tokens(user=tokenowner, active=True)
|
|
152
152
|
serial = ','.join([tok.get_serial() for tok in token_objects])
|
|
153
|
+
else:
|
|
154
|
+
serial = 'N/A'
|
|
153
155
|
|
|
154
156
|
tags = create_tag_dict(logged_in_user=logged_in_user,
|
|
155
157
|
request=request,
|
|
@@ -2292,10 +2292,7 @@ def get_static_policy_definitions(scope=None):
|
|
|
2292
2292
|
},
|
|
2293
2293
|
ACTION.APPLICATION_TOKENTYPE: {
|
|
2294
2294
|
'type': 'bool',
|
|
2295
|
-
'desc': _("
|
|
2296
|
-
"for authentication. Application may set the parameter 'type' in "
|
|
2297
|
-
"the request. Works with validate/check, validate/samlcheck and "
|
|
2298
|
-
"validate/triggerchallenge.")
|
|
2295
|
+
'desc': _("<b>DEPRECATED:</b> This policy does not apply any more. Every application is allowed to set the requested tokentype.")
|
|
2299
2296
|
},
|
|
2300
2297
|
ACTION.AUTHMAXSUCCESS: {
|
|
2301
2298
|
'type': 'str',
|
|
@@ -485,7 +485,7 @@ class IdResolver (UserIdResolver):
|
|
|
485
485
|
# which involves the connect-string and the pool settings.
|
|
486
486
|
self.engine = get_engine(self.getResolverId(), self._create_engine)
|
|
487
487
|
# We use ``scoped_session``.
|
|
488
|
-
self.session = scoped_session(sessionmaker(bind=self.engine))
|
|
488
|
+
self.session = scoped_session(sessionmaker(bind=self.engine))
|
|
489
489
|
# Session should be closed on teardown
|
|
490
490
|
register_finalizer(self.session.close)
|
|
491
491
|
self.session._model_changes = {}
|
|
@@ -36,6 +36,7 @@ returns -1.
|
|
|
36
36
|
|
|
37
37
|
import logging
|
|
38
38
|
import datetime
|
|
39
|
+
from edumfa.lib.config import get_from_config
|
|
39
40
|
from edumfa.lib.tokenclass import TokenClass, AUTHENTICATIONMODE
|
|
40
41
|
from edumfa.lib.policy import SCOPE, ACTION, GROUP, get_action_values_from_options
|
|
41
42
|
from edumfa.lib.crypto import urandom, safe_compare
|
|
@@ -210,7 +211,7 @@ class IndexedSecretTokenClass(TokenClass):
|
|
|
210
211
|
options) or DEFAULT_POSITION_COUNT)
|
|
211
212
|
|
|
212
213
|
attributes = {'state': transactionid}
|
|
213
|
-
validity = 120
|
|
214
|
+
validity = int(get_from_config('DefaultChallengeValidityTime', 120))
|
|
214
215
|
|
|
215
216
|
if self.is_active() is True:
|
|
216
217
|
# We need to get a number of random positions from the secret string
|
|
@@ -1,88 +1,88 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
<ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.about.html"
|
|
4
|
+
<ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.about.html" }}'">
|
|
5
5
|
</ng-include>
|
|
6
6
|
|
|
7
|
-
<ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.lock.html"
|
|
7
|
+
<ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.lock.html" }}'">
|
|
8
8
|
</ng-include>
|
|
9
9
|
|
|
10
|
-
<ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.autocreate_realm.html"
|
|
10
|
+
<ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.autocreate_realm.html" }}'">
|
|
11
11
|
</ng-include>
|
|
12
12
|
|
|
13
|
-
<ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.welcome.html"
|
|
13
|
+
<ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.welcome.html" }}'">
|
|
14
14
|
</ng-include>
|
|
15
15
|
|
|
16
|
-
<ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.no.token.html"
|
|
16
|
+
<ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.no.token.html" }}'">
|
|
17
17
|
</ng-include>
|
|
18
18
|
|
|
19
19
|
<!--load all javascripts after the HTML part-->
|
|
20
|
-
<script src="{{ instance }}/{{ "static/contrib/js/angular.js"
|
|
21
|
-
<script src="{{ instance }}/{{ "static/contrib/js/ui-bootstrap-tpls.js"
|
|
22
|
-
<script src="{{ instance }}/{{ "static/contrib/js/jquery.js"
|
|
23
|
-
<script src="{{ instance }}/{{ "static/contrib/js/bootstrap.js"
|
|
24
|
-
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/isteven-multi-select.js"
|
|
25
|
-
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/ng-file-upload.js"
|
|
26
|
-
<script src="{{ instance }}/{{ "static/contrib/js/hotkeys.js"
|
|
27
|
-
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-ui-router.js"
|
|
28
|
-
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-idle.js"
|
|
29
|
-
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-gettext.js"
|
|
30
|
-
<script src="{{ instance }}/{{ "static/components/translation/translations.js"
|
|
31
|
-
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-sanitize.js"
|
|
32
|
-
<script src="{{ instance }}/{{ "static/app.js"
|
|
33
|
-
<script src="{{ instance }}/{{ "static/providers/versioningProvider.js"
|
|
34
|
-
<script src="{{ instance }}/{{ "static/providers/errorMessageProvider.js"
|
|
35
|
-
<script src="{{ instance }}/{{ "static/components/directives/controllers/directives.js"
|
|
36
|
-
<script src="{{ instance }}/{{ "static/components/login/factories/auth.js"
|
|
37
|
-
<script src="{{ instance }}/{{ "static/components/login/factories/u2f.js"
|
|
38
|
-
<script src="{{ instance }}/{{ "static/components/login/factories/webauthn.js"
|
|
39
|
-
<script src="{{ instance }}/{{ "static/components/login/states/states.js"
|
|
40
|
-
<script src="{{ instance }}/{{ "static/components/login/controllers/loginControllers.js"
|
|
41
|
-
<script src="{{ instance }}/{{ "static/components/dashboard/controllers/dashboardControllers.js"
|
|
42
|
-
<script src="{{ instance }}/{{ "static/components/dashboard/states/states.js"
|
|
43
|
-
<script src="{{ instance }}/{{ "static/components/token/factories/token.js"
|
|
44
|
-
<script src="{{ instance }}/{{ "static/components/token/factories/validate.js"
|
|
45
|
-
<script src="{{ instance }}/{{ "static/components/token/states/states.js"
|
|
46
|
-
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenControllers.js"
|
|
47
|
-
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenDetailController.js"
|
|
48
|
-
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenLostController.js"
|
|
49
|
-
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenGetSerialController.js"
|
|
50
|
-
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenChallengesController.js"
|
|
51
|
-
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenApplicationsController.js"
|
|
52
|
-
<script src="{{ instance }}/{{ "static/components/user/factories/user.js"
|
|
53
|
-
<script src="{{ instance }}/{{ "static/components/user/states/states.js"
|
|
54
|
-
<script src="{{ instance }}/{{ "static/components/user/controllers/userControllers.js"
|
|
55
|
-
<script src="{{ instance }}/{{ "static/components/audit/factories/audit.js"
|
|
56
|
-
<script src="{{ instance }}/{{ "static/components/audit/states/states.js"
|
|
57
|
-
<script src="{{ instance }}/{{ "static/components/audit/controllers/auditControllers.js"
|
|
58
|
-
<script src="{{ instance }}/{{ "static/components/components/factories/component.js"
|
|
59
|
-
<script src="{{ instance }}/{{ "static/components/components/states/states.js"
|
|
60
|
-
<script src="{{ instance }}/{{ "static/components/components/controllers/componentControllers.js"
|
|
61
|
-
<script src="{{ instance }}/{{ "static/components/config/factories/config.js"
|
|
62
|
-
<script src="{{ instance }}/{{ "static/components/config/states/states.js"
|
|
63
|
-
<script src="{{ instance }}/{{ "static/components/config/controllers/configControllers.js"
|
|
64
|
-
<script src="{{ instance }}/{{ "static/components/config/controllers/eventController.js"
|
|
65
|
-
<script src="{{ instance }}/{{ "static/components/config/controllers/periodicTaskController.js"
|
|
66
|
-
<script src="{{ instance }}/{{ "static/components/config/controllers/ldapMachineResolverController.js"
|
|
67
|
-
<script src="{{ instance }}/{{ "static/components/config/controllers/smtpServerController.js"
|
|
68
|
-
<script src="{{ instance }}/{{ "static/components/config/controllers/radiusServerController.js"
|
|
69
|
-
<script src="{{ instance }}/{{ "static/components/config/controllers/tokengroupController.js"
|
|
70
|
-
<script src="{{ instance }}/{{ "static/components/config/controllers/serviceidController.js"
|
|
71
|
-
<script src="{{ instance }}/{{ "static/components/config/controllers/eduMfaServerController.js"
|
|
72
|
-
<script src="{{ instance }}/{{ "static/components/config/controllers/smsgatewayController.js"
|
|
73
|
-
<script src="{{ instance }}/{{ "static/components/machine/factories/machine.js"
|
|
74
|
-
<script src="{{ instance }}/{{ "static/components/machine/states/states.js"
|
|
75
|
-
<script src="{{ instance }}/{{ "static/components/machine/controllers/machineController.js"
|
|
76
|
-
<script src="{{ instance }}/{{ "static/components/machine/controllers/machineDetailsController.js"
|
|
77
|
-
<script src="{{ instance }}/{{ "static/components/register/states/states.js"
|
|
78
|
-
<script src="{{ instance }}/{{ "static/components/register/controllers/registerControllers.js"
|
|
79
|
-
<script src="{{ instance }}/{{ "static/components/register/factories/registerFactory.js"
|
|
80
|
-
<script src="{{ instance }}/{{ "static/components/recovery/states/states.js"
|
|
81
|
-
<script src="{{ instance }}/{{ "static/components/recovery/controllers/recoveryControllers.js"
|
|
82
|
-
<script src="{{ instance }}/{{ "static/components/recovery/factories/recoveryFactory.js"
|
|
83
|
-
<script src="{{ instance }}/{{ "static/components/filters/filters.js"
|
|
84
|
-
<script src="{{ instance }}/{{ "static/contrib/js/angular-inform.js"
|
|
85
|
-
<script src="{{ instance }}/{{ "static/contrib/js/webauthn-client/edumfa-webauthn.js"
|
|
86
|
-
<script src="{{ instance }}/{{ "static/contrib/js/u2f-api.js"
|
|
20
|
+
<script src="{{ instance }}/{{ "static/contrib/js/angular.js" }}"></script>
|
|
21
|
+
<script src="{{ instance }}/{{ "static/contrib/js/ui-bootstrap-tpls.js" }}"></script>
|
|
22
|
+
<script src="{{ instance }}/{{ "static/contrib/js/jquery.js" }}"></script>
|
|
23
|
+
<script src="{{ instance }}/{{ "static/contrib/js/bootstrap.js" }}"></script>
|
|
24
|
+
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/isteven-multi-select.js" }}"></script>
|
|
25
|
+
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/ng-file-upload.js" }}"></script>
|
|
26
|
+
<script src="{{ instance }}/{{ "static/contrib/js/hotkeys.js" }}"></script>
|
|
27
|
+
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-ui-router.js" }}"></script>
|
|
28
|
+
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-idle.js" }}"></script>
|
|
29
|
+
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-gettext.js" }}"></script>
|
|
30
|
+
<script src="{{ instance }}/{{ "static/components/translation/translations.js" }}"></script>
|
|
31
|
+
<script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-sanitize.js" }}"></script>
|
|
32
|
+
<script src="{{ instance }}/{{ "static/app.js" }}"></script>
|
|
33
|
+
<script src="{{ instance }}/{{ "static/providers/versioningProvider.js" }}"></script>
|
|
34
|
+
<script src="{{ instance }}/{{ "static/providers/errorMessageProvider.js" }}"></script>
|
|
35
|
+
<script src="{{ instance }}/{{ "static/components/directives/controllers/directives.js" }}"></script>
|
|
36
|
+
<script src="{{ instance }}/{{ "static/components/login/factories/auth.js" }}"></script>
|
|
37
|
+
<script src="{{ instance }}/{{ "static/components/login/factories/u2f.js" }}"></script>
|
|
38
|
+
<script src="{{ instance }}/{{ "static/components/login/factories/webauthn.js" }}"></script>
|
|
39
|
+
<script src="{{ instance }}/{{ "static/components/login/states/states.js" }}"></script>
|
|
40
|
+
<script src="{{ instance }}/{{ "static/components/login/controllers/loginControllers.js" }}"></script>
|
|
41
|
+
<script src="{{ instance }}/{{ "static/components/dashboard/controllers/dashboardControllers.js" }}"></script>
|
|
42
|
+
<script src="{{ instance }}/{{ "static/components/dashboard/states/states.js" }}"></script>
|
|
43
|
+
<script src="{{ instance }}/{{ "static/components/token/factories/token.js" }}"></script>
|
|
44
|
+
<script src="{{ instance }}/{{ "static/components/token/factories/validate.js" }}"></script>
|
|
45
|
+
<script src="{{ instance }}/{{ "static/components/token/states/states.js" }}"></script>
|
|
46
|
+
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenControllers.js" }}"></script>
|
|
47
|
+
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenDetailController.js" }}"></script>
|
|
48
|
+
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenLostController.js" }}"></script>
|
|
49
|
+
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenGetSerialController.js" }}"></script>
|
|
50
|
+
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenChallengesController.js" }}"></script>
|
|
51
|
+
<script src="{{ instance }}/{{ "static/components/token/controllers/tokenApplicationsController.js" }}"></script>
|
|
52
|
+
<script src="{{ instance }}/{{ "static/components/user/factories/user.js" }}"></script>
|
|
53
|
+
<script src="{{ instance }}/{{ "static/components/user/states/states.js" }}"></script>
|
|
54
|
+
<script src="{{ instance }}/{{ "static/components/user/controllers/userControllers.js" }}"></script>
|
|
55
|
+
<script src="{{ instance }}/{{ "static/components/audit/factories/audit.js" }}"></script>
|
|
56
|
+
<script src="{{ instance }}/{{ "static/components/audit/states/states.js" }}"></script>
|
|
57
|
+
<script src="{{ instance }}/{{ "static/components/audit/controllers/auditControllers.js" }}"></script>
|
|
58
|
+
<script src="{{ instance }}/{{ "static/components/components/factories/component.js" }}"></script>
|
|
59
|
+
<script src="{{ instance }}/{{ "static/components/components/states/states.js" }}"></script>
|
|
60
|
+
<script src="{{ instance }}/{{ "static/components/components/controllers/componentControllers.js" }}"></script>
|
|
61
|
+
<script src="{{ instance }}/{{ "static/components/config/factories/config.js" }}"></script>
|
|
62
|
+
<script src="{{ instance }}/{{ "static/components/config/states/states.js" }}"></script>
|
|
63
|
+
<script src="{{ instance }}/{{ "static/components/config/controllers/configControllers.js" }}"></script>
|
|
64
|
+
<script src="{{ instance }}/{{ "static/components/config/controllers/eventController.js" }}"></script>
|
|
65
|
+
<script src="{{ instance }}/{{ "static/components/config/controllers/periodicTaskController.js" }}"></script>
|
|
66
|
+
<script src="{{ instance }}/{{ "static/components/config/controllers/ldapMachineResolverController.js" }}"></script>
|
|
67
|
+
<script src="{{ instance }}/{{ "static/components/config/controllers/smtpServerController.js" }}"></script>
|
|
68
|
+
<script src="{{ instance }}/{{ "static/components/config/controllers/radiusServerController.js" }}"></script>
|
|
69
|
+
<script src="{{ instance }}/{{ "static/components/config/controllers/tokengroupController.js" }}"></script>
|
|
70
|
+
<script src="{{ instance }}/{{ "static/components/config/controllers/serviceidController.js" }}"></script>
|
|
71
|
+
<script src="{{ instance }}/{{ "static/components/config/controllers/eduMfaServerController.js" }}"></script>
|
|
72
|
+
<script src="{{ instance }}/{{ "static/components/config/controllers/smsgatewayController.js" }}"></script>
|
|
73
|
+
<script src="{{ instance }}/{{ "static/components/machine/factories/machine.js" }}"></script>
|
|
74
|
+
<script src="{{ instance }}/{{ "static/components/machine/states/states.js" }}"></script>
|
|
75
|
+
<script src="{{ instance }}/{{ "static/components/machine/controllers/machineController.js" }}"></script>
|
|
76
|
+
<script src="{{ instance }}/{{ "static/components/machine/controllers/machineDetailsController.js" }}"></script>
|
|
77
|
+
<script src="{{ instance }}/{{ "static/components/register/states/states.js" }}"></script>
|
|
78
|
+
<script src="{{ instance }}/{{ "static/components/register/controllers/registerControllers.js" }}"></script>
|
|
79
|
+
<script src="{{ instance }}/{{ "static/components/register/factories/registerFactory.js" }}"></script>
|
|
80
|
+
<script src="{{ instance }}/{{ "static/components/recovery/states/states.js" }}"></script>
|
|
81
|
+
<script src="{{ instance }}/{{ "static/components/recovery/controllers/recoveryControllers.js" }}"></script>
|
|
82
|
+
<script src="{{ instance }}/{{ "static/components/recovery/factories/recoveryFactory.js" }}"></script>
|
|
83
|
+
<script src="{{ instance }}/{{ "static/components/filters/filters.js" }}"></script>
|
|
84
|
+
<script src="{{ instance }}/{{ "static/contrib/js/angular-inform.js" }}"></script>
|
|
85
|
+
<script src="{{ instance }}/{{ "static/contrib/js/webauthn-client/edumfa-webauthn.js" }}"></script>
|
|
86
|
+
<script src="{{ instance }}/{{ "static/contrib/js/u2f-api.js" }}"></script>
|
|
87
87
|
</body>
|
|
88
88
|
</html>
|