Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 
 

37 righe
1.1 KiB

  1. # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. # MIT License. See license.txt
  3. from __future__ import unicode_literals
  4. import hmac
  5. import urllib
  6. import webnotes
  7. from webnotes.utils import cstr
  8. def get_url(params, nonce, secret=None):
  9. signature = get_signature(params, nonce, secret)
  10. params['signature'] = signature
  11. return ''.join([webnotes.local.request.url_root, '?', urllib.urlencode(params)])
  12. def get_signature(params, nonce, secret=None):
  13. params = "".join((cstr(p) for p in params))
  14. if not secret:
  15. secret = webnotes.local.conf.get("secret") or "secret"
  16. signature = hmac.new(str(nonce))
  17. signature.update(secret)
  18. signature.update(params)
  19. return signature.hexdigest()
  20. def verify_using_bean(bean, signature, cmd):
  21. controller = bean.get_controller()
  22. params = controller.get_signature_params()
  23. params["cmd"] = cmd
  24. return signature == get_signature(params, controller.get_nonce())
  25. def get_url_using_bean(bean, cmd):
  26. controller = bean.get_controller()
  27. params = controller.get_signature_params()
  28. params["cmd"] = cmd
  29. return get_url(params, controller.get_nonce())