edumfa 2.0.0__tar.gz → 2.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (857) hide show
  1. {edumfa-2.0.0/edumfa.egg-info → edumfa-2.0.2}/PKG-INFO +7 -8
  2. {edumfa-2.0.0 → edumfa-2.0.2}/README.rst +4 -6
  3. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/crontab/edumfa +1 -1
  4. edumfa-2.0.2/deploy/ubuntu/changelog +122 -0
  5. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/control +2 -2
  6. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/changelog +12 -0
  7. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-apache2.postinst +3 -3
  8. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-nginx.postinst +3 -3
  9. {edumfa-2.0.0 → edumfa-2.0.2}/doc/conf.py +10 -7
  10. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/postpolicy.py +2 -2
  11. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/prepolicy.py +1 -1
  12. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/backup.py +18 -4
  13. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/main.py +1 -1
  14. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/config.py +1 -1
  15. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/applications/base.py +1 -1
  16. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auditmodules/base.py +2 -2
  17. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auth.py +1 -1
  18. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/baseca.py +1 -1
  19. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/caservice_pb2_grpc.py +3 -3
  20. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/localca.py +2 -2
  21. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/msca.py +2 -2
  22. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/challengeresponsedecorators.py +1 -1
  23. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/config.py +3 -3
  24. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/crypto.py +3 -3
  25. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/decorators.py +1 -1
  26. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/edumfaserver.py +1 -1
  27. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/event.py +2 -2
  28. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/base.py +3 -3
  29. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/customuserattributeshandler.py +2 -2
  30. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/federationhandler.py +1 -1
  31. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/logginghandler.py +1 -1
  32. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/requestmangler.py +1 -1
  33. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/responsemangler.py +1 -1
  34. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/tokenhandler.py +3 -3
  35. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/usernotification.py +1 -1
  36. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/webhookeventhandler.py +2 -2
  37. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/importotp.py +1 -1
  38. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/log.py +1 -1
  39. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machines/base.py +2 -2
  40. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/monitoringmodules/base.py +1 -1
  41. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/pinhandling/base.py +1 -1
  42. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/policy.py +15 -15
  43. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/policydecorators.py +1 -1
  44. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/pooling.py +1 -1
  45. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/queue.py +1 -1
  46. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/queues/base.py +1 -1
  47. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/radiusserver.py +1 -1
  48. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/LDAPIdResolver.py +1 -1
  49. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/UserIdResolver.py +1 -1
  50. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/security/default.py +1 -1
  51. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/SMSProvider.py +1 -1
  52. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smtpserver.py +1 -1
  53. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/subscriptions.py +1 -1
  54. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/task/base.py +1 -1
  55. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokenclass.py +6 -6
  56. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/HMAC.py +1 -1
  57. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/certificatetoken.py +1 -1
  58. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/emailtoken.py +1 -1
  59. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/indexedsecrettoken.py +1 -1
  60. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/mOTP.py +1 -1
  61. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/ocra.py +2 -2
  62. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/papertoken.py +1 -1
  63. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/passwordtoken.py +1 -1
  64. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/pushtoken.py +2 -2
  65. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/questionnairetoken.py +1 -1
  66. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/smstoken.py +1 -1
  67. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/tantoken.py +1 -1
  68. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/tiqrtoken.py +1 -1
  69. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/u2ftoken.py +1 -1
  70. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/webauthn.py +20 -20
  71. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/webauthntoken.py +4 -4
  72. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/user.py +1 -1
  73. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/usercache.py +1 -1
  74. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/utils/compare.py +1 -1
  75. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/models.py +13 -3
  76. {edumfa-2.0.0 → edumfa-2.0.2/edumfa.egg-info}/PKG-INFO +7 -8
  77. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/requires.txt +3 -1
  78. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/5cb310101a1f_.py +1 -7
  79. {edumfa-2.0.0 → edumfa-2.0.2}/requirements.txt +21 -23
  80. {edumfa-2.0.0 → edumfa-2.0.2}/setup.py +2 -2
  81. {edumfa-2.0.0 → edumfa-2.0.2}/tests/base.py +1 -1
  82. {edumfa-2.0.0 → edumfa-2.0.2}/tests/ldap3mock.py +4 -4
  83. {edumfa-2.0.0 → edumfa-2.0.2}/tests/mscamock.py +7 -7
  84. {edumfa-2.0.0 → edumfa-2.0.2}/tests/pkcs11mock.py +1 -1
  85. {edumfa-2.0.0 → edumfa-2.0.2}/tests/radiusmock.py +1 -1
  86. {edumfa-2.0.0 → edumfa-2.0.2}/tests/redismock.py +2 -2
  87. {edumfa-2.0.0 → edumfa-2.0.2}/tests/smppmock.py +1 -1
  88. {edumfa-2.0.0 → edumfa-2.0.2}/tests/smtpmock.py +1 -1
  89. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_lib_policy.py +11 -11
  90. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_policy.py +5 -5
  91. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_queue.py +1 -1
  92. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_smsprovider.py +223 -5
  93. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_token.py +1 -1
  94. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-cron +2 -2
  95. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-migrate-linotp.py +1 -1
  96. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-sync-owncloud.py +1 -1
  97. edumfa-2.0.0/deploy/ubuntu/changelog +0 -69
  98. {edumfa-2.0.0 → edumfa-2.0.2}/AUTHORS.md +0 -0
  99. {edumfa-2.0.0 → edumfa-2.0.2}/LICENSE +0 -0
  100. {edumfa-2.0.0 → edumfa-2.0.2}/MANIFEST.in +0 -0
  101. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/README.md +0 -0
  102. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/apache/edumfaapp.wsgi +0 -0
  103. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/apache/sites-available/edumfa-venv.conf +0 -0
  104. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/apache/sites-available/edumfa.conf +0 -0
  105. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/config/freeradius2/edumfa +0 -0
  106. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/config/freeradius2/mods-perl-edumfa +0 -0
  107. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/config/freeradius3/edumfa +0 -0
  108. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/config/freeradius3/mods-perl-edumfa +0 -0
  109. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/docker-compose-example.yml +0 -0
  110. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/docker-example/edumfa-policy.conf +0 -0
  111. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/docker-example/edumfa-setup.sh +0 -0
  112. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/docker-example/edumfa.cfg +0 -0
  113. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/docker-setup.sh +0 -0
  114. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/edumfa/dictionary +0 -0
  115. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/edumfa/edumfa.cfg +0 -0
  116. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/edumfa_radius.pm +0 -0
  117. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/gunicorn/edumfaapp.py +0 -0
  118. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/logging.cfg +0 -0
  119. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/nginx/edumfaapp.py +0 -0
  120. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/nginx/sites-available/edumfa +0 -0
  121. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/rlm_perl.ini +0 -0
  122. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/clean +0 -0
  123. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/compat +0 -0
  124. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/copyright +0 -0
  125. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/rules +0 -0
  126. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/source/format +0 -0
  127. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu/source/options +0 -0
  128. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/changelog +0 -0
  129. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/compat +0 -0
  130. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/control +0 -0
  131. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/copyright +0 -0
  132. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/edumfa-radius.install +0 -0
  133. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/edumfa-radius.postinst +0 -0
  134. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/edumfa-radius.postrm +0 -0
  135. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/rules +0 -0
  136. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-radius/source/format +0 -0
  137. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/clean +0 -0
  138. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/compat +0 -0
  139. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/control +0 -0
  140. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-apache2.install +0 -0
  141. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-apache2.postrm +0 -0
  142. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-nginx.install +0 -0
  143. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/edumfa-nginx.postrm +0 -0
  144. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/rules +0 -0
  145. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/source/format +0 -0
  146. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/ubuntu-server/source/options +0 -0
  147. {edumfa-2.0.0 → edumfa-2.0.2}/deploy/uwsgi/apps-available/edumfa.xml +0 -0
  148. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/__init__.py +0 -0
  149. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/__init__.py +0 -0
  150. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/application.py +0 -0
  151. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/audit.py +0 -0
  152. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/auth.py +0 -0
  153. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/before_after.py +0 -0
  154. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/caconnector.py +0 -0
  155. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/clienttype.py +0 -0
  156. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/edumfaserver.py +0 -0
  157. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/event.py +0 -0
  158. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/__init__.py +0 -0
  159. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/decorators.py +0 -0
  160. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/policyhelper.py +0 -0
  161. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/lib/utils.py +0 -0
  162. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/machine.py +0 -0
  163. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/machineresolver.py +0 -0
  164. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/monitoring.py +0 -0
  165. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/periodictask.py +0 -0
  166. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/policy.py +0 -0
  167. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/radiusserver.py +0 -0
  168. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/realm.py +0 -0
  169. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/recover.py +0 -0
  170. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/register.py +0 -0
  171. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/resolver.py +0 -0
  172. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/serviceid.py +0 -0
  173. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/smsgateway.py +0 -0
  174. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/smtpserver.py +0 -0
  175. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/system.py +0 -0
  176. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/token.py +0 -0
  177. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/tokengroup.py +0 -0
  178. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/ttype.py +0 -0
  179. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/user.py +0 -0
  180. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/api/validate.py +0 -0
  181. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/app.py +0 -0
  182. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/babel.cfg +0 -0
  183. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/__init__.py +0 -0
  184. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/__init__.py +0 -0
  185. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/admin.py +0 -0
  186. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/api.py +0 -0
  187. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/audit.py +0 -0
  188. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/authcache.py +0 -0
  189. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/ca.py +0 -0
  190. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/config.py +0 -0
  191. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/core.py +0 -0
  192. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/event.py +0 -0
  193. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/helper.py +0 -0
  194. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/hsm.py +0 -0
  195. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/policy.py +0 -0
  196. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/realm.py +0 -0
  197. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/resolver.py +0 -0
  198. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/commands/manage/token.py +0 -0
  199. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/__init__.py +0 -0
  200. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/applications/__init__.py +0 -0
  201. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/applications/luks.py +0 -0
  202. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/applications/offline.py +0 -0
  203. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/applications/ssh.py +0 -0
  204. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/apps.py +0 -0
  205. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/audit.py +0 -0
  206. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auditmodules/__init__.py +0 -0
  207. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auditmodules/containeraudit.py +0 -0
  208. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auditmodules/loggeraudit.py +0 -0
  209. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/auditmodules/sqlaudit.py +0 -0
  210. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/authcache.py +0 -0
  211. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/cache/__init__.py +0 -0
  212. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnector.py +0 -0
  213. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/__init__.py +0 -0
  214. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/caconnectors/caservice_pb2.py +0 -0
  215. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/challenge.py +0 -0
  216. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/clientapplication.py +0 -0
  217. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/counter.py +0 -0
  218. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/error.py +0 -0
  219. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/__init__.py +0 -0
  220. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/counterhandler.py +0 -0
  221. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/eventhandler/scripthandler.py +0 -0
  222. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/framework.py +0 -0
  223. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/lifecycle.py +0 -0
  224. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machine.py +0 -0
  225. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machineresolver.py +0 -0
  226. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machines/__init__.py +0 -0
  227. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machines/hosts.py +0 -0
  228. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/machines/ldap.py +0 -0
  229. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/monitoringmodules/__init__.py +0 -0
  230. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/monitoringmodules/sqlstats.py +0 -0
  231. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/monitoringstats.py +0 -0
  232. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/passwordreset.py +0 -0
  233. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/periodictask.py +0 -0
  234. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/pinhandling/__init__.py +0 -0
  235. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/queues/__init__.py +0 -0
  236. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/queues/huey_queue.py +0 -0
  237. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/realm.py +0 -0
  238. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolver.py +0 -0
  239. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/HTTPResolver.py +0 -0
  240. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/PasswdIdResolver.py +0 -0
  241. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/SCIMIdResolver.py +0 -0
  242. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/SQLIdResolver.py +0 -0
  243. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/resolvers/__init__.py +0 -0
  244. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/security/__init__.py +0 -0
  245. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/security/aeshsm.py +0 -0
  246. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/security/encryptkey.py +0 -0
  247. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/security/password/__init__.py +0 -0
  248. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/serviceid.py +0 -0
  249. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/FirebaseProvider.py +0 -0
  250. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/HttpMessageToUidProvider.py +0 -0
  251. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/HttpSMSProvider.py +0 -0
  252. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/ScriptSMSProvider.py +0 -0
  253. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/SipgateSMSProvider.py +0 -0
  254. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/SmppSMSProvider.py +0 -0
  255. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/SmtpSMSProvider.py +0 -0
  256. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/smsprovider/__init__.py +0 -0
  257. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/sqlutils.py +0 -0
  258. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/task/__init__.py +0 -0
  259. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/task/eventcounter.py +0 -0
  260. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/task/simplestats.py +0 -0
  261. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/token.py +0 -0
  262. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokengroup.py +0 -0
  263. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/__init__.py +0 -0
  264. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/applicationspecificpasswordtoken.py +0 -0
  265. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/daplugtoken.py +0 -0
  266. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/daypasswordtoken.py +0 -0
  267. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/foureyestoken.py +0 -0
  268. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/hotptoken.py +0 -0
  269. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/motptoken.py +0 -0
  270. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/ocratoken.py +0 -0
  271. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/radiustoken.py +0 -0
  272. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/registrationtoken.py +0 -0
  273. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/remotetoken.py +0 -0
  274. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/spasstoken.py +0 -0
  275. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/sshkeytoken.py +0 -0
  276. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/totptoken.py +0 -0
  277. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/u2f.py +0 -0
  278. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/vasco.py +0 -0
  279. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/vascotoken.py +0 -0
  280. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/yubicotoken.py +0 -0
  281. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/tokens/yubikeytoken.py +0 -0
  282. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/utils/__init__.py +0 -0
  283. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/lib/utils/export.py +0 -0
  284. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/messages.pot +0 -0
  285. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/README.md +0 -0
  286. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/app.js +0 -0
  287. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/audit/controllers/auditControllers.js +0 -0
  288. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/audit/factories/audit.js +0 -0
  289. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/audit/states/states.js +0 -0
  290. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/audit/views/audit.html +0 -0
  291. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/audit/views/audit.log.html +0 -0
  292. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/components/controllers/componentControllers.js +0 -0
  293. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/components/factories/component.js +0 -0
  294. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/components/states/states.js +0 -0
  295. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/components/views/component.clienttype.html +0 -0
  296. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/components/views/component.html +0 -0
  297. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/configControllers.js +0 -0
  298. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/eduMfaServerController.js +0 -0
  299. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/eventController.js +0 -0
  300. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/ldapMachineResolverController.js +0 -0
  301. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/periodicTaskController.js +0 -0
  302. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/radiusServerController.js +0 -0
  303. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/serviceidController.js +0 -0
  304. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/smsgatewayController.js +0 -0
  305. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/smtpServerController.js +0 -0
  306. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/controllers/tokengroupController.js +0 -0
  307. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/factories/config.js +0 -0
  308. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/states/states.js +0 -0
  309. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.caconnectors.list.html +0 -0
  310. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.caconnectors.local.html +0 -0
  311. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.caconnectors.microsoft.html +0 -0
  312. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.edumfaserver.edit.html +0 -0
  313. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.edumfaserver.list.html +0 -0
  314. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.events.details.html +0 -0
  315. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.events.html +0 -0
  316. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.events.list.html +0 -0
  317. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.html +0 -0
  318. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.machineresolvers.html +0 -0
  319. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.mresolvers.hosts.html +0 -0
  320. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.mresolvers.ldap.html +0 -0
  321. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.mresolvers.list.html +0 -0
  322. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.periodictasks.details.html +0 -0
  323. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.periodictasks.html +0 -0
  324. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.periodictasks.list.html +0 -0
  325. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.policies.details.html +0 -0
  326. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.policies.html +0 -0
  327. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.policies.list.html +0 -0
  328. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.radius.edit.html +0 -0
  329. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.radius.list.html +0 -0
  330. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.realms.html +0 -0
  331. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.realms.list.html +0 -0
  332. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.html +0 -0
  333. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.http.html +0 -0
  334. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.ldap.html +0 -0
  335. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.list.html +0 -0
  336. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.passwd.html +0 -0
  337. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.scim.html +0 -0
  338. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.resolvers.sql.html +0 -0
  339. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.serviceid.edit.html +0 -0
  340. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.serviceid.list.html +0 -0
  341. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.smsgateway.edit.html +0 -0
  342. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.smsgateway.list.html +0 -0
  343. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.smtp.edit.html +0 -0
  344. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.smtp.list.html +0 -0
  345. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.system.doc.html +0 -0
  346. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.system.edit.html +0 -0
  347. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.system.html +0 -0
  348. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.daypassword.html +0 -0
  349. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.email.html +0 -0
  350. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.hotp.html +0 -0
  351. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.question.html +0 -0
  352. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.radius.html +0 -0
  353. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.remote.html +0 -0
  354. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.sms.html +0 -0
  355. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.tiqr.html +0 -0
  356. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.totp.html +0 -0
  357. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.u2f.html +0 -0
  358. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.webauthn.html +0 -0
  359. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.yubico.html +0 -0
  360. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.token.yubikey.html +0 -0
  361. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.tokengroup.edit.html +0 -0
  362. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.tokengroup.list.html +0 -0
  363. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/config.tokens.html +0 -0
  364. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/config/views/dialog.confirm_delete.html +0 -0
  365. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dashboard/controllers/dashboardControllers.js +0 -0
  366. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dashboard/states/states.js +0 -0
  367. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dashboard/views/dashboard.html +0 -0
  368. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dialogs/views/dialog.about.html +0 -0
  369. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dialogs/views/dialog.autocreate_realm.html +0 -0
  370. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dialogs/views/dialog.lock.html +0 -0
  371. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dialogs/views/dialog.no.token.html +0 -0
  372. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/dialogs/views/dialog.welcome.html +0 -0
  373. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/controllers/directives.js +0 -0
  374. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.assigntoken.html +0 -0
  375. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.assignuser.html +0 -0
  376. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.attachmachine.html +0 -0
  377. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.attachtoken.html +0 -0
  378. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.csvdownload.html +0 -0
  379. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.filter.table.html +0 -0
  380. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.policyconditions.html +0 -0
  381. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/directives/views/directive.tokendata.html +0 -0
  382. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/filters/filters.js +0 -0
  383. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/controllers/loginControllers.js +0 -0
  384. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/factories/auth.js +0 -0
  385. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/factories/u2f.js +0 -0
  386. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/factories/webauthn.js +0 -0
  387. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/states/states.js +0 -0
  388. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/views/enter-response.html +0 -0
  389. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/views/login.html +0 -0
  390. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/views/offline.html +0 -0
  391. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/login/views/pinchange.html +0 -0
  392. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/controllers/machineController.js +0 -0
  393. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/controllers/machineDetailsController.js +0 -0
  394. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/factories/machine.js +0 -0
  395. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/states/states.js +0 -0
  396. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/views/machine.details.html +0 -0
  397. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/views/machine.html +0 -0
  398. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/machine/views/machine.list.html +0 -0
  399. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/recovery/controllers/recoveryControllers.js +0 -0
  400. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/recovery/factories/recoveryFactory.js +0 -0
  401. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/recovery/states/states.js +0 -0
  402. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/recovery/views/recovery.html +0 -0
  403. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/recovery/views/recovery.reset.html +0 -0
  404. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/register/controllers/registerControllers.js +0 -0
  405. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/register/factories/registerFactory.js +0 -0
  406. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/register/states/states.js +0 -0
  407. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/register/views/register.html +0 -0
  408. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenApplicationsController.js +0 -0
  409. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenChallengesController.js +0 -0
  410. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenControllers.js +0 -0
  411. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenDetailController.js +0 -0
  412. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenGetSerialController.js +0 -0
  413. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/controllers/tokenLostController.js +0 -0
  414. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/factories/token.js +0 -0
  415. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/factories/validate.js +0 -0
  416. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/states/states.js +0 -0
  417. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/dialog.ask_token_delete.html +0 -0
  418. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.applications.html +0 -0
  419. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.applications.offline.html +0 -0
  420. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.applications.ssh.html +0 -0
  421. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.assign.html +0 -0
  422. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.challenges.html +0 -0
  423. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.details.html +0 -0
  424. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.display.apps.html +0 -0
  425. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.4eyes.html +0 -0
  426. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.applspec.html +0 -0
  427. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.certificate.html +0 -0
  428. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.daypassword.html +0 -0
  429. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.email.html +0 -0
  430. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.hotp.html +0 -0
  431. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.html +0 -0
  432. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.indexedsecret.html +0 -0
  433. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.motp.html +0 -0
  434. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.paper.html +0 -0
  435. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.push.html +0 -0
  436. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.question.html +0 -0
  437. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.radius.html +0 -0
  438. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.registration.html +0 -0
  439. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.remote.html +0 -0
  440. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.sms.html +0 -0
  441. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.spass.html +0 -0
  442. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.sshkey.html +0 -0
  443. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.tan.html +0 -0
  444. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.tiqr.html +0 -0
  445. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.totp.html +0 -0
  446. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.u2f.html +0 -0
  447. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.vasco.html +0 -0
  448. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.webauthn.html +0 -0
  449. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.yubico.html +0 -0
  450. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enroll.yubikey.html +0 -0
  451. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.applspec.html +0 -0
  452. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.certificate.html +0 -0
  453. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.daypassword.html +0 -0
  454. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.hotp.html +0 -0
  455. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.motp.html +0 -0
  456. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.paper.html +0 -0
  457. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.push.html +0 -0
  458. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.registration.html +0 -0
  459. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.tan.html +0 -0
  460. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.tiqr.html +0 -0
  461. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.totp.html +0 -0
  462. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.u2f.html +0 -0
  463. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.enrolled.webauthn.html +0 -0
  464. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.getserial.html +0 -0
  465. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.html +0 -0
  466. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.import.html +0 -0
  467. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.list.html +0 -0
  468. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/token/views/token.lost.html +0 -0
  469. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/translation/translations.js +0 -0
  470. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/controllers/userControllers.js +0 -0
  471. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/factories/user.js +0 -0
  472. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/states/states.js +0 -0
  473. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/dialog.ask_user_delete.html +0 -0
  474. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.add.dynamic.form.fields.html +0 -0
  475. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.add.html +0 -0
  476. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.details.html +0 -0
  477. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.html +0 -0
  478. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.list.html +0 -0
  479. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/components/user/views/user.password.html +0 -0
  480. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/angular-inform.css +0 -0
  481. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/angular-inform.css.map +0 -0
  482. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/bootstrap-theme.css +0 -0
  483. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/bootstrap-theme.css.map +0 -0
  484. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/bootstrap.css +0 -0
  485. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/bootstrap.css.map +0 -0
  486. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/hotkeys.css +0 -0
  487. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/css/isteven-multi-select.css +0 -0
  488. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.eot +0 -0
  489. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.svg +0 -0
  490. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.ttf +0 -0
  491. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff +0 -0
  492. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff2 +0 -0
  493. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/angular-inform.js +0 -0
  494. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/angular-inform.js.map +0 -0
  495. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/angular.js +0 -0
  496. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/bootstrap.js +0 -0
  497. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/hotkeys.js +0 -0
  498. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/jquery.js +0 -0
  499. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/angular-gettext.js +0 -0
  500. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/angular-idle.js +0 -0
  501. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/angular-sanitize.js +0 -0
  502. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js +0 -0
  503. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js.map +0 -0
  504. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/isteven-multi-select.js +0 -0
  505. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ngmodules/ng-file-upload.js +0 -0
  506. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/u2f-api.js +0 -0
  507. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/ui-bootstrap-tpls.js +0 -0
  508. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/contrib/js/webauthn-client/edumfa-webauthn.js +0 -0
  509. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/baseline.css +0 -0
  510. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/content.css +0 -0
  511. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/eduMFA-logo.png +0 -0
  512. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/highlight.css +0 -0
  513. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/menu.css +0 -0
  514. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/papertoken.css +0 -0
  515. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/signin.css +0 -0
  516. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/css/table-ui.css +0 -0
  517. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/customize/README.rst +0 -0
  518. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/favicon.png +0 -0
  519. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/img/FIDO-U2F-Security-Key-444x444.png +0 -0
  520. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/img/plugup.jpg +0 -0
  521. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/img/solokeys.png +0 -0
  522. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/img/u2fzero.png +0 -0
  523. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/package-lock.json +0 -0
  524. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/package.json +0 -0
  525. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/providers/errorMessageProvider.js +0 -0
  526. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/providers/versioningProvider.js +0 -0
  527. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/baseline.html +0 -0
  528. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/cert_request_form.html +0 -0
  529. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/deactivated.html +0 -0
  530. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/documentation.rst +0 -0
  531. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/footer.html +0 -0
  532. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/header.html +0 -0
  533. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/index.html +0 -0
  534. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/menu.html +0 -0
  535. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/templates/token_enrolled.html +0 -0
  536. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/static/update_contrib.sh +0 -0
  537. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/cs/LC_MESSAGES/messages.mo +0 -0
  538. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/cs/LC_MESSAGES/messages.po +0 -0
  539. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/de/LC_MESSAGES/messages.mo +0 -0
  540. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/de/LC_MESSAGES/messages.po +0 -0
  541. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/es/LC_MESSAGES/messages.mo +0 -0
  542. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/es/LC_MESSAGES/messages.po +0 -0
  543. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/fr/LC_MESSAGES/messages.mo +0 -0
  544. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/fr/LC_MESSAGES/messages.po +0 -0
  545. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/it/LC_MESSAGES/messages.mo +0 -0
  546. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/it/LC_MESSAGES/messages.po +0 -0
  547. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/nl/LC_MESSAGES/messages.mo +0 -0
  548. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/nl/LC_MESSAGES/messages.po +0 -0
  549. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/pl/LC_MESSAGES/messages.mo +0 -0
  550. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/pl/LC_MESSAGES/messages.po +0 -0
  551. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
  552. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/pt_BR/LC_MESSAGES/messages.po +0 -0
  553. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/ro/LC_MESSAGES/messages.mo +0 -0
  554. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/ro/LC_MESSAGES/messages.po +0 -0
  555. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/ru/LC_MESSAGES/messages.mo +0 -0
  556. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/ru/LC_MESSAGES/messages.po +0 -0
  557. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/si/LC_MESSAGES/messages.mo +0 -0
  558. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/si/LC_MESSAGES/messages.po +0 -0
  559. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/tr/LC_MESSAGES/messages.mo +0 -0
  560. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/tr/LC_MESSAGES/messages.po +0 -0
  561. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/zh_Hans/LC_MESSAGES/messages.mo +0 -0
  562. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/zh_Hans/LC_MESSAGES/messages.po +0 -0
  563. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
  564. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/translations/zh_Hant/LC_MESSAGES/messages.po +0 -0
  565. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/webui/__init__.py +0 -0
  566. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/webui/certificate.py +0 -0
  567. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa/webui/login.py +0 -0
  568. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/SOURCES.txt +0 -0
  569. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/dependency_links.txt +0 -0
  570. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/entry_points.txt +0 -0
  571. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/not-zip-safe +0 -0
  572. {edumfa-2.0.0 → edumfa-2.0.2}/edumfa.egg-info/top_level.txt +0 -0
  573. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/README +0 -0
  574. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/alembic.ini +0 -0
  575. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/env.py +0 -0
  576. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/script.py.mako +0 -0
  577. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/006d4747f858_.py +0 -0
  578. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/00762b3f7a60_.py +0 -0
  579. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/0c7123345224_.py +0 -0
  580. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/0d011e94a8e8_.py +0 -0
  581. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/140ba0ca4f07_.py +0 -0
  582. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/145ce80decd_.py +0 -0
  583. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/14a1bcb10018_.py +0 -0
  584. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/19f727d285e2_.py +0 -0
  585. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/1a0710df148b_.py +0 -0
  586. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/1a69e5e5e2ac_.py +0 -0
  587. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/1edda52b619f_.py +0 -0
  588. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/204d8d4f351e_.py +0 -0
  589. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/205bda834127_.py +0 -0
  590. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/20969b4cbf06_.py +0 -0
  591. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/2118e566df16_.py +0 -0
  592. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/2181294eed0b_.py +0 -0
  593. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/22558d9f3178_.py +0 -0
  594. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/239995464c48_.py +0 -0
  595. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/2551ee982544_.py +0 -0
  596. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/2ac117d0a6f5_.py +0 -0
  597. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/2c9430cfc66b_.py +0 -0
  598. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/307a4fbe8a05_.py +0 -0
  599. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3236a1abf1c6_.py +0 -0
  600. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3429d523e51f_.py +0 -0
  601. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/36428afb2457_.py +0 -0
  602. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/37e6b49fc686_.py +0 -0
  603. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3ae3c668f444_.py +0 -0
  604. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3ba618f6b820_.py +0 -0
  605. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3c6e9dd7fbac_.py +0 -0
  606. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3d7f8b29cbb1_.py +0 -0
  607. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/3f7e8583ea2_.py +0 -0
  608. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/4023571658f8_.py +0 -0
  609. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/4238eac8ccab_.py +0 -0
  610. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/449903fb6e35_.py +0 -0
  611. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/48ee74b8a7c8_.py +0 -0
  612. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/49a04e560d96_.py +0 -0
  613. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/4a0aec37e7cf_.py +0 -0
  614. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/4d9178fa8336_.py +0 -0
  615. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/4f32a4e1bf33_.py +0 -0
  616. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/50adc980d625_.py +0 -0
  617. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/5402fd96fbca_.py +0 -0
  618. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/58e4f7ebb705_.py +0 -0
  619. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/59ef3e03bc62_.py +0 -0
  620. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/631ec59e1ca6_.py +0 -0
  621. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/849170064430_.py +0 -0
  622. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/86f40f535d7c_.py +0 -0
  623. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/888b56ed5dcb_.py +0 -0
  624. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/89e57ed16379_.py +0 -0
  625. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/8d40dbcfda25_.py +0 -0
  626. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/9155f0d3d028_.py +0 -0
  627. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/a28f2733897b_.py +0 -0
  628. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/a63df077051a_.py +0 -0
  629. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/a7e91b18a460_.py +0 -0
  630. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/b9131d0686eb_.py +0 -0
  631. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/cb6d7b7bae63_.py +0 -0
  632. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d2ae8e54b628_.py +0 -0
  633. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d3c0f0403a84_.py +0 -0
  634. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d415d490eb05_.py +0 -0
  635. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d5870fd2f2a4_.py +0 -0
  636. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d6b40a745e5_.py +0 -0
  637. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/d756b34061ff_.py +0 -0
  638. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/dceb6cd3c41e_.py +0 -0
  639. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/e360c56bcf8c_.py +0 -0
  640. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/e5cbeb7c177_.py +0 -0
  641. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/ef29ba43e290_.py +0 -0
  642. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/fa07bd604a75.py +0 -0
  643. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/fabcf24d9304_.py +0 -0
  644. {edumfa-2.0.0 → edumfa-2.0.2}/migrations/versions/ff26585932ec_.py +0 -0
  645. {edumfa-2.0.0 → edumfa-2.0.2}/setup.cfg +0 -0
  646. {edumfa-2.0.0 → edumfa-2.0.2}/tests/__init__.py +0 -0
  647. {edumfa-2.0.0 → edumfa-2.0.2}/tests/conftest.py +0 -0
  648. {edumfa-2.0.0 → edumfa-2.0.2}/tests/queuemock.py +0 -0
  649. {edumfa-2.0.0 → edumfa-2.0.2}/tests/requirements.txt +0 -0
  650. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_2stepinit.py +0 -0
  651. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_applications.py +0 -0
  652. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_audit.py +0 -0
  653. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_auth.py +0 -0
  654. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_caconnector.py +0 -0
  655. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_clienttype.py +0 -0
  656. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_edumfaserver.py +0 -0
  657. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_events.py +0 -0
  658. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_lib_utils.py +0 -0
  659. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_machineresolver.py +0 -0
  660. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_machines.py +0 -0
  661. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_machines_serviceid.py +0 -0
  662. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_monitoring.py +0 -0
  663. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_offline_no_token.py +0 -0
  664. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_periodictask.py +0 -0
  665. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_policy.py +0 -0
  666. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_push_validate.py +0 -0
  667. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_radiusserver.py +0 -0
  668. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_register.py +0 -0
  669. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_roles.py +0 -0
  670. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_serviceids.py +0 -0
  671. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_smsgateway.py +0 -0
  672. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_smtpserver.py +0 -0
  673. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_system.py +0 -0
  674. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_token.py +0 -0
  675. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_tokengroup.py +0 -0
  676. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_ttype.py +0 -0
  677. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_u2f.py +0 -0
  678. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_users.py +0 -0
  679. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_api_validate.py +0 -0
  680. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_app.py +0 -0
  681. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_db_model.py +0 -0
  682. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_applications.py +0 -0
  683. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_apps.py +0 -0
  684. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_audit.py +0 -0
  685. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_auth.py +0 -0
  686. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_authcache.py +0 -0
  687. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_caconnector.py +0 -0
  688. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_challenges.py +0 -0
  689. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_clientapplication.py +0 -0
  690. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_config.py +0 -0
  691. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_counter.py +0 -0
  692. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_crypto.py +0 -0
  693. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_edumfaserver.py +0 -0
  694. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_eventhandler_logging.py +0 -0
  695. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_eventhandler_usernotification.py +0 -0
  696. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_events.py +0 -0
  697. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_framework.py +0 -0
  698. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_importotp.py +0 -0
  699. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_lifecycle.py +0 -0
  700. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_machine_resolver_ldap.py +0 -0
  701. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_machines.py +0 -0
  702. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_machinetokens.py +0 -0
  703. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_monitoringstats.py +0 -0
  704. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_periodictask.py +0 -0
  705. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_policydecorator.py +0 -0
  706. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_pooling.py +0 -0
  707. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_radiusserver.py +0 -0
  708. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_realm.py +0 -0
  709. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_recovery.py +0 -0
  710. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_resolver.py +0 -0
  711. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_serviceid.py +0 -0
  712. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_smtpserver.py +0 -0
  713. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_sqlutils.py +0 -0
  714. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_subscriptions.py +0 -0
  715. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_task_eventcounter.py +0 -0
  716. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_task_simplestats.py +0 -0
  717. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tasks.py +0 -0
  718. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokenclass.py +0 -0
  719. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokengroup.py +0 -0
  720. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_certificate.py +0 -0
  721. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_daplug.py +0 -0
  722. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_daypassword.py +0 -0
  723. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_email.py +0 -0
  724. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_foureyes.py +0 -0
  725. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_hotp.py +0 -0
  726. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_indexedsecret.py +0 -0
  727. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_motp.py +0 -0
  728. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_paper.py +0 -0
  729. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_passwordtoken.py +0 -0
  730. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_push.py +0 -0
  731. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_questionnaire.py +0 -0
  732. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_radius.py +0 -0
  733. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_registration.py +0 -0
  734. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_remote.py +0 -0
  735. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_sms.py +0 -0
  736. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_spass.py +0 -0
  737. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_ssh.py +0 -0
  738. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_tan.py +0 -0
  739. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_tiqr.py +0 -0
  740. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_totp.py +0 -0
  741. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_u2f.py +0 -0
  742. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_vasco.py +0 -0
  743. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_webauthn.py +0 -0
  744. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_yubico.py +0 -0
  745. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_tokens_yubikey.py +0 -0
  746. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_user.py +0 -0
  747. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_usercache.py +0 -0
  748. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_utils.py +0 -0
  749. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_lib_utils_compare.py +0 -0
  750. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_mock_ldap3.py +0 -0
  751. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_resolver_realm.py +0 -0
  752. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_scripts.py +0 -0
  753. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_ui_certificate.py +0 -0
  754. {edumfa-2.0.0 → edumfa-2.0.2}/tests/test_ui_login.py +0 -0
  755. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/FIDO-U2F-Security-Key-444x444.png +0 -0
  756. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/NetKnights.pem +0 -0
  757. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/__init__.py +0 -0
  758. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/altstatic/templates/testui.html +0 -0
  759. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/attestation/yubico.pem +0 -0
  760. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/audit.sqlite +0 -0
  761. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/cacert.pem +0 -0
  762. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/cakey.pem +0 -0
  763. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/index.txt +0 -0
  764. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/index.txt.attr +0 -0
  765. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/openssl.cnf +0 -0
  766. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/serial +0 -0
  767. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ca/templates.yaml +0 -0
  768. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/dictionary +0 -0
  769. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/does_not_exist +0 -0
  770. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/emailtemplate.html +0 -0
  771. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/empty.oath +0 -0
  772. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/enckey +0 -0
  773. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/enckey.enc +0 -0
  774. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/event.conf +0 -0
  775. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/fancytoken.py +0 -0
  776. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/firebase-test.json +0 -0
  777. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/google-services.json +0 -0
  778. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/gpg/public.pem +0 -0
  779. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/gpg/pubring.gpg +0 -0
  780. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/gpg/random_seed +0 -0
  781. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/gpg/secring.gpg +0 -0
  782. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/gpg/trustdb.gpg +0 -0
  783. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/hosts +0 -0
  784. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/import.oath +0 -0
  785. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/import.oath.asc +0 -0
  786. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/jwt_sign.key +0 -0
  787. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/logging.cfg +0 -0
  788. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/logging.yml +0 -0
  789. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/logging_broken.yaml +0 -0
  790. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/msca-connector/ca.pem +0 -0
  791. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/msca-connector/privacyidea-encrypted.key +0 -0
  792. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/msca-connector/privacyidea.key +0 -0
  793. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/msca-connector/privacyidea.pem +0 -0
  794. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/ocra.csv +0 -0
  795. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/passwd +0 -0
  796. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/passwd-duplicate-name +0 -0
  797. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/passwords +0 -0
  798. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/policy.cfg +0 -0
  799. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/policy.conf +0 -0
  800. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/policy_empty_file.cfg +0 -0
  801. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/private.pem +0 -0
  802. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/pskc-aes.xml +0 -0
  803. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/pskc-password.xml +0 -0
  804. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/public.pem +0 -0
  805. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/pw-2nd-resolver +0 -0
  806. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/scripts/fail.sh +0 -0
  807. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/scripts/ls.sh +0 -0
  808. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/scripts/success.sh +0 -0
  809. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/test.sub +0 -0
  810. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/test2.sub +0 -0
  811. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/testuser-api.sqlite +0 -0
  812. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/testuser.sqlite +0 -0
  813. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/testusercache.sqlite +0 -0
  814. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/trusted_attestation_roots/solokeys_device_attestation_ca.pem +0 -0
  815. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/trusted_attestation_roots/yubico_u2f_device_attestation_ca.pem +0 -0
  816. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/yubico-oath-long.csv +0 -0
  817. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/yubico-oath.csv +0 -0
  818. {edumfa-2.0.0 → edumfa-2.0.2}/tests/testdata/yubico.csv +0 -0
  819. {edumfa-2.0.0 → edumfa-2.0.2}/tools/creategoogleauthenticator-file +0 -0
  820. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-authorizedkeys +0 -0
  821. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-convert-base32.py +0 -0
  822. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-convert-token +0 -0
  823. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-convert-token.1 +0 -0
  824. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-convert-xml-to-csv +0 -0
  825. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-ad-users +0 -0
  826. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-ad-users.1 +0 -0
  827. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-certificate +0 -0
  828. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-certificate.1 +0 -0
  829. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-pwidresolver-user +0 -0
  830. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-pwidresolver-user.1 +0 -0
  831. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-sqlidresolver-user +0 -0
  832. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-sqlidresolver-user.1 +0 -0
  833. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-userdb +0 -0
  834. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-create-userdb.1 +0 -0
  835. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-diag +0 -0
  836. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-expired-users +0 -0
  837. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-export-edumfa-counter.py +0 -0
  838. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-export-linotp-counter.py +0 -0
  839. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-fetchssh +0 -0
  840. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-fetchssh.1 +0 -0
  841. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-fix-access-rights +0 -0
  842. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-fix-access-rights.1 +0 -0
  843. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-get-serial +0 -0
  844. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-get-unused-tokens +0 -0
  845. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-pip-update +0 -0
  846. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-pip-update.1 +0 -0
  847. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-queue-huey +0 -0
  848. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-schema-upgrade +0 -0
  849. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-standalone +0 -0
  850. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-token-janitor +0 -0
  851. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-update-counter.py +0 -0
  852. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-update-linotp-counter.py +0 -0
  853. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-user-action +0 -0
  854. {edumfa-2.0.0 → edumfa-2.0.2}/tools/edumfa-usercache-cleanup +0 -0
  855. {edumfa-2.0.0 → edumfa-2.0.2}/tools/getgooglecodes +0 -0
  856. {edumfa-2.0.0 → edumfa-2.0.2}/tools/reset-edumfa +0 -0
  857. {edumfa-2.0.0 → edumfa-2.0.2}/tools/ssha.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edumfa
