edumfa 2.7.0__tar.gz → 2.7.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (860) hide show
  1. {edumfa-2.7.0/edumfa.egg-info → edumfa-2.7.2}/PKG-INFO +24 -23
  2. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu/changelog +36 -0
  3. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/changelog +12 -0
  4. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/auditmodules/sqlaudit.py +28 -18
  5. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/lifecycle.py +23 -1
  6. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/pooling.py +2 -2
  7. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/webauthn.py +4 -4
  8. {edumfa-2.7.0 → edumfa-2.7.2/edumfa.egg-info}/PKG-INFO +24 -23
  9. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa.egg-info/requires.txt +21 -21
  10. {edumfa-2.7.0 → edumfa-2.7.2}/pyproject.toml +10 -10
  11. {edumfa-2.7.0 → edumfa-2.7.2}/requirements.txt +12 -12
  12. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_webauthn.py +8 -2
  13. {edumfa-2.7.0 → edumfa-2.7.2}/AUTHORS.md +0 -0
  14. {edumfa-2.7.0 → edumfa-2.7.2}/LICENSE +0 -0
  15. {edumfa-2.7.0 → edumfa-2.7.2}/MANIFEST.in +0 -0
  16. {edumfa-2.7.0 → edumfa-2.7.2}/README.rst +0 -0
  17. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/README.md +0 -0
  18. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/apache/edumfaapp.wsgi +0 -0
  19. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/apache/sites-available/edumfa-venv.conf +0 -0
  20. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/apache/sites-available/edumfa.conf +0 -0
  21. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/config/freeradius2/edumfa +0 -0
  22. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/config/freeradius2/mods-perl-edumfa +0 -0
  23. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/config/freeradius3/edumfa +0 -0
  24. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/config/freeradius3/mods-perl-edumfa +0 -0
  25. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/crontab/edumfa +0 -0
  26. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/docker/logging.cfg +0 -0
  27. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/docker-compose-example.yml +0 -0
  28. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/docker-example/edumfa-policy.conf +0 -0
  29. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/docker-example/edumfa-setup.sh +0 -0
  30. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/docker-example/edumfa.cfg +0 -0
  31. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/docker-setup.sh +0 -0
  32. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/edumfa/dictionary +0 -0
  33. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/edumfa/edumfa.cfg +0 -0
  34. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/edumfa_radius.pm +0 -0
  35. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/gunicorn/edumfaapp.py +0 -0
  36. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/logging.cfg +0 -0
  37. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/nginx/edumfaapp.py +0 -0
  38. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/nginx/sites-available/edumfa +0 -0
  39. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/rlm_perl.ini +0 -0
  40. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu/clean +0 -0
  41. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu/compat +0 -0
  42. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu/control +0 -0
  43. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu/copyright +0 -0
  44. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu/rules +0 -0
  45. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu/source/format +0 -0
  46. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu/source/options +0 -0
  47. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-radius/changelog +0 -0
  48. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-radius/compat +0 -0
  49. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-radius/control +0 -0
  50. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-radius/copyright +0 -0
  51. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-radius/edumfa-radius.install +0 -0
  52. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-radius/edumfa-radius.postinst +0 -0
  53. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-radius/edumfa-radius.postrm +0 -0
  54. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-radius/rules +0 -0
  55. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-radius/source/format +0 -0
  56. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/clean +0 -0
  57. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/compat +0 -0
  58. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/control +0 -0
  59. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/edumfa-apache2.install +0 -0
  60. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/edumfa-apache2.postinst +0 -0
  61. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/edumfa-apache2.postrm +0 -0
  62. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/edumfa-nginx.install +0 -0
  63. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/edumfa-nginx.postinst +0 -0
  64. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/edumfa-nginx.postrm +0 -0
  65. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/rules +0 -0
  66. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/source/format +0 -0
  67. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/ubuntu-server/source/options +0 -0
  68. {edumfa-2.7.0 → edumfa-2.7.2}/deploy/uwsgi/apps-available/edumfa.xml +0 -0
  69. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/__init__.py +0 -0
  70. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/__init__.py +0 -0
  71. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/application.py +0 -0
  72. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/audit.py +0 -0
  73. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/auth.py +0 -0
  74. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/before_after.py +0 -0
  75. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/caconnector.py +0 -0
  76. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/clienttype.py +0 -0
  77. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/edumfaserver.py +0 -0
  78. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/event.py +0 -0
  79. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/lib/__init__.py +0 -0
  80. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/lib/decorators.py +0 -0
  81. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/lib/policyhelper.py +0 -0
  82. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/lib/postpolicy.py +0 -0
  83. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/lib/prepolicy.py +0 -0
  84. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/lib/utils.py +0 -0
  85. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/machine.py +0 -0
  86. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/machineresolver.py +0 -0
  87. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/monitoring.py +0 -0
  88. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/periodictask.py +0 -0
  89. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/policy.py +0 -0
  90. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/radiusserver.py +0 -0
  91. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/realm.py +0 -0
  92. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/recover.py +0 -0
  93. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/register.py +0 -0
  94. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/resolver.py +0 -0
  95. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/serviceid.py +0 -0
  96. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/smsgateway.py +0 -0
  97. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/smtpserver.py +0 -0
  98. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/system.py +0 -0
  99. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/token.py +0 -0
  100. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/tokengroup.py +0 -0
  101. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/ttype.py +0 -0
  102. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/user.py +0 -0
  103. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/api/validate.py +0 -0
  104. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/app.py +0 -0
  105. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/babel.cfg +0 -0
  106. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/__init__.py +0 -0
  107. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/__init__.py +0 -0
  108. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/admin.py +0 -0
  109. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/api.py +0 -0
  110. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/audit.py +0 -0
  111. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/authcache.py +0 -0
  112. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/backup.py +0 -0
  113. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/ca.py +0 -0
  114. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/config.py +0 -0
  115. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/core.py +0 -0
  116. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/event.py +0 -0
  117. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/helper.py +0 -0
  118. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/hsm.py +0 -0
  119. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/main.py +0 -0
  120. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/policy.py +0 -0
  121. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/realm.py +0 -0
  122. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/resolver.py +0 -0
  123. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/commands/manage/token.py +0 -0
  124. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/config.py +0 -0
  125. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/__init__.py +0 -0
  126. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/applications/__init__.py +0 -0
  127. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/applications/base.py +0 -0
  128. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/applications/luks.py +0 -0
  129. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/applications/offline.py +0 -0
  130. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/applications/ssh.py +0 -0
  131. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/apps.py +0 -0
  132. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/audit.py +0 -0
  133. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/auditmodules/__init__.py +0 -0
  134. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/auditmodules/base.py +0 -0
  135. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/auditmodules/containeraudit.py +0 -0
  136. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/auditmodules/loggeraudit.py +0 -0
  137. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/auth.py +0 -0
  138. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/authcache.py +0 -0
  139. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/cache/__init__.py +0 -0
  140. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/caconnector.py +0 -0
  141. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/caconnectors/__init__.py +0 -0
  142. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/caconnectors/baseca.py +0 -0
  143. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/caconnectors/caservice_pb2.py +0 -0
  144. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/caconnectors/caservice_pb2_grpc.py +0 -0
  145. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/caconnectors/localca.py +0 -0
  146. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/caconnectors/msca.py +0 -0
  147. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/challenge.py +0 -0
  148. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/challengeresponsedecorators.py +0 -0
  149. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/clientapplication.py +0 -0
  150. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/config.py +0 -0
  151. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/counter.py +0 -0
  152. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/crypto.py +0 -0
  153. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/decorators.py +0 -0
  154. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/edumfaserver.py +0 -0
  155. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/error.py +0 -0
  156. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/event.py +0 -0
  157. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/__init__.py +0 -0
  158. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/base.py +0 -0
  159. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/counterhandler.py +0 -0
  160. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/customuserattributeshandler.py +0 -0
  161. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/federationhandler.py +0 -0
  162. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/logginghandler.py +0 -0
  163. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/requestmangler.py +0 -0
  164. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/responsemangler.py +0 -0
  165. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/scripthandler.py +0 -0
  166. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/tokenhandler.py +0 -0
  167. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/usernotification.py +0 -0
  168. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/eventhandler/webhookeventhandler.py +0 -0
  169. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/framework.py +0 -0
  170. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/importotp.py +0 -0
  171. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/log.py +0 -0
  172. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/machine.py +0 -0
  173. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/machineresolver.py +0 -0
  174. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/machines/__init__.py +0 -0
  175. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/machines/base.py +0 -0
  176. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/machines/hosts.py +0 -0
  177. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/machines/ldap.py +0 -0
  178. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/monitoringmodules/__init__.py +0 -0
  179. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/monitoringmodules/base.py +0 -0
  180. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/monitoringmodules/sqlstats.py +0 -0
  181. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/monitoringstats.py +0 -0
  182. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/passwordreset.py +0 -0
  183. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/periodictask.py +0 -0
  184. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/pinhandling/__init__.py +0 -0
  185. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/pinhandling/base.py +0 -0
  186. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/policy.py +0 -0
  187. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/policydecorators.py +0 -0
  188. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/queue.py +0 -0
  189. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/queues/__init__.py +0 -0
  190. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/queues/base.py +0 -0
  191. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/queues/huey_queue.py +0 -0
  192. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/radiusserver.py +0 -0
  193. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/realm.py +0 -0
  194. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/resolver.py +0 -0
  195. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/resolvers/HTTPResolver.py +0 -0
  196. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/resolvers/LDAPIdResolver.py +0 -0
  197. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/resolvers/PasswdIdResolver.py +0 -0
  198. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/resolvers/SCIMIdResolver.py +0 -0
  199. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/resolvers/SQLIdResolver.py +0 -0
  200. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/resolvers/UserIdResolver.py +0 -0
  201. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/resolvers/__init__.py +0 -0
  202. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/security/__init__.py +0 -0
  203. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/security/aeshsm.py +0 -0
  204. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/security/default.py +0 -0
  205. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/security/encryptkey.py +0 -0
  206. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/security/password/__init__.py +0 -0
  207. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/serviceid.py +0 -0
  208. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/smsprovider/FirebaseProvider.py +0 -0
  209. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/smsprovider/HttpMessageToUidProvider.py +0 -0
  210. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/smsprovider/HttpSMSProvider.py +0 -0
  211. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/smsprovider/SMSProvider.py +0 -0
  212. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/smsprovider/ScriptSMSProvider.py +0 -0
  213. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/smsprovider/SipgateSMSProvider.py +0 -0
  214. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/smsprovider/SmppSMSProvider.py +0 -0
  215. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/smsprovider/SmtpSMSProvider.py +0 -0
  216. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/smsprovider/__init__.py +0 -0
  217. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/smtpserver.py +0 -0
  218. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/sqlutils.py +0 -0
  219. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/subscriptions.py +0 -0
  220. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/task/__init__.py +0 -0
  221. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/task/base.py +0 -0
  222. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/task/eventcounter.py +0 -0
  223. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/task/simplestats.py +0 -0
  224. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/token.py +0 -0
  225. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokenclass.py +0 -0
  226. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokengroup.py +0 -0
  227. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/HMAC.py +0 -0
  228. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/__init__.py +0 -0
  229. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/applicationspecificpasswordtoken.py +0 -0
  230. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/certificatetoken.py +0 -0
  231. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/daplugtoken.py +0 -0
  232. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/daypasswordtoken.py +0 -0
  233. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/emailtoken.py +0 -0
  234. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/foureyestoken.py +0 -0
  235. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/hotptoken.py +0 -0
  236. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/indexedsecrettoken.py +0 -0
  237. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/legacypushtoken.py +0 -0
  238. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/mOTP.py +0 -0
  239. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/motptoken.py +0 -0
  240. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/ocra.py +0 -0
  241. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/ocratoken.py +0 -0
  242. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/papertoken.py +0 -0
  243. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/passwordtoken.py +0 -0
  244. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/pushtoken.py +0 -0
  245. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/questionnairetoken.py +0 -0
  246. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/radiustoken.py +0 -0
  247. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/registrationtoken.py +0 -0
  248. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/remotetoken.py +0 -0
  249. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/smstoken.py +0 -0
  250. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/spasstoken.py +0 -0
  251. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/sshkeytoken.py +0 -0
  252. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/tantoken.py +0 -0
  253. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/tiqrtoken.py +0 -0
  254. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/totptoken.py +0 -0
  255. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/u2f.py +0 -0
  256. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/u2ftoken.py +0 -0
  257. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/vasco.py +0 -0
  258. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/vascotoken.py +0 -0
  259. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/webauthntoken.py +0 -0
  260. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/yubicotoken.py +0 -0
  261. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/tokens/yubikeytoken.py +0 -0
  262. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/user.py +0 -0
  263. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/usercache.py +0 -0
  264. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/utils/__init__.py +0 -0
  265. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/utils/compare.py +0 -0
  266. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/lib/utils/export.py +0 -0
  267. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/messages.pot +0 -0
  268. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/models.py +0 -0
  269. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/README.md +0 -0
  270. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/app.js +0 -0
  271. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/audit/controllers/auditControllers.js +0 -0
  272. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/audit/factories/audit.js +0 -0
  273. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/audit/states/states.js +0 -0
  274. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/audit/views/audit.html +0 -0
  275. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/audit/views/audit.log.html +0 -0
  276. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/components/controllers/componentControllers.js +0 -0
  277. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/components/factories/component.js +0 -0
  278. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/components/states/states.js +0 -0
  279. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/components/views/component.clienttype.html +0 -0
  280. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/components/views/component.html +0 -0
  281. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/controllers/configControllers.js +0 -0
  282. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/controllers/eduMfaServerController.js +0 -0
  283. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/controllers/eventController.js +0 -0
  284. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/controllers/ldapMachineResolverController.js +0 -0
  285. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/controllers/periodicTaskController.js +0 -0
  286. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/controllers/radiusServerController.js +0 -0
  287. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/controllers/serviceidController.js +0 -0
  288. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/controllers/smsgatewayController.js +0 -0
  289. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/controllers/smtpServerController.js +0 -0
  290. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/controllers/tokengroupController.js +0 -0
  291. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/factories/config.js +0 -0
  292. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/states/states.js +0 -0
  293. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.caconnectors.list.html +0 -0
  294. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.caconnectors.local.html +0 -0
  295. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.caconnectors.microsoft.html +0 -0
  296. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.edumfaserver.edit.html +0 -0
  297. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.edumfaserver.list.html +0 -0
  298. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.events.details.html +0 -0
  299. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.events.html +0 -0
  300. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.events.list.html +0 -0
  301. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.html +0 -0
  302. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.machineresolvers.html +0 -0
  303. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.mresolvers.hosts.html +0 -0
  304. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.mresolvers.ldap.html +0 -0
  305. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.mresolvers.list.html +0 -0
  306. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.periodictasks.details.html +0 -0
  307. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.periodictasks.html +0 -0
  308. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.periodictasks.list.html +0 -0
  309. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.policies.details.html +0 -0
  310. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.policies.html +0 -0
  311. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.policies.list.html +0 -0
  312. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.radius.edit.html +0 -0
  313. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.radius.list.html +0 -0
  314. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.realms.html +0 -0
  315. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.realms.list.html +0 -0
  316. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.resolvers.html +0 -0
  317. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.resolvers.http.html +0 -0
  318. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.resolvers.ldap.html +0 -0
  319. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.resolvers.list.html +0 -0
  320. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.resolvers.passwd.html +0 -0
  321. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.resolvers.scim.html +0 -0
  322. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.resolvers.sql.html +0 -0
  323. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.serviceid.edit.html +0 -0
  324. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.serviceid.list.html +0 -0
  325. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.smsgateway.edit.html +0 -0
  326. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.smsgateway.list.html +0 -0
  327. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.smtp.edit.html +0 -0
  328. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.smtp.list.html +0 -0
  329. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.system.doc.html +0 -0
  330. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.system.edit.html +0 -0
  331. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.system.html +0 -0
  332. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.daypassword.html +0 -0
  333. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.email.html +0 -0
  334. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.hotp.html +0 -0
  335. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.question.html +0 -0
  336. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.radius.html +0 -0
  337. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.remote.html +0 -0
  338. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.sms.html +0 -0
  339. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.tiqr.html +0 -0
  340. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.totp.html +0 -0
  341. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.u2f.html +0 -0
  342. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.webauthn.html +0 -0
  343. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.yubico.html +0 -0
  344. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.token.yubikey.html +0 -0
  345. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.tokengroup.edit.html +0 -0
  346. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.tokengroup.list.html +0 -0
  347. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/config.tokens.html +0 -0
  348. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/config/views/dialog.confirm_delete.html +0 -0
  349. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/dashboard/controllers/dashboardControllers.js +0 -0
  350. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/dashboard/states/states.js +0 -0
  351. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/dashboard/views/dashboard.html +0 -0
  352. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/dialogs/views/dialog.about.html +0 -0
  353. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/dialogs/views/dialog.autocreate_realm.html +0 -0
  354. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/dialogs/views/dialog.lock.html +0 -0
  355. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/dialogs/views/dialog.no.token.html +0 -0
  356. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/dialogs/views/dialog.welcome.html +0 -0
  357. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/directives/controllers/directives.js +0 -0
  358. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/directives/views/directive.assigntoken.html +0 -0
  359. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/directives/views/directive.assignuser.html +0 -0
  360. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/directives/views/directive.attachmachine.html +0 -0
  361. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/directives/views/directive.attachtoken.html +0 -0
  362. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/directives/views/directive.csvdownload.html +0 -0
  363. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/directives/views/directive.filter.table.html +0 -0
  364. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/directives/views/directive.policyconditions.html +0 -0
  365. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/directives/views/directive.tokendata.html +0 -0
  366. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/filters/filters.js +0 -0
  367. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/login/controllers/loginControllers.js +0 -0
  368. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/login/factories/auth.js +0 -0
  369. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/login/factories/u2f.js +0 -0
  370. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/login/factories/webauthn.js +0 -0
  371. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/login/states/states.js +0 -0
  372. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/login/views/enter-response.html +0 -0
  373. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/login/views/login.html +0 -0
  374. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/login/views/offline.html +0 -0
  375. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/login/views/pinchange.html +0 -0
  376. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/machine/controllers/machineController.js +0 -0
  377. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/machine/controllers/machineDetailsController.js +0 -0
  378. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/machine/factories/machine.js +0 -0
  379. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/machine/states/states.js +0 -0
  380. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/machine/views/machine.details.html +0 -0
  381. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/machine/views/machine.html +0 -0
  382. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/machine/views/machine.list.html +0 -0
  383. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/recovery/controllers/recoveryControllers.js +0 -0
  384. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/recovery/factories/recoveryFactory.js +0 -0
  385. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/recovery/states/states.js +0 -0
  386. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/recovery/views/recovery.html +0 -0
  387. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/recovery/views/recovery.reset.html +0 -0
  388. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/register/controllers/registerControllers.js +0 -0
  389. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/register/factories/registerFactory.js +0 -0
  390. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/register/states/states.js +0 -0
  391. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/register/views/register.html +0 -0
  392. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/controllers/tokenApplicationsController.js +0 -0
  393. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/controllers/tokenChallengesController.js +0 -0
  394. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/controllers/tokenControllers.js +0 -0
  395. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/controllers/tokenDetailController.js +0 -0
  396. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/controllers/tokenGetSerialController.js +0 -0
  397. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/controllers/tokenLostController.js +0 -0
  398. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/factories/token.js +0 -0
  399. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/factories/validate.js +0 -0
  400. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/states/states.js +0 -0
  401. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/dialog.ask_token_delete.html +0 -0
  402. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.applications.html +0 -0
  403. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.applications.offline.html +0 -0
  404. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.applications.ssh.html +0 -0
  405. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.assign.html +0 -0
  406. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.challenges.html +0 -0
  407. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.details.html +0 -0
  408. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.display.apps.html +0 -0
  409. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.4eyes.html +0 -0
  410. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.applspec.html +0 -0
  411. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.certificate.html +0 -0
  412. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.daypassword.html +0 -0
  413. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.edupush.html +0 -0
  414. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.email.html +0 -0
  415. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.hotp.html +0 -0
  416. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.html +0 -0
  417. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.indexedsecret.html +0 -0
  418. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.motp.html +0 -0
  419. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.paper.html +0 -0
  420. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.push.html +0 -0
  421. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.question.html +0 -0
  422. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.radius.html +0 -0
  423. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.registration.html +0 -0
  424. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.remote.html +0 -0
  425. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.sms.html +0 -0
  426. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.spass.html +0 -0
  427. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.sshkey.html +0 -0
  428. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.tan.html +0 -0
  429. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.tiqr.html +0 -0
  430. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.totp.html +0 -0
  431. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.u2f.html +0 -0
  432. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.vasco.html +0 -0
  433. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.webauthn.html +0 -0
  434. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.yubico.html +0 -0
  435. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enroll.yubikey.html +0 -0
  436. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.applspec.html +0 -0
  437. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.certificate.html +0 -0
  438. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.daypassword.html +0 -0
  439. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.edupush.html +0 -0
  440. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.hotp.html +0 -0
  441. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.motp.html +0 -0
  442. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.paper.html +0 -0
  443. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.push.html +0 -0
  444. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.registration.html +0 -0
  445. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.tan.html +0 -0
  446. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.tiqr.html +0 -0
  447. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.totp.html +0 -0
  448. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.u2f.html +0 -0
  449. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.enrolled.webauthn.html +0 -0
  450. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.getserial.html +0 -0
  451. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.html +0 -0
  452. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.import.html +0 -0
  453. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.list.html +0 -0
  454. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/token/views/token.lost.html +0 -0
  455. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/translation/translations.js +0 -0
  456. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/user/controllers/userControllers.js +0 -0
  457. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/user/factories/user.js +0 -0
  458. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/user/states/states.js +0 -0
  459. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/user/views/dialog.ask_user_delete.html +0 -0
  460. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/user/views/user.add.dynamic.form.fields.html +0 -0
  461. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/user/views/user.add.html +0 -0
  462. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/user/views/user.details.html +0 -0
  463. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/user/views/user.html +0 -0
  464. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/user/views/user.list.html +0 -0
  465. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/components/user/views/user.password.html +0 -0
  466. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/css/angular-inform.css +0 -0
  467. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/css/angular-inform.css.map +0 -0
  468. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/css/bootstrap-theme.css +0 -0
  469. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/css/bootstrap-theme.css.map +0 -0
  470. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/css/bootstrap.css +0 -0
  471. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/css/bootstrap.css.map +0 -0
  472. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/css/hotkeys.css +0 -0
  473. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/css/isteven-multi-select.css +0 -0
  474. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.eot +0 -0
  475. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.svg +0 -0
  476. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.ttf +0 -0
  477. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff +0 -0
  478. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff2 +0 -0
  479. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/angular-inform.js +0 -0
  480. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/angular-inform.js.map +0 -0
  481. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/angular.js +0 -0
  482. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/bootstrap.js +0 -0
  483. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/hotkeys.js +0 -0
  484. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/jquery.js +0 -0
  485. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/ngmodules/angular-gettext.js +0 -0
  486. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/ngmodules/angular-idle.js +0 -0
  487. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/ngmodules/angular-sanitize.js +0 -0
  488. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js +0 -0
  489. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js.map +0 -0
  490. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/ngmodules/isteven-multi-select.js +0 -0
  491. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/ngmodules/ng-file-upload.js +0 -0
  492. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/u2f-api.js +0 -0
  493. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/ui-bootstrap-tpls.js +0 -0
  494. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/contrib/js/webauthn-client/edumfa-webauthn.js +0 -0
  495. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/css/baseline.css +0 -0
  496. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/css/content.css +0 -0
  497. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/css/eduMFA-logo.png +0 -0
  498. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/css/highlight.css +0 -0
  499. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/css/menu.css +0 -0
  500. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/css/papertoken.css +0 -0
  501. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/css/signin.css +0 -0
  502. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/css/table-ui.css +0 -0
  503. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/customize/README.rst +0 -0
  504. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/favicon.png +0 -0
  505. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/img/FIDO-U2F-Security-Key-444x444.png +0 -0
  506. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/img/plugup.jpg +0 -0
  507. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/img/solokeys.png +0 -0
  508. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/img/u2fzero.png +0 -0
  509. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/package-lock.json +0 -0
  510. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/package.json +0 -0
  511. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/providers/errorMessageProvider.js +0 -0
  512. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/providers/versioningProvider.js +0 -0
  513. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/templates/baseline.html +0 -0
  514. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/templates/cert_request_form.html +0 -0
  515. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/templates/deactivated.html +0 -0
  516. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/templates/documentation.rst +0 -0
  517. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/templates/footer.html +0 -0
  518. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/templates/header.html +0 -0
  519. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/templates/index.html +0 -0
  520. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/templates/menu.html +0 -0
  521. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/templates/token_enrolled.html +0 -0
  522. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/static/update_contrib.sh +0 -0
  523. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/cs/LC_MESSAGES/messages.mo +0 -0
  524. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/cs/LC_MESSAGES/messages.po +0 -0
  525. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/de/LC_MESSAGES/messages.mo +0 -0
  526. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/de/LC_MESSAGES/messages.po +0 -0
  527. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/es/LC_MESSAGES/messages.mo +0 -0
  528. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/es/LC_MESSAGES/messages.po +0 -0
  529. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/fr/LC_MESSAGES/messages.mo +0 -0
  530. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/fr/LC_MESSAGES/messages.po +0 -0
  531. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/it/LC_MESSAGES/messages.mo +0 -0
  532. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/it/LC_MESSAGES/messages.po +0 -0
  533. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/nl/LC_MESSAGES/messages.mo +0 -0
  534. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/nl/LC_MESSAGES/messages.po +0 -0
  535. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/pl/LC_MESSAGES/messages.mo +0 -0
  536. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/pl/LC_MESSAGES/messages.po +0 -0
  537. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
  538. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/pt_BR/LC_MESSAGES/messages.po +0 -0
  539. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/ro/LC_MESSAGES/messages.mo +0 -0
  540. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/ro/LC_MESSAGES/messages.po +0 -0
  541. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/ru/LC_MESSAGES/messages.mo +0 -0
  542. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/ru/LC_MESSAGES/messages.po +0 -0
  543. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/si/LC_MESSAGES/messages.mo +0 -0
  544. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/si/LC_MESSAGES/messages.po +0 -0
  545. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/tr/LC_MESSAGES/messages.mo +0 -0
  546. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/tr/LC_MESSAGES/messages.po +0 -0
  547. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/zh_Hans/LC_MESSAGES/messages.mo +0 -0
  548. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/zh_Hans/LC_MESSAGES/messages.po +0 -0
  549. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
  550. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/translations/zh_Hant/LC_MESSAGES/messages.po +0 -0
  551. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/webui/__init__.py +0 -0
  552. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/webui/certificate.py +0 -0
  553. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa/webui/login.py +0 -0
  554. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa.egg-info/SOURCES.txt +0 -0
  555. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa.egg-info/dependency_links.txt +0 -0
  556. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa.egg-info/entry_points.txt +0 -0
  557. {edumfa-2.7.0 → edumfa-2.7.2}/edumfa.egg-info/top_level.txt +0 -0
  558. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/README +0 -0
  559. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/alembic.ini +0 -0
  560. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/env.py +0 -0
  561. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/script.py.mako +0 -0
  562. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/006d4747f858_.py +0 -0
  563. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/00762b3f7a60_.py +0 -0
  564. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/0c7123345224_.py +0 -0
  565. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/0d011e94a8e8_.py +0 -0
  566. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/140ba0ca4f07_.py +0 -0
  567. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/145ce80decd_.py +0 -0
  568. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/14a1bcb10018_.py +0 -0
  569. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/19f727d285e2_.py +0 -0
  570. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/1a0710df148b_.py +0 -0
  571. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/1a69e5e5e2ac_.py +0 -0
  572. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/1edda52b619f_.py +0 -0
  573. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/204d8d4f351e_.py +0 -0
  574. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/205bda834127_.py +0 -0
  575. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/20969b4cbf06_.py +0 -0
  576. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/2118e566df16_.py +0 -0
  577. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/2181294eed0b_.py +0 -0
  578. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/22558d9f3178_.py +0 -0
  579. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/239995464c48_.py +0 -0
  580. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/2551ee982544_.py +0 -0
  581. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/2ac117d0a6f5_.py +0 -0
  582. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/2c9430cfc66b_.py +0 -0
  583. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/307a4fbe8a05_.py +0 -0
  584. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/3236a1abf1c6_.py +0 -0
  585. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/3429d523e51f_.py +0 -0
  586. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/36428afb2457_.py +0 -0
  587. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/37e6b49fc686_.py +0 -0
  588. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/3ae3c668f444_.py +0 -0
  589. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/3ba618f6b820_.py +0 -0
  590. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/3c6e9dd7fbac_.py +0 -0
  591. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/3d7f8b29cbb1_.py +0 -0
  592. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/3f7e8583ea2_.py +0 -0
  593. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/4023571658f8_.py +0 -0
  594. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/414079706620_.py +0 -0
  595. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/4238eac8ccab_.py +0 -0
  596. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/449903fb6e35_.py +0 -0
  597. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/48ee74b8a7c8_.py +0 -0
  598. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/49a04e560d96_.py +0 -0
  599. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/4a0aec37e7cf_.py +0 -0
  600. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/4d9178fa8336_.py +0 -0
  601. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/4f32a4e1bf33_.py +0 -0
  602. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/50adc980d625_.py +0 -0
  603. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/5402fd96fbca_.py +0 -0
  604. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/58e4f7ebb705_.py +0 -0
  605. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/59ef3e03bc62_.py +0 -0
  606. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/5cb310101a1f_.py +0 -0
  607. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/631ec59e1ca6_.py +0 -0
  608. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/7d82d8b680a9_.py +0 -0
  609. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/849170064430_.py +0 -0
  610. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/86f40f535d7c_.py +0 -0
  611. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/888b56ed5dcb_.py +0 -0
  612. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/89e57ed16379_.py +0 -0
  613. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/8d40dbcfda25_.py +0 -0
  614. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/9155f0d3d028_.py +0 -0
  615. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/a28f2733897b_.py +0 -0
  616. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/a63df077051a_.py +0 -0
  617. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/a7e91b18a460_.py +0 -0
  618. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/b9131d0686eb_.py +0 -0
  619. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/cb6d7b7bae63_.py +0 -0
  620. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/d2ae8e54b628_.py +0 -0
  621. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/d3c0f0403a84_.py +0 -0
  622. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/d415d490eb05_.py +0 -0
  623. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/d5870fd2f2a4_.py +0 -0
  624. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/d6b40a745e5_.py +0 -0
  625. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/d756b34061ff_.py +0 -0
  626. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/dceb6cd3c41e_.py +0 -0
  627. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/e360c56bcf8c_.py +0 -0
  628. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/e5cbeb7c177_.py +0 -0
  629. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/ef29ba43e290_.py +0 -0
  630. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/fa07bd604a75.py +0 -0
  631. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/fabcf24d9304_.py +0 -0
  632. {edumfa-2.7.0 → edumfa-2.7.2}/migrations/versions/ff26585932ec_.py +0 -0
  633. {edumfa-2.7.0 → edumfa-2.7.2}/setup.cfg +0 -0
  634. {edumfa-2.7.0 → edumfa-2.7.2}/setup.py +0 -0
  635. {edumfa-2.7.0 → edumfa-2.7.2}/tests/__init__.py +0 -0
  636. {edumfa-2.7.0 → edumfa-2.7.2}/tests/base.py +0 -0
  637. {edumfa-2.7.0 → edumfa-2.7.2}/tests/conftest.py +0 -0
  638. {edumfa-2.7.0 → edumfa-2.7.2}/tests/ldap3mock.py +0 -0
  639. {edumfa-2.7.0 → edumfa-2.7.2}/tests/mscamock.py +0 -0
  640. {edumfa-2.7.0 → edumfa-2.7.2}/tests/pkcs11mock.py +0 -0
  641. {edumfa-2.7.0 → edumfa-2.7.2}/tests/queuemock.py +0 -0
  642. {edumfa-2.7.0 → edumfa-2.7.2}/tests/radiusmock.py +0 -0
  643. {edumfa-2.7.0 → edumfa-2.7.2}/tests/redismock.py +0 -0
  644. {edumfa-2.7.0 → edumfa-2.7.2}/tests/smppmock.py +0 -0
  645. {edumfa-2.7.0 → edumfa-2.7.2}/tests/smtpmock.py +0 -0
  646. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_2stepinit.py +0 -0
  647. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_applications.py +0 -0
  648. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_audit.py +0 -0
  649. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_auth.py +0 -0
  650. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_caconnector.py +0 -0
  651. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_clienttype.py +0 -0
  652. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_edumfaserver.py +0 -0
  653. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_events.py +0 -0
  654. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_lib_policy.py +0 -0
  655. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_lib_utils.py +0 -0
  656. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_machineresolver.py +0 -0
  657. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_machines.py +0 -0
  658. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_machines_serviceid.py +0 -0
  659. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_monitoring.py +0 -0
  660. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_offline_no_token.py +0 -0
  661. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_periodictask.py +0 -0
  662. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_policy.py +0 -0
  663. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_push_validate.py +0 -0
  664. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_radiusserver.py +0 -0
  665. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_register.py +0 -0
  666. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_roles.py +0 -0
  667. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_serviceids.py +0 -0
  668. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_smsgateway.py +0 -0
  669. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_smtpserver.py +0 -0
  670. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_system.py +0 -0
  671. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_token.py +0 -0
  672. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_tokengroup.py +0 -0
  673. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_ttype.py +0 -0
  674. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_u2f.py +0 -0
  675. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_users.py +0 -0
  676. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_api_validate.py +0 -0
  677. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_app.py +0 -0
  678. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_db_model.py +0 -0
  679. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_applications.py +0 -0
  680. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_apps.py +0 -0
  681. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_audit.py +0 -0
  682. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_auth.py +0 -0
  683. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_authcache.py +0 -0
  684. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_caconnector.py +0 -0
  685. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_challenges.py +0 -0
  686. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_clientapplication.py +0 -0
  687. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_config.py +0 -0
  688. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_counter.py +0 -0
  689. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_crypto.py +0 -0
  690. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_edumfaserver.py +0 -0
  691. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_eventhandler_logging.py +0 -0
  692. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_eventhandler_usernotification.py +0 -0
  693. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_events.py +0 -0
  694. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_framework.py +0 -0
  695. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_importotp.py +0 -0
  696. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_lifecycle.py +0 -0
  697. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_machine_resolver_ldap.py +0 -0
  698. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_machines.py +0 -0
  699. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_machinetokens.py +0 -0
  700. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_monitoringstats.py +0 -0
  701. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_periodictask.py +0 -0
  702. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_policy.py +0 -0
  703. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_policydecorator.py +0 -0
  704. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_pooling.py +0 -0
  705. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_queue.py +0 -0
  706. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_radiusserver.py +0 -0
  707. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_realm.py +0 -0
  708. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_recovery.py +0 -0
  709. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_resolver.py +0 -0
  710. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_serviceid.py +0 -0
  711. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_smsprovider.py +0 -0
  712. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_smtpserver.py +0 -0
  713. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_sqlutils.py +0 -0
  714. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_subscriptions.py +0 -0
  715. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_task_eventcounter.py +0 -0
  716. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_task_simplestats.py +0 -0
  717. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tasks.py +0 -0
  718. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_token.py +0 -0
  719. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokenclass.py +0 -0
  720. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokengroup.py +0 -0
  721. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_certificate.py +0 -0
  722. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_daplug.py +0 -0
  723. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_daypassword.py +0 -0
  724. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_email.py +0 -0
  725. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_foureyes.py +0 -0
  726. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_hotp.py +0 -0
  727. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_indexedsecret.py +0 -0
  728. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_motp.py +0 -0
  729. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_paper.py +0 -0
  730. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_passwordtoken.py +0 -0
  731. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_push.py +0 -0
  732. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_questionnaire.py +0 -0
  733. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_radius.py +0 -0
  734. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_registration.py +0 -0
  735. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_remote.py +0 -0
  736. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_sms.py +0 -0
  737. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_spass.py +0 -0
  738. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_ssh.py +0 -0
  739. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_tan.py +0 -0
  740. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_tiqr.py +0 -0
  741. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_totp.py +0 -0
  742. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_u2f.py +0 -0
  743. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_vasco.py +0 -0
  744. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_yubico.py +0 -0
  745. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_tokens_yubikey.py +0 -0
  746. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_user.py +0 -0
  747. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_usercache.py +0 -0
  748. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_utils.py +0 -0
  749. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_lib_utils_compare.py +0 -0
  750. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_mock_ldap3.py +0 -0
  751. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_resolver_realm.py +0 -0
  752. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_scripts.py +0 -0
  753. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_ui_certificate.py +0 -0
  754. {edumfa-2.7.0 → edumfa-2.7.2}/tests/test_ui_login.py +0 -0
  755. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/FIDO-U2F-Security-Key-444x444.png +0 -0
  756. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/NetKnights.pem +0 -0
  757. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/__init__.py +0 -0
  758. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/altstatic/templates/testui.html +0 -0
  759. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/attestation/yubico.pem +0 -0
  760. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/audit.sqlite +0 -0
  761. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/ca/cacert.pem +0 -0
  762. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/ca/cakey.pem +0 -0
  763. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/ca/index.txt +0 -0
  764. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/ca/index.txt.attr +0 -0
  765. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/ca/openssl.cnf +0 -0
  766. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/ca/serial +0 -0
  767. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/ca/templates.yaml +0 -0
  768. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/dictionary +0 -0
  769. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/does_not_exist +0 -0
  770. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/emailtemplate.html +0 -0
  771. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/empty.oath +0 -0
  772. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/enckey +0 -0
  773. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/enckey.enc +0 -0
  774. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/event.conf +0 -0
  775. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/fancytoken.py +0 -0
  776. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/firebase-test.json +0 -0
  777. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/google-services.json +0 -0
  778. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/gpg/public.pem +0 -0
  779. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/gpg/pubring.gpg +0 -0
  780. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/gpg/random_seed +0 -0
  781. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/gpg/secring.gpg +0 -0
  782. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/gpg/trustdb.gpg +0 -0
  783. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/hosts +0 -0
  784. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/import.oath +0 -0
  785. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/import.oath.asc +0 -0
  786. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/jwt_sign.key +0 -0
  787. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/logging.cfg +0 -0
  788. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/logging.yml +0 -0
  789. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/logging_broken.yaml +0 -0
  790. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/msca-connector/ca.pem +0 -0
  791. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/msca-connector/privacyidea-encrypted.key +0 -0
  792. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/msca-connector/privacyidea.key +0 -0
  793. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/msca-connector/privacyidea.pem +0 -0
  794. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/ocra.csv +0 -0
  795. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/passwd +0 -0
  796. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/passwd-duplicate-name +0 -0
  797. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/passwords +0 -0
  798. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/policy.cfg +0 -0
  799. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/policy.conf +0 -0
  800. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/policy_empty_file.cfg +0 -0
  801. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/private.pem +0 -0
  802. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/pskc-aes.xml +0 -0
  803. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/pskc-password.xml +0 -0
  804. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/public.pem +0 -0
  805. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/pw-2nd-resolver +0 -0
  806. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/scripts/fail.sh +0 -0
  807. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/scripts/ls.sh +0 -0
  808. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/scripts/success.sh +0 -0
  809. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/test.sub +0 -0
  810. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/test2.sub +0 -0
  811. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/testuser-api.sqlite +0 -0
  812. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/testuser.sqlite +0 -0
  813. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/testusercache.sqlite +0 -0
  814. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/trusted_attestation_roots/solokeys_device_attestation_ca.pem +0 -0
  815. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/trusted_attestation_roots/yubico_u2f_device_attestation_ca.pem +0 -0
  816. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/yubico-oath-long.csv +0 -0
  817. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/yubico-oath.csv +0 -0
  818. {edumfa-2.7.0 → edumfa-2.7.2}/tests/testdata/yubico.csv +0 -0
  819. {edumfa-2.7.0 → edumfa-2.7.2}/tools/creategoogleauthenticator-file +0 -0
  820. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-authorizedkeys +0 -0
  821. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-convert-base32.py +0 -0
  822. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-convert-token +0 -0
  823. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-convert-token.1 +0 -0
  824. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-convert-xml-to-csv +0 -0
  825. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-create-ad-users +0 -0
  826. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-create-ad-users.1 +0 -0
  827. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-create-certificate +0 -0
  828. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-create-certificate.1 +0 -0
  829. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-create-pwidresolver-user +0 -0
  830. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-create-pwidresolver-user.1 +0 -0
  831. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-create-sqlidresolver-user +0 -0
  832. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-create-sqlidresolver-user.1 +0 -0
  833. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-create-userdb +0 -0
  834. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-create-userdb.1 +0 -0
  835. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-cron +0 -0
  836. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-diag +0 -0
  837. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-expired-users +0 -0
  838. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-export-edumfa-counter.py +0 -0
  839. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-export-linotp-counter.py +0 -0
  840. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-fetchssh +0 -0
  841. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-fetchssh.1 +0 -0
  842. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-fix-access-rights +0 -0
  843. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-fix-access-rights.1 +0 -0
  844. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-get-serial +0 -0
  845. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-get-unused-tokens +0 -0
  846. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-migrate-linotp.py +0 -0
  847. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-pip-update +0 -0
  848. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-pip-update.1 +0 -0
  849. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-queue-huey +0 -0
  850. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-schema-upgrade +0 -0
  851. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-standalone +0 -0
  852. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-sync-owncloud.py +0 -0
  853. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-token-janitor +0 -0
  854. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-update-counter.py +0 -0
  855. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-update-linotp-counter.py +0 -0
  856. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-user-action +0 -0
  857. {edumfa-2.7.0 → edumfa-2.7.2}/tools/edumfa-usercache-cleanup +0 -0
  858. {edumfa-2.7.0 → edumfa-2.7.2}/tools/getgooglecodes +0 -0
  859. {edumfa-2.7.0 → edumfa-2.7.2}/tools/reset-edumfa +0 -0
  860. {edumfa-2.7.0 → edumfa-2.7.2}/tools/ssha.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: edumfa
