edumfa 2.7.2__tar.gz → 2.9.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1368) hide show
  1. edumfa-2.9.0/PKG-INFO +304 -0
  2. edumfa-2.9.0/deploy/docker/edumfa.py +63 -0
  3. edumfa-2.9.0/deploy/docker/entrypoint.sh +61 -0
  4. edumfa-2.9.0/deploy/docker/logging.yml +40 -0
  5. edumfa-2.9.0/deploy/docker-example/db_password.txt +1 -0
  6. edumfa-2.9.0/deploy/docker-example/docker-compose.yml +47 -0
  7. edumfa-2.9.0/deploy/docker-example/edumfa-setup.sh +7 -0
  8. edumfa-2.9.0/deploy/docker-example/env-example +15 -0
  9. edumfa-2.9.0/deploy/docker-example/example-policy.py +25 -0
  10. edumfa-2.9.0/deploy/docker-example/my-login.html +95 -0
  11. edumfa-2.9.0/deploy/edumfa/edumfa.cfg +32 -0
  12. edumfa-2.9.0/deploy/nginx/edumfaapp.py +7 -0
  13. edumfa-2.9.0/deploy/ubuntu/changelog +515 -0
  14. edumfa-2.9.0/deploy/ubuntu/control +26 -0
  15. edumfa-2.9.0/deploy/ubuntu/rules +22 -0
  16. edumfa-2.9.0/deploy/ubuntu-server/changelog +133 -0
  17. edumfa-2.9.0/deploy/ubuntu-server/control +30 -0
  18. edumfa-2.9.0/deploy/ubuntu-server/edumfa-apache2.postinst +229 -0
  19. edumfa-2.9.0/deploy/ubuntu-server/edumfa-nginx.postinst +227 -0
  20. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/rules +0 -0
  21. edumfa-2.9.0/edumfa/api/__init__.py +29 -0
  22. edumfa-2.9.0/edumfa/api/application.py +62 -0
  23. edumfa-2.9.0/edumfa/api/audit.py +154 -0
  24. edumfa-2.9.0/edumfa/api/auth.py +545 -0
  25. edumfa-2.9.0/edumfa/api/before_after.py +423 -0
  26. edumfa-2.9.0/edumfa/api/caconnector.py +104 -0
  27. edumfa-2.9.0/edumfa/api/clienttype.py +79 -0
  28. edumfa-2.9.0/edumfa/api/edumfaserver.py +125 -0
  29. edumfa-2.9.0/edumfa/api/event.py +241 -0
  30. edumfa-2.9.0/edumfa/api/lib/decorators.py +52 -0
  31. edumfa-2.9.0/edumfa/api/lib/policyhelper.py +218 -0
  32. edumfa-2.9.0/edumfa/api/lib/postpolicy.py +1127 -0
  33. edumfa-2.9.0/edumfa/api/lib/prepolicy.py +2672 -0
  34. edumfa-2.9.0/edumfa/api/lib/utils.py +555 -0
  35. edumfa-2.9.0/edumfa/api/machine.py +492 -0
  36. edumfa-2.9.0/edumfa/api/machineresolver.py +148 -0
  37. edumfa-2.9.0/edumfa/api/monitoring.py +122 -0
  38. edumfa-2.9.0/edumfa/api/periodictask.py +236 -0
  39. edumfa-2.9.0/edumfa/api/policy.py +606 -0
  40. edumfa-2.9.0/edumfa/api/radiusserver.py +155 -0
  41. edumfa-2.9.0/edumfa/api/realm.py +386 -0
  42. edumfa-2.9.0/edumfa/api/recover.py +90 -0
  43. edumfa-2.9.0/edumfa/api/register.py +189 -0
  44. edumfa-2.9.0/edumfa/api/resolver.py +194 -0
  45. edumfa-2.9.0/edumfa/api/serviceid.py +190 -0
  46. edumfa-2.9.0/edumfa/api/smsgateway.py +155 -0
  47. edumfa-2.9.0/edumfa/api/smtpserver.py +167 -0
  48. edumfa-2.9.0/edumfa/api/system.py +383 -0
  49. edumfa-2.9.0/edumfa/api/token.py +1407 -0
  50. edumfa-2.9.0/edumfa/api/tokengroup.py +189 -0
  51. edumfa-2.9.0/edumfa/api/ttype.py +138 -0
  52. edumfa-2.9.0/edumfa/api/user.py +360 -0
  53. edumfa-2.9.0/edumfa/api/validate.py +757 -0
  54. edumfa-2.9.0/edumfa/app.py +243 -0
  55. edumfa-2.9.0/edumfa/commands/manage/admin.py +70 -0
  56. edumfa-2.9.0/edumfa/commands/manage/api.py +101 -0
  57. edumfa-2.9.0/edumfa/commands/manage/audit.py +229 -0
  58. edumfa-2.9.0/edumfa/commands/manage/authcache.py +44 -0
  59. edumfa-2.9.0/edumfa/commands/manage/backup.py +312 -0
  60. edumfa-2.9.0/edumfa/commands/manage/ca.py +92 -0
  61. edumfa-2.9.0/edumfa/commands/manage/config.py +281 -0
  62. edumfa-2.9.0/edumfa/commands/manage/core.py +286 -0
  63. edumfa-2.9.0/edumfa/commands/manage/event.py +143 -0
  64. edumfa-2.9.0/edumfa/commands/manage/helper.py +275 -0
  65. edumfa-2.9.0/edumfa/commands/manage/hsm.py +42 -0
  66. edumfa-2.9.0/edumfa/commands/manage/main.py +103 -0
  67. edumfa-2.9.0/edumfa/commands/manage/policy.py +215 -0
  68. edumfa-2.9.0/edumfa/commands/manage/realm.py +85 -0
  69. edumfa-2.9.0/edumfa/commands/manage/resolver.py +218 -0
  70. edumfa-2.9.0/edumfa/commands/manage/token.py +43 -0
  71. edumfa-2.9.0/edumfa/config.py +183 -0
  72. edumfa-2.9.0/edumfa/lib/__init__.py +21 -0
  73. edumfa-2.9.0/edumfa/lib/applications/__init__.py +30 -0
  74. edumfa-2.9.0/edumfa/lib/applications/base.py +179 -0
  75. edumfa-2.9.0/edumfa/lib/applications/luks.py +100 -0
  76. edumfa-2.9.0/edumfa/lib/applications/offline.py +193 -0
  77. edumfa-2.9.0/edumfa/lib/applications/ssh.py +130 -0
  78. edumfa-2.9.0/edumfa/lib/apps.py +217 -0
  79. edumfa-2.9.0/edumfa/lib/audit.py +140 -0
  80. edumfa-2.9.0/edumfa/lib/auditmodules/base.py +297 -0
  81. edumfa-2.9.0/edumfa/lib/auditmodules/containeraudit.py +140 -0
  82. edumfa-2.9.0/edumfa/lib/auditmodules/loggeraudit.py +94 -0
  83. edumfa-2.9.0/edumfa/lib/auditmodules/sqlaudit.py +691 -0
  84. edumfa-2.9.0/edumfa/lib/auth.py +141 -0
  85. edumfa-2.9.0/edumfa/lib/authcache.py +187 -0
  86. edumfa-2.9.0/edumfa/lib/caconnector.py +351 -0
  87. edumfa-2.9.0/edumfa/lib/caconnectors/caservice_pb2.py +261 -0
  88. edumfa-2.9.0/edumfa/lib/caconnectors/caservice_pb2_grpc.py +374 -0
  89. edumfa-2.9.0/edumfa/lib/caconnectors/localca.py +772 -0
  90. edumfa-2.9.0/edumfa/lib/caconnectors/msca.py +468 -0
  91. edumfa-2.9.0/edumfa/lib/challenge.py +179 -0
  92. edumfa-2.9.0/edumfa/lib/challengeresponsedecorators.py +244 -0
  93. edumfa-2.9.0/edumfa/lib/clientapplication.py +115 -0
  94. edumfa-2.9.0/edumfa/lib/config.py +1116 -0
  95. edumfa-2.9.0/edumfa/lib/counter.py +116 -0
  96. edumfa-2.9.0/edumfa/lib/crypto.py +923 -0
  97. edumfa-2.9.0/edumfa/lib/decorators.py +147 -0
  98. edumfa-2.9.0/edumfa/lib/edumfaserver.py +263 -0
  99. edumfa-2.9.0/edumfa/lib/error.py +203 -0
  100. edumfa-2.9.0/edumfa/lib/event.py +384 -0
  101. edumfa-2.9.0/edumfa/lib/eventhandler/base.py +662 -0
  102. edumfa-2.9.0/edumfa/lib/eventhandler/counterhandler.py +123 -0
  103. edumfa-2.9.0/edumfa/lib/eventhandler/customuserattributeshandler.py +144 -0
  104. edumfa-2.9.0/edumfa/lib/eventhandler/federationhandler.py +188 -0
  105. edumfa-2.9.0/edumfa/lib/eventhandler/logginghandler.py +181 -0
  106. edumfa-2.9.0/edumfa/lib/eventhandler/requestmangler.py +200 -0
  107. edumfa-2.9.0/edumfa/lib/eventhandler/responsemangler.py +184 -0
  108. edumfa-2.9.0/edumfa/lib/eventhandler/scripthandler.py +243 -0
  109. edumfa-2.9.0/edumfa/lib/eventhandler/tokenhandler.py +697 -0
  110. edumfa-2.9.0/edumfa/lib/eventhandler/usernotification.py +532 -0
  111. edumfa-2.9.0/edumfa/lib/eventhandler/webhookeventhandler.py +211 -0
  112. edumfa-2.9.0/edumfa/lib/framework.py +73 -0
  113. edumfa-2.9.0/edumfa/lib/importotp.py +829 -0
  114. edumfa-2.9.0/edumfa/lib/lifecycle.py +77 -0
  115. edumfa-2.9.0/edumfa/lib/log.py +235 -0
  116. edumfa-2.9.0/edumfa/lib/machine.py +582 -0
  117. edumfa-2.9.0/edumfa/lib/machineresolver.py +313 -0
  118. edumfa-2.9.0/edumfa/lib/machines/__init__.py +29 -0
  119. edumfa-2.9.0/edumfa/lib/machines/base.py +186 -0
  120. edumfa-2.9.0/edumfa/lib/machines/hosts.py +165 -0
  121. edumfa-2.9.0/edumfa/lib/machines/ldap.py +380 -0
  122. edumfa-2.9.0/edumfa/lib/monitoringmodules/base.py +96 -0
  123. edumfa-2.9.0/edumfa/lib/monitoringmodules/sqlstats.py +207 -0
  124. edumfa-2.9.0/edumfa/lib/monitoringstats.py +134 -0
  125. edumfa-2.9.0/edumfa/lib/passwordreset.py +155 -0
  126. edumfa-2.9.0/edumfa/lib/periodictask.py +343 -0
  127. edumfa-2.9.0/edumfa/lib/pinhandling/base.py +94 -0
  128. edumfa-2.9.0/edumfa/lib/policy.py +3829 -0
  129. edumfa-2.9.0/edumfa/lib/policydecorators.py +749 -0
  130. edumfa-2.9.0/edumfa/lib/pooling.py +140 -0
  131. edumfa-2.9.0/edumfa/lib/queue.py +170 -0
  132. edumfa-2.9.0/edumfa/lib/queues/base.py +63 -0
  133. edumfa-2.9.0/edumfa/lib/queues/huey_queue.py +57 -0
  134. edumfa-2.9.0/edumfa/lib/radiusserver.py +371 -0
  135. edumfa-2.9.0/edumfa/lib/realm.py +272 -0
  136. edumfa-2.9.0/edumfa/lib/resolver.py +412 -0
  137. edumfa-2.9.0/edumfa/lib/resolvers/HTTPResolver.py +235 -0
  138. edumfa-2.9.0/edumfa/lib/resolvers/LDAPIdResolver.py +1510 -0
  139. edumfa-2.9.0/edumfa/lib/resolvers/PasswdIdResolver.py +503 -0
  140. edumfa-2.9.0/edumfa/lib/resolvers/SCIMIdResolver.py +308 -0
  141. edumfa-2.9.0/edumfa/lib/resolvers/SQLIdResolver.py +783 -0
  142. edumfa-2.9.0/edumfa/lib/resolvers/UserIdResolver.py +280 -0
  143. edumfa-2.9.0/edumfa/lib/resolvers/__init__.py +6 -0
  144. edumfa-2.9.0/edumfa/lib/security/aeshsm.py +372 -0
  145. edumfa-2.9.0/edumfa/lib/security/default.py +509 -0
  146. edumfa-2.9.0/edumfa/lib/security/encryptkey.py +408 -0
  147. edumfa-2.9.0/edumfa/lib/serviceid.py +82 -0
  148. edumfa-2.9.0/edumfa/lib/smsprovider/FirebaseProvider.py +264 -0
  149. edumfa-2.9.0/edumfa/lib/smsprovider/HttpMessageToUidProvider.py +317 -0
  150. edumfa-2.9.0/edumfa/lib/smsprovider/HttpSMSProvider.py +307 -0
  151. edumfa-2.9.0/edumfa/lib/smsprovider/SMSProvider.py +394 -0
  152. edumfa-2.9.0/edumfa/lib/smsprovider/ScriptSMSProvider.py +145 -0
  153. edumfa-2.9.0/edumfa/lib/smsprovider/SipgateSMSProvider.py +126 -0
  154. edumfa-2.9.0/edumfa/lib/smsprovider/SmppSMSProvider.py +141 -0
  155. edumfa-2.9.0/edumfa/lib/smsprovider/SmtpSMSProvider.py +142 -0
  156. edumfa-2.9.0/edumfa/lib/smsprovider/__init__.py +37 -0
  157. edumfa-2.9.0/edumfa/lib/smtpserver.py +392 -0
  158. edumfa-2.9.0/edumfa/lib/sqlutils.py +127 -0
  159. edumfa-2.9.0/edumfa/lib/subscriptions.py +197 -0
  160. edumfa-2.9.0/edumfa/lib/task/eventcounter.py +83 -0
  161. edumfa-2.9.0/edumfa/lib/task/simplestats.py +106 -0
  162. edumfa-2.9.0/edumfa/lib/token.py +2872 -0
  163. edumfa-2.9.0/edumfa/lib/tokenclass.py +1987 -0
  164. edumfa-2.9.0/edumfa/lib/tokengroup.py +87 -0
  165. edumfa-2.9.0/edumfa/lib/tokens/HMAC.py +159 -0
  166. edumfa-2.9.0/edumfa/lib/tokens/applicationspecificpasswordtoken.py +160 -0
  167. edumfa-2.9.0/edumfa/lib/tokens/certificatetoken.py +728 -0
  168. edumfa-2.9.0/edumfa/lib/tokens/daplugtoken.py +277 -0
  169. edumfa-2.9.0/edumfa/lib/tokens/daypasswordtoken.py +471 -0
  170. edumfa-2.9.0/edumfa/lib/tokens/emailtoken.py +623 -0
  171. edumfa-2.9.0/edumfa/lib/tokens/foureyestoken.py +534 -0
  172. edumfa-2.9.0/edumfa/lib/tokens/hotptoken.py +908 -0
  173. edumfa-2.9.0/edumfa/lib/tokens/indexedsecrettoken.py +421 -0
  174. edumfa-2.9.0/edumfa/lib/tokens/legacypushtoken.py +116 -0
  175. edumfa-2.9.0/edumfa/lib/tokens/mOTP.py +161 -0
  176. edumfa-2.9.0/edumfa/lib/tokens/motptoken.py +240 -0
  177. edumfa-2.9.0/edumfa/lib/tokens/ocra.py +371 -0
  178. edumfa-2.9.0/edumfa/lib/tokens/ocratoken.py +310 -0
  179. edumfa-2.9.0/edumfa/lib/tokens/papertoken.py +153 -0
  180. edumfa-2.9.0/edumfa/lib/tokens/passwordtoken.py +208 -0
  181. edumfa-2.9.0/edumfa/lib/tokens/pushtoken.py +1396 -0
  182. edumfa-2.9.0/edumfa/lib/tokens/questionnairetoken.py +384 -0
  183. edumfa-2.9.0/edumfa/lib/tokens/radiustoken.py +592 -0
  184. edumfa-2.9.0/edumfa/lib/tokens/registrationtoken.py +185 -0
  185. edumfa-2.9.0/edumfa/lib/tokens/remotetoken.py +367 -0
  186. edumfa-2.9.0/edumfa/lib/tokens/smstoken.py +708 -0
  187. edumfa-2.9.0/edumfa/lib/tokens/spasstoken.py +164 -0
  188. edumfa-2.9.0/edumfa/lib/tokens/sshkeytoken.py +182 -0
  189. edumfa-2.9.0/edumfa/lib/tokens/tantoken.py +237 -0
  190. edumfa-2.9.0/edumfa/lib/tokens/tiqrtoken.py +495 -0
  191. edumfa-2.9.0/edumfa/lib/tokens/totptoken.py +835 -0
  192. edumfa-2.9.0/edumfa/lib/tokens/u2f.py +303 -0
  193. edumfa-2.9.0/edumfa/lib/tokens/u2ftoken.py +669 -0
  194. edumfa-2.9.0/edumfa/lib/tokens/vasco.py +188 -0
  195. edumfa-2.9.0/edumfa/lib/tokens/vascotoken.py +203 -0
  196. edumfa-2.9.0/edumfa/lib/tokens/webauthn.py +2365 -0
  197. edumfa-2.9.0/edumfa/lib/tokens/webauthntoken.py +1772 -0
  198. edumfa-2.9.0/edumfa/lib/tokens/yubicotoken.py +230 -0
  199. edumfa-2.9.0/edumfa/lib/tokens/yubikeytoken.py +502 -0
  200. edumfa-2.9.0/edumfa/lib/user.py +857 -0
  201. edumfa-2.9.0/edumfa/lib/usercache.py +264 -0
  202. edumfa-2.9.0/edumfa/lib/utils/__init__.py +1613 -0
  203. edumfa-2.9.0/edumfa/lib/utils/compare.py +247 -0
  204. edumfa-2.9.0/edumfa/lib/utils/export.py +120 -0
  205. edumfa-2.9.0/edumfa/models.py +3419 -0
  206. edumfa-2.9.0/edumfa/static/Gruntfile.js +28 -0
  207. edumfa-2.9.0/edumfa/static/app.js +180 -0
  208. edumfa-2.9.0/edumfa/static/bun.lock +347 -0
  209. edumfa-2.9.0/edumfa/static/components/config/controllers/configControllers.js +1290 -0
  210. edumfa-2.9.0/edumfa/static/components/config/controllers/eduMfaServerController.js +99 -0
  211. edumfa-2.9.0/edumfa/static/components/config/views/config.html +86 -0
  212. edumfa-2.9.0/edumfa/static/components/config/views/config.smtp.edit.html +154 -0
  213. edumfa-2.9.0/edumfa/static/components/config/views/config.token.totp.html +55 -0
  214. edumfa-2.9.0/edumfa/static/components/config/views/dialog.ldap_restart.html +26 -0
  215. edumfa-2.9.0/edumfa/static/components/dashboard/controllers/dashboardControllers.js +200 -0
  216. edumfa-2.9.0/edumfa/static/components/login/controllers/loginControllers.js +680 -0
  217. edumfa-2.9.0/edumfa/static/components/login/views/enter-response.html +35 -0
  218. edumfa-2.9.0/edumfa/static/components/token/controllers/tokenControllers.js +745 -0
  219. edumfa-2.9.0/edumfa/static/components/token/controllers/tokenDetailController.js +463 -0
  220. edumfa-2.9.0/edumfa/static/components/token/factories/token.js +261 -0
  221. edumfa-2.9.0/edumfa/static/components/token/views/token.details.html +740 -0
  222. edumfa-2.9.0/edumfa/static/components/token/views/token.enroll.remote.html +54 -0
  223. edumfa-2.9.0/edumfa/static/components/token/views/token.enroll.totp.html +89 -0
  224. edumfa-2.9.0/edumfa/static/components/token/views/token.enroll.yubikey.html +47 -0
  225. edumfa-2.9.0/edumfa/static/components/token/views/token.enrolled.registration.html +18 -0
  226. edumfa-2.9.0/edumfa/static/components/translation/translations.js +22 -0
  227. edumfa-2.9.0/edumfa/static/contrib/css/isteven-multi-select.css +299 -0
  228. edumfa-2.9.0/edumfa/static/contrib/js/jquery.js +10716 -0
  229. edumfa-2.9.0/edumfa/static/contrib/js/ngmodules/isteven-multi-select.js +1111 -0
  230. edumfa-2.9.0/edumfa/static/package.json +35 -0
  231. edumfa-2.9.0/edumfa/static/templates/baseline.html +18 -0
  232. edumfa-2.9.0/edumfa/static/templates/documentation.rst +129 -0
  233. edumfa-2.9.0/edumfa/static/translations/cs.po +5156 -0
  234. edumfa-2.9.0/edumfa/static/translations/de.po +5773 -0
  235. edumfa-2.9.0/edumfa/static/translations/es.po +5137 -0
  236. edumfa-2.9.0/edumfa/static/translations/fr.po +5072 -0
  237. edumfa-2.9.0/edumfa/static/translations/hu.po +4757 -0
  238. edumfa-2.9.0/edumfa/static/translations/it.po +5611 -0
  239. edumfa-2.9.0/edumfa/static/translations/mn.po +4794 -0
  240. edumfa-2.9.0/edumfa/static/translations/nb_NO.po +4764 -0
  241. edumfa-2.9.0/edumfa/static/translations/nl.po +5637 -0
  242. edumfa-2.9.0/edumfa/static/translations/pl.po +4742 -0
  243. edumfa-2.9.0/edumfa/static/translations/pt_BR.po +4758 -0
  244. edumfa-2.9.0/edumfa/static/translations/ro.po +4792 -0
  245. edumfa-2.9.0/edumfa/static/translations/ru.po +4812 -0
  246. edumfa-2.9.0/edumfa/static/translations/si.po +4748 -0
  247. edumfa-2.9.0/edumfa/static/translations/template.pot +4662 -0
  248. edumfa-2.9.0/edumfa/static/translations/tr.po +5562 -0
  249. edumfa-2.9.0/edumfa/static/translations/uk.po +5042 -0
  250. edumfa-2.9.0/edumfa/static/translations/zh_Hans.po +4772 -0
  251. edumfa-2.9.0/edumfa/static/translations/zh_Hant.po +5549 -0
  252. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/update_contrib.sh +0 -0
  253. edumfa-2.9.0/edumfa/translations/cs/LC_MESSAGES/messages.mo +0 -0
  254. edumfa-2.9.0/edumfa/translations/cs/LC_MESSAGES/messages.po +2996 -0
  255. edumfa-2.9.0/edumfa/translations/de/LC_MESSAGES/messages.mo +0 -0
  256. edumfa-2.9.0/edumfa/translations/de/LC_MESSAGES/messages.po +3726 -0
  257. edumfa-2.9.0/edumfa/translations/es/LC_MESSAGES/messages.mo +0 -0
  258. edumfa-2.9.0/edumfa/translations/es/LC_MESSAGES/messages.po +3582 -0
  259. edumfa-2.9.0/edumfa/translations/fr/LC_MESSAGES/messages.mo +0 -0
  260. edumfa-2.9.0/edumfa/translations/fr/LC_MESSAGES/messages.po +3395 -0
  261. edumfa-2.9.0/edumfa/translations/it/LC_MESSAGES/messages.mo +0 -0
  262. edumfa-2.9.0/edumfa/translations/it/LC_MESSAGES/messages.po +3117 -0
  263. edumfa-2.9.0/edumfa/translations/messages.pot +2853 -0
  264. edumfa-2.9.0/edumfa/translations/nl/LC_MESSAGES/messages.mo +0 -0
  265. edumfa-2.9.0/edumfa/translations/nl/LC_MESSAGES/messages.po +3620 -0
  266. edumfa-2.9.0/edumfa/translations/pl/LC_MESSAGES/messages.mo +0 -0
  267. edumfa-2.9.0/edumfa/translations/pl/LC_MESSAGES/messages.po +2969 -0
  268. edumfa-2.9.0/edumfa/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
  269. edumfa-2.9.0/edumfa/translations/pt_BR/LC_MESSAGES/messages.po +3473 -0
  270. edumfa-2.9.0/edumfa/translations/ro/LC_MESSAGES/messages.mo +0 -0
  271. edumfa-2.9.0/edumfa/translations/ro/LC_MESSAGES/messages.po +3062 -0
  272. edumfa-2.9.0/edumfa/translations/ru/LC_MESSAGES/messages.mo +0 -0
  273. edumfa-2.9.0/edumfa/translations/ru/LC_MESSAGES/messages.po +3073 -0
  274. edumfa-2.9.0/edumfa/translations/si/LC_MESSAGES/messages.mo +0 -0
  275. edumfa-2.9.0/edumfa/translations/si/LC_MESSAGES/messages.po +2969 -0
  276. edumfa-2.9.0/edumfa/translations/tr/LC_MESSAGES/messages.mo +0 -0
  277. edumfa-2.9.0/edumfa/translations/tr/LC_MESSAGES/messages.po +3452 -0
  278. edumfa-2.9.0/edumfa/translations/zh_Hans/LC_MESSAGES/messages.mo +0 -0
  279. edumfa-2.9.0/edumfa/translations/zh_Hans/LC_MESSAGES/messages.po +3018 -0
  280. edumfa-2.9.0/edumfa/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
  281. edumfa-2.9.0/edumfa/translations/zh_Hant/LC_MESSAGES/messages.po +3022 -0
  282. edumfa-2.9.0/edumfa/webui/__init__.py +1 -0
  283. edumfa-2.9.0/edumfa/webui/certificate.py +115 -0
  284. edumfa-2.9.0/edumfa/webui/login.py +234 -0
  285. edumfa-2.9.0/edumfa.egg-info/PKG-INFO +304 -0
  286. edumfa-2.9.0/edumfa.egg-info/SOURCES.txt +881 -0
  287. edumfa-2.9.0/edumfa.egg-info/requires.txt +117 -0
  288. edumfa-2.9.0/migrations/env.py +113 -0
  289. edumfa-2.9.0/migrations/versions/006d4747f858_.py +32 -0
  290. edumfa-2.9.0/migrations/versions/00762b3f7a60_.py +85 -0
  291. edumfa-2.9.0/migrations/versions/0c7123345224_.py +44 -0
  292. edumfa-2.9.0/migrations/versions/0d011e94a8e8_.py +231 -0
  293. edumfa-2.9.0/migrations/versions/140ba0ca4f07_.py +22 -0
  294. edumfa-2.9.0/migrations/versions/145ce80decd_.py +31 -0
  295. edumfa-2.9.0/migrations/versions/14a1bcb10018_.py +28 -0
  296. edumfa-2.9.0/migrations/versions/19f727d285e2_.py +35 -0
  297. edumfa-2.9.0/migrations/versions/1a0710df148b_.py +28 -0
  298. edumfa-2.9.0/migrations/versions/1a69e5e5e2ac_.py +49 -0
  299. edumfa-2.9.0/migrations/versions/1edda52b619f_.py +32 -0
  300. edumfa-2.9.0/migrations/versions/204d8d4f351e_.py +31 -0
  301. edumfa-2.9.0/migrations/versions/205bda834127_.py +50 -0
  302. edumfa-2.9.0/migrations/versions/20969b4cbf06_.py +44 -0
  303. edumfa-2.9.0/migrations/versions/2118e566df16_.py +26 -0
  304. edumfa-2.9.0/migrations/versions/2181294eed0b_.py +32 -0
  305. edumfa-2.9.0/migrations/versions/22558d9f3178_.py +28 -0
  306. edumfa-2.9.0/migrations/versions/239995464c48_.py +35 -0
  307. edumfa-2.9.0/migrations/versions/2551ee982544_.py +38 -0
  308. edumfa-2.9.0/migrations/versions/2a74c6522937_.py +55 -0
  309. edumfa-2.9.0/migrations/versions/2ac117d0a6f5_.py +44 -0
  310. edumfa-2.9.0/migrations/versions/2c9430cfc66b_.py +69 -0
  311. edumfa-2.9.0/migrations/versions/307a4fbe8a05_.py +42 -0
  312. edumfa-2.9.0/migrations/versions/3236a1abf1c6_.py +32 -0
  313. edumfa-2.9.0/migrations/versions/3429d523e51f_.py +49 -0
  314. edumfa-2.9.0/migrations/versions/36428afb2457_.py +35 -0
  315. edumfa-2.9.0/migrations/versions/37e6b49fc686_.py +68 -0
  316. edumfa-2.9.0/migrations/versions/3ae3c668f444_.py +47 -0
  317. edumfa-2.9.0/migrations/versions/3ba618f6b820_.py +59 -0
  318. edumfa-2.9.0/migrations/versions/3c6e9dd7fbac_.py +60 -0
  319. edumfa-2.9.0/migrations/versions/3d7f8b29cbb1_.py +116 -0
  320. edumfa-2.9.0/migrations/versions/3f7e8583ea2_.py +38 -0
  321. edumfa-2.9.0/migrations/versions/4023571658f8_.py +54 -0
  322. edumfa-2.9.0/migrations/versions/414079706620_.py +66 -0
  323. edumfa-2.9.0/migrations/versions/4238eac8ccab_.py +87 -0
  324. edumfa-2.9.0/migrations/versions/449903fb6e35_.py +42 -0
  325. edumfa-2.9.0/migrations/versions/48ee74b8a7c8_.py +229 -0
  326. edumfa-2.9.0/migrations/versions/49a04e560d96_.py +40 -0
  327. edumfa-2.9.0/migrations/versions/4a0aec37e7cf_.py +50 -0
  328. edumfa-2.9.0/migrations/versions/4d9178fa8336_.py +34 -0
  329. edumfa-2.9.0/migrations/versions/4f32a4e1bf33_.py +512 -0
  330. edumfa-2.9.0/migrations/versions/50adc980d625_.py +57 -0
  331. edumfa-2.9.0/migrations/versions/5402fd96fbca_.py +65 -0
  332. edumfa-2.9.0/migrations/versions/58e4f7ebb705_.py +28 -0
  333. edumfa-2.9.0/migrations/versions/59ef3e03bc62_.py +36 -0
  334. edumfa-2.9.0/migrations/versions/5cb310101a1f_.py +81 -0
  335. edumfa-2.9.0/migrations/versions/631ec59e1ca6_.py +28 -0
  336. edumfa-2.9.0/migrations/versions/7d82d8b680a9_.py +30 -0
  337. edumfa-2.9.0/migrations/versions/849170064430_.py +31 -0
  338. edumfa-2.9.0/migrations/versions/86f40f535d7c_.py +36 -0
  339. edumfa-2.9.0/migrations/versions/888b56ed5dcb_.py +58 -0
  340. edumfa-2.9.0/migrations/versions/89e57ed16379_.py +57 -0
  341. edumfa-2.9.0/migrations/versions/8d40dbcfda25_.py +42 -0
  342. edumfa-2.9.0/migrations/versions/9155f0d3d028_.py +110 -0
  343. edumfa-2.9.0/migrations/versions/a28f2733897b_.py +49 -0
  344. edumfa-2.9.0/migrations/versions/a63df077051a_.py +30 -0
  345. edumfa-2.9.0/migrations/versions/a7e91b18a460_.py +75 -0
  346. edumfa-2.9.0/migrations/versions/a844dc0c3fb9_.py +58 -0
  347. edumfa-2.9.0/migrations/versions/b9131d0686eb_.py +104 -0
  348. edumfa-2.9.0/migrations/versions/cb6d7b7bae63_.py +34 -0
  349. edumfa-2.9.0/migrations/versions/d2ae8e54b628_.py +101 -0
  350. edumfa-2.9.0/migrations/versions/d3c0f0403a84_.py +22 -0
  351. edumfa-2.9.0/migrations/versions/d415d490eb05_.py +33 -0
  352. edumfa-2.9.0/migrations/versions/d5870fd2f2a4_.py +22 -0
  353. edumfa-2.9.0/migrations/versions/d6b40a745e5_.py +34 -0
  354. edumfa-2.9.0/migrations/versions/d756b34061ff_.py +105 -0
  355. edumfa-2.9.0/migrations/versions/dceb6cd3c41e_.py +60 -0
  356. edumfa-2.9.0/migrations/versions/e360c56bcf8c_.py +89 -0
  357. edumfa-2.9.0/migrations/versions/e5cbeb7c177_.py +34 -0
  358. edumfa-2.9.0/migrations/versions/ef29ba43e290_.py +54 -0
  359. edumfa-2.9.0/migrations/versions/fa07bd604a75.py +73 -0
  360. edumfa-2.9.0/migrations/versions/fabcf24d9304_.py +44 -0
  361. edumfa-2.9.0/migrations/versions/ff26585932ec_.py +55 -0
  362. edumfa-2.9.0/pyproject.toml +125 -0
  363. edumfa-2.9.0/requirements.txt +165 -0
  364. edumfa-2.9.0/setup.py +65 -0
  365. edumfa-2.9.0/tests/base.py +283 -0
  366. edumfa-2.9.0/tests/conftest.py +5 -0
  367. edumfa-2.9.0/tests/ldap3mock.py +798 -0
  368. edumfa-2.9.0/tests/mscamock.py +80 -0
  369. edumfa-2.9.0/tests/pkcs11mock.py +214 -0
  370. edumfa-2.9.0/tests/queuemock.py +75 -0
  371. edumfa-2.9.0/tests/radiusmock.py +159 -0
  372. edumfa-2.9.0/tests/redismock.py +117 -0
  373. edumfa-2.9.0/tests/smppmock.py +180 -0
  374. edumfa-2.9.0/tests/smtpmock.py +247 -0
  375. edumfa-2.9.0/tests/test_api_2stepinit.py +759 -0
  376. edumfa-2.9.0/tests/test_api_applications.py +27 -0
  377. edumfa-2.9.0/tests/test_api_audit.py +467 -0
  378. edumfa-2.9.0/tests/test_api_auth.py +1095 -0
  379. edumfa-2.9.0/tests/test_api_caconnector.py +195 -0
  380. edumfa-2.9.0/tests/test_api_clienttype.py +42 -0
  381. edumfa-2.9.0/tests/test_api_edumfaserver.py +110 -0
  382. edumfa-2.9.0/tests/test_api_events.py +761 -0
  383. edumfa-2.9.0/tests/test_api_lib_policy.py +4971 -0
  384. edumfa-2.9.0/tests/test_api_lib_utils.py +599 -0
  385. edumfa-2.9.0/tests/test_api_machineresolver.py +158 -0
  386. edumfa-2.9.0/tests/test_api_machines.py +878 -0
  387. edumfa-2.9.0/tests/test_api_machines_serviceid.py +360 -0
  388. edumfa-2.9.0/tests/test_api_monitoring.py +122 -0
  389. edumfa-2.9.0/tests/test_api_offline_no_token.py +115 -0
  390. edumfa-2.9.0/tests/test_api_periodictask.py +345 -0
  391. edumfa-2.9.0/tests/test_api_policy.py +869 -0
  392. edumfa-2.9.0/tests/test_api_push_validate.py +1281 -0
  393. edumfa-2.9.0/tests/test_api_radiusserver.py +162 -0
  394. edumfa-2.9.0/tests/test_api_register.py +211 -0
  395. edumfa-2.9.0/tests/test_api_roles.py +1658 -0
  396. edumfa-2.9.0/tests/test_api_serviceids.py +102 -0
  397. edumfa-2.9.0/tests/test_api_smsgateway.py +285 -0
  398. edumfa-2.9.0/tests/test_api_smtpserver.py +103 -0
  399. edumfa-2.9.0/tests/test_api_system.py +1311 -0
  400. edumfa-2.9.0/tests/test_api_token.py +4439 -0
  401. edumfa-2.9.0/tests/test_api_tokengroup.py +102 -0
  402. edumfa-2.9.0/tests/test_api_ttype.py +915 -0
  403. edumfa-2.9.0/tests/test_api_u2f.py +535 -0
  404. edumfa-2.9.0/tests/test_api_users.py +738 -0
  405. edumfa-2.9.0/tests/test_api_validate.py +7109 -0
  406. edumfa-2.9.0/tests/test_app.py +239 -0
  407. edumfa-2.9.0/tests/test_db_model.py +1254 -0
  408. edumfa-2.9.0/tests/test_lib_applications.py +216 -0
  409. edumfa-2.9.0/tests/test_lib_apps.py +62 -0
  410. edumfa-2.9.0/tests/test_lib_audit.py +588 -0
  411. edumfa-2.9.0/tests/test_lib_auth.py +47 -0
  412. edumfa-2.9.0/tests/test_lib_authcache.py +233 -0
  413. edumfa-2.9.0/tests/test_lib_caconnector.py +761 -0
  414. edumfa-2.9.0/tests/test_lib_challenges.py +80 -0
  415. edumfa-2.9.0/tests/test_lib_clientapplication.py +150 -0
  416. edumfa-2.9.0/tests/test_lib_config.py +298 -0
  417. edumfa-2.9.0/tests/test_lib_counter.py +216 -0
  418. edumfa-2.9.0/tests/test_lib_crypto.py +866 -0
  419. edumfa-2.9.0/tests/test_lib_edumfaserver.py +267 -0
  420. edumfa-2.9.0/tests/test_lib_eventhandler_logging.py +168 -0
  421. edumfa-2.9.0/tests/test_lib_eventhandler_usernotification.py +1653 -0
  422. edumfa-2.9.0/tests/test_lib_events.py +2951 -0
  423. edumfa-2.9.0/tests/test_lib_framework.py +74 -0
  424. edumfa-2.9.0/tests/test_lib_importotp.py +790 -0
  425. edumfa-2.9.0/tests/test_lib_lifecycle.py +73 -0
  426. edumfa-2.9.0/tests/test_lib_machine_resolver_ldap.py +195 -0
  427. edumfa-2.9.0/tests/test_lib_machines.py +249 -0
  428. edumfa-2.9.0/tests/test_lib_machinetokens.py +249 -0
  429. edumfa-2.9.0/tests/test_lib_monitoringstats.py +135 -0
  430. edumfa-2.9.0/tests/test_lib_periodictask.py +672 -0
  431. edumfa-2.9.0/tests/test_lib_policy.py +2091 -0
  432. edumfa-2.9.0/tests/test_lib_policydecorator.py +1047 -0
  433. edumfa-2.9.0/tests/test_lib_pooling.py +78 -0
  434. edumfa-2.9.0/tests/test_lib_queue.py +116 -0
  435. edumfa-2.9.0/tests/test_lib_radiusserver.py +195 -0
  436. edumfa-2.9.0/tests/test_lib_realm.py +110 -0
  437. edumfa-2.9.0/tests/test_lib_recovery.py +133 -0
  438. edumfa-2.9.0/tests/test_lib_resolver.py +3320 -0
  439. edumfa-2.9.0/tests/test_lib_serviceid.py +65 -0
  440. edumfa-2.9.0/tests/test_lib_smsprovider.py +1024 -0
  441. edumfa-2.9.0/tests/test_lib_smtpserver.py +274 -0
  442. edumfa-2.9.0/tests/test_lib_sqlutils.py +106 -0
  443. edumfa-2.9.0/tests/test_lib_subscriptions.py +54 -0
  444. edumfa-2.9.0/tests/test_lib_task_eventcounter.py +62 -0
  445. edumfa-2.9.0/tests/test_lib_task_simplestats.py +112 -0
  446. edumfa-2.9.0/tests/test_lib_tasks.py +25 -0
  447. edumfa-2.9.0/tests/test_lib_token.py +2485 -0
  448. edumfa-2.9.0/tests/test_lib_tokenclass.py +929 -0
  449. edumfa-2.9.0/tests/test_lib_tokengroup.py +73 -0
  450. edumfa-2.9.0/tests/test_lib_tokens_certificate.py +793 -0
  451. edumfa-2.9.0/tests/test_lib_tokens_daplug.py +588 -0
  452. edumfa-2.9.0/tests/test_lib_tokens_daypassword.py +657 -0
  453. edumfa-2.9.0/tests/test_lib_tokens_email.py +519 -0
  454. edumfa-2.9.0/tests/test_lib_tokens_foureyes.py +96 -0
  455. edumfa-2.9.0/tests/test_lib_tokens_hotp.py +828 -0
  456. edumfa-2.9.0/tests/test_lib_tokens_indexedsecret.py +160 -0
  457. edumfa-2.9.0/tests/test_lib_tokens_motp.py +176 -0
  458. edumfa-2.9.0/tests/test_lib_tokens_paper.py +70 -0
  459. edumfa-2.9.0/tests/test_lib_tokens_passwordtoken.py +57 -0
  460. edumfa-2.9.0/tests/test_lib_tokens_push.py +3593 -0
  461. edumfa-2.9.0/tests/test_lib_tokens_questionnaire.py +153 -0
  462. edumfa-2.9.0/tests/test_lib_tokens_radius.py +451 -0
  463. edumfa-2.9.0/tests/test_lib_tokens_registration.py +83 -0
  464. edumfa-2.9.0/tests/test_lib_tokens_remote.py +259 -0
  465. edumfa-2.9.0/tests/test_lib_tokens_sms.py +511 -0
  466. edumfa-2.9.0/tests/test_lib_tokens_spass.py +53 -0
  467. edumfa-2.9.0/tests/test_lib_tokens_ssh.py +144 -0
  468. edumfa-2.9.0/tests/test_lib_tokens_tan.py +136 -0
  469. edumfa-2.9.0/tests/test_lib_tokens_tiqr.py +744 -0
  470. edumfa-2.9.0/tests/test_lib_tokens_totp.py +857 -0
  471. edumfa-2.9.0/tests/test_lib_tokens_u2f.py +447 -0
  472. edumfa-2.9.0/tests/test_lib_tokens_vasco.py +305 -0
  473. edumfa-2.9.0/tests/test_lib_tokens_webauthn.py +1147 -0
  474. edumfa-2.9.0/tests/test_lib_tokens_yubico.py +110 -0
  475. edumfa-2.9.0/tests/test_lib_tokens_yubikey.py +293 -0
  476. edumfa-2.9.0/tests/test_lib_user.py +571 -0
  477. edumfa-2.9.0/tests/test_lib_usercache.py +662 -0
  478. edumfa-2.9.0/tests/test_lib_utils.py +1180 -0
  479. edumfa-2.9.0/tests/test_lib_utils_compare.py +145 -0
  480. edumfa-2.9.0/tests/test_mock_ldap3.py +1382 -0
  481. edumfa-2.9.0/tests/test_resolver_realm.py +82 -0
  482. edumfa-2.9.0/tests/test_scripts.py +318 -0
  483. edumfa-2.9.0/tests/test_ui_certificate.py +133 -0
  484. edumfa-2.9.0/tests/test_ui_login.py +177 -0
  485. edumfa-2.9.0/tests/testdata/fancytoken.py +21 -0
  486. edumfa-2.9.0/tools/creategoogleauthenticator-file +43 -0
  487. edumfa-2.9.0/tools/edumfa-convert-base32.py +56 -0
  488. edumfa-2.9.0/tools/edumfa-create-ad-users +102 -0
  489. edumfa-2.9.0/tools/edumfa-create-certificate +88 -0
  490. edumfa-2.9.0/tools/edumfa-create-pwidresolver-user +78 -0
  491. edumfa-2.9.0/tools/edumfa-cron +227 -0
  492. edumfa-2.9.0/tools/edumfa-expired-users +193 -0
  493. edumfa-2.9.0/tools/edumfa-export-edumfa-counter.py +60 -0
  494. edumfa-2.9.0/tools/edumfa-export-linotp-counter.py +99 -0
  495. edumfa-2.9.0/tools/edumfa-fix-access-rights +103 -0
  496. edumfa-2.9.0/tools/edumfa-get-serial +114 -0
  497. edumfa-2.9.0/tools/edumfa-get-unused-tokens +168 -0
  498. edumfa-2.9.0/tools/edumfa-migrate-linotp.py +652 -0
  499. edumfa-2.9.0/tools/edumfa-pip-update +95 -0
  500. edumfa-2.9.0/tools/edumfa-queue-huey +156 -0
  501. edumfa-2.9.0/tools/edumfa-schema-upgrade +22 -0
  502. edumfa-2.9.0/tools/edumfa-standalone +347 -0
  503. edumfa-2.9.0/tools/edumfa-sync-owncloud.py +255 -0
  504. edumfa-2.9.0/tools/edumfa-token-janitor +893 -0
  505. edumfa-2.9.0/tools/edumfa-update-counter.py +122 -0
  506. edumfa-2.9.0/tools/edumfa-update-linotp-counter.py +159 -0
  507. edumfa-2.9.0/tools/edumfa-user-action +148 -0
  508. edumfa-2.9.0/tools/edumfa-usercache-cleanup +124 -0
  509. edumfa-2.9.0/tools/getgooglecodes +49 -0
  510. edumfa-2.9.0/tools/ssha.py +32 -0
  511. edumfa-2.7.2/PKG-INFO +0 -921
  512. edumfa-2.7.2/deploy/docker/logging.cfg +0 -28
  513. edumfa-2.7.2/deploy/docker-compose-example.yml +0 -44
  514. edumfa-2.7.2/deploy/docker-example/edumfa-policy.conf +0 -127
  515. edumfa-2.7.2/deploy/docker-example/edumfa-setup.sh +0 -4
  516. edumfa-2.7.2/deploy/docker-example/edumfa.cfg +0 -28
  517. edumfa-2.7.2/deploy/docker-setup.sh +0 -42
  518. edumfa-2.7.2/deploy/edumfa/edumfa.cfg +0 -26
  519. edumfa-2.7.2/deploy/logging.cfg +0 -33
  520. edumfa-2.7.2/deploy/nginx/edumfaapp.py +0 -5
  521. edumfa-2.7.2/deploy/ubuntu/changelog +0 -466
  522. edumfa-2.7.2/deploy/ubuntu/control +0 -26
  523. edumfa-2.7.2/deploy/ubuntu/rules +0 -20
  524. edumfa-2.7.2/deploy/ubuntu-server/changelog +0 -115
  525. edumfa-2.7.2/deploy/ubuntu-server/control +0 -30
  526. edumfa-2.7.2/deploy/ubuntu-server/edumfa-apache2.postinst +0 -192
  527. edumfa-2.7.2/deploy/ubuntu-server/edumfa-nginx.postinst +0 -176
  528. edumfa-2.7.2/edumfa/api/__init__.py +0 -30
  529. edumfa-2.7.2/edumfa/api/application.py +0 -60
  530. edumfa-2.7.2/edumfa/api/audit.py +0 -146
  531. edumfa-2.7.2/edumfa/api/auth.py +0 -454
  532. edumfa-2.7.2/edumfa/api/before_after.py +0 -411
  533. edumfa-2.7.2/edumfa/api/caconnector.py +0 -99
  534. edumfa-2.7.2/edumfa/api/clienttype.py +0 -80
  535. edumfa-2.7.2/edumfa/api/edumfaserver.py +0 -129
  536. edumfa-2.7.2/edumfa/api/event.py +0 -225
  537. edumfa-2.7.2/edumfa/api/lib/decorators.py +0 -51
  538. edumfa-2.7.2/edumfa/api/lib/policyhelper.py +0 -198
  539. edumfa-2.7.2/edumfa/api/lib/postpolicy.py +0 -913
  540. edumfa-2.7.2/edumfa/api/lib/prepolicy.py +0 -2330
  541. edumfa-2.7.2/edumfa/api/lib/utils.py +0 -480
  542. edumfa-2.7.2/edumfa/api/machine.py +0 -417
  543. edumfa-2.7.2/edumfa/api/machineresolver.py +0 -150
  544. edumfa-2.7.2/edumfa/api/monitoring.py +0 -116
  545. edumfa-2.7.2/edumfa/api/periodictask.py +0 -216
  546. edumfa-2.7.2/edumfa/api/policy.py +0 -557
  547. edumfa-2.7.2/edumfa/api/radiusserver.py +0 -140
  548. edumfa-2.7.2/edumfa/api/realm.py +0 -386
  549. edumfa-2.7.2/edumfa/api/recover.py +0 -91
  550. edumfa-2.7.2/edumfa/api/register.py +0 -178
  551. edumfa-2.7.2/edumfa/api/resolver.py +0 -196
  552. edumfa-2.7.2/edumfa/api/serviceid.py +0 -192
  553. edumfa-2.7.2/edumfa/api/smsgateway.py +0 -152
  554. edumfa-2.7.2/edumfa/api/smtpserver.py +0 -146
  555. edumfa-2.7.2/edumfa/api/system.py +0 -376
  556. edumfa-2.7.2/edumfa/api/token.py +0 -1285
  557. edumfa-2.7.2/edumfa/api/tokengroup.py +0 -190
  558. edumfa-2.7.2/edumfa/api/ttype.py +0 -119
  559. edumfa-2.7.2/edumfa/api/user.py +0 -356
  560. edumfa-2.7.2/edumfa/api/validate.py +0 -674
  561. edumfa-2.7.2/edumfa/app.py +0 -234
  562. edumfa-2.7.2/edumfa/commands/manage/admin.py +0 -70
  563. edumfa-2.7.2/edumfa/commands/manage/api.py +0 -62
  564. edumfa-2.7.2/edumfa/commands/manage/audit.py +0 -176
  565. edumfa-2.7.2/edumfa/commands/manage/authcache.py +0 -38
  566. edumfa-2.7.2/edumfa/commands/manage/backup.py +0 -237
  567. edumfa-2.7.2/edumfa/commands/manage/ca.py +0 -80
  568. edumfa-2.7.2/edumfa/commands/manage/config.py +0 -203
  569. edumfa-2.7.2/edumfa/commands/manage/core.py +0 -250
  570. edumfa-2.7.2/edumfa/commands/manage/event.py +0 -115
  571. edumfa-2.7.2/edumfa/commands/manage/helper.py +0 -229
  572. edumfa-2.7.2/edumfa/commands/manage/hsm.py +0 -42
  573. edumfa-2.7.2/edumfa/commands/manage/main.py +0 -88
  574. edumfa-2.7.2/edumfa/commands/manage/policy.py +0 -168
  575. edumfa-2.7.2/edumfa/commands/manage/realm.py +0 -80
  576. edumfa-2.7.2/edumfa/commands/manage/resolver.py +0 -179
  577. edumfa-2.7.2/edumfa/commands/manage/token.py +0 -43
  578. edumfa-2.7.2/edumfa/config.py +0 -166
  579. edumfa-2.7.2/edumfa/lib/__init__.py +0 -21
  580. edumfa-2.7.2/edumfa/lib/applications/__init__.py +0 -31
  581. edumfa-2.7.2/edumfa/lib/applications/base.py +0 -173
  582. edumfa-2.7.2/edumfa/lib/applications/luks.py +0 -94
  583. edumfa-2.7.2/edumfa/lib/applications/offline.py +0 -187
  584. edumfa-2.7.2/edumfa/lib/applications/ssh.py +0 -110
  585. edumfa-2.7.2/edumfa/lib/apps.py +0 -191
  586. edumfa-2.7.2/edumfa/lib/audit.py +0 -131
  587. edumfa-2.7.2/edumfa/lib/auditmodules/base.py +0 -269
  588. edumfa-2.7.2/edumfa/lib/auditmodules/containeraudit.py +0 -121
  589. edumfa-2.7.2/edumfa/lib/auditmodules/loggeraudit.py +0 -93
  590. edumfa-2.7.2/edumfa/lib/auditmodules/sqlaudit.py +0 -606
  591. edumfa-2.7.2/edumfa/lib/auth.py +0 -141
  592. edumfa-2.7.2/edumfa/lib/authcache.py +0 -163
  593. edumfa-2.7.2/edumfa/lib/caconnector.py +0 -327
  594. edumfa-2.7.2/edumfa/lib/caconnectors/caservice_pb2.py +0 -198
  595. edumfa-2.7.2/edumfa/lib/caconnectors/caservice_pb2_grpc.py +0 -288
  596. edumfa-2.7.2/edumfa/lib/caconnectors/localca.py +0 -709
  597. edumfa-2.7.2/edumfa/lib/caconnectors/msca.py +0 -418
  598. edumfa-2.7.2/edumfa/lib/challenge.py +0 -173
  599. edumfa-2.7.2/edumfa/lib/challengeresponsedecorators.py +0 -206
  600. edumfa-2.7.2/edumfa/lib/clientapplication.py +0 -109
  601. edumfa-2.7.2/edumfa/lib/config.py +0 -1040
  602. edumfa-2.7.2/edumfa/lib/counter.py +0 -112
  603. edumfa-2.7.2/edumfa/lib/crypto.py +0 -896
  604. edumfa-2.7.2/edumfa/lib/decorators.py +0 -138
  605. edumfa-2.7.2/edumfa/lib/edumfaserver.py +0 -242
  606. edumfa-2.7.2/edumfa/lib/error.py +0 -199
  607. edumfa-2.7.2/edumfa/lib/event.py +0 -327
  608. edumfa-2.7.2/edumfa/lib/eventhandler/base.py +0 -618
  609. edumfa-2.7.2/edumfa/lib/eventhandler/counterhandler.py +0 -114
  610. edumfa-2.7.2/edumfa/lib/eventhandler/customuserattributeshandler.py +0 -124
  611. edumfa-2.7.2/edumfa/lib/eventhandler/federationhandler.py +0 -181
  612. edumfa-2.7.2/edumfa/lib/eventhandler/logginghandler.py +0 -174
  613. edumfa-2.7.2/edumfa/lib/eventhandler/requestmangler.py +0 -176
  614. edumfa-2.7.2/edumfa/lib/eventhandler/responsemangler.py +0 -171
  615. edumfa-2.7.2/edumfa/lib/eventhandler/scripthandler.py +0 -225
  616. edumfa-2.7.2/edumfa/lib/eventhandler/tokenhandler.py +0 -615
  617. edumfa-2.7.2/edumfa/lib/eventhandler/usernotification.py +0 -476
  618. edumfa-2.7.2/edumfa/lib/eventhandler/webhookeventhandler.py +0 -182
  619. edumfa-2.7.2/edumfa/lib/framework.py +0 -67
  620. edumfa-2.7.2/edumfa/lib/importotp.py +0 -772
  621. edumfa-2.7.2/edumfa/lib/lifecycle.py +0 -76
  622. edumfa-2.7.2/edumfa/lib/log.py +0 -198
  623. edumfa-2.7.2/edumfa/lib/machine.py +0 -503
  624. edumfa-2.7.2/edumfa/lib/machineresolver.py +0 -305
  625. edumfa-2.7.2/edumfa/lib/machines/__init__.py +0 -30
  626. edumfa-2.7.2/edumfa/lib/machines/base.py +0 -185
  627. edumfa-2.7.2/edumfa/lib/machines/hosts.py +0 -158
  628. edumfa-2.7.2/edumfa/lib/machines/ldap.py +0 -349
  629. edumfa-2.7.2/edumfa/lib/monitoringmodules/base.py +0 -100
  630. edumfa-2.7.2/edumfa/lib/monitoringmodules/sqlstats.py +0 -185
  631. edumfa-2.7.2/edumfa/lib/monitoringstats.py +0 -131
  632. edumfa-2.7.2/edumfa/lib/passwordreset.py +0 -150
  633. edumfa-2.7.2/edumfa/lib/periodictask.py +0 -313
  634. edumfa-2.7.2/edumfa/lib/pinhandling/base.py +0 -79
  635. edumfa-2.7.2/edumfa/lib/policy.py +0 -3014
  636. edumfa-2.7.2/edumfa/lib/policydecorators.py +0 -643
  637. edumfa-2.7.2/edumfa/lib/pooling.py +0 -130
  638. edumfa-2.7.2/edumfa/lib/queue.py +0 -159
  639. edumfa-2.7.2/edumfa/lib/queues/base.py +0 -63
  640. edumfa-2.7.2/edumfa/lib/queues/huey_queue.py +0 -56
  641. edumfa-2.7.2/edumfa/lib/radiusserver.py +0 -316
  642. edumfa-2.7.2/edumfa/lib/realm.py +0 -266
  643. edumfa-2.7.2/edumfa/lib/resolver.py +0 -396
  644. edumfa-2.7.2/edumfa/lib/resolvers/HTTPResolver.py +0 -226
  645. edumfa-2.7.2/edumfa/lib/resolvers/LDAPIdResolver.py +0 -1352
  646. edumfa-2.7.2/edumfa/lib/resolvers/PasswdIdResolver.py +0 -494
  647. edumfa-2.7.2/edumfa/lib/resolvers/SCIMIdResolver.py +0 -311
  648. edumfa-2.7.2/edumfa/lib/resolvers/SQLIdResolver.py +0 -742
  649. edumfa-2.7.2/edumfa/lib/resolvers/UserIdResolver.py +0 -275
  650. edumfa-2.7.2/edumfa/lib/resolvers/__init__.py +0 -6
  651. edumfa-2.7.2/edumfa/lib/security/aeshsm.py +0 -352
  652. edumfa-2.7.2/edumfa/lib/security/default.py +0 -503
  653. edumfa-2.7.2/edumfa/lib/security/encryptkey.py +0 -375
  654. edumfa-2.7.2/edumfa/lib/serviceid.py +0 -78
  655. edumfa-2.7.2/edumfa/lib/smsprovider/FirebaseProvider.py +0 -213
  656. edumfa-2.7.2/edumfa/lib/smsprovider/HttpMessageToUidProvider.py +0 -282
  657. edumfa-2.7.2/edumfa/lib/smsprovider/HttpSMSProvider.py +0 -278
  658. edumfa-2.7.2/edumfa/lib/smsprovider/SMSProvider.py +0 -376
  659. edumfa-2.7.2/edumfa/lib/smsprovider/ScriptSMSProvider.py +0 -133
  660. edumfa-2.7.2/edumfa/lib/smsprovider/SipgateSMSProvider.py +0 -130
  661. edumfa-2.7.2/edumfa/lib/smsprovider/SmppSMSProvider.py +0 -149
  662. edumfa-2.7.2/edumfa/lib/smsprovider/SmtpSMSProvider.py +0 -133
  663. edumfa-2.7.2/edumfa/lib/smsprovider/__init__.py +0 -37
  664. edumfa-2.7.2/edumfa/lib/smtpserver.py +0 -343
  665. edumfa-2.7.2/edumfa/lib/sqlutils.py +0 -124
  666. edumfa-2.7.2/edumfa/lib/subscriptions.py +0 -192
  667. edumfa-2.7.2/edumfa/lib/task/eventcounter.py +0 -80
  668. edumfa-2.7.2/edumfa/lib/task/simplestats.py +0 -98
  669. edumfa-2.7.2/edumfa/lib/token.py +0 -2611
  670. edumfa-2.7.2/edumfa/lib/tokenclass.py +0 -1932
  671. edumfa-2.7.2/edumfa/lib/tokengroup.py +0 -81
  672. edumfa-2.7.2/edumfa/lib/tokens/HMAC.py +0 -163
  673. edumfa-2.7.2/edumfa/lib/tokens/applicationspecificpasswordtoken.py +0 -152
  674. edumfa-2.7.2/edumfa/lib/tokens/certificatetoken.py +0 -642
  675. edumfa-2.7.2/edumfa/lib/tokens/daplugtoken.py +0 -263
  676. edumfa-2.7.2/edumfa/lib/tokens/daypasswordtoken.py +0 -439
  677. edumfa-2.7.2/edumfa/lib/tokens/emailtoken.py +0 -558
  678. edumfa-2.7.2/edumfa/lib/tokens/foureyestoken.py +0 -507
  679. edumfa-2.7.2/edumfa/lib/tokens/hotptoken.py +0 -849
  680. edumfa-2.7.2/edumfa/lib/tokens/indexedsecrettoken.py +0 -379
  681. edumfa-2.7.2/edumfa/lib/tokens/legacypushtoken.py +0 -116
  682. edumfa-2.7.2/edumfa/lib/tokens/mOTP.py +0 -158
  683. edumfa-2.7.2/edumfa/lib/tokens/motptoken.py +0 -230
  684. edumfa-2.7.2/edumfa/lib/tokens/ocra.py +0 -343
  685. edumfa-2.7.2/edumfa/lib/tokens/ocratoken.py +0 -298
  686. edumfa-2.7.2/edumfa/lib/tokens/papertoken.py +0 -148
  687. edumfa-2.7.2/edumfa/lib/tokens/passwordtoken.py +0 -203
  688. edumfa-2.7.2/edumfa/lib/tokens/pushtoken.py +0 -1184
  689. edumfa-2.7.2/edumfa/lib/tokens/questionnairetoken.py +0 -360
  690. edumfa-2.7.2/edumfa/lib/tokens/radiustoken.py +0 -558
  691. edumfa-2.7.2/edumfa/lib/tokens/registrationtoken.py +0 -179
  692. edumfa-2.7.2/edumfa/lib/tokens/remotetoken.py +0 -331
  693. edumfa-2.7.2/edumfa/lib/tokens/smstoken.py +0 -653
  694. edumfa-2.7.2/edumfa/lib/tokens/spasstoken.py +0 -159
  695. edumfa-2.7.2/edumfa/lib/tokens/sshkeytoken.py +0 -171
  696. edumfa-2.7.2/edumfa/lib/tokens/tantoken.py +0 -231
  697. edumfa-2.7.2/edumfa/lib/tokens/tiqrtoken.py +0 -488
  698. edumfa-2.7.2/edumfa/lib/tokens/totptoken.py +0 -703
  699. edumfa-2.7.2/edumfa/lib/tokens/u2f.py +0 -280
  700. edumfa-2.7.2/edumfa/lib/tokens/u2ftoken.py +0 -594
  701. edumfa-2.7.2/edumfa/lib/tokens/vasco.py +0 -187
  702. edumfa-2.7.2/edumfa/lib/tokens/vascotoken.py +0 -188
  703. edumfa-2.7.2/edumfa/lib/tokens/webauthn.py +0 -2191
  704. edumfa-2.7.2/edumfa/lib/tokens/webauthntoken.py +0 -1512
  705. edumfa-2.7.2/edumfa/lib/tokens/yubicotoken.py +0 -218
  706. edumfa-2.7.2/edumfa/lib/tokens/yubikeytoken.py +0 -476
  707. edumfa-2.7.2/edumfa/lib/user.py +0 -805
  708. edumfa-2.7.2/edumfa/lib/usercache.py +0 -248
  709. edumfa-2.7.2/edumfa/lib/utils/__init__.py +0 -1559
  710. edumfa-2.7.2/edumfa/lib/utils/compare.py +0 -223
  711. edumfa-2.7.2/edumfa/lib/utils/export.py +0 -111
  712. edumfa-2.7.2/edumfa/messages.pot +0 -2811
  713. edumfa-2.7.2/edumfa/models.py +0 -3274
  714. edumfa-2.7.2/edumfa/static/app.js +0 -184
  715. edumfa-2.7.2/edumfa/static/components/config/controllers/configControllers.js +0 -1285
  716. edumfa-2.7.2/edumfa/static/components/config/controllers/eduMfaServerController.js +0 -97
  717. edumfa-2.7.2/edumfa/static/components/config/views/config.html +0 -86
  718. edumfa-2.7.2/edumfa/static/components/config/views/config.smtp.edit.html +0 -154
  719. edumfa-2.7.2/edumfa/static/components/config/views/config.token.totp.html +0 -45
  720. edumfa-2.7.2/edumfa/static/components/dashboard/controllers/dashboardControllers.js +0 -200
  721. edumfa-2.7.2/edumfa/static/components/login/controllers/loginControllers.js +0 -679
  722. edumfa-2.7.2/edumfa/static/components/login/views/enter-response.html +0 -34
  723. edumfa-2.7.2/edumfa/static/components/token/controllers/tokenControllers.js +0 -742
  724. edumfa-2.7.2/edumfa/static/components/token/controllers/tokenDetailController.js +0 -458
  725. edumfa-2.7.2/edumfa/static/components/token/factories/token.js +0 -261
  726. edumfa-2.7.2/edumfa/static/components/token/views/token.details.html +0 -727
  727. edumfa-2.7.2/edumfa/static/components/token/views/token.enroll.remote.html +0 -54
  728. edumfa-2.7.2/edumfa/static/components/token/views/token.enroll.totp.html +0 -78
  729. edumfa-2.7.2/edumfa/static/components/token/views/token.enroll.yubikey.html +0 -47
  730. edumfa-2.7.2/edumfa/static/components/token/views/token.enrolled.registration.html +0 -18
  731. edumfa-2.7.2/edumfa/static/components/translation/translations.js +0 -22
  732. edumfa-2.7.2/edumfa/static/contrib/css/isteven-multi-select.css +0 -299
  733. edumfa-2.7.2/edumfa/static/contrib/js/jquery.js +0 -10881
  734. edumfa-2.7.2/edumfa/static/contrib/js/ngmodules/isteven-multi-select.js +0 -1111
  735. edumfa-2.7.2/edumfa/static/package-lock.json +0 -185
  736. edumfa-2.7.2/edumfa/static/package.json +0 -30
  737. edumfa-2.7.2/edumfa/static/templates/baseline.html +0 -17
  738. edumfa-2.7.2/edumfa/static/templates/documentation.rst +0 -129
  739. edumfa-2.7.2/edumfa/translations/cs/LC_MESSAGES/messages.mo +0 -0
  740. edumfa-2.7.2/edumfa/translations/cs/LC_MESSAGES/messages.po +0 -2925
  741. edumfa-2.7.2/edumfa/translations/de/LC_MESSAGES/messages.mo +0 -0
  742. edumfa-2.7.2/edumfa/translations/de/LC_MESSAGES/messages.po +0 -3668
  743. edumfa-2.7.2/edumfa/translations/es/LC_MESSAGES/messages.mo +0 -0
  744. edumfa-2.7.2/edumfa/translations/es/LC_MESSAGES/messages.po +0 -3530
  745. edumfa-2.7.2/edumfa/translations/fr/LC_MESSAGES/messages.mo +0 -0
  746. edumfa-2.7.2/edumfa/translations/fr/LC_MESSAGES/messages.po +0 -3337
  747. edumfa-2.7.2/edumfa/translations/it/LC_MESSAGES/messages.mo +0 -0
  748. edumfa-2.7.2/edumfa/translations/it/LC_MESSAGES/messages.po +0 -3058
  749. edumfa-2.7.2/edumfa/translations/nl/LC_MESSAGES/messages.mo +0 -0
  750. edumfa-2.7.2/edumfa/translations/nl/LC_MESSAGES/messages.po +0 -3568
  751. edumfa-2.7.2/edumfa/translations/pl/LC_MESSAGES/messages.mo +0 -0
  752. edumfa-2.7.2/edumfa/translations/pl/LC_MESSAGES/messages.po +0 -2901
  753. edumfa-2.7.2/edumfa/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
  754. edumfa-2.7.2/edumfa/translations/pt_BR/LC_MESSAGES/messages.po +0 -3421
  755. edumfa-2.7.2/edumfa/translations/ro/LC_MESSAGES/messages.mo +0 -0
  756. edumfa-2.7.2/edumfa/translations/ro/LC_MESSAGES/messages.po +0 -2995
  757. edumfa-2.7.2/edumfa/translations/ru/LC_MESSAGES/messages.mo +0 -0
  758. edumfa-2.7.2/edumfa/translations/ru/LC_MESSAGES/messages.po +0 -3014
  759. edumfa-2.7.2/edumfa/translations/si/LC_MESSAGES/messages.mo +0 -0
  760. edumfa-2.7.2/edumfa/translations/si/LC_MESSAGES/messages.po +0 -2901
  761. edumfa-2.7.2/edumfa/translations/tr/LC_MESSAGES/messages.mo +0 -0
  762. edumfa-2.7.2/edumfa/translations/tr/LC_MESSAGES/messages.po +0 -3401
  763. edumfa-2.7.2/edumfa/translations/zh_Hans/LC_MESSAGES/messages.mo +0 -0
  764. edumfa-2.7.2/edumfa/translations/zh_Hans/LC_MESSAGES/messages.po +0 -2967
  765. edumfa-2.7.2/edumfa/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
  766. edumfa-2.7.2/edumfa/translations/zh_Hant/LC_MESSAGES/messages.po +0 -2972
  767. edumfa-2.7.2/edumfa/webui/__init__.py +0 -1
  768. edumfa-2.7.2/edumfa/webui/certificate.py +0 -114
  769. edumfa-2.7.2/edumfa/webui/login.py +0 -201
  770. edumfa-2.7.2/edumfa.egg-info/PKG-INFO +0 -921
  771. edumfa-2.7.2/edumfa.egg-info/SOURCES.txt +0 -858
  772. edumfa-2.7.2/edumfa.egg-info/requires.txt +0 -108
  773. edumfa-2.7.2/migrations/env.py +0 -108
  774. edumfa-2.7.2/migrations/versions/006d4747f858_.py +0 -30
  775. edumfa-2.7.2/migrations/versions/00762b3f7a60_.py +0 -68
  776. edumfa-2.7.2/migrations/versions/0c7123345224_.py +0 -38
  777. edumfa-2.7.2/migrations/versions/0d011e94a8e8_.py +0 -164
  778. edumfa-2.7.2/migrations/versions/140ba0ca4f07_.py +0 -22
  779. edumfa-2.7.2/migrations/versions/145ce80decd_.py +0 -30
  780. edumfa-2.7.2/migrations/versions/14a1bcb10018_.py +0 -28
  781. edumfa-2.7.2/migrations/versions/19f727d285e2_.py +0 -34
  782. edumfa-2.7.2/migrations/versions/1a0710df148b_.py +0 -26
  783. edumfa-2.7.2/migrations/versions/1a69e5e5e2ac_.py +0 -48
  784. edumfa-2.7.2/migrations/versions/1edda52b619f_.py +0 -32
  785. edumfa-2.7.2/migrations/versions/204d8d4f351e_.py +0 -27
  786. edumfa-2.7.2/migrations/versions/205bda834127_.py +0 -44
  787. edumfa-2.7.2/migrations/versions/20969b4cbf06_.py +0 -46
  788. edumfa-2.7.2/migrations/versions/2118e566df16_.py +0 -26
  789. edumfa-2.7.2/migrations/versions/2181294eed0b_.py +0 -32
  790. edumfa-2.7.2/migrations/versions/22558d9f3178_.py +0 -26
  791. edumfa-2.7.2/migrations/versions/239995464c48_.py +0 -34
  792. edumfa-2.7.2/migrations/versions/2551ee982544_.py +0 -37
  793. edumfa-2.7.2/migrations/versions/2ac117d0a6f5_.py +0 -44
  794. edumfa-2.7.2/migrations/versions/2c9430cfc66b_.py +0 -60
  795. edumfa-2.7.2/migrations/versions/307a4fbe8a05_.py +0 -36
  796. edumfa-2.7.2/migrations/versions/3236a1abf1c6_.py +0 -28
  797. edumfa-2.7.2/migrations/versions/3429d523e51f_.py +0 -41
  798. edumfa-2.7.2/migrations/versions/36428afb2457_.py +0 -36
  799. edumfa-2.7.2/migrations/versions/37e6b49fc686_.py +0 -61
  800. edumfa-2.7.2/migrations/versions/3ae3c668f444_.py +0 -44
  801. edumfa-2.7.2/migrations/versions/3ba618f6b820_.py +0 -45
  802. edumfa-2.7.2/migrations/versions/3c6e9dd7fbac_.py +0 -48
  803. edumfa-2.7.2/migrations/versions/3d7f8b29cbb1_.py +0 -100
  804. edumfa-2.7.2/migrations/versions/3f7e8583ea2_.py +0 -38
  805. edumfa-2.7.2/migrations/versions/4023571658f8_.py +0 -48
  806. edumfa-2.7.2/migrations/versions/414079706620_.py +0 -41
  807. edumfa-2.7.2/migrations/versions/4238eac8ccab_.py +0 -83
  808. edumfa-2.7.2/migrations/versions/449903fb6e35_.py +0 -42
  809. edumfa-2.7.2/migrations/versions/48ee74b8a7c8_.py +0 -193
  810. edumfa-2.7.2/migrations/versions/49a04e560d96_.py +0 -34
  811. edumfa-2.7.2/migrations/versions/4a0aec37e7cf_.py +0 -49
  812. edumfa-2.7.2/migrations/versions/4d9178fa8336_.py +0 -34
  813. edumfa-2.7.2/migrations/versions/4f32a4e1bf33_.py +0 -520
  814. edumfa-2.7.2/migrations/versions/50adc980d625_.py +0 -53
  815. edumfa-2.7.2/migrations/versions/5402fd96fbca_.py +0 -56
  816. edumfa-2.7.2/migrations/versions/58e4f7ebb705_.py +0 -26
  817. edumfa-2.7.2/migrations/versions/59ef3e03bc62_.py +0 -29
  818. edumfa-2.7.2/migrations/versions/5cb310101a1f_.py +0 -77
  819. edumfa-2.7.2/migrations/versions/631ec59e1ca6_.py +0 -27
  820. edumfa-2.7.2/migrations/versions/7d82d8b680a9_.py +0 -29
  821. edumfa-2.7.2/migrations/versions/849170064430_.py +0 -26
  822. edumfa-2.7.2/migrations/versions/86f40f535d7c_.py +0 -34
  823. edumfa-2.7.2/migrations/versions/888b56ed5dcb_.py +0 -40
  824. edumfa-2.7.2/migrations/versions/89e57ed16379_.py +0 -49
  825. edumfa-2.7.2/migrations/versions/8d40dbcfda25_.py +0 -35
  826. edumfa-2.7.2/migrations/versions/9155f0d3d028_.py +0 -100
  827. edumfa-2.7.2/migrations/versions/a28f2733897b_.py +0 -48
  828. edumfa-2.7.2/migrations/versions/a63df077051a_.py +0 -27
  829. edumfa-2.7.2/migrations/versions/a7e91b18a460_.py +0 -69
  830. edumfa-2.7.2/migrations/versions/b9131d0686eb_.py +0 -92
  831. edumfa-2.7.2/migrations/versions/cb6d7b7bae63_.py +0 -29
  832. edumfa-2.7.2/migrations/versions/d2ae8e54b628_.py +0 -69
  833. edumfa-2.7.2/migrations/versions/d3c0f0403a84_.py +0 -22
  834. edumfa-2.7.2/migrations/versions/d415d490eb05_.py +0 -33
  835. edumfa-2.7.2/migrations/versions/d5870fd2f2a4_.py +0 -22
  836. edumfa-2.7.2/migrations/versions/d6b40a745e5_.py +0 -33
  837. edumfa-2.7.2/migrations/versions/d756b34061ff_.py +0 -97
  838. edumfa-2.7.2/migrations/versions/dceb6cd3c41e_.py +0 -55
  839. edumfa-2.7.2/migrations/versions/e360c56bcf8c_.py +0 -88
  840. edumfa-2.7.2/migrations/versions/e5cbeb7c177_.py +0 -34
  841. edumfa-2.7.2/migrations/versions/ef29ba43e290_.py +0 -40
  842. edumfa-2.7.2/migrations/versions/fa07bd604a75.py +0 -67
  843. edumfa-2.7.2/migrations/versions/fabcf24d9304_.py +0 -36
  844. edumfa-2.7.2/migrations/versions/ff26585932ec_.py +0 -45
  845. edumfa-2.7.2/pyproject.toml +0 -89
  846. edumfa-2.7.2/requirements.txt +0 -167
  847. edumfa-2.7.2/setup.py +0 -64
  848. edumfa-2.7.2/tests/base.py +0 -273
  849. edumfa-2.7.2/tests/conftest.py +0 -6
  850. edumfa-2.7.2/tests/ldap3mock.py +0 -783
  851. edumfa-2.7.2/tests/mscamock.py +0 -81
  852. edumfa-2.7.2/tests/pkcs11mock.py +0 -196
  853. edumfa-2.7.2/tests/queuemock.py +0 -74
  854. edumfa-2.7.2/tests/radiusmock.py +0 -150
  855. edumfa-2.7.2/tests/redismock.py +0 -120
  856. edumfa-2.7.2/tests/smppmock.py +0 -172
  857. edumfa-2.7.2/tests/smtpmock.py +0 -248
  858. edumfa-2.7.2/tests/test_api_2stepinit.py +0 -669
  859. edumfa-2.7.2/tests/test_api_applications.py +0 -27
  860. edumfa-2.7.2/tests/test_api_audit.py +0 -388
  861. edumfa-2.7.2/tests/test_api_auth.py +0 -905
  862. edumfa-2.7.2/tests/test_api_caconnector.py +0 -181
  863. edumfa-2.7.2/tests/test_api_clienttype.py +0 -43
  864. edumfa-2.7.2/tests/test_api_edumfaserver.py +0 -102
  865. edumfa-2.7.2/tests/test_api_events.py +0 -722
  866. edumfa-2.7.2/tests/test_api_lib_policy.py +0 -4659
  867. edumfa-2.7.2/tests/test_api_lib_utils.py +0 -373
  868. edumfa-2.7.2/tests/test_api_machineresolver.py +0 -148
  869. edumfa-2.7.2/tests/test_api_machines.py +0 -768
  870. edumfa-2.7.2/tests/test_api_machines_serviceid.py +0 -313
  871. edumfa-2.7.2/tests/test_api_monitoring.py +0 -122
  872. edumfa-2.7.2/tests/test_api_offline_no_token.py +0 -108
  873. edumfa-2.7.2/tests/test_api_periodictask.py +0 -298
  874. edumfa-2.7.2/tests/test_api_policy.py +0 -651
  875. edumfa-2.7.2/tests/test_api_push_validate.py +0 -993
  876. edumfa-2.7.2/tests/test_api_radiusserver.py +0 -137
  877. edumfa-2.7.2/tests/test_api_register.py +0 -177
  878. edumfa-2.7.2/tests/test_api_roles.py +0 -1505
  879. edumfa-2.7.2/tests/test_api_serviceids.py +0 -97
  880. edumfa-2.7.2/tests/test_api_smsgateway.py +0 -289
  881. edumfa-2.7.2/tests/test_api_smtpserver.py +0 -92
  882. edumfa-2.7.2/tests/test_api_system.py +0 -1188
  883. edumfa-2.7.2/tests/test_api_token.py +0 -3724
  884. edumfa-2.7.2/tests/test_api_tokengroup.py +0 -97
  885. edumfa-2.7.2/tests/test_api_ttype.py +0 -730
  886. edumfa-2.7.2/tests/test_api_u2f.py +0 -480
  887. edumfa-2.7.2/tests/test_api_users.py +0 -631
  888. edumfa-2.7.2/tests/test_api_validate.py +0 -5985
  889. edumfa-2.7.2/tests/test_app.py +0 -170
  890. edumfa-2.7.2/tests/test_db_model.py +0 -1124
  891. edumfa-2.7.2/tests/test_lib_applications.py +0 -205
  892. edumfa-2.7.2/tests/test_lib_apps.py +0 -52
  893. edumfa-2.7.2/tests/test_lib_audit.py +0 -514
  894. edumfa-2.7.2/tests/test_lib_auth.py +0 -41
  895. edumfa-2.7.2/tests/test_lib_authcache.py +0 -183
  896. edumfa-2.7.2/tests/test_lib_caconnector.py +0 -640
  897. edumfa-2.7.2/tests/test_lib_challenges.py +0 -73
  898. edumfa-2.7.2/tests/test_lib_clientapplication.py +0 -127
  899. edumfa-2.7.2/tests/test_lib_config.py +0 -272
  900. edumfa-2.7.2/tests/test_lib_counter.py +0 -155
  901. edumfa-2.7.2/tests/test_lib_crypto.py +0 -781
  902. edumfa-2.7.2/tests/test_lib_edumfaserver.py +0 -246
  903. edumfa-2.7.2/tests/test_lib_eventhandler_logging.py +0 -161
  904. edumfa-2.7.2/tests/test_lib_eventhandler_usernotification.py +0 -1590
  905. edumfa-2.7.2/tests/test_lib_events.py +0 -2907
  906. edumfa-2.7.2/tests/test_lib_framework.py +0 -68
  907. edumfa-2.7.2/tests/test_lib_importotp.py +0 -750
  908. edumfa-2.7.2/tests/test_lib_lifecycle.py +0 -71
  909. edumfa-2.7.2/tests/test_lib_machine_resolver_ldap.py +0 -172
  910. edumfa-2.7.2/tests/test_lib_machines.py +0 -228
  911. edumfa-2.7.2/tests/test_lib_machinetokens.py +0 -210
  912. edumfa-2.7.2/tests/test_lib_monitoringstats.py +0 -127
  913. edumfa-2.7.2/tests/test_lib_periodictask.py +0 -479
  914. edumfa-2.7.2/tests/test_lib_policy.py +0 -1711
  915. edumfa-2.7.2/tests/test_lib_policydecorator.py +0 -933
  916. edumfa-2.7.2/tests/test_lib_pooling.py +0 -72
  917. edumfa-2.7.2/tests/test_lib_queue.py +0 -104
  918. edumfa-2.7.2/tests/test_lib_radiusserver.py +0 -148
  919. edumfa-2.7.2/tests/test_lib_realm.py +0 -102
  920. edumfa-2.7.2/tests/test_lib_recovery.py +0 -127
  921. edumfa-2.7.2/tests/test_lib_resolver.py +0 -2866
  922. edumfa-2.7.2/tests/test_lib_serviceid.py +0 -67
  923. edumfa-2.7.2/tests/test_lib_smsprovider.py +0 -987
  924. edumfa-2.7.2/tests/test_lib_smtpserver.py +0 -249
  925. edumfa-2.7.2/tests/test_lib_sqlutils.py +0 -90
  926. edumfa-2.7.2/tests/test_lib_subscriptions.py +0 -30
  927. edumfa-2.7.2/tests/test_lib_task_eventcounter.py +0 -59
  928. edumfa-2.7.2/tests/test_lib_task_simplestats.py +0 -92
  929. edumfa-2.7.2/tests/test_lib_tasks.py +0 -26
  930. edumfa-2.7.2/tests/test_lib_token.py +0 -2175
  931. edumfa-2.7.2/tests/test_lib_tokenclass.py +0 -933
  932. edumfa-2.7.2/tests/test_lib_tokengroup.py +0 -78
  933. edumfa-2.7.2/tests/test_lib_tokens_certificate.py +0 -702
  934. edumfa-2.7.2/tests/test_lib_tokens_daplug.py +0 -615
  935. edumfa-2.7.2/tests/test_lib_tokens_daypassword.py +0 -666
  936. edumfa-2.7.2/tests/test_lib_tokens_email.py +0 -512
  937. edumfa-2.7.2/tests/test_lib_tokens_foureyes.py +0 -90
  938. edumfa-2.7.2/tests/test_lib_tokens_hotp.py +0 -837
  939. edumfa-2.7.2/tests/test_lib_tokens_indexedsecret.py +0 -140
  940. edumfa-2.7.2/tests/test_lib_tokens_motp.py +0 -184
  941. edumfa-2.7.2/tests/test_lib_tokens_paper.py +0 -70
  942. edumfa-2.7.2/tests/test_lib_tokens_passwordtoken.py +0 -55
  943. edumfa-2.7.2/tests/test_lib_tokens_push.py +0 -2684
  944. edumfa-2.7.2/tests/test_lib_tokens_questionnaire.py +0 -141
  945. edumfa-2.7.2/tests/test_lib_tokens_radius.py +0 -369
  946. edumfa-2.7.2/tests/test_lib_tokens_registration.py +0 -82
  947. edumfa-2.7.2/tests/test_lib_tokens_remote.py +0 -241
  948. edumfa-2.7.2/tests/test_lib_tokens_sms.py +0 -514
  949. edumfa-2.7.2/tests/test_lib_tokens_spass.py +0 -53
  950. edumfa-2.7.2/tests/test_lib_tokens_ssh.py +0 -133
  951. edumfa-2.7.2/tests/test_lib_tokens_tan.py +0 -131
  952. edumfa-2.7.2/tests/test_lib_tokens_tiqr.py +0 -742
  953. edumfa-2.7.2/tests/test_lib_tokens_totp.py +0 -812
  954. edumfa-2.7.2/tests/test_lib_tokens_u2f.py +0 -368
  955. edumfa-2.7.2/tests/test_lib_tokens_vasco.py +0 -283
  956. edumfa-2.7.2/tests/test_lib_tokens_webauthn.py +0 -961
  957. edumfa-2.7.2/tests/test_lib_tokens_yubico.py +0 -114
  958. edumfa-2.7.2/tests/test_lib_tokens_yubikey.py +0 -253
  959. edumfa-2.7.2/tests/test_lib_user.py +0 -551
  960. edumfa-2.7.2/tests/test_lib_usercache.py +0 -605
  961. edumfa-2.7.2/tests/test_lib_utils.py +0 -1030
  962. edumfa-2.7.2/tests/test_lib_utils_compare.py +0 -106
  963. edumfa-2.7.2/tests/test_mock_ldap3.py +0 -944
  964. edumfa-2.7.2/tests/test_resolver_realm.py +0 -79
  965. edumfa-2.7.2/tests/test_scripts.py +0 -260
  966. edumfa-2.7.2/tests/test_ui_certificate.py +0 -126
  967. edumfa-2.7.2/tests/test_ui_login.py +0 -148
  968. edumfa-2.7.2/tests/testdata/fancytoken.py +0 -21
  969. edumfa-2.7.2/tools/creategoogleauthenticator-file +0 -40
  970. edumfa-2.7.2/tools/edumfa-convert-base32.py +0 -55
  971. edumfa-2.7.2/tools/edumfa-create-ad-users +0 -100
  972. edumfa-2.7.2/tools/edumfa-create-certificate +0 -84
  973. edumfa-2.7.2/tools/edumfa-create-pwidresolver-user +0 -89
  974. edumfa-2.7.2/tools/edumfa-create-sqlidresolver-user +0 -77
  975. edumfa-2.7.2/tools/edumfa-create-sqlidresolver-user.1 +0 -38
  976. edumfa-2.7.2/tools/edumfa-cron +0 -190
  977. edumfa-2.7.2/tools/edumfa-expired-users +0 -169
  978. edumfa-2.7.2/tools/edumfa-export-edumfa-counter.py +0 -55
  979. edumfa-2.7.2/tools/edumfa-export-linotp-counter.py +0 -112
  980. edumfa-2.7.2/tools/edumfa-fix-access-rights +0 -89
  981. edumfa-2.7.2/tools/edumfa-get-serial +0 -100
  982. edumfa-2.7.2/tools/edumfa-get-unused-tokens +0 -145
  983. edumfa-2.7.2/tools/edumfa-migrate-linotp.py +0 -590
  984. edumfa-2.7.2/tools/edumfa-pip-update +0 -88
  985. edumfa-2.7.2/tools/edumfa-queue-huey +0 -154
  986. edumfa-2.7.2/tools/edumfa-schema-upgrade +0 -22
  987. edumfa-2.7.2/tools/edumfa-standalone +0 -323
  988. edumfa-2.7.2/tools/edumfa-sync-owncloud.py +0 -218
  989. edumfa-2.7.2/tools/edumfa-token-janitor +0 -690
  990. edumfa-2.7.2/tools/edumfa-update-counter.py +0 -107
  991. edumfa-2.7.2/tools/edumfa-update-linotp-counter.py +0 -139
  992. edumfa-2.7.2/tools/edumfa-user-action +0 -141
  993. edumfa-2.7.2/tools/edumfa-usercache-cleanup +0 -101
  994. edumfa-2.7.2/tools/getgooglecodes +0 -48
  995. edumfa-2.7.2/tools/ssha.py +0 -32
  996. {edumfa-2.7.2 → edumfa-2.9.0}/AUTHORS.md +0 -0
  997. {edumfa-2.7.2 → edumfa-2.9.0}/LICENSE +0 -0
  998. {edumfa-2.7.2 → edumfa-2.9.0}/MANIFEST.in +0 -0
  999. {edumfa-2.7.2 → edumfa-2.9.0}/README.rst +0 -0
  1000. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/README.md +0 -0
  1001. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/apache/edumfaapp.wsgi +0 -0
  1002. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/apache/sites-available/edumfa-venv.conf +0 -0
  1003. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/apache/sites-available/edumfa.conf +0 -0
  1004. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/config/freeradius2/edumfa +0 -0
  1005. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/config/freeradius2/mods-perl-edumfa +0 -0
  1006. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/config/freeradius3/edumfa +0 -0
  1007. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/config/freeradius3/mods-perl-edumfa +0 -0
  1008. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/crontab/edumfa +0 -0
  1009. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/edumfa/dictionary +0 -0
  1010. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/edumfa_radius.pm +0 -0
  1011. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/gunicorn/edumfaapp.py +0 -0
  1012. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/nginx/sites-available/edumfa +0 -0
  1013. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/rlm_perl.ini +0 -0
  1014. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu/clean +0 -0
  1015. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu/compat +0 -0
  1016. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu/copyright +0 -0
  1017. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu/source/format +0 -0
  1018. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu/source/options +0 -0
  1019. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/changelog +0 -0
  1020. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/compat +0 -0
  1021. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/control +0 -0
  1022. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/copyright +0 -0
  1023. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/edumfa-radius.install +0 -0
  1024. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/edumfa-radius.postinst +0 -0
  1025. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/edumfa-radius.postrm +0 -0
  1026. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/rules +0 -0
  1027. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-radius/source/format +0 -0
  1028. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/clean +0 -0
  1029. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/compat +0 -0
  1030. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/edumfa-apache2.install +0 -0
  1031. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/edumfa-apache2.postrm +0 -0
  1032. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/edumfa-nginx.install +0 -0
  1033. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/edumfa-nginx.postrm +0 -0
  1034. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/source/format +0 -0
  1035. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/ubuntu-server/source/options +0 -0
  1036. {edumfa-2.7.2 → edumfa-2.9.0}/deploy/uwsgi/apps-available/edumfa.xml +0 -0
  1037. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/__init__.py +0 -0
  1038. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/api/lib/__init__.py +0 -0
  1039. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/babel.cfg +0 -0
  1040. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/commands/__init__.py +0 -0
  1041. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/commands/manage/__init__.py +0 -0
  1042. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/auditmodules/__init__.py +0 -0
  1043. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/cache/__init__.py +0 -0
  1044. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/caconnectors/__init__.py +0 -0
  1045. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/caconnectors/baseca.py +0 -0
  1046. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/eventhandler/__init__.py +0 -0
  1047. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/monitoringmodules/__init__.py +0 -0
  1048. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/pinhandling/__init__.py +0 -0
  1049. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/queues/__init__.py +0 -0
  1050. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/security/__init__.py +0 -0
  1051. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/security/password/__init__.py +0 -0
  1052. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/task/__init__.py +0 -0
  1053. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/task/base.py +0 -0
  1054. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/lib/tokens/__init__.py +0 -0
  1055. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/README.md +0 -0
  1056. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/audit/controllers/auditControllers.js +0 -0
  1057. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/audit/factories/audit.js +0 -0
  1058. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/audit/states/states.js +0 -0
  1059. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/audit/views/audit.html +0 -0
  1060. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/audit/views/audit.log.html +0 -0
  1061. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/components/controllers/componentControllers.js +0 -0
  1062. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/components/factories/component.js +0 -0
  1063. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/components/states/states.js +0 -0
  1064. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/components/views/component.clienttype.html +0 -0
  1065. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/components/views/component.html +0 -0
  1066. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/eventController.js +0 -0
  1067. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/ldapMachineResolverController.js +0 -0
  1068. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/periodicTaskController.js +0 -0
  1069. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/radiusServerController.js +0 -0
  1070. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/serviceidController.js +0 -0
  1071. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/smsgatewayController.js +0 -0
  1072. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/smtpServerController.js +0 -0
  1073. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/controllers/tokengroupController.js +0 -0
  1074. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/factories/config.js +0 -0
  1075. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/states/states.js +0 -0
  1076. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.caconnectors.list.html +0 -0
  1077. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.caconnectors.local.html +0 -0
  1078. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.caconnectors.microsoft.html +0 -0
  1079. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.edumfaserver.edit.html +0 -0
  1080. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.edumfaserver.list.html +0 -0
  1081. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.events.details.html +0 -0
  1082. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.events.html +0 -0
  1083. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.events.list.html +0 -0
  1084. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.machineresolvers.html +0 -0
  1085. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.mresolvers.hosts.html +0 -0
  1086. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.mresolvers.ldap.html +0 -0
  1087. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.mresolvers.list.html +0 -0
  1088. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.periodictasks.details.html +0 -0
  1089. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.periodictasks.html +0 -0
  1090. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.periodictasks.list.html +0 -0
  1091. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.policies.details.html +0 -0
  1092. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.policies.html +0 -0
  1093. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.policies.list.html +0 -0
  1094. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.radius.edit.html +0 -0
  1095. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.radius.list.html +0 -0
  1096. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.realms.html +0 -0
  1097. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.realms.list.html +0 -0
  1098. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.html +0 -0
  1099. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.http.html +0 -0
  1100. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.ldap.html +0 -0
  1101. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.list.html +0 -0
  1102. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.passwd.html +0 -0
  1103. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.scim.html +0 -0
  1104. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.resolvers.sql.html +0 -0
  1105. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.serviceid.edit.html +0 -0
  1106. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.serviceid.list.html +0 -0
  1107. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.smsgateway.edit.html +0 -0
  1108. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.smsgateway.list.html +0 -0
  1109. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.smtp.list.html +0 -0
  1110. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.system.doc.html +0 -0
  1111. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.system.edit.html +0 -0
  1112. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.system.html +0 -0
  1113. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.daypassword.html +0 -0
  1114. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.email.html +0 -0
  1115. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.hotp.html +0 -0
  1116. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.question.html +0 -0
  1117. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.radius.html +0 -0
  1118. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.remote.html +0 -0
  1119. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.sms.html +0 -0
  1120. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.tiqr.html +0 -0
  1121. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.u2f.html +0 -0
  1122. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.webauthn.html +0 -0
  1123. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.yubico.html +0 -0
  1124. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.token.yubikey.html +0 -0
  1125. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.tokengroup.edit.html +0 -0
  1126. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.tokengroup.list.html +0 -0
  1127. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/config.tokens.html +0 -0
  1128. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/config/views/dialog.confirm_delete.html +0 -0
  1129. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dashboard/states/states.js +0 -0
  1130. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dashboard/views/dashboard.html +0 -0
  1131. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dialogs/views/dialog.about.html +0 -0
  1132. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dialogs/views/dialog.autocreate_realm.html +0 -0
  1133. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dialogs/views/dialog.lock.html +0 -0
  1134. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dialogs/views/dialog.no.token.html +0 -0
  1135. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/dialogs/views/dialog.welcome.html +0 -0
  1136. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/controllers/directives.js +0 -0
  1137. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.assigntoken.html +0 -0
  1138. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.assignuser.html +0 -0
  1139. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.attachmachine.html +0 -0
  1140. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.attachtoken.html +0 -0
  1141. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.csvdownload.html +0 -0
  1142. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.filter.table.html +0 -0
  1143. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.policyconditions.html +0 -0
  1144. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/directives/views/directive.tokendata.html +0 -0
  1145. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/filters/filters.js +0 -0
  1146. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/factories/auth.js +0 -0
  1147. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/factories/u2f.js +0 -0
  1148. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/factories/webauthn.js +0 -0
  1149. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/states/states.js +0 -0
  1150. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/views/login.html +0 -0
  1151. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/views/offline.html +0 -0
  1152. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/login/views/pinchange.html +0 -0
  1153. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/controllers/machineController.js +0 -0
  1154. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/controllers/machineDetailsController.js +0 -0
  1155. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/factories/machine.js +0 -0
  1156. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/states/states.js +0 -0
  1157. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/views/machine.details.html +0 -0
  1158. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/views/machine.html +0 -0
  1159. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/machine/views/machine.list.html +0 -0
  1160. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/recovery/controllers/recoveryControllers.js +0 -0
  1161. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/recovery/factories/recoveryFactory.js +0 -0
  1162. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/recovery/states/states.js +0 -0
  1163. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/recovery/views/recovery.html +0 -0
  1164. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/recovery/views/recovery.reset.html +0 -0
  1165. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/register/controllers/registerControllers.js +0 -0
  1166. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/register/factories/registerFactory.js +0 -0
  1167. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/register/states/states.js +0 -0
  1168. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/register/views/register.html +0 -0
  1169. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/controllers/tokenApplicationsController.js +0 -0
  1170. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/controllers/tokenChallengesController.js +0 -0
  1171. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/controllers/tokenGetSerialController.js +0 -0
  1172. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/controllers/tokenLostController.js +0 -0
  1173. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/factories/validate.js +0 -0
  1174. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/states/states.js +0 -0
  1175. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/dialog.ask_token_delete.html +0 -0
  1176. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.applications.html +0 -0
  1177. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.applications.offline.html +0 -0
  1178. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.applications.ssh.html +0 -0
  1179. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.assign.html +0 -0
  1180. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.challenges.html +0 -0
  1181. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.display.apps.html +0 -0
  1182. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.4eyes.html +0 -0
  1183. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.applspec.html +0 -0
  1184. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.certificate.html +0 -0
  1185. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.daypassword.html +0 -0
  1186. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.edupush.html +0 -0
  1187. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.email.html +0 -0
  1188. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.hotp.html +0 -0
  1189. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.html +0 -0
  1190. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.indexedsecret.html +0 -0
  1191. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.motp.html +0 -0
  1192. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.paper.html +0 -0
  1193. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.push.html +0 -0
  1194. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.question.html +0 -0
  1195. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.radius.html +0 -0
  1196. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.registration.html +0 -0
  1197. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.sms.html +0 -0
  1198. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.spass.html +0 -0
  1199. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.sshkey.html +0 -0
  1200. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.tan.html +0 -0
  1201. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.tiqr.html +0 -0
  1202. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.u2f.html +0 -0
  1203. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.vasco.html +0 -0
  1204. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.webauthn.html +0 -0
  1205. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enroll.yubico.html +0 -0
  1206. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.applspec.html +0 -0
  1207. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.certificate.html +0 -0
  1208. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.daypassword.html +0 -0
  1209. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.edupush.html +0 -0
  1210. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.hotp.html +0 -0
  1211. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.motp.html +0 -0
  1212. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.paper.html +0 -0
  1213. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.push.html +0 -0
  1214. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.tan.html +0 -0
  1215. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.tiqr.html +0 -0
  1216. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.totp.html +0 -0
  1217. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.u2f.html +0 -0
  1218. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.enrolled.webauthn.html +0 -0
  1219. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.getserial.html +0 -0
  1220. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.html +0 -0
  1221. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.import.html +0 -0
  1222. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.list.html +0 -0
  1223. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/token/views/token.lost.html +0 -0
  1224. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/controllers/userControllers.js +0 -0
  1225. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/factories/user.js +0 -0
  1226. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/states/states.js +0 -0
  1227. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/dialog.ask_user_delete.html +0 -0
  1228. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.add.dynamic.form.fields.html +0 -0
  1229. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.add.html +0 -0
  1230. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.details.html +0 -0
  1231. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.html +0 -0
  1232. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.list.html +0 -0
  1233. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/components/user/views/user.password.html +0 -0
  1234. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/angular-inform.css +0 -0
  1235. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/angular-inform.css.map +0 -0
  1236. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/bootstrap-theme.css +0 -0
  1237. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/bootstrap-theme.css.map +0 -0
  1238. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/bootstrap.css +0 -0
  1239. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/bootstrap.css.map +0 -0
  1240. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/css/hotkeys.css +0 -0
  1241. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.eot +0 -0
  1242. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.svg +0 -0
  1243. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.ttf +0 -0
  1244. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff +0 -0
  1245. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/fonts/glyphicons-halflings-regular.woff2 +0 -0
  1246. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/angular-inform.js +0 -0
  1247. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/angular-inform.js.map +0 -0
  1248. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/angular.js +0 -0
  1249. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/bootstrap.js +0 -0
  1250. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/hotkeys.js +0 -0
  1251. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/angular-gettext.js +0 -0
  1252. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/angular-idle.js +0 -0
  1253. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/angular-sanitize.js +0 -0
  1254. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js +0 -0
  1255. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/angular-ui-router.js.map +0 -0
  1256. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ngmodules/ng-file-upload.js +0 -0
  1257. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/u2f-api.js +0 -0
  1258. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/ui-bootstrap-tpls.js +0 -0
  1259. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/contrib/js/webauthn-client/edumfa-webauthn.js +0 -0
  1260. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/baseline.css +0 -0
  1261. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/content.css +0 -0
  1262. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/eduMFA-logo.png +0 -0
  1263. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/highlight.css +0 -0
  1264. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/menu.css +0 -0
  1265. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/papertoken.css +0 -0
  1266. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/signin.css +0 -0
  1267. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/css/table-ui.css +0 -0
  1268. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/customize/README.rst +0 -0
  1269. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/favicon.png +0 -0
  1270. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/img/FIDO-U2F-Security-Key-444x444.png +0 -0
  1271. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/img/plugup.jpg +0 -0
  1272. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/img/solokeys.png +0 -0
  1273. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/img/u2fzero.png +0 -0
  1274. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/providers/errorMessageProvider.js +0 -0
  1275. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/providers/versioningProvider.js +0 -0
  1276. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/cert_request_form.html +0 -0
  1277. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/deactivated.html +0 -0
  1278. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/footer.html +0 -0
  1279. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/header.html +0 -0
  1280. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/index.html +0 -0
  1281. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/menu.html +0 -0
  1282. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa/static/templates/token_enrolled.html +0 -0
  1283. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa.egg-info/dependency_links.txt +0 -0
  1284. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa.egg-info/entry_points.txt +0 -0
  1285. {edumfa-2.7.2 → edumfa-2.9.0}/edumfa.egg-info/top_level.txt +0 -0
  1286. {edumfa-2.7.2 → edumfa-2.9.0}/migrations/README +0 -0
  1287. {edumfa-2.7.2 → edumfa-2.9.0}/migrations/alembic.ini +0 -0
  1288. {edumfa-2.7.2 → edumfa-2.9.0}/migrations/script.py.mako +0 -0
  1289. {edumfa-2.7.2 → edumfa-2.9.0}/setup.cfg +0 -0
  1290. {edumfa-2.7.2 → edumfa-2.9.0}/tests/__init__.py +0 -0
  1291. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/FIDO-U2F-Security-Key-444x444.png +0 -0
  1292. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/NetKnights.pem +0 -0
  1293. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/__init__.py +0 -0
  1294. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/altstatic/templates/testui.html +0 -0
  1295. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/attestation/yubico.pem +0 -0
  1296. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/audit.sqlite +0 -0
  1297. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/cacert.pem +0 -0
  1298. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/cakey.pem +0 -0
  1299. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/index.txt +0 -0
  1300. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/index.txt.attr +0 -0
  1301. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/openssl.cnf +0 -0
  1302. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/serial +0 -0
  1303. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ca/templates.yaml +0 -0
  1304. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/dictionary +0 -0
  1305. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/does_not_exist +0 -0
  1306. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/emailtemplate.html +0 -0
  1307. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/empty.oath +0 -0
  1308. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/enckey +0 -0
  1309. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/enckey.enc +0 -0
  1310. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/event.conf +0 -0
  1311. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/firebase-test.json +0 -0
  1312. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/google-services.json +0 -0
  1313. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/gpg/public.pem +0 -0
  1314. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/gpg/pubring.gpg +0 -0
  1315. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/gpg/random_seed +0 -0
  1316. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/gpg/secring.gpg +0 -0
  1317. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/gpg/trustdb.gpg +0 -0
  1318. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/hosts +0 -0
  1319. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/import.oath +0 -0
  1320. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/import.oath.asc +0 -0
  1321. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/jwt_sign.key +0 -0
  1322. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/logging.cfg +0 -0
  1323. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/logging.yml +0 -0
  1324. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/logging_broken.yaml +0 -0
  1325. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/msca-connector/ca.pem +0 -0
  1326. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/msca-connector/privacyidea-encrypted.key +0 -0
  1327. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/msca-connector/privacyidea.key +0 -0
  1328. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/msca-connector/privacyidea.pem +0 -0
  1329. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/ocra.csv +0 -0
  1330. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/passwd +0 -0
  1331. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/passwd-duplicate-name +0 -0
  1332. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/passwords +0 -0
  1333. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/policy.cfg +0 -0
  1334. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/policy.conf +0 -0
  1335. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/policy_empty_file.cfg +0 -0
  1336. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/private.pem +0 -0
  1337. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/pskc-aes.xml +0 -0
  1338. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/pskc-password.xml +0 -0
  1339. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/public.pem +0 -0
  1340. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/pw-2nd-resolver +0 -0
  1341. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/scripts/fail.sh +0 -0
  1342. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/scripts/ls.sh +0 -0
  1343. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/scripts/success.sh +0 -0
  1344. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/test.sub +0 -0
  1345. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/test2.sub +0 -0
  1346. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/testuser-api.sqlite +0 -0
  1347. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/testuser.sqlite +0 -0
  1348. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/testusercache.sqlite +0 -0
  1349. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/trusted_attestation_roots/solokeys_device_attestation_ca.pem +0 -0
  1350. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/trusted_attestation_roots/yubico_u2f_device_attestation_ca.pem +0 -0
  1351. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/yubico-oath-long.csv +0 -0
  1352. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/yubico-oath.csv +0 -0
  1353. {edumfa-2.7.2 → edumfa-2.9.0}/tests/testdata/yubico.csv +0 -0
  1354. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-authorizedkeys +0 -0
  1355. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-convert-token +0 -0
  1356. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-convert-token.1 +0 -0
  1357. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-convert-xml-to-csv +0 -0
  1358. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-create-ad-users.1 +0 -0
  1359. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-create-certificate.1 +0 -0
  1360. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-create-pwidresolver-user.1 +0 -0
  1361. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-create-userdb +0 -0
  1362. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-create-userdb.1 +0 -0
  1363. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-diag +0 -0
  1364. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-fetchssh +0 -0
  1365. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-fetchssh.1 +0 -0
  1366. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-fix-access-rights.1 +0 -0
  1367. {edumfa-2.7.2 → edumfa-2.9.0}/tools/edumfa-pip-update.1 +0 -0
  1368. {edumfa-2.7.2 → edumfa-2.9.0}/tools/reset-edumfa +0 -0
