edumfa 2.3.0__tar.gz → 2.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (858) hide show
  1. {edumfa-2.3.0/edumfa.egg-info → edumfa-2.4.0}/PKG-INFO +41 -32
  2. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/changelog +48 -0
  3. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/changelog +6 -0
  4. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/prepolicy.py +0 -38
  5. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/validate.py +3 -5
  6. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/app.py +0 -4
  7. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/backup.py +23 -1
  8. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auditmodules/sqlaudit.py +1 -2
  9. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/logginghandler.py +4 -2
  10. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/policy.py +1 -4
  11. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/SQLIdResolver.py +1 -1
  12. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/indexedsecrettoken.py +2 -1
  13. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/footer.html +72 -72
  14. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/header.html +12 -12
  15. {edumfa-2.3.0 → edumfa-2.4.0/edumfa.egg-info}/PKG-INFO +41 -32
  16. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa.egg-info/requires.txt +47 -30
  17. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/env.py +0 -2
  18. {edumfa-2.3.0 → edumfa-2.4.0}/pyproject.toml +15 -12
  19. {edumfa-2.3.0 → edumfa-2.4.0}/requirements.txt +27 -22
  20. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_lib_policy.py +1 -32
  21. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_validate.py +2 -8
  22. {edumfa-2.3.0 → edumfa-2.4.0}/AUTHORS.md +0 -0
  23. {edumfa-2.3.0 → edumfa-2.4.0}/LICENSE +0 -0
  24. {edumfa-2.3.0 → edumfa-2.4.0}/MANIFEST.in +0 -0
  25. {edumfa-2.3.0 → edumfa-2.4.0}/README.rst +0 -0
  26. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/README.md +0 -0
  27. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/apache/edumfaapp.wsgi +0 -0
  28. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/apache/sites-available/edumfa-venv.conf +0 -0
  29. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/apache/sites-available/edumfa.conf +0 -0
  30. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/config/freeradius2/edumfa +0 -0
  31. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/config/freeradius2/mods-perl-edumfa +0 -0
  32. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/config/freeradius3/edumfa +0 -0
  33. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/config/freeradius3/mods-perl-edumfa +0 -0
  34. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/crontab/edumfa +0 -0
  35. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/docker-compose-example.yml +0 -0
  36. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/docker-example/edumfa-policy.conf +0 -0
  37. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/docker-example/edumfa-setup.sh +0 -0
  38. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/docker-example/edumfa.cfg +0 -0
  39. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/docker-setup.sh +0 -0
  40. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/edumfa/dictionary +0 -0
  41. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/edumfa/edumfa.cfg +0 -0
  42. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/edumfa_radius.pm +0 -0
  43. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/gunicorn/edumfaapp.py +0 -0
  44. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/logging.cfg +0 -0
  45. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/nginx/edumfaapp.py +0 -0
  46. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/nginx/sites-available/edumfa +0 -0
  47. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/rlm_perl.ini +0 -0
  48. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/clean +0 -0
  49. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/compat +0 -0
  50. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/control +0 -0
  51. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/copyright +0 -0
  52. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/rules +0 -0
  53. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/source/format +0 -0
  54. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu/source/options +0 -0
  55. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/changelog +0 -0
  56. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/compat +0 -0
  57. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/control +0 -0
  58. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/copyright +0 -0
  59. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/edumfa-radius.install +0 -0
  60. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/edumfa-radius.postinst +0 -0
  61. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/edumfa-radius.postrm +0 -0
  62. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/rules +0 -0
  63. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-radius/source/format +0 -0
  64. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/clean +0 -0
  65. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/compat +0 -0
  66. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/control +0 -0
  67. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-apache2.install +0 -0
  68. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-apache2.postinst +0 -0
  69. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-apache2.postrm +0 -0
  70. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-nginx.install +0 -0
  71. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-nginx.postinst +0 -0
  72. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/edumfa-nginx.postrm +0 -0
  73. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/rules +0 -0
  74. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/source/format +0 -0
  75. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/ubuntu-server/source/options +0 -0
  76. {edumfa-2.3.0 → edumfa-2.4.0}/deploy/uwsgi/apps-available/edumfa.xml +0 -0
  77. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/__init__.py +0 -0
  78. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/__init__.py +0 -0
  79. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/application.py +0 -0
  80. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/audit.py +0 -0
  81. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/auth.py +0 -0
  82. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/before_after.py +0 -0
  83. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/caconnector.py +0 -0
  84. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/clienttype.py +0 -0
  85. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/edumfaserver.py +0 -0
  86. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/event.py +0 -0
  87. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/__init__.py +0 -0
  88. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/decorators.py +0 -0
  89. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/policyhelper.py +0 -0
  90. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/postpolicy.py +0 -0
  91. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/lib/utils.py +0 -0
  92. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/machine.py +0 -0
  93. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/machineresolver.py +0 -0
  94. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/monitoring.py +0 -0
  95. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/periodictask.py +0 -0
  96. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/policy.py +0 -0
  97. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/radiusserver.py +0 -0
  98. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/realm.py +0 -0
  99. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/recover.py +0 -0
  100. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/register.py +0 -0
  101. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/resolver.py +0 -0
  102. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/serviceid.py +0 -0
  103. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/smsgateway.py +0 -0
  104. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/smtpserver.py +0 -0
  105. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/system.py +0 -0
  106. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/token.py +0 -0
  107. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/tokengroup.py +0 -0
  108. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/ttype.py +0 -0
  109. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/api/user.py +0 -0
  110. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/babel.cfg +0 -0
  111. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/__init__.py +0 -0
  112. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/__init__.py +0 -0
  113. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/admin.py +0 -0
  114. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/api.py +0 -0
  115. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/audit.py +0 -0
  116. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/authcache.py +0 -0
  117. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/ca.py +0 -0
  118. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/config.py +0 -0
  119. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/core.py +0 -0
  120. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/event.py +0 -0
  121. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/helper.py +0 -0
  122. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/hsm.py +0 -0
  123. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/main.py +0 -0
  124. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/policy.py +0 -0
  125. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/realm.py +0 -0
  126. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/resolver.py +0 -0
  127. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/commands/manage/token.py +0 -0
  128. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/config.py +0 -0
  129. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/__init__.py +0 -0
  130. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/applications/__init__.py +0 -0
  131. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/applications/base.py +0 -0
  132. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/applications/luks.py +0 -0
  133. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/applications/offline.py +0 -0
  134. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/applications/ssh.py +0 -0
  135. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/apps.py +0 -0
  136. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/audit.py +0 -0
  137. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auditmodules/__init__.py +0 -0
  138. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auditmodules/base.py +0 -0
  139. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auditmodules/containeraudit.py +0 -0
  140. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auditmodules/loggeraudit.py +0 -0
  141. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/auth.py +0 -0
  142. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/authcache.py +0 -0
  143. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/cache/__init__.py +0 -0
  144. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnector.py +0 -0
  145. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/__init__.py +0 -0
  146. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/baseca.py +0 -0
  147. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/caservice_pb2.py +0 -0
  148. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/caservice_pb2_grpc.py +0 -0
  149. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/localca.py +0 -0
  150. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/caconnectors/msca.py +0 -0
  151. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/challenge.py +0 -0
  152. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/challengeresponsedecorators.py +0 -0
  153. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/clientapplication.py +0 -0
  154. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/config.py +0 -0
  155. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/counter.py +0 -0
  156. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/crypto.py +0 -0
  157. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/decorators.py +0 -0
  158. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/edumfaserver.py +0 -0
  159. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/error.py +0 -0
  160. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/event.py +0 -0
  161. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/__init__.py +0 -0
  162. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/base.py +0 -0
  163. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/counterhandler.py +0 -0
  164. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/customuserattributeshandler.py +0 -0
  165. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/federationhandler.py +0 -0
  166. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/requestmangler.py +0 -0
  167. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/responsemangler.py +0 -0
  168. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/scripthandler.py +0 -0
  169. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/tokenhandler.py +0 -0
  170. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/usernotification.py +0 -0
  171. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/eventhandler/webhookeventhandler.py +0 -0
  172. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/framework.py +0 -0
  173. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/importotp.py +0 -0
  174. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/lifecycle.py +0 -0
  175. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/log.py +0 -0
  176. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machine.py +0 -0
  177. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machineresolver.py +0 -0
  178. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machines/__init__.py +0 -0
  179. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machines/base.py +0 -0
  180. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machines/hosts.py +0 -0
  181. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/machines/ldap.py +0 -0
  182. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/monitoringmodules/__init__.py +0 -0
  183. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/monitoringmodules/base.py +0 -0
  184. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/monitoringmodules/sqlstats.py +0 -0
  185. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/monitoringstats.py +0 -0
  186. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/passwordreset.py +0 -0
  187. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/periodictask.py +0 -0
  188. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/pinhandling/__init__.py +0 -0
  189. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/pinhandling/base.py +0 -0
  190. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/policydecorators.py +0 -0
  191. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/pooling.py +0 -0
  192. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/queue.py +0 -0
  193. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/queues/__init__.py +0 -0
  194. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/queues/base.py +0 -0
  195. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/queues/huey_queue.py +0 -0
  196. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/radiusserver.py +0 -0
  197. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/realm.py +0 -0
  198. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolver.py +0 -0
  199. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/HTTPResolver.py +0 -0
  200. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/LDAPIdResolver.py +0 -0
  201. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/PasswdIdResolver.py +0 -0
  202. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/SCIMIdResolver.py +0 -0
  203. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/UserIdResolver.py +0 -0
  204. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/resolvers/__init__.py +0 -0
  205. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/security/__init__.py +0 -0
  206. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/security/aeshsm.py +0 -0
  207. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/security/default.py +0 -0
  208. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/security/encryptkey.py +0 -0
  209. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/security/password/__init__.py +0 -0
  210. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/serviceid.py +0 -0
  211. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/FirebaseProvider.py +0 -0
  212. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/HttpMessageToUidProvider.py +0 -0
  213. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/HttpSMSProvider.py +0 -0
  214. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/SMSProvider.py +0 -0
  215. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/ScriptSMSProvider.py +0 -0
  216. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/SipgateSMSProvider.py +0 -0
  217. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/SmppSMSProvider.py +0 -0
  218. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/SmtpSMSProvider.py +0 -0
  219. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smsprovider/__init__.py +0 -0
  220. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/smtpserver.py +0 -0
  221. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/sqlutils.py +0 -0
  222. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/subscriptions.py +0 -0
  223. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/task/__init__.py +0 -0
  224. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/task/base.py +0 -0
  225. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/task/eventcounter.py +0 -0
  226. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/task/simplestats.py +0 -0
  227. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/token.py +0 -0
  228. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokenclass.py +0 -0
  229. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokengroup.py +0 -0
  230. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/HMAC.py +0 -0
  231. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/__init__.py +0 -0
  232. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/applicationspecificpasswordtoken.py +0 -0
  233. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/certificatetoken.py +0 -0
  234. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/daplugtoken.py +0 -0
  235. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/daypasswordtoken.py +0 -0
  236. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/emailtoken.py +0 -0
  237. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/foureyestoken.py +0 -0
  238. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/hotptoken.py +0 -0
  239. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/legacypushtoken.py +0 -0
  240. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/mOTP.py +0 -0
  241. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/motptoken.py +0 -0
  242. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/ocra.py +0 -0
  243. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/ocratoken.py +0 -0
  244. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/papertoken.py +0 -0
  245. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/passwordtoken.py +0 -0
  246. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/pushtoken.py +0 -0
  247. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/questionnairetoken.py +0 -0
  248. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/radiustoken.py +0 -0
  249. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/registrationtoken.py +0 -0
  250. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/remotetoken.py +0 -0
  251. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/smstoken.py +0 -0
  252. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/spasstoken.py +0 -0
  253. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/sshkeytoken.py +0 -0
  254. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/tantoken.py +0 -0
  255. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/tiqrtoken.py +0 -0
  256. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/totptoken.py +0 -0
  257. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/u2f.py +0 -0
  258. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/u2ftoken.py +0 -0
  259. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/vasco.py +0 -0
  260. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/vascotoken.py +0 -0
  261. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/webauthn.py +0 -0
  262. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/webauthntoken.py +0 -0
  263. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/yubicotoken.py +0 -0
  264. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/tokens/yubikeytoken.py +0 -0
  265. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/user.py +0 -0
  266. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/usercache.py +0 -0
  267. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/utils/__init__.py +0 -0
  268. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/utils/compare.py +0 -0
  269. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/lib/utils/export.py +0 -0
  270. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/messages.pot +0 -0
  271. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/models.py +0 -0
  272. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/README.md +0 -0
  273. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/app.js +0 -0
  274. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/audit/controllers/auditControllers.js +0 -0
  275. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/audit/factories/audit.js +0 -0
  276. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/audit/states/states.js +0 -0
  277. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/audit/views/audit.html +0 -0
  278. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/audit/views/audit.log.html +0 -0
  279. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/components/controllers/componentControllers.js +0 -0
  280. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/components/factories/component.js +0 -0
  281. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/components/states/states.js +0 -0
  282. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/components/views/component.clienttype.html +0 -0
  283. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/components/views/component.html +0 -0
  284. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/configControllers.js +0 -0
  285. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/eduMfaServerController.js +0 -0
  286. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/eventController.js +0 -0
  287. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/ldapMachineResolverController.js +0 -0
  288. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/periodicTaskController.js +0 -0
  289. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/radiusServerController.js +0 -0
  290. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/serviceidController.js +0 -0
  291. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/smsgatewayController.js +0 -0
  292. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/smtpServerController.js +0 -0
  293. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/controllers/tokengroupController.js +0 -0
  294. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/factories/config.js +0 -0
  295. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/states/states.js +0 -0
  296. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.caconnectors.list.html +0 -0
  297. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.caconnectors.local.html +0 -0
  298. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.caconnectors.microsoft.html +0 -0
  299. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.edumfaserver.edit.html +0 -0
  300. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.edumfaserver.list.html +0 -0
  301. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.events.details.html +0 -0
  302. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.events.html +0 -0
  303. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.events.list.html +0 -0
  304. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.html +0 -0
  305. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.machineresolvers.html +0 -0
  306. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.mresolvers.hosts.html +0 -0
  307. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.mresolvers.ldap.html +0 -0
  308. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.mresolvers.list.html +0 -0
  309. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.periodictasks.details.html +0 -0
  310. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.periodictasks.html +0 -0
  311. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.periodictasks.list.html +0 -0
  312. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.policies.details.html +0 -0
  313. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.policies.html +0 -0
  314. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.policies.list.html +0 -0
  315. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.radius.edit.html +0 -0
  316. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.radius.list.html +0 -0
  317. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.realms.html +0 -0
  318. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.realms.list.html +0 -0
  319. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.html +0 -0
  320. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.http.html +0 -0
  321. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.ldap.html +0 -0
  322. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.list.html +0 -0
  323. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.passwd.html +0 -0
  324. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.scim.html +0 -0
  325. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.resolvers.sql.html +0 -0
  326. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.serviceid.edit.html +0 -0
  327. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.serviceid.list.html +0 -0
  328. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.smsgateway.edit.html +0 -0
  329. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.smsgateway.list.html +0 -0
  330. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.smtp.edit.html +0 -0
  331. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.smtp.list.html +0 -0
  332. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.system.doc.html +0 -0
  333. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.system.edit.html +0 -0
  334. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.system.html +0 -0
  335. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.daypassword.html +0 -0
  336. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.email.html +0 -0
  337. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.hotp.html +0 -0
  338. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.question.html +0 -0
  339. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.radius.html +0 -0
  340. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.remote.html +0 -0
  341. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.sms.html +0 -0
  342. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.tiqr.html +0 -0
  343. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.totp.html +0 -0
  344. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.u2f.html +0 -0
  345. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.webauthn.html +0 -0
  346. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.yubico.html +0 -0
  347. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.token.yubikey.html +0 -0
  348. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.tokengroup.edit.html +0 -0
  349. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.tokengroup.list.html +0 -0
  350. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/config.tokens.html +0 -0
  351. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/config/views/dialog.confirm_delete.html +0 -0
  352. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dashboard/controllers/dashboardControllers.js +0 -0
  353. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dashboard/states/states.js +0 -0
  354. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dashboard/views/dashboard.html +0 -0
  355. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dialogs/views/dialog.about.html +0 -0
  356. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dialogs/views/dialog.autocreate_realm.html +0 -0
  357. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dialogs/views/dialog.lock.html +0 -0
  358. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dialogs/views/dialog.no.token.html +0 -0
  359. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/dialogs/views/dialog.welcome.html +0 -0
  360. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/controllers/directives.js +0 -0
  361. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.assigntoken.html +0 -0
  362. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.assignuser.html +0 -0
  363. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.attachmachine.html +0 -0
  364. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.attachtoken.html +0 -0
  365. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.csvdownload.html +0 -0
  366. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.filter.table.html +0 -0
  367. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.policyconditions.html +0 -0
  368. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/directives/views/directive.tokendata.html +0 -0
  369. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/filters/filters.js +0 -0
  370. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/controllers/loginControllers.js +0 -0
  371. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/factories/auth.js +0 -0
  372. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/factories/u2f.js +0 -0
  373. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/factories/webauthn.js +0 -0
  374. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/states/states.js +0 -0
  375. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/views/enter-response.html +0 -0
  376. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/views/login.html +0 -0
  377. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/views/offline.html +0 -0
  378. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/login/views/pinchange.html +0 -0
  379. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/controllers/machineController.js +0 -0
  380. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/controllers/machineDetailsController.js +0 -0
  381. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/factories/machine.js +0 -0
  382. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/states/states.js +0 -0
  383. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/views/machine.details.html +0 -0
  384. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/views/machine.html +0 -0
  385. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/machine/views/machine.list.html +0 -0
  386. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/recovery/controllers/recoveryControllers.js +0 -0
  387. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/recovery/factories/recoveryFactory.js +0 -0
  388. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/recovery/states/states.js +0 -0
  389. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/recovery/views/recovery.html +0 -0
  390. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/recovery/views/recovery.reset.html +0 -0
  391. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/register/controllers/registerControllers.js +0 -0
  392. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/register/factories/registerFactory.js +0 -0
  393. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/register/states/states.js +0 -0
  394. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/register/views/register.html +0 -0
  395. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenApplicationsController.js +0 -0
  396. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenChallengesController.js +0 -0
  397. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenControllers.js +0 -0
  398. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenDetailController.js +0 -0
  399. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenGetSerialController.js +0 -0
  400. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/controllers/tokenLostController.js +0 -0
  401. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/factories/token.js +0 -0
  402. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/factories/validate.js +0 -0
  403. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/states/states.js +0 -0
  404. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/dialog.ask_token_delete.html +0 -0
  405. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.applications.html +0 -0
  406. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.applications.offline.html +0 -0
  407. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.applications.ssh.html +0 -0
  408. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.assign.html +0 -0
  409. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.challenges.html +0 -0
  410. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.details.html +0 -0
  411. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.display.apps.html +0 -0
  412. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.4eyes.html +0 -0
  413. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.applspec.html +0 -0
  414. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.certificate.html +0 -0
  415. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.daypassword.html +0 -0
  416. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.edupush.html +0 -0
  417. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.email.html +0 -0
  418. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.hotp.html +0 -0
  419. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.html +0 -0
  420. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.indexedsecret.html +0 -0
  421. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.motp.html +0 -0
  422. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.paper.html +0 -0
  423. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.push.html +0 -0
  424. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.question.html +0 -0
  425. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.radius.html +0 -0
  426. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.registration.html +0 -0
  427. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.remote.html +0 -0
  428. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.sms.html +0 -0
  429. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.spass.html +0 -0
  430. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.sshkey.html +0 -0
  431. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.tan.html +0 -0
  432. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.tiqr.html +0 -0
  433. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.totp.html +0 -0
  434. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.u2f.html +0 -0
  435. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.vasco.html +0 -0
  436. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.webauthn.html +0 -0
  437. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.yubico.html +0 -0
  438. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enroll.yubikey.html +0 -0
  439. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.applspec.html +0 -0
  440. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.certificate.html +0 -0
  441. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.daypassword.html +0 -0
  442. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.edupush.html +0 -0
  443. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.hotp.html +0 -0
  444. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.motp.html +0 -0
  445. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.paper.html +0 -0
  446. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.push.html +0 -0
  447. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.registration.html +0 -0
  448. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.tan.html +0 -0
  449. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.tiqr.html +0 -0
  450. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.totp.html +0 -0
  451. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.u2f.html +0 -0
  452. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.enrolled.webauthn.html +0 -0
  453. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.getserial.html +0 -0
  454. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.html +0 -0
  455. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.import.html +0 -0
  456. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.list.html +0 -0
  457. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/token/views/token.lost.html +0 -0
  458. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/translation/translations.js +0 -0
  459. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/controllers/userControllers.js +0 -0
  460. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/factories/user.js +0 -0
  461. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/states/states.js +0 -0
  462. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/dialog.ask_user_delete.html +0 -0
  463. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.add.dynamic.form.fields.html +0 -0
  464. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.add.html +0 -0
  465. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.details.html +0 -0
  466. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.html +0 -0
  467. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.list.html +0 -0
  468. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/components/user/views/user.password.html +0 -0
  469. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/angular-inform.css +0 -0
  470. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/angular-inform.css.map +0 -0
  471. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/bootstrap-theme.css +0 -0
  472. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/bootstrap-theme.css.map +0 -0
  473. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/bootstrap.css +0 -0
  474. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/bootstrap.css.map +0 -0
  475. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/hotkeys.css +0 -0
  476. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/css/isteven-multi-select.css +0 -0
  477. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.eot +0 -0
  478. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.svg +0 -0
  479. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.ttf +0 -0
  480. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff +0 -0
  481. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff2 +0 -0
  482. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/angular-inform.js +0 -0
  483. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/angular-inform.js.map +0 -0
  484. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/angular.js +0 -0
  485. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/bootstrap.js +0 -0
  486. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/hotkeys.js +0 -0
  487. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/jquery.js +0 -0
  488. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/angular-gettext.js +0 -0
  489. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/angular-idle.js +0 -0
  490. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/angular-sanitize.js +0 -0
  491. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js +0 -0
  492. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js.map +0 -0
  493. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/isteven-multi-select.js +0 -0
  494. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ngmodules/ng-file-upload.js +0 -0
  495. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/u2f-api.js +0 -0
  496. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/ui-bootstrap-tpls.js +0 -0
  497. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/contrib/js/webauthn-client/edumfa-webauthn.js +0 -0
  498. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/baseline.css +0 -0
  499. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/content.css +0 -0
  500. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/eduMFA-logo.png +0 -0
  501. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/highlight.css +0 -0
  502. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/menu.css +0 -0
  503. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/papertoken.css +0 -0
  504. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/signin.css +0 -0
  505. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/css/table-ui.css +0 -0
  506. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/customize/README.rst +0 -0
  507. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/favicon.png +0 -0
  508. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/img/FIDO-U2F-Security-Key-444x444.png +0 -0
  509. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/img/plugup.jpg +0 -0
  510. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/img/solokeys.png +0 -0
  511. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/img/u2fzero.png +0 -0
  512. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/package-lock.json +0 -0
  513. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/package.json +0 -0
  514. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/providers/errorMessageProvider.js +0 -0
  515. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/providers/versioningProvider.js +0 -0
  516. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/baseline.html +0 -0
  517. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/cert_request_form.html +0 -0
  518. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/deactivated.html +0 -0
  519. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/documentation.rst +0 -0
  520. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/index.html +0 -0
  521. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/menu.html +0 -0
  522. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/templates/token_enrolled.html +0 -0
  523. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/static/update_contrib.sh +0 -0
  524. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/cs/LC_MESSAGES/messages.mo +0 -0
  525. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/cs/LC_MESSAGES/messages.po +0 -0
  526. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/de/LC_MESSAGES/messages.mo +0 -0
  527. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/de/LC_MESSAGES/messages.po +0 -0
  528. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/es/LC_MESSAGES/messages.mo +0 -0
  529. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/es/LC_MESSAGES/messages.po +0 -0
  530. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/fr/LC_MESSAGES/messages.mo +0 -0
  531. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/fr/LC_MESSAGES/messages.po +0 -0
  532. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/it/LC_MESSAGES/messages.mo +0 -0
  533. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/it/LC_MESSAGES/messages.po +0 -0
  534. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/nl/LC_MESSAGES/messages.mo +0 -0
  535. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/nl/LC_MESSAGES/messages.po +0 -0
  536. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/pl/LC_MESSAGES/messages.mo +0 -0
  537. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/pl/LC_MESSAGES/messages.po +0 -0
  538. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
  539. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/pt_BR/LC_MESSAGES/messages.po +0 -0
  540. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/ro/LC_MESSAGES/messages.mo +0 -0
  541. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/ro/LC_MESSAGES/messages.po +0 -0
  542. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/ru/LC_MESSAGES/messages.mo +0 -0
  543. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/ru/LC_MESSAGES/messages.po +0 -0
  544. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/si/LC_MESSAGES/messages.mo +0 -0
  545. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/si/LC_MESSAGES/messages.po +0 -0
  546. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/tr/LC_MESSAGES/messages.mo +0 -0
  547. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/tr/LC_MESSAGES/messages.po +0 -0
  548. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/zh_Hans/LC_MESSAGES/messages.mo +0 -0
  549. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/zh_Hans/LC_MESSAGES/messages.po +0 -0
  550. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
  551. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/translations/zh_Hant/LC_MESSAGES/messages.po +0 -0
  552. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/webui/__init__.py +0 -0
  553. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/webui/certificate.py +0 -0
  554. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa/webui/login.py +0 -0
  555. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa.egg-info/SOURCES.txt +0 -0
  556. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa.egg-info/dependency_links.txt +0 -0
  557. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa.egg-info/entry_points.txt +0 -0
  558. {edumfa-2.3.0 → edumfa-2.4.0}/edumfa.egg-info/top_level.txt +0 -0
  559. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/README +0 -0
  560. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/alembic.ini +0 -0
  561. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/script.py.mako +0 -0
  562. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/006d4747f858_.py +0 -0
  563. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/00762b3f7a60_.py +0 -0
  564. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/0c7123345224_.py +0 -0
  565. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/0d011e94a8e8_.py +0 -0
  566. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/140ba0ca4f07_.py +0 -0
  567. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/145ce80decd_.py +0 -0
  568. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/14a1bcb10018_.py +0 -0
  569. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/19f727d285e2_.py +0 -0
  570. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/1a0710df148b_.py +0 -0
  571. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/1a69e5e5e2ac_.py +0 -0
  572. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/1edda52b619f_.py +0 -0
  573. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/204d8d4f351e_.py +0 -0
  574. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/205bda834127_.py +0 -0
  575. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/20969b4cbf06_.py +0 -0
  576. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/2118e566df16_.py +0 -0
  577. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/2181294eed0b_.py +0 -0
  578. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/22558d9f3178_.py +0 -0
  579. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/239995464c48_.py +0 -0
  580. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/2551ee982544_.py +0 -0
  581. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/2ac117d0a6f5_.py +0 -0
  582. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/2c9430cfc66b_.py +0 -0
  583. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/307a4fbe8a05_.py +0 -0
  584. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3236a1abf1c6_.py +0 -0
  585. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3429d523e51f_.py +0 -0
  586. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/36428afb2457_.py +0 -0
  587. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/37e6b49fc686_.py +0 -0
  588. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3ae3c668f444_.py +0 -0
  589. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3ba618f6b820_.py +0 -0
  590. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3c6e9dd7fbac_.py +0 -0
  591. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3d7f8b29cbb1_.py +0 -0
  592. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/3f7e8583ea2_.py +0 -0
  593. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/4023571658f8_.py +0 -0
  594. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/4238eac8ccab_.py +0 -0
  595. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/449903fb6e35_.py +0 -0
  596. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/48ee74b8a7c8_.py +0 -0
  597. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/49a04e560d96_.py +0 -0
  598. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/4a0aec37e7cf_.py +0 -0
  599. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/4d9178fa8336_.py +0 -0
  600. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/4f32a4e1bf33_.py +0 -0
  601. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/50adc980d625_.py +0 -0
  602. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/5402fd96fbca_.py +0 -0
  603. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/58e4f7ebb705_.py +0 -0
  604. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/59ef3e03bc62_.py +0 -0
  605. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/5cb310101a1f_.py +0 -0
  606. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/631ec59e1ca6_.py +0 -0
  607. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/7d82d8b680a9_.py +0 -0
  608. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/849170064430_.py +0 -0
  609. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/86f40f535d7c_.py +0 -0
  610. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/888b56ed5dcb_.py +0 -0
  611. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/89e57ed16379_.py +0 -0
  612. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/8d40dbcfda25_.py +0 -0
  613. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/9155f0d3d028_.py +0 -0
  614. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/a28f2733897b_.py +0 -0
  615. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/a63df077051a_.py +0 -0
  616. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/a7e91b18a460_.py +0 -0
  617. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/b9131d0686eb_.py +0 -0
  618. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/cb6d7b7bae63_.py +0 -0
  619. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d2ae8e54b628_.py +0 -0
  620. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d3c0f0403a84_.py +0 -0
  621. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d415d490eb05_.py +0 -0
  622. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d5870fd2f2a4_.py +0 -0
  623. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d6b40a745e5_.py +0 -0
  624. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/d756b34061ff_.py +0 -0
  625. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/dceb6cd3c41e_.py +0 -0
  626. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/e360c56bcf8c_.py +0 -0
  627. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/e5cbeb7c177_.py +0 -0
  628. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/ef29ba43e290_.py +0 -0
  629. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/fa07bd604a75.py +0 -0
  630. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/fabcf24d9304_.py +0 -0
  631. {edumfa-2.3.0 → edumfa-2.4.0}/migrations/versions/ff26585932ec_.py +0 -0
  632. {edumfa-2.3.0 → edumfa-2.4.0}/setup.cfg +0 -0
  633. {edumfa-2.3.0 → edumfa-2.4.0}/setup.py +0 -0
  634. {edumfa-2.3.0 → edumfa-2.4.0}/tests/__init__.py +0 -0
  635. {edumfa-2.3.0 → edumfa-2.4.0}/tests/base.py +0 -0
  636. {edumfa-2.3.0 → edumfa-2.4.0}/tests/conftest.py +0 -0
  637. {edumfa-2.3.0 → edumfa-2.4.0}/tests/ldap3mock.py +0 -0
  638. {edumfa-2.3.0 → edumfa-2.4.0}/tests/mscamock.py +0 -0
  639. {edumfa-2.3.0 → edumfa-2.4.0}/tests/pkcs11mock.py +0 -0
  640. {edumfa-2.3.0 → edumfa-2.4.0}/tests/queuemock.py +0 -0
  641. {edumfa-2.3.0 → edumfa-2.4.0}/tests/radiusmock.py +0 -0
  642. {edumfa-2.3.0 → edumfa-2.4.0}/tests/redismock.py +0 -0
  643. {edumfa-2.3.0 → edumfa-2.4.0}/tests/smppmock.py +0 -0
  644. {edumfa-2.3.0 → edumfa-2.4.0}/tests/smtpmock.py +0 -0
  645. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_2stepinit.py +0 -0
  646. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_applications.py +0 -0
  647. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_audit.py +0 -0
  648. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_auth.py +0 -0
  649. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_caconnector.py +0 -0
  650. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_clienttype.py +0 -0
  651. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_edumfaserver.py +0 -0
  652. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_events.py +0 -0
  653. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_lib_utils.py +0 -0
  654. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_machineresolver.py +0 -0
  655. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_machines.py +0 -0
  656. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_machines_serviceid.py +0 -0
  657. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_monitoring.py +0 -0
  658. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_offline_no_token.py +0 -0
  659. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_periodictask.py +0 -0
  660. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_policy.py +0 -0
  661. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_push_validate.py +0 -0
  662. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_radiusserver.py +0 -0
  663. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_register.py +0 -0
  664. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_roles.py +0 -0
  665. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_serviceids.py +0 -0
  666. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_smsgateway.py +0 -0
  667. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_smtpserver.py +0 -0
  668. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_system.py +0 -0
  669. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_token.py +0 -0
  670. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_tokengroup.py +0 -0
  671. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_ttype.py +0 -0
  672. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_u2f.py +0 -0
  673. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_api_users.py +0 -0
  674. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_app.py +0 -0
  675. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_db_model.py +0 -0
  676. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_applications.py +0 -0
  677. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_apps.py +0 -0
  678. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_audit.py +0 -0
  679. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_auth.py +0 -0
  680. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_authcache.py +0 -0
  681. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_caconnector.py +0 -0
  682. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_challenges.py +0 -0
  683. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_clientapplication.py +0 -0
  684. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_config.py +0 -0
  685. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_counter.py +0 -0
  686. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_crypto.py +0 -0
  687. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_edumfaserver.py +0 -0
  688. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_eventhandler_logging.py +0 -0
  689. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_eventhandler_usernotification.py +0 -0
  690. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_events.py +0 -0
  691. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_framework.py +0 -0
  692. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_importotp.py +0 -0
  693. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_lifecycle.py +0 -0
  694. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_machine_resolver_ldap.py +0 -0
  695. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_machines.py +0 -0
  696. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_machinetokens.py +0 -0
  697. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_monitoringstats.py +0 -0
  698. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_periodictask.py +0 -0
  699. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_policy.py +0 -0
  700. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_policydecorator.py +0 -0
  701. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_pooling.py +0 -0
  702. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_queue.py +0 -0
  703. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_radiusserver.py +0 -0
  704. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_realm.py +0 -0
  705. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_recovery.py +0 -0
  706. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_resolver.py +0 -0
  707. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_serviceid.py +0 -0
  708. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_smsprovider.py +0 -0
  709. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_smtpserver.py +0 -0
  710. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_sqlutils.py +0 -0
  711. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_subscriptions.py +0 -0
  712. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_task_eventcounter.py +0 -0
  713. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_task_simplestats.py +0 -0
  714. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tasks.py +0 -0
  715. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_token.py +0 -0
  716. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokenclass.py +0 -0
  717. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokengroup.py +0 -0
  718. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_certificate.py +0 -0
  719. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_daplug.py +0 -0
  720. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_daypassword.py +0 -0
  721. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_email.py +0 -0
  722. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_foureyes.py +0 -0
  723. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_hotp.py +0 -0
  724. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_indexedsecret.py +0 -0
  725. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_motp.py +0 -0
  726. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_paper.py +0 -0
  727. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_passwordtoken.py +0 -0
  728. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_push.py +0 -0
  729. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_questionnaire.py +0 -0
  730. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_radius.py +0 -0
  731. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_registration.py +0 -0
  732. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_remote.py +0 -0
  733. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_sms.py +0 -0
  734. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_spass.py +0 -0
  735. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_ssh.py +0 -0
  736. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_tan.py +0 -0
  737. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_tiqr.py +0 -0
  738. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_totp.py +0 -0
  739. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_u2f.py +0 -0
  740. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_vasco.py +0 -0
  741. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_webauthn.py +0 -0
  742. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_yubico.py +0 -0
  743. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_tokens_yubikey.py +0 -0
  744. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_user.py +0 -0
  745. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_usercache.py +0 -0
  746. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_utils.py +0 -0
  747. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_lib_utils_compare.py +0 -0
  748. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_mock_ldap3.py +0 -0
  749. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_resolver_realm.py +0 -0
  750. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_scripts.py +0 -0
  751. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_ui_certificate.py +0 -0
  752. {edumfa-2.3.0 → edumfa-2.4.0}/tests/test_ui_login.py +0 -0
  753. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/FIDO-U2F-Security-Key-444x444.png +0 -0
  754. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/NetKnights.pem +0 -0
  755. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/__init__.py +0 -0
  756. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/altstatic/templates/testui.html +0 -0
  757. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/attestation/yubico.pem +0 -0
  758. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/audit.sqlite +0 -0
  759. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/cacert.pem +0 -0
  760. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/cakey.pem +0 -0
  761. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/index.txt +0 -0
  762. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/index.txt.attr +0 -0
  763. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/openssl.cnf +0 -0
  764. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/serial +0 -0
  765. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ca/templates.yaml +0 -0
  766. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/dictionary +0 -0
  767. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/does_not_exist +0 -0
  768. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/emailtemplate.html +0 -0
  769. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/empty.oath +0 -0
  770. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/enckey +0 -0
  771. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/enckey.enc +0 -0
  772. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/event.conf +0 -0
  773. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/fancytoken.py +0 -0
  774. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/firebase-test.json +0 -0
  775. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/google-services.json +0 -0
  776. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/gpg/public.pem +0 -0
  777. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/gpg/pubring.gpg +0 -0
  778. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/gpg/random_seed +0 -0
  779. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/gpg/secring.gpg +0 -0
  780. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/gpg/trustdb.gpg +0 -0
  781. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/hosts +0 -0
  782. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/import.oath +0 -0
  783. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/import.oath.asc +0 -0
  784. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/jwt_sign.key +0 -0
  785. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/logging.cfg +0 -0
  786. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/logging.yml +0 -0
  787. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/logging_broken.yaml +0 -0
  788. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/msca-connector/ca.pem +0 -0
  789. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/msca-connector/privacyidea-encrypted.key +0 -0
  790. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/msca-connector/privacyidea.key +0 -0
  791. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/msca-connector/privacyidea.pem +0 -0
  792. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/ocra.csv +0 -0
  793. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/passwd +0 -0
  794. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/passwd-duplicate-name +0 -0
  795. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/passwords +0 -0
  796. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/policy.cfg +0 -0
  797. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/policy.conf +0 -0
  798. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/policy_empty_file.cfg +0 -0
  799. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/private.pem +0 -0
  800. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/pskc-aes.xml +0 -0
  801. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/pskc-password.xml +0 -0
  802. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/public.pem +0 -0
  803. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/pw-2nd-resolver +0 -0
  804. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/scripts/fail.sh +0 -0
  805. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/scripts/ls.sh +0 -0
  806. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/scripts/success.sh +0 -0
  807. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/test.sub +0 -0
  808. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/test2.sub +0 -0
  809. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/testuser-api.sqlite +0 -0
  810. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/testuser.sqlite +0 -0
  811. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/testusercache.sqlite +0 -0
  812. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/trusted_attestation_roots/solokeys_device_attestation_ca.pem +0 -0
  813. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/trusted_attestation_roots/yubico_u2f_device_attestation_ca.pem +0 -0
  814. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/yubico-oath-long.csv +0 -0
  815. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/yubico-oath.csv +0 -0
  816. {edumfa-2.3.0 → edumfa-2.4.0}/tests/testdata/yubico.csv +0 -0
  817. {edumfa-2.3.0 → edumfa-2.4.0}/tools/creategoogleauthenticator-file +0 -0
  818. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-authorizedkeys +0 -0
  819. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-convert-base32.py +0 -0
  820. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-convert-token +0 -0
  821. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-convert-token.1 +0 -0
  822. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-convert-xml-to-csv +0 -0
  823. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-ad-users +0 -0
  824. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-ad-users.1 +0 -0
  825. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-certificate +0 -0
  826. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-certificate.1 +0 -0
  827. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-pwidresolver-user +0 -0
  828. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-pwidresolver-user.1 +0 -0
  829. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-sqlidresolver-user +0 -0
  830. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-sqlidresolver-user.1 +0 -0
  831. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-userdb +0 -0
  832. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-create-userdb.1 +0 -0
  833. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-cron +0 -0
  834. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-diag +0 -0
  835. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-expired-users +0 -0
  836. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-export-edumfa-counter.py +0 -0
  837. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-export-linotp-counter.py +0 -0
  838. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-fetchssh +0 -0
  839. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-fetchssh.1 +0 -0
  840. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-fix-access-rights +0 -0
  841. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-fix-access-rights.1 +0 -0
  842. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-get-serial +0 -0
  843. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-get-unused-tokens +0 -0
  844. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-migrate-linotp.py +0 -0
  845. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-pip-update +0 -0
  846. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-pip-update.1 +0 -0
  847. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-queue-huey +0 -0
  848. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-schema-upgrade +0 -0
  849. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-standalone +0 -0
  850. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-sync-owncloud.py +0 -0
  851. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-token-janitor +0 -0
  852. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-update-counter.py +0 -0
  853. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-update-linotp-counter.py +0 -0
  854. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-user-action +0 -0
  855. {edumfa-2.3.0 → edumfa-2.4.0}/tools/edumfa-usercache-cleanup +0 -0
  856. {edumfa-2.3.0 → edumfa-2.4.0}/tools/getgooglecodes +0 -0
  857. {edumfa-2.3.0 → edumfa-2.4.0}/tools/reset-edumfa +0 -0
  858. {edumfa-2.3.0 → edumfa-2.4.0}/tools/ssha.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edumfa