3
- Version: 2.7.0
3
+ Version: 2.7.2
4
4
  Summary: eduMFA: identity, multifactor authentication (OTP), authorization, audit
5
5
  Author-email: "edumfa.io" <edumfa@listserv.dfn.de>
6
6
  License: GNU AFFERO GENERAL PUBLIC LICENSE
@@ -647,15 +647,15 @@ Requires-Python: >=3.9
647
647
  Description-Content-Type: text/x-rst
648
648
  License-File: LICENSE
649
649
  License-File: AUTHORS.md
650
- Requires-Dist: alembic==1.14.1
650
+ Requires-Dist: alembic==1.15.1
651
651
  Requires-Dist: argon2-cffi==23.1.0
652
652
  Requires-Dist: argon2-cffi-bindings==21.2.0
653
653
  Requires-Dist: async-timeout==5.0.1
654
654
  Requires-Dist: babel==2.17.0
655
- Requires-Dist: bcrypt==4.2.1
655
+ Requires-Dist: bcrypt==4.3.0
656
656
  Requires-Dist: beautifulsoup4==4.13.3
657
657
  Requires-Dist: blinker==1.9.0
658
- Requires-Dist: cachetools==5.5.1
658
+ Requires-Dist: cachetools==5.5.2
659
659
  Requires-Dist: cbor2==5.6.5
