Ejemplo n.º 1
0
def track_event(category=None, action=None, label=None, value=None, identifier=None, first_use=None, add=None,
                noninteraction=True):
    anonymousConfig = Config()
    anonymousConfig.anonimize_ip_address = True

    tracker = Tracker('UA-86466078-1', 'none', conf=anonymousConfig)
    visitor = Visitor()

    # convert the last 8 bytes of the machine identifier to an integer to get a "unique" user
    visitor.unique_id = struct.unpack("!I", binascii.unhexlify(identifier[32:]))[0]/2

    if add:
        # add visitor's ip address (will be anonymized)
        visitor.ip_address = add

    if first_use:
        visitor.first_visit_time = first_use

    session = Session()
    event = Event(category=category, action=action, label=label, value=value, noninteraction=noninteraction)
    path = u"/" + u"/".join([category, action, label])
    page = Page(path.lower())

    tracker.track_event(event, session, visitor)
    tracker.track_pageview(page, session, visitor)
Ejemplo n.º 2
0
def index():
    # Users identity
    user_id = request.headers.get('X-Mxit-USERID-R', 'dev').encode('utf-8')
    user_nick = request.form.get('X-Mxit-ID-R', 'avoid3d')

    visitor = Visitor()
    visitor.ip_address = request.headers.get('X-Forwarded-For', '127.0.0.1')
    ga_session = Session()

    # User's msg to cleverbot
    text = request.args.get('input', None)

    msgs = ['Welcome to chatterbot! Say Hello?']
    page = Page('/')

    if text:
        page = Page('/chat/')
        # Attempt to fetch a session for the user.
        session = client.get(user_id)
        if not session:
            session = cleverbot.Session()
            session.msgs = []

        session.msgs.append('%s: %s' % (user_nick, text))
        reply = session.Ask(text)
        session.msgs.append('bot: %s' % reply)

        client.set(user_id, session)
        msgs = session.msgs[-10:]

    tracker.track_pageview(page, ga_session, visitor)
    return render_template('index.html', msgs=msgs, Markup=Markup)
Ejemplo n.º 3
0
def detail():
    try:
        voice_one   = r.hgetall('+254711082306')
        voice_two   = r.hgetall('+254711082513')
        voice_three = r.hgetall('+254711082514')

        visitor = Visitor()
        visitor.ip_address = request.remote_addr
        session = Session()
        page = Page('/detail')
        event = Event('convertion', 'call') # category - action
        tracker.track_pageview(page, session, visitor)

        tracker.track_event(event, session, visitor)

        data = [voice_one, voice_two, voice_three]

        print data

        resp = make_response(render_template('detail.html', data=data))
        resp.cache_control.no_cache = True
        return resp
    except Exception, e:
        logging.warning('failed on detail route')
        raise e
Ejemplo n.º 4
0
        def send_ga_data():
            try:
                tracker = Tracker(self._ga_id, self._ga_force_host or request.host)
                session = Session()
                page = Page(request.path)
                visitor = Visitor()
                visitor.ip_address = request.remote_addr

                self.send_data_to_gaserver(tracker, 'track_pageview', (page, session, visitor))
            except Exception, e:
                current_app.logger.error('exception occur. msg[%s], traceback[%s]', str(e), __import__('traceback').format_exc())
Ejemplo n.º 5
0
def ping():
    """ping back to ga"""
    if not ga_account:
        return

    tracker = Tracker(ga_account, ga_domain)
    visitor = Visitor()
    visitor.ip_address = request.remote_addr
    session = Session()
    page = Page(request.path)
    if 'referer' in request.headers:
        page.referrer = request.headers['referer']
    tracker.track_pageview(page, session, visitor)
Ejemplo n.º 6
0
def ping():
    """ping back to ga"""
    if not ga_account:
        return

    tracker = Tracker(ga_account, ga_domain)
    visitor = Visitor()
    visitor.ip_address = request.remote_addr
    session = Session()
    page = Page(request.path)
    if "referer" in request.headers:
        page.referrer = request.headers["referer"]
    tracker.track_pageview(page, session, visitor)
Ejemplo n.º 7
0
    def process_request(self, request):
        if settings.GA_ENABLED:
            ip = request.META["REMOTE_ADDR"]
            if request.META.has_key("CF-Connecting-IP"):
                ip = request.META["CF-Connecting-IP"]

            tracker = Tracker(settings.GA_KEY, request.META["HTTP_HOST"])
            visitor = Visitor()
            visitor.ip_address = ip
            session = Session()
            page = Page(request.path)
            tracker.track_pageview(page, session, visitor)

        return None
