PKG-INFO 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746
  1. Metadata-Version: 1.2
  2. Name: django-axes
  3. Version: 4.5.4
  4. Summary: Keep track of failed login attempts in Django-powered sites.
  5. Home-page: https://github.com/jazzband/django-axes
  6. Author: Josh VanderLinden, Philip Neustrom, Michael Blume, Camilo Nova
  7. Author-email: codekoala@gmail.com
  8. Maintainer: Alex Clark
  9. Maintainer-email: aclark@aclark.net
  10. License: MIT
  11. Description: Django Axes
  12. ===========
  13. .. image:: https://jazzband.co/static/img/badge.svg
  14. :target: https://jazzband.co/
  15. :alt: Jazzband
  16. .. image:: https://img.shields.io/pypi/v/django-axes.svg
  17. :target: https://pypi.org/project/django-axes/
  18. :alt: PyPI release
  19. .. image:: https://img.shields.io/readthedocs/django-axes.svg
  20. :target: https://django-axes.readthedocs.io/
  21. :alt: Documentation
  22. .. image:: https://secure.travis-ci.org/jazzband/django-axes.svg?branch=master
  23. :target: http://travis-ci.org/jazzband/django-axes
  24. :alt: Build Status
  25. .. image:: https://codecov.io/gh/jazzband/django-axes/branch/master/graph/badge.svg
  26. :target: https://codecov.io/gh/jazzband/django-axes
  27. :alt: Coverage
  28. .. image:: https://img.shields.io/github/stars/jazzband/django-axes.svg?label=Stars&style=socialcA
  29. :target: https://github.com/jazzband/django-axes
  30. :alt: GitHub
  31. ``django-axes`` is a very simple way for you to keep track of failed login
  32. attempts, both for the Django admin and for the rest of your site. The name is
  33. sort of a geeky pun, since ``axes`` can be read interpreted as:
  34. * "access", as in monitoring access attempts
  35. * "axes", as in tools you can use hack (generally on wood). In this case,
  36. however, the "hacking" part of it can be taken a bit further: ``django-axes``
  37. is intended to help you *stop* people from hacking (popular media
  38. definition) your website. Hilarious, right? That's what I thought too!
  39. Documentation
  40. -------------
  41. For more information see the documentation at:
  42. https://django-axes.readthedocs.io/
  43. Issues
  44. ------
  45. If you have questions or have trouble using the app please file a bug report at:
  46. https://github.com/jazzband/django-axes/issues
  47. Contributing
  48. ------------
  49. Separate proposed changes and PRs into small, distinct patches by type
  50. so that they can be merged faster into upstream and released quicker:
  51. * Feature
  52. * Bugfix
  53. * Code style
  54. * Documentation
  55. Changes
  56. =======
  57. 4.5.4 (2019-01-15)
  58. ------------------
  59. - Improve README and documentation
  60. [aleksihakli]
  61. 4.5.3 (2019-01-14)
  62. ------------------
  63. - Remove the unused ``AccessAttempt.trusted`` flag from models
  64. [aleksihakli]
  65. - Improve README and Travis CI setups
  66. [aleksihakli]
  67. 4.5.2 (2019-01-12)
  68. ------------------
  69. - Added Turkish translations
  70. [obayhan]
  71. 4.5.1 (2019-01-11)
  72. ------------------
  73. - Removed duplicated check that was causing issues when using APIs.
  74. [camilonova]
  75. - Added Russian translations
  76. [lubicz-sielski]
  77. 4.5.0 (2018-12-25)
  78. ------------------
  79. - Improve support for custom authentication credentials using the
  80. ``AXES_USERNAME_FORM_FIELD`` and ``AXES_USERNAME_CALLABLE`` settings.
  81. [mastacheata]
  82. - Updated behaviour for fetching username from request or credentials:
  83. If no ``AXES_USERNAME_CALLABLE`` is configured, the optional
  84. ``credentials`` that are supplied to the axes utility methods
  85. are now the default source for client username and the HTTP
  86. request POST is the fallback for fetching the user information.
  87. ``AXES_USERNAME_CALLABLE`` implements an alternative signature with two
  88. arguments ``request, credentials`` in addition to the old ``request``
  89. call argument signature in a backwards compatible fashion.
  90. [aleksihakli]
  91. - Add official support for the Django 2.1 LTS version and Python 3.7.
  92. [aleksihakli]
  93. - Improve the requirements, documentation, tests, and CI setup.
  94. [aleksihakli]
  95. 4.4.3 (2018-12-08)
  96. ------------------
  97. - Fix MANIFEST.in missing German translations
  98. [aleksihakli]
  99. - Add `AXES_RESET_ON_SUCCESS` configuration flag
  100. [arjenzijlstra]
  101. 4.4.2 (2018-10-30)
  102. ------------------
  103. - fix missing migration and add check to prevent it happening again.
  104. [markddavidoff]
  105. 4.4.1 (2018-10-24)
  106. ------------------
  107. - Add a German translation
  108. [adonig]
  109. - Documentation wording changes
  110. [markddavidoff]
  111. - Use `get_client_username` in `log_user_login_failed` instead of credentials
  112. [markddavidoff]
  113. - pin prospector to 0.12.11, and pin astroid to 1.6.5
  114. [hsiaoyi0504]
  115. 4.4.0 (2018-05-26)
  116. ------------------
  117. - Added AXES_USERNAME_CALLABLE
  118. [jaadus]
  119. 4.3.1 (2018-04-21)
  120. ------------------
  121. - Change custom authentication backend failures from error to warning log level
  122. [aleksihakli]
  123. - Set up strict code linting for CI pipeline that fails builds if linting does not pass
  124. [aleksihakli]
  125. - Clean up old code base and tests based on linter errors
  126. [aleksihakli]
  127. 4.3.0 (2018-04-21)
  128. ------------------
  129. - Refactor and clean up code layout
  130. [aleksihakli]
  131. - Add prospector linting and code checks to toolchain
  132. [aleksihakli]
  133. - Clean up log message formatting and refactor type checks
  134. [EvaSDK]
  135. - Fix faulty user locking with user agent when AXES_ONLY_USER_FAILURES is set
  136. [EvaSDK]
  137. 4.2.1 (2018-04-18)
  138. ------------------
  139. - Fix unicode string interpolation on Python 2.7
  140. [aleksihakli]
  141. 4.2.0 (2018-04-13)
  142. ------------------
  143. - Add configuration flags for client IP resolving
  144. [aleksihakli]
  145. - Add AxesModelBackend authentication backend
  146. [markdaviddoff]
  147. 4.1.0 (2018-02-18)
  148. ------------------
  149. - Add AXES_CACHE setting for configuring `axes` specific caching.
  150. [JWvDronkelaar]
  151. - Add checks and tests for faulty LocMemCache usage in application setup.
  152. [aleksihakli]
  153. 4.0.2 (2018-01-19)
  154. ------------------
  155. - Improve Windows compatibility on Python < 3.4 by utilizing win_inet_pton
  156. [hsiaoyi0504]
  157. - Add documentation on django-allauth integration
  158. [grucha]
  159. - Add documentation on known AccessAttempt caching configuration problems
  160. when using axes with the `django.core.cache.backends.locmem.LocMemCache`
  161. [aleksihakli]
  162. - Refactor and improve existing AccessAttempt cache reset utility
  163. [aleksihakli]
  164. 4.0.1 (2017-12-19)
  165. ------------------
  166. - Fixes issue when not using `AXES_USERNAME_FORM_FIELD`
  167. [camilonova]
  168. 4.0.0 (2017-12-18)
  169. ------------------
  170. - *BREAKING CHANGES*. `AXES_BEHIND_REVERSE_PROXY` `AXES_REVERSE_PROXY_HEADER`
  171. `AXES_NUM_PROXIES` were removed in order to use `django-ipware` to get
  172. the user ip address
  173. [camilonova]
  174. - Added support for custom username field
  175. [kakulukia]
  176. - Customizing Axes doc updated
  177. [pckapps]
  178. - Remove filtering by username
  179. [camilonova]
  180. - Fixed logging failed attempts to authenticate using a custom authentication
  181. backend.
  182. [D3X]
  183. 3.0.3 (2017-11-23)
  184. ------------------
  185. - Test against Python 2.7.
  186. [mbaechtold]
  187. - Test against Python 3.4.
  188. [pope1ni]
  189. 3.0.2 (2017-11-21)
  190. ------------------
  191. - Added form_invalid decorator. Fixes #265
  192. [camilonova]
  193. 3.0.1 (2017-11-17)
  194. ------------------
  195. - Fix DeprecationWarning for logger warning
  196. [richardowen]
  197. - Fixes global lockout possibility
  198. [joeribekker]
  199. - Changed the way output is handled in the management commands
  200. [ataylor32]
  201. 3.0.0 (2017-11-17)
  202. ------------------
  203. - BREAKING CHANGES. Support for Django >= 1.11 and signals, see issue #215.
  204. Drop support for Python < 3.6
  205. [camilonova]
  206. 2.3.3 (2017-07-20)
  207. ------------------
  208. - Many tweaks and handles successful AJAX logins.
  209. [Jack Sullivan]
  210. - Add tests for proxy number parametrization
  211. [aleksihakli]
  212. - Add AXES_NUM_PROXIES setting
  213. [aleksihakli]
  214. - Log failed access attempts regardless of settings
  215. [jimr]
  216. - Updated configuration docs to include AXES_IP_WHITELIST
  217. [Minkey27]
  218. - Add test for get_cache_key function
  219. [jorlugaqui]
  220. - Delete cache key in reset command line
  221. [jorlugaqui]
  222. - Add signals for setting/deleting cache keys
  223. [jorlugaqui]
  224. 2.3.2 (2016-11-24)
  225. ------------------
  226. - Only look for lockable users on a POST
  227. [schinckel]
  228. - Fix and add tests for IPv4 and IPv6 parsing
  229. [aleksihakli]
  230. 2.3.1 (2016-11-12)
  231. ------------------
  232. - Added settings for disabling success accesslogs
  233. [Minkey27]
  234. - Fixed illegal IP address string passed to inet_pton
  235. [samkuehn]
  236. 2.3.0 (2016-11-04)
  237. ------------------
  238. - Fixed ``axes_reset`` management command to skip "ip" prefix to command
  239. arguments.
  240. [EvaMarques]
  241. - Added ``axes_reset_user`` management command to reset lockouts and failed
  242. login records for given users.
  243. [vladimirnani]
  244. - Fixed Travis-PyPI release configuration.
  245. [jezdez]
  246. - Make IP position argument optional.
  247. [aredalen]
  248. - Added possibility to disable access log
  249. [svenhertle]
  250. - Fix for IIS used as reverse proxy adding port number
  251. [Dmitri-Sintsov]
  252. - Made the signal race condition safe.
  253. [Minkey27]
  254. - Added AXES_ONLY_USER_FAILURES to support only looking at the user ID.
  255. [lip77us]
  256. 2.2.0 (2016-07-20)
  257. ------------------
  258. - Improve the logic when using a reverse proxy to avoid possible attacks.
  259. [camilonova]
  260. 2.1.0 (2016-07-14)
  261. ------------------
  262. - Add `default_app_config` so you can just use `axes` in `INSTALLED_APPS`
  263. [vdboor]
  264. 2.0.0 (2016-06-24)
  265. ------------------
  266. - Removed middleware to use app_config
  267. [camilonova]
  268. - Lots of cleaning
  269. [camilonova]
  270. - Improved test suite and versions
  271. [camilonova]
  272. 1.7.0 (2016-06-10)
  273. ------------------
  274. - Use render shortcut for rendering LOCKOUT_TEMPLATE
  275. [Radosław Luter]
  276. - Added app_label for RemovedInDjango19Warning
  277. [yograterol]
  278. - Add iso8601 translator.
  279. [mullakhmetov]
  280. - Edit json response. Context now contains ISO 8601 formatted cooloff time
  281. [mullakhmetov]
  282. - Add json response and iso8601 tests.
  283. [mullakhmetov]
  284. - Fixes issue 162: UnicodeDecodeError on pip install
  285. [joeribekker]
  286. - Added AXES_NEVER_LOCKOUT_WHITELIST option to prevent certain IPs from being locked out.
  287. [joeribekker]
  288. 1.6.1 (2016-05-13)
  289. ------------------
  290. - Fixes whitelist check when BEHIND_REVERSE_PROXY
  291. [Patrick Hagemeister]
  292. - Made migrations py3 compatible
  293. [mvdwaeter]
  294. - Fixing #126, possibly breaking compatibility with Django<=1.7
  295. [int-ua]
  296. - Add note for upgrading users about new migration files
  297. [kelseyq]
  298. - Fixes #148
  299. [camilonova]
  300. - Decorate auth_views.login only once
  301. [teeberg]
  302. - Set IP public/private classifier to be compliant with RFC 1918.
  303. [SilasX]
  304. - Issue #155. Lockout response status code changed to 403.
  305. [Артур Муллахметов]
  306. - BUGFIX: Missing migration
  307. [smeinel]
  308. 1.6.0 (2016-01-07)
  309. ------------------
  310. - Stopped using render_to_response so that other template engines work
  311. [tarkatronic]
  312. - Improved performance & DoS prevention on query2str
  313. [tarkatronic]
  314. - Immediately return from is_already_locked if the user is not lockable
  315. [jdunck]
  316. - Iterate over ip addresses only once
  317. [annp89]
  318. - added initial migration files to support django 1.7 &up. Upgrading users should run migrate --fake-initial after update
  319. [ibaguio]
  320. - Add db indexes to CommonAccess model
  321. [Schweigi]
  322. 1.5.0 (2015-09-11)
  323. ------------------
  324. - Fix #_get_user_attempts to include username when filtering AccessAttempts if AXES_LOCK_OUT_BY_COMBINATION_USER_AND_IP is True
  325. [afioca]
  326. 1.4.0 (2015-08-09)
  327. ------------------
  328. - Send the user_locked_out signal. Fixes #94.
  329. [toabi]
  330. 1.3.9 (2015-02-11)
  331. ------------------
  332. - Python 3 fix (#104)
  333. 1.3.8 (2014-10-07)
  334. ------------------
  335. - Rename GitHub organization from django-security to django-pci to emphasize focus on providing assistance with building PCI compliant websites with Django.
  336. [aclark4life]
  337. 1.3.7 (2014-10-05)
  338. ------------------
  339. - Explain common issues where Axes fails silently
  340. [cericoda]
  341. - Allow for user-defined username field for lookup in POST data
  342. [SteveByerly]
  343. - Log out only if user was logged in
  344. [zoten]
  345. - Support for floats in cooloff time (i.e: 0.1 == 6 minutes)
  346. [marianov]
  347. - Limit amount of POST data logged (#73). Limiting the length of value is not enough, as there could be arbitrary number of them, or very long key names.
  348. [peterkuma]
  349. - Improve get_ip to try for real ip address
  350. [7wonders]
  351. - Change IPAddressField to GenericIPAddressField. When using a PostgreSQL database and the client does not pass an IP address you get an inet error. This is a known problem with PostgreSQL and the IPAddressField. https://code.djangoproject.com/ticket/5622. It can be fixed by using a GenericIPAddressField instead.
  352. [polvoblanco]
  353. - Get first X-Forwarded-For IP
  354. [tutumcloud]
  355. - White listing IP addresses behind reverse proxy. Allowing some IP addresses to have direct access to the app even if they are behind a reverse proxy. Those IP addresses must still be on a white list.
  356. [ericbulloch]
  357. - Reduce logging of reverse proxy IP lookup and use configured logger. Fixes #76. Instead of logging the notice that django.axes looks for a HTTP header set by a reverse proxy on each attempt, just log it one-time on first module import. Also use the configured logger (by default axes.watch_login) for the message to be more consistent in logging.
  358. [eht16]
  359. - Limit the length of the values logged into the database. Refs #73
  360. [camilonova]
  361. - Refactored tests to be more stable and faster
  362. [camilonova]
  363. - Clean client references
  364. [camilonova]
  365. - Fixed admin login url
  366. [camilonova]
  367. - Added django 1.7 for testing
  368. [camilonova]
  369. - Travis file cleanup
  370. [camilonova]
  371. - Remove hardcoded url path
  372. [camilonova]
  373. - Fixing tests for django 1.7
  374. [Andrew-Crosio]
  375. - Fix for django 1.7 exception not existing
  376. [Andrew-Crosio]
  377. - Removed python 2.6 from testing
  378. [camilonova]
  379. - Use django built-in six version
  380. [camilonova]
  381. - Added six as requirement
  382. [camilonova]
  383. - Added python 2.6 for travis testing
  384. [camilonova]
  385. - Replaced u string literal prefixes with six.u() calls
  386. [amrhassan]
  387. - Fixes object type issue, response is not an string
  388. [camilonova]
  389. - Python 3 compatibility fix for db_reset
  390. [nicois]
  391. - Added example project and helper scripts
  392. [barseghyanartur]
  393. - Admin command to list login attemps
  394. [marianov]
  395. - Replaced six imports with django.utils.six ones
  396. [amrhassan]
  397. - Replaced u string literal prefixes with six.u() calls to make it compatible with Python 3.2
  398. [amrhassan]
  399. - Replaced `assertIn`s and `assertNotIn`s with `assertContains` and `assertNotContains`
  400. [fcurella]
  401. - Added py3k to travis
  402. [fcurella]
  403. - Update test cases to be python3 compatible
  404. [nicois]
  405. - Python 3 compatibility fix for db_reset
  406. [nicois]
  407. - Removed trash from example urls
  408. [barseghyanartur]
  409. - Added django installer
  410. [barseghyanartur]
  411. - Added example project and helper scripts
  412. [barseghyanartur]
  413. 1.3.6 (2013-11-23)
  414. ------------------
  415. - Added AttributeError in case get_profile doesn't exist [camilonova]
  416. - Improved axes_reset command [camilonova]
  417. 1.3.5 (2013-11-01)
  418. ------------------
  419. - Fix an issue with __version__ loading the wrong version [graingert]
  420. 1.3.4 (2013-11-01)
  421. ------------------
  422. - Update README.rst for PyPI [marty] [camilonova] [graingert]
  423. - Add cooloff period [visualspace]
  424. 1.3.3 (2013-07-05)
  425. ------------------
  426. - Added 'username' field to the Admin table [bkvirendra]
  427. - Removed fallback logging creation since logging cames by default on django 1.4 or later, if you don't have it is because you explicitly wanted. Fixes #45 [camilonova]
  428. 1.3.2 (2013-03-28)
  429. ------------------
  430. - Fix an issue when a user logout [camilonova]
  431. - Match pypi version [camilonova]
  432. - Better User model import method [camilonova]
  433. - Use only one place to get the version number [camilonova]
  434. - Fixed an issue when a user on django 1.4 logout [camilonova]
  435. - Handle exception if there is not user profile model set [camilonova]
  436. - Made some cleanup and remove a pokemon exception handling [camilonova]
  437. - Improved tests so it really looks for the rabbit in the hole [camilonova]
  438. - Match pypi version [camilonova]
  439. 1.3.1 (2013-03-19)
  440. ------------------
  441. - Add support for Django 1.5 [camilonova]
  442. 1.3.0 (2013-02-27)
  443. ------------------
  444. - Bug fix: get_version() format string [csghormley]
  445. 1.2.9 (2013-02-20)
  446. ------------------
  447. - Add to and improve test cases [camilonova]
  448. 1.2.8 (2013-01-23)
  449. ------------------
  450. - Increased http accept header length [jslatts]
  451. 1.2.7 (2013-01-17)
  452. ------------------
  453. - Reverse proxy support [rmagee]
  454. - Clean up README [martey]
  455. 1.2.6 (2012-12-04)
  456. ------------------
  457. - Remove unused import [aclark4life]
  458. 1.2.5 (2012-11-28)
  459. ------------------
  460. - Fix setup.py [aclark4life]
  461. - Added ability to flag user accounts as unlockable. [kencochrane]
  462. - Added ipaddress as a param to the user_locked_out signal. [kencochrane]
  463. - Added a signal receiver for user_logged_out. [kencochrane]
  464. - Added a signal for when a user gets locked out. [kencochrane]
  465. - Added AccessLog model to log all access attempts. [kencochrane]
  466. Keywords: authentication,django,pci,security
  467. Platform: UNKNOWN
  468. Classifier: Development Status :: 5 - Production/Stable
  469. Classifier: Environment :: Web Environment
  470. Classifier: Framework :: Django
  471. Classifier: Framework :: Django :: 1.11
  472. Classifier: Framework :: Django :: 2.0
  473. Classifier: Framework :: Django :: 2.1
  474. Classifier: Intended Audience :: Developers
  475. Classifier: Intended Audience :: System Administrators
  476. Classifier: License :: OSI Approved :: MIT License
  477. Classifier: Operating System :: OS Independent
  478. Classifier: Programming Language :: Python
  479. Classifier: Programming Language :: Python :: 2
  480. Classifier: Programming Language :: Python :: 2.7
  481. Classifier: Programming Language :: Python :: 3
  482. Classifier: Programming Language :: Python :: 3.4
  483. Classifier: Programming Language :: Python :: 3.5
  484. Classifier: Programming Language :: Python :: 3.6
  485. Classifier: Programming Language :: Python :: 3.7
  486. Classifier: Topic :: Internet :: Log Analysis
  487. Classifier: Topic :: Security
  488. Classifier: Topic :: System :: Logging