660
660
  Requires-Dist: certifi==2025.1.31
661
661
  Requires-Dist: cffi==1.17.1
@@ -663,7 +663,7 @@ Requires-Dist: charset-normalizer==3.4.1
663
663
  Requires-Dist: click==8.1.8
664
664
  Requires-Dist: configobj==5.0.9
665
665
  Requires-Dist: croniter==6.0.0
666
- Requires-Dist: cryptography==44.0.1
666
+ Requires-Dist: cryptography==44.0.2
667
667
  Requires-Dist: crypt-r==3.13.1; python_version == "3.13" and sys_platform == "linux"
668
668
  Requires-Dist: defusedxml==0.7.1
669
669
  Requires-Dist: flask==3.1.0
@@ -671,12 +671,12 @@ Requires-Dist: flask-babel==4.0.0
671
671
  Requires-Dist: flask-migrate==4.1.0
672
672
  Requires-Dist: flask-sqlalchemy==3.1.1
673
673
  Requires-Dist: google-auth==2.38.0
674
- Requires-Dist: grpcio==1.70.0
675
- Requires-Dist: huey==2.5.2
674
+ Requires-Dist: grpcio==1.71.0
675
+ Requires-Dist: huey==2.5.3
676
676
  Requires-Dist: idna==3.10