Ejemplo n.º 8
0
    def process_request(self, request):
        if settings.GA_ENABLED:
            ip = request.META["REMOTE_ADDR"]
            if request.META.has_key("CF-Connecting-IP"):
                ip = request.META["CF-Connecting-IP"]

            tracker = Tracker(settings.GA_KEY, request.META["HTTP_HOST"])
            visitor = Visitor()
            visitor.ip_address = ip
            session = Session()
            page = Page(request.path)
            tracker.track_pageview(page, session, visitor)

        return None
Ejemplo n.º 9
0
    def ga_track(self, settings, event={}):
        _req_list = []
        no_tracking = self.get_argument('no_tracking', None)
        is_prod = settings.ga_is_prod
        if not no_tracking and is_prod and settings.ga_account:
            _req = self.request
            remote_ip = _req.headers.get("X-Real-Ip",
                        _req.headers.get("X-Forwarded-For",
                        _req.remote_ip))
            user_agent = _req.headers.get("User-Agent", None)
            visitor = Visitor()
            visitor.ip_address = remote_ip
            visitor.user_agent = user_agent
            #get visitor.locale
            visitor.extract_from_server_meta(
                {"HTTP_ACCEPT_LANGUAGE": _req.headers.get("Accept-Language", None)}
            )
            session = Session()
            page = Page(_req.path)
            tracker = Tracker(settings.ga_account, settings.ga_tracker_url)
            # tracker.track_pageview(page, session, visitor)  #this is non-async request
            pvr = PageViewRequest(config=tracker.config,
                                  tracker=tracker,
                                  visitor=visitor,
                                  session=session,
                                  page=page)
            r = pvr.build_http_request()
            _req_list.append(HTTPRequest(r.get_full_url(),
                                         "POST" if (r.data) else "GET",
                                         headers=r.headers,
                                         body=r.data))
            if event:
                evt = Event(**event)
                #tracker.track_event(evt, session, visitor)  #this is non-async request
                er = EventRequest(config=tracker.config,
                                  tracker=tracker,
                                  visitor=visitor,
                                  session=session,
                                  event=evt)
                r = er.build_http_request()
                _req_list.append(HTTPRequest(r.get_full_url(),
                                             "POST" if (r.data) else "GET",
                                             headers=r.headers,
                                             body=r.data))

            #now send actual async requests
            http_client = AsyncHTTPClient()
            for _req in _req_list:
                http_client.fetch(_req)
Ejemplo n.º 10
0
    def ga_track(self, event={}):
        _req_list = []
        no_tracking = self.get_argument('no_tracking', None)
        is_prod = getattr(config, 'RUN_IN_PROD', False)
        if not no_tracking and is_prod and hasattr(config, "GA_ACCOUNT"):
            _req = self.request
            remote_ip = _req.headers.get("X-Real-Ip",
                        _req.headers.get("X-Forwarded-For",
                        _req.remote_ip))
            user_agent = _req.headers.get("User-Agent", None)
            visitor = Visitor()
            visitor.ip_address = remote_ip
            visitor.user_agent = user_agent
            #get visitor.locale
            visitor.extract_from_server_meta(
                {"HTTP_ACCEPT_LANGUAGE": _req.headers.get("Accept-Language", None)}
            )
            session = Session()
            page = Page(_req.path)
            tracker = Tracker(config.GA_ACCOUNT, 'MyVariant.info')
            # tracker.track_pageview(page, session, visitor)  #this is non-async request
            pvr = PageViewRequest(config=tracker.config,
                                  tracker=tracker,
                                  visitor=visitor,
                                  session=session,
                                  page=page)
            r = pvr.build_http_request()
            _req_list.append(HTTPRequest(r.get_full_url(),
                                         "POST" if (r.data) else "GET",
                                         headers=r.headers,
                                         body=r.data))
            if event:
                evt = Event(**event)
                #tracker.track_event(evt, session, visitor)  #this is non-async request
                er = EventRequest(config=tracker.config,
                                  tracker=tracker,
                                  visitor=visitor,
                                  session=session,
                                  event=evt)
                r = er.build_http_request()
                _req_list.append(HTTPRequest(r.get_full_url(),
                                             "POST" if (r.data) else "GET",
                                             headers=r.headers,
                                             body=r.data))

            #now send actual async requests
            http_client = AsyncHTTPClient()
            for _req in _req_list:
                http_client.fetch(_req)
