utils.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import random
  2. import string
  3. from desecapi.models import Domain, User, Token
  4. class utils(object):
  5. @classmethod
  6. def generateRandomIPv4Address(cls):
  7. return ".".join(map(str, (random.randint(0, 255) for _ in range(4))))
  8. @classmethod
  9. def generateRandomString(cls, size=6, chars=string.ascii_lowercase + string.digits):
  10. return ''.join(random.choice(chars) for _ in range(size))
  11. @classmethod
  12. def generateUsername(cls):
  13. return cls.generateRandomString() + '@' + cls.generateRandomString() + 'desec.io'
  14. @classmethod
  15. def generateDomainname(cls):
  16. return random.choice(string.ascii_lowercase) + cls.generateRandomString() + '.de'
  17. @classmethod
  18. def generateDynDomainname(cls):
  19. return random.choice(string.ascii_lowercase) + cls.generateRandomString() + '.dedyn.io'
  20. """
  21. Creates a new user and saves it to the database.
  22. The user object is returned.
  23. """
  24. @classmethod
  25. def createUser(cls, username=None, password=None, dyn=False):
  26. if username is None:
  27. username = cls.generateUsername()
  28. user = User(email=username, dyn=dyn)
  29. user.plainPassword = cls.generateRandomString(size=12) if password is None else password
  30. user.set_password(user.plainPassword)
  31. user.save()
  32. return user
  33. """
  34. Creates a new domain and saves it to the database.
  35. The domain object is returned.
  36. """
  37. @classmethod
  38. def createDomain(cls, owner=None, dyn=False):
  39. if owner is None:
  40. owner = cls.createUser(username=None, dyn=False)
  41. if dyn:
  42. name = cls.generateDynDomainname()
  43. else:
  44. name = cls.generateDomainname()
  45. domain = Domain(name=name, owner=owner)
  46. domain.save()
  47. return domain
  48. @classmethod
  49. def createToken(cls, user):
  50. token = Token.objects.create(user=user)
  51. token.save();
  52. return token.key;