677
677
  Requires-Dist: importlib-metadata==8.6.1
678
678
  Requires-Dist: itsdangerous==2.2.0
679
- Requires-Dist: jinja2==3.1.5
679
+ Requires-Dist: jinja2==3.1.6
680
680
  Requires-Dist: ldap3==2.9.1
681
681
  Requires-Dist: lxml==5.3.1
682
682
  Requires-Dist: mako==1.3.9
@@ -693,21 +693,21 @@ Requires-Dist: pyopenssl==25.0.0
693
693
  Requires-Dist: pyrad==2.4
694
694
  Requires-Dist: python-dateutil==2.9.0.post0
695
695
  Requires-Dist: python-gnupg==0.5.4
696
- Requires-Dist: pytz==2025.1
696
+ Requires-Dist: pytz==2025.2
697
697
  Requires-Dist: pyyaml==6.0.2
698
698
  Requires-Dist: redis==5.2.1
699
699
  Requires-Dist: requests==2.32.3
700
700
  Requires-Dist: rsa==4.9
701
- Requires-Dist: segno==1.6.1
701
+ Requires-Dist: segno==1.6.6
702
702
  Requires-Dist: six==1.17.0
703
703
  Requires-Dist: smpplib==2.2.4
704
704
  Requires-Dist: soupsieve==2.6