edumfa-2.9.0/PKG-INFO ADDED
@@ -0,0 +1,304 @@
1
+ Metadata-Version: 2.4
2
+ Name: edumfa
3
+ Version: 2.9.0
4
+ Summary: eduMFA: identity, multifactor authentication (OTP), authorization, audit
5
+ Author-email: "edumfa.io" <edumfa@listserv.dfn.de>
6
+ License-Expression: AGPL-3.0-only
7
+ Project-URL: Homepage, https://edumfa.io/
8
+ Project-URL: Documentation, https://edumfa.readthedocs.io/
9
+ Project-URL: Repository, https://github.com/eduMFA/eduMFA.git
10
+ Project-URL: Issues, https://github.com/eduMFA/eduMFA/issues
11
+ Keywords: OTP,two factor authentication,management,security
12
+ Classifier: Framework :: Flask
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Topic :: Internet
15
+ Classifier: Topic :: Security
16
+ Classifier: Topic :: System :: Systems Administration :: Authentication/Directory
17
+ Classifier: Programming Language :: Python
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Requires-Python: <3.15,>=3.10
25
+ Description-Content-Type: text/x-rst
26
+ License-File: LICENSE
27
+ License-File: AUTHORS.md
28
+ Requires-Dist: alembic==1.18.0
29
+ Requires-Dist: argon2-cffi==25.1.0
30
+ Requires-Dist: argon2-cffi-bindings==25.1.0
31
+ Requires-Dist: async-timeout==5.0.1
32
+ Requires-Dist: babel==2.17.0
33
+ Requires-Dist: bcrypt==4.3.0
34
+ Requires-Dist: beautifulsoup4==4.14.3
35
+ Requires-Dist: blinker==1.9.0
36
+ Requires-Dist: cachetools==6.2.4
37
+ Requires-Dist: cbor2==5.8.0
38
+ Requires-Dist: certifi==2026.1.4
39
+ Requires-Dist: cffi==2.0.0
40
+ Requires-Dist: charset-normalizer==3.4.4
41
+ Requires-Dist: click==8.3.1
42
+ Requires-Dist: configobj==5.0.9
43
+ Requires-Dist: croniter==6.0.0
44
+ Requires-Dist: cryptography==46.0.3
45
+ Requires-Dist: defusedxml==0.7.1
46
+ Requires-Dist: flask==3.1.2
47
+ Requires-Dist: flask-babel==4.0.0
48
+ Requires-Dist: flask-migrate==4.1.0
49
+ Requires-Dist: flask-sqlalchemy==3.1.1
50
+ Requires-Dist: google-auth==2.47.0
51
+ Requires-Dist: grpcio==1.76.0
52
+ Requires-Dist: huey==2.6.0
53
+ Requires-Dist: idna==3.11
54
+ Requires-Dist: importlib-metadata==8.7.0
55
+ Requires-Dist: itsdangerous==2.2.0
56
+ Requires-Dist: jinja2==3.1.6
57
+ Requires-Dist: ldap3==2.9.1
58
+ Requires-Dist: lxml==6.0.2
59
+ Requires-Dist: mako==1.3.10
60
+ Requires-Dist: markupsafe==3.0.3
61
+ Requires-Dist: netaddr==1.3.0
62
+ Requires-Dist: passlib==1.7.4
63
+ Requires-Dist: pyasn1==0.6.1
64
+ Requires-Dist: pyasn1-modules==0.4.2
65
+ Requires-Dist: pycparser==2.23
66
+ Requires-Dist: pydash==8.0.5
67
+ Requires-Dist: pyjwt==2.10.1
68
+ Requires-Dist: pymysql==1.1.2
69
+ Requires-Dist: pyopenssl==25.3.0
70
+ Requires-Dist: pyrad==2.4
71
+ Requires-Dist: python-dateutil==2.9.0.post0
72
+ Requires-Dist: python-gnupg==0.5.6
73
+ Requires-Dist: pytz==2025.2
74
+ Requires-Dist: pyyaml==6.0.3
75
+ Requires-Dist: redis==7.1.0
76
+ Requires-Dist: requests==2.32.5
77
+ Requires-Dist: rsa==4.9.1
78
+ Requires-Dist: segno==1.6.6
79
+ Requires-Dist: six==1.17.0
80
+ Requires-Dist: smpplib==2.2.4
81
+ Requires-Dist: soupsieve==2.8.1
82
+ Requires-Dist: sqlalchemy==2.0.45
83
+ Requires-Dist: typing-extensions==4.15.0
84
+ Requires-Dist: urllib3==2.6.3
85
+ Requires-Dist: werkzeug==3.1.5
86
+ Requires-Dist: zipp==3.23.0
87
+ Requires-Dist: setuptools==80.9.0
88
+ Provides-Extra: lint
89
+ Requires-Dist: ruff==0.14.11; extra == "lint"
90
+ Provides-Extra: docs
91
+ Requires-Dist: furo==2025.12.19; extra == "docs"
92
+ Requires-Dist: docutils==0.21.2; extra == "docs"
93
+ Requires-Dist: imagesize==1.4.1; extra == "docs"
94
+ Requires-Dist: packaging==25.0; extra == "docs"
95
+ Requires-Dist: pyenchant==3.3.0; extra == "docs"
96
+ Requires-Dist: Pygments==2.19.2; extra == "docs"
97
+ Requires-Dist: snowballstemmer==3.0.1; extra == "docs"
98
+ Requires-Dist: Sphinx==9.0.4; python_version >= "3.11" and extra == "docs"
99
+ Requires-Dist: sphinxcontrib-applehelp==2.0.0; extra == "docs"
100
+ Requires-Dist: sphinxcontrib-devhelp==2.0.0; extra == "docs"
101
+ Requires-Dist: sphinxcontrib-htmlhelp==2.1.0; extra == "docs"
102
+ Requires-Dist: sphinxcontrib-httpdomain==1.8.1; extra == "docs"
103
+ Requires-Dist: sphinxcontrib-jsmath==1.0.1; extra == "docs"
104
+ Requires-Dist: sphinxcontrib-qthelp==2.0.0; extra == "docs"
105
+ Requires-Dist: sphinxcontrib-serializinghtml==2.0.0; extra == "docs"
106
+ Requires-Dist: sphinxcontrib-spelling==8.0.2; python_version >= "3.10" and extra == "docs"
107
+ Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
108
+ Requires-Dist: sphinx-inline-tabs==2025.12.21.14; extra == "docs"
109
+ Provides-Extra: test
110
+ Requires-Dist: attrs==25.4.0; extra == "test"
111
+ Requires-Dist: coverage==7.13.1; extra == "test"
112
+ Requires-Dist: exceptiongroup==1.3.1; extra == "test"
113
+ Requires-Dist: iniconfig==2.3.0; extra == "test"
114
+ Requires-Dist: mock==5.2.0; extra == "test"
115
+ Requires-Dist: packaging==25.0; extra == "test"
116
+ Requires-Dist: pluggy==1.6.0; extra == "test"
117
+ Requires-Dist: pyparsing==3.3.1; extra == "test"
118
+ Requires-Dist: pytest==9.0.2; extra == "test"
119
+ Requires-Dist: pytest-cov==7.0.0; extra == "test"
120
+ Requires-Dist: pytest-github-actions-annotate-failures==0.3.0; extra == "test"
121
+ Requires-Dist: responses==0.25.8; extra == "test"
122
+ Requires-Dist: testfixtures==8.3.0; extra == "test"
123
+ Requires-Dist: tomli==2.4.0; extra == "test"
124
+ Requires-Dist: types-PyYAML==6.0.12.20250915; extra == "test"
125
+ Provides-Extra: postgres
126
+ Requires-Dist: psycopg2==2.9.11; extra == "postgres"
127
+ Provides-Extra: hsm
128
+ Requires-Dist: PyKCS11==1.5.18; extra == "hsm"
129
+ Provides-Extra: kerberos
130
+ Requires-Dist: gssapi==1.10.1; extra == "kerberos"
131
+ Provides-Extra: grpc
132
+ Requires-Dist: protobuf==6.33.4; extra == "grpc"
133
+ Requires-Dist: google==3.0.0; extra == "grpc"
134
+ Dynamic: license-file
135
+
136
+ eduMFA
137
+ ===========
138
+
139
+ .. image:: https://codecov.io/gh/eduMFA/eduMFA/coverage.svg?branch=main
140
+ :target: https://codecov.io/gh/eduMFA/eduMFA?branch=main
141
+
142
+ .. image:: https://img.shields.io/pypi/v/eduMFA.svg
143
+ :alt: Latest Version
144
+ :target: https://pypi.python.org/pypi/eduMFA/#history
145
+
146
+ .. image:: https://img.shields.io/pypi/pyversions/edumfa.svg
147
+ :alt: PyPI - Python Version
148
+ :target: https://pypi.python.org/pypi/edumfa/
149
+
150
+ .. image:: https://img.shields.io/github/license/edumfa/edumfa.svg
151
+ :alt: License
152
+ :target: https://pypi.python.org/pypi/edumfa/
153
+
154
+ .. image:: https://readthedocs.org/projects/edumfa/badge/?version=latest
155
+ :alt: Documentation
156
+ :target: http://edumfa.readthedocs.org/en/latest/
157
+
158
+
159
+ eduMFA is an open solution for strong two-factor authentication like
160
+ OTP tokens, SMS, smartphones or SSH keys.
161
+ Using eduMFA you can enhance your existing applications like local login
162
+ (PAM, Windows Credential Provider),
163
+ VPN, remote access, SSH connections, access to websites or web portals with
164
+ a second factor during authentication. Thus boosting the security of your
165
+ existing applications.
166
+
167
+ The project eduMFA is based on the privacyIDEA Project and aims to provide up-to-date multifactor authentication for academic institutions.
168
+
169
+ Overview
170
+ ========
171
+
172
+ eduMFA runs as an additional service in your network, and you can connect different
173
+ applications to eduMFA.
174
+
175
+ eduMFA does not bind you to any decision of the authentication
176
+ protocol, nor does it dictate you where your user information should be
177
+ stored. This is achieved by its totally modular architecture.
178
+ eduMFA is not only open as far as its modular architecture is
179
+ concerned. But eduMFA is completely licensed under the AGPLv3.
180
+
181
+ It supports a wide variety of authentication devices like OTP tokens
182
+ (HMAC, HOTP, TOTP, OCRA, mOTP), Yubikey (HOTP, TOTP, AES), FIDO U2F, as well
183
+ as FIDO2 WebAuthn devices like Yubikey and Plug-Up, smartphone Apps like Google
184
+ Authenticator, FreeOTP, Token2 or TiQR, SMS, Email, SSH keys, x509 certificates
185
+ and Registration Codes for easy deployment.
186
+
187
+ eduMFA is based on Flask and SQLAlchemy as the python backend. The
188
+ web UI is based on angularJS and bootstrap.
189
+ A MachineToken design lets you assign tokens to machines. Thus, you can use
190
+ your Yubikey to unlock LUKS, assign SSH keys to SSH servers or use Offline OTP
191
+ with PAM.
192
+
193
+
194
+
195
+ Setup
196
+ =====
197
+
198
+ For setting up the system to *run* it, please read install instructions
199
+ at `edumfa.readthedocs.io <http://edumfa.readthedocs.io/en/latest/installation/index.html>`_.
200
+
201
+ If you want to setup a development environment start like this::
202
+
203
+ git clone https://github.com/edumfa/edumfa.git
204
+ cd edumfa
205
+ virtualenv venv
206
+ source venv/bin/activate
207
+ pip install .
208
+
209
+ .. _testing_env:
210
+
211
+ You may additionally want to set up your environment for testing, by adding the
212
+ additional dependencies::
213
+
214
+ pip install .[test]
215
+
216
+
217
+ Getting and updating submodules
218
+ ===============================
219
+
220
+ The client-side library for the registering and signing of WebAuthn-Credentials
221
+ resides in a submodule.
222
+
223
+ To fetch all submodules for this repository, run::
224
+
225
+ git submodule update --init --recursive
226
+
227
+ When pulling changes from upstream later, you can automatically update any outdated
228
+ submodules, by running::
229
+
230
+ git pull --recurse-submodules
231
+
232
+ Running it
233
+ ==========
234
+
235
+ First You need to create a `config-file <https://edumfa.readthedocs.io/en/latest/installation/system/inifile.html>`_.
236
+
237
+ Then create the database tables and the encryption key::
238
+
239
+ ./edumfa-manage create_tables
240
+ ./edumfa-manage create_enckey
241
+
242
+ If You want to keep the development database upgradable, You should `stamp
243
+ <https://edumfa.readthedocs.io/en/latest/installation/upgrade.html>`_ it
244
+ to simplify updates::
245
+
246
+ ./edumfa-manage db stamp head -d migrations/
247
+
248
+ Create the key for the audit log::
249
+
250
+ ./edumfa-manage create_audit_keys
251
+
252
+ Create the first administrator::
253
+
254
+ ./edumfa-manage admin add <username>
255
+
256
+ Run it::
257
+
258
+ ./edumfa-manage runserver
259
+
260
+ Now you can connect to ``http://localhost:5000`` with your browser and login
261
+ as administrator.
262
+
263
+ Run tests
264
+ =========
265
+
266
+ If you have followed the steps above to set up your
267
+ `environment for testing <#testing-env>`__, running the test suite should be as
268
+ easy as running `pytest <http://pytest.org/>`_ with the following options::
269
+
270
+ python -m pytest -v --cov=eduMFA --cov-report=html tests/
271
+
272
+ Contributing
273
+ ============
274
+
275
+ There are a lot of different ways to contribute to eduMFA, even
276
+ if you are not a developer.
277
+
278
+ If you found a security vulnerability please report it to us using the reporting form provided by GitHub
279
+
280
+ You can find detailed information about contributing here:
281
+ https://github.com/eduMFA/eduMFA/blob/main/CONTRIBUTING.md
282
+
283
+ Code structure
284
+ ==============
285
+
286
+ The database models are defined in ``models.py`` and tested in
287
+ tests/test_db_model.py.
288
+
289
+ Based on the database models there are the libraries ``lib/config.py`` which is
290
+ responsible for basic configuration in the database table ``config``.
291
+ And the library ``lib/resolver.py`` which provides functions for the database
292
+ table ``resolver``. This is tested in tests/test_lib_resolver.py.
293
+
294
+ Based on the resolver there is the library ``lib/realm.py`` which provides
295
+ functions
296
+ for the database table ``realm``. Several resolvers are combined into a realm.
297
+
298
+ Based on the realm there is the library ``lib/user.py`` which provides functions
299
+ for users. There is no database table user, since users are dynamically read
300
+ from the user sources like SQL, LDAP, SCIM or flat files.
301
+
302
+ Versioning
303
+ ==========
304
+ eduMFA adheres to `Semantic Versioning <http://semver.org/>`_.
@@ -0,0 +1,63 @@
1
+ from os import getenv
2
+
3
+
4
+ def get_content_from_file(path: str) -> str:
5
+ """Return the normalized content from a path.
6
+
7
+ :param path: The path to read the file from.
8
+ :return: The content of the file stripped of newlines.
9
+ :raises FileNotFoundError: If the file at path can't be found.
10
+ """
11
+ with open(path) as fp:
12
+ return fp.read().strip()
13
+
14
+
15
+ def _getenv(key: str, default: str | None) -> str:
16
+ """
17
+ Get an environment variable and raise an exception if it does not exist and
18
+ no default is given.
19
+
20
+ :param key: The environment variable to get.
21
+ :param default: The value to return if the environment variable doesn't
22
+ exist.
23
+ :return: The environment variable's value or the default if given.
24
+ :raises ValueError: If the variable is not set and there is no default
25
+ value.
26
+ """
27
+ value = getenv(key, default)
28
+ if not value:
29
+ raise ValueError(f"Environment variable '{key}' not set! Can't start...")
30
+ else:
31
+ return value
32
+
33
+
34
+ def get_var(key: str, default: str | None = None) -> str:
35
+ """
36
+ Decide whether to get the variable from the environment or a file,
37
+ depending on if there is a environment variable with a _FILE-suffix
38
+ which overrides the environment variable without it.
39
+
40
+ :param key: The environment variable to get.
41
+ :param default: The value to return if the environment variable doesn't
42
+ exist.
43
+ :return: The variable's value or the default if given.
44
+ :raises ValueError: If the variable is not set and there is no default
45
+ value.
46
+ """
47
+ path = getenv(f"{key}_FILE")
48
+ if path:
49
+ return get_content_from_file(path)
50
+ return _getenv(key, default)
51
+
52
+
53
+ SQLALCHEMY_DATABASE_URI = f"{get_var('DB_DRIVER')}://{get_var('DB_USER')}:{get_var('DB_PASSWORD')}@{get_var('DB_HOSTNAME')}/{get_var('DB_DATABASE')}"
54
+ SUPERUSER_REALM = get_var("SUPERUSER_REALM", "super,administrators").split(",")
55
+ SECRET_KEY = get_var("SECRET_KEY")
56
+ EDUMFA_PEPPER = get_var("EDUMFA_PEPPER")
57
+ EDUMFA_ENCFILE = "/etc/edumfa/enckey"
58
+ EDUMFA_AUDIT_KEY_PRIVATE = "/etc/edumfa/private.pem"
59
+ EDUMFA_AUDIT_KEY_PUBLIC = "/etc/edumfa/public.pem"
60
+ EDUMFA_LOGFILE = "/var/log/edumfa/edumfa.log"
61
+ EDUMFA_LOGCONFIG = "/etc/edumfa/logging.yml"
62
+ EDUMFA_UI_DEACTIVATED = get_var("EDUMFA_UI_DEACTIVATED", "False") == "True"
63
+ EDUMFA_AUDIT_SQL_TRUNCATE = True
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/bash
2
+ set -e
3
+
4
+ GEN_PWD="$(openssl rand -base64 42)"
5
+ EDUMFA_ADMIN_USER="${EDUMFA_ADMIN_USER:-admin}"
6
+ EDUMFA_ADMIN_PASS="${EDUMFA_ADMIN_PASS:-$GEN_PWD}"
7
+
8
+ # Make sure the config is working by executing it once.
9
+ python3 "/etc/edumfa/edumfa.cfg"
10
+
11
+ # Create enckey if doesn't exist yet
12
+ edumfa-manage -q create_enckey || true
13
+
14
+ # Create audit keys if they don't exist yet
15
+ edumfa-manage -q create_audit_keys || true
16
+
17
+ # Create DB
18
+ echo "Creating DB"
19
+ # FIXME: this creates a exception trace on every attempt
20
+ attempts=10
21
+ until edumfa-manage -q create_tables
22
+ do
23
+ if [[ $attempts -eq 0 ]]; then
24
+ echo "Exhausted database connection tries. Stopping."
25
+ exit 1
26
+ else
27
+ echo "Cannot connect to database. Trying again..."
28
+ sleep 3
29
+ attempts=$((attempts-1))
30
+ fi
31
+ done
32
+
33
+ # Check and stamp DB
34
+ STAMP=$(edumfa-manage -q db current -d /usr/local/lib/edumfa/migrations)
35
+ if [[ -z "${STAMP//Running online/}" ]]; then
36
+ edumfa-manage -q db stamp head -d /usr/local/lib/edumfa/migrations
37
+ fi
38
+
39
+ # Upgrading DB
40
+ echo "Upgrading Database"
41
+ edumfa-schema-upgrade /usr/local/lib/edumfa/migrations --skipstamp
42
+
43
+ # Create admin user
44
+ echo "Creating Admin"
45
+ edumfa-manage -q admin add "$EDUMFA_ADMIN_USER" -p "$EDUMFA_ADMIN_PASS"
46
+
47
+ # Execute user scripts
48
+ shopt -s nullglob
49
+ for script in /opt/edumfa/user-scripts/*.sh; do
50
+ echo "Executing user script $script..."
51
+ bash $script
52
+ done
53
+
54
+ echo "
55
+ You can login with the following credentials:
56
+ username: $EDUMFA_ADMIN_USER
57
+ password: $EDUMFA_ADMIN_PASS
58
+ "
59
+
60
+ echo "Starting Server"
61
+ gunicorn --bind 0.0.0.0:8000 --workers 4 app
@@ -0,0 +1,40 @@
1
+ {
2
+ "version": 1,
3
+ "formatters": {
4
+ "detail": {
5
+ "()": "edumfa.lib.log.SecureFormatter",
6
+ "format": "[%(asctime)s][%(process)d][%(thread)d][%(levelname)s][%(name)s:%(lineno)d] %(message)s"
7
+ }
8
+ },
9
+ "handlers": {
10
+ "stdhandler": {
11
+ "class": "logging.StreamHandler",
12
+ "formatter": "detail",
13
+ "stream": "ext://sys.stdout"
14
+ }
15
+ },
16
+ "loggers": {
17
+ "root": {
18
+ "handlers": ["stdhandler"],
19
+ "level": "INFO"
20
+ },
21
+ "alembic": {
22
+ "handlers": ["stdhandler"],
23
+ "qualname": "alembic",
24
+ "level": "INFO",
25
+ "propagate": 0
26
+ },
27
+ "sqlalchemy.engine": {
28
+ "handlers": ["stdhandler"],
29
+ "qualname": "sqlalchemy.engine",
30
+ "level": "WARN",
31
+ "propagate": 0
32
+ },
33
+ "edumfa": {
34
+ "handlers": ["stdhandler"],
35
+ "qualname": "edumfa",
36
+ "level": "INFO",
37
+ "propagate": 0
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,47 @@
1
+ services:
2
+ mariadb:
3
+ image: docker.io/mariadb:lts-noble
4
+ restart: always
5
+ volumes:
6
+ - mariadb-data:/var/lib/mysql:rw
7
+ environment:
8
+ MARIADB_DATABASE: ${MARIADB_DATABASE}
9
+ MARIADB_USER: ${MARIADB_USER}
10
+ MARIADB_PASSWORD: ${MARIADB_PASSWORD}
11
+ MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
12
+ healthcheck:
13
+ test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
14
+ start_period: 10s
15
+ interval: 10s
16
+ timeout: 5s
17
+ retries: 3
18
+
19
+ edumfa:
20
+ build: ../..
21
+ restart: always
22
+ ports:
23
+ - "8000:8000"
24
+ volumes:
25
+ - edumfa-keys:/etc/edumfa/:rw
26
+ - ./edumfa-setup.sh:/opt/edumfa/user-scripts/01-setup.sh:ro
27
+ - ./example-policy.py:/opt/edumfa/policy.py:ro
28
+ - ./my-login.html:/opt/edumfa/edumfa-package/static/components/login/views/login.html
29
+ - ./db_password.txt:/etc/edumfa/db_password.txt:ro
30
+ environment:
31
+ DB_DRIVER: ${DB_DRIVER}
32
+ DB_HOSTNAME: mariadb
33
+ DB_USER: ${MARIADB_USER}
34
+ DB_PASSWORD_FILE: /etc/edumfa/db_password.txt
35
+ DB_DATABASE: ${MARIADB_DATABASE}
36
+ SECRET_KEY: ${EDUMFA_SECRET_KEY}
37
+ EDUMFA_PEPPER: ${EDUMFA_PEPPER}
38
+ EDUMFA_ADMIN_USER: ${EDUMFA_ADMIN_USER}
39
+ EDUMFA_ADMIN_PASS: ${EDUMFA_ADMIN_PASS}
40
+ EDUMFA_UI_DEACTIVATED: ${EDUMFA_UI_DEACTIVATED}
41
+ depends_on:
42
+ mariadb:
43
+ condition: service_healthy
44
+
45
+ volumes:
46
+ edumfa-keys:
47
+ mariadb-data:
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/bash
2
+
3
+ edumfa-manage -q resolver create_internal testresolver
4
+ edumfa-manage -q realm create testrealm testresolver
5
+
6
+ edumfa-manage -q config importer -i /opt/edumfa/policy.py
7
+
@@ -0,0 +1,15 @@
1
+ ## eduMFA docker config
2
+ MARIADB_USER="edumfa"
3
+ MARIADB_PASSWORD="pass"
4
+ MARIADB_DATABASE="edumfa"
5
+ MARIADB_ROOT_PASSWORD="rootpass"
6
+
7
+ DB_DRIVER="mysql+pymysql"
8
+
9
+ EDUMFA_SECRET_KEY="Test"
10
+ EDUMFA_PEPPER="Never know..."
11
+
12
+ EDUMFA_ADMIN_USER="admin"
13
+ EDUMFA_ADMIN_PASS="Passwort123"
14
+ SUPERUSER_REALM="super,administrators"
15
+ EDUMFA_UI_DEACTIVATED="False"
@@ -0,0 +1,25 @@
1
+ {
2
+ "policy": [
3
+ {
4
+ "action": {
5
+ "deletion_confirmation": True,
6
+ "hide_welcome_info": True,
7
+ "logout_time": "180",
8
+ },
9
+ "active": True,
10
+ "adminrealm": [],
11
+ "adminuser": [],
12
+ "check_all_resolvers": False,
13
+ "client": [],
14
+ "conditions": [],
15
+ "edumfanode": [],
16
+ "name": "webui",
17
+ "priority": 1,
18
+ "realm": [],
19
+ "resolver": [],
20
+ "scope": "webui",
21
+ "time": "",
22
+ "user": [],
23
+ }
24
+ ]
25
+ }
@@ -0,0 +1,95 @@
1
+ <div class="well" ng-show="hsmReady === 'True'">
2
+
3
+ <div class="container" ng-show="!loginWithCredentials">
4
+ <form name="formRemoteUserLogin" class="form-signin" role="form">
5
+ <div class="text-center">
6
+ <img ng-src="{{ instanceUrl }}/static/css/{{ piLogo }}"
7
+ width="90px">
8
+ </div>
9
+ <h2 class="form-signin-heading" translate>Login as
10
+ {{ remoteUser }}</h2>
11
+
12
+ <p translate>
13
+ You are authenticated by the web server as user
14
+ <b>{{ remoteUser }}</b>.
15
+ You may login as this user to eduMFA without any further
16
+ credentials.
17
+ </p>
18
+
19
+ <div class="text-center">
20
+ <button ng-click="authenticate_remote_user()"
21
+ class="btn btn-primary btn-block" translate>Log In
22
+ </button>
23
+ <button ng-hide="forceRemoteUser === 'True'"
24
+ ng-click="loginWithCredentials = true"
25
+ class="btn btn-info btn-block" translate>
26
+ Login with credentials
27
+ </button>
28
+ </div>
29
+ </form>
30
+ </div>
31
+
32
+ <div ng-show="loginWithCredentials">
33
+ <div class="alert alert-info alert-dismissible" role="alert">
34
+ <button type="button" class="close" data-dismiss="alert"
35
+ aria-label="Close">
36
+ <span aria-hidden="true">&times;</span></button>
37
+ This is an example modification.
38
+ </div>
39
+
40
+
41
+
42
+ <div class="container">
43
+ <div class="text-center">
44
+ <img ng-src="{{ instanceUrl }}/static/css/{{ piLogo }}"
45
+ width="90px">
46
+ </div>
47
+ <div class="text-center">
48
+ <h2 ng-hide="piLoginText" class="form-signin-heading" translate>Please sign in</h2>
49
+ <h2 ng-show="piLoginText" class="form-signin-heading">{{ piLoginText }}</h2>
50
+ </div>
51
+ <form name="formSignin" class="form-signin" role="form" novalidate>
52
+ <label for="username" class="sr-only" translate>Username</label>
53
+ <input name="username" id="username"
54
+ class="form-control round-top"
55
+ ng-model="login.username" required
56
+ placeholder="{{ 'Username'|translate }}"
57
+ autofocus/>
58
+ <label for="realm" class="sr-only" translate>Realm</label>
59
+ <select class="form-control round-none"
60
+ name="realm"
61
+ placeholder="Realm"
62
+ ng-show="piRealms.length > 0"
63
+ id="realm"
64
+ ng-model="login.realm"
65
+ ng-options="realm for realm in piRealms">
66
+ <!-- We add a placeholder, if we do not have an empty realm -->
67
+ <option ng-hide="piRealms[0]===''" value="" selected translate>Choose a realm...</option>
68
+ </select>
69
+ <label for="password" class="sr-only" translate>Password</label>
70
+ <input name="password" type="password"
71
+ id="password" class="form-control round-bottom"
72
+ ng-model="login.password" required
73
+ placeholder="{{ 'Password'|translate }}"/>
74
+
75
+ <div class="text-center">
76
+ <button ng-click="authenticate_first();"
77
+ ng-disabled="formSignin.$invalid"
78
+ class="btn btn-primary btn-block" translate>Log In
79
+ </button>
80
+ <p class="text-right" ng-show="passwordReset === 'True'">
81
+ <a ui-sref="recovery" translate>Reset Password</a>
82
+ </p>
83
+ </div>
84
+
85
+ </form>
86
+ </div>
87
+ </div>
88
+ </div>
89
+
90
+ <div class="well" ng-show="hsmReady === 'False'">
91
+ <div class="alert alert-danger" role="alert" translate>
92
+ The HSM is not ready. eduMFA can not work properly. Please start
93
+ the HSM and reload this page.
94
+ </div>
95
+ </div>