bans.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import random
  2. from datetime import timedelta
  3. from django.utils import timezone
  4. from ..users.models import Ban
  5. def get_fake_username_ban(fake):
  6. ban = _create_base_ban(fake, Ban.USERNAME)
  7. banned_value = fake.first_name()
  8. if random.randint(0, 100) < 31:
  9. banned_value = "%s*" % banned_value
  10. elif random.randint(0, 100) < 31:
  11. banned_value = "*%s" % banned_value
  12. elif random.randint(0, 100) < 31:
  13. banned_value = list(banned_value)
  14. banned_value.insert(random.randint(0, len(banned_value) - 1), "*")
  15. banned_value = "".join(banned_value)
  16. ban.banned_value = banned_value
  17. ban.save()
  18. return ban
  19. def get_fake_email_ban(fake):
  20. ban = _create_base_ban(fake, Ban.EMAIL)
  21. if random.randint(0, 100) < 35:
  22. ban.banned_value = "*@%s" % fake.domain_name()
  23. else:
  24. ban.banned_value = fake.email()
  25. ban.save()
  26. return ban
  27. def get_fake_ip_ban(fake):
  28. ban = _create_base_ban(fake, Ban.IP)
  29. if random.randint(0, 1):
  30. banned_value = fake.ipv4()
  31. if random.randint(0, 100) < 35:
  32. banned_value = banned_value.split(".")
  33. banned_value = ".".join(banned_value[: random.randint(1, 3)])
  34. banned_value = "%s.*" % banned_value
  35. elif random.randint(0, 100) < 35:
  36. banned_value = banned_value.split(".")
  37. banned_value = ".".join(banned_value[random.randint(1, 3) :])
  38. banned_value = "*.%s" % banned_value
  39. elif random.randint(0, 100) < 35:
  40. banned_value = banned_value.split(".")
  41. banned_value[random.randint(0, 3)] = "*"
  42. banned_value = ".".join(banned_value)
  43. else:
  44. banned_value = fake.ipv6()
  45. if random.randint(0, 100) < 35:
  46. banned_value = banned_value.split(":")
  47. banned_value = ":".join(banned_value[: random.randint(1, 7)])
  48. banned_value = "%s:*" % banned_value
  49. elif random.randint(0, 100) < 35:
  50. banned_value = banned_value.split(":")
  51. banned_value = ":".join(banned_value[: random.randint(1, 7)])
  52. banned_value = "*:%s" % banned_value
  53. elif random.randint(0, 100) < 35:
  54. banned_value = banned_value.split(":")
  55. banned_value[random.randint(0, 7)] = "*"
  56. banned_value = ":".join(banned_value)
  57. ban.banned_value = banned_value
  58. ban.save()
  59. return ban
  60. def _create_base_ban(fake, ban_type):
  61. ban = Ban(check_type=ban_type)
  62. if random.randint(0, 10) == 0:
  63. ban.user_message = fake.sentence()
  64. if random.randint(0, 10) == 0:
  65. ban.staff_message = fake.sentence()
  66. if random.randint(0, 1):
  67. # Lets make ban temporary
  68. ban_length = timedelta(days=random.randint(0, 300))
  69. if random.randint(0, 1):
  70. ban.valid_until = timezone.now().date() - ban_length
  71. else:
  72. ban.valid_until = timezone.now().date() + ban_length
  73. return ban