3
- Version: 2.0.0
3
+ Version: 2.0.2
4
4
  Summary: eduMFA: identity, multifactor authentication (OTP), authorization, audit
5
5
  Home-page: https://www.edumfa.io
6
6
  Author: edumfa.io
@@ -48,7 +48,6 @@ Requires-Dist: ldap3>=2.6
48
48
  Requires-Dist: lxml>=5.0.0
49
49
  Requires-Dist: netaddr>=0.7.12
50
50
  Requires-Dist: passlib[bcrypt]>=1.7.0
51
- Requires-Dist: psycopg2-binary>=2.9.9
52
51
  Requires-Dist: pyOpenSSL>=24
53
52
  Requires-Dist: pydash>=4.7.4
54
53
  Requires-Dist: pyrad>=2.0
@@ -71,6 +70,8 @@ Requires-Dist: pytest>=3.6.0; extra == "test"
71
70
  Requires-Dist: pytest-cov>=2.5.1; extra == "test"
72
71
  Requires-Dist: responses>=0.9.0; extra == "test"
73
72
  Requires-Dist: testfixtures>=6.14.2; extra == "test"
73
+ Provides-Extra: postgres
74
+ Requires-Dist: psycopg2>=2.9.9; extra == "postgres"
74
75
  Provides-Extra: hsm
