A copyright violation detector running on Wikimedia Cloud Services https://tools.wmflabs.org/copyvios/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

преди 12 години
преди 12 години
преди 12 години
преди 10 години
преди 12 години
преди 12 години
преди 10 години
преди 12 години
преди 10 години
преди 12 години
преди 12 години
преди 12 години
преди 12 години
преди 12 години
преди 12 години
преди 12 години
преди 12 години
преди 12 години
преди 12 години
преди 12 години
преди 12 години
преди 12 години
преди 10 години
преди 12 години
преди 12 години
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # -*- coding: utf-8 -*-
  2. import base64
  3. from Cookie import CookieError, SimpleCookie
  4. from datetime import datetime, timedelta
  5. from flask import g
  6. __all__ = ["parse_cookies", "set_cookie", "delete_cookie"]
  7. class _CookieManager(SimpleCookie):
  8. MAGIC = "--cpv2"
  9. def __init__(self, path, cookies):
  10. self._path = path
  11. try:
  12. super(_CookieManager, self).__init__(cookies)
  13. except CookieError:
  14. super(_CookieManager, self).__init__()
  15. for cookie in self.keys():
  16. if self[cookie].value is False:
  17. del self[cookie]
  18. def value_decode(self, value):
  19. unquoted = super(_CookieManager, self).value_decode(value)[0]
  20. try:
  21. decoded = base64.b64decode(unquoted).decode("utf8")
  22. except (TypeError, UnicodeDecodeError):
  23. return False, "False"
  24. if decoded.startswith(self.MAGIC):
  25. return decoded[len(self.MAGIC):], value
  26. return False, "False"
  27. def value_encode(self, value):
  28. encoded = base64.b64encode(self.MAGIC + value.encode("utf8"))
  29. quoted = super(_CookieManager, self).value_encode(encoded)[1]
  30. return value, quoted
  31. @property
  32. def path(self):
  33. return self._path
  34. def parse_cookies(path, cookies):
  35. return _CookieManager(path, cookies)
  36. def set_cookie(key, value, days=0):
  37. g.cookies[key] = value
  38. if days:
  39. expire_dt = datetime.utcnow() + timedelta(days=days)
  40. expires = expire_dt.strftime("%a, %d %b %Y %H:%M:%S GMT")
  41. g.cookies[key]["expires"] = expires
  42. g.cookies[key]["path"] = g.cookies.path
  43. g.new_cookies.append(g.cookies[key].OutputString())
  44. def delete_cookie(key):
  45. set_cookie(key, u"", days=-1)
  46. del g.cookies[key]