3
- Version: 2.3.0
3
+ Version: 2.4.0
4
4
  Summary: eduMFA: identity, multifactor authentication (OTP), authorization, audit
5
5
  Author-email: "edumfa.io" <edumfa@listserv.dfn.de>
6
6
  License: GNU AFFERO GENERAL PUBLIC LICENSE
@@ -647,31 +647,32 @@ Requires-Python: >=3.8
647
647
  Description-Content-Type: text/x-rst
648
648
  License-File: LICENSE
649
649
  License-File: AUTHORS.md
650
- Requires-Dist: alembic==1.13.3
650
+ Requires-Dist: alembic==1.14.0
651
651
  Requires-Dist: argon2-cffi==23.1.0
652
652
  Requires-Dist: argon2-cffi-bindings==21.2.0
653
- Requires-Dist: async-timeout==4.0.3
653
+ Requires-Dist: async-timeout==5.0.1
654
654
  Requires-Dist: babel==2.16.0
655
- Requires-Dist: bcrypt==4.2.0
655
+ Requires-Dist: bcrypt==4.2.1
656
656
  Requires-Dist: beautifulsoup4==4.12.3
657
- Requires-Dist: blinker==1.8.2
657
+ Requires-Dist: blinker==1.8.2; python_version < "3.9"
658
+ Requires-Dist: blinker==1.9.0; python_version >= "3.9"
658
659
  Requires-Dist: cachetools==5.5.0
659
- Requires-Dist: cbor2==5.6.4
660
+ Requires-Dist: cbor2==5.6.5
660
661
  Requires-Dist: certifi==2024.8.30
661
662
  Requires-Dist: cffi==1.17.1
662
- Requires-Dist: charset-normalizer==3.3.2
663
+ Requires-Dist: charset-normalizer==3.4.0
663
664
  Requires-Dist: click==8.1.7
664
665
  Requires-Dist: configobj==5.0.9
665
- Requires-Dist: croniter==3.0.3
666
- Requires-Dist: cryptography==42.0.8
666
+ Requires-Dist: croniter==5.0.1
667
+ Requires-Dist: cryptography==43.0.3
667
668
  Requires-Dist: defusedxml==0.7.1
668
- Requires-Dist: flask==3.0.3
669
+ Requires-Dist: flask==3.0.3; python_version < "3.9"
670
+ Requires-Dist: flask==3.1.0; python_version >= "3.9"
669
671
  Requires-Dist: flask-babel==4.0.0
670
672
  Requires-Dist: flask-migrate==4.0.7
671
673
  Requires-Dist: flask-sqlalchemy==3.1.1
672
- Requires-Dist: flask-versioned==0.9.4.post20101221
673
- Requires-Dist: google-auth==2.35.0
674
- Requires-Dist: grpcio==1.66.2
674
+ Requires-Dist: google-auth==2.36.0
675
+ Requires-Dist: grpcio==1.68.0
675
676
  Requires-Dist: huey==2.5.2