Ejemplo n.º 11
0
    def middleware(request):
        if ga_id is not False:
            tracker = Tracker(ga_id, request.headers['Host'])
            visitor = Visitor()
            visitor.ip_address = request.META.get('REMOTE_ADDR')
            if request.headers['User-Agent']:
                visitor.user_agent = request.headers['User-Agent']
            session = Session()
            path = request.path
            if request.META.get('QUERY_STRING'):
                path = f"{request.path}?{request.META.get('QUERY_STRING')}"
            page = Page(path)
            page.title = request.path
            tracker.track_pageview(page, session, visitor)

        response = get_response(request)
        return response
Ejemplo n.º 12
0
def log_traffic(request):
    if not google_analytics:
        return
    url = urlparse(request.base_url)

    pyga_tracker = Tracker(google_analytics, url.hostname)

    pyga_visitor = Visitor()
    pyga_visitor.ip_address = request.access_route[0]
    pyga_visitor.user_agent = request.headers.get('User-Agent')
    user_locals = []
    if 'Accept-Language' in request.headers:
        al = request.headers.get('Accept-Language')
        if al is not None:
            matched_locales = utils.validate_locale(al)
            if matched_locales:
                lang_lst = map((lambda x: x.replace('-', '_')),
                               (i[1] for i in matched_locales))
                quality_lst = map(
                    (lambda x: x and x or 1),
                    (float(i[4] and i[4] or '0') for i in matched_locales))
                lang_quality_map = map((lambda x, y: (x, y)), lang_lst,
                                       quality_lst)
                user_locals = [
                    x[0] for x in sorted(
                        lang_quality_map, key=itemgetter(1), reverse=True)
                ]
    if user_locals:
        pyga_visitor.locale = user_locals[0]

    pyga_session = Session()

    pyga_page = Page(url.path)
    pyga_page.referrer = request.headers.get('Referer')

    logger.info('Logging GA traffic from %s to host %s with page %s',
                pyga_visitor.ip_address, url.hostname, url.path)

    try:
        pyga_tracker.track_pageview(pyga_page, pyga_session, pyga_visitor)
    except URLError:
        logger.warn('Unable to connect to analytics')
    except:
        logger.error('Analytics logging failed')
        logger.error(sys.exc_info())
Ejemplo n.º 13
0
def view(viewId):
    try:
        shuffle(PHONE_NUMBERS)
        url = '/view/' + viewId

        # r.hset(url, 'phoneNumber', PHONE_NUMBERS[0])
        # r.hset(url, 'location', 'location')

        visitor = Visitor()
        visitor.ip_address = request.remote_addr
        session = Session()
        page = Page('/view/' + viewId )

        event = Event('convertion', 'call-initiated') # category - action
        tracker.track_pageview(page, session, visitor)

        tracker.track_event(event, session, visitor)

        resp = make_response(render_template('view.html', phoneNumber=PHONE_NUMBERS[0]))
        resp.cache_control.no_cache = True
        return resp
    except Exception, e:
        logging.warning('failed on view route')
        raise e
Ejemplo n.º 14
0
#!/usr/bin/python
from pyga.requests import Tracker, Page, Session, Visitor
import random
import time

tracker = Tracker('UA-7848481-1', 'apocalypsebag.com')

quant = random.randint(10, 100)
ips = ['46.21.16.10', '5.83.240.190', '31.6.128.445', '58.99.64.32', '49.128.32.22']

cnt = 1
while cnt < quant:
    ip = ips[random.randint(0, 4)]
    uri = '/'
    #print "page request %d of %d for %s from %s" % (cnt, quant, uri, ip)

    visitor = Visitor()
    visitor.ip_address = ip
    session = Session()
    page = Page(uri)
    tracker.track_pageview(page, session, visitor)

    cnt += 1
    time.sleep(random.randint(4, 10))
Ejemplo n.º 15
0
from pyga.requests import Tracker, Page, Session, Visitor, Event

tracker = Tracker('UA-78705248-1', 'http://127.0.0.1:8080')

visitor = Visitor()
visitor.ip_address = '194.54.176.12'
session = Session()
page = Page('/call')