75
76
  Requires-Dist: PyKCS11>=1.5.10; extra == "hsm"
76
77
  Provides-Extra: kerberos
@@ -139,8 +140,7 @@ Setup
139
140
  =====
140
141
 
141
142
  For setting up the system to *run* it, please read install instructions
142
- at `edumfa.readthedocs.io <http://edumfa.readthedocs.io/en/latest/installation/index
143
- .html>`_.
143
+ at `edumfa.readthedocs.io <http://edumfa.readthedocs.io/en/latest/installation/index.html>`_.
144
144
 
145
145
  If you want to setup a development environment start like this::
146
146
 
@@ -176,8 +176,7 @@ submodules, by running::
176
176
  Running it
177
177
  ==========
178
178
 
179
- First You need to create a `config-file <https://edumfa.readthedocs
180
- .io/en/latest/installation/system/inifile.html>`_.
179
+ First You need to create a `config-file <https://edumfa.readthedocs.io/en/latest/installation/system/inifile.html>`_.
181
180
 
182
181
  Then create the database tables and the encryption key::
183
182
 
@@ -202,7 +201,7 @@ Run it::
202
201
 
203
202
  ./edumfa-manage runserver
204
203
 
205
- Now you can connect to http://localhost:5000 with your browser and login
204
+ Now you can connect to ``http://localhost:5000`` with your browser and login
206
205
  as administrator.
207
206
 
208
207
  Run tests
@@ -223,7 +222,7 @@ if you are not a developer.
223
222
  If you found a security vulnerability please report it to us using the reporting form provided by GitHub
224
223
 
225
224
  You can find detailed information about contributing here:
226
- https://github.com/eduMFA/eduMFA/blob/master/CONTRIBUTING.md
225
+ https://github.com/eduMFA/eduMFA/blob/main/CONTRIBUTING.md
227
226
 
228
227
  Code structure
229
228
  ==============
@@ -61,8 +61,7 @@ Setup
61
61
  =====
62
62
 
63
63
  For setting up the system to *run* it, please read install instructions
64
- at `edumfa.readthedocs.io <http://edumfa.readthedocs.io/en/latest/installation/index
65
- .html>`_.
64
+ at `edumfa.readthedocs.io <http://edumfa.readthedocs.io/en/latest/installation/index.html>`_.
66
65
 
67
66
  If you want to setup a development environment start like this::
68
67
 
@@ -98,8 +97,7 @@ submodules, by running::
98
97
  Running it
99
98
  ==========
100
99
 
101
- First You need to create a `config-file <https://edumfa.readthedocs
102
- .io/en/latest/installation/system/inifile.html>`_.
100
+ First You need to create a `config-file <https://edumfa.readthedocs.io/en/latest/installation/system/inifile.html>`_.
103
101
 