676
677
  Requires-Dist: idna==3.10
677
678
  Requires-Dist: importlib-metadata==8.5.0
@@ -679,15 +680,17 @@ Requires-Dist: itsdangerous==2.2.0
679
680
  Requires-Dist: jinja2==3.1.4
680
681
  Requires-Dist: ldap3==2.9.1
681
682
  Requires-Dist: lxml==5.3.0
682
- Requires-Dist: mako==1.3.5
683
- Requires-Dist: markupsafe==2.1.5
683
+ Requires-Dist: mako==1.3.6
684
+ Requires-Dist: markupsafe==2.1.5; python_version < "3.9"
685
+ Requires-Dist: markupsafe==3.0.2; python_version >= "3.9"
684
686
  Requires-Dist: netaddr==1.3.0
685
687
  Requires-Dist: passlib==1.7.4
686
688
  Requires-Dist: pyasn1==0.6.1
687
689
  Requires-Dist: pyasn1-modules==0.4.1
688
690
  Requires-Dist: pycparser==2.22
689
- Requires-Dist: pydash==8.0.3
690
- Requires-Dist: pyjwt==2.9.0
691
+ Requires-Dist: pydash==8.0.4
692
+ Requires-Dist: pyjwt==2.9.0; python_version < "3.9"
693
+ Requires-Dist: pyjwt==2.10.1; python_version >= "3.9"
691
694
  Requires-Dist: pymysql==1.1.1
