aiwaf 0.1.9.0.9__tar.gz → 0.1.9.1.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.

Potentially problematic release.


This version of aiwaf might be problematic. Click here for more details.

Files changed (39) hide show
  1. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/PKG-INFO +1 -1
  2. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/__init__.py +1 -1
  3. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/storage.py +21 -2
  4. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf.egg-info/PKG-INFO +1 -1
  5. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/pyproject.toml +1 -1
  6. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/setup.py +1 -1
  7. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/LICENSE +0 -0
  8. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/README.md +0 -0
  9. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/apps.py +0 -0
  10. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/blacklist_manager.py +0 -0
  11. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/decorators.py +0 -0
  12. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/__init__.py +0 -0
  13. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/__init__.py +0 -0
  14. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/add_exemption.py +0 -0
  15. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/add_ipexemption.py +0 -0
  16. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/aiwaf_diagnose.py +0 -0
  17. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/aiwaf_logging.py +0 -0
  18. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/aiwaf_reset.py +0 -0
  19. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/clear_cache.py +0 -0
  20. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/debug_csv.py +0 -0
  21. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/detect_and_train.py +0 -0
  22. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/diagnose_blocking.py +0 -0
  23. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/regenerate_model.py +0 -0
  24. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/setup_models.py +0 -0
  25. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/test_exemption.py +0 -0
  26. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/management/commands/test_exemption_fix.py +0 -0
  27. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/middleware.py +0 -0
  28. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/middleware_logger.py +0 -0
  29. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/models.py +0 -0
  30. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/resources/model.pkl +0 -0
  31. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/templatetags/__init__.py +0 -0
  32. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/templatetags/aiwaf_tags.py +0 -0
  33. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/trainer.py +0 -0
  34. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf/utils.py +0 -0
  35. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf.egg-info/SOURCES.txt +0 -0
  36. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf.egg-info/dependency_links.txt +0 -0
  37. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf.egg-info/requires.txt +0 -0
  38. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/aiwaf.egg-info/top_level.txt +0 -0
  39. {aiwaf-0.1.9.0.9 → aiwaf-0.1.9.1.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiwaf
3
- Version: 0.1.9.0.9
3
+ Version: 0.1.9.1.0
4
4
  Summary: AI-powered Web Application Firewall
5
5
  Home-page: https://github.com/aayushgauba/aiwaf
6
6
  Author: Aayush Gauba
@@ -1,6 +1,6 @@
1
1
  default_app_config = "aiwaf.apps.AiwafConfig"
2
2
 
3
- __version__ = "0.1.9.0.9"
3
+ __version__ = "0.1.9.1.0"
4
4
 
5
5
  # Note: Middleware classes are available from aiwaf.middleware
6
6
  # Import them only when needed to avoid circular imports during Django app loading
@@ -116,6 +116,11 @@ class ModelBlacklistStore:
116
116
  """Remove IP from blacklist (alias for unblock_ip)"""
117
117
  ModelBlacklistStore.unblock_ip(ip)
118
118
 
119
+ @staticmethod
120
+ def add_ip(ip, reason="Automated block"):
121
+ """Add IP to blacklist (alias for block_ip)"""
122
+ ModelBlacklistStore.block_ip(ip, reason)
123
+
119
124
  @staticmethod
120
125
  def get_all_blocked_ips():
121
126
  """Get all blocked IPs"""
@@ -189,7 +194,7 @@ class ModelExemptionStore:
189
194
 
190
195
  class ModelKeywordStore:
191
196
  @staticmethod
192
- def add_keyword(keyword):
197
+ def add_keyword(keyword, count=1):
193
198
  """Add a keyword to the dynamic keyword list"""
194
199
  _import_models()
195
200
  if DynamicKeyword is None:
@@ -197,11 +202,25 @@ class ModelKeywordStore:
197
202
  try:
198
203
  obj, created = DynamicKeyword.objects.get_or_create(keyword=keyword)
199
204
  if not created:
200
- obj.count += 1
205
+ obj.count += count
206
+ obj.save()
207
+ else:
208
+ obj.count = count
201
209
  obj.save()
202
210
  except Exception as e:
203
211
  print(f"Error adding keyword {keyword}: {e}")
204
212
 
213
+ @staticmethod
214
+ def remove_keyword(keyword):
215
+ """Remove a keyword from the dynamic keyword list"""
216
+ _import_models()
217
+ if DynamicKeyword is None:
218
+ return
219
+ try:
220
+ DynamicKeyword.objects.filter(keyword=keyword).delete()
221
+ except Exception as e:
222
+ print(f"Error removing keyword {keyword}: {e}")
223
+
205
224
  @staticmethod
206
225
  def get_top_keywords(n=10):
207
226
  """Get top N keywords by count"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiwaf
3
- Version: 0.1.9.0.9
3
+ Version: 0.1.9.1.0
4
4
  Summary: AI-powered Web Application Firewall
5
5
  Home-page: https://github.com/aayushgauba/aiwaf
6
6
  Author: Aayush Gauba
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "aiwaf"
3
- version = "0.1.9.0.9"
3
+ version = "0.1.9.1.0"
4
4
  description = "AI-powered Web Application Firewall"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.8"
@@ -9,7 +9,7 @@ long_description = (HERE / "README.md").read_text(encoding="utf-8")
9
9
 
10
10
  setup(
11
11
  name="aiwaf",
12
- version="0.1.9.0.9",
12
+ version="0.1.9.1.0",
13
13
  description="AI‑driven, self‑learning Web Application Firewall for Django",
14
14
  long_description=long_description,
15
15
  long_description_content_type="text/markdown",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes