CHANGES.txt 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646
  1. Changes
  2. =======
  3. 4.5.4 (2019-01-15)
  4. ------------------
  5. - Improve README and documentation
  6. [aleksihakli]
  7. 4.5.3 (2019-01-14)
  8. ------------------
  9. - Remove the unused ``AccessAttempt.trusted`` flag from models
  10. [aleksihakli]
  11. - Improve README and Travis CI setups
  12. [aleksihakli]
  13. 4.5.2 (2019-01-12)
  14. ------------------
  15. - Added Turkish translations
  16. [obayhan]
  17. 4.5.1 (2019-01-11)
  18. ------------------
  19. - Removed duplicated check that was causing issues when using APIs.
  20. [camilonova]
  21. - Added Russian translations
  22. [lubicz-sielski]
  23. 4.5.0 (2018-12-25)
  24. ------------------
  25. - Improve support for custom authentication credentials using the
  26. ``AXES_USERNAME_FORM_FIELD`` and ``AXES_USERNAME_CALLABLE`` settings.
  27. [mastacheata]
  28. - Updated behaviour for fetching username from request or credentials:
  29. If no ``AXES_USERNAME_CALLABLE`` is configured, the optional
  30. ``credentials`` that are supplied to the axes utility methods
  31. are now the default source for client username and the HTTP
  32. request POST is the fallback for fetching the user information.
  33. ``AXES_USERNAME_CALLABLE`` implements an alternative signature with two
  34. arguments ``request, credentials`` in addition to the old ``request``
  35. call argument signature in a backwards compatible fashion.
  36. [aleksihakli]
  37. - Add official support for the Django 2.1 LTS version and Python 3.7.
  38. [aleksihakli]
  39. - Improve the requirements, documentation, tests, and CI setup.
  40. [aleksihakli]
  41. 4.4.3 (2018-12-08)
  42. ------------------
  43. - Fix MANIFEST.in missing German translations
  44. [aleksihakli]
  45. - Add `AXES_RESET_ON_SUCCESS` configuration flag
  46. [arjenzijlstra]
  47. 4.4.2 (2018-10-30)
  48. ------------------
  49. - fix missing migration and add check to prevent it happening again.
  50. [markddavidoff]
  51. 4.4.1 (2018-10-24)
  52. ------------------
  53. - Add a German translation
  54. [adonig]
  55. - Documentation wording changes
  56. [markddavidoff]
  57. - Use `get_client_username` in `log_user_login_failed` instead of credentials
  58. [markddavidoff]
  59. - pin prospector to 0.12.11, and pin astroid to 1.6.5
  60. [hsiaoyi0504]
  61. 4.4.0 (2018-05-26)
  62. ------------------
  63. - Added AXES_USERNAME_CALLABLE
  64. [jaadus]
  65. 4.3.1 (2018-04-21)
  66. ------------------
  67. - Change custom authentication backend failures from error to warning log level
  68. [aleksihakli]
  69. - Set up strict code linting for CI pipeline that fails builds if linting does not pass
  70. [aleksihakli]
  71. - Clean up old code base and tests based on linter errors
  72. [aleksihakli]
  73. 4.3.0 (2018-04-21)
  74. ------------------
  75. - Refactor and clean up code layout
  76. [aleksihakli]
  77. - Add prospector linting and code checks to toolchain
  78. [aleksihakli]
  79. - Clean up log message formatting and refactor type checks
  80. [EvaSDK]
  81. - Fix faulty user locking with user agent when AXES_ONLY_USER_FAILURES is set
  82. [EvaSDK]
  83. 4.2.1 (2018-04-18)
  84. ------------------
  85. - Fix unicode string interpolation on Python 2.7
  86. [aleksihakli]
  87. 4.2.0 (2018-04-13)
  88. ------------------
  89. - Add configuration flags for client IP resolving
  90. [aleksihakli]
  91. - Add AxesModelBackend authentication backend
  92. [markdaviddoff]
  93. 4.1.0 (2018-02-18)
  94. ------------------
  95. - Add AXES_CACHE setting for configuring `axes` specific caching.
  96. [JWvDronkelaar]
  97. - Add checks and tests for faulty LocMemCache usage in application setup.
  98. [aleksihakli]
  99. 4.0.2 (2018-01-19)
  100. ------------------
  101. - Improve Windows compatibility on Python < 3.4 by utilizing win_inet_pton
  102. [hsiaoyi0504]
  103. - Add documentation on django-allauth integration
  104. [grucha]
  105. - Add documentation on known AccessAttempt caching configuration problems
  106. when using axes with the `django.core.cache.backends.locmem.LocMemCache`
  107. [aleksihakli]
  108. - Refactor and improve existing AccessAttempt cache reset utility
  109. [aleksihakli]
  110. 4.0.1 (2017-12-19)
  111. ------------------
  112. - Fixes issue when not using `AXES_USERNAME_FORM_FIELD`
  113. [camilonova]
  114. 4.0.0 (2017-12-18)
  115. ------------------
  116. - *BREAKING CHANGES*. `AXES_BEHIND_REVERSE_PROXY` `AXES_REVERSE_PROXY_HEADER`
  117. `AXES_NUM_PROXIES` were removed in order to use `django-ipware` to get
  118. the user ip address
  119. [camilonova]
  120. - Added support for custom username field
  121. [kakulukia]
  122. - Customizing Axes doc updated
  123. [pckapps]
  124. - Remove filtering by username
  125. [camilonova]
  126. - Fixed logging failed attempts to authenticate using a custom authentication
  127. backend.
  128. [D3X]
  129. 3.0.3 (2017-11-23)
  130. ------------------
  131. - Test against Python 2.7.
  132. [mbaechtold]
  133. - Test against Python 3.4.
  134. [pope1ni]
  135. 3.0.2 (2017-11-21)
  136. ------------------
  137. - Added form_invalid decorator. Fixes #265
  138. [camilonova]
  139. 3.0.1 (2017-11-17)
  140. ------------------
  141. - Fix DeprecationWarning for logger warning
  142. [richardowen]
  143. - Fixes global lockout possibility
  144. [joeribekker]
  145. - Changed the way output is handled in the management commands
  146. [ataylor32]
  147. 3.0.0 (2017-11-17)
  148. ------------------
  149. - BREAKING CHANGES. Support for Django >= 1.11 and signals, see issue #215.
  150. Drop support for Python < 3.6
  151. [camilonova]
  152. 2.3.3 (2017-07-20)
  153. ------------------
  154. - Many tweaks and handles successful AJAX logins.
  155. [Jack Sullivan]
  156. - Add tests for proxy number parametrization
  157. [aleksihakli]
  158. - Add AXES_NUM_PROXIES setting
  159. [aleksihakli]
  160. - Log failed access attempts regardless of settings
  161. [jimr]
  162. - Updated configuration docs to include AXES_IP_WHITELIST
  163. [Minkey27]
  164. - Add test for get_cache_key function
  165. [jorlugaqui]
  166. - Delete cache key in reset command line
  167. [jorlugaqui]
  168. - Add signals for setting/deleting cache keys
  169. [jorlugaqui]
  170. 2.3.2 (2016-11-24)
  171. ------------------
  172. - Only look for lockable users on a POST
  173. [schinckel]
  174. - Fix and add tests for IPv4 and IPv6 parsing
  175. [aleksihakli]
  176. 2.3.1 (2016-11-12)
  177. ------------------
  178. - Added settings for disabling success accesslogs
  179. [Minkey27]
  180. - Fixed illegal IP address string passed to inet_pton
  181. [samkuehn]
  182. 2.3.0 (2016-11-04)
  183. ------------------
  184. - Fixed ``axes_reset`` management command to skip "ip" prefix to command
  185. arguments.
  186. [EvaMarques]
  187. - Added ``axes_reset_user`` management command to reset lockouts and failed
  188. login records for given users.
  189. [vladimirnani]
  190. - Fixed Travis-PyPI release configuration.
  191. [jezdez]
  192. - Make IP position argument optional.
  193. [aredalen]
  194. - Added possibility to disable access log
  195. [svenhertle]
  196. - Fix for IIS used as reverse proxy adding port number
  197. [Dmitri-Sintsov]
  198. - Made the signal race condition safe.
  199. [Minkey27]
  200. - Added AXES_ONLY_USER_FAILURES to support only looking at the user ID.
  201. [lip77us]
  202. 2.2.0 (2016-07-20)
  203. ------------------
  204. - Improve the logic when using a reverse proxy to avoid possible attacks.
  205. [camilonova]
  206. 2.1.0 (2016-07-14)
  207. ------------------
  208. - Add `default_app_config` so you can just use `axes` in `INSTALLED_APPS`
  209. [vdboor]
  210. 2.0.0 (2016-06-24)
  211. ------------------
  212. - Removed middleware to use app_config
  213. [camilonova]
  214. - Lots of cleaning
  215. [camilonova]
  216. - Improved test suite and versions
  217. [camilonova]
  218. 1.7.0 (2016-06-10)
  219. ------------------
  220. - Use render shortcut for rendering LOCKOUT_TEMPLATE
  221. [Radosław Luter]
  222. - Added app_label for RemovedInDjango19Warning
  223. [yograterol]
  224. - Add iso8601 translator.
  225. [mullakhmetov]
  226. - Edit json response. Context now contains ISO 8601 formatted cooloff time
  227. [mullakhmetov]
  228. - Add json response and iso8601 tests.
  229. [mullakhmetov]
  230. - Fixes issue 162: UnicodeDecodeError on pip install
  231. [joeribekker]
  232. - Added AXES_NEVER_LOCKOUT_WHITELIST option to prevent certain IPs from being locked out.
  233. [joeribekker]
  234. 1.6.1 (2016-05-13)
  235. ------------------
  236. - Fixes whitelist check when BEHIND_REVERSE_PROXY
  237. [Patrick Hagemeister]
  238. - Made migrations py3 compatible
  239. [mvdwaeter]
  240. - Fixing #126, possibly breaking compatibility with Django<=1.7
  241. [int-ua]
  242. - Add note for upgrading users about new migration files
  243. [kelseyq]
  244. - Fixes #148
  245. [camilonova]
  246. - Decorate auth_views.login only once
  247. [teeberg]
  248. - Set IP public/private classifier to be compliant with RFC 1918.
  249. [SilasX]
  250. - Issue #155. Lockout response status code changed to 403.
  251. [Артур Муллахметов]
  252. - BUGFIX: Missing migration
  253. [smeinel]
  254. 1.6.0 (2016-01-07)
  255. ------------------
  256. - Stopped using render_to_response so that other template engines work
  257. [tarkatronic]
  258. - Improved performance & DoS prevention on query2str
  259. [tarkatronic]
  260. - Immediately return from is_already_locked if the user is not lockable
  261. [jdunck]
  262. - Iterate over ip addresses only once
  263. [annp89]
  264. - added initial migration files to support django 1.7 &up. Upgrading users should run migrate --fake-initial after update
  265. [ibaguio]
  266. - Add db indexes to CommonAccess model
  267. [Schweigi]
  268. 1.5.0 (2015-09-11)
  269. ------------------
  270. - Fix #_get_user_attempts to include username when filtering AccessAttempts if AXES_LOCK_OUT_BY_COMBINATION_USER_AND_IP is True
  271. [afioca]
  272. 1.4.0 (2015-08-09)
  273. ------------------
  274. - Send the user_locked_out signal. Fixes #94.
  275. [toabi]
  276. 1.3.9 (2015-02-11)
  277. ------------------
  278. - Python 3 fix (#104)
  279. 1.3.8 (2014-10-07)
  280. ------------------
  281. - Rename GitHub organization from django-security to django-pci to emphasize focus on providing assistance with building PCI compliant websites with Django.
  282. [aclark4life]
  283. 1.3.7 (2014-10-05)
  284. ------------------
  285. - Explain common issues where Axes fails silently
  286. [cericoda]
  287. - Allow for user-defined username field for lookup in POST data
  288. [SteveByerly]
  289. - Log out only if user was logged in
  290. [zoten]
  291. - Support for floats in cooloff time (i.e: 0.1 == 6 minutes)
  292. [marianov]
  293. - 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.
  294. [peterkuma]
  295. - Improve get_ip to try for real ip address
  296. [7wonders]
  297. - 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.
  298. [polvoblanco]
  299. - Get first X-Forwarded-For IP
  300. [tutumcloud]
  301. - 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.
  302. [ericbulloch]
  303. - 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.
  304. [eht16]
  305. - Limit the length of the values logged into the database. Refs #73
  306. [camilonova]
  307. - Refactored tests to be more stable and faster
  308. [camilonova]
  309. - Clean client references
  310. [camilonova]
  311. - Fixed admin login url
  312. [camilonova]
  313. - Added django 1.7 for testing
  314. [camilonova]
  315. - Travis file cleanup
  316. [camilonova]
  317. - Remove hardcoded url path
  318. [camilonova]
  319. - Fixing tests for django 1.7
  320. [Andrew-Crosio]
  321. - Fix for django 1.7 exception not existing
  322. [Andrew-Crosio]
  323. - Removed python 2.6 from testing
  324. [camilonova]
  325. - Use django built-in six version
  326. [camilonova]
  327. - Added six as requirement
  328. [camilonova]
  329. - Added python 2.6 for travis testing
  330. [camilonova]
  331. - Replaced u string literal prefixes with six.u() calls
  332. [amrhassan]
  333. - Fixes object type issue, response is not an string
  334. [camilonova]
  335. - Python 3 compatibility fix for db_reset
  336. [nicois]
  337. - Added example project and helper scripts
  338. [barseghyanartur]
  339. - Admin command to list login attemps
  340. [marianov]
  341. - Replaced six imports with django.utils.six ones
  342. [amrhassan]
  343. - Replaced u string literal prefixes with six.u() calls to make it compatible with Python 3.2
  344. [amrhassan]
  345. - Replaced `assertIn`s and `assertNotIn`s with `assertContains` and `assertNotContains`
  346. [fcurella]
  347. - Added py3k to travis
  348. [fcurella]
  349. - Update test cases to be python3 compatible
  350. [nicois]
  351. - Python 3 compatibility fix for db_reset
  352. [nicois]
  353. - Removed trash from example urls
  354. [barseghyanartur]
  355. - Added django installer
  356. [barseghyanartur]
  357. - Added example project and helper scripts
  358. [barseghyanartur]
  359. 1.3.6 (2013-11-23)
  360. ------------------
  361. - Added AttributeError in case get_profile doesn't exist [camilonova]
  362. - Improved axes_reset command [camilonova]
  363. 1.3.5 (2013-11-01)
  364. ------------------
  365. - Fix an issue with __version__ loading the wrong version [graingert]
  366. 1.3.4 (2013-11-01)
  367. ------------------
  368. - Update README.rst for PyPI [marty] [camilonova] [graingert]
  369. - Add cooloff period [visualspace]
  370. 1.3.3 (2013-07-05)
  371. ------------------
  372. - Added 'username' field to the Admin table [bkvirendra]
  373. - 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]
  374. 1.3.2 (2013-03-28)
  375. ------------------
  376. - Fix an issue when a user logout [camilonova]
  377. - Match pypi version [camilonova]
  378. - Better User model import method [camilonova]
  379. - Use only one place to get the version number [camilonova]
  380. - Fixed an issue when a user on django 1.4 logout [camilonova]
  381. - Handle exception if there is not user profile model set [camilonova]
  382. - Made some cleanup and remove a pokemon exception handling [camilonova]
  383. - Improved tests so it really looks for the rabbit in the hole [camilonova]
  384. - Match pypi version [camilonova]
  385. 1.3.1 (2013-03-19)
  386. ------------------
  387. - Add support for Django 1.5 [camilonova]
  388. 1.3.0 (2013-02-27)
  389. ------------------
  390. - Bug fix: get_version() format string [csghormley]
  391. 1.2.9 (2013-02-20)
  392. ------------------
  393. - Add to and improve test cases [camilonova]
  394. 1.2.8 (2013-01-23)
  395. ------------------
  396. - Increased http accept header length [jslatts]
  397. 1.2.7 (2013-01-17)
  398. ------------------
  399. - Reverse proxy support [rmagee]
  400. - Clean up README [martey]
  401. 1.2.6 (2012-12-04)
  402. ------------------
  403. - Remove unused import [aclark4life]
  404. 1.2.5 (2012-11-28)
  405. ------------------
  406. - Fix setup.py [aclark4life]
  407. - Added ability to flag user accounts as unlockable. [kencochrane]
  408. - Added ipaddress as a param to the user_locked_out signal. [kencochrane]
  409. - Added a signal receiver for user_logged_out. [kencochrane]
  410. - Added a signal for when a user gets locked out. [kencochrane]
  411. - Added AccessLog model to log all access attempts. [kencochrane]