692
695
  Requires-Dist: pyopenssl==24.2.1
693
696
  Requires-Dist: pyrad==2.4
@@ -695,28 +698,31 @@ Requires-Dist: python-dateutil==2.9.0.post0
695
698
  Requires-Dist: python-gnupg==0.5.3
696
699
  Requires-Dist: pytz==2024.2
697
700
  Requires-Dist: pyyaml==6.0.2
698
- Requires-Dist: redis==5.1.0
701
+ Requires-Dist: redis==5.2.0
699
702
  Requires-Dist: requests==2.32.3
700
703
  Requires-Dist: rsa==4.9
701
704
  Requires-Dist: segno==1.6.1
702
705
  Requires-Dist: six==1.16.0
703
706
  Requires-Dist: smpplib==2.2.3
704
707
  Requires-Dist: soupsieve==2.6
705
- Requires-Dist: sqlalchemy==2.0.35
708
+ Requires-Dist: sqlalchemy==2.0.36
706
709
  Requires-Dist: typing-extensions==4.12.2
707
710
  Requires-Dist: urllib3==2.2.3
708
- Requires-Dist: werkzeug==3.0.4
709
- Requires-Dist: zipp==3.20.2
710
- Requires-Dist: setuptools==75.1.0
711
+ Requires-Dist: werkzeug==3.0.6; python_version < "3.9"
712
+ Requires-Dist: werkzeug==3.1.3; python_version >= "3.9"
713
+ Requires-Dist: zipp==3.20.2; python_version < "3.9"
714
+ Requires-Dist: zipp==3.21.0; python_version >= "3.9"
715
+ Requires-Dist: setuptools==75.3.0; python_version < "3.9"
716
+ Requires-Dist: setuptools==75.6.0; python_version >= "3.9"
711
717
  Provides-Extra: docs
712
718
  Requires-Dist: furo==2024.8.6; extra == "docs"
713
719
  Requires-Dist: docutils==0.21.2; extra == "docs"
714
720
  Requires-Dist: imagesize==1.4.1; extra == "docs"
715
- Requires-Dist: packaging==24.1; extra == "docs"
721
+ Requires-Dist: packaging==24.2; extra == "docs"
716
722
  Requires-Dist: pyenchant==3.2.2; extra == "docs"
717
723
  Requires-Dist: Pygments==2.18.0; extra == "docs"
718
724
  Requires-Dist: snowballstemmer==2.2.0; extra == "docs"
719
- Requires-Dist: Sphinx==8.0.2; extra == "docs"
725
+ Requires-Dist: Sphinx==8.1.3; extra == "docs"
720
726
  Requires-Dist: sphinxcontrib-applehelp==2.0.0; extra == "docs"
721
727
  Requires-Dist: sphinxcontrib-devhelp==2.0.0; extra == "docs"
722
728
  Requires-Dist: sphinxcontrib-htmlhelp==2.1.0; extra == "docs"
@@ -729,25 +735,28 @@ Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
729
735
  Requires-Dist: sphinx-inline-tabs==2023.4.21; extra == "docs"
730
736
  Provides-Extra: test
731
737
  Requires-Dist: attrs==24.2.0; extra == "test"
732
- Requires-Dist: coverage==7.6.1; extra == "test"
738
+ Requires-Dist: coverage==7.6.1; python_version < "3.9" and extra == "test"
739
+ Requires-Dist: coverage==7.6.8; python_version >= "3.9" and extra == "test"
733
740
  Requires-Dist: exceptiongroup==1.2.2; extra == "test"
734
741
  Requires-Dist: iniconfig==2.0.0; extra == "test"
735
742
  Requires-Dist: mock==5.1.0; extra == "test"
736
- Requires-Dist: packaging==24.1; extra == "test"
743
+ Requires-Dist: packaging==24.2; extra == "test"
737
744
  Requires-Dist: pluggy==1.5.0; extra == "test"
738
- Requires-Dist: pyparsing==3.1.4; extra == "test"
745
+ Requires-Dist: pyparsing==3.1.4; python_version < "3.9" and extra == "test"
746
+ Requires-Dist: pyparsing==3.2.0; python_version >= "3.9" and extra == "test"
739
747
  Requires-Dist: pytest==8.3.3; extra == "test"
740
- Requires-Dist: pytest-cov==5.0.0; extra == "test"
748
+ Requires-Dist: pytest-cov==5.0.0; python_version < "3.9" and extra == "test"
749
+ Requires-Dist: pytest-cov==6.0.0; python_version >= "3.9" and extra == "test"
741
750
  Requires-Dist: responses==0.25.3; extra == "test"
742
751
  Requires-Dist: testfixtures==8.3.0; extra == "test"
743
- Requires-Dist: tomli==2.0.1; extra == "test"
752
+ Requires-Dist: tomli==2.2.1; extra == "test"
744
753
  Requires-Dist: types-PyYAML==6.0.12.20240917; extra == "test"
745
754
  Provides-Extra: postgres
746
- Requires-Dist: psycopg2==2.9.9; extra == "postgres"
755
+ Requires-Dist: psycopg2==2.9.10; extra == "postgres"
747
756
  Provides-Extra: hsm
748
- Requires-Dist: PyKCS11==1.5.16; extra == "hsm"
757
+ Requires-Dist: PyKCS11==1.5.17; extra == "hsm"
749
758
  Provides-Extra: kerberos
750
- Requires-Dist: gssapi==1.8.3; extra == "kerberos"
759
+ Requires-Dist: gssapi==1.9.0; extra == "kerberos"
751
760
 
752
761
  eduMFA
753
762
  ===========