705
- Requires-Dist: sqlalchemy==2.0.38
706
- Requires-Dist: typing-extensions==4.12.2
705
+ Requires-Dist: sqlalchemy==2.0.39
706
+ Requires-Dist: typing-extensions==4.13.0
707
707
  Requires-Dist: urllib3==2.3.0
708
708
  Requires-Dist: werkzeug==3.1.3
709
709
  Requires-Dist: zipp==3.21.0
710
- Requires-Dist: setuptools==75.8.0
710
+ Requires-Dist: setuptools==78.1.0
711
711
  Provides-Extra: docs
712
712
  Requires-Dist: furo==2024.8.6; extra == "docs"
713
713
  Requires-Dist: docutils==0.21.2; extra == "docs"
@@ -716,7 +716,7 @@ Requires-Dist: packaging==24.2; extra == "docs"
716
716
  Requires-Dist: pyenchant==3.2.2; extra == "docs"
717
717
  Requires-Dist: Pygments==2.19.1; extra == "docs"
718
718
  Requires-Dist: snowballstemmer==2.2.0; extra == "docs"
719
- Requires-Dist: Sphinx==8.1.3; extra == "docs"
719
+ Requires-Dist: Sphinx==8.2.3; extra == "docs"
720
720
  Requires-Dist: sphinxcontrib-applehelp==2.0.0; extra == "docs"
721
721
  Requires-Dist: sphinxcontrib-devhelp==2.0.0; extra == "docs"
722
722
  Requires-Dist: sphinxcontrib-htmlhelp==2.1.0; extra == "docs"
@@ -728,26 +728,27 @@ Requires-Dist: sphinxcontrib-spelling==8.0.1; extra == "docs"
728
728
  Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
729
729
  Requires-Dist: sphinx-inline-tabs==2023.4.21; extra == "docs"
