edumfa 2.0.0__tar.gz → 2.0.2__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.0.0/edumfa.egg-info → edumfa-2.0.2}/PKG-INFO +7 -8
- {edumfa-2.0.0 → edumfa-2.0.2}/README.rst +4 -6
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/crontab/edumfa +1 -1
- edumfa-2.0.2/deploy/ubuntu/changelog +122 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/control +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/changelog +12 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-apache2.postinst +3 -3
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-nginx.postinst +3 -3
- {edumfa-2.0.0 → edumfa-2.0.2}/doc/conf.py +10 -7
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/postpolicy.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/prepolicy.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/backup.py +18 -4
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/main.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/config.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/applications/base.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auditmodules/base.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auth.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/baseca.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/caservice_pb2_grpc.py +3 -3
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/localca.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/msca.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/challengeresponsedecorators.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/config.py +3 -3
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/crypto.py +3 -3
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/decorators.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/edumfaserver.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/event.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/base.py +3 -3
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/customuserattributeshandler.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/federationhandler.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/logginghandler.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/requestmangler.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/responsemangler.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/tokenhandler.py +3 -3
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/usernotification.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/webhookeventhandler.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/importotp.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/log.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machines/base.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/monitoringmodules/base.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/pinhandling/base.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/policy.py +15 -15
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/policydecorators.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/pooling.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/queue.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/queues/base.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/radiusserver.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/LDAPIdResolver.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/UserIdResolver.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/security/default.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/SMSProvider.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smtpserver.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/subscriptions.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/task/base.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokenclass.py +6 -6
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/HMAC.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/certificatetoken.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/emailtoken.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/indexedsecrettoken.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/mOTP.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/ocra.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/papertoken.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/passwordtoken.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/pushtoken.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/questionnairetoken.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/smstoken.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/tantoken.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/tiqrtoken.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/u2ftoken.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/webauthn.py +20 -20
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/webauthntoken.py +4 -4
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/user.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/usercache.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/utils/compare.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/models.py +13 -3
- {edumfa-2.0.0 → edumfa-2.0.2/edumfa.egg-info}/PKG-INFO +7 -8
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/requires.txt +3 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/5cb310101a1f_.py +1 -7
- {edumfa-2.0.0 → edumfa-2.0.2}/requirements.txt +21 -23
- {edumfa-2.0.0 → edumfa-2.0.2}/setup.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/base.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/ldap3mock.py +4 -4
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/mscamock.py +7 -7
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/pkcs11mock.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/radiusmock.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/redismock.py +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/smppmock.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/smtpmock.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_lib_policy.py +11 -11
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_policy.py +5 -5
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_queue.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_smsprovider.py +223 -5
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_token.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-cron +2 -2
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-migrate-linotp.py +1 -1
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-sync-owncloud.py +1 -1
- edumfa-2.0.0/deploy/ubuntu/changelog +0 -69
- {edumfa-2.0.0 → edumfa-2.0.2}/AUTHORS.md +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/LICENSE +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/MANIFEST.in +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/README.md +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/apache/edumfaapp.wsgi +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/apache/sites-available/edumfa-venv.conf +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/apache/sites-available/edumfa.conf +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/config/freeradius2/edumfa +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/config/freeradius2/mods-perl-edumfa +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/config/freeradius3/edumfa +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/config/freeradius3/mods-perl-edumfa +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/docker-compose-example.yml +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/docker-example/edumfa-policy.conf +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/docker-example/edumfa-setup.sh +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/docker-example/edumfa.cfg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/docker-setup.sh +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/edumfa/dictionary +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/edumfa/edumfa.cfg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/edumfa_radius.pm +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/gunicorn/edumfaapp.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/logging.cfg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/nginx/edumfaapp.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/nginx/sites-available/edumfa +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/rlm_perl.ini +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/clean +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/compat +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/copyright +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/rules +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/source/format +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/source/options +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/changelog +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/compat +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/control +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/copyright +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/edumfa-radius.install +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/edumfa-radius.postinst +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/edumfa-radius.postrm +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/rules +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/source/format +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/clean +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/compat +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/control +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-apache2.install +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-apache2.postrm +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-nginx.install +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-nginx.postrm +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/rules +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/source/format +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/source/options +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/deploy/uwsgi/apps-available/edumfa.xml +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/application.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/audit.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/auth.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/before_after.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/caconnector.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/clienttype.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/edumfaserver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/event.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/decorators.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/policyhelper.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/utils.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/machine.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/machineresolver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/monitoring.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/periodictask.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/policy.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/radiusserver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/realm.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/recover.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/register.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/resolver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/serviceid.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/smsgateway.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/smtpserver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/system.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/token.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/tokengroup.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/ttype.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/user.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/validate.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/app.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/babel.cfg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/admin.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/api.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/audit.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/authcache.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/ca.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/config.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/core.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/event.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/helper.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/hsm.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/policy.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/realm.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/resolver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/token.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/applications/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/applications/luks.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/applications/offline.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/applications/ssh.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/apps.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/audit.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auditmodules/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auditmodules/containeraudit.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auditmodules/loggeraudit.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auditmodules/sqlaudit.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/authcache.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/cache/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnector.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/caservice_pb2.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/challenge.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/clientapplication.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/counter.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/error.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/counterhandler.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/scripthandler.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/framework.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/lifecycle.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machine.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machineresolver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machines/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machines/hosts.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machines/ldap.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/monitoringmodules/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/monitoringmodules/sqlstats.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/monitoringstats.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/passwordreset.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/periodictask.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/pinhandling/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/queues/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/queues/huey_queue.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/realm.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/HTTPResolver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/PasswdIdResolver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/SCIMIdResolver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/SQLIdResolver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/security/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/security/aeshsm.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/security/encryptkey.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/security/password/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/serviceid.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/FirebaseProvider.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/HttpMessageToUidProvider.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/HttpSMSProvider.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/ScriptSMSProvider.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/SipgateSMSProvider.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/SmppSMSProvider.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/SmtpSMSProvider.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/sqlutils.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/task/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/task/eventcounter.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/task/simplestats.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/token.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokengroup.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/applicationspecificpasswordtoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/daplugtoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/daypasswordtoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/foureyestoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/hotptoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/motptoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/ocratoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/radiustoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/registrationtoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/remotetoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/spasstoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/sshkeytoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/totptoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/u2f.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/vasco.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/vascotoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/yubicotoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/yubikeytoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/utils/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/utils/export.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/messages.pot +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/README.md +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/app.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/audit/controllers/auditControllers.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/audit/factories/audit.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/audit/states/states.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/audit/views/audit.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/audit/views/audit.log.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/components/controllers/componentControllers.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/components/factories/component.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/components/states/states.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/components/views/component.clienttype.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/components/views/component.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/configControllers.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/eduMfaServerController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/eventController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/ldapMachineResolverController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/periodicTaskController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/radiusServerController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/serviceidController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/smsgatewayController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/smtpServerController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/tokengroupController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/factories/config.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/states/states.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.caconnectors.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.caconnectors.local.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.caconnectors.microsoft.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.edumfaserver.edit.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.edumfaserver.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.events.details.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.events.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.events.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.machineresolvers.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.mresolvers.hosts.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.mresolvers.ldap.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.mresolvers.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.periodictasks.details.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.periodictasks.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.periodictasks.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.policies.details.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.policies.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.policies.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.radius.edit.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.radius.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.realms.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.realms.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.http.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.ldap.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.passwd.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.scim.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.sql.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.serviceid.edit.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.serviceid.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.smsgateway.edit.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.smsgateway.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.smtp.edit.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.smtp.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.system.doc.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.system.edit.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.system.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.daypassword.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.email.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.hotp.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.question.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.radius.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.remote.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.sms.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.tiqr.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.totp.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.u2f.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.webauthn.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.yubico.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.yubikey.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.tokengroup.edit.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.tokengroup.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.tokens.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/dialog.confirm_delete.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dashboard/controllers/dashboardControllers.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dashboard/states/states.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dashboard/views/dashboard.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dialogs/views/dialog.about.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dialogs/views/dialog.autocreate_realm.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dialogs/views/dialog.lock.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dialogs/views/dialog.no.token.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dialogs/views/dialog.welcome.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/controllers/directives.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.assigntoken.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.assignuser.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.attachmachine.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.attachtoken.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.csvdownload.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.filter.table.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.policyconditions.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.tokendata.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/filters/filters.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/controllers/loginControllers.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/factories/auth.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/factories/u2f.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/factories/webauthn.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/states/states.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/views/enter-response.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/views/login.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/views/offline.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/views/pinchange.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/controllers/machineController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/controllers/machineDetailsController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/factories/machine.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/states/states.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/views/machine.details.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/views/machine.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/views/machine.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/recovery/controllers/recoveryControllers.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/recovery/factories/recoveryFactory.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/recovery/states/states.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/recovery/views/recovery.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/recovery/views/recovery.reset.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/register/controllers/registerControllers.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/register/factories/registerFactory.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/register/states/states.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/register/views/register.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenApplicationsController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenChallengesController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenControllers.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenDetailController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenGetSerialController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenLostController.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/factories/token.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/factories/validate.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/states/states.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/dialog.ask_token_delete.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.applications.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.applications.offline.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.applications.ssh.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.assign.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.challenges.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.details.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.display.apps.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.4eyes.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.applspec.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.certificate.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.daypassword.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.email.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.hotp.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.indexedsecret.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.motp.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.paper.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.push.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.question.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.radius.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.registration.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.remote.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.sms.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.spass.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.sshkey.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.tan.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.tiqr.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.totp.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.u2f.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.vasco.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.webauthn.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.yubico.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.yubikey.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.applspec.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.certificate.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.daypassword.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.hotp.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.motp.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.paper.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.push.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.registration.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.tan.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.tiqr.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.totp.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.u2f.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.webauthn.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.getserial.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.import.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.lost.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/translation/translations.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/controllers/userControllers.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/factories/user.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/states/states.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/dialog.ask_user_delete.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.add.dynamic.form.fields.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.add.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.details.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.list.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.password.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/angular-inform.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/angular-inform.css.map +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/bootstrap-theme.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/bootstrap-theme.css.map +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/bootstrap.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/bootstrap.css.map +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/hotkeys.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/isteven-multi-select.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.eot +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.svg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.ttf +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff2 +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/angular-inform.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/angular-inform.js.map +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/angular.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/bootstrap.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/hotkeys.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/jquery.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/angular-gettext.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/angular-idle.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/angular-sanitize.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js.map +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/isteven-multi-select.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/ng-file-upload.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/u2f-api.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ui-bootstrap-tpls.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/webauthn-client/edumfa-webauthn.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/baseline.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/content.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/eduMFA-logo.png +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/highlight.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/menu.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/papertoken.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/signin.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/table-ui.css +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/customize/README.rst +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/favicon.png +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/img/FIDO-U2F-Security-Key-444x444.png +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/img/plugup.jpg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/img/solokeys.png +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/img/u2fzero.png +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/package-lock.json +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/package.json +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/providers/errorMessageProvider.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/providers/versioningProvider.js +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/baseline.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/cert_request_form.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/deactivated.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/documentation.rst +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/footer.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/header.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/index.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/menu.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/token_enrolled.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/update_contrib.sh +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/cs/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/cs/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/de/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/de/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/es/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/es/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/fr/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/it/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/it/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/nl/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/nl/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/pl/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/pl/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/pt_BR/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/ro/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/ro/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/ru/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/ru/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/si/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/si/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/tr/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/tr/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/zh_Hans/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/zh_Hans/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/zh_Hant/LC_MESSAGES/messages.po +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/webui/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/webui/certificate.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/webui/login.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/SOURCES.txt +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/dependency_links.txt +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/entry_points.txt +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/not-zip-safe +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/top_level.txt +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/README +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/alembic.ini +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/env.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/script.py.mako +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/006d4747f858_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/00762b3f7a60_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/0c7123345224_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/0d011e94a8e8_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/140ba0ca4f07_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/145ce80decd_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/14a1bcb10018_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/19f727d285e2_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/1a0710df148b_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/1a69e5e5e2ac_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/1edda52b619f_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/204d8d4f351e_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/205bda834127_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/20969b4cbf06_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/2118e566df16_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/2181294eed0b_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/22558d9f3178_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/239995464c48_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/2551ee982544_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/2ac117d0a6f5_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/2c9430cfc66b_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/307a4fbe8a05_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3236a1abf1c6_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3429d523e51f_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/36428afb2457_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/37e6b49fc686_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3ae3c668f444_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3ba618f6b820_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3c6e9dd7fbac_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3d7f8b29cbb1_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3f7e8583ea2_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/4023571658f8_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/4238eac8ccab_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/449903fb6e35_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/48ee74b8a7c8_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/49a04e560d96_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/4a0aec37e7cf_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/4d9178fa8336_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/4f32a4e1bf33_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/50adc980d625_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/5402fd96fbca_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/58e4f7ebb705_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/59ef3e03bc62_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/631ec59e1ca6_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/849170064430_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/86f40f535d7c_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/888b56ed5dcb_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/89e57ed16379_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/8d40dbcfda25_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/9155f0d3d028_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/a28f2733897b_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/a63df077051a_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/a7e91b18a460_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/b9131d0686eb_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/cb6d7b7bae63_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d2ae8e54b628_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d3c0f0403a84_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d415d490eb05_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d5870fd2f2a4_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d6b40a745e5_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d756b34061ff_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/dceb6cd3c41e_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/e360c56bcf8c_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/e5cbeb7c177_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/ef29ba43e290_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/fa07bd604a75.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/fabcf24d9304_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/ff26585932ec_.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/setup.cfg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/conftest.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/queuemock.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/requirements.txt +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_2stepinit.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_applications.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_audit.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_auth.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_caconnector.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_clienttype.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_edumfaserver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_events.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_lib_utils.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_machineresolver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_machines.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_machines_serviceid.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_monitoring.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_offline_no_token.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_periodictask.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_policy.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_push_validate.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_radiusserver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_register.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_roles.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_serviceids.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_smsgateway.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_smtpserver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_system.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_token.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_tokengroup.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_ttype.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_u2f.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_users.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_validate.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_app.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_db_model.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_applications.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_apps.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_audit.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_auth.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_authcache.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_caconnector.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_challenges.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_clientapplication.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_config.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_counter.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_crypto.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_edumfaserver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_eventhandler_logging.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_eventhandler_usernotification.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_events.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_framework.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_importotp.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_lifecycle.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_machine_resolver_ldap.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_machines.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_machinetokens.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_monitoringstats.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_periodictask.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_policydecorator.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_pooling.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_radiusserver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_realm.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_recovery.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_resolver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_serviceid.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_smtpserver.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_sqlutils.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_subscriptions.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_task_eventcounter.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_task_simplestats.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tasks.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokenclass.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokengroup.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_certificate.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_daplug.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_daypassword.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_email.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_foureyes.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_hotp.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_indexedsecret.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_motp.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_paper.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_passwordtoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_push.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_questionnaire.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_radius.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_registration.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_remote.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_sms.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_spass.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_ssh.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_tan.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_tiqr.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_totp.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_u2f.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_vasco.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_webauthn.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_yubico.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_yubikey.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_user.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_usercache.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_utils.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_utils_compare.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_mock_ldap3.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_resolver_realm.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_scripts.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_ui_certificate.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_ui_login.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/FIDO-U2F-Security-Key-444x444.png +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/NetKnights.pem +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/__init__.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/altstatic/templates/testui.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/attestation/yubico.pem +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/audit.sqlite +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/cacert.pem +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/cakey.pem +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/index.txt +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/index.txt.attr +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/openssl.cnf +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/serial +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/templates.yaml +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/dictionary +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/does_not_exist +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/emailtemplate.html +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/empty.oath +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/enckey +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/enckey.enc +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/event.conf +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/fancytoken.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/firebase-test.json +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/google-services.json +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/gpg/public.pem +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/gpg/pubring.gpg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/gpg/random_seed +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/gpg/secring.gpg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/gpg/trustdb.gpg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/hosts +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/import.oath +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/import.oath.asc +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/jwt_sign.key +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/logging.cfg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/logging.yml +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/logging_broken.yaml +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/msca-connector/ca.pem +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/msca-connector/privacyidea-encrypted.key +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/msca-connector/privacyidea.key +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/msca-connector/privacyidea.pem +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ocra.csv +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/passwd +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/passwd-duplicate-name +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/passwords +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/policy.cfg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/policy.conf +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/policy_empty_file.cfg +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/private.pem +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/pskc-aes.xml +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/pskc-password.xml +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/public.pem +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/pw-2nd-resolver +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/scripts/fail.sh +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/scripts/ls.sh +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/scripts/success.sh +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/test.sub +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/test2.sub +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/testuser-api.sqlite +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/testuser.sqlite +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/testusercache.sqlite +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/trusted_attestation_roots/solokeys_device_attestation_ca.pem +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/trusted_attestation_roots/yubico_u2f_device_attestation_ca.pem +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/yubico-oath-long.csv +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/yubico-oath.csv +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/yubico.csv +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/creategoogleauthenticator-file +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-authorizedkeys +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-convert-base32.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-convert-token +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-convert-token.1 +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-convert-xml-to-csv +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-ad-users +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-ad-users.1 +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-certificate +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-certificate.1 +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-pwidresolver-user +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-pwidresolver-user.1 +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-sqlidresolver-user +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-sqlidresolver-user.1 +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-userdb +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-userdb.1 +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-diag +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-expired-users +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-export-edumfa-counter.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-export-linotp-counter.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-fetchssh +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-fetchssh.1 +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-fix-access-rights +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-fix-access-rights.1 +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-get-serial +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-get-unused-tokens +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-pip-update +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-pip-update.1 +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-queue-huey +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-schema-upgrade +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-standalone +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-token-janitor +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-update-counter.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-update-linotp-counter.py +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-user-action +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-usercache-cleanup +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/getgooglecodes +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/reset-edumfa +0 -0
- {edumfa-2.0.0 → edumfa-2.0.2}/tools/ssha.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: edumfa
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: eduMFA: identity, multifactor authentication (OTP), authorization, audit
|
|
5
5
|
Home-page: https://www.edumfa.io
|
|
6
6
|
Author: edumfa.io
|
|
@@ -48,7 +48,6 @@ Requires-Dist: ldap3>=2.6
|
|
|
48
48
|
Requires-Dist: lxml>=5.0.0
|
|
49
49
|
Requires-Dist: netaddr>=0.7.12
|
|
50
50
|
Requires-Dist: passlib[bcrypt]>=1.7.0
|
|
51
|
-
Requires-Dist: psycopg2-binary>=2.9.9
|
|
52
51
|
Requires-Dist: pyOpenSSL>=24
|
|
53
52
|
Requires-Dist: pydash>=4.7.4
|
|
54
53
|
Requires-Dist: pyrad>=2.0
|
|
@@ -71,6 +70,8 @@ Requires-Dist: pytest>=3.6.0; extra == "test"
|
|
|
71
70
|
Requires-Dist: pytest-cov>=2.5.1; extra == "test"
|
|
72
71
|
Requires-Dist: responses>=0.9.0; extra == "test"
|
|
73
72
|
Requires-Dist: testfixtures>=6.14.2; extra == "test"
|
|
73
|
+
Provides-Extra: postgres
|
|
74
|
+
Requires-Dist: psycopg2>=2.9.9; extra == "postgres"
|
|
74
75
|
Provides-Extra: hsm
|
|
75
76
|
Requires-Dist: PyKCS11>=1.5.10; extra == "hsm"
|
|
76
77
|
Provides-Extra: kerberos
|
|
@@ -139,8 +140,7 @@ Setup
|
|
|
139
140
|
=====
|
|
140
141
|
|
|
141
142
|
For setting up the system to *run* it, please read install instructions
|
|
142
|
-
at `edumfa.readthedocs.io <http://edumfa.readthedocs.io/en/latest/installation/index
|
|
143
|
-
.html>`_.
|
|
143
|
+
at `edumfa.readthedocs.io <http://edumfa.readthedocs.io/en/latest/installation/index.html>`_.
|
|
144
144
|
|
|
145
145
|
If you want to setup a development environment start like this::
|
|
146
146
|
|
|
@@ -176,8 +176,7 @@ submodules, by running::
|
|
|
176
176
|
Running it
|
|
177
177
|
==========
|
|
178
178
|
|
|
179
|
-
First You need to create a `config-file <https://edumfa.readthedocs
|
|
180
|
-
.io/en/latest/installation/system/inifile.html>`_.
|
|
179
|
+
First You need to create a `config-file <https://edumfa.readthedocs.io/en/latest/installation/system/inifile.html>`_.
|
|
181
180
|
|
|
182
181
|
Then create the database tables and the encryption key::
|
|
183
182
|
|
|
@@ -202,7 +201,7 @@ Run it::
|
|
|
202
201
|
|
|
203
202
|
./edumfa-manage runserver
|
|
204
203
|
|
|
205
|
-
Now you can connect to http://localhost:5000 with your browser and login
|
|
204
|
+
Now you can connect to ``http://localhost:5000`` with your browser and login
|
|
206
205
|
as administrator.
|
|
207
206
|
|
|
208
207
|
Run tests
|
|
@@ -223,7 +222,7 @@ if you are not a developer.
|
|
|
223
222
|
If you found a security vulnerability please report it to us using the reporting form provided by GitHub
|
|
224
223
|
|
|
225
224
|
You can find detailed information about contributing here:
|
|
226
|
-
https://github.com/eduMFA/eduMFA/blob/
|
|
225
|
+
https://github.com/eduMFA/eduMFA/blob/main/CONTRIBUTING.md
|
|
227
226
|
|
|
228
227
|
Code structure
|
|
229
228
|
==============
|
|
@@ -61,8 +61,7 @@ Setup
|
|
|
61
61
|
=====
|
|
62
62
|
|
|
63
63
|
For setting up the system to *run* it, please read install instructions
|
|
64
|
-
at `edumfa.readthedocs.io <http://edumfa.readthedocs.io/en/latest/installation/index
|
|
65
|
-
.html>`_.
|
|
64
|
+
at `edumfa.readthedocs.io <http://edumfa.readthedocs.io/en/latest/installation/index.html>`_.
|
|
66
65
|
|
|
67
66
|
If you want to setup a development environment start like this::
|
|
68
67
|
|
|
@@ -98,8 +97,7 @@ submodules, by running::
|
|
|
98
97
|
Running it
|
|
99
98
|
==========
|
|
100
99
|
|
|
101
|
-
First You need to create a `config-file <https://edumfa.readthedocs
|
|
102
|
-
.io/en/latest/installation/system/inifile.html>`_.
|
|
100
|
+
First You need to create a `config-file <https://edumfa.readthedocs.io/en/latest/installation/system/inifile.html>`_.
|
|
103
101
|
|
|
104
102
|
Then create the database tables and the encryption key::
|
|
105
103
|
|
|
@@ -124,7 +122,7 @@ Run it::
|
|
|
124
122
|
|
|
125
123
|
./edumfa-manage runserver
|
|
126
124
|
|
|
127
|
-
Now you can connect to http://localhost:5000 with your browser and login
|
|
125
|
+
Now you can connect to ``http://localhost:5000`` with your browser and login
|
|
128
126
|
as administrator.
|
|
129
127
|
|
|
130
128
|
Run tests
|
|
@@ -145,7 +143,7 @@ if you are not a developer.
|
|
|
145
143
|
If you found a security vulnerability please report it to us using the reporting form provided by GitHub
|
|
146
144
|
|
|
147
145
|
You can find detailed information about contributing here:
|
|
148
|
-
https://github.com/eduMFA/eduMFA/blob/
|
|
146
|
+
https://github.com/eduMFA/eduMFA/blob/main/CONTRIBUTING.md
|
|
149
147
|
|
|
150
148
|
Code structure
|
|
151
149
|
==============
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
*/5 * * * * edumfa /opt/edumfa/bin/edumfa-cron run_scheduled -c
|
|
3
3
|
|
|
4
4
|
# Audit rotation example: once a week at 00:00 on Sunday
|
|
5
|
-
#0 0 * * 0 edumfa /opt/edumfa/bin/edumfa-manage
|
|
5
|
+
#0 0 * * 0 edumfa /opt/edumfa/bin/edumfa-manage rotate_audit --age 360
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
edumfa (2.0.2{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
2
|
+
|
|
3
|
+
* chore: Configure Renovate
|
|
4
|
+
* chore: do not inherit from `object`
|
|
5
|
+
* chore: fix doc dependencies
|
|
6
|
+
* Update documentation (no corresponding issue)
|
|
7
|
+
* Fix migration for apache and nginx packages
|
|
8
|
+
* fix: print logo to stderr
|
|
9
|
+
* fix: correct audit log rotation example in crontab
|
|
10
|
+
* fix: correct cronjob
|
|
11
|
+
* test: add missing sms provider tests
|
|
12
|
+
* feat: add support for PostgreSQL in backup script
|
|
13
|
+
* Change docs theme to furo + upgrade docs dependencies
|
|
14
|
+
* chore(deps): update dependency babel to v2.14.0
|
|
15
|
+
* chore(deps): update dependency alembic to v1.13.1
|
|
16
|
+
* chore(deps): update dependency werkzeug to v3.0.2
|
|
17
|
+
* chore(deps): update dependency sqlalchemy to v1.4.52
|
|
18
|
+
* chore(deps): update dependency flask-migrate to v4.0.7
|
|
19
|
+
* chore(deps): update softprops/action-gh-release action to v2
|
|
20
|
+
* chore(deps): update dependency idna to v3.7 [security]
|
|
21
|
+
* chore(deps): update actions/checkout action to v4
|
|
22
|
+
* chore(deps): update dependency flask to v3.0.3
|
|
23
|
+
* chore(deps): update dependency async-timeout to v4.0.3
|
|
24
|
+
* chore(deps): update dependency smpplib to v2.2.3
|
|
25
|
+
* chore(deps): update dependency cachetools to v5.3.3
|
|
26
|
+
* chore(deps): update dependency sphinxcontrib-qthelp to v1.0.7
|
|
27
|
+
* chore(deps): update dependency sphinxcontrib-htmlhelp to v2.0.5
|
|
28
|
+
* chore(deps): update dependency sphinxcontrib-applehelp to v1.0.8
|
|
29
|
+
* chore(deps): update dependency sphinxcontrib-devhelp to v1.0.6
|
|
30
|
+
* chore(deps): update dependency croniter to v1.4.1
|
|
31
|
+
* chore(deps): update dependency charset-normalizer to v3.3.2
|
|
32
|
+
* chore(deps): update dependency cffi to v1.16.0
|
|
33
|
+
* chore(deps): update dependency cbor2 to v5.6.3
|
|
34
|
+
* chore(deps): update dependency bcrypt to v4.1.2
|
|
35
|
+
* chore(deps): update dependency responses to v0.25.0
|
|
36
|
+
* chore(deps): update dependency redis to v4.6.0
|
|
37
|
+
* chore(deps): update dependency pykcs11 to v1.5.15
|
|
38
|
+
* chore(deps): update dependency lxml to v5.2.1
|
|
39
|
+
* chore(deps): update dependency pyjwt to v2.8.0
|
|
40
|
+
* chore(deps): update dependency pytz to v2024
|
|
41
|
+
* chore(deps): update dependency pydash to v8
|
|
42
|
+
* chore(deps): update dependency netaddr to v0.10.1
|
|
43
|
+
|
|
44
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 26 Apr 2024 13:01:00 +0200
|
|
45
|
+
|
|
46
|
+
edumfa (2.0.1{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
47
|
+
|
|
48
|
+
* chore: switch to psycopg2 instead of psycopg2-binary
|
|
49
|
+
* fix: correct sequence creation for galera
|
|
50
|
+
* ci: build ubuntu packages always (only upload on release)
|
|
51
|
+
|
|
52
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 12 Apr 2024 12:01:00 +0200
|
|
53
|
+
|
|
54
|
+
edumfa (2.0.0{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
55
|
+
|
|
56
|
+
* chore: Several (major) dependency upgrades
|
|
57
|
+
* chore: Rework CLI tools and drop `Flask-Script`
|
|
58
|
+
|
|
59
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 12 Apr 2024 12:00:00 +0200
|
|
60
|
+
|
|
61
|
+
edumfa (1.5.1{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
62
|
+
|
|
63
|
+
* fix: correct location of venv for ubuntu packages
|
|
64
|
+
* fix: ignore revoked, disabled webauthn tokens for passkey auth
|
|
65
|
+
* fix: correct handling of login mode
|
|
66
|
+
|
|
67
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 05 Apr 2024 12:00:00 +0200
|
|
68
|
+
|
|
69
|
+
edumfa (1.5.0{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
70
|
+
|
|
71
|
+
* feat: api: set tokeninfo on init by
|
|
72
|
+
* feat: add ubuntu packages
|
|
73
|
+
* feat: log passkey usage
|
|
74
|
+
* feat: allow customization of passkey label
|
|
75
|
+
* feat: more detailed logging for eduMFA migration script
|
|
76
|
+
* fix: add missing flask-migrate logging
|
|
77
|
+
* fixed typo: Atttributes -> Attributes
|
|
78
|
+
|
|
79
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Tue, 02 Apr 2024 07:00:00 +0100
|
|
80
|
+
|
|
81
|
+
edumfa (1.4.0{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
82
|
+
|
|
83
|
+
* feat: smstoken: add configurable URL which is called after check, extend test
|
|
84
|
+
* feat: make result value available in logginghandler, verbosely log set tokeninfo
|
|
85
|
+
* feat: new API endpoint POST /info/<serial> to bulk modify tokeninfo
|
|
86
|
+
* feat: token janitor find by user
|
|
87
|
+
* fix: make ldap connections persistent and restartable
|
|
88
|
+
* fix: wrong indentation caused false "Action .. requires serial number" line
|
|
89
|
+
* fix: improve handling of resident keys
|
|
90
|
+
* fix: rename provider module names in DB on migration
|
|
91
|
+
|
|
92
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Tue, 19 Mar 2024 12:00:00 +0100
|
|
93
|
+
|
|
94
|
+
edumfa (1.3.0{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
95
|
+
|
|
96
|
+
* Corrected ASCII art spacing
|
|
97
|
+
* Handled Windows credProtect flag
|
|
98
|
+
* Drop support for CentOS and Red Hat
|
|
99
|
+
|
|
100
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Mon, 4 Mar 2024 12:00:00 +0100
|
|
101
|
+
|
|
102
|
+
edumfa (1.2.0{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
103
|
+
|
|
104
|
+
* Bugfix Release for CI Actions
|
|
105
|
+
|
|
106
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 1 Mar 2024 13:46:00 +0100
|
|
107
|
+
|
|
108
|
+
edumfa (1.1.0{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
109
|
+
|
|
110
|
+
* Bugfix Release for CI Actions
|
|
111
|
+
|
|
112
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 1 Mar 2024 13:35:00 +0100
|
|
113
|
+
|
|
114
|
+
edumfa (1.0.0{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
115
|
+
|
|
116
|
+
* Add option to enroll passkeys
|
|
117
|
+
* Add option to include description in user notifications
|
|
118
|
+
* Add containers as release artifacts
|
|
119
|
+
* Add option to filter the user_token_number on a given range instead of constant
|
|
120
|
+
* Add option to use the Remote-User header behind a reverse proxy
|
|
121
|
+
|
|
122
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 1 Mar 2024 12:45:00 +0100
|
|
@@ -2,7 +2,7 @@ Source: edumfa
|
|
|
2
2
|
Maintainer: eduMFA <edumfa-dev@listserv.dfn.de>
|
|
3
3
|
Section: python
|
|
4
4
|
Priority: optional
|
|
5
|
-
Build-Depends: python3-all (>= 3.
|
|
5
|
+
Build-Depends: python3-all (>= 3.8), debhelper (>= 7.4.3), dh-virtualenv (>= 0.11), quilt, virtualenv, lsb-release, git
|
|
6
6
|
Standards-Version: 3.9.5
|
|
7
7
|
|
|
8
8
|
Package: edumfa
|
|
@@ -12,7 +12,7 @@ Breaks: python-privacyidea
|
|
|
12
12
|
Conflicts: privacyidea-venv, privacyidea-appliance
|
|
13
13
|
Pre-Depends: dpkg (>= 1.16.1), python3-minimal, ${misc:Pre-Depends}
|
|
14
14
|
Depends: ${python:Depends}, ${misc:Depends}, python3-virtualenv
|
|
15
|
-
X-Python-Version: >= 3.
|
|
15
|
+
X-Python-Version: >= 3.8
|
|
16
16
|
Description: two-factor authentication system e.g. for OTP devices
|
|
17
17
|
eduMFA: identity, multifactor authentication, authorization.
|
|
18
18
|
This package contains the python module for eduMFA. If you want
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
edumfa-server (2.0.2{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
2
|
+
|
|
3
|
+
* update version number
|
|
4
|
+
|
|
5
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 26 Apr 2024 13:01:00 +0200
|
|
6
|
+
|
|
7
|
+
edumfa-server (2.0.1{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
8
|
+
|
|
9
|
+
* update version number
|
|
10
|
+
|
|
11
|
+
-- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 12 Apr 2024 12:01:00 +0200
|
|
12
|
+
|
|
1
13
|
edumfa-server (2.0.0{{CODENAME}}) {{CODENAME}}; urgency=medium
|
|
2
14
|
|
|
3
15
|
* update version number
|
|
@@ -17,7 +17,7 @@ CERTDAYS=1095
|
|
|
17
17
|
CERTKEYSIZE=4096
|
|
18
18
|
MIGRATIONSDIR=/opt/edumfa/lib/edumfa/migrations/
|
|
19
19
|
MYSQLFIX=/etc/mysql/conf.d/edumfa-maxkeylengthfix.cnf
|
|
20
|
-
DB_CREATED=
|
|
20
|
+
DB_CREATED=false
|
|
21
21
|
|
|
22
22
|
if test -f /etc/default/edumfa; then
|
|
23
23
|
. /etc/default/edumfa
|
|
@@ -109,7 +109,7 @@ create_database() {
|
|
|
109
109
|
echo "SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://edumfa:$NPW@localhost/edumfa?charset=utf8'" >> /etc/edumfa/edumfa.cfg
|
|
110
110
|
echo "DB created"
|
|
111
111
|
/opt/edumfa/bin/edumfa-manage create_tables || true
|
|
112
|
-
DB_CREATED=
|
|
112
|
+
DB_CREATED=true
|
|
113
113
|
fi
|
|
114
114
|
}
|
|
115
115
|
|
|
@@ -162,7 +162,7 @@ case "$1" in
|
|
|
162
162
|
create_certificate
|
|
163
163
|
#update-rc.d apache2 defaults
|
|
164
164
|
service apache2 restart
|
|
165
|
-
if [ "$DB_CREATED" ]; then
|
|
165
|
+
if [ "$DB_CREATED" = true ]; then
|
|
166
166
|
# We've created the DB, so we stamp the DB
|
|
167
167
|
touch /tmp/edumfa-install
|
|
168
168
|
/opt/edumfa/bin/edumfa-manage db stamp -d $MIGRATIONSDIR head
|
|
@@ -16,7 +16,7 @@ CERTDAYS=1095
|
|
|
16
16
|
CERTKEYSIZE=4096
|
|
17
17
|
MIGRATIONSDIR=/opt/edumfa/lib/edumfa/migrations/
|
|
18
18
|
MYSQLFIX=/etc/mysql/conf.d/edumfa-maxkeylengthfix.cnf
|
|
19
|
-
DB_CREATED=
|
|
19
|
+
DB_CREATED=false
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
if test -f /etc/default/edumfa; then
|
|
@@ -110,7 +110,7 @@ create_database() {
|
|
|
110
110
|
echo "SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://edumfa:$NPW@localhost/edumfa?charset=utf8'" >> /etc/edumfa/edumfa.cfg
|
|
111
111
|
echo "DB created"
|
|
112
112
|
/opt/edumfa/bin/edumfa-manage create_tables || true
|
|
113
|
-
DB_CREATED=
|
|
113
|
+
DB_CREATED=true
|
|
114
114
|
fi
|
|
115
115
|
}
|
|
116
116
|
|
|
@@ -146,7 +146,7 @@ case "$1" in
|
|
|
146
146
|
create_database
|
|
147
147
|
enable_nginx_uwsgi
|
|
148
148
|
create_certificate
|
|
149
|
-
if [ "$DB_CREATED" ]; then
|
|
149
|
+
if [ "$DB_CREATED" = true ]; then
|
|
150
150
|
# We've created the DB, so we stamp the DB
|
|
151
151
|
/opt/edumfa/bin/edumfa-manage db stamp -d $MIGRATIONSDIR head
|
|
152
152
|
else
|
|
@@ -23,7 +23,7 @@ import functools
|
|
|
23
23
|
# built documents.
|
|
24
24
|
#
|
|
25
25
|
# The short X.Y version.
|
|
26
|
-
version = '2.0.
|
|
26
|
+
version = '2.0.2'
|
|
27
27
|
# The full version, including alpha/beta/rc tags.
|
|
28
28
|
#release = '2.16dev5'
|
|
29
29
|
release = version
|
|
@@ -58,8 +58,8 @@ sys.path.insert(0, os.path.abspath('../edumfa'))
|
|
|
58
58
|
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
|
59
59
|
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.imgmath', 'sphinx.ext.viewcode',
|
|
60
60
|
'sphinxcontrib.autohttp.flask', 'sphinxcontrib.plantuml',
|
|
61
|
-
'sphinxcontrib.spelling', 'sphinx.ext.todo',
|
|
62
|
-
'
|
|
61
|
+
'sphinxcontrib.spelling', 'sphinx.ext.todo', 'sphinx_copybutton',
|
|
62
|
+
'sphinx_inline_tabs']
|
|
63
63
|
http_index_ignore_prefixes = ['/token']
|
|
64
64
|
|
|
65
65
|
# Add any paths that contain templates here, relative to this directory.
|
|
@@ -121,12 +121,15 @@ autoclass_content = 'both'
|
|
|
121
121
|
#html_theme = 'sphinxdoc'
|
|
122
122
|
#html_theme = 'sphinx_rtd_theme'
|
|
123
123
|
#html_theme = 'agogo'
|
|
124
|
-
html_theme = '
|
|
124
|
+
html_theme = 'furo'
|
|
125
125
|
|
|
126
126
|
# Theme options are theme-specific and customize the look and feel of a theme
|
|
127
127
|
# further. For a list of options available for each theme, see the
|
|
128
128
|
# documentation.
|
|
129
|
-
|
|
129
|
+
html_theme_options = {
|
|
130
|
+
"light_logo": "images/edumfa-logo.png",
|
|
131
|
+
"dark_logo": "images/edumfa-logo-dark.png",
|
|
132
|
+
}
|
|
130
133
|
|
|
131
134
|
# Add any paths that contain custom themes here, relative to this directory.
|
|
132
135
|
#html_theme_path = ['_themes/flask-sphinx-themes']
|
|
@@ -141,12 +144,12 @@ html_theme = 'flask'
|
|
|
141
144
|
|
|
142
145
|
# The name of an image file (relative to this directory) to place at the top
|
|
143
146
|
# of the sidebar.
|
|
144
|
-
html_logo = "images/
|
|
147
|
+
# html_logo = "images/edumfa-logo.png"
|
|
145
148
|
|
|
146
149
|
# The name of an image file (within the static path) to use as favicon of the
|
|
147
150
|
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
|
148
151
|
# pixels large.
|
|
149
|
-
html_favicon = "images/
|
|
152
|
+
html_favicon = "_static/images/edumfa-icon.png"
|
|
150
153
|
|
|
151
154
|
# Add any paths that contain custom static files (such as style sheets) here,
|
|
152
155
|
# relative to this directory. They are copied after the builtin static files,
|
|
@@ -70,7 +70,7 @@ DEFAULT_POLICY_TEMPLATE_URL = "https://raw.githubusercontent.com/edumfa/" \
|
|
|
70
70
|
"policy-templates/main/templates/"
|
|
71
71
|
|
|
72
72
|
|
|
73
|
-
class postpolicy
|
|
73
|
+
class postpolicy:
|
|
74
74
|
"""
|
|
75
75
|
Decorator that allows one to call a specific function after the decorated
|
|
76
76
|
function.
|
|
@@ -104,7 +104,7 @@ class postpolicy(object):
|
|
|
104
104
|
return policy_wrapper
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
class postrequest
|
|
107
|
+
class postrequest:
|
|
108
108
|
"""
|
|
109
109
|
Decorator that is supposed to be used with after_request.
|
|
110
110
|
"""
|
|
@@ -22,8 +22,7 @@ import re
|
|
|
22
22
|
import sys
|
|
23
23
|
from datetime import datetime
|
|
24
24
|
from shlex import quote as shlex_quote
|
|
25
|
-
from subprocess import Popen, PIPE, call
|
|
26
|
-
from urllib.parse import urlparse
|
|
25
|
+
from subprocess import Popen, PIPE, call, run
|
|
27
26
|
|
|
28
27
|
import click
|
|
29
28
|
import sqlalchemy
|
|
@@ -33,6 +32,8 @@ from flask.cli import AppGroup
|
|
|
33
32
|
backup_cli = AppGroup("backup", help="Perform backup operations")
|
|
34
33
|
|
|
35
34
|
MYSQL_DIALECTS = ["mysql", "pymysql", "mysql+pymysql", "mariadb+pymysql"]
|
|
35
|
+
PSQL_DIALECTS = ["postgresql+psycopg", "postgresql+psycopg2", "postgresql+pg8000",
|
|
36
|
+
"postgresql+asyncpg", "postgresql+psycopg2cffi"]
|
|
36
37
|
|
|
37
38
|
|
|
38
39
|
def _write_mysql_defaults(filename, username, password):
|
|
@@ -110,7 +111,7 @@ def restore(backup_file: str):
|
|
|
110
111
|
call(["cp", sqlfile, productive_file])
|
|
111
112
|
os.unlink(sqlfile)
|
|
112
113
|
elif sqltype in MYSQL_DIALECTS:
|
|
113
|
-
parsed_sqluri = sqlalchemy.make_url(sqluri)
|
|
114
|
+
parsed_sqluri = sqlalchemy.engine.url.make_url(sqluri)
|
|
114
115
|
username = parsed_sqluri.username
|
|
115
116
|
password = parsed_sqluri.password
|
|
116
117
|
hostname = parsed_sqluri.host
|
|
@@ -122,6 +123,13 @@ def restore(backup_file: str):
|
|
|
122
123
|
call("mysql --defaults-file=%s -h %s %s < %s" % (
|
|
123
124
|
shlex_quote(defaults_file), shlex_quote(hostname), shlex_quote(database), shlex_quote(sqlfile)), shell=True)
|
|
124
125
|
os.unlink(sqlfile)
|
|
126
|
+
elif sqltype in PSQL_DIALECTS:
|
|
127
|
+
parsed_sqluri = sqlalchemy.engine.url.make_url(sqluri)
|
|
128
|
+
env = os.environ.copy()
|
|
129
|
+
env["PGPASSWORD"] = parsed_sqluri.password
|
|
130
|
+
cmd = ['psql', '-U', parsed_sqluri.username, '-d', parsed_sqluri.database,
|
|
131
|
+
'-h', parsed_sqluri.host, '-f', sqlfile]
|
|
132
|
+
run(cmd, env=env)
|
|
125
133
|
else:
|
|
126
134
|
click.echo("unsupported SQL syntax: %s" % sqltype)
|
|
127
135
|
sys.exit(2)
|
|
@@ -160,7 +168,7 @@ def create(target_dir: str, config_dir: str, radius_dir=None, enckey: bool = Fal
|
|
|
160
168
|
backup_file = "%s/%s-%s.tgz" % (target_dir, BASE_NAME, DATE)
|
|
161
169
|
|
|
162
170
|
sqluri = current_app.config.get("SQLALCHEMY_DATABASE_URI")
|
|
163
|
-
parsed_sqluri = sqlalchemy.make_url(sqluri)
|
|
171
|
+
parsed_sqluri = sqlalchemy.engine.url.make_url(sqluri)
|
|
164
172
|
sqltype = parsed_sqluri.drivername
|
|
165
173
|
|
|
166
174
|
if sqltype == "sqlite":
|
|
@@ -180,6 +188,12 @@ def create(target_dir: str, config_dir: str, radius_dir=None, enckey: bool = Fal
|
|
|
180
188
|
cmd.extend(['-P', str(parsed_sqluri.port)])
|
|
181
189
|
cmd.extend(['-B', shlex_quote(database), '-r', shlex_quote(sqlfile)])
|
|
182
190
|
call(cmd, shell=False)
|
|
191
|
+
elif sqltype in PSQL_DIALECTS:
|
|
192
|
+
env = os.environ.copy()
|
|
193
|
+
env["PGPASSWORD"] = parsed_sqluri.password
|
|
194
|
+
cmd = ['pg_dump', '-U', parsed_sqluri.username, '-d', parsed_sqluri.database,
|
|
195
|
+
'-h', parsed_sqluri.host, '-f', sqlfile]
|
|
196
|
+
run(cmd, env=env)
|
|
183
197
|
else:
|
|
184
198
|
click.echo(f"unsupported SQL syntax: {sqltype}")
|
|
185
199
|
sys.exit(2)
|
|
@@ -57,7 +57,7 @@ def cli():
|
|
|
57
57
|
/ _ \/ _` | | | | |\/| | __/ /\ \
|
|
58
58
|
| __/ (_| | |_| | | | | | / ____ \
|
|
59
59
|
\___|\__,_|\__,_|_| |_|_|/_/ \_\ {0!s:>12}
|
|
60
|
-
""".format('v{0!s}'.format(get_version_number())))
|
|
60
|
+
""".format('v{0!s}'.format(get_version_number())), err=True)
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
cli.add_command(audit_cli)
|
|
@@ -38,7 +38,7 @@ def _random_password(size):
|
|
|
38
38
|
return "".join(passwd)
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
class Config
|
|
41
|
+
class Config:
|
|
42
42
|
SECRET_KEY = os.environ.get('SECRET_KEY')
|
|
43
43
|
# SQL_ALCHEMY_DATABASE_URI = "mysql://privacyidea:XmbSrlqy5d4IS08zjz"
|
|
44
44
|
# "GG5HTt40Cpf5@localhost/privacyidea"
|
|
@@ -55,7 +55,7 @@ import datetime
|
|
|
55
55
|
log = logging.getLogger(__name__)
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
class Paginate
|
|
58
|
+
class Paginate:
|
|
59
59
|
"""
|
|
60
60
|
This is a pagination object, that is used for searching audit trails.
|
|
61
61
|
"""
|
|
@@ -73,7 +73,7 @@ class Paginate(object):
|
|
|
73
73
|
self.total = 0
|
|
74
74
|
|
|
75
75
|
|
|
76
|
-
class Audit
|
|
76
|
+
class Audit: # pragma: no cover
|
|
77
77
|
|
|
78
78
|
is_readable = False
|
|
79
79
|
|
|
@@ -32,7 +32,7 @@ This module is tested in tests/test_lib_caconnector.py
|
|
|
32
32
|
AvailableCAConnectors = []
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
class BaseCAConnector
|
|
35
|
+
class BaseCAConnector:
|
|
36
36
|
def revoke_cert(self, certificate, request_id=None, reason=None):
|
|
37
37
|
"""
|
|
38
38
|
Revoke the specified certificate. At this point only the database
|
|
@@ -5,7 +5,7 @@ import grpc
|
|
|
5
5
|
import eduMFA.lib.caconnectors.caservice_pb2 as caservice__pb2
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
class CAServiceStub
|
|
8
|
+
class CAServiceStub:
|
|
9
9
|
"""Disposition values:
|
|
10
10
|
0 - Incomplete
|
|
11
11
|
1 - Error
|
|
@@ -59,7 +59,7 @@ class CAServiceStub(object):
|
|
|
59
59
|
)
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
class CAServiceServicer
|
|
62
|
+
class CAServiceServicer:
|
|
63
63
|
"""Disposition values:
|
|
64
64
|
0 - Incomplete
|
|
65
65
|
1 - Error
|
|
@@ -157,7 +157,7 @@ def add_CAServiceServicer_to_server(servicer, server):
|
|
|
157
157
|
|
|
158
158
|
|
|
159
159
|
# This class is part of an EXPERIMENTAL API.
|
|
160
|
-
class CAService
|
|
160
|
+
class CAService:
|
|
161
161
|
"""Disposition values:
|
|
162
162
|
0 - Incomplete
|
|
163
163
|
1 - Error
|
|
@@ -212,7 +212,7 @@ def _get_crl_next_update(filename):
|
|
|
212
212
|
return dt
|
|
213
213
|
|
|
214
214
|
|
|
215
|
-
class CONFIG
|
|
215
|
+
class CONFIG:
|
|
216
216
|
|
|
217
217
|
def __init__(self, name):
|
|
218
218
|
self.directory = "./ca"
|
|
@@ -238,7 +238,7 @@ class CONFIG(object):
|
|
|
238
238
|
return s
|
|
239
239
|
|
|
240
240
|
|
|
241
|
-
class ATTR
|
|
241
|
+
class ATTR:
|
|
242
242
|
__doc__ = """This is the list Attributes of the Local CA."""
|
|
243
243
|
CAKEY = "cakey"
|
|
244
244
|
CACERT = "cacert"
|
|
@@ -56,7 +56,7 @@ CRL_REASONS = ["unspecified", "keyCompromise", "CACompromise",
|
|
|
56
56
|
TIMEOUT = 3
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
class CONFIG
|
|
59
|
+
class CONFIG: # pragma: no cover
|
|
60
60
|
# Only needed for command line creation
|
|
61
61
|
|
|
62
62
|
def __init__(self, name):
|
|
@@ -81,7 +81,7 @@ class CONFIG(object): # pragma: no cover
|
|
|
81
81
|
return s
|
|
82
82
|
|
|
83
83
|
|
|
84
|
-
class ATTR
|
|
84
|
+
class ATTR:
|
|
85
85
|
__doc__ = """This is the list Attributes of the Microsoft CA connector."""
|
|
86
86
|
HOSTNAME = "hostname"
|
|
87
87
|
PORT = "port"
|
|
@@ -62,7 +62,7 @@ this = sys.modules[__name__]
|
|
|
62
62
|
this.config = {}
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
class SharedConfigClass
|
|
65
|
+
class SharedConfigClass:
|
|
66
66
|
"""
|
|
67
67
|
A shared config class object is shared between threads and is supposed
|
|
68
68
|
to store the current configuration with resolvers, realms, policies
|
|
@@ -198,7 +198,7 @@ class SharedConfigClass(object):
|
|
|
198
198
|
return self._clone()
|
|
199
199
|
|
|
200
200
|
|
|
201
|
-
class LocalConfigClass
|
|
201
|
+
class LocalConfigClass:
|
|
202
202
|
"""
|
|
203
203
|
The Config_Object will contain all database configuration of system
|
|
204
204
|
config, resolvers, realms, policies and event handler definitions.
|
|
@@ -270,7 +270,7 @@ class LocalConfigClass(object):
|
|
|
270
270
|
return r_config
|
|
271
271
|
|
|
272
272
|
|
|
273
|
-
class SYSCONF
|
|
273
|
+
class SYSCONF:
|
|
274
274
|
__doc__ = """This is a list of system config attributes"""
|
|
275
275
|
OVERRIDECLIENT = "OverrideAuthorizationClient"
|
|
276
276
|
PREPENDPIN = "PrependPin"
|
|
@@ -85,7 +85,7 @@ FAILED_TO_DECRYPT_PASSWORD = "FAILED TO DECRYPT PASSWORD!" # nosec B105 # place
|
|
|
85
85
|
log = logging.getLogger(__name__)
|
|
86
86
|
|
|
87
87
|
|
|
88
|
-
class SecretObj
|
|
88
|
+
class SecretObj:
|
|
89
89
|
def __init__(self, val, iv, preserve=True):
|
|
90
90
|
self.val = val
|
|
91
91
|
self.iv = iv
|
|
@@ -503,7 +503,7 @@ def geturandom(length=20, hex=False):
|
|
|
503
503
|
# some random functions based on geturandom #################################
|
|
504
504
|
|
|
505
505
|
|
|
506
|
-
class urandom
|
|
506
|
+
class urandom:
|
|
507
507
|
|
|
508
508
|
precision = 12
|
|
509
509
|
|
|
@@ -681,7 +681,7 @@ def _slow_rsa_verify_raw(key, sig, msg):
|
|
|
681
681
|
return msg == pow(sig, pn.e, pn.n)
|
|
682
682
|
|
|
683
683
|
|
|
684
|
-
class Sign
|
|
684
|
+
class Sign:
|
|
685
685
|
"""
|
|
686
686
|
Signing class that is used to sign Audit Entries and to sign API responses.
|
|
687
687
|
"""
|