@@ -1,3 +1,51 @@
1
+ edumfa (2.4.0{{CODENAME}}) {{CODENAME}}; urgency=medium
2
+
3
+ * Add different lock-table-options for backups with galera by @pmainz in https://github.com/eduMFA/eduMFA/pull/370
4
+ * chore(deps): update codecov/codecov-action action to v5 by @renovate in https://github.com/eduMFA/eduMFA/pull/428
5
+ * chore(deps): update dependency alembic to v1.14.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/409
6
+ * chore(deps): update dependency async-timeout to v5.0.1 by @renovate in https://github.com/eduMFA/eduMFA/pull/412
7
+ * chore(deps): update dependency bcrypt to v4.2.1 by @renovate in https://github.com/eduMFA/eduMFA/pull/436
8
+ * chore(deps): update dependency blinker to v1.9.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/416
9
+ * chore(deps): update dependency cbor2 to v5.6.5 by @renovate in https://github.com/eduMFA/eduMFA/pull/362
10
+ * chore(deps): update dependency charset-normalizer to v3.4.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/361
11
+ * chore(deps): update dependency coverage to v7.6.4 by @renovate in https://github.com/eduMFA/eduMFA/pull/367
12
+ * chore(deps): update dependency croniter to v5 by @renovate in https://github.com/eduMFA/eduMFA/pull/398
13
+ * chore(deps): update dependency cryptography to v43.0.3 by @renovate in https://github.com/eduMFA/eduMFA/pull/379
14
+ * chore(deps): update dependency flask to v3.1.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/424
15
+ * chore(deps): update dependency google-auth to v2.36.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/413
16
+ * chore(deps): update dependency grpcio to v1.68.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/431
17
+ * chore(deps): update dependency gssapi to v1.9.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/347
18
+ * chore(deps): update dependency mako to v1.3.6 by @renovate in https://github.com/eduMFA/eduMFA/pull/381
19
+ * chore(deps): update dependency markupsafe to v3 by @renovate in https://github.com/eduMFA/eduMFA/pull/356
20
+ * chore(deps): update dependency psycopg2 to v2.9.10 by @renovate in https://github.com/eduMFA/eduMFA/pull/373
21
+ * chore(deps): update dependency pydash to v8.0.4 by @renovate in https://github.com/eduMFA/eduMFA/pull/407
22
+ * chore(deps): update dependency pyjwt to v2.10.1 by @renovate in https://github.com/eduMFA/eduMFA/pull/444
23
+ * chore(deps): update dependency pykcs11 to v1.5.17 by @renovate in https://github.com/eduMFA/eduMFA/pull/374
24
+ * chore(deps): update dependency pyparsing to v3.2.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/369
25
+ * chore(deps): update dependency redis to v5.2.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/387
26
+ * chore(deps): update dependency setuptools to v75.6.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/437
27
+ * chore(deps): update dependency sphinx to v8.1.3 by @renovate in https://github.com/eduMFA/eduMFA/pull/368
28
+ * chore(deps): update dependency sqlalchemy to v2.0.36 by @renovate in https://github.com/eduMFA/eduMFA/pull/371
29
+ * chore(deps): update dependency tomli to v2.0.2 by @renovate in https://github.com/eduMFA/eduMFA/pull/346
30
+ * chore(deps): update dependency werkzeug to v3.1.3 by @renovate in https://github.com/eduMFA/eduMFA/pull/415
31
+ * chore(deps): update dependency zipp to v3.21.0 by @renovate in https://github.com/eduMFA/eduMFA/pull/417
32
+ * chore: Improve Ubuntu workflow by @Luc1412 in https://github.com/eduMFA/eduMFA/pull/385
33
+ * chore: extend filter & pyparsing fix by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/376
34
+ * chore: remove flask versioned dependency by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/352
35
+ * feat: deprecate and remove `application_tokentype` policy by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/353
36
+ * fix(deps): update dependency coverage to v7.6.8 by @renovate in https://github.com/eduMFA/eduMFA/pull/438
37
+ * fix(deps): update dependency packaging to v24.2 by @renovate in https://github.com/eduMFA/eduMFA/pull/414
38
+ * fix(deps): update dependency pytest-cov to v6 by @renovate in https://github.com/eduMFA/eduMFA/pull/399
39
+ * fix(deps): update dependency tomli to v2.2.1 by @renovate in https://github.com/eduMFA/eduMFA/pull/443
40
+ * fix: create venv for bandit scan by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/365
41
+ * fix: for events without serial or tokenowner, log 'N/A', not all tokens by @j-hoff in https://github.com/eduMFA/eduMFA/pull/445
42
+ * fix: indexedsecret tokens should honor DefaultChallengeValidityTime by @j-hoff in https://github.com/eduMFA/eduMFA/pull/411
43
+ * fix: remove password encoding from migration by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/345
44
+ * fix: session usage by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/449
45
+ * fix: session usage for audit module by @fritterhoff in https://github.com/eduMFA/eduMFA/pull/450
46
+
47
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 29 Nov 2024 12:00:00 +0100
48
+
1
49
  edumfa (2.3.0{{CODENAME}}) {{CODENAME}}; urgency=medium
2
50
 
3
51
  * Add documentation for Docker images + optimize Dockerfile
@@ -1,3 +1,9 @@
1
+ edumfa-server (2.4.0{{CODENAME}}) {{CODENAME}}; urgency=medium
2
+
3
+ * update version number
4
+
5
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 29 Nov 2024 12:00:00 +0100
6
+
1
7
  edumfa-server (2.3.0{{CODENAME}}) {{CODENAME}}; urgency=medium
2
8
 
3
9
  * update version number
@@ -323,44 +323,6 @@ def check_otp_pin(request=None, action=None):
323
323
  return True
324
324
 
325
325
 
326
- def check_application_tokentype(request=None, action=None):
327
- """
328
- This pre policy checks if the request is allowed to specify the tokentype.
329
- If the policy is not set, a possibly set parameter "type" is removed
330
- from the request.
331
-
332
- Check ACTION.APPLICATION_TOKENTYPE
333
-
334
- This decorator should wrap
335
- /validate/check, /validate/samlcheck and /validate/triggerchallenge.
336
-
337
- :param request: The request that is intercepted during the API call
338
- :type request: Request Object
339
- :param action: An optional Action
340
- :type action: basestring
341
- :returns: Always true. Modified the parameter request
342
- """
343
- application_allowed = Match.generic(g, scope=SCOPE.AUTHZ,
344
- action=ACTION.APPLICATION_TOKENTYPE,
345
- user_object=request.User,
346
- active=True).any()
347
-
348
- # if the application is not allowed, we remove the tokentype
349
- if not application_allowed and "type" in request.all_data:
350
- # We need the tokentype to be present in usernameless authentication
351
- is_usernameless = Match.generic(g, scope=SCOPE.AUTH,
352
- action=WEBAUTHNACTION.USERNAMELESS_AUTHN,
353
- user_object=None,
354
- active=True).any()
355
- if "user" not in request.all_data and "serial" not in request.all_data and is_usernameless:
356
- return True
357
- log.info("Removing parameter 'type' from request, "
358
- "since application is not allowed to authenticate by token type.")
359
- del request.all_data["type"]
360
-
361
- return True
362
-
363
-
364
326
  def sms_identifiers(request=None, action=None):
365
327
  """
366
328
  This is a token specific wrapper for sms tokens
@@ -73,7 +73,7 @@ from edumfa.api.lib.prepolicy import (prepolicy, set_realm,
73
73
  api_key_required, mangle,
74
74
  save_client_application_type,
75
75
  check_base_action, pushtoken_wait, webauthntoken_auth, webauthntoken_authz,
76
- webauthntoken_request, check_application_tokentype,
76
+ webauthntoken_request,
77
77
  increase_failcounter_on_challenge, legacypushtoken_wait)
78
78
  from edumfa.api.lib.postpolicy import (postpolicy,
79
79
  check_tokentype, check_serial,
@@ -203,7 +203,6 @@ def offlinerefill():
203
203
  @postpolicy(check_serial, request=request)
204
204
  @postpolicy(autoassign, request=request)
205
205
  @add_serial_from_response_to_g
206
- @prepolicy(check_application_tokentype, request=request)
207
206
  @prepolicy(pushtoken_wait, request=request)
208
207
  @prepolicy(legacypushtoken_wait, request=request)
209
208
  @prepolicy(set_realm, request=request)
@@ -239,7 +238,7 @@ def check():
239
238
  :param realm: The realm of the user, who tries to authenticate. If the
240
239
  realm is omitted, the user is looked up in the default realm.
241
240
  :param type: The tokentype of the tokens, that are taken into account during
242
- authentication. Requires the *authz* policy :ref:`application_tokentype_policy`.
241
+ authentication.
243
242
  It is ignored when a distinct serial is given.
244
243
  :param pass: The password, that consists of the OTP PIN and the OTP value.
245
244
  :param otponly: If set to 1, only the OTP value is verified. This is used
@@ -447,7 +446,6 @@ def check():
447
446
  @postpolicy(preferred_client_mode, request=request)
448
447
  @add_serial_from_response_to_g
449
448
  @check_user_or_serial_in_request(request)
450
- @prepolicy(check_application_tokentype, request=request)
451
449
  @prepolicy(increase_failcounter_on_challenge, request=request)
452
450
  @prepolicy(check_base_action, request, action=ACTION.TRIGGERCHALLENGE)
453
451
  @prepolicy(webauthntoken_request, request=request)
@@ -468,7 +466,7 @@ def trigger_challenge():
468
466
  realm is omitted, the user is looked up in the default realm.
469
467
  :param serial: The serial number of the token.
470
468
  :param type: The tokentype of the tokens, that are taken into account during
471
- authentication. Requires authz policy application_tokentype.
469
+ authentication.
472
470
  Is ignored when a distinct serial is given.
473
471
 
474
472
  :return: a json result with a "result" of the number of matching
@@ -31,7 +31,6 @@ import yaml
31
31
  from flask import Flask, request, Response
32
32
  from flask_babel import Babel
33
33
  from flask_migrate import Migrate
34
- from flaskext.versioned import Versioned
35
34
 
36
35
  # we need this import to add the before/after request function to the blueprints
37
36
  import edumfa.api.before_after
@@ -130,9 +129,6 @@ def create_app(config_name="development",
130
129
  if config_name:
131
130
  app.config.from_object(config[config_name])
132
131
 
133
- # Set up flask-versioned
134
- versioned = Versioned(app, format='%(path)s?v=%(version)s')
135
-
136
132
  try:
137
133
  # Try to load the given config_file.
138
134
  # If it does not exist, just ignore it.
@@ -143,7 +143,17 @@ def restore(backup_file: str):
143
143
  @click.option("-r", "--radius_dir", help="Path to FreeRADIUS config directory",
144
144
  type=click.Path(exists=True, file_okay=False, readable=True), default=None, show_default=True)
145
145
  @click.option("-e", "--enckey", is_flag=True, help="Add the encryption key to the backup")
146
- def create(target_dir: str, config_dir: str, radius_dir=None, enckey: bool = False):
146
+ @click.option("-l", "--lock_table_strategy", type=click.Choice(["LAT","ST","SLT"], case_sensitive=False),
147
+ help="""
148
+ Set the strategy for how to lock tables (only needed for mariadb galera cluster).
149
+ Options are:\n
150
+ LAT: Lock ALL tables in ALL databases! (not recommended for productive instances or
151
+ if the cluster has more databases than just edumfa; requires at least RELOAD privilege);\n
152
+ ST: Single transaction (only for InnoDB);\n
153
+ SLT: Skip lock tables (may lead to inconsistent dumps)
154
+ """,
155
+ default=None)
156
+ def create(target_dir: str, config_dir: str, radius_dir=None, enckey: bool = False, lock_table_strategy: str = None):
147
157
  """