104
102
  Then create the database tables and the encryption key::
105
103
 
@@ -124,7 +122,7 @@ Run it::
124
122
 
125
123
  ./edumfa-manage runserver
126
124
 
127
- Now you can connect to http://localhost:5000 with your browser and login
125
+ Now you can connect to ``http://localhost:5000`` with your browser and login
128
126
  as administrator.
129
127
 
130
128
  Run tests
@@ -145,7 +143,7 @@ if you are not a developer.
145
143
  If you found a security vulnerability please report it to us using the reporting form provided by GitHub
146
144
 
147
145
  You can find detailed information about contributing here:
148
- https://github.com/eduMFA/eduMFA/blob/master/CONTRIBUTING.md
146
+ https://github.com/eduMFA/eduMFA/blob/main/CONTRIBUTING.md
149
147
 
150
148
  Code structure
151
149
  ==============
@@ -2,4 +2,4 @@
2
2
  */5 * * * * edumfa /opt/edumfa/bin/edumfa-cron run_scheduled -c
3
3
 
4
4
  # Audit rotation example: once a week at 00:00 on Sunday
5
- #0 0 * * 0 edumfa /opt/edumfa/bin/edumfa-manage audit rotate_audit --age 360
5
+ #0 0 * * 0 edumfa /opt/edumfa/bin/edumfa-manage rotate_audit --age 360
@@ -0,0 +1,122 @@
1
+ edumfa (2.0.2{{CODENAME}}) {{CODENAME}}; urgency=medium
2
+
3
+ * chore: Configure Renovate
4
+ * chore: do not inherit from `object`
5
+ * chore: fix doc dependencies
6
+ * Update documentation (no corresponding issue)
7
+ * Fix migration for apache and nginx packages
8
+ * fix: print logo to stderr
9
+ * fix: correct audit log rotation example in crontab
10
+ * fix: correct cronjob
11
+ * test: add missing sms provider tests
12
+ * feat: add support for PostgreSQL in backup script
13
+ * Change docs theme to furo + upgrade docs dependencies
14
+ * chore(deps): update dependency babel to v2.14.0
15
+ * chore(deps): update dependency alembic to v1.13.1
16
+ * chore(deps): update dependency werkzeug to v3.0.2
17
+ * chore(deps): update dependency sqlalchemy to v1.4.52
18
+ * chore(deps): update dependency flask-migrate to v4.0.7
19
+ * chore(deps): update softprops/action-gh-release action to v2
20
+ * chore(deps): update dependency idna to v3.7 [security]
21
+ * chore(deps): update actions/checkout action to v4
22
+ * chore(deps): update dependency flask to v3.0.3
23
+ * chore(deps): update dependency async-timeout to v4.0.3
24
+ * chore(deps): update dependency smpplib to v2.2.3
25
+ * chore(deps): update dependency cachetools to v5.3.3
26
+ * chore(deps): update dependency sphinxcontrib-qthelp to v1.0.7
27
+ * chore(deps): update dependency sphinxcontrib-htmlhelp to v2.0.5
28
+ * chore(deps): update dependency sphinxcontrib-applehelp to v1.0.8
29
+ * chore(deps): update dependency sphinxcontrib-devhelp to v1.0.6
30
+ * chore(deps): update dependency croniter to v1.4.1
31
+ * chore(deps): update dependency charset-normalizer to v3.3.2
32
+ * chore(deps): update dependency cffi to v1.16.0
33
+ * chore(deps): update dependency cbor2 to v5.6.3
34
+ * chore(deps): update dependency bcrypt to v4.1.2
35
+ * chore(deps): update dependency responses to v0.25.0
36
+ * chore(deps): update dependency redis to v4.6.0
37
+ * chore(deps): update dependency pykcs11 to v1.5.15
38
+ * chore(deps): update dependency lxml to v5.2.1
39
+ * chore(deps): update dependency pyjwt to v2.8.0
40
+ * chore(deps): update dependency pytz to v2024
41
+ * chore(deps): update dependency pydash to v8
42
+ * chore(deps): update dependency netaddr to v0.10.1
43
+
44
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 26 Apr 2024 13:01:00 +0200
45
+
46
+ edumfa (2.0.1{{CODENAME}}) {{CODENAME}}; urgency=medium
47
+
48
+ * chore: switch to psycopg2 instead of psycopg2-binary
49
+ * fix: correct sequence creation for galera
50
+ * ci: build ubuntu packages always (only upload on release)
51
+
52
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 12 Apr 2024 12:01:00 +0200
53
+
54
+ edumfa (2.0.0{{CODENAME}}) {{CODENAME}}; urgency=medium
55
+
56
+ * chore: Several (major) dependency upgrades
57
+ * chore: Rework CLI tools and drop `Flask-Script`
58
+
59
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 12 Apr 2024 12:00:00 +0200
60
+
61
+ edumfa (1.5.1{{CODENAME}}) {{CODENAME}}; urgency=medium
62
+
63
+ * fix: correct location of venv for ubuntu packages
64
+ * fix: ignore revoked, disabled webauthn tokens for passkey auth
65
+ * fix: correct handling of login mode
66
+
67
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 05 Apr 2024 12:00:00 +0200
68
+
69
+ edumfa (1.5.0{{CODENAME}}) {{CODENAME}}; urgency=medium
70
+
71
+ * feat: api: set tokeninfo on init by
72
+ * feat: add ubuntu packages
73
+ * feat: log passkey usage
74
+ * feat: allow customization of passkey label
75
+ * feat: more detailed logging for eduMFA migration script
76
+ * fix: add missing flask-migrate logging
77
+ * fixed typo: Atttributes -> Attributes
78
+
79
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Tue, 02 Apr 2024 07:00:00 +0100
80
+
81
+ edumfa (1.4.0{{CODENAME}}) {{CODENAME}}; urgency=medium
82
+
83
+ * feat: smstoken: add configurable URL which is called after check, extend test
84
+ * feat: make result value available in logginghandler, verbosely log set tokeninfo
85
+ * feat: new API endpoint POST /info/<serial> to bulk modify tokeninfo
86
+ * feat: token janitor find by user
87
+ * fix: make ldap connections persistent and restartable
88
+ * fix: wrong indentation caused false "Action .. requires serial number" line
89
+ * fix: improve handling of resident keys
90
+ * fix: rename provider module names in DB on migration
91
+
92
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Tue, 19 Mar 2024 12:00:00 +0100
93
+
94
+ edumfa (1.3.0{{CODENAME}}) {{CODENAME}}; urgency=medium
95
+
96
+ * Corrected ASCII art spacing
97
+ * Handled Windows credProtect flag
98
+ * Drop support for CentOS and Red Hat
99
+
100
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Mon, 4 Mar 2024 12:00:00 +0100
101
+
102
+ edumfa (1.2.0{{CODENAME}}) {{CODENAME}}; urgency=medium
103
+
104
+ * Bugfix Release for CI Actions
105
+
106
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 1 Mar 2024 13:46:00 +0100
107
+
108
+ edumfa (1.1.0{{CODENAME}}) {{CODENAME}}; urgency=medium
109
+
110
+ * Bugfix Release for CI Actions
111
+
112
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 1 Mar 2024 13:35:00 +0100
113
+
114
+ edumfa (1.0.0{{CODENAME}}) {{CODENAME}}; urgency=medium
115
+
116
+ * Add option to enroll passkeys
117
+ * Add option to include description in user notifications
118
+ * Add containers as release artifacts
119
+ * Add option to filter the user_token_number on a given range instead of constant
120
+ * Add option to use the Remote-User header behind a reverse proxy
121
+
122
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 1 Mar 2024 12:45:00 +0100
@@ -2,7 +2,7 @@ Source: edumfa
2
2
  Maintainer: eduMFA <edumfa-dev@listserv.dfn.de>
