def __GetPBK(self, pin): salt = AddonSettings.GetClientId() pbk = pyscrypt.hash(password=pin, salt=salt, N=2 ** 7, # should be so that Raspberry Pi can handle it # N=1024, r=1, p=1, dkLen=32) Logger.Trace("Generated PBK with MD5: %s", hashlib.md5(pbk).hexdigest()) return pbk
def __RegisterHit(category, action, label, value=None, referer=None): """ Register an event with Google Analytics @param category: String - Name of category to register @param action: String - Name of action to register @param value: String - Value of action to register @param label: String - The label for the event @param value: int - The value for the event (Defaults to None) @param referer: String - The referer (Defaults to None) See: https://ga-dev-tools.appspot.com/hit-builder/ v=1&t=event&tid=UA-3902785-1&cid=3c8961be-6a53-48f6-bded-d136760ab55f&ec=Test&ea=Test%20Action&el=Test%20%5Blabel)&ev=100 """ try: if not AddonSettings.SendUsageStatistics(): Logger.Debug( "Not sending statistics because the configuration does not allow this." ) return postData = { "v": 1, "t": "event", "tid": Config.googleAnalyticsId, "cid": AddonSettings.GetClientId(), "ec": HtmlEntityHelper.UrlEncode(category), # "ec": HtmlEntityHelper.UrlEncode("Test"), "ea": HtmlEntityHelper.UrlEncode( HtmlEntityHelper.ConvertHTMLEntities(action)), "el": HtmlEntityHelper.UrlEncode( HtmlEntityHelper.ConvertHTMLEntities(label)), } if value is not None: postData["ev"] = value if referer is not None: if "://" not in referer: referer = "http://%s" % (referer, ) postData["dr"] = HtmlEntityHelper.UrlEncode(referer) url = "http://www.google-analytics.com/collect" data = "" for k, v in postData.iteritems(): data += "%s=%s&" % (k, v) data = data.rstrip("&") # url = "http://www.rieter.net/net.rieter.xot.usage/%s/%s/?rnd=%s" % (action, value, rnd) Logger.Debug("Sending statistics: %s", data) # now we need something async without caching userAgent = AddonSettings.GetUserAgent() if userAgent: result = UriHandler.Open( url, additionalHeaders={"User-Agent": userAgent}, params=data, noCache=True) else: result = UriHandler.Open(url, params=data, noCache=True) if len(result) > 0: Logger.Debug( "Statistics were successfully sent. Content Length: %d", len(result)) else: Logger.Warning("Statistics were not successfully sent") except: # we should never ever fail here Logger.Warning("Cannot send statistics", exc_info=True) return