730
730
  Provides-Extra: test
731
- Requires-Dist: attrs==25.1.0; extra == "test"
732
- Requires-Dist: coverage==7.6.12; extra == "test"
731
+ Requires-Dist: attrs==25.3.0; extra == "test"
732
+ Requires-Dist: coverage==7.7.1; extra == "test"
733
733
  Requires-Dist: exceptiongroup==1.2.2; extra == "test"
734
- Requires-Dist: iniconfig==2.0.0; extra == "test"
735
- Requires-Dist: mock==5.1.0; extra == "test"
734
+ Requires-Dist: iniconfig==2.1.0; extra == "test"
735
+ Requires-Dist: mock==5.2.0; extra == "test"
736
736
  Requires-Dist: packaging==24.2; extra == "test"
737
737
  Requires-Dist: pluggy==1.5.0; extra == "test"
738
- Requires-Dist: pyparsing==3.2.1; extra == "test"
739
- Requires-Dist: pytest==8.3.4; extra == "test"
738
+ Requires-Dist: pyparsing==3.2.3; extra == "test"
739
+ Requires-Dist: pytest==8.3.5; extra == "test"
740
740
  Requires-Dist: pytest-cov==6.0.0; extra == "test"
741
- Requires-Dist: responses==0.25.6; extra == "test"
741
+ Requires-Dist: responses==0.25.7; extra == "test"
742
742
  Requires-Dist: testfixtures==8.3.0; extra == "test"
743
743
  Requires-Dist: tomli==2.2.1; extra == "test"
744
- Requires-Dist: types-PyYAML==6.0.12.20241230; extra == "test"
744
+ Requires-Dist: types-PyYAML==6.0.12.20250326; extra == "test"
745
745
  Provides-Extra: postgres
746
746
  Requires-Dist: psycopg2==2.9.10; extra == "postgres"
747
747
  Provides-Extra: hsm
748
748
  Requires-Dist: PyKCS11==1.5.17; extra == "hsm"
749
749
  Provides-Extra: kerberos
750
750
  Requires-Dist: gssapi==1.9.0; extra == "kerberos"
751
+ Dynamic: license-file
751
752
 
752
753
  eduMFA
753
754
  ===========
@@ -1,3 +1,39 @@
1
+ edumfa (2.7.2{{CODENAME}}) {{CODENAME}}; urgency=medium
2
+
3
+ * chore: fix read the docs spec by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/581
4
+ * feat: add handling of prf extension by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/582
5
+ * chore(deps): pin dependencies by @renovate in https://github.com/eduMFA/eduMFA/pull/564
6
+ * chore(deps): update dependency alembic to v1.15.1 by @renovate in https://github.com/eduMFA/eduMFA/pull/558
7
+ * chore(deps): update dependency bcrypt to v4.3.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/553
8
+ * chore(deps): update dependency cryptography to v44.0.2 by @renovate in https://github.com/eduMFA/eduMFA/pull/554
9
+ * chore(deps): update dependency grpcio to v1.71.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/563
10
+ * chore(deps): update dependency huey to v2.5.3 by @renovate in https://github.com/eduMFA/eduMFA/pull/572
11
+ * chore(deps): update dependency jinja2 to v3.1.6 [security] by @renovate in https://github.com/eduMFA/eduMFA/pull/560
12
+ * chore(deps): update dependency pytz to v2025.2 by @renovate in https://github.com/eduMFA/eduMFA/pull/578
13
+ * chore(deps): update dependency segno to v1.6.6 by @renovate in https://github.com/eduMFA/eduMFA/pull/566
14
+ * chore(deps): update dependency setuptools to v78 by @renovate in https://github.com/eduMFA/eduMFA/pull/577
15
+ * chore(deps): update dependency sqlalchemy to v2.0.39 by @renovate in https://github.com/eduMFA/eduMFA/pull/567
16
+ * chore(deps): update dependency typing-extensions to v4.13.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/580
17
+ * fix(deps): update dependency attrs to v25.3.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/569
18
+ * fix(deps): update dependency coverage to v7.7.1 by @renovate in https://github.com/eduMFA/eduMFA/pull/575
19
+ * fix(deps): update dependency iniconfig to v2.1.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/573
20
+ * fix(deps): update dependency mock to v5.2.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/557
21
+ * fix(deps): update dependency pyparsing to v3.2.3 by @renovate in https://github.com/eduMFA/eduMFA/pull/576
22
+ * fix(deps): update dependency pytest to v8.3.5 by @renovate in https://github.com/eduMFA/eduMFA/pull/555
23
+ * fix(deps): update dependency responses to v0.25.7 by @renovate in https://github.com/eduMFA/eduMFA/pull/565
24
+ * fix(deps): update dependency sphinx to v8.2.3 by @renovate in https://github.com/eduMFA/eduMFA/pull/556
25
+ * fix(deps): update dependency types-pyyaml to v6.0.12.20250326 by @renovate in https://github.com/eduMFA/eduMFA/pull/579
26
+
27
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Thu, 27 Mar 2025 10:00:00 +0100
28
+
29
+ edumfa (2.7.1{{CODENAME}}) {{CODENAME}}; urgency=medium
30
+
31
+ * fix: correct session leak in sqlaudit module by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/547
32
+ * chore(deps): update dependency cachetools to v5.5.2 by @renovate in https://github.com/eduMFA/eduMFA/pull/545
33
+ * fix(deps): update dependency sphinx to v8.2.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/544
34
+
35
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Tue, 25 Feb 2025 11:00:00 +0100
36
+
1
37
  edumfa (2.7.0{{CODENAME}}) {{CODENAME}}; urgency=medium
2
38
 
3
39
  * docs: fix some version strings by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/509
@@ -1,3 +1,15 @@
1
+ edumfa-server (2.7.2{{CODENAME}}) {{CODENAME}}; urgency=medium
2
+
3
+ * update version number
4
+
5
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Thu, 27 Mar 2025 10:00:00 +0100
6
+
7
+ edumfa-server (2.7.1{{CODENAME}}) {{CODENAME}}; urgency=medium
8
+
9
+ * update version number
10
+
11
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Tue, 25 Feb 2025 11:00:00 +0100
12
+
1
13
  edumfa-server (2.7.0{{CODENAME}}) {{CODENAME}}; urgency=medium
2
14
 
3
15
  * update version number
@@ -42,11 +42,12 @@ import logging
42
42
  from collections import OrderedDict
43
43
  from edumfa.lib.auditmodules.base import (Audit as AuditBase, Paginate)
44
44
  from edumfa.lib.crypto import Sign
45
- from edumfa.lib.pooling import get_engine
45
+ from edumfa.lib.framework import get_app_config_value, get_app_local_store
46
+ from edumfa.lib.pooling import DEFAULT_REGISTRY_CLASS_NAME, REGISTRY_CONFIG_NAME, get_engine
46
47
  from edumfa.lib.utils import censor_connect_string
47
- from edumfa.lib.lifecycle import register_finalizer
48
+ from edumfa.lib.lifecycle import register_finalizer, register_request_finalizer
48
49
  from edumfa.lib.utils import truncate_comma_list, is_true
49
- from sqlalchemy import MetaData, cast, String
50
+ from sqlalchemy import MetaData
50
51
  from sqlalchemy import asc, desc, and_, or_
51
52
  from sqlalchemy.sql.expression import FunctionElement
52
53
  from sqlalchemy.ext.compiler import compiles
@@ -143,17 +144,30 @@ class Audit(AuditBase):
143
144
  # fill the missing parts with the default from the models
144
145
  self.custom_column_length = {k: (v if k not in config_column_length else config_column_length[k])
145
146
  for k, v in column_length.items()}
146
- # We can use "sqlaudit" as the key because the SQLAudit connection
147
- # string is fixed for a running eduMFA instance.
148
- # In other words, we will not run into any problems with changing connect strings.
149
- self.engine = get_engine(self.name, self._create_engine)
150
- # create a configured "Session" class. ``scoped_session`` is not
151
- # necessary because we do not share session objects among threads.
152
- # We use it anyway as a safety measure.
153
- self.session = scoped_session(sessionmaker(bind=self.engine))
154
- # Ensure that the connection gets returned to the pool when the request has
155
- # been handled. This may close an already-closed session, but this is not a problem.
156
- register_finalizer(self._finalize_session)
147
+ store = get_app_local_store()
148
+ registry_class_name = get_app_config_value(REGISTRY_CONFIG_NAME, DEFAULT_REGISTRY_CLASS_NAME)
149
+ if registry_class_name == "null":
150
+ self.engine = self._create_engine()
151
+ self.session = scoped_session(sessionmaker(bind=self.engine))
152
+ # We create a new session for every request -> Destroy it after the request -> Register them as request based finalizer
153
+ register_request_finalizer(self.session.close)
154
+ register_request_finalizer(self.engine.dispose)
155
+ else:
156
+ # We can use "sqlaudit" as the key because the SQLAudit connection
157
+ # string is fixed for a running eduMFA instance.
158
+ # In other words, we will not run into any problems with changing connect strings.
159
+ self.engine = get_engine(self.name, self._create_engine)
160
+ if 'sqlaudit.session' not in store:
161
+ # create a configured "Session" class. ``scoped_session`` is not
162
+ # necessary because we do not share session objects among threads.
163
+ # We use it anyway as a safety measure.
164
+ self.session = scoped_session(sessionmaker(bind=self.engine))
165
+ store['sqlaudit.session'] = self.session
166
+ # Ensure that the connection gets returned to the pool when the request has
167
+ # been handled. This may close an already-closed session, but this is not a problem.
168
+ register_finalizer(self.session.close)
169
+ else:
170
+ self.session = store['sqlaudit.session']
157
171
  self.session._model_changes = {}
