edumfa 2.7.2__tar.gz → 2.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- edumfa-2.9.0/PKG-INFO +304 -0
- edumfa-2.9.0/deploy/docker/edumfa.py +63 -0
- edumfa-2.9.0/deploy/docker/entrypoint.sh +61 -0
- edumfa-2.9.0/deploy/docker/logging.yml +40 -0
- edumfa-2.9.0/deploy/docker-example/db_password.txt +1 -0
- edumfa-2.9.0/deploy/docker-example/docker-compose.yml +47 -0
- edumfa-2.9.0/deploy/docker-example/edumfa-setup.sh +7 -0
- edumfa-2.9.0/deploy/docker-example/env-example +15 -0
- edumfa-2.9.0/deploy/docker-example/example-policy.py +25 -0
- edumfa-2.9.0/deploy/docker-example/my-login.html +95 -0
- edumfa-2.9.0/deploy/edumfa/edumfa.cfg +32 -0
- edumfa-2.9.0/deploy/nginx/edumfaapp.py +7 -0
- edumfa-2.9.0/deploy/ubuntu/changelog +515 -0
- edumfa-2.9.0/deploy/ubuntu/control +26 -0
- edumfa-2.9.0/deploy/ubuntu/rules +22 -0
- edumfa-2.9.0/deploy/ubuntu-server/changelog +133 -0
- edumfa-2.9.0/deploy/ubuntu-server/control +30 -0
- edumfa-2.9.0/deploy/ubuntu-server/edumfa-apache2.postinst +229 -0
- edumfa-2.9.0/deploy/ubuntu-server/edumfa-nginx.postinst +227 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/rules +0 -0
- edumfa-2.9.0/edumfa/api/__init__.py +29 -0
- edumfa-2.9.0/edumfa/api/application.py +62 -0
- edumfa-2.9.0/edumfa/api/audit.py +154 -0
- edumfa-2.9.0/edumfa/api/auth.py +545 -0
- edumfa-2.9.0/edumfa/api/before_after.py +423 -0
- edumfa-2.9.0/edumfa/api/caconnector.py +104 -0
- edumfa-2.9.0/edumfa/api/clienttype.py +79 -0
- edumfa-2.9.0/edumfa/api/edumfaserver.py +125 -0
- edumfa-2.9.0/edumfa/api/event.py +241 -0
- edumfa-2.9.0/edumfa/api/lib/decorators.py +52 -0
- edumfa-2.9.0/edumfa/api/lib/policyhelper.py +218 -0
- edumfa-2.9.0/edumfa/api/lib/postpolicy.py +1127 -0
- edumfa-2.9.0/edumfa/api/lib/prepolicy.py +2672 -0
- edumfa-2.9.0/edumfa/api/lib/utils.py +555 -0
- edumfa-2.9.0/edumfa/api/machine.py +492 -0
- edumfa-2.9.0/edumfa/api/machineresolver.py +148 -0
- edumfa-2.9.0/edumfa/api/monitoring.py +122 -0
- edumfa-2.9.0/edumfa/api/periodictask.py +236 -0
- edumfa-2.9.0/edumfa/api/policy.py +606 -0
- edumfa-2.9.0/edumfa/api/radiusserver.py +155 -0
- edumfa-2.9.0/edumfa/api/realm.py +386 -0
- edumfa-2.9.0/edumfa/api/recover.py +90 -0
- edumfa-2.9.0/edumfa/api/register.py +189 -0
- edumfa-2.9.0/edumfa/api/resolver.py +194 -0
- edumfa-2.9.0/edumfa/api/serviceid.py +190 -0
- edumfa-2.9.0/edumfa/api/smsgateway.py +155 -0
- edumfa-2.9.0/edumfa/api/smtpserver.py +167 -0
- edumfa-2.9.0/edumfa/api/system.py +383 -0
- edumfa-2.9.0/edumfa/api/token.py +1407 -0
- edumfa-2.9.0/edumfa/api/tokengroup.py +189 -0
- edumfa-2.9.0/edumfa/api/ttype.py +138 -0
- edumfa-2.9.0/edumfa/api/user.py +360 -0
- edumfa-2.9.0/edumfa/api/validate.py +757 -0
- edumfa-2.9.0/edumfa/app.py +243 -0
- edumfa-2.9.0/edumfa/commands/manage/admin.py +70 -0
- edumfa-2.9.0/edumfa/commands/manage/api.py +101 -0
- edumfa-2.9.0/edumfa/commands/manage/audit.py +229 -0
- edumfa-2.9.0/edumfa/commands/manage/authcache.py +44 -0
- edumfa-2.9.0/edumfa/commands/manage/backup.py +312 -0
- edumfa-2.9.0/edumfa/commands/manage/ca.py +92 -0
- edumfa-2.9.0/edumfa/commands/manage/config.py +281 -0
- edumfa-2.9.0/edumfa/commands/manage/core.py +286 -0
- edumfa-2.9.0/edumfa/commands/manage/event.py +143 -0
- edumfa-2.9.0/edumfa/commands/manage/helper.py +275 -0
- edumfa-2.9.0/edumfa/commands/manage/hsm.py +42 -0
- edumfa-2.9.0/edumfa/commands/manage/main.py +103 -0
- edumfa-2.9.0/edumfa/commands/manage/policy.py +215 -0
- edumfa-2.9.0/edumfa/commands/manage/realm.py +85 -0
- edumfa-2.9.0/edumfa/commands/manage/resolver.py +218 -0
- edumfa-2.9.0/edumfa/commands/manage/token.py +43 -0
- edumfa-2.9.0/edumfa/config.py +183 -0
- edumfa-2.9.0/edumfa/lib/__init__.py +21 -0
- edumfa-2.9.0/edumfa/lib/applications/__init__.py +30 -0
- edumfa-2.9.0/edumfa/lib/applications/base.py +179 -0
- edumfa-2.9.0/edumfa/lib/applications/luks.py +100 -0
- edumfa-2.9.0/edumfa/lib/applications/offline.py +193 -0
- edumfa-2.9.0/edumfa/lib/applications/ssh.py +130 -0
- edumfa-2.9.0/edumfa/lib/apps.py +217 -0
- edumfa-2.9.0/edumfa/lib/audit.py +140 -0
- edumfa-2.9.0/edumfa/lib/auditmodules/base.py +297 -0
- edumfa-2.9.0/edumfa/lib/auditmodules/containeraudit.py +140 -0
- edumfa-2.9.0/edumfa/lib/auditmodules/loggeraudit.py +94 -0
- edumfa-2.9.0/edumfa/lib/auditmodules/sqlaudit.py +691 -0
- edumfa-2.9.0/edumfa/lib/auth.py +141 -0
- edumfa-2.9.0/edumfa/lib/authcache.py +187 -0
- edumfa-2.9.0/edumfa/lib/caconnector.py +351 -0
- edumfa-2.9.0/edumfa/lib/caconnectors/caservice_pb2.py +261 -0
- edumfa-2.9.0/edumfa/lib/caconnectors/caservice_pb2_grpc.py +374 -0
- edumfa-2.9.0/edumfa/lib/caconnectors/localca.py +772 -0
- edumfa-2.9.0/edumfa/lib/caconnectors/msca.py +468 -0
- edumfa-2.9.0/edumfa/lib/challenge.py +179 -0
- edumfa-2.9.0/edumfa/lib/challengeresponsedecorators.py +244 -0
- edumfa-2.9.0/edumfa/lib/clientapplication.py +115 -0
- edumfa-2.9.0/edumfa/lib/config.py +1116 -0
- edumfa-2.9.0/edumfa/lib/counter.py +116 -0
- edumfa-2.9.0/edumfa/lib/crypto.py +923 -0
- edumfa-2.9.0/edumfa/lib/decorators.py +147 -0
- edumfa-2.9.0/edumfa/lib/edumfaserver.py +263 -0
- edumfa-2.9.0/edumfa/lib/error.py +203 -0
- edumfa-2.9.0/edumfa/lib/event.py +384 -0
- edumfa-2.9.0/edumfa/lib/eventhandler/base.py +662 -0
- edumfa-2.9.0/edumfa/lib/eventhandler/counterhandler.py +123 -0
- edumfa-2.9.0/edumfa/lib/eventhandler/customuserattributeshandler.py +144 -0
- edumfa-2.9.0/edumfa/lib/eventhandler/federationhandler.py +188 -0
- edumfa-2.9.0/edumfa/lib/eventhandler/logginghandler.py +181 -0
- edumfa-2.9.0/edumfa/lib/eventhandler/requestmangler.py +200 -0
- edumfa-2.9.0/edumfa/lib/eventhandler/responsemangler.py +184 -0
- edumfa-2.9.0/edumfa/lib/eventhandler/scripthandler.py +243 -0
- edumfa-2.9.0/edumfa/lib/eventhandler/tokenhandler.py +697 -0
- edumfa-2.9.0/edumfa/lib/eventhandler/usernotification.py +532 -0
- edumfa-2.9.0/edumfa/lib/eventhandler/webhookeventhandler.py +211 -0
- edumfa-2.9.0/edumfa/lib/framework.py +73 -0
- edumfa-2.9.0/edumfa/lib/importotp.py +829 -0
- edumfa-2.9.0/edumfa/lib/lifecycle.py +77 -0
- edumfa-2.9.0/edumfa/lib/log.py +235 -0
- edumfa-2.9.0/edumfa/lib/machine.py +582 -0
- edumfa-2.9.0/edumfa/lib/machineresolver.py +313 -0
- edumfa-2.9.0/edumfa/lib/machines/__init__.py +29 -0
- edumfa-2.9.0/edumfa/lib/machines/base.py +186 -0
- edumfa-2.9.0/edumfa/lib/machines/hosts.py +165 -0
- edumfa-2.9.0/edumfa/lib/machines/ldap.py +380 -0
- edumfa-2.9.0/edumfa/lib/monitoringmodules/base.py +96 -0
- edumfa-2.9.0/edumfa/lib/monitoringmodules/sqlstats.py +207 -0
- edumfa-2.9.0/edumfa/lib/monitoringstats.py +134 -0
- edumfa-2.9.0/edumfa/lib/passwordreset.py +155 -0
- edumfa-2.9.0/edumfa/lib/periodictask.py +343 -0
- edumfa-2.9.0/edumfa/lib/pinhandling/base.py +94 -0
- edumfa-2.9.0/edumfa/lib/policy.py +3829 -0
- edumfa-2.9.0/edumfa/lib/policydecorators.py +749 -0
- edumfa-2.9.0/edumfa/lib/pooling.py +140 -0
- edumfa-2.9.0/edumfa/lib/queue.py +170 -0
- edumfa-2.9.0/edumfa/lib/queues/base.py +63 -0
- edumfa-2.9.0/edumfa/lib/queues/huey_queue.py +57 -0
- edumfa-2.9.0/edumfa/lib/radiusserver.py +371 -0
- edumfa-2.9.0/edumfa/lib/realm.py +272 -0
- edumfa-2.9.0/edumfa/lib/resolver.py +412 -0
- edumfa-2.9.0/edumfa/lib/resolvers/HTTPResolver.py +235 -0
- edumfa-2.9.0/edumfa/lib/resolvers/LDAPIdResolver.py +1510 -0
- edumfa-2.9.0/edumfa/lib/resolvers/PasswdIdResolver.py +503 -0
- edumfa-2.9.0/edumfa/lib/resolvers/SCIMIdResolver.py +308 -0
- edumfa-2.9.0/edumfa/lib/resolvers/SQLIdResolver.py +783 -0
- edumfa-2.9.0/edumfa/lib/resolvers/UserIdResolver.py +280 -0
- edumfa-2.9.0/edumfa/lib/resolvers/__init__.py +6 -0
- edumfa-2.9.0/edumfa/lib/security/aeshsm.py +372 -0
- edumfa-2.9.0/edumfa/lib/security/default.py +509 -0
- edumfa-2.9.0/edumfa/lib/security/encryptkey.py +408 -0
- edumfa-2.9.0/edumfa/lib/serviceid.py +82 -0
- edumfa-2.9.0/edumfa/lib/smsprovider/FirebaseProvider.py +264 -0
- edumfa-2.9.0/edumfa/lib/smsprovider/HttpMessageToUidProvider.py +317 -0
- edumfa-2.9.0/edumfa/lib/smsprovider/HttpSMSProvider.py +307 -0
- edumfa-2.9.0/edumfa/lib/smsprovider/SMSProvider.py +394 -0
- edumfa-2.9.0/edumfa/lib/smsprovider/ScriptSMSProvider.py +145 -0
- edumfa-2.9.0/edumfa/lib/smsprovider/SipgateSMSProvider.py +126 -0
- edumfa-2.9.0/edumfa/lib/smsprovider/SmppSMSProvider.py +141 -0
- edumfa-2.9.0/edumfa/lib/smsprovider/SmtpSMSProvider.py +142 -0
- edumfa-2.9.0/edumfa/lib/smsprovider/__init__.py +37 -0
- edumfa-2.9.0/edumfa/lib/smtpserver.py +392 -0
- edumfa-2.9.0/edumfa/lib/sqlutils.py +127 -0
- edumfa-2.9.0/edumfa/lib/subscriptions.py +197 -0
- edumfa-2.9.0/edumfa/lib/task/eventcounter.py +83 -0
- edumfa-2.9.0/edumfa/lib/task/simplestats.py +106 -0
- edumfa-2.9.0/edumfa/lib/token.py +2872 -0
- edumfa-2.9.0/edumfa/lib/tokenclass.py +1987 -0
- edumfa-2.9.0/edumfa/lib/tokengroup.py +87 -0
- edumfa-2.9.0/edumfa/lib/tokens/HMAC.py +159 -0
- edumfa-2.9.0/edumfa/lib/tokens/applicationspecificpasswordtoken.py +160 -0
- edumfa-2.9.0/edumfa/lib/tokens/certificatetoken.py +728 -0
- edumfa-2.9.0/edumfa/lib/tokens/daplugtoken.py +277 -0
- edumfa-2.9.0/edumfa/lib/tokens/daypasswordtoken.py +471 -0
- edumfa-2.9.0/edumfa/lib/tokens/emailtoken.py +623 -0
- edumfa-2.9.0/edumfa/lib/tokens/foureyestoken.py +534 -0
- edumfa-2.9.0/edumfa/lib/tokens/hotptoken.py +908 -0
- edumfa-2.9.0/edumfa/lib/tokens/indexedsecrettoken.py +421 -0
- edumfa-2.9.0/edumfa/lib/tokens/legacypushtoken.py +116 -0
- edumfa-2.9.0/edumfa/lib/tokens/mOTP.py +161 -0
- edumfa-2.9.0/edumfa/lib/tokens/motptoken.py +240 -0
- edumfa-2.9.0/edumfa/lib/tokens/ocra.py +371 -0
- edumfa-2.9.0/edumfa/lib/tokens/ocratoken.py +310 -0
- edumfa-2.9.0/edumfa/lib/tokens/papertoken.py +153 -0
- edumfa-2.9.0/edumfa/lib/tokens/passwordtoken.py +208 -0
- edumfa-2.9.0/edumfa/lib/tokens/pushtoken.py +1396 -0
- edumfa-2.9.0/edumfa/lib/tokens/questionnairetoken.py +384 -0
- edumfa-2.9.0/edumfa/lib/tokens/radiustoken.py +592 -0
- edumfa-2.9.0/edumfa/lib/tokens/registrationtoken.py +185 -0
- edumfa-2.9.0/edumfa/lib/tokens/remotetoken.py +367 -0
- edumfa-2.9.0/edumfa/lib/tokens/smstoken.py +708 -0
- edumfa-2.9.0/edumfa/lib/tokens/spasstoken.py +164 -0
- edumfa-2.9.0/edumfa/lib/tokens/sshkeytoken.py +182 -0
- edumfa-2.9.0/edumfa/lib/tokens/tantoken.py +237 -0
- edumfa-2.9.0/edumfa/lib/tokens/tiqrtoken.py +495 -0
- edumfa-2.9.0/edumfa/lib/tokens/totptoken.py +835 -0
- edumfa-2.9.0/edumfa/lib/tokens/u2f.py +303 -0
- edumfa-2.9.0/edumfa/lib/tokens/u2ftoken.py +669 -0
- edumfa-2.9.0/edumfa/lib/tokens/vasco.py +188 -0
- edumfa-2.9.0/edumfa/lib/tokens/vascotoken.py +203 -0
- edumfa-2.9.0/edumfa/lib/tokens/webauthn.py +2365 -0
- edumfa-2.9.0/edumfa/lib/tokens/webauthntoken.py +1772 -0
- edumfa-2.9.0/edumfa/lib/tokens/yubicotoken.py +230 -0
- edumfa-2.9.0/edumfa/lib/tokens/yubikeytoken.py +502 -0
- edumfa-2.9.0/edumfa/lib/user.py +857 -0
- edumfa-2.9.0/edumfa/lib/usercache.py +264 -0
- edumfa-2.9.0/edumfa/lib/utils/__init__.py +1613 -0
- edumfa-2.9.0/edumfa/lib/utils/compare.py +247 -0
- edumfa-2.9.0/edumfa/lib/utils/export.py +120 -0
- edumfa-2.9.0/edumfa/models.py +3419 -0
- edumfa-2.9.0/edumfa/static/Gruntfile.js +28 -0
- edumfa-2.9.0/edumfa/static/app.js +180 -0
- edumfa-2.9.0/edumfa/static/bun.lock +347 -0
- edumfa-2.9.0/edumfa/static/components/config/controllers/configControllers.js +1290 -0
- edumfa-2.9.0/edumfa/static/components/config/controllers/eduMfaServerController.js +99 -0
- edumfa-2.9.0/edumfa/static/components/config/views/config.html +86 -0
- edumfa-2.9.0/edumfa/static/components/config/views/config.smtp.edit.html +154 -0
- edumfa-2.9.0/edumfa/static/components/config/views/config.token.totp.html +55 -0
- edumfa-2.9.0/edumfa/static/components/config/views/dialog.ldap_restart.html +26 -0
- edumfa-2.9.0/edumfa/static/components/dashboard/controllers/dashboardControllers.js +200 -0
- edumfa-2.9.0/edumfa/static/components/login/controllers/loginControllers.js +680 -0
- edumfa-2.9.0/edumfa/static/components/login/views/enter-response.html +35 -0
- edumfa-2.9.0/edumfa/static/components/token/controllers/tokenControllers.js +745 -0
- edumfa-2.9.0/edumfa/static/components/token/controllers/tokenDetailController.js +463 -0
- edumfa-2.9.0/edumfa/static/components/token/factories/token.js +261 -0
- edumfa-2.9.0/edumfa/static/components/token/views/token.details.html +740 -0
- edumfa-2.9.0/edumfa/static/components/token/views/token.enroll.remote.html +54 -0
- edumfa-2.9.0/edumfa/static/components/token/views/token.enroll.totp.html +89 -0
- edumfa-2.9.0/edumfa/static/components/token/views/token.enroll.yubikey.html +47 -0
- edumfa-2.9.0/edumfa/static/components/token/views/token.enrolled.registration.html +18 -0
- edumfa-2.9.0/edumfa/static/components/translation/translations.js +22 -0
- edumfa-2.9.0/edumfa/static/contrib/css/isteven-multi-select.css +299 -0
- edumfa-2.9.0/edumfa/static/contrib/js/jquery.js +10716 -0
- edumfa-2.9.0/edumfa/static/contrib/js/ngmodules/isteven-multi-select.js +1111 -0
- edumfa-2.9.0/edumfa/static/package.json +35 -0
- edumfa-2.9.0/edumfa/static/templates/baseline.html +18 -0
- edumfa-2.9.0/edumfa/static/templates/documentation.rst +129 -0
- edumfa-2.9.0/edumfa/static/translations/cs.po +5156 -0
- edumfa-2.9.0/edumfa/static/translations/de.po +5773 -0
- edumfa-2.9.0/edumfa/static/translations/es.po +5137 -0
- edumfa-2.9.0/edumfa/static/translations/fr.po +5072 -0
- edumfa-2.9.0/edumfa/static/translations/hu.po +4757 -0
- edumfa-2.9.0/edumfa/static/translations/it.po +5611 -0
- edumfa-2.9.0/edumfa/static/translations/mn.po +4794 -0
- edumfa-2.9.0/edumfa/static/translations/nb_NO.po +4764 -0
- edumfa-2.9.0/edumfa/static/translations/nl.po +5637 -0
- edumfa-2.9.0/edumfa/static/translations/pl.po +4742 -0
- edumfa-2.9.0/edumfa/static/translations/pt_BR.po +4758 -0
- edumfa-2.9.0/edumfa/static/translations/ro.po +4792 -0
- edumfa-2.9.0/edumfa/static/translations/ru.po +4812 -0
- edumfa-2.9.0/edumfa/static/translations/si.po +4748 -0
- edumfa-2.9.0/edumfa/static/translations/template.pot +4662 -0
- edumfa-2.9.0/edumfa/static/translations/tr.po +5562 -0
- edumfa-2.9.0/edumfa/static/translations/uk.po +5042 -0
- edumfa-2.9.0/edumfa/static/translations/zh_Hans.po +4772 -0
- edumfa-2.9.0/edumfa/static/translations/zh_Hant.po +5549 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/update_contrib.sh +0 -0
- edumfa-2.9.0/edumfa/translations/cs/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/cs/LC_MESSAGES/messages.po +2996 -0
- edumfa-2.9.0/edumfa/translations/de/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/de/LC_MESSAGES/messages.po +3726 -0
- edumfa-2.9.0/edumfa/translations/es/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/es/LC_MESSAGES/messages.po +3582 -0
- edumfa-2.9.0/edumfa/translations/fr/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/fr/LC_MESSAGES/messages.po +3395 -0
- edumfa-2.9.0/edumfa/translations/it/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/it/LC_MESSAGES/messages.po +3117 -0
- edumfa-2.9.0/edumfa/translations/messages.pot +2853 -0
- edumfa-2.9.0/edumfa/translations/nl/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/nl/LC_MESSAGES/messages.po +3620 -0
- edumfa-2.9.0/edumfa/translations/pl/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/pl/LC_MESSAGES/messages.po +2969 -0
- edumfa-2.9.0/edumfa/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/pt_BR/LC_MESSAGES/messages.po +3473 -0
- edumfa-2.9.0/edumfa/translations/ro/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/ro/LC_MESSAGES/messages.po +3062 -0
- edumfa-2.9.0/edumfa/translations/ru/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/ru/LC_MESSAGES/messages.po +3073 -0
- edumfa-2.9.0/edumfa/translations/si/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/si/LC_MESSAGES/messages.po +2969 -0
- edumfa-2.9.0/edumfa/translations/tr/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/tr/LC_MESSAGES/messages.po +3452 -0
- edumfa-2.9.0/edumfa/translations/zh_Hans/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/zh_Hans/LC_MESSAGES/messages.po +3018 -0
- edumfa-2.9.0/edumfa/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.9.0/edumfa/translations/zh_Hant/LC_MESSAGES/messages.po +3022 -0
- edumfa-2.9.0/edumfa/webui/__init__.py +1 -0
- edumfa-2.9.0/edumfa/webui/certificate.py +115 -0
- edumfa-2.9.0/edumfa/webui/login.py +234 -0
- edumfa-2.9.0/edumfa.egg-info/PKG-INFO +304 -0
- edumfa-2.9.0/edumfa.egg-info/SOURCES.txt +881 -0
- edumfa-2.9.0/edumfa.egg-info/requires.txt +117 -0
- edumfa-2.9.0/migrations/env.py +113 -0
- edumfa-2.9.0/migrations/versions/006d4747f858_.py +32 -0
- edumfa-2.9.0/migrations/versions/00762b3f7a60_.py +85 -0
- edumfa-2.9.0/migrations/versions/0c7123345224_.py +44 -0
- edumfa-2.9.0/migrations/versions/0d011e94a8e8_.py +231 -0
- edumfa-2.9.0/migrations/versions/140ba0ca4f07_.py +22 -0
- edumfa-2.9.0/migrations/versions/145ce80decd_.py +31 -0
- edumfa-2.9.0/migrations/versions/14a1bcb10018_.py +28 -0
- edumfa-2.9.0/migrations/versions/19f727d285e2_.py +35 -0
- edumfa-2.9.0/migrations/versions/1a0710df148b_.py +28 -0
- edumfa-2.9.0/migrations/versions/1a69e5e5e2ac_.py +49 -0
- edumfa-2.9.0/migrations/versions/1edda52b619f_.py +32 -0
- edumfa-2.9.0/migrations/versions/204d8d4f351e_.py +31 -0
- edumfa-2.9.0/migrations/versions/205bda834127_.py +50 -0
- edumfa-2.9.0/migrations/versions/20969b4cbf06_.py +44 -0
- edumfa-2.9.0/migrations/versions/2118e566df16_.py +26 -0
- edumfa-2.9.0/migrations/versions/2181294eed0b_.py +32 -0
- edumfa-2.9.0/migrations/versions/22558d9f3178_.py +28 -0
- edumfa-2.9.0/migrations/versions/239995464c48_.py +35 -0
- edumfa-2.9.0/migrations/versions/2551ee982544_.py +38 -0
- edumfa-2.9.0/migrations/versions/2a74c6522937_.py +55 -0
- edumfa-2.9.0/migrations/versions/2ac117d0a6f5_.py +44 -0
- edumfa-2.9.0/migrations/versions/2c9430cfc66b_.py +69 -0
- edumfa-2.9.0/migrations/versions/307a4fbe8a05_.py +42 -0
- edumfa-2.9.0/migrations/versions/3236a1abf1c6_.py +32 -0
- edumfa-2.9.0/migrations/versions/3429d523e51f_.py +49 -0
- edumfa-2.9.0/migrations/versions/36428afb2457_.py +35 -0
- edumfa-2.9.0/migrations/versions/37e6b49fc686_.py +68 -0
- edumfa-2.9.0/migrations/versions/3ae3c668f444_.py +47 -0
- edumfa-2.9.0/migrations/versions/3ba618f6b820_.py +59 -0
- edumfa-2.9.0/migrations/versions/3c6e9dd7fbac_.py +60 -0
- edumfa-2.9.0/migrations/versions/3d7f8b29cbb1_.py +116 -0
- edumfa-2.9.0/migrations/versions/3f7e8583ea2_.py +38 -0
- edumfa-2.9.0/migrations/versions/4023571658f8_.py +54 -0
- edumfa-2.9.0/migrations/versions/414079706620_.py +66 -0
- edumfa-2.9.0/migrations/versions/4238eac8ccab_.py +87 -0
- edumfa-2.9.0/migrations/versions/449903fb6e35_.py +42 -0
- edumfa-2.9.0/migrations/versions/48ee74b8a7c8_.py +229 -0
- edumfa-2.9.0/migrations/versions/49a04e560d96_.py +40 -0
- edumfa-2.9.0/migrations/versions/4a0aec37e7cf_.py +50 -0
- edumfa-2.9.0/migrations/versions/4d9178fa8336_.py +34 -0
- edumfa-2.9.0/migrations/versions/4f32a4e1bf33_.py +512 -0
- edumfa-2.9.0/migrations/versions/50adc980d625_.py +57 -0
- edumfa-2.9.0/migrations/versions/5402fd96fbca_.py +65 -0
- edumfa-2.9.0/migrations/versions/58e4f7ebb705_.py +28 -0
- edumfa-2.9.0/migrations/versions/59ef3e03bc62_.py +36 -0
- edumfa-2.9.0/migrations/versions/5cb310101a1f_.py +81 -0
- edumfa-2.9.0/migrations/versions/631ec59e1ca6_.py +28 -0
- edumfa-2.9.0/migrations/versions/7d82d8b680a9_.py +30 -0
- edumfa-2.9.0/migrations/versions/849170064430_.py +31 -0
- edumfa-2.9.0/migrations/versions/86f40f535d7c_.py +36 -0
- edumfa-2.9.0/migrations/versions/888b56ed5dcb_.py +58 -0
- edumfa-2.9.0/migrations/versions/89e57ed16379_.py +57 -0
- edumfa-2.9.0/migrations/versions/8d40dbcfda25_.py +42 -0
- edumfa-2.9.0/migrations/versions/9155f0d3d028_.py +110 -0
- edumfa-2.9.0/migrations/versions/a28f2733897b_.py +49 -0
- edumfa-2.9.0/migrations/versions/a63df077051a_.py +30 -0
- edumfa-2.9.0/migrations/versions/a7e91b18a460_.py +75 -0
- edumfa-2.9.0/migrations/versions/a844dc0c3fb9_.py +58 -0
- edumfa-2.9.0/migrations/versions/b9131d0686eb_.py +104 -0
- edumfa-2.9.0/migrations/versions/cb6d7b7bae63_.py +34 -0
- edumfa-2.9.0/migrations/versions/d2ae8e54b628_.py +101 -0
- edumfa-2.9.0/migrations/versions/d3c0f0403a84_.py +22 -0
- edumfa-2.9.0/migrations/versions/d415d490eb05_.py +33 -0
- edumfa-2.9.0/migrations/versions/d5870fd2f2a4_.py +22 -0
- edumfa-2.9.0/migrations/versions/d6b40a745e5_.py +34 -0
- edumfa-2.9.0/migrations/versions/d756b34061ff_.py +105 -0
- edumfa-2.9.0/migrations/versions/dceb6cd3c41e_.py +60 -0
- edumfa-2.9.0/migrations/versions/e360c56bcf8c_.py +89 -0
- edumfa-2.9.0/migrations/versions/e5cbeb7c177_.py +34 -0
- edumfa-2.9.0/migrations/versions/ef29ba43e290_.py +54 -0
- edumfa-2.9.0/migrations/versions/fa07bd604a75.py +73 -0
- edumfa-2.9.0/migrations/versions/fabcf24d9304_.py +44 -0
- edumfa-2.9.0/migrations/versions/ff26585932ec_.py +55 -0
- edumfa-2.9.0/pyproject.toml +125 -0
- edumfa-2.9.0/requirements.txt +165 -0
- edumfa-2.9.0/setup.py +65 -0
- edumfa-2.9.0/tests/base.py +283 -0
- edumfa-2.9.0/tests/conftest.py +5 -0
- edumfa-2.9.0/tests/ldap3mock.py +798 -0
- edumfa-2.9.0/tests/mscamock.py +80 -0
- edumfa-2.9.0/tests/pkcs11mock.py +214 -0
- edumfa-2.9.0/tests/queuemock.py +75 -0
- edumfa-2.9.0/tests/radiusmock.py +159 -0
- edumfa-2.9.0/tests/redismock.py +117 -0
- edumfa-2.9.0/tests/smppmock.py +180 -0
- edumfa-2.9.0/tests/smtpmock.py +247 -0
- edumfa-2.9.0/tests/test_api_2stepinit.py +759 -0
- edumfa-2.9.0/tests/test_api_applications.py +27 -0
- edumfa-2.9.0/tests/test_api_audit.py +467 -0
- edumfa-2.9.0/tests/test_api_auth.py +1095 -0
- edumfa-2.9.0/tests/test_api_caconnector.py +195 -0
- edumfa-2.9.0/tests/test_api_clienttype.py +42 -0
- edumfa-2.9.0/tests/test_api_edumfaserver.py +110 -0
- edumfa-2.9.0/tests/test_api_events.py +761 -0
- edumfa-2.9.0/tests/test_api_lib_policy.py +4971 -0
- edumfa-2.9.0/tests/test_api_lib_utils.py +599 -0
- edumfa-2.9.0/tests/test_api_machineresolver.py +158 -0
- edumfa-2.9.0/tests/test_api_machines.py +878 -0
- edumfa-2.9.0/tests/test_api_machines_serviceid.py +360 -0
- edumfa-2.9.0/tests/test_api_monitoring.py +122 -0
- edumfa-2.9.0/tests/test_api_offline_no_token.py +115 -0
- edumfa-2.9.0/tests/test_api_periodictask.py +345 -0
- edumfa-2.9.0/tests/test_api_policy.py +869 -0
- edumfa-2.9.0/tests/test_api_push_validate.py +1281 -0
- edumfa-2.9.0/tests/test_api_radiusserver.py +162 -0
- edumfa-2.9.0/tests/test_api_register.py +211 -0
- edumfa-2.9.0/tests/test_api_roles.py +1658 -0
- edumfa-2.9.0/tests/test_api_serviceids.py +102 -0
- edumfa-2.9.0/tests/test_api_smsgateway.py +285 -0
- edumfa-2.9.0/tests/test_api_smtpserver.py +103 -0
- edumfa-2.9.0/tests/test_api_system.py +1311 -0
- edumfa-2.9.0/tests/test_api_token.py +4439 -0
- edumfa-2.9.0/tests/test_api_tokengroup.py +102 -0
- edumfa-2.9.0/tests/test_api_ttype.py +915 -0
- edumfa-2.9.0/tests/test_api_u2f.py +535 -0
- edumfa-2.9.0/tests/test_api_users.py +738 -0
- edumfa-2.9.0/tests/test_api_validate.py +7109 -0
- edumfa-2.9.0/tests/test_app.py +239 -0
- edumfa-2.9.0/tests/test_db_model.py +1254 -0
- edumfa-2.9.0/tests/test_lib_applications.py +216 -0
- edumfa-2.9.0/tests/test_lib_apps.py +62 -0
- edumfa-2.9.0/tests/test_lib_audit.py +588 -0
- edumfa-2.9.0/tests/test_lib_auth.py +47 -0
- edumfa-2.9.0/tests/test_lib_authcache.py +233 -0
- edumfa-2.9.0/tests/test_lib_caconnector.py +761 -0
- edumfa-2.9.0/tests/test_lib_challenges.py +80 -0
- edumfa-2.9.0/tests/test_lib_clientapplication.py +150 -0
- edumfa-2.9.0/tests/test_lib_config.py +298 -0
- edumfa-2.9.0/tests/test_lib_counter.py +216 -0
- edumfa-2.9.0/tests/test_lib_crypto.py +866 -0
- edumfa-2.9.0/tests/test_lib_edumfaserver.py +267 -0
- edumfa-2.9.0/tests/test_lib_eventhandler_logging.py +168 -0
- edumfa-2.9.0/tests/test_lib_eventhandler_usernotification.py +1653 -0
- edumfa-2.9.0/tests/test_lib_events.py +2951 -0
- edumfa-2.9.0/tests/test_lib_framework.py +74 -0
- edumfa-2.9.0/tests/test_lib_importotp.py +790 -0
- edumfa-2.9.0/tests/test_lib_lifecycle.py +73 -0
- edumfa-2.9.0/tests/test_lib_machine_resolver_ldap.py +195 -0
- edumfa-2.9.0/tests/test_lib_machines.py +249 -0
- edumfa-2.9.0/tests/test_lib_machinetokens.py +249 -0
- edumfa-2.9.0/tests/test_lib_monitoringstats.py +135 -0
- edumfa-2.9.0/tests/test_lib_periodictask.py +672 -0
- edumfa-2.9.0/tests/test_lib_policy.py +2091 -0
- edumfa-2.9.0/tests/test_lib_policydecorator.py +1047 -0
- edumfa-2.9.0/tests/test_lib_pooling.py +78 -0
- edumfa-2.9.0/tests/test_lib_queue.py +116 -0
- edumfa-2.9.0/tests/test_lib_radiusserver.py +195 -0
- edumfa-2.9.0/tests/test_lib_realm.py +110 -0
- edumfa-2.9.0/tests/test_lib_recovery.py +133 -0
- edumfa-2.9.0/tests/test_lib_resolver.py +3320 -0
- edumfa-2.9.0/tests/test_lib_serviceid.py +65 -0
- edumfa-2.9.0/tests/test_lib_smsprovider.py +1024 -0
- edumfa-2.9.0/tests/test_lib_smtpserver.py +274 -0
- edumfa-2.9.0/tests/test_lib_sqlutils.py +106 -0
- edumfa-2.9.0/tests/test_lib_subscriptions.py +54 -0
- edumfa-2.9.0/tests/test_lib_task_eventcounter.py +62 -0
- edumfa-2.9.0/tests/test_lib_task_simplestats.py +112 -0
- edumfa-2.9.0/tests/test_lib_tasks.py +25 -0
- edumfa-2.9.0/tests/test_lib_token.py +2485 -0
- edumfa-2.9.0/tests/test_lib_tokenclass.py +929 -0
- edumfa-2.9.0/tests/test_lib_tokengroup.py +73 -0
- edumfa-2.9.0/tests/test_lib_tokens_certificate.py +793 -0
- edumfa-2.9.0/tests/test_lib_tokens_daplug.py +588 -0
- edumfa-2.9.0/tests/test_lib_tokens_daypassword.py +657 -0
- edumfa-2.9.0/tests/test_lib_tokens_email.py +519 -0
- edumfa-2.9.0/tests/test_lib_tokens_foureyes.py +96 -0
- edumfa-2.9.0/tests/test_lib_tokens_hotp.py +828 -0
- edumfa-2.9.0/tests/test_lib_tokens_indexedsecret.py +160 -0
- edumfa-2.9.0/tests/test_lib_tokens_motp.py +176 -0
- edumfa-2.9.0/tests/test_lib_tokens_paper.py +70 -0
- edumfa-2.9.0/tests/test_lib_tokens_passwordtoken.py +57 -0
- edumfa-2.9.0/tests/test_lib_tokens_push.py +3593 -0
- edumfa-2.9.0/tests/test_lib_tokens_questionnaire.py +153 -0
- edumfa-2.9.0/tests/test_lib_tokens_radius.py +451 -0
- edumfa-2.9.0/tests/test_lib_tokens_registration.py +83 -0
- edumfa-2.9.0/tests/test_lib_tokens_remote.py +259 -0
- edumfa-2.9.0/tests/test_lib_tokens_sms.py +511 -0
- edumfa-2.9.0/tests/test_lib_tokens_spass.py +53 -0
- edumfa-2.9.0/tests/test_lib_tokens_ssh.py +144 -0
- edumfa-2.9.0/tests/test_lib_tokens_tan.py +136 -0
- edumfa-2.9.0/tests/test_lib_tokens_tiqr.py +744 -0
- edumfa-2.9.0/tests/test_lib_tokens_totp.py +857 -0
- edumfa-2.9.0/tests/test_lib_tokens_u2f.py +447 -0
- edumfa-2.9.0/tests/test_lib_tokens_vasco.py +305 -0
- edumfa-2.9.0/tests/test_lib_tokens_webauthn.py +1147 -0
- edumfa-2.9.0/tests/test_lib_tokens_yubico.py +110 -0
- edumfa-2.9.0/tests/test_lib_tokens_yubikey.py +293 -0
- edumfa-2.9.0/tests/test_lib_user.py +571 -0
- edumfa-2.9.0/tests/test_lib_usercache.py +662 -0
- edumfa-2.9.0/tests/test_lib_utils.py +1180 -0
- edumfa-2.9.0/tests/test_lib_utils_compare.py +145 -0
- edumfa-2.9.0/tests/test_mock_ldap3.py +1382 -0
- edumfa-2.9.0/tests/test_resolver_realm.py +82 -0
- edumfa-2.9.0/tests/test_scripts.py +318 -0
- edumfa-2.9.0/tests/test_ui_certificate.py +133 -0
- edumfa-2.9.0/tests/test_ui_login.py +177 -0
- edumfa-2.9.0/tests/testdata/fancytoken.py +21 -0
- edumfa-2.9.0/tools/creategoogleauthenticator-file +43 -0
- edumfa-2.9.0/tools/edumfa-convert-base32.py +56 -0
- edumfa-2.9.0/tools/edumfa-create-ad-users +102 -0
- edumfa-2.9.0/tools/edumfa-create-certificate +88 -0
- edumfa-2.9.0/tools/edumfa-create-pwidresolver-user +78 -0
- edumfa-2.9.0/tools/edumfa-cron +227 -0
- edumfa-2.9.0/tools/edumfa-expired-users +193 -0
- edumfa-2.9.0/tools/edumfa-export-edumfa-counter.py +60 -0
- edumfa-2.9.0/tools/edumfa-export-linotp-counter.py +99 -0
- edumfa-2.9.0/tools/edumfa-fix-access-rights +103 -0
- edumfa-2.9.0/tools/edumfa-get-serial +114 -0
- edumfa-2.9.0/tools/edumfa-get-unused-tokens +168 -0
- edumfa-2.9.0/tools/edumfa-migrate-linotp.py +652 -0
- edumfa-2.9.0/tools/edumfa-pip-update +95 -0
- edumfa-2.9.0/tools/edumfa-queue-huey +156 -0
- edumfa-2.9.0/tools/edumfa-schema-upgrade +22 -0
- edumfa-2.9.0/tools/edumfa-standalone +347 -0
- edumfa-2.9.0/tools/edumfa-sync-owncloud.py +255 -0
- edumfa-2.9.0/tools/edumfa-token-janitor +893 -0
- edumfa-2.9.0/tools/edumfa-update-counter.py +122 -0
- edumfa-2.9.0/tools/edumfa-update-linotp-counter.py +159 -0
- edumfa-2.9.0/tools/edumfa-user-action +148 -0
- edumfa-2.9.0/tools/edumfa-usercache-cleanup +124 -0
- edumfa-2.9.0/tools/getgooglecodes +49 -0
- edumfa-2.9.0/tools/ssha.py +32 -0
- edumfa-2.7.2/PKG-INFO +0 -921
- edumfa-2.7.2/deploy/docker/logging.cfg +0 -28
- edumfa-2.7.2/deploy/docker-compose-example.yml +0 -44
- edumfa-2.7.2/deploy/docker-example/edumfa-policy.conf +0 -127
- edumfa-2.7.2/deploy/docker-example/edumfa-setup.sh +0 -4
- edumfa-2.7.2/deploy/docker-example/edumfa.cfg +0 -28
- edumfa-2.7.2/deploy/docker-setup.sh +0 -42
- edumfa-2.7.2/deploy/edumfa/edumfa.cfg +0 -26
- edumfa-2.7.2/deploy/logging.cfg +0 -33
- edumfa-2.7.2/deploy/nginx/edumfaapp.py +0 -5
- edumfa-2.7.2/deploy/ubuntu/changelog +0 -466
- edumfa-2.7.2/deploy/ubuntu/control +0 -26
- edumfa-2.7.2/deploy/ubuntu/rules +0 -20
- edumfa-2.7.2/deploy/ubuntu-server/changelog +0 -115
- edumfa-2.7.2/deploy/ubuntu-server/control +0 -30
- edumfa-2.7.2/deploy/ubuntu-server/edumfa-apache2.postinst +0 -192
- edumfa-2.7.2/deploy/ubuntu-server/edumfa-nginx.postinst +0 -176
- edumfa-2.7.2/edumfa/api/__init__.py +0 -30
- edumfa-2.7.2/edumfa/api/application.py +0 -60
- edumfa-2.7.2/edumfa/api/audit.py +0 -146
- edumfa-2.7.2/edumfa/api/auth.py +0 -454
- edumfa-2.7.2/edumfa/api/before_after.py +0 -411
- edumfa-2.7.2/edumfa/api/caconnector.py +0 -99
- edumfa-2.7.2/edumfa/api/clienttype.py +0 -80
- edumfa-2.7.2/edumfa/api/edumfaserver.py +0 -129
- edumfa-2.7.2/edumfa/api/event.py +0 -225
- edumfa-2.7.2/edumfa/api/lib/decorators.py +0 -51
- edumfa-2.7.2/edumfa/api/lib/policyhelper.py +0 -198
- edumfa-2.7.2/edumfa/api/lib/postpolicy.py +0 -913
- edumfa-2.7.2/edumfa/api/lib/prepolicy.py +0 -2330
- edumfa-2.7.2/edumfa/api/lib/utils.py +0 -480
- edumfa-2.7.2/edumfa/api/machine.py +0 -417
- edumfa-2.7.2/edumfa/api/machineresolver.py +0 -150
- edumfa-2.7.2/edumfa/api/monitoring.py +0 -116
- edumfa-2.7.2/edumfa/api/periodictask.py +0 -216
- edumfa-2.7.2/edumfa/api/policy.py +0 -557
- edumfa-2.7.2/edumfa/api/radiusserver.py +0 -140
- edumfa-2.7.2/edumfa/api/realm.py +0 -386
- edumfa-2.7.2/edumfa/api/recover.py +0 -91
- edumfa-2.7.2/edumfa/api/register.py +0 -178
- edumfa-2.7.2/edumfa/api/resolver.py +0 -196
- edumfa-2.7.2/edumfa/api/serviceid.py +0 -192
- edumfa-2.7.2/edumfa/api/smsgateway.py +0 -152
- edumfa-2.7.2/edumfa/api/smtpserver.py +0 -146
- edumfa-2.7.2/edumfa/api/system.py +0 -376
- edumfa-2.7.2/edumfa/api/token.py +0 -1285
- edumfa-2.7.2/edumfa/api/tokengroup.py +0 -190
- edumfa-2.7.2/edumfa/api/ttype.py +0 -119
- edumfa-2.7.2/edumfa/api/user.py +0 -356
- edumfa-2.7.2/edumfa/api/validate.py +0 -674
- edumfa-2.7.2/edumfa/app.py +0 -234
- edumfa-2.7.2/edumfa/commands/manage/admin.py +0 -70
- edumfa-2.7.2/edumfa/commands/manage/api.py +0 -62
- edumfa-2.7.2/edumfa/commands/manage/audit.py +0 -176
- edumfa-2.7.2/edumfa/commands/manage/authcache.py +0 -38
- edumfa-2.7.2/edumfa/commands/manage/backup.py +0 -237
- edumfa-2.7.2/edumfa/commands/manage/ca.py +0 -80
- edumfa-2.7.2/edumfa/commands/manage/config.py +0 -203
- edumfa-2.7.2/edumfa/commands/manage/core.py +0 -250
- edumfa-2.7.2/edumfa/commands/manage/event.py +0 -115
- edumfa-2.7.2/edumfa/commands/manage/helper.py +0 -229
- edumfa-2.7.2/edumfa/commands/manage/hsm.py +0 -42
- edumfa-2.7.2/edumfa/commands/manage/main.py +0 -88
- edumfa-2.7.2/edumfa/commands/manage/policy.py +0 -168
- edumfa-2.7.2/edumfa/commands/manage/realm.py +0 -80
- edumfa-2.7.2/edumfa/commands/manage/resolver.py +0 -179
- edumfa-2.7.2/edumfa/commands/manage/token.py +0 -43
- edumfa-2.7.2/edumfa/config.py +0 -166
- edumfa-2.7.2/edumfa/lib/__init__.py +0 -21
- edumfa-2.7.2/edumfa/lib/applications/__init__.py +0 -31
- edumfa-2.7.2/edumfa/lib/applications/base.py +0 -173
- edumfa-2.7.2/edumfa/lib/applications/luks.py +0 -94
- edumfa-2.7.2/edumfa/lib/applications/offline.py +0 -187
- edumfa-2.7.2/edumfa/lib/applications/ssh.py +0 -110
- edumfa-2.7.2/edumfa/lib/apps.py +0 -191
- edumfa-2.7.2/edumfa/lib/audit.py +0 -131
- edumfa-2.7.2/edumfa/lib/auditmodules/base.py +0 -269
- edumfa-2.7.2/edumfa/lib/auditmodules/containeraudit.py +0 -121
- edumfa-2.7.2/edumfa/lib/auditmodules/loggeraudit.py +0 -93
- edumfa-2.7.2/edumfa/lib/auditmodules/sqlaudit.py +0 -606
- edumfa-2.7.2/edumfa/lib/auth.py +0 -141
- edumfa-2.7.2/edumfa/lib/authcache.py +0 -163
- edumfa-2.7.2/edumfa/lib/caconnector.py +0 -327
- edumfa-2.7.2/edumfa/lib/caconnectors/caservice_pb2.py +0 -198
- edumfa-2.7.2/edumfa/lib/caconnectors/caservice_pb2_grpc.py +0 -288
- edumfa-2.7.2/edumfa/lib/caconnectors/localca.py +0 -709
- edumfa-2.7.2/edumfa/lib/caconnectors/msca.py +0 -418
- edumfa-2.7.2/edumfa/lib/challenge.py +0 -173
- edumfa-2.7.2/edumfa/lib/challengeresponsedecorators.py +0 -206
- edumfa-2.7.2/edumfa/lib/clientapplication.py +0 -109
- edumfa-2.7.2/edumfa/lib/config.py +0 -1040
- edumfa-2.7.2/edumfa/lib/counter.py +0 -112
- edumfa-2.7.2/edumfa/lib/crypto.py +0 -896
- edumfa-2.7.2/edumfa/lib/decorators.py +0 -138
- edumfa-2.7.2/edumfa/lib/edumfaserver.py +0 -242
- edumfa-2.7.2/edumfa/lib/error.py +0 -199
- edumfa-2.7.2/edumfa/lib/event.py +0 -327
- edumfa-2.7.2/edumfa/lib/eventhandler/base.py +0 -618
- edumfa-2.7.2/edumfa/lib/eventhandler/counterhandler.py +0 -114
- edumfa-2.7.2/edumfa/lib/eventhandler/customuserattributeshandler.py +0 -124
- edumfa-2.7.2/edumfa/lib/eventhandler/federationhandler.py +0 -181
- edumfa-2.7.2/edumfa/lib/eventhandler/logginghandler.py +0 -174
- edumfa-2.7.2/edumfa/lib/eventhandler/requestmangler.py +0 -176
- edumfa-2.7.2/edumfa/lib/eventhandler/responsemangler.py +0 -171
- edumfa-2.7.2/edumfa/lib/eventhandler/scripthandler.py +0 -225
- edumfa-2.7.2/edumfa/lib/eventhandler/tokenhandler.py +0 -615
- edumfa-2.7.2/edumfa/lib/eventhandler/usernotification.py +0 -476
- edumfa-2.7.2/edumfa/lib/eventhandler/webhookeventhandler.py +0 -182
- edumfa-2.7.2/edumfa/lib/framework.py +0 -67
- edumfa-2.7.2/edumfa/lib/importotp.py +0 -772
- edumfa-2.7.2/edumfa/lib/lifecycle.py +0 -76
- edumfa-2.7.2/edumfa/lib/log.py +0 -198
- edumfa-2.7.2/edumfa/lib/machine.py +0 -503
- edumfa-2.7.2/edumfa/lib/machineresolver.py +0 -305
- edumfa-2.7.2/edumfa/lib/machines/__init__.py +0 -30
- edumfa-2.7.2/edumfa/lib/machines/base.py +0 -185
- edumfa-2.7.2/edumfa/lib/machines/hosts.py +0 -158
- edumfa-2.7.2/edumfa/lib/machines/ldap.py +0 -349
- edumfa-2.7.2/edumfa/lib/monitoringmodules/base.py +0 -100
- edumfa-2.7.2/edumfa/lib/monitoringmodules/sqlstats.py +0 -185
- edumfa-2.7.2/edumfa/lib/monitoringstats.py +0 -131
- edumfa-2.7.2/edumfa/lib/passwordreset.py +0 -150
- edumfa-2.7.2/edumfa/lib/periodictask.py +0 -313
- edumfa-2.7.2/edumfa/lib/pinhandling/base.py +0 -79
- edumfa-2.7.2/edumfa/lib/policy.py +0 -3014
- edumfa-2.7.2/edumfa/lib/policydecorators.py +0 -643
- edumfa-2.7.2/edumfa/lib/pooling.py +0 -130
- edumfa-2.7.2/edumfa/lib/queue.py +0 -159
- edumfa-2.7.2/edumfa/lib/queues/base.py +0 -63
- edumfa-2.7.2/edumfa/lib/queues/huey_queue.py +0 -56
- edumfa-2.7.2/edumfa/lib/radiusserver.py +0 -316
- edumfa-2.7.2/edumfa/lib/realm.py +0 -266
- edumfa-2.7.2/edumfa/lib/resolver.py +0 -396
- edumfa-2.7.2/edumfa/lib/resolvers/HTTPResolver.py +0 -226
- edumfa-2.7.2/edumfa/lib/resolvers/LDAPIdResolver.py +0 -1352
- edumfa-2.7.2/edumfa/lib/resolvers/PasswdIdResolver.py +0 -494
- edumfa-2.7.2/edumfa/lib/resolvers/SCIMIdResolver.py +0 -311
- edumfa-2.7.2/edumfa/lib/resolvers/SQLIdResolver.py +0 -742
- edumfa-2.7.2/edumfa/lib/resolvers/UserIdResolver.py +0 -275
- edumfa-2.7.2/edumfa/lib/resolvers/__init__.py +0 -6
- edumfa-2.7.2/edumfa/lib/security/aeshsm.py +0 -352
- edumfa-2.7.2/edumfa/lib/security/default.py +0 -503
- edumfa-2.7.2/edumfa/lib/security/encryptkey.py +0 -375
- edumfa-2.7.2/edumfa/lib/serviceid.py +0 -78
- edumfa-2.7.2/edumfa/lib/smsprovider/FirebaseProvider.py +0 -213
- edumfa-2.7.2/edumfa/lib/smsprovider/HttpMessageToUidProvider.py +0 -282
- edumfa-2.7.2/edumfa/lib/smsprovider/HttpSMSProvider.py +0 -278
- edumfa-2.7.2/edumfa/lib/smsprovider/SMSProvider.py +0 -376
- edumfa-2.7.2/edumfa/lib/smsprovider/ScriptSMSProvider.py +0 -133
- edumfa-2.7.2/edumfa/lib/smsprovider/SipgateSMSProvider.py +0 -130
- edumfa-2.7.2/edumfa/lib/smsprovider/SmppSMSProvider.py +0 -149
- edumfa-2.7.2/edumfa/lib/smsprovider/SmtpSMSProvider.py +0 -133
- edumfa-2.7.2/edumfa/lib/smsprovider/__init__.py +0 -37
- edumfa-2.7.2/edumfa/lib/smtpserver.py +0 -343
- edumfa-2.7.2/edumfa/lib/sqlutils.py +0 -124
- edumfa-2.7.2/edumfa/lib/subscriptions.py +0 -192
- edumfa-2.7.2/edumfa/lib/task/eventcounter.py +0 -80
- edumfa-2.7.2/edumfa/lib/task/simplestats.py +0 -98
- edumfa-2.7.2/edumfa/lib/token.py +0 -2611
- edumfa-2.7.2/edumfa/lib/tokenclass.py +0 -1932
- edumfa-2.7.2/edumfa/lib/tokengroup.py +0 -81
- edumfa-2.7.2/edumfa/lib/tokens/HMAC.py +0 -163
- edumfa-2.7.2/edumfa/lib/tokens/applicationspecificpasswordtoken.py +0 -152
- edumfa-2.7.2/edumfa/lib/tokens/certificatetoken.py +0 -642
- edumfa-2.7.2/edumfa/lib/tokens/daplugtoken.py +0 -263
- edumfa-2.7.2/edumfa/lib/tokens/daypasswordtoken.py +0 -439
- edumfa-2.7.2/edumfa/lib/tokens/emailtoken.py +0 -558
- edumfa-2.7.2/edumfa/lib/tokens/foureyestoken.py +0 -507
- edumfa-2.7.2/edumfa/lib/tokens/hotptoken.py +0 -849
- edumfa-2.7.2/edumfa/lib/tokens/indexedsecrettoken.py +0 -379
- edumfa-2.7.2/edumfa/lib/tokens/legacypushtoken.py +0 -116
- edumfa-2.7.2/edumfa/lib/tokens/mOTP.py +0 -158
- edumfa-2.7.2/edumfa/lib/tokens/motptoken.py +0 -230
- edumfa-2.7.2/edumfa/lib/tokens/ocra.py +0 -343
- edumfa-2.7.2/edumfa/lib/tokens/ocratoken.py +0 -298
- edumfa-2.7.2/edumfa/lib/tokens/papertoken.py +0 -148
- edumfa-2.7.2/edumfa/lib/tokens/passwordtoken.py +0 -203
- edumfa-2.7.2/edumfa/lib/tokens/pushtoken.py +0 -1184
- edumfa-2.7.2/edumfa/lib/tokens/questionnairetoken.py +0 -360
- edumfa-2.7.2/edumfa/lib/tokens/radiustoken.py +0 -558
- edumfa-2.7.2/edumfa/lib/tokens/registrationtoken.py +0 -179
- edumfa-2.7.2/edumfa/lib/tokens/remotetoken.py +0 -331
- edumfa-2.7.2/edumfa/lib/tokens/smstoken.py +0 -653
- edumfa-2.7.2/edumfa/lib/tokens/spasstoken.py +0 -159
- edumfa-2.7.2/edumfa/lib/tokens/sshkeytoken.py +0 -171
- edumfa-2.7.2/edumfa/lib/tokens/tantoken.py +0 -231
- edumfa-2.7.2/edumfa/lib/tokens/tiqrtoken.py +0 -488
- edumfa-2.7.2/edumfa/lib/tokens/totptoken.py +0 -703
- edumfa-2.7.2/edumfa/lib/tokens/u2f.py +0 -280
- edumfa-2.7.2/edumfa/lib/tokens/u2ftoken.py +0 -594
- edumfa-2.7.2/edumfa/lib/tokens/vasco.py +0 -187
- edumfa-2.7.2/edumfa/lib/tokens/vascotoken.py +0 -188
- edumfa-2.7.2/edumfa/lib/tokens/webauthn.py +0 -2191
- edumfa-2.7.2/edumfa/lib/tokens/webauthntoken.py +0 -1512
- edumfa-2.7.2/edumfa/lib/tokens/yubicotoken.py +0 -218
- edumfa-2.7.2/edumfa/lib/tokens/yubikeytoken.py +0 -476
- edumfa-2.7.2/edumfa/lib/user.py +0 -805
- edumfa-2.7.2/edumfa/lib/usercache.py +0 -248
- edumfa-2.7.2/edumfa/lib/utils/__init__.py +0 -1559
- edumfa-2.7.2/edumfa/lib/utils/compare.py +0 -223
- edumfa-2.7.2/edumfa/lib/utils/export.py +0 -111
- edumfa-2.7.2/edumfa/messages.pot +0 -2811
- edumfa-2.7.2/edumfa/models.py +0 -3274
- edumfa-2.7.2/edumfa/static/app.js +0 -184
- edumfa-2.7.2/edumfa/static/components/config/controllers/configControllers.js +0 -1285
- edumfa-2.7.2/edumfa/static/components/config/controllers/eduMfaServerController.js +0 -97
- edumfa-2.7.2/edumfa/static/components/config/views/config.html +0 -86
- edumfa-2.7.2/edumfa/static/components/config/views/config.smtp.edit.html +0 -154
- edumfa-2.7.2/edumfa/static/components/config/views/config.token.totp.html +0 -45
- edumfa-2.7.2/edumfa/static/components/dashboard/controllers/dashboardControllers.js +0 -200
- edumfa-2.7.2/edumfa/static/components/login/controllers/loginControllers.js +0 -679
- edumfa-2.7.2/edumfa/static/components/login/views/enter-response.html +0 -34
- edumfa-2.7.2/edumfa/static/components/token/controllers/tokenControllers.js +0 -742
- edumfa-2.7.2/edumfa/static/components/token/controllers/tokenDetailController.js +0 -458
- edumfa-2.7.2/edumfa/static/components/token/factories/token.js +0 -261
- edumfa-2.7.2/edumfa/static/components/token/views/token.details.html +0 -727
- edumfa-2.7.2/edumfa/static/components/token/views/token.enroll.remote.html +0 -54
- edumfa-2.7.2/edumfa/static/components/token/views/token.enroll.totp.html +0 -78
- edumfa-2.7.2/edumfa/static/components/token/views/token.enroll.yubikey.html +0 -47
- edumfa-2.7.2/edumfa/static/components/token/views/token.enrolled.registration.html +0 -18
- edumfa-2.7.2/edumfa/static/components/translation/translations.js +0 -22
- edumfa-2.7.2/edumfa/static/contrib/css/isteven-multi-select.css +0 -299
- edumfa-2.7.2/edumfa/static/contrib/js/jquery.js +0 -10881
- edumfa-2.7.2/edumfa/static/contrib/js/ngmodules/isteven-multi-select.js +0 -1111
- edumfa-2.7.2/edumfa/static/package-lock.json +0 -185
- edumfa-2.7.2/edumfa/static/package.json +0 -30
- edumfa-2.7.2/edumfa/static/templates/baseline.html +0 -17
- edumfa-2.7.2/edumfa/static/templates/documentation.rst +0 -129
- edumfa-2.7.2/edumfa/translations/cs/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/cs/LC_MESSAGES/messages.po +0 -2925
- edumfa-2.7.2/edumfa/translations/de/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/de/LC_MESSAGES/messages.po +0 -3668
- edumfa-2.7.2/edumfa/translations/es/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/es/LC_MESSAGES/messages.po +0 -3530
- edumfa-2.7.2/edumfa/translations/fr/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/fr/LC_MESSAGES/messages.po +0 -3337
- edumfa-2.7.2/edumfa/translations/it/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/it/LC_MESSAGES/messages.po +0 -3058
- edumfa-2.7.2/edumfa/translations/nl/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/nl/LC_MESSAGES/messages.po +0 -3568
- edumfa-2.7.2/edumfa/translations/pl/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/pl/LC_MESSAGES/messages.po +0 -2901
- edumfa-2.7.2/edumfa/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/pt_BR/LC_MESSAGES/messages.po +0 -3421
- edumfa-2.7.2/edumfa/translations/ro/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/ro/LC_MESSAGES/messages.po +0 -2995
- edumfa-2.7.2/edumfa/translations/ru/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/ru/LC_MESSAGES/messages.po +0 -3014
- edumfa-2.7.2/edumfa/translations/si/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/si/LC_MESSAGES/messages.po +0 -2901
- edumfa-2.7.2/edumfa/translations/tr/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/tr/LC_MESSAGES/messages.po +0 -3401
- edumfa-2.7.2/edumfa/translations/zh_Hans/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/zh_Hans/LC_MESSAGES/messages.po +0 -2967
- edumfa-2.7.2/edumfa/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
- edumfa-2.7.2/edumfa/translations/zh_Hant/LC_MESSAGES/messages.po +0 -2972
- edumfa-2.7.2/edumfa/webui/__init__.py +0 -1
- edumfa-2.7.2/edumfa/webui/certificate.py +0 -114
- edumfa-2.7.2/edumfa/webui/login.py +0 -201
- edumfa-2.7.2/edumfa.egg-info/PKG-INFO +0 -921
- edumfa-2.7.2/edumfa.egg-info/SOURCES.txt +0 -858
- edumfa-2.7.2/edumfa.egg-info/requires.txt +0 -108
- edumfa-2.7.2/migrations/env.py +0 -108
- edumfa-2.7.2/migrations/versions/006d4747f858_.py +0 -30
- edumfa-2.7.2/migrations/versions/00762b3f7a60_.py +0 -68
- edumfa-2.7.2/migrations/versions/0c7123345224_.py +0 -38
- edumfa-2.7.2/migrations/versions/0d011e94a8e8_.py +0 -164
- edumfa-2.7.2/migrations/versions/140ba0ca4f07_.py +0 -22
- edumfa-2.7.2/migrations/versions/145ce80decd_.py +0 -30
- edumfa-2.7.2/migrations/versions/14a1bcb10018_.py +0 -28
- edumfa-2.7.2/migrations/versions/19f727d285e2_.py +0 -34
- edumfa-2.7.2/migrations/versions/1a0710df148b_.py +0 -26
- edumfa-2.7.2/migrations/versions/1a69e5e5e2ac_.py +0 -48
- edumfa-2.7.2/migrations/versions/1edda52b619f_.py +0 -32
- edumfa-2.7.2/migrations/versions/204d8d4f351e_.py +0 -27
- edumfa-2.7.2/migrations/versions/205bda834127_.py +0 -44
- edumfa-2.7.2/migrations/versions/20969b4cbf06_.py +0 -46
- edumfa-2.7.2/migrations/versions/2118e566df16_.py +0 -26
- edumfa-2.7.2/migrations/versions/2181294eed0b_.py +0 -32
- edumfa-2.7.2/migrations/versions/22558d9f3178_.py +0 -26
- edumfa-2.7.2/migrations/versions/239995464c48_.py +0 -34
- edumfa-2.7.2/migrations/versions/2551ee982544_.py +0 -37
- edumfa-2.7.2/migrations/versions/2ac117d0a6f5_.py +0 -44
- edumfa-2.7.2/migrations/versions/2c9430cfc66b_.py +0 -60
- edumfa-2.7.2/migrations/versions/307a4fbe8a05_.py +0 -36
- edumfa-2.7.2/migrations/versions/3236a1abf1c6_.py +0 -28
- edumfa-2.7.2/migrations/versions/3429d523e51f_.py +0 -41
- edumfa-2.7.2/migrations/versions/36428afb2457_.py +0 -36
- edumfa-2.7.2/migrations/versions/37e6b49fc686_.py +0 -61
- edumfa-2.7.2/migrations/versions/3ae3c668f444_.py +0 -44
- edumfa-2.7.2/migrations/versions/3ba618f6b820_.py +0 -45
- edumfa-2.7.2/migrations/versions/3c6e9dd7fbac_.py +0 -48
- edumfa-2.7.2/migrations/versions/3d7f8b29cbb1_.py +0 -100
- edumfa-2.7.2/migrations/versions/3f7e8583ea2_.py +0 -38
- edumfa-2.7.2/migrations/versions/4023571658f8_.py +0 -48
- edumfa-2.7.2/migrations/versions/414079706620_.py +0 -41
- edumfa-2.7.2/migrations/versions/4238eac8ccab_.py +0 -83
- edumfa-2.7.2/migrations/versions/449903fb6e35_.py +0 -42
- edumfa-2.7.2/migrations/versions/48ee74b8a7c8_.py +0 -193
- edumfa-2.7.2/migrations/versions/49a04e560d96_.py +0 -34
- edumfa-2.7.2/migrations/versions/4a0aec37e7cf_.py +0 -49
- edumfa-2.7.2/migrations/versions/4d9178fa8336_.py +0 -34
- edumfa-2.7.2/migrations/versions/4f32a4e1bf33_.py +0 -520
- edumfa-2.7.2/migrations/versions/50adc980d625_.py +0 -53
- edumfa-2.7.2/migrations/versions/5402fd96fbca_.py +0 -56
- edumfa-2.7.2/migrations/versions/58e4f7ebb705_.py +0 -26
- edumfa-2.7.2/migrations/versions/59ef3e03bc62_.py +0 -29
- edumfa-2.7.2/migrations/versions/5cb310101a1f_.py +0 -77
- edumfa-2.7.2/migrations/versions/631ec59e1ca6_.py +0 -27
- edumfa-2.7.2/migrations/versions/7d82d8b680a9_.py +0 -29
- edumfa-2.7.2/migrations/versions/849170064430_.py +0 -26
- edumfa-2.7.2/migrations/versions/86f40f535d7c_.py +0 -34
- edumfa-2.7.2/migrations/versions/888b56ed5dcb_.py +0 -40
- edumfa-2.7.2/migrations/versions/89e57ed16379_.py +0 -49
- edumfa-2.7.2/migrations/versions/8d40dbcfda25_.py +0 -35
- edumfa-2.7.2/migrations/versions/9155f0d3d028_.py +0 -100
- edumfa-2.7.2/migrations/versions/a28f2733897b_.py +0 -48
- edumfa-2.7.2/migrations/versions/a63df077051a_.py +0 -27
- edumfa-2.7.2/migrations/versions/a7e91b18a460_.py +0 -69
- edumfa-2.7.2/migrations/versions/b9131d0686eb_.py +0 -92
- edumfa-2.7.2/migrations/versions/cb6d7b7bae63_.py +0 -29
- edumfa-2.7.2/migrations/versions/d2ae8e54b628_.py +0 -69
- edumfa-2.7.2/migrations/versions/d3c0f0403a84_.py +0 -22
- edumfa-2.7.2/migrations/versions/d415d490eb05_.py +0 -33
- edumfa-2.7.2/migrations/versions/d5870fd2f2a4_.py +0 -22
- edumfa-2.7.2/migrations/versions/d6b40a745e5_.py +0 -33
- edumfa-2.7.2/migrations/versions/d756b34061ff_.py +0 -97
- edumfa-2.7.2/migrations/versions/dceb6cd3c41e_.py +0 -55
- edumfa-2.7.2/migrations/versions/e360c56bcf8c_.py +0 -88
- edumfa-2.7.2/migrations/versions/e5cbeb7c177_.py +0 -34
- edumfa-2.7.2/migrations/versions/ef29ba43e290_.py +0 -40
- edumfa-2.7.2/migrations/versions/fa07bd604a75.py +0 -67
- edumfa-2.7.2/migrations/versions/fabcf24d9304_.py +0 -36
- edumfa-2.7.2/migrations/versions/ff26585932ec_.py +0 -45
- edumfa-2.7.2/pyproject.toml +0 -89
- edumfa-2.7.2/requirements.txt +0 -167
- edumfa-2.7.2/setup.py +0 -64
- edumfa-2.7.2/tests/base.py +0 -273
- edumfa-2.7.2/tests/conftest.py +0 -6
- edumfa-2.7.2/tests/ldap3mock.py +0 -783
- edumfa-2.7.2/tests/mscamock.py +0 -81
- edumfa-2.7.2/tests/pkcs11mock.py +0 -196
- edumfa-2.7.2/tests/queuemock.py +0 -74
- edumfa-2.7.2/tests/radiusmock.py +0 -150
- edumfa-2.7.2/tests/redismock.py +0 -120
- edumfa-2.7.2/tests/smppmock.py +0 -172
- edumfa-2.7.2/tests/smtpmock.py +0 -248
- edumfa-2.7.2/tests/test_api_2stepinit.py +0 -669
- edumfa-2.7.2/tests/test_api_applications.py +0 -27
- edumfa-2.7.2/tests/test_api_audit.py +0 -388
- edumfa-2.7.2/tests/test_api_auth.py +0 -905
- edumfa-2.7.2/tests/test_api_caconnector.py +0 -181
- edumfa-2.7.2/tests/test_api_clienttype.py +0 -43
- edumfa-2.7.2/tests/test_api_edumfaserver.py +0 -102
- edumfa-2.7.2/tests/test_api_events.py +0 -722
- edumfa-2.7.2/tests/test_api_lib_policy.py +0 -4659
- edumfa-2.7.2/tests/test_api_lib_utils.py +0 -373
- edumfa-2.7.2/tests/test_api_machineresolver.py +0 -148
- edumfa-2.7.2/tests/test_api_machines.py +0 -768
- edumfa-2.7.2/tests/test_api_machines_serviceid.py +0 -313
- edumfa-2.7.2/tests/test_api_monitoring.py +0 -122
- edumfa-2.7.2/tests/test_api_offline_no_token.py +0 -108
- edumfa-2.7.2/tests/test_api_periodictask.py +0 -298
- edumfa-2.7.2/tests/test_api_policy.py +0 -651
- edumfa-2.7.2/tests/test_api_push_validate.py +0 -993
- edumfa-2.7.2/tests/test_api_radiusserver.py +0 -137
- edumfa-2.7.2/tests/test_api_register.py +0 -177
- edumfa-2.7.2/tests/test_api_roles.py +0 -1505
- edumfa-2.7.2/tests/test_api_serviceids.py +0 -97
- edumfa-2.7.2/tests/test_api_smsgateway.py +0 -289
- edumfa-2.7.2/tests/test_api_smtpserver.py +0 -92
- edumfa-2.7.2/tests/test_api_system.py +0 -1188
- edumfa-2.7.2/tests/test_api_token.py +0 -3724
- edumfa-2.7.2/tests/test_api_tokengroup.py +0 -97
- edumfa-2.7.2/tests/test_api_ttype.py +0 -730
- edumfa-2.7.2/tests/test_api_u2f.py +0 -480
- edumfa-2.7.2/tests/test_api_users.py +0 -631
- edumfa-2.7.2/tests/test_api_validate.py +0 -5985
- edumfa-2.7.2/tests/test_app.py +0 -170
- edumfa-2.7.2/tests/test_db_model.py +0 -1124
- edumfa-2.7.2/tests/test_lib_applications.py +0 -205
- edumfa-2.7.2/tests/test_lib_apps.py +0 -52
- edumfa-2.7.2/tests/test_lib_audit.py +0 -514
- edumfa-2.7.2/tests/test_lib_auth.py +0 -41
- edumfa-2.7.2/tests/test_lib_authcache.py +0 -183
- edumfa-2.7.2/tests/test_lib_caconnector.py +0 -640
- edumfa-2.7.2/tests/test_lib_challenges.py +0 -73
- edumfa-2.7.2/tests/test_lib_clientapplication.py +0 -127
- edumfa-2.7.2/tests/test_lib_config.py +0 -272
- edumfa-2.7.2/tests/test_lib_counter.py +0 -155
- edumfa-2.7.2/tests/test_lib_crypto.py +0 -781
- edumfa-2.7.2/tests/test_lib_edumfaserver.py +0 -246
- edumfa-2.7.2/tests/test_lib_eventhandler_logging.py +0 -161
- edumfa-2.7.2/tests/test_lib_eventhandler_usernotification.py +0 -1590
- edumfa-2.7.2/tests/test_lib_events.py +0 -2907
- edumfa-2.7.2/tests/test_lib_framework.py +0 -68
- edumfa-2.7.2/tests/test_lib_importotp.py +0 -750
- edumfa-2.7.2/tests/test_lib_lifecycle.py +0 -71
- edumfa-2.7.2/tests/test_lib_machine_resolver_ldap.py +0 -172
- edumfa-2.7.2/tests/test_lib_machines.py +0 -228
- edumfa-2.7.2/tests/test_lib_machinetokens.py +0 -210
- edumfa-2.7.2/tests/test_lib_monitoringstats.py +0 -127
- edumfa-2.7.2/tests/test_lib_periodictask.py +0 -479
- edumfa-2.7.2/tests/test_lib_policy.py +0 -1711
- edumfa-2.7.2/tests/test_lib_policydecorator.py +0 -933
- edumfa-2.7.2/tests/test_lib_pooling.py +0 -72
- edumfa-2.7.2/tests/test_lib_queue.py +0 -104
- edumfa-2.7.2/tests/test_lib_radiusserver.py +0 -148
- edumfa-2.7.2/tests/test_lib_realm.py +0 -102
- edumfa-2.7.2/tests/test_lib_recovery.py +0 -127
- edumfa-2.7.2/tests/test_lib_resolver.py +0 -2866
- edumfa-2.7.2/tests/test_lib_serviceid.py +0 -67
- edumfa-2.7.2/tests/test_lib_smsprovider.py +0 -987
- edumfa-2.7.2/tests/test_lib_smtpserver.py +0 -249
- edumfa-2.7.2/tests/test_lib_sqlutils.py +0 -90
- edumfa-2.7.2/tests/test_lib_subscriptions.py +0 -30
- edumfa-2.7.2/tests/test_lib_task_eventcounter.py +0 -59
- edumfa-2.7.2/tests/test_lib_task_simplestats.py +0 -92
- edumfa-2.7.2/tests/test_lib_tasks.py +0 -26
- edumfa-2.7.2/tests/test_lib_token.py +0 -2175
- edumfa-2.7.2/tests/test_lib_tokenclass.py +0 -933
- edumfa-2.7.2/tests/test_lib_tokengroup.py +0 -78
- edumfa-2.7.2/tests/test_lib_tokens_certificate.py +0 -702
- edumfa-2.7.2/tests/test_lib_tokens_daplug.py +0 -615
- edumfa-2.7.2/tests/test_lib_tokens_daypassword.py +0 -666
- edumfa-2.7.2/tests/test_lib_tokens_email.py +0 -512
- edumfa-2.7.2/tests/test_lib_tokens_foureyes.py +0 -90
- edumfa-2.7.2/tests/test_lib_tokens_hotp.py +0 -837
- edumfa-2.7.2/tests/test_lib_tokens_indexedsecret.py +0 -140
- edumfa-2.7.2/tests/test_lib_tokens_motp.py +0 -184
- edumfa-2.7.2/tests/test_lib_tokens_paper.py +0 -70
- edumfa-2.7.2/tests/test_lib_tokens_passwordtoken.py +0 -55
- edumfa-2.7.2/tests/test_lib_tokens_push.py +0 -2684
- edumfa-2.7.2/tests/test_lib_tokens_questionnaire.py +0 -141
- edumfa-2.7.2/tests/test_lib_tokens_radius.py +0 -369
- edumfa-2.7.2/tests/test_lib_tokens_registration.py +0 -82
- edumfa-2.7.2/tests/test_lib_tokens_remote.py +0 -241
- edumfa-2.7.2/tests/test_lib_tokens_sms.py +0 -514
- edumfa-2.7.2/tests/test_lib_tokens_spass.py +0 -53
- edumfa-2.7.2/tests/test_lib_tokens_ssh.py +0 -133
- edumfa-2.7.2/tests/test_lib_tokens_tan.py +0 -131
- edumfa-2.7.2/tests/test_lib_tokens_tiqr.py +0 -742
- edumfa-2.7.2/tests/test_lib_tokens_totp.py +0 -812
- edumfa-2.7.2/tests/test_lib_tokens_u2f.py +0 -368
- edumfa-2.7.2/tests/test_lib_tokens_vasco.py +0 -283
- edumfa-2.7.2/tests/test_lib_tokens_webauthn.py +0 -961
- edumfa-2.7.2/tests/test_lib_tokens_yubico.py +0 -114
- edumfa-2.7.2/tests/test_lib_tokens_yubikey.py +0 -253
- edumfa-2.7.2/tests/test_lib_user.py +0 -551
- edumfa-2.7.2/tests/test_lib_usercache.py +0 -605
- edumfa-2.7.2/tests/test_lib_utils.py +0 -1030
- edumfa-2.7.2/tests/test_lib_utils_compare.py +0 -106
- edumfa-2.7.2/tests/test_mock_ldap3.py +0 -944
- edumfa-2.7.2/tests/test_resolver_realm.py +0 -79
- edumfa-2.7.2/tests/test_scripts.py +0 -260
- edumfa-2.7.2/tests/test_ui_certificate.py +0 -126
- edumfa-2.7.2/tests/test_ui_login.py +0 -148
- edumfa-2.7.2/tests/testdata/fancytoken.py +0 -21
- edumfa-2.7.2/tools/creategoogleauthenticator-file +0 -40
- edumfa-2.7.2/tools/edumfa-convert-base32.py +0 -55
- edumfa-2.7.2/tools/edumfa-create-ad-users +0 -100
- edumfa-2.7.2/tools/edumfa-create-certificate +0 -84
- edumfa-2.7.2/tools/edumfa-create-pwidresolver-user +0 -89
- edumfa-2.7.2/tools/edumfa-create-sqlidresolver-user +0 -77
- edumfa-2.7.2/tools/edumfa-create-sqlidresolver-user.1 +0 -38
- edumfa-2.7.2/tools/edumfa-cron +0 -190
- edumfa-2.7.2/tools/edumfa-expired-users +0 -169
- edumfa-2.7.2/tools/edumfa-export-edumfa-counter.py +0 -55
- edumfa-2.7.2/tools/edumfa-export-linotp-counter.py +0 -112
- edumfa-2.7.2/tools/edumfa-fix-access-rights +0 -89
- edumfa-2.7.2/tools/edumfa-get-serial +0 -100
- edumfa-2.7.2/tools/edumfa-get-unused-tokens +0 -145
- edumfa-2.7.2/tools/edumfa-migrate-linotp.py +0 -590
- edumfa-2.7.2/tools/edumfa-pip-update +0 -88
- edumfa-2.7.2/tools/edumfa-queue-huey +0 -154
- edumfa-2.7.2/tools/edumfa-schema-upgrade +0 -22
- edumfa-2.7.2/tools/edumfa-standalone +0 -323
- edumfa-2.7.2/tools/edumfa-sync-owncloud.py +0 -218
- edumfa-2.7.2/tools/edumfa-token-janitor +0 -690
- edumfa-2.7.2/tools/edumfa-update-counter.py +0 -107
- edumfa-2.7.2/tools/edumfa-update-linotp-counter.py +0 -139
- edumfa-2.7.2/tools/edumfa-user-action +0 -141
- edumfa-2.7.2/tools/edumfa-usercache-cleanup +0 -101
- edumfa-2.7.2/tools/getgooglecodes +0 -48
- edumfa-2.7.2/tools/ssha.py +0 -32
- {edumfa-2.7.2 → edumfa-2.9.0}/AUTHORS.md +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/LICENSE +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/MANIFEST.in +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/README.rst +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/README.md +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/apache/edumfaapp.wsgi +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/apache/sites-available/edumfa-venv.conf +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/apache/sites-available/edumfa.conf +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/config/freeradius2/edumfa +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/config/freeradius2/mods-perl-edumfa +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/config/freeradius3/edumfa +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/config/freeradius3/mods-perl-edumfa +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/crontab/edumfa +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/edumfa/dictionary +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/edumfa_radius.pm +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/gunicorn/edumfaapp.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/nginx/sites-available/edumfa +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/rlm_perl.ini +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu/clean +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu/compat +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu/copyright +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu/source/format +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu/source/options +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/changelog +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/compat +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/control +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/copyright +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/edumfa-radius.install +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/edumfa-radius.postinst +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/edumfa-radius.postrm +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/rules +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/source/format +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/clean +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/compat +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/edumfa-apache2.install +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/edumfa-apache2.postrm +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/edumfa-nginx.install +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/edumfa-nginx.postrm +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/source/format +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/source/options +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/deploy/uwsgi/apps-available/edumfa.xml +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/api/lib/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/babel.cfg +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/commands/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/commands/manage/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/auditmodules/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/cache/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/caconnectors/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/caconnectors/baseca.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/eventhandler/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/monitoringmodules/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/pinhandling/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/queues/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/security/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/security/password/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/task/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/task/base.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/tokens/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/README.md +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/audit/controllers/auditControllers.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/audit/factories/audit.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/audit/states/states.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/audit/views/audit.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/audit/views/audit.log.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/components/controllers/componentControllers.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/components/factories/component.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/components/states/states.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/components/views/component.clienttype.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/components/views/component.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/eventController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/ldapMachineResolverController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/periodicTaskController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/radiusServerController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/serviceidController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/smsgatewayController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/smtpServerController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/tokengroupController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/factories/config.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/states/states.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.caconnectors.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.caconnectors.local.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.caconnectors.microsoft.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.edumfaserver.edit.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.edumfaserver.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.events.details.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.events.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.events.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.machineresolvers.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.mresolvers.hosts.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.mresolvers.ldap.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.mresolvers.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.periodictasks.details.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.periodictasks.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.periodictasks.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.policies.details.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.policies.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.policies.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.radius.edit.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.radius.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.realms.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.realms.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.http.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.ldap.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.passwd.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.scim.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.sql.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.serviceid.edit.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.serviceid.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.smsgateway.edit.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.smsgateway.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.smtp.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.system.doc.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.system.edit.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.system.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.daypassword.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.email.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.hotp.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.question.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.radius.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.remote.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.sms.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.tiqr.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.u2f.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.webauthn.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.yubico.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.yubikey.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.tokengroup.edit.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.tokengroup.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.tokens.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/dialog.confirm_delete.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dashboard/states/states.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dashboard/views/dashboard.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dialogs/views/dialog.about.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dialogs/views/dialog.autocreate_realm.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dialogs/views/dialog.lock.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dialogs/views/dialog.no.token.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dialogs/views/dialog.welcome.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/controllers/directives.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.assigntoken.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.assignuser.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.attachmachine.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.attachtoken.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.csvdownload.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.filter.table.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.policyconditions.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.tokendata.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/filters/filters.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/factories/auth.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/factories/u2f.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/factories/webauthn.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/states/states.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/views/login.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/views/offline.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/views/pinchange.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/controllers/machineController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/controllers/machineDetailsController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/factories/machine.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/states/states.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/views/machine.details.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/views/machine.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/views/machine.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/recovery/controllers/recoveryControllers.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/recovery/factories/recoveryFactory.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/recovery/states/states.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/recovery/views/recovery.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/recovery/views/recovery.reset.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/register/controllers/registerControllers.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/register/factories/registerFactory.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/register/states/states.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/register/views/register.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/controllers/tokenApplicationsController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/controllers/tokenChallengesController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/controllers/tokenGetSerialController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/controllers/tokenLostController.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/factories/validate.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/states/states.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/dialog.ask_token_delete.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.applications.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.applications.offline.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.applications.ssh.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.assign.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.challenges.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.display.apps.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.4eyes.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.applspec.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.certificate.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.daypassword.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.edupush.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.email.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.hotp.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.indexedsecret.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.motp.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.paper.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.push.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.question.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.radius.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.registration.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.sms.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.spass.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.sshkey.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.tan.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.tiqr.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.u2f.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.vasco.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.webauthn.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.yubico.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.applspec.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.certificate.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.daypassword.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.edupush.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.hotp.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.motp.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.paper.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.push.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.tan.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.tiqr.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.totp.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.u2f.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.webauthn.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.getserial.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.import.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.lost.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/controllers/userControllers.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/factories/user.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/states/states.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/dialog.ask_user_delete.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.add.dynamic.form.fields.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.add.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.details.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.list.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.password.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/angular-inform.css +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/angular-inform.css.map +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/bootstrap-theme.css +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/bootstrap-theme.css.map +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/bootstrap.css +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/bootstrap.css.map +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/hotkeys.css +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.eot +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.svg +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.ttf +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff2 +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/angular-inform.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/angular-inform.js.map +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/angular.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/bootstrap.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/hotkeys.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/angular-gettext.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/angular-idle.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/angular-sanitize.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js.map +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/ng-file-upload.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/u2f-api.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ui-bootstrap-tpls.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/webauthn-client/edumfa-webauthn.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/baseline.css +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/content.css +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/eduMFA-logo.png +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/highlight.css +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/menu.css +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/papertoken.css +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/signin.css +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/table-ui.css +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/customize/README.rst +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/favicon.png +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/img/FIDO-U2F-Security-Key-444x444.png +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/img/plugup.jpg +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/img/solokeys.png +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/img/u2fzero.png +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/providers/errorMessageProvider.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/providers/versioningProvider.js +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/cert_request_form.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/deactivated.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/footer.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/header.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/index.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/menu.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/token_enrolled.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa.egg-info/dependency_links.txt +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa.egg-info/entry_points.txt +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/edumfa.egg-info/top_level.txt +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/migrations/README +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/migrations/alembic.ini +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/migrations/script.py.mako +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/setup.cfg +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/FIDO-U2F-Security-Key-444x444.png +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/NetKnights.pem +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/__init__.py +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/altstatic/templates/testui.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/attestation/yubico.pem +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/audit.sqlite +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/cacert.pem +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/cakey.pem +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/index.txt +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/index.txt.attr +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/openssl.cnf +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/serial +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/templates.yaml +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/dictionary +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/does_not_exist +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/emailtemplate.html +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/empty.oath +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/enckey +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/enckey.enc +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/event.conf +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/firebase-test.json +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/google-services.json +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/gpg/public.pem +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/gpg/pubring.gpg +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/gpg/random_seed +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/gpg/secring.gpg +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/gpg/trustdb.gpg +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/hosts +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/import.oath +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/import.oath.asc +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/jwt_sign.key +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/logging.cfg +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/logging.yml +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/logging_broken.yaml +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/msca-connector/ca.pem +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/msca-connector/privacyidea-encrypted.key +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/msca-connector/privacyidea.key +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/msca-connector/privacyidea.pem +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ocra.csv +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/passwd +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/passwd-duplicate-name +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/passwords +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/policy.cfg +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/policy.conf +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/policy_empty_file.cfg +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/private.pem +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/pskc-aes.xml +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/pskc-password.xml +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/public.pem +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/pw-2nd-resolver +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/scripts/fail.sh +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/scripts/ls.sh +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/scripts/success.sh +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/test.sub +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/test2.sub +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/testuser-api.sqlite +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/testuser.sqlite +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/testusercache.sqlite +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/trusted_attestation_roots/solokeys_device_attestation_ca.pem +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/trusted_attestation_roots/yubico_u2f_device_attestation_ca.pem +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/yubico-oath-long.csv +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/yubico-oath.csv +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/yubico.csv +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-authorizedkeys +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-convert-token +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-convert-token.1 +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-convert-xml-to-csv +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-create-ad-users.1 +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-create-certificate.1 +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-create-pwidresolver-user.1 +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-create-userdb +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-create-userdb.1 +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-diag +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-fetchssh +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-fetchssh.1 +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-fix-access-rights.1 +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-pip-update.1 +0 -0
- {edumfa-2.7.2 → edumfa-2.9.0}/tools/reset-edumfa +0 -0
edumfa-2.9.0/PKG-INFO
ADDED
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: edumfa
|
|
3
|
+
Version: 2.9.0
|
|
4
|
+
Summary: eduMFA: identity, multifactor authentication (OTP), authorization, audit
|
|
5
|
+
Author-email: "edumfa.io" <edumfa@listserv.dfn.de>
|
|
6
|
+
License-Expression: AGPL-3.0-only
|
|
7
|
+
Project-URL: Homepage, https://edumfa.io/
|
|
8
|
+
Project-URL: Documentation, https://edumfa.readthedocs.io/
|
|
9
|
+
Project-URL: Repository, https://github.com/eduMFA/eduMFA.git
|
|
10
|
+
Project-URL: Issues, https://github.com/eduMFA/eduMFA/issues
|
|
11
|
+
Keywords: OTP,two factor authentication,management,security
|
|
12
|
+
Classifier: Framework :: Flask
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Topic :: Internet
|
|
15
|
+
Classifier: Topic :: Security
|
|
16
|
+
Classifier: Topic :: System :: Systems Administration :: Authentication/Directory
|
|
17
|
+
Classifier: Programming Language :: Python
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Requires-Python: <3.15,>=3.10
|
|
25
|
+
Description-Content-Type: text/x-rst
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
License-File: AUTHORS.md
|
|
28
|
+
Requires-Dist: alembic==1.18.0
|
|
29
|
+
Requires-Dist: argon2-cffi==25.1.0
|
|
30
|
+
Requires-Dist: argon2-cffi-bindings==25.1.0
|
|
31
|
+
Requires-Dist: async-timeout==5.0.1
|
|
32
|
+
Requires-Dist: babel==2.17.0
|
|
33
|
+
Requires-Dist: bcrypt==4.3.0
|
|
34
|
+
Requires-Dist: beautifulsoup4==4.14.3
|
|
35
|
+
Requires-Dist: blinker==1.9.0
|
|
36
|
+
Requires-Dist: cachetools==6.2.4
|
|
37
|
+
Requires-Dist: cbor2==5.8.0
|
|
38
|
+
Requires-Dist: certifi==2026.1.4
|
|
39
|
+
Requires-Dist: cffi==2.0.0
|
|
40
|
+
Requires-Dist: charset-normalizer==3.4.4
|
|
41
|
+
Requires-Dist: click==8.3.1
|
|
42
|
+
Requires-Dist: configobj==5.0.9
|
|
43
|
+
Requires-Dist: croniter==6.0.0
|
|
44
|
+
Requires-Dist: cryptography==46.0.3
|
|
45
|
+
Requires-Dist: defusedxml==0.7.1
|
|
46
|
+
Requires-Dist: flask==3.1.2
|
|
47
|
+
Requires-Dist: flask-babel==4.0.0
|
|
48
|
+
Requires-Dist: flask-migrate==4.1.0
|
|
49
|
+
Requires-Dist: flask-sqlalchemy==3.1.1
|
|
50
|
+
Requires-Dist: google-auth==2.47.0
|
|
51
|
+
Requires-Dist: grpcio==1.76.0
|
|
52
|
+
Requires-Dist: huey==2.6.0
|
|
53
|
+
Requires-Dist: idna==3.11
|
|
54
|
+
Requires-Dist: importlib-metadata==8.7.0
|
|
55
|
+
Requires-Dist: itsdangerous==2.2.0
|
|
56
|
+
Requires-Dist: jinja2==3.1.6
|
|
57
|
+
Requires-Dist: ldap3==2.9.1
|
|
58
|
+
Requires-Dist: lxml==6.0.2
|
|
59
|
+
Requires-Dist: mako==1.3.10
|
|
60
|
+
Requires-Dist: markupsafe==3.0.3
|
|
61
|
+
Requires-Dist: netaddr==1.3.0
|
|
62
|
+
Requires-Dist: passlib==1.7.4
|
|
63
|
+
Requires-Dist: pyasn1==0.6.1
|
|
64
|
+
Requires-Dist: pyasn1-modules==0.4.2
|
|
65
|
+
Requires-Dist: pycparser==2.23
|
|
66
|
+
Requires-Dist: pydash==8.0.5
|
|
67
|
+
Requires-Dist: pyjwt==2.10.1
|
|
68
|
+
Requires-Dist: pymysql==1.1.2
|
|
69
|
+
Requires-Dist: pyopenssl==25.3.0
|
|
70
|
+
Requires-Dist: pyrad==2.4
|
|
71
|
+
Requires-Dist: python-dateutil==2.9.0.post0
|
|
72
|
+
Requires-Dist: python-gnupg==0.5.6
|
|
73
|
+
Requires-Dist: pytz==2025.2
|
|
74
|
+
Requires-Dist: pyyaml==6.0.3
|
|
75
|
+
Requires-Dist: redis==7.1.0
|
|
76
|
+
Requires-Dist: requests==2.32.5
|
|
77
|
+
Requires-Dist: rsa==4.9.1
|
|
78
|
+
Requires-Dist: segno==1.6.6
|
|
79
|
+
Requires-Dist: six==1.17.0
|
|
80
|
+
Requires-Dist: smpplib==2.2.4
|
|
81
|
+
Requires-Dist: soupsieve==2.8.1
|
|
82
|
+
Requires-Dist: sqlalchemy==2.0.45
|
|
83
|
+
Requires-Dist: typing-extensions==4.15.0
|
|
84
|
+
Requires-Dist: urllib3==2.6.3
|
|
85
|
+
Requires-Dist: werkzeug==3.1.5
|
|
86
|
+
Requires-Dist: zipp==3.23.0
|
|
87
|
+
Requires-Dist: setuptools==80.9.0
|
|
88
|
+
Provides-Extra: lint
|
|
89
|
+
Requires-Dist: ruff==0.14.11; extra == "lint"
|
|
90
|
+
Provides-Extra: docs
|
|
91
|
+
Requires-Dist: furo==2025.12.19; extra == "docs"
|
|
92
|
+
Requires-Dist: docutils==0.21.2; extra == "docs"
|
|
93
|
+
Requires-Dist: imagesize==1.4.1; extra == "docs"
|
|
94
|
+
Requires-Dist: packaging==25.0; extra == "docs"
|
|
95
|
+
Requires-Dist: pyenchant==3.3.0; extra == "docs"
|
|
96
|
+
Requires-Dist: Pygments==2.19.2; extra == "docs"
|
|
97
|
+
Requires-Dist: snowballstemmer==3.0.1; extra == "docs"
|
|
98
|
+
Requires-Dist: Sphinx==9.0.4; python_version >= "3.11" and extra == "docs"
|
|
99
|
+
Requires-Dist: sphinxcontrib-applehelp==2.0.0; extra == "docs"
|
|
100
|
+
Requires-Dist: sphinxcontrib-devhelp==2.0.0; extra == "docs"
|
|
101
|
+
Requires-Dist: sphinxcontrib-htmlhelp==2.1.0; extra == "docs"
|
|
102
|
+
Requires-Dist: sphinxcontrib-httpdomain==1.8.1; extra == "docs"
|
|
103
|
+
Requires-Dist: sphinxcontrib-jsmath==1.0.1; extra == "docs"
|
|
104
|
+
Requires-Dist: sphinxcontrib-qthelp==2.0.0; extra == "docs"
|
|
105
|
+
Requires-Dist: sphinxcontrib-serializinghtml==2.0.0; extra == "docs"
|
|
106
|
+
Requires-Dist: sphinxcontrib-spelling==8.0.2; python_version >= "3.10" and extra == "docs"
|
|
107
|
+
Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
|
|
108
|
+
Requires-Dist: sphinx-inline-tabs==2025.12.21.14; extra == "docs"
|
|
109
|
+
Provides-Extra: test
|
|
110
|
+
Requires-Dist: attrs==25.4.0; extra == "test"
|
|
111
|
+
Requires-Dist: coverage==7.13.1; extra == "test"
|
|
112
|
+
Requires-Dist: exceptiongroup==1.3.1; extra == "test"
|
|
113
|
+
Requires-Dist: iniconfig==2.3.0; extra == "test"
|
|
114
|
+
Requires-Dist: mock==5.2.0; extra == "test"
|
|
115
|
+
Requires-Dist: packaging==25.0; extra == "test"
|
|
116
|
+
Requires-Dist: pluggy==1.6.0; extra == "test"
|
|
117
|
+
Requires-Dist: pyparsing==3.3.1; extra == "test"
|
|
118
|
+
Requires-Dist: pytest==9.0.2; extra == "test"
|
|
119
|
+
Requires-Dist: pytest-cov==7.0.0; extra == "test"
|
|
120
|
+
Requires-Dist: pytest-github-actions-annotate-failures==0.3.0; extra == "test"
|
|
121
|
+
Requires-Dist: responses==0.25.8; extra == "test"
|
|
122
|
+
Requires-Dist: testfixtures==8.3.0; extra == "test"
|
|
123
|
+
Requires-Dist: tomli==2.4.0; extra == "test"
|
|
124
|
+
Requires-Dist: types-PyYAML==6.0.12.20250915; extra == "test"
|
|
125
|
+
Provides-Extra: postgres
|
|
126
|
+
Requires-Dist: psycopg2==2.9.11; extra == "postgres"
|
|
127
|
+
Provides-Extra: hsm
|
|
128
|
+
Requires-Dist: PyKCS11==1.5.18; extra == "hsm"
|
|
129
|
+
Provides-Extra: kerberos
|
|
130
|
+
Requires-Dist: gssapi==1.10.1; extra == "kerberos"
|
|
131
|
+
Provides-Extra: grpc
|
|
132
|
+
Requires-Dist: protobuf==6.33.4; extra == "grpc"
|
|
133
|
+
Requires-Dist: google==3.0.0; extra == "grpc"
|
|
134
|
+
Dynamic: license-file
|
|
135
|
+
|
|
136
|
+
eduMFA
|
|
137
|
+
===========
|
|
138
|
+
|
|
139
|
+
.. image:: https://codecov.io/gh/eduMFA/eduMFA/coverage.svg?branch=main
|
|
140
|
+
:target: https://codecov.io/gh/eduMFA/eduMFA?branch=main
|
|
141
|
+
|
|
142
|
+
.. image:: https://img.shields.io/pypi/v/eduMFA.svg
|
|
143
|
+
:alt: Latest Version
|
|
144
|
+
:target: https://pypi.python.org/pypi/eduMFA/#history
|
|
145
|
+
|
|
146
|
+
.. image:: https://img.shields.io/pypi/pyversions/edumfa.svg
|
|
147
|
+
:alt: PyPI - Python Version
|
|
148
|
+
:target: https://pypi.python.org/pypi/edumfa/
|
|
149
|
+
|
|
150
|
+
.. image:: https://img.shields.io/github/license/edumfa/edumfa.svg
|
|
151
|
+
:alt: License
|
|
152
|
+
:target: https://pypi.python.org/pypi/edumfa/
|
|
153
|
+
|
|
154
|
+
.. image:: https://readthedocs.org/projects/edumfa/badge/?version=latest
|
|
155
|
+
:alt: Documentation
|
|
156
|
+
:target: http://edumfa.readthedocs.org/en/latest/
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
eduMFA is an open solution for strong two-factor authentication like
|
|
160
|
+
OTP tokens, SMS, smartphones or SSH keys.
|
|
161
|
+
Using eduMFA you can enhance your existing applications like local login
|
|
162
|
+
(PAM, Windows Credential Provider),
|
|
163
|
+
VPN, remote access, SSH connections, access to websites or web portals with
|
|
164
|
+
a second factor during authentication. Thus boosting the security of your
|
|
165
|
+
existing applications.
|
|
166
|
+
|
|
167
|
+
The project eduMFA is based on the privacyIDEA Project and aims to provide up-to-date multifactor authentication for academic institutions.
|
|
168
|
+
|
|
169
|
+
Overview
|
|
170
|
+
========
|
|
171
|
+
|
|
172
|
+
eduMFA runs as an additional service in your network, and you can connect different
|
|
173
|
+
applications to eduMFA.
|
|
174
|
+
|
|
175
|
+
eduMFA does not bind you to any decision of the authentication
|
|
176
|
+
protocol, nor does it dictate you where your user information should be
|
|
177
|
+
stored. This is achieved by its totally modular architecture.
|
|
178
|
+
eduMFA is not only open as far as its modular architecture is
|
|
179
|
+
concerned. But eduMFA is completely licensed under the AGPLv3.
|
|
180
|
+
|
|
181
|
+
It supports a wide variety of authentication devices like OTP tokens
|
|
182
|
+
(HMAC, HOTP, TOTP, OCRA, mOTP), Yubikey (HOTP, TOTP, AES), FIDO U2F, as well
|
|
183
|
+
as FIDO2 WebAuthn devices like Yubikey and Plug-Up, smartphone Apps like Google
|
|
184
|
+
Authenticator, FreeOTP, Token2 or TiQR, SMS, Email, SSH keys, x509 certificates
|
|
185
|
+
and Registration Codes for easy deployment.
|
|
186
|
+
|
|
187
|
+
eduMFA is based on Flask and SQLAlchemy as the python backend. The
|
|
188
|
+
web UI is based on angularJS and bootstrap.
|
|
189
|
+
A MachineToken design lets you assign tokens to machines. Thus, you can use
|
|
190
|
+
your Yubikey to unlock LUKS, assign SSH keys to SSH servers or use Offline OTP
|
|
191
|
+
with PAM.
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
Setup
|
|
196
|
+
=====
|
|
197
|
+
|
|
198
|
+
For setting up the system to *run* it, please read install instructions
|
|
199
|
+
at `edumfa.readthedocs.io <http://edumfa.readthedocs.io/en/latest/installation/index.html>`_.
|
|
200
|
+
|
|
201
|
+
If you want to setup a development environment start like this::
|
|
202
|
+
|
|
203
|
+
git clone https://github.com/edumfa/edumfa.git
|
|
204
|
+
cd edumfa
|
|
205
|
+
virtualenv venv
|
|
206
|
+
source venv/bin/activate
|
|
207
|
+
pip install .
|
|
208
|
+
|
|
209
|
+
.. _testing_env:
|
|
210
|
+
|
|
211
|
+
You may additionally want to set up your environment for testing, by adding the
|
|
212
|
+
additional dependencies::
|
|
213
|
+
|
|
214
|
+
pip install .[test]
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
Getting and updating submodules
|
|
218
|
+
===============================
|
|
219
|
+
|
|
220
|
+
The client-side library for the registering and signing of WebAuthn-Credentials
|
|
221
|
+
resides in a submodule.
|
|
222
|
+
|
|
223
|
+
To fetch all submodules for this repository, run::
|
|
224
|
+
|
|
225
|
+
git submodule update --init --recursive
|
|
226
|
+
|
|
227
|
+
When pulling changes from upstream later, you can automatically update any outdated
|
|
228
|
+
submodules, by running::
|
|
229
|
+
|
|
230
|
+
git pull --recurse-submodules
|
|
231
|
+
|
|
232
|
+
Running it
|
|
233
|
+
==========
|
|
234
|
+
|
|
235
|
+
First You need to create a `config-file <https://edumfa.readthedocs.io/en/latest/installation/system/inifile.html>`_.
|
|
236
|
+
|
|
237
|
+
Then create the database tables and the encryption key::
|
|
238
|
+
|
|
239
|
+
./edumfa-manage create_tables
|
|
240
|
+
./edumfa-manage create_enckey
|
|
241
|
+
|
|
242
|
+
If You want to keep the development database upgradable, You should `stamp
|
|
243
|
+
<https://edumfa.readthedocs.io/en/latest/installation/upgrade.html>`_ it
|
|
244
|
+
to simplify updates::
|
|
245
|
+
|
|
246
|
+
./edumfa-manage db stamp head -d migrations/
|
|
247
|
+
|
|
248
|
+
Create the key for the audit log::
|
|
249
|
+
|
|
250
|
+
./edumfa-manage create_audit_keys
|
|
251
|
+
|
|
252
|
+
Create the first administrator::
|
|
253
|
+
|
|
254
|
+
./edumfa-manage admin add <username>
|
|
255
|
+
|
|
256
|
+
Run it::
|
|
257
|
+
|
|
258
|
+
./edumfa-manage runserver
|
|
259
|
+
|
|
260
|
+
Now you can connect to ``http://localhost:5000`` with your browser and login
|
|
261
|
+
as administrator.
|
|
262
|
+
|
|
263
|
+
Run tests
|
|
264
|
+
=========
|
|
265
|
+
|
|
266
|
+
If you have followed the steps above to set up your
|
|
267
|
+
`environment for testing <#testing-env>`__, running the test suite should be as
|
|
268
|
+
easy as running `pytest <http://pytest.org/>`_ with the following options::
|
|
269
|
+
|
|
270
|
+
python -m pytest -v --cov=eduMFA --cov-report=html tests/
|
|
271
|
+
|
|
272
|
+
Contributing
|
|
273
|
+
============
|
|
274
|
+
|
|
275
|
+
There are a lot of different ways to contribute to eduMFA, even
|
|
276
|
+
if you are not a developer.
|
|
277
|
+
|
|
278
|
+
If you found a security vulnerability please report it to us using the reporting form provided by GitHub
|
|
279
|
+
|
|
280
|
+
You can find detailed information about contributing here:
|
|
281
|
+
https://github.com/eduMFA/eduMFA/blob/main/CONTRIBUTING.md
|
|
282
|
+
|
|
283
|
+
Code structure
|
|
284
|
+
==============
|
|
285
|
+
|
|
286
|
+
The database models are defined in ``models.py`` and tested in
|
|
287
|
+
tests/test_db_model.py.
|
|
288
|
+
|
|
289
|
+
Based on the database models there are the libraries ``lib/config.py`` which is
|
|
290
|
+
responsible for basic configuration in the database table ``config``.
|
|
291
|
+
And the library ``lib/resolver.py`` which provides functions for the database
|
|
292
|
+
table ``resolver``. This is tested in tests/test_lib_resolver.py.
|
|
293
|
+
|
|
294
|
+
Based on the resolver there is the library ``lib/realm.py`` which provides
|
|
295
|
+
functions
|
|
296
|
+
for the database table ``realm``. Several resolvers are combined into a realm.
|
|
297
|
+
|
|
298
|
+
Based on the realm there is the library ``lib/user.py`` which provides functions
|
|
299
|
+
for users. There is no database table user, since users are dynamically read
|
|
300
|
+
from the user sources like SQL, LDAP, SCIM or flat files.
|
|
301
|
+
|
|
302
|
+
Versioning
|
|
303
|
+
==========
|
|
304
|
+
eduMFA adheres to `Semantic Versioning <http://semver.org/>`_.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from os import getenv
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def get_content_from_file(path: str) -> str:
|
|
5
|
+
"""Return the normalized content from a path.
|
|
6
|
+
|
|
7
|
+
:param path: The path to read the file from.
|
|
8
|
+
:return: The content of the file stripped of newlines.
|
|
9
|
+
:raises FileNotFoundError: If the file at path can't be found.
|
|
10
|
+
"""
|
|
11
|
+
with open(path) as fp:
|
|
12
|
+
return fp.read().strip()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _getenv(key: str, default: str | None) -> str:
|
|
16
|
+
"""
|
|
17
|
+
Get an environment variable and raise an exception if it does not exist and
|
|
18
|
+
no default is given.
|
|
19
|
+
|
|
20
|
+
:param key: The environment variable to get.
|
|
21
|
+
:param default: The value to return if the environment variable doesn't
|
|
22
|
+
exist.
|
|
23
|
+
:return: The environment variable's value or the default if given.
|
|
24
|
+
:raises ValueError: If the variable is not set and there is no default
|
|
25
|
+
value.
|
|
26
|
+
"""
|
|
27
|
+
value = getenv(key, default)
|
|
28
|
+
if not value:
|
|
29
|
+
raise ValueError(f"Environment variable '{key}' not set! Can't start...")
|
|
30
|
+
else:
|
|
31
|
+
return value
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def get_var(key: str, default: str | None = None) -> str:
|
|
35
|
+
"""
|
|
36
|
+
Decide whether to get the variable from the environment or a file,
|
|
37
|
+
depending on if there is a environment variable with a _FILE-suffix
|
|
38
|
+
which overrides the environment variable without it.
|
|
39
|
+
|
|
40
|
+
:param key: The environment variable to get.
|
|
41
|
+
:param default: The value to return if the environment variable doesn't
|
|
42
|
+
exist.
|
|
43
|
+
:return: The variable's value or the default if given.
|
|
44
|
+
:raises ValueError: If the variable is not set and there is no default
|
|
45
|
+
value.
|
|
46
|
+
"""
|
|
47
|
+
path = getenv(f"{key}_FILE")
|
|
48
|
+
if path:
|
|
49
|
+
return get_content_from_file(path)
|
|
50
|
+
return _getenv(key, default)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
SQLALCHEMY_DATABASE_URI = f"{get_var('DB_DRIVER')}://{get_var('DB_USER')}:{get_var('DB_PASSWORD')}@{get_var('DB_HOSTNAME')}/{get_var('DB_DATABASE')}"
|
|
54
|
+
SUPERUSER_REALM = get_var("SUPERUSER_REALM", "super,administrators").split(",")
|
|
55
|
+
SECRET_KEY = get_var("SECRET_KEY")
|
|
56
|
+
EDUMFA_PEPPER = get_var("EDUMFA_PEPPER")
|
|
57
|
+
EDUMFA_ENCFILE = "/etc/edumfa/enckey"
|
|
58
|
+
EDUMFA_AUDIT_KEY_PRIVATE = "/etc/edumfa/private.pem"
|
|
59
|
+
EDUMFA_AUDIT_KEY_PUBLIC = "/etc/edumfa/public.pem"
|
|
60
|
+
EDUMFA_LOGFILE = "/var/log/edumfa/edumfa.log"
|
|
61
|
+
EDUMFA_LOGCONFIG = "/etc/edumfa/logging.yml"
|
|
62
|
+
EDUMFA_UI_DEACTIVATED = get_var("EDUMFA_UI_DEACTIVATED", "False") == "True"
|
|
63
|
+
EDUMFA_AUDIT_SQL_TRUNCATE = True
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
GEN_PWD="$(openssl rand -base64 42)"
|
|
5
|
+
EDUMFA_ADMIN_USER="${EDUMFA_ADMIN_USER:-admin}"
|
|
6
|
+
EDUMFA_ADMIN_PASS="${EDUMFA_ADMIN_PASS:-$GEN_PWD}"
|
|
7
|
+
|
|
8
|
+
# Make sure the config is working by executing it once.
|
|
9
|
+
python3 "/etc/edumfa/edumfa.cfg"
|
|
10
|
+
|
|
11
|
+
# Create enckey if doesn't exist yet
|
|
12
|
+
edumfa-manage -q create_enckey || true
|
|
13
|
+
|
|
14
|
+
# Create audit keys if they don't exist yet
|
|
15
|
+
edumfa-manage -q create_audit_keys || true
|
|
16
|
+
|
|
17
|
+
# Create DB
|
|
18
|
+
echo "Creating DB"
|
|
19
|
+
# FIXME: this creates a exception trace on every attempt
|
|
20
|
+
attempts=10
|
|
21
|
+
until edumfa-manage -q create_tables
|
|
22
|
+
do
|
|
23
|
+
if [[ $attempts -eq 0 ]]; then
|
|
24
|
+
echo "Exhausted database connection tries. Stopping."
|
|
25
|
+
exit 1
|
|
26
|
+
else
|
|
27
|
+
echo "Cannot connect to database. Trying again..."
|
|
28
|
+
sleep 3
|
|
29
|
+
attempts=$((attempts-1))
|
|
30
|
+
fi
|
|
31
|
+
done
|
|
32
|
+
|
|
33
|
+
# Check and stamp DB
|
|
34
|
+
STAMP=$(edumfa-manage -q db current -d /usr/local/lib/edumfa/migrations)
|
|
35
|
+
if [[ -z "${STAMP//Running online/}" ]]; then
|
|
36
|
+
edumfa-manage -q db stamp head -d /usr/local/lib/edumfa/migrations
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# Upgrading DB
|
|
40
|
+
echo "Upgrading Database"
|
|
41
|
+
edumfa-schema-upgrade /usr/local/lib/edumfa/migrations --skipstamp
|
|
42
|
+
|
|
43
|
+
# Create admin user
|
|
44
|
+
echo "Creating Admin"
|
|
45
|
+
edumfa-manage -q admin add "$EDUMFA_ADMIN_USER" -p "$EDUMFA_ADMIN_PASS"
|
|
46
|
+
|
|
47
|
+
# Execute user scripts
|
|
48
|
+
shopt -s nullglob
|
|
49
|
+
for script in /opt/edumfa/user-scripts/*.sh; do
|
|
50
|
+
echo "Executing user script $script..."
|
|
51
|
+
bash $script
|
|
52
|
+
done
|
|
53
|
+
|
|
54
|
+
echo "
|
|
55
|
+
You can login with the following credentials:
|
|
56
|
+
username: $EDUMFA_ADMIN_USER
|
|
57
|
+
password: $EDUMFA_ADMIN_PASS
|
|
58
|
+
"
|
|
59
|
+
|
|
60
|
+
echo "Starting Server"
|
|
61
|
+
gunicorn --bind 0.0.0.0:8000 --workers 4 app
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"formatters": {
|
|
4
|
+
"detail": {
|
|
5
|
+
"()": "edumfa.lib.log.SecureFormatter",
|
|
6
|
+
"format": "[%(asctime)s][%(process)d][%(thread)d][%(levelname)s][%(name)s:%(lineno)d] %(message)s"
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
"handlers": {
|
|
10
|
+
"stdhandler": {
|
|
11
|
+
"class": "logging.StreamHandler",
|
|
12
|
+
"formatter": "detail",
|
|
13
|
+
"stream": "ext://sys.stdout"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"loggers": {
|
|
17
|
+
"root": {
|
|
18
|
+
"handlers": ["stdhandler"],
|
|
19
|
+
"level": "INFO"
|
|
20
|
+
},
|
|
21
|
+
"alembic": {
|
|
22
|
+
"handlers": ["stdhandler"],
|
|
23
|
+
"qualname": "alembic",
|
|
24
|
+
"level": "INFO",
|
|
25
|
+
"propagate": 0
|
|
26
|
+
},
|
|
27
|
+
"sqlalchemy.engine": {
|
|
28
|
+
"handlers": ["stdhandler"],
|
|
29
|
+
"qualname": "sqlalchemy.engine",
|
|
30
|
+
"level": "WARN",
|
|
31
|
+
"propagate": 0
|
|
32
|
+
},
|
|
33
|
+
"edumfa": {
|
|
34
|
+
"handlers": ["stdhandler"],
|
|
35
|
+
"qualname": "edumfa",
|
|
36
|
+
"level": "INFO",
|
|
37
|
+
"propagate": 0
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pass
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
services:
|
|
2
|
+
mariadb:
|
|
3
|
+
image: docker.io/mariadb:lts-noble
|
|
4
|
+
restart: always
|
|
5
|
+
volumes:
|
|
6
|
+
- mariadb-data:/var/lib/mysql:rw
|
|
7
|
+
environment:
|
|
8
|
+
MARIADB_DATABASE: ${MARIADB_DATABASE}
|
|
9
|
+
MARIADB_USER: ${MARIADB_USER}
|
|
10
|
+
MARIADB_PASSWORD: ${MARIADB_PASSWORD}
|
|
11
|
+
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
|
|
12
|
+
healthcheck:
|
|
13
|
+
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
14
|
+
start_period: 10s
|
|
15
|
+
interval: 10s
|
|
16
|
+
timeout: 5s
|
|
17
|
+
retries: 3
|
|
18
|
+
|
|
19
|
+
edumfa:
|
|
20
|
+
build: ../..
|
|
21
|
+
restart: always
|
|
22
|
+
ports:
|
|
23
|
+
- "8000:8000"
|
|
24
|
+
volumes:
|
|
25
|
+
- edumfa-keys:/etc/edumfa/:rw
|
|
26
|
+
- ./edumfa-setup.sh:/opt/edumfa/user-scripts/01-setup.sh:ro
|
|
27
|
+
- ./example-policy.py:/opt/edumfa/policy.py:ro
|
|
28
|
+
- ./my-login.html:/opt/edumfa/edumfa-package/static/components/login/views/login.html
|
|
29
|
+
- ./db_password.txt:/etc/edumfa/db_password.txt:ro
|
|
30
|
+
environment:
|
|
31
|
+
DB_DRIVER: ${DB_DRIVER}
|
|
32
|
+
DB_HOSTNAME: mariadb
|
|
33
|
+
DB_USER: ${MARIADB_USER}
|
|
34
|
+
DB_PASSWORD_FILE: /etc/edumfa/db_password.txt
|
|
35
|
+
DB_DATABASE: ${MARIADB_DATABASE}
|
|
36
|
+
SECRET_KEY: ${EDUMFA_SECRET_KEY}
|
|
37
|
+
EDUMFA_PEPPER: ${EDUMFA_PEPPER}
|
|
38
|
+
EDUMFA_ADMIN_USER: ${EDUMFA_ADMIN_USER}
|
|
39
|
+
EDUMFA_ADMIN_PASS: ${EDUMFA_ADMIN_PASS}
|
|
40
|
+
EDUMFA_UI_DEACTIVATED: ${EDUMFA_UI_DEACTIVATED}
|
|
41
|
+
depends_on:
|
|
42
|
+
mariadb:
|
|
43
|
+
condition: service_healthy
|
|
44
|
+
|
|
45
|
+
volumes:
|
|
46
|
+
edumfa-keys:
|
|
47
|
+
mariadb-data:
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
## eduMFA docker config
|
|
2
|
+
MARIADB_USER="edumfa"
|
|
3
|
+
MARIADB_PASSWORD="pass"
|
|
4
|
+
MARIADB_DATABASE="edumfa"
|
|
5
|
+
MARIADB_ROOT_PASSWORD="rootpass"
|
|
6
|
+
|
|
7
|
+
DB_DRIVER="mysql+pymysql"
|
|
8
|
+
|
|
9
|
+
EDUMFA_SECRET_KEY="Test"
|
|
10
|
+
EDUMFA_PEPPER="Never know..."
|
|
11
|
+
|
|
12
|
+
EDUMFA_ADMIN_USER="admin"
|
|
13
|
+
EDUMFA_ADMIN_PASS="Passwort123"
|
|
14
|
+
SUPERUSER_REALM="super,administrators"
|
|
15
|
+
EDUMFA_UI_DEACTIVATED="False"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"policy": [
|
|
3
|
+
{
|
|
4
|
+
"action": {
|
|
5
|
+
"deletion_confirmation": True,
|
|
6
|
+
"hide_welcome_info": True,
|
|
7
|
+
"logout_time": "180",
|
|
8
|
+
},
|
|
9
|
+
"active": True,
|
|
10
|
+
"adminrealm": [],
|
|
11
|
+
"adminuser": [],
|
|
12
|
+
"check_all_resolvers": False,
|
|
13
|
+
"client": [],
|
|
14
|
+
"conditions": [],
|
|
15
|
+
"edumfanode": [],
|
|
16
|
+
"name": "webui",
|
|
17
|
+
"priority": 1,
|
|
18
|
+
"realm": [],
|
|
19
|
+
"resolver": [],
|
|
20
|
+
"scope": "webui",
|
|
21
|
+
"time": "",
|
|
22
|
+
"user": [],
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
<div class="well" ng-show="hsmReady === 'True'">
|
|
2
|
+
|
|
3
|
+
<div class="container" ng-show="!loginWithCredentials">
|
|
4
|
+
<form name="formRemoteUserLogin" class="form-signin" role="form">
|
|
5
|
+
<div class="text-center">
|
|
6
|
+
<img ng-src="{{ instanceUrl }}/static/css/{{ piLogo }}"
|
|
7
|
+
width="90px">
|
|
8
|
+
</div>
|
|
9
|
+
<h2 class="form-signin-heading" translate>Login as
|
|
10
|
+
{{ remoteUser }}</h2>
|
|
11
|
+
|
|
12
|
+
<p translate>
|
|
13
|
+
You are authenticated by the web server as user
|
|
14
|
+
<b>{{ remoteUser }}</b>.
|
|
15
|
+
You may login as this user to eduMFA without any further
|
|
16
|
+
credentials.
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<div class="text-center">
|
|
20
|
+
<button ng-click="authenticate_remote_user()"
|
|
21
|
+
class="btn btn-primary btn-block" translate>Log In
|
|
22
|
+
</button>
|
|
23
|
+
<button ng-hide="forceRemoteUser === 'True'"
|
|
24
|
+
ng-click="loginWithCredentials = true"
|
|
25
|
+
class="btn btn-info btn-block" translate>
|
|
26
|
+
Login with credentials
|
|
27
|
+
</button>
|
|
28
|
+
</div>
|
|
29
|
+
</form>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div ng-show="loginWithCredentials">
|
|
33
|
+
<div class="alert alert-info alert-dismissible" role="alert">
|
|
34
|
+
<button type="button" class="close" data-dismiss="alert"
|
|
35
|
+
aria-label="Close">
|
|
36
|
+
<span aria-hidden="true">×</span></button>
|
|
37
|
+
This is an example modification.
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
<div class="container">
|
|
43
|
+
<div class="text-center">
|
|
44
|
+
<img ng-src="{{ instanceUrl }}/static/css/{{ piLogo }}"
|
|
45
|
+
width="90px">
|
|
46
|
+
</div>
|
|
47
|
+
<div class="text-center">
|
|
48
|
+
<h2 ng-hide="piLoginText" class="form-signin-heading" translate>Please sign in</h2>
|
|
49
|
+
<h2 ng-show="piLoginText" class="form-signin-heading">{{ piLoginText }}</h2>
|
|
50
|
+
</div>
|
|
51
|
+
<form name="formSignin" class="form-signin" role="form" novalidate>
|
|
52
|
+
<label for="username" class="sr-only" translate>Username</label>
|
|
53
|
+
<input name="username" id="username"
|
|
54
|
+
class="form-control round-top"
|
|
55
|
+
ng-model="login.username" required
|
|
56
|
+
placeholder="{{ 'Username'|translate }}"
|
|
57
|
+
autofocus/>
|
|
58
|
+
<label for="realm" class="sr-only" translate>Realm</label>
|
|
59
|
+
<select class="form-control round-none"
|
|
60
|
+
name="realm"
|
|
61
|
+
placeholder="Realm"
|
|
62
|
+
ng-show="piRealms.length > 0"
|
|
63
|
+
id="realm"
|
|
64
|
+
ng-model="login.realm"
|
|
65
|
+
ng-options="realm for realm in piRealms">
|
|
66
|
+
<!-- We add a placeholder, if we do not have an empty realm -->
|
|
67
|
+
<option ng-hide="piRealms[0]===''" value="" selected translate>Choose a realm...</option>
|
|
68
|
+
</select>
|
|
69
|
+
<label for="password" class="sr-only" translate>Password</label>
|
|
70
|
+
<input name="password" type="password"
|
|
71
|
+
id="password" class="form-control round-bottom"
|
|
72
|
+
ng-model="login.password" required
|
|
73
|
+
placeholder="{{ 'Password'|translate }}"/>
|
|
74
|
+
|
|
75
|
+
<div class="text-center">
|
|
76
|
+
<button ng-click="authenticate_first();"
|
|
77
|
+
ng-disabled="formSignin.$invalid"
|
|
78
|
+
class="btn btn-primary btn-block" translate>Log In
|
|
79
|
+
</button>
|
|
80
|
+
<p class="text-right" ng-show="passwordReset === 'True'">
|
|
81
|
+
<a ui-sref="recovery" translate>Reset Password</a>
|
|
82
|
+
</p>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
</form>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<div class="well" ng-show="hsmReady === 'False'">
|
|
91
|
+
<div class="alert alert-danger" role="alert" translate>
|
|
92
|
+
The HSM is not ready. eduMFA can not work properly. Please start
|
|
93
|
+
the HSM and reload this page.
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|