3
3
  Section: python
4
4
  Priority: optional
5
- Build-Depends: python3-all (>= 3.5), debhelper (>= 7.4.3), dh-virtualenv (>= 0.11), quilt, virtualenv, lsb-release, git
5
+ Build-Depends: python3-all (>= 3.8), debhelper (>= 7.4.3), dh-virtualenv (>= 0.11), quilt, virtualenv, lsb-release, git
6
6
  Standards-Version: 3.9.5
7
7
 
8
8
  Package: edumfa
@@ -12,7 +12,7 @@ Breaks: python-privacyidea
12
12
  Conflicts: privacyidea-venv, privacyidea-appliance
13
13
  Pre-Depends: dpkg (>= 1.16.1), python3-minimal, ${misc:Pre-Depends}
14
14
  Depends: ${python:Depends}, ${misc:Depends}, python3-virtualenv
15
- X-Python-Version: >= 3.5
15
+ X-Python-Version: >= 3.8
16
16
  Description: two-factor authentication system e.g. for OTP devices
17
17
  eduMFA: identity, multifactor authentication, authorization.
18
18
  This package contains the python module for eduMFA. If you want
@@ -1,3 +1,15 @@
1
+ edumfa-server (2.0.2{{CODENAME}}) {{CODENAME}}; urgency=medium
2
+
3
+ * update version number
4
+
5
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 26 Apr 2024 13:01:00 +0200
6
+
7
+ edumfa-server (2.0.1{{CODENAME}}) {{CODENAME}}; urgency=medium
8
+
9
+ * update version number
10
+
11
+ -- eduMFA <edumfa-dev@listserv.dfn.de> Fri, 12 Apr 2024 12:01:00 +0200
12
+
1
13
  edumfa-server (2.0.0{{CODENAME}}) {{CODENAME}}; urgency=medium