158
172
 
159
173
  def _create_engine(self):
@@ -184,10 +198,6 @@ class Audit(AuditBase):
184
198
  log.debug("Using no SQL pool_size.")
185
199
  return engine
186
200
 
187
- def _finalize_session(self):
188
- """ Close current session and dispose connections of db engine"""
189
- self.session.remove()
190
-
191
201
  def _truncate_data(self):
192
202
  """
193
203
  Truncate self.audit_data according to the self.custom_column_length.
@@ -21,7 +21,7 @@
21
21
  # License along with this program. If not, see <http://www.gnu.org/licenses/>.
22
22
  #
23
23
  import logging
24
- from edumfa.lib.framework import get_app_local_store
24
+ from edumfa.lib.framework import get_app_local_store, get_request_local_store
25
25
 
26
26
  log = logging.getLogger(__name__)
27
27
 
@@ -39,6 +39,19 @@ def register_finalizer(func):
39
39
  store['call_on_teardown'].append(func)
40
40
 
41
41
 
42
+ def register_request_finalizer(func):
43
+ """
44
+ Register ``func`` to be called after the request has ended (this includes
45
+ cases in which an error has been thrown)
46
+ :param func: a function that takes no arguments
47
+ """
48
+ # from http://flask.pocoo.org/snippets/53/
49
+ store = get_request_local_store()
50
+ if 'call_on_teardown' not in store:
51
+ store['call_on_teardown'] = []
52
+ store['call_on_teardown'].append(func)
53
+
54
+
42
55
  def call_finalizers():
43
56
  """
44
57
  Call all finalizers that have been registered with the current request.
@@ -52,3 +65,12 @@ def call_finalizers():
52
65
  except Exception as exx:
53
66
  log.warning("Caught exception in finalizer: {!r}".format(exx))
54
67
  log.debug("Exception in finalizer:", exc_info=True)
68
+
69
+ store = get_request_local_store()
70
+ if 'call_on_teardown' in store:
71
+ for func in store['call_on_teardown']:
72
+ try:
73
+ func()
74
+ except Exception as exx:
75
+ log.warning("Caught exception in finalizer: {!r}".format(exx))
76
+ log.debug("Exception in finalizer:", exc_info=True)
@@ -93,7 +93,7 @@ ENGINE_REGISTRY_CLASSES = {
93
93
  "shared": SharedEngineRegistry,
94
94
  }
95
95
  DEFAULT_REGISTRY_CLASS_NAME = "null"
96
-
96
+ REGISTRY_CONFIG_NAME = "EDUMFA_ENGINE_REGISTRY_CLASS"
97
97
 
98
98
  def get_registry():
