示例#1
0
 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
示例#2
0
    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