event = Event('convertion', 'call') # category - action
tracker.track_pageview(page, session, visitor)
tracker.track_event(event, session, visitor)
Ejemplo n.º 16
0
def complete_process(request, backend, *args, **kwargs):
    """Authentication complete process"""
    # pop redirect value before the session is trashed on login()
    redirect_value = request.session.get(REDIRECT_FIELD_NAME, '') or \
                     request.REQUEST.get(REDIRECT_FIELD_NAME, '')

    if GA_ID:
        ga_tracker = Tracker(GA_ID, request.META.get('HTTP_HOST', ""))
        utmz = request.COOKIES.get("__utmz")
        if utmz:
            try:
                campaign = Campaign()
                campaign.extract_from_utmz(utmz)
                ga_tracker.campaign = campaign
            except:
                pass
        ga_visitor = Visitor()
        try:
            ga_visitor.extract_from_utma(request.COOKIES.get("__utma",""))
        except:
            pass
        ga_visitor.ip_address = request.META.get('REMOTE_ADDR')
        ga_session = Session()
        try:
            ga_session.extract_from_utmb(request.COOKIES.get("__utmb"))
        except:
            pass
    else:
        ga_tracker = None

    # Django 1.5 allow us to define custom User Model, so integrity errors
    # can be raised.
    try:
        user = auth_complete(request, backend, *args, **kwargs)
    except IntegrityError:
        try:
            if ga_tracker:
                ga_tracker.track_event(Event("Logins",backend.AUTH_BACKEND.name+"CompleteError",
                                       request.build_absolute_uri()),
                                       ga_session, ga_visitor)
        except:
            pass
        url = setting('SIGNUP_ERROR_URL', setting('LOGIN_ERROR_URL'))
        return HttpResponseRedirect(url)

    if isinstance(user, HttpResponse):
        return user

    if not user and request.user.is_authenticated():
        return HttpResponseRedirect(redirect_value)

    msg = None
    

    if user:
        if getattr(user, 'is_active', True):
            # catch is_new flag before login() might reset the instance
            is_new = getattr(user, 'is_new', False)
            login(request, user)
            # user.social_user is the used UserSocialAuth instance defined
            # in authenticate process
            social_user = user.social_user
            if redirect_value:
                request.session[REDIRECT_FIELD_NAME] = redirect_value or \
                                                       DEFAULT_REDIRECT

            if setting('SOCIAL_AUTH_SESSION_EXPIRATION', True):
                # Set session expiration date if present and not disabled by
                # setting. Use last social-auth instance for current provider,
                # users can associate several accounts with a same provider.
                expiration = social_user.expiration_datetime()
                if expiration:
                    try:
                        request.session.set_expiry(expiration)
                    except OverflowError:
                        # Handle django time zone overflow, set default expiry.
                        request.session.set_expiry(None)

            # store last login backend name in session
            key = setting('SOCIAL_AUTH_LAST_LOGIN',
                          'social_auth_last_login_backend')
            request.session[key] = social_user.provider

            # Remove possible redirect URL from session, if this is a new
            # account, send him to the new-users-page if defined.
            new_user_redirect = backend_setting(backend,
                                           'SOCIAL_AUTH_NEW_USER_REDIRECT_URL')
            if new_user_redirect and is_new:
                url = new_user_redirect
            else:
                url = redirect_value or \
                      backend_setting(backend,
                                      'SOCIAL_AUTH_LOGIN_REDIRECT_URL') or \
                      DEFAULT_REDIRECT
            if ga_tracker:
                ga_tracker.track_event(Event("Logins",backend.AUTH_BACKEND.name+"Complete",
                                   request.build_absolute_uri()),
                                   ga_session, ga_visitor)
        else:
            msg = setting('SOCIAL_AUTH_INACTIVE_USER_MESSAGE', None)
            url = backend_setting(backend, 'SOCIAL_AUTH_INACTIVE_USER_URL',
                                  LOGIN_ERROR_URL)
    else:
        msg = setting('LOGIN_ERROR_MESSAGE', None)
        url = backend_setting(backend, 'LOGIN_ERROR_URL', LOGIN_ERROR_URL)
        if ga_tracker:
            ga_tracker.track_event(Event("Logins",backend.AUTH_BACKEND.name+"CompleteError",
                               request.build_absolute_uri()),
                               ga_session, ga_visitor)
    if msg:
        messages.error(request, msg)

    if redirect_value and redirect_value != url:
        redirect_value = quote(redirect_value)
        if '?' in url:
            url += '&%s=%s' % (REDIRECT_FIELD_NAME, redirect_value)
        else:
            url += '?%s=%s' % (REDIRECT_FIELD_NAME, redirect_value)
    return HttpResponseRedirect(url)