148
158
  Create a new backup of the database and the configuration. The default
149
159
  does not include the encryption key. Use the 'enckey' option to also
@@ -152,6 +162,11 @@ def create(target_dir: str, config_dir: str, radius_dir=None, enckey: bool = Fal
152
162
 
153
163
  If you want to also include the RADIUS configuration into the backup
154
164
  specify a directory using 'radius_directory'.
165
+
166
+ MariaDB Galera cluster currently does not support the LOCK TABLE option
167
+ causing the backup to fail. Therefore when using galera a different lock
168
+ table strategy needs to be set via the '-l' option.
169
+ Please read option documentation and choose your option carefully!
155
170
  """
156
171
  CONF_DIR = config_dir
157
172
  DATE = datetime.now().strftime("%Y%m%d-%H%M")
@@ -187,6 +202,13 @@ def create(target_dir: str, config_dir: str, radius_dir=None, enckey: bool = Fal
187
202
  if parsed_sqluri.port:
188
203
  cmd.extend(['-P', str(parsed_sqluri.port)])
189
204
  cmd.extend(['-B', shlex_quote(database), '-r', shlex_quote(sqlfile)])
205
+ if lock_table_strategy:
206
+ if lock_table_strategy.upper() == 'LAT':
207
+ cmd.append('--lock-all-tables')
208
+ elif lock_table_strategy.upper() == 'ST':
209
+ cmd.append('--single-transaction')
210
+ elif lock_table_strategy.upper() == 'SLT':
211
+ cmd.append('--skip-lock-tables')
190
212
  call(cmd, shell=False)
191
213
  elif sqltype in PSQL_DIALECTS:
192
214
  env = os.environ.copy()
@@ -150,8 +150,7 @@ class Audit(AuditBase):
150
150
  # create a configured "Session" class. ``scoped_session`` is not
151
151
  # necessary because we do not share session objects among threads.
152
152
  # We use it anyway as a safety measure.
153
- Session = scoped_session(sessionmaker(bind=self.engine))
154
- self.session = Session()
153
+ self.session = scoped_session(sessionmaker(bind=self.engine))
155
154
  # Ensure that the connection gets returned to the pool when the request has
156
155
  # been handled. This may close an already-closed session, but this is not a problem.
157
156
  register_finalizer(self._finalize_session)
@@ -147,9 +147,11 @@ class LoggingEventHandler(BaseEventHandler):
147
147
  tokens = get_tokens(serial=serial)
148
148
  if tokens:
149
149
  tokentype = tokens[0].get_tokentype()
150
- else:
151
- token_objects = get_tokens(user=tokenowner)
150
+ elif tokenowner:
151
+ token_objects = get_tokens(user=tokenowner, active=True)
152
152
  serial = ','.join([tok.get_serial() for tok in token_objects])
153
+ else:
154
+ serial = 'N/A'
153
155
 
154
156
  tags = create_tag_dict(logged_in_user=logged_in_user,
155
157
  request=request,
@@ -2292,10 +2292,7 @@ def get_static_policy_definitions(scope=None):
2292
2292
  },
2293
2293
  ACTION.APPLICATION_TOKENTYPE: {
2294
2294
  'type': 'bool',
2295
- 'desc': _("Allow the application to choose which token types should be used "
2296
- "for authentication. Application may set the parameter 'type' in "
2297
- "the request. Works with validate/check, validate/samlcheck and "
2298
- "validate/triggerchallenge.")
2295
+ 'desc': _("<b>DEPRECATED:</b> This policy does not apply any more. Every application is allowed to set the requested tokentype.")
2299
2296
  },
2300
2297
  ACTION.AUTHMAXSUCCESS: {
2301
2298
  'type': 'str',
@@ -485,7 +485,7 @@ class IdResolver (UserIdResolver):
485
485
  # which involves the connect-string and the pool settings.
486
486
  self.engine = get_engine(self.getResolverId(), self._create_engine)
487
487
  # We use ``scoped_session``.
488
- self.session = scoped_session(sessionmaker(bind=self.engine))()
488
+ self.session = scoped_session(sessionmaker(bind=self.engine))
489
489
  # Session should be closed on teardown
490
490
  register_finalizer(self.session.close)
491
491
  self.session._model_changes = {}
@@ -36,6 +36,7 @@ returns -1.
36
36
 
37
37
  import logging
38
38
  import datetime
39
+ from edumfa.lib.config import get_from_config
39
40
  from edumfa.lib.tokenclass import TokenClass, AUTHENTICATIONMODE
40
41
  from edumfa.lib.policy import SCOPE, ACTION, GROUP, get_action_values_from_options
41
42
  from edumfa.lib.crypto import urandom, safe_compare
@@ -210,7 +211,7 @@ class IndexedSecretTokenClass(TokenClass):
210
211
  options) or DEFAULT_POSITION_COUNT)
211
212
 
212
213
  attributes = {'state': transactionid}
213
- validity = 120
214
+ validity = int(get_from_config('DefaultChallengeValidityTime', 120))
214
215
 
215
216
  if self.is_active() is True:
216
217
  # We need to get a number of random positions from the secret string
@@ -1,88 +1,88 @@
1
1
 
2
2
 
3
3
 
4
- <ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.about.html" | versioned }}'">
4
+ <ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.about.html" }}'">
5
5
  </ng-include>
6
6
 
7
- <ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.lock.html" | versioned }}'">
7
+ <ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.lock.html" }}'">
8
8
  </ng-include>
9
9
 
10
- <ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.autocreate_realm.html" | versioned }}'">
10
+ <ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.autocreate_realm.html" }}'">
11
11
  </ng-include>
12
12
 
13
- <ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.welcome.html" | versioned }}'">
13
+ <ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.welcome.html" }}'">
14
14
  </ng-include>
15
15
 
16
- <ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.no.token.html" | versioned }}'">
16
+ <ng-include src="'{{ instance }}/{{ "static/components/dialogs/views/dialog.no.token.html" }}'">
17
17
  </ng-include>
18
18
 
19
19
  <!--load all javascripts after the HTML part-->
20
- <script src="{{ instance }}/{{ "static/contrib/js/angular.js" | versioned }}"></script>
21
- <script src="{{ instance }}/{{ "static/contrib/js/ui-bootstrap-tpls.js" | versioned }}"></script>
22
- <script src="{{ instance }}/{{ "static/contrib/js/jquery.js" | versioned }}"></script>
23
- <script src="{{ instance }}/{{ "static/contrib/js/bootstrap.js" | versioned }}"></script>
24
- <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/isteven-multi-select.js" | versioned }}"></script>
25
- <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/ng-file-upload.js" | versioned }}"></script>
26
- <script src="{{ instance }}/{{ "static/contrib/js/hotkeys.js" | versioned }}"></script>
27
- <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-ui-router.js" | versioned }}"></script>
28
- <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-idle.js" | versioned }}"></script>
29
- <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-gettext.js" | versioned }}"></script>
30
- <script src="{{ instance }}/{{ "static/components/translation/translations.js" | versioned }}"></script>
31
- <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-sanitize.js" | versioned }}"></script>
32
- <script src="{{ instance }}/{{ "static/app.js" | versioned }}"></script>
33
- <script src="{{ instance }}/{{ "static/providers/versioningProvider.js" | versioned }}"></script>
34
- <script src="{{ instance }}/{{ "static/providers/errorMessageProvider.js" | versioned }}"></script>
35
- <script src="{{ instance }}/{{ "static/components/directives/controllers/directives.js" | versioned }}"></script>
36
- <script src="{{ instance }}/{{ "static/components/login/factories/auth.js" | versioned }}"></script>
37
- <script src="{{ instance }}/{{ "static/components/login/factories/u2f.js" | versioned }}"></script>
38
- <script src="{{ instance }}/{{ "static/components/login/factories/webauthn.js" | versioned }}"></script>
39
- <script src="{{ instance }}/{{ "static/components/login/states/states.js" | versioned }}"></script>
40
- <script src="{{ instance }}/{{ "static/components/login/controllers/loginControllers.js" | versioned }}"></script>
41
- <script src="{{ instance }}/{{ "static/components/dashboard/controllers/dashboardControllers.js" | versioned }}"></script>
42
- <script src="{{ instance }}/{{ "static/components/dashboard/states/states.js" | versioned }}"></script>
43
- <script src="{{ instance }}/{{ "static/components/token/factories/token.js" | versioned }}"></script>
44
- <script src="{{ instance }}/{{ "static/components/token/factories/validate.js" | versioned }}"></script>
45
- <script src="{{ instance }}/{{ "static/components/token/states/states.js" | versioned }}"></script>
46
- <script src="{{ instance }}/{{ "static/components/token/controllers/tokenControllers.js" | versioned }}"></script>
47
- <script src="{{ instance }}/{{ "static/components/token/controllers/tokenDetailController.js" | versioned }}"></script>
48
- <script src="{{ instance }}/{{ "static/components/token/controllers/tokenLostController.js" | versioned }}"></script>
49
- <script src="{{ instance }}/{{ "static/components/token/controllers/tokenGetSerialController.js" | versioned }}"></script>
50
- <script src="{{ instance }}/{{ "static/components/token/controllers/tokenChallengesController.js" | versioned }}"></script>
51
- <script src="{{ instance }}/{{ "static/components/token/controllers/tokenApplicationsController.js" | versioned }}"></script>
52
- <script src="{{ instance }}/{{ "static/components/user/factories/user.js" | versioned }}"></script>
53
- <script src="{{ instance }}/{{ "static/components/user/states/states.js" | versioned }}"></script>
54
- <script src="{{ instance }}/{{ "static/components/user/controllers/userControllers.js" | versioned }}"></script>
55
- <script src="{{ instance }}/{{ "static/components/audit/factories/audit.js" | versioned }}"></script>
56
- <script src="{{ instance }}/{{ "static/components/audit/states/states.js" | versioned }}"></script>
57
- <script src="{{ instance }}/{{ "static/components/audit/controllers/auditControllers.js" | versioned }}"></script>
58
- <script src="{{ instance }}/{{ "static/components/components/factories/component.js" | versioned }}"></script>
59
- <script src="{{ instance }}/{{ "static/components/components/states/states.js" | versioned }}"></script>
60
- <script src="{{ instance }}/{{ "static/components/components/controllers/componentControllers.js" | versioned }}"></script>
61
- <script src="{{ instance }}/{{ "static/components/config/factories/config.js" | versioned }}"></script>
62
- <script src="{{ instance }}/{{ "static/components/config/states/states.js" | versioned }}"></script>
63
- <script src="{{ instance }}/{{ "static/components/config/controllers/configControllers.js" | versioned }}"></script>
64
- <script src="{{ instance }}/{{ "static/components/config/controllers/eventController.js" | versioned }}"></script>
65
- <script src="{{ instance }}/{{ "static/components/config/controllers/periodicTaskController.js" | versioned }}"></script>
66
- <script src="{{ instance }}/{{ "static/components/config/controllers/ldapMachineResolverController.js" | versioned }}"></script>
67
- <script src="{{ instance }}/{{ "static/components/config/controllers/smtpServerController.js" | versioned }}"></script>
68
- <script src="{{ instance }}/{{ "static/components/config/controllers/radiusServerController.js" | versioned }}"></script>
69
- <script src="{{ instance }}/{{ "static/components/config/controllers/tokengroupController.js" | versioned }}"></script>
70
- <script src="{{ instance }}/{{ "static/components/config/controllers/serviceidController.js" | versioned }}"></script>
71
- <script src="{{ instance }}/{{ "static/components/config/controllers/eduMfaServerController.js" | versioned }}"></script>
72
- <script src="{{ instance }}/{{ "static/components/config/controllers/smsgatewayController.js" | versioned }}"></script>
73
- <script src="{{ instance }}/{{ "static/components/machine/factories/machine.js" | versioned }}"></script>
74
- <script src="{{ instance }}/{{ "static/components/machine/states/states.js" | versioned }}"></script>
75
- <script src="{{ instance }}/{{ "static/components/machine/controllers/machineController.js" | versioned }}"></script>
76
- <script src="{{ instance }}/{{ "static/components/machine/controllers/machineDetailsController.js" | versioned }}"></script>
77
- <script src="{{ instance }}/{{ "static/components/register/states/states.js" | versioned }}"></script>
78
- <script src="{{ instance }}/{{ "static/components/register/controllers/registerControllers.js" | versioned }}"></script>
79
- <script src="{{ instance }}/{{ "static/components/register/factories/registerFactory.js" | versioned }}"></script>
80
- <script src="{{ instance }}/{{ "static/components/recovery/states/states.js" | versioned }}"></script>
81
- <script src="{{ instance }}/{{ "static/components/recovery/controllers/recoveryControllers.js" | versioned }}"></script>
82
- <script src="{{ instance }}/{{ "static/components/recovery/factories/recoveryFactory.js" | versioned }}"></script>
83
- <script src="{{ instance }}/{{ "static/components/filters/filters.js" | versioned }}"></script>
84
- <script src="{{ instance }}/{{ "static/contrib/js/angular-inform.js" | versioned }}"></script>
85
- <script src="{{ instance }}/{{ "static/contrib/js/webauthn-client/edumfa-webauthn.js" | versioned }}"></script>
86
- <script src="{{ instance }}/{{ "static/contrib/js/u2f-api.js" | versioned }}"></script>
20
+ <script src="{{ instance }}/{{ "static/contrib/js/angular.js" }}"></script>
21
+ <script src="{{ instance }}/{{ "static/contrib/js/ui-bootstrap-tpls.js" }}"></script>
22
+ <script src="{{ instance }}/{{ "static/contrib/js/jquery.js" }}"></script>
23
+ <script src="{{ instance }}/{{ "static/contrib/js/bootstrap.js" }}"></script>
24
+ <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/isteven-multi-select.js" }}"></script>
25
+ <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/ng-file-upload.js" }}"></script>
26
+ <script src="{{ instance }}/{{ "static/contrib/js/hotkeys.js" }}"></script>
27
+ <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-ui-router.js" }}"></script>
28
+ <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-idle.js" }}"></script>
29
+ <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-gettext.js" }}"></script>
30
+ <script src="{{ instance }}/{{ "static/components/translation/translations.js" }}"></script>
31
+ <script src="{{ instance }}/{{ "static/contrib/js/ngmodules/angular-sanitize.js" }}"></script>
32
+ <script src="{{ instance }}/{{ "static/app.js" }}"></script>
33
+ <script src="{{ instance }}/{{ "static/providers/versioningProvider.js" }}"></script>
34
+ <script src="{{ instance }}/{{ "static/providers/errorMessageProvider.js" }}"></script>
35
+ <script src="{{ instance }}/{{ "static/components/directives/controllers/directives.js" }}"></script>
36
+ <script src="{{ instance }}/{{ "static/components/login/factories/auth.js" }}"></script>
37
+ <script src="{{ instance }}/{{ "static/components/login/factories/u2f.js" }}"></script>
38
+ <script src="{{ instance }}/{{ "static/components/login/factories/webauthn.js" }}"></script>
39
+ <script src="{{ instance }}/{{ "static/components/login/states/states.js" }}"></script>
40
+ <script src="{{ instance }}/{{ "static/components/login/controllers/loginControllers.js" }}"></script>
41
+ <script src="{{ instance }}/{{ "static/components/dashboard/controllers/dashboardControllers.js" }}"></script>
42
+ <script src="{{ instance }}/{{ "static/components/dashboard/states/states.js" }}"></script>
43
+ <script src="{{ instance }}/{{ "static/components/token/factories/token.js" }}"></script>
44
+ <script src="{{ instance }}/{{ "static/components/token/factories/validate.js" }}"></script>
45
+ <script src="{{ instance }}/{{ "static/components/token/states/states.js" }}"></script>
46
+ <script src="{{ instance }}/{{ "static/components/token/controllers/tokenControllers.js" }}"></script>
47
+ <script src="{{ instance }}/{{ "static/components/token/controllers/tokenDetailController.js" }}"></script>
48
+ <script src="{{ instance }}/{{ "static/components/token/controllers/tokenLostController.js" }}"></script>
49
+ <script src="{{ instance }}/{{ "static/components/token/controllers/tokenGetSerialController.js" }}"></script>
50
+ <script src="{{ instance }}/{{ "static/components/token/controllers/tokenChallengesController.js" }}"></script>
51
+ <script src="{{ instance }}/{{ "static/components/token/controllers/tokenApplicationsController.js" }}"></script>
52
+ <script src="{{ instance }}/{{ "static/components/user/factories/user.js" }}"></script>
53
+ <script src="{{ instance }}/{{ "static/components/user/states/states.js" }}"></script>
54
+ <script src="{{ instance }}/{{ "static/components/user/controllers/userControllers.js" }}"></script>
55
+ <script src="{{ instance }}/{{ "static/components/audit/factories/audit.js" }}"></script>
56
+ <script src="{{ instance }}/{{ "static/components/audit/states/states.js" }}"></script>
57
+ <script src="{{ instance }}/{{ "static/components/audit/controllers/auditControllers.js" }}"></script>
58
+ <script src="{{ instance }}/{{ "static/components/components/factories/component.js" }}"></script>
59
+ <script src="{{ instance }}/{{ "static/components/components/states/states.js" }}"></script>
60
+ <script src="{{ instance }}/{{ "static/components/components/controllers/componentControllers.js" }}"></script>
61
+ <script src="{{ instance }}/{{ "static/components/config/factories/config.js" }}"></script>
62
+ <script src="{{ instance }}/{{ "static/components/config/states/states.js" }}"></script>
63
+ <script src="{{ instance }}/{{ "static/components/config/controllers/configControllers.js" }}"></script>
64
+ <script src="{{ instance }}/{{ "static/components/config/controllers/eventController.js" }}"></script>
65
+ <script src="{{ instance }}/{{ "static/components/config/controllers/periodicTaskController.js" }}"></script>
66
+ <script src="{{ instance }}/{{ "static/components/config/controllers/ldapMachineResolverController.js" }}"></script>
67
+ <script src="{{ instance }}/{{ "static/components/config/controllers/smtpServerController.js" }}"></script>
68
+ <script src="{{ instance }}/{{ "static/components/config/controllers/radiusServerController.js" }}"></script>
69
+ <script src="{{ instance }}/{{ "static/components/config/controllers/tokengroupController.js" }}"></script>
70
+ <script src="{{ instance }}/{{ "static/components/config/controllers/serviceidController.js" }}"></script>
71
+ <script src="{{ instance }}/{{ "static/components/config/controllers/eduMfaServerController.js" }}"></script>
72
+ <script src="{{ instance }}/{{ "static/components/config/controllers/smsgatewayController.js" }}"></script>
73
+ <script src="{{ instance }}/{{ "static/components/machine/factories/machine.js" }}"></script>
74
+ <script src="{{ instance }}/{{ "static/components/machine/states/states.js" }}"></script>
75
+ <script src="{{ instance }}/{{ "static/components/machine/controllers/machineController.js" }}"></script>
76
+ <script src="{{ instance }}/{{ "static/components/machine/controllers/machineDetailsController.js" }}"></script>
77
+ <script src="{{ instance }}/{{ "static/components/register/states/states.js" }}"></script>
78
+ <script src="{{ instance }}/{{ "static/components/register/controllers/registerControllers.js" }}"></script>
79
+ <script src="{{ instance }}/{{ "static/components/register/factories/registerFactory.js" }}"></script>
80
+ <script src="{{ instance }}/{{ "static/components/recovery/states/states.js" }}"></script>
81
+ <script src="{{ instance }}/{{ "static/components/recovery/controllers/recoveryControllers.js" }}"></script>
82
+ <script src="{{ instance }}/{{ "static/components/recovery/factories/recoveryFactory.js" }}"></script>
83
+ <script src="{{ instance }}/{{ "static/components/filters/filters.js" }}"></script>
84
+ <script src="{{ instance }}/{{ "static/contrib/js/angular-inform.js" }}"></script>
85
+ <script src="{{ instance }}/{{ "static/contrib/js/webauthn-client/edumfa-webauthn.js" }}"></script>
86
+ <script src="{{ instance }}/{{ "static/contrib/js/u2f-api.js" }}"></script>
87
87
  </body>
88
88
  </html>