99
99
  """
@@ -113,7 +113,7 @@ def get_registry():
113
113
  return app_store["engine_registry"]
114
114
  except KeyError:
115
115
  # create a new engine registry of the appropriate class
116
- registry_class_name = get_app_config_value("EDUMFA_ENGINE_REGISTRY_CLASS", DEFAULT_REGISTRY_CLASS_NAME)
116
+ registry_class_name = get_app_config_value(REGISTRY_CONFIG_NAME, DEFAULT_REGISTRY_CLASS_NAME)
117
117
  if registry_class_name not in ENGINE_REGISTRY_CLASSES:
118
118
  log.warning("Unknown engine registry class: {!r}".format(registry_class_name))
119
119
  registry_class_name = DEFAULT_REGISTRY_CLASS_NAME
@@ -89,7 +89,7 @@ This file is tested in tests/test_lib_tokens_webauthn.py
89
89
 
90
90
  # Default client extensions
91
91
  #
92
- DEFAULT_CLIENT_EXTENSIONS = {'appid': None, 'credProps': {'rk': None} }
92
+ DEFAULT_CLIENT_EXTENSIONS = {'appid': None, 'credProps': {'rk': None}, 'prf': None}
93
93
 
94
94
  # Default authenticator extensions
95
95
  #
@@ -1466,12 +1466,12 @@ class WebAuthnRegistrationResponse:
1466
1466
  # of "are as expected" is specific to the Relying Party and which
1467
1467
  # extensions are in use.
1468
1468
  if not _verify_authenticator_extensions(auth_data, self.expected_registration_authenticator_extensions):
1469
- raise RegistrationRejectedException('Unable to verify authenticator extensions.')
1469
+ raise RegistrationRejectedException('Unable to verify authenticator extensions. {}'.format(WebAuthnRegistrationResponse.get_extensions(auth_data)))
1470
1470
  if not _verify_client_extensions(
1471
1471
  self.registration_response.get('registrationClientExtensions'),
1472
1472
  self.expected_registration_client_extensions
1473
1473
  ):
1474
- raise RegistrationRejectedException('Unable to verify client extensions.')
1474
+ raise RegistrationRejectedException('Unable to verify client extensions. {}'.format(self.registration_response.get("registrationClientExtensions")))
1475
1475
 
1476
1476
  # Step 12b.
1477
1477
  #
@@ -1811,7 +1811,7 @@ class WebAuthnAssertionResponse:
1811
1811
  self.assertion_response.get('assertionClientExtensions'),
1812
1812
  self.expected_assertion_client_extensions
1813
1813
  ):
1814
- raise AuthenticationRejectedException('Unable to verify client extensions.')
1814
+ raise AuthenticationRejectedException('Unable to verify client extensions. {}'.format(self.assertion_response.get('assertionClientExtensions')))
1815
1815
 
1816
1816
  # Step 15.
1817
1817
  #
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: edumfa
3
- Version: 2.7.0
3
+ Version: 2.7.2
4
4
  Summary: eduMFA: identity, multifactor authentication (OTP), authorization, audit
5
5
  Author-email: "edumfa.io" <edumfa@listserv.dfn.de>
6
6
  License: GNU AFFERO GENERAL PUBLIC LICENSE
@@ -647,15 +647,15 @@ Requires-Python: >=3.9
647
647
  Description-Content-Type: text/x-rst
648
648
  License-File: LICENSE
649
649
  License-File: AUTHORS.md
650
- Requires-Dist: alembic==1.14.1
650
+ Requires-Dist: alembic==1.15.1
651
651
  Requires-Dist: argon2-cffi==23.1.0
652
652
  Requires-Dist: argon2-cffi-bindings==21.2.0
653
653
  Requires-Dist: async-timeout==5.0.1
654
654
  Requires-Dist: babel==2.17.0
655
- Requires-Dist: bcrypt==4.2.1
655
+ Requires-Dist: bcrypt==4.3.0
656
656
  Requires-Dist: beautifulsoup4==4.13.3
657
657
  Requires-Dist: blinker==1.9.0
658
- Requires-Dist: cachetools==5.5.1
658
+ Requires-Dist: cachetools==5.5.2
659
659
  Requires-Dist: cbor2==5.6.5
660
660
  Requires-Dist: certifi==2025.1.31
661
661
  Requires-Dist: cffi==1.17.1
@@ -663,7 +663,7 @@ Requires-Dist: charset-normalizer==3.4.1
663
663
  Requires-Dist: click==8.1.8
664
664
  Requires-Dist: configobj==5.0.9
665
665
  Requires-Dist: croniter==6.0.0
666
- Requires-Dist: cryptography==44.0.1
666
+ Requires-Dist: cryptography==44.0.2
667
667
  Requires-Dist: crypt-r==3.13.1; python_version == "3.13" and sys_platform == "linux"
668
668
  Requires-Dist: defusedxml==0.7.1
669
669
  Requires-Dist: flask==3.1.0
@@ -671,12 +671,12 @@ Requires-Dist: flask-babel==4.0.0
671
671
  Requires-Dist: flask-migrate==4.1.0
672
672
  Requires-Dist: flask-sqlalchemy==3.1.1
673
673
  Requires-Dist: google-auth==2.38.0
674
- Requires-Dist: grpcio==1.70.0
675
- Requires-Dist: huey==2.5.2
674
+ Requires-Dist: grpcio==1.71.0
675
+ Requires-Dist: huey==2.5.3
676
676
  Requires-Dist: idna==3.10
677
677
  Requires-Dist: importlib-metadata==8.6.1
678
678
  Requires-Dist: itsdangerous==2.2.0
679
- Requires-Dist: jinja2==3.1.5
679
+ Requires-Dist: jinja2==3.1.6
680
680
  Requires-Dist: ldap3==2.9.1
681
681
  Requires-Dist: lxml==5.3.1
682
682
  Requires-Dist: mako==1.3.9
@@ -693,21 +693,21 @@ Requires-Dist: pyopenssl==25.0.0
693
693
  Requires-Dist: pyrad==2.4
694
694
  Requires-Dist: python-dateutil==2.9.0.post0
695
695
  Requires-Dist: python-gnupg==0.5.4
696
- Requires-Dist: pytz==2025.1
696
+ Requires-Dist: pytz==2025.2
697
697
  Requires-Dist: pyyaml==6.0.2
698
698
  Requires-Dist: redis==5.2.1
699
699
  Requires-Dist: requests==2.32.3
700
700
  Requires-Dist: rsa==4.9
701
- Requires-Dist: segno==1.6.1
701
+ Requires-Dist: segno==1.6.6
702
702
  Requires-Dist: six==1.17.0
703
703
  Requires-Dist: smpplib==2.2.4
704
704
  Requires-Dist: soupsieve==2.6
705
- Requires-Dist: sqlalchemy==2.0.38
706
- Requires-Dist: typing-extensions==4.12.2
705
+ Requires-Dist: sqlalchemy==2.0.39
706
+ Requires-Dist: typing-extensions==4.13.0
707
707
  Requires-Dist: urllib3==2.3.0
708
708
  Requires-Dist: werkzeug==3.1.3
709
709
  Requires-Dist: zipp==3.21.0
710
- Requires-Dist: setuptools==75.8.0
710
+ Requires-Dist: setuptools==78.1.0
711
711
  Provides-Extra: docs
712
712
  Requires-Dist: furo==2024.8.6; extra == "docs"
713
713
  Requires-Dist: docutils==0.21.2; extra == "docs"
@@ -716,7 +716,7 @@ Requires-Dist: packaging==24.2; extra == "docs"
716
716
  Requires-Dist: pyenchant==3.2.2; extra == "docs"
717
717
  Requires-Dist: Pygments==2.19.1; extra == "docs"
718
718
  Requires-Dist: snowballstemmer==2.2.0; extra == "docs"
719
- Requires-Dist: Sphinx==8.1.3; extra == "docs"
719
+ Requires-Dist: Sphinx==8.2.3; extra == "docs"
720
720
  Requires-Dist: sphinxcontrib-applehelp==2.0.0; extra == "docs"
721
721
  Requires-Dist: sphinxcontrib-devhelp==2.0.0; extra == "docs"
722
722
  Requires-Dist: sphinxcontrib-htmlhelp==2.1.0; extra == "docs"
@@ -728,26 +728,27 @@ Requires-Dist: sphinxcontrib-spelling==8.0.1; extra == "docs"
728
728
  Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
729
729
  Requires-Dist: sphinx-inline-tabs==2023.4.21; extra == "docs"
730
730
  Provides-Extra: test
731
- Requires-Dist: attrs==25.1.0; extra == "test"
732
- Requires-Dist: coverage==7.6.12; extra == "test"
731
+ Requires-Dist: attrs==25.3.0; extra == "test"
732
+ Requires-Dist: coverage==7.7.1; extra == "test"
733
733
  Requires-Dist: exceptiongroup==1.2.2; extra == "test"
734
- Requires-Dist: iniconfig==2.0.0; extra == "test"
735
- Requires-Dist: mock==5.1.0; extra == "test"
734
+ Requires-Dist: iniconfig==2.1.0; extra == "test"
735
+ Requires-Dist: mock==5.2.0; extra == "test"
736
736
  Requires-Dist: packaging==24.2; extra == "test"
737
737
  Requires-Dist: pluggy==1.5.0; extra == "test"
738
- Requires-Dist: pyparsing==3.2.1; extra == "test"
739
- Requires-Dist: pytest==8.3.4; extra == "test"
738
+ Requires-Dist: pyparsing==3.2.3; extra == "test"
739
+ Requires-Dist: pytest==8.3.5; extra == "test"
740
740
  Requires-Dist: pytest-cov==6.0.0; extra == "test"
741
- Requires-Dist: responses==0.25.6; extra == "test"
741
+ Requires-Dist: responses==0.25.7; extra == "test"
742
742
  Requires-Dist: testfixtures==8.3.0; extra == "test"
743
743
  Requires-Dist: tomli==2.2.1; extra == "test"
744
- Requires-Dist: types-PyYAML==6.0.12.20241230; extra == "test"
744
+ Requires-Dist: types-PyYAML==6.0.12.20250326; extra == "test"
745
745
  Provides-Extra: postgres
746
746
  Requires-Dist: psycopg2==2.9.10; extra == "postgres"
747
747
  Provides-Extra: hsm
748
748
  Requires-Dist: PyKCS11==1.5.17; extra == "hsm"
749
749
  Provides-Extra: kerberos
750
750
  Requires-Dist: gssapi==1.9.0; extra == "kerberos"
751
+ Dynamic: license-file
751
752
 
752
753
  eduMFA
753
754
  ===========
@@ -1,12 +1,12 @@
1
- alembic==1.14.1
1
+ alembic==1.15.1
2
2
  argon2-cffi==23.1.0
3
3
  argon2-cffi-bindings==21.2.0
4
4
  async-timeout==5.0.1
5
5
  babel==2.17.0
6
- bcrypt==4.2.1
6
+ bcrypt==4.3.0
7
7
  beautifulsoup4==4.13.3
8
8
  blinker==1.9.0
9
- cachetools==5.5.1
9
+ cachetools==5.5.2
10
10
  cbor2==5.6.5
11
11
  certifi==2025.1.31
12
12
  cffi==1.17.1
@@ -14,19 +14,19 @@ charset-normalizer==3.4.1
14
14
  click==8.1.8
15
15
  configobj==5.0.9
16
16
  croniter==6.0.0
17
- cryptography==44.0.1
17
+ cryptography==44.0.2
18
18
  defusedxml==0.7.1
19
19
  flask==3.1.0
20
20
  flask-babel==4.0.0
21
21
  flask-migrate==4.1.0
22
22
  flask-sqlalchemy==3.1.1
23
23
  google-auth==2.38.0
24
- grpcio==1.70.0
25
- huey==2.5.2
24
+ grpcio==1.71.0
25
+ huey==2.5.3
26
26
  idna==3.10
27
27
  importlib-metadata==8.6.1
28
28
  itsdangerous==2.2.0
29
- jinja2==3.1.5
29
+ jinja2==3.1.6
30
30
  ldap3==2.9.1
31
31
  lxml==5.3.1
32
32
  mako==1.3.9
@@ -43,21 +43,21 @@ pyopenssl==25.0.0
43
43
  pyrad==2.4
44
44
  python-dateutil==2.9.0.post0
45
45
  python-gnupg==0.5.4
46
- pytz==2025.1
46
+ pytz==2025.2
47
47
  pyyaml==6.0.2
48
48
  redis==5.2.1
49
49
  requests==2.32.3
50
50
  rsa==4.9
51
- segno==1.6.1
51
+ segno==1.6.6
52
52
  six==1.17.0
53
53
  smpplib==2.2.4
54
54
  soupsieve==2.6
55
- sqlalchemy==2.0.38
56
- typing-extensions==4.12.2
55
+ sqlalchemy==2.0.39
56
+ typing-extensions==4.13.0
57
57
  urllib3==2.3.0
58
58
  werkzeug==3.1.3
59
59
  zipp==3.21.0
60
- setuptools==75.8.0
60
+ setuptools==78.1.0
61
61
 
62
62
  [:python_version == "3.13" and sys_platform == "linux"]
63
63
  crypt-r==3.13.1
@@ -70,7 +70,7 @@ packaging==24.2
70
70
  pyenchant==3.2.2
71
71
  Pygments==2.19.1
72
72
  snowballstemmer==2.2.0
73
- Sphinx==8.1.3
73
+ Sphinx==8.2.3
74
74
  sphinxcontrib-applehelp==2.0.0
75
75
  sphinxcontrib-devhelp==2.0.0
76
76
  sphinxcontrib-htmlhelp==2.1.0
@@ -92,17 +92,17 @@ gssapi==1.9.0
92
92
  psycopg2==2.9.10
93
93
 
94
94
  [test]
95
- attrs==25.1.0
96
- coverage==7.6.12
95
+ attrs==25.3.0
96
+ coverage==7.7.1
97
97
  exceptiongroup==1.2.2
98
- iniconfig==2.0.0
99
- mock==5.1.0
98
+ iniconfig==2.1.0
99
+ mock==5.2.0
100
100
  packaging==24.2
101
101
  pluggy==1.5.0
102
- pyparsing==3.2.1
103
- pytest==8.3.4
102
+ pyparsing==3.2.3
103
+ pytest==8.3.5
104
104
  pytest-cov==6.0.0
105
- responses==0.25.6
105
+ responses==0.25.7
106
106
  testfixtures==8.3.0
107
107
  tomli==2.2.1
108
- types-PyYAML==6.0.12.20241230
108
+ types-PyYAML==6.0.12.20250326
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "edumfa"
7
- version = "2.7.0"
7
+ version = "2.7.2"
8
8
  requires-python = ">=3.9"
9
9
  authors = [{ name = "edumfa.io", email = "edumfa@listserv.dfn.de" }]
10
10
  description = "eduMFA: identity, multifactor authentication (OTP), authorization, audit"
@@ -44,7 +44,7 @@ docs = [
44
44
  "pyenchant==3.2.2",
45
45
  "Pygments==2.19.1",
46
46
  "snowballstemmer==2.2.0",
47
- "Sphinx==8.1.3",
47
+ "Sphinx==8.2.3",
48
48
  "sphinxcontrib-applehelp==2.0.0",
49
49
  "sphinxcontrib-devhelp==2.0.0",
50
50
  "sphinxcontrib-htmlhelp==2.1.0",
@@ -57,20 +57,20 @@ docs = [
57
57
  "sphinx-inline-tabs==2023.4.21",
58
58
  ]
59
59
  test = [
60
- "attrs==25.1.0",
61
- "coverage==7.6.12",
60
+ "attrs==25.3.0",
61
+ "coverage==7.7.1",
62
62
  "exceptiongroup==1.2.2",
63
- "iniconfig==2.0.0",
64
- "mock==5.1.0",
63
+ "iniconfig==2.1.0",
64
+ "mock==5.2.0",
65
65
  "packaging==24.2",
66
66
  "pluggy==1.5.0",
67
- "pyparsing==3.2.1",
68
- "pytest==8.3.4",
67
+ "pyparsing==3.2.3",
68
+ "pytest==8.3.5",
69
69
  "pytest-cov==6.0.0",
70
- "responses==0.25.6",
70
+ "responses==0.25.7",
71
71
  "testfixtures==8.3.0",
72
72
  "tomli==2.2.1",
73
- "types-PyYAML==6.0.12.20241230",
73
+ "types-PyYAML==6.0.12.20250326",
74
74
  ]
75
75
  postgres = ["psycopg2==2.9.10"]
76
76
  hsm = ["PyKCS11==1.5.17"]