2
14
 
3
15
  * update version number
@@ -17,7 +17,7 @@ CERTDAYS=1095
17
17
  CERTKEYSIZE=4096
18
18
  MIGRATIONSDIR=/opt/edumfa/lib/edumfa/migrations/
19
19
  MYSQLFIX=/etc/mysql/conf.d/edumfa-maxkeylengthfix.cnf
20
- DB_CREATED=0
20
+ DB_CREATED=false
21
21
 
22
22
  if test -f /etc/default/edumfa; then
23
23
  . /etc/default/edumfa
@@ -109,7 +109,7 @@ create_database() {
109
109
  echo "SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://edumfa:$NPW@localhost/edumfa?charset=utf8'" >> /etc/edumfa/edumfa.cfg
110
110
  echo "DB created"
111
111
  /opt/edumfa/bin/edumfa-manage create_tables || true
112
- DB_CREATED=1
112
+ DB_CREATED=true
113
113
  fi
114
114
  }
115
115
 
@@ -162,7 +162,7 @@ case "$1" in
162
162
  create_certificate
163
163
  #update-rc.d apache2 defaults
164
164
  service apache2 restart
165
- if [ "$DB_CREATED" ]; then
165
+ if [ "$DB_CREATED" = true ]; then
166
166
  # We've created the DB, so we stamp the DB
167
167
  touch /tmp/edumfa-install
168
168
  /opt/edumfa/bin/edumfa-manage db stamp -d $MIGRATIONSDIR head
@@ -16,7 +16,7 @@ CERTDAYS=1095
16
16
  CERTKEYSIZE=4096
17
17
  MIGRATIONSDIR=/opt/edumfa/lib/edumfa/migrations/
18
18
  MYSQLFIX=/etc/mysql/conf.d/edumfa-maxkeylengthfix.cnf
19
- DB_CREATED=0
19
+ DB_CREATED=false
20
20
 
21
21
 
22
22
  if test -f /etc/default/edumfa; then
@@ -110,7 +110,7 @@ create_database() {
110
110
  echo "SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://edumfa:$NPW@localhost/edumfa?charset=utf8'" >> /etc/edumfa/edumfa.cfg
111
111
  echo "DB created"
112
112
  /opt/edumfa/bin/edumfa-manage create_tables || true
113
- DB_CREATED=1
113
+ DB_CREATED=true
114
114
  fi
115
115
  }
116
116
 
@@ -146,7 +146,7 @@ case "$1" in
146
146
  create_database
147
147
  enable_nginx_uwsgi
148
148
  create_certificate
149
- if [ "$DB_CREATED" ]; then
149
+ if [ "$DB_CREATED" = true ]; then
150
150
  # We've created the DB, so we stamp the DB
151
151
  /opt/edumfa/bin/edumfa-manage db stamp -d $MIGRATIONSDIR head
152
152
  else
@@ -23,7 +23,7 @@ import functools
23
23
  # built documents.
24
24
  #
25
25
  # The short X.Y version.
26
- version = '2.0.0'
26
+ version = '2.0.2'
27
27
  # The full version, including alpha/beta/rc tags.
28
28
  #release = '2.16dev5'
29
29
  release = version
@@ -58,8 +58,8 @@ sys.path.insert(0, os.path.abspath('../edumfa'))
58
58
  # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
59
59
  extensions = ['sphinx.ext.autodoc', 'sphinx.ext.imgmath', 'sphinx.ext.viewcode',
60
60
  'sphinxcontrib.autohttp.flask', 'sphinxcontrib.plantuml',
61
- 'sphinxcontrib.spelling', 'sphinx.ext.todo',
62
- 'pallets_sphinx_themes']
61
+ 'sphinxcontrib.spelling', 'sphinx.ext.todo', 'sphinx_copybutton',
62
+ 'sphinx_inline_tabs']
63
63
  http_index_ignore_prefixes = ['/token']
64
64
 
65
65
  # Add any paths that contain templates here, relative to this directory.
@@ -121,12 +121,15 @@ autoclass_content = 'both'
121
121
  #html_theme = 'sphinxdoc'
122
122
  #html_theme = 'sphinx_rtd_theme'
123
123
  #html_theme = 'agogo'
124
- html_theme = 'flask'
124
+ html_theme = 'furo'
125
125
 
126
126
  # Theme options are theme-specific and customize the look and feel of a theme
127
127
  # further. For a list of options available for each theme, see the
128
128
  # documentation.
129
- #html_theme_options = {}
129
+ html_theme_options = {
130
+ "light_logo": "images/edumfa-logo.png",
131
+ "dark_logo": "images/edumfa-logo-dark.png",
132
+ }
130
133
 
131
134
  # Add any paths that contain custom themes here, relative to this directory.
132
135
  #html_theme_path = ['_themes/flask-sphinx-themes']
@@ -141,12 +144,12 @@ html_theme = 'flask'
141
144
 
142
145
  # The name of an image file (relative to this directory) to place at the top
143
146
  # of the sidebar.
144
- html_logo = "images/eduMFA-logo.png"
147
+ # html_logo = "images/edumfa-logo.png"
145
148
 
146
149
  # The name of an image file (within the static path) to use as favicon of the
147
150
  # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
148
151
  # pixels large.
149
- html_favicon = "images/eduMFA-icon.png"
152
+ html_favicon = "_static/images/edumfa-icon.png"
150
153
 
151
154
  # Add any paths that contain custom static files (such as style sheets) here,
152
155
  # relative to this directory. They are copied after the builtin static files,
@@ -70,7 +70,7 @@ DEFAULT_POLICY_TEMPLATE_URL = "https://raw.githubusercontent.com/edumfa/" \
70
70
  "policy-templates/main/templates/"
71
71
 
72
72
 
73
- class postpolicy(object):
73
+ class postpolicy:
74
74
  """
75
75
  Decorator that allows one to call a specific function after the decorated
76
76
  function.
@@ -104,7 +104,7 @@ class postpolicy(object):
104
104
  return policy_wrapper
105
105
 
106
106
 
107
- class postrequest(object):
107
+ class postrequest:
108
108
  """
109
109
  Decorator that is supposed to be used with after_request.
110
110
  """
@@ -90,7 +90,7 @@ optional = True
90
90
  required = False
91
91
 
92
92
 
93
- class prepolicy(object):
93
+ class prepolicy:
94
94
  """
95
95
  This is the decorator wrapper to call a specific function before an API
96
96
  call.
@@ -22,8 +22,7 @@ import re
22
22
  import sys
23
23
  from datetime import datetime
24
24
  from shlex import quote as shlex_quote
25
- from subprocess import Popen, PIPE, call
26
- from urllib.parse import urlparse
25
+ from subprocess import Popen, PIPE, call, run
27
26
 
28
27
  import click
29
28
  import sqlalchemy
@@ -33,6 +32,8 @@ from flask.cli import AppGroup
33
32
  backup_cli = AppGroup("backup", help="Perform backup operations")
34
33
 
35
34
  MYSQL_DIALECTS = ["mysql", "pymysql", "mysql+pymysql", "mariadb+pymysql"]
35
+ PSQL_DIALECTS = ["postgresql+psycopg", "postgresql+psycopg2", "postgresql+pg8000",
36
+ "postgresql+asyncpg", "postgresql+psycopg2cffi"]
36
37
 
37
38
 
38
39
  def _write_mysql_defaults(filename, username, password):
@@ -110,7 +111,7 @@ def restore(backup_file: str):
110
111
  call(["cp", sqlfile, productive_file])
111
112
  os.unlink(sqlfile)
112
113
  elif sqltype in MYSQL_DIALECTS:
113
- parsed_sqluri = sqlalchemy.make_url(sqluri)
114
+ parsed_sqluri = sqlalchemy.engine.url.make_url(sqluri)
114
115
  username = parsed_sqluri.username
115
116
  password = parsed_sqluri.password
116
117
  hostname = parsed_sqluri.host
@@ -122,6 +123,13 @@ def restore(backup_file: str):
122
123
  call("mysql --defaults-file=%s -h %s %s < %s" % (
123
124
  shlex_quote(defaults_file), shlex_quote(hostname), shlex_quote(database), shlex_quote(sqlfile)), shell=True)
124
125
  os.unlink(sqlfile)
126
+ elif sqltype in PSQL_DIALECTS:
127
+ parsed_sqluri = sqlalchemy.engine.url.make_url(sqluri)
128
+ env = os.environ.copy()
129
+ env["PGPASSWORD"] = parsed_sqluri.password
130
+ cmd = ['psql', '-U', parsed_sqluri.username, '-d', parsed_sqluri.database,
131
+ '-h', parsed_sqluri.host, '-f', sqlfile]
132
+ run(cmd, env=env)
125
133
  else:
126
134
  click.echo("unsupported SQL syntax: %s" % sqltype)
127
135
  sys.exit(2)
@@ -160,7 +168,7 @@ def create(target_dir: str, config_dir: str, radius_dir=None, enckey: bool = Fal
160
168
  backup_file = "%s/%s-%s.tgz" % (target_dir, BASE_NAME, DATE)
161
169
 
162
170
  sqluri = current_app.config.get("SQLALCHEMY_DATABASE_URI")
163
- parsed_sqluri = sqlalchemy.make_url(sqluri)
171
+ parsed_sqluri = sqlalchemy.engine.url.make_url(sqluri)
164
172
  sqltype = parsed_sqluri.drivername
165
173
 
166
174
  if sqltype == "sqlite":
@@ -180,6 +188,12 @@ def create(target_dir: str, config_dir: str, radius_dir=None, enckey: bool = Fal
180
188
  cmd.extend(['-P', str(parsed_sqluri.port)])
181
189
  cmd.extend(['-B', shlex_quote(database), '-r', shlex_quote(sqlfile)])
182
190
  call(cmd, shell=False)
191
+ elif sqltype in PSQL_DIALECTS:
192
+ env = os.environ.copy()
193
+ env["PGPASSWORD"] = parsed_sqluri.password
194
+ cmd = ['pg_dump', '-U', parsed_sqluri.username, '-d', parsed_sqluri.database,
195
+ '-h', parsed_sqluri.host, '-f', sqlfile]
196
+ run(cmd, env=env)
183
197
  else:
184
198
  click.echo(f"unsupported SQL syntax: {sqltype}")
185
199
  sys.exit(2)
@@ -57,7 +57,7 @@ def cli():
57
57
  / _ \/ _` | | | | |\/| | __/ /\ \
58
58
  | __/ (_| | |_| | | | | | / ____ \
59
59
  \___|\__,_|\__,_|_| |_|_|/_/ \_\ {0!s:>12}
60
- """.format('v{0!s}'.format(get_version_number())))
60
+ """.format('v{0!s}'.format(get_version_number())), err=True)
61
61
 
62
62
 
63
63
  cli.add_command(audit_cli)
@@ -38,7 +38,7 @@ def _random_password(size):
38
38
  return "".join(passwd)
39
39
 
40
40
 
41
- class Config(object):
41
+ class Config:
42
42
  SECRET_KEY = os.environ.get('SECRET_KEY')
43
43
  # SQL_ALCHEMY_DATABASE_URI = "mysql://privacyidea:XmbSrlqy5d4IS08zjz"
44
44
  # "GG5HTt40Cpf5@localhost/privacyidea"
@@ -75,7 +75,7 @@ def get_machine_application_class_dict():
75
75
  return ret
76
76
 
77
77
 
78
- class MachineApplication(object):
78
+ class MachineApplication:
79
79
 
80
80
  application_name = "base"
81
81
  '''If bulk_call is false, the administrator may
@@ -55,7 +55,7 @@ import datetime
55
55
  log = logging.getLogger(__name__)
56
56
 
57
57
 
58
- class Paginate(object):
58
+ class Paginate:
59
59
  """
60
60
  This is a pagination object, that is used for searching audit trails.
61
61
  """
@@ -73,7 +73,7 @@ class Paginate(object):
73
73
  self.total = 0
74
74
 
75
75
 
76
- class Audit(object): # pragma: no cover
76
+ class Audit: # pragma: no cover
77
77
 
78
78
  is_readable = False
79
79
 
@@ -33,7 +33,7 @@ import logging
33
33
  log = logging.getLogger(__name__)
34
34
 
35
35
 
36
- class ROLE(object):
36
+ class ROLE:
37
37
  ADMIN = "admin"
38
38
  USER = "user"
39
39
  VALIDATE = "validate"
@@ -32,7 +32,7 @@ This module is tested in tests/test_lib_caconnector.py
32
32
  AvailableCAConnectors = []
33
33
 
34
34
 
35
- class BaseCAConnector(object):
35
+ class BaseCAConnector:
36
36
  def revoke_cert(self, certificate, request_id=None, reason=None):
37
37
  """
38
38
  Revoke the specified certificate. At this point only the database
@@ -5,7 +5,7 @@ import grpc
5
5
  import eduMFA.lib.caconnectors.caservice_pb2 as caservice__pb2
6
6
 
7
7
 
8
- class CAServiceStub(object):
8
+ class CAServiceStub:
9
9
  """Disposition values:
10
10
  0 - Incomplete
11
11
  1 - Error
@@ -59,7 +59,7 @@ class CAServiceStub(object):
59
59
  )
60
60
 
61
61
 
62
- class CAServiceServicer(object):
62
+ class CAServiceServicer:
63
63
  """Disposition values:
64
64
  0 - Incomplete
65
65
  1 - Error
@@ -157,7 +157,7 @@ def add_CAServiceServicer_to_server(servicer, server):
157
157
 
158
158
 
159
159
  # This class is part of an EXPERIMENTAL API.
160
- class CAService(object):
160
+ class CAService:
161
161
  """Disposition values:
162
162
  0 - Incomplete
163
163
  1 - Error
@@ -212,7 +212,7 @@ def _get_crl_next_update(filename):
212
212
  return dt
213
213
 
214
214
 
215
- class CONFIG(object):
215
+ class CONFIG:
216
216
 
217
217
  def __init__(self, name):
218
218
  self.directory = "./ca"
@@ -238,7 +238,7 @@ class CONFIG(object):
238
238
  return s
239
239
 
240
240
 
241
- class ATTR(object):
241
+ class ATTR:
242
242
  __doc__ = """This is the list Attributes of the Local CA."""
243
243
  CAKEY = "cakey"
244
244
  CACERT = "cacert"
@@ -56,7 +56,7 @@ CRL_REASONS = ["unspecified", "keyCompromise", "CACompromise",
56
56
  TIMEOUT = 3
57
57
 
58
58
 
59
- class CONFIG(object): # pragma: no cover
59
+ class CONFIG: # pragma: no cover
60
60
  # Only needed for command line creation
61
61
 
62
62
  def __init__(self, name):
@@ -81,7 +81,7 @@ class CONFIG(object): # pragma: no cover
81
81
  return s
82
82
 
83
83
 
84
- class ATTR(object):
84
+ class ATTR:
85
85
  __doc__ = """This is the list Attributes of the Microsoft CA connector."""
86
86
  HOSTNAME = "hostname"
87
87
  PORT = "port"
@@ -45,7 +45,7 @@ log = logging.getLogger(__name__)
45
45
  SEED_LENGTH = 16
46
46
 
47
47
 
48
- class CHALLENGE_TYPE(object):
48
+ class CHALLENGE_TYPE:
49
49
  PIN_RESET = "generic_pin_reset"
50
50
  RESYNC = "generic_resync"
51
51
 
@@ -62,7 +62,7 @@ this = sys.modules[__name__]
62
62
  this.config = {}
63
63
 
64
64
 
65
- class SharedConfigClass(object):
65
+ class SharedConfigClass:
66
66
  """
67
67
  A shared config class object is shared between threads and is supposed
68
68
  to store the current configuration with resolvers, realms, policies
@@ -198,7 +198,7 @@ class SharedConfigClass(object):
198
198
  return self._clone()
199
199
 
200
200
 
201
- class LocalConfigClass(object):
201
+ class LocalConfigClass:
202
202
  """
203
203
  The Config_Object will contain all database configuration of system
204
204
  config, resolvers, realms, policies and event handler definitions.
@@ -270,7 +270,7 @@ class LocalConfigClass(object):
270
270
  return r_config
271
271
 
272
272
 
273
- class SYSCONF(object):
273
+ class SYSCONF:
274
274
  __doc__ = """This is a list of system config attributes"""
275
275
  OVERRIDECLIENT = "OverrideAuthorizationClient"
276
276
  PREPENDPIN = "PrependPin"
@@ -85,7 +85,7 @@ FAILED_TO_DECRYPT_PASSWORD = "FAILED TO DECRYPT PASSWORD!" # nosec B105 # place
85
85
  log = logging.getLogger(__name__)
86
86
 
87
87
 
88
- class SecretObj(object):
88
+ class SecretObj:
89
89
  def __init__(self, val, iv, preserve=True):
90
90
  self.val = val
91
91
  self.iv = iv
@@ -503,7 +503,7 @@ def geturandom(length=20, hex=False):
503
503
  # some random functions based on geturandom #################################
504
504
 
505
505
 
506
- class urandom(object):
506
+ class urandom:
507
507
 
508
508
  precision = 12
509
509
 
@@ -681,7 +681,7 @@ def _slow_rsa_verify_raw(key, sig, msg):
681
681
  return msg == pow(sig, pn.e, pn.n)
682
682
 
683
683
 
684
- class Sign(object):
684
+ class Sign:
685
685
  """
686
686
  Signing class that is used to sign Audit Entries and to sign API responses.
687
687
  """