Example #1
0
    def on_status(self, status):
        if status.text.startswith('@bgpranking AS'):
            asn = status.text.strip('@bgpranking AS')
            try:
                int(asn)
            except:
                print status.text
                return
            msg_id = status.id
            sender = status.user.screen_name
            dates_sources = bgpranking.prepare_sources_by_dates(timeframe=5)
            ranks = bgpranking.get_all_ranks_single_asn(asn, dates_sources)
            to_post = '@{user}: {asn}\n'.format(user=sender, asn=asn)
            dates = sorted(ranks.keys(), reverse=True)
            for date in dates:
                info = ranks[date]
                to_post += '{date}: {rank}\n'.format(date=date,
                                                     rank=round(
                                                         1 + info['total'], 4))
            to_post += base_asn_address + asn
            api.update_status(to_post, msg_id)
        elif status.text.startswith('@bgpranking IP'):
            ip = status.text.strip('@bgpranking IP')
            try:
                IPy.IP(ip)
            except:
                print status.text
                return
            msg_id = status.id
            sender = status.user.screen_name
            info = bgpranking.get_ip_info(ip, 10)
            to_post_short = '@{user}: {ip}: http://bgpranking.circl.lu/ip_lookup?ip={ip}'.format(
                user=sender, ip=ip)
            if len(info['history']) > 0:
                latest_data = info['history'][0]
                template = '\n{asn} - {block}: {base_asn_url}{asn};ip_details={block}\n{descr}'
                descr = latest_data['descriptions'][0][1]
                if len(descr) > 40:
                    descr = 'Too Long for Twitter.'
                to_post = to_post_short + template.format(
                    asn=latest_data['asn'],
                    base_asn_url=base_asn_address,
                    block=latest_data['block'],
                    descr=descr)
            try:
                api.update_status(to_post, msg_id)
            except:
                api.update_status(to_post_short, msg_id)

        else:
            print status.text
    def on_status(self, status):
        if status.text.startswith('@bgpranking AS'):
            asn = status.text.strip('@bgpranking AS')
            try:
                int(asn)
            except:
                print status.text
                return
            msg_id = status.id
            sender = status.user.screen_name
            dates_sources = bgpranking.prepare_sources_by_dates(timeframe=5)
            ranks = bgpranking.get_all_ranks_single_asn(asn, dates_sources)
            to_post = '@{user}: {asn}\n'.format(user=sender, asn=asn)
            dates = sorted(ranks.keys(), reverse=True)
            for date in dates:
                info = ranks[date]
                to_post += '{date}: {rank}\n'.format(date=date,rank=round(1+info['total'], 4))
            to_post += base_asn_address + asn
            api.update_status(to_post, msg_id)
        elif status.text.startswith('@bgpranking IP'):
            ip = status.text.strip('@bgpranking IP')
            try:
                IPy.IP(ip)
            except:
                print status.text
                return
            msg_id = status.id
            sender = status.user.screen_name
            info = bgpranking.get_ip_info(ip, 10)
            to_post_short = '@{user}: {ip}: http://bgpranking.circl.lu/ip_lookup?ip={ip}'.format(user=sender, ip=ip)
            if len(info['history']) > 0:
                latest_data = info['history'][0]
                template = '\n{asn} - {block}: {base_asn_url}{asn};ip_details={block}\n{descr}'
                descr = latest_data['descriptions'][0][1]
                if len(descr) > 40:
                    descr = 'Too Long for Twitter.'
                to_post = to_post_short + template.format(asn=latest_data['asn'],
                        base_asn_url=base_asn_address,
                        block=latest_data['block'], descr=descr)
            try:
                api.update_status(to_post, msg_id)
            except:
                api.update_status(to_post_short, msg_id)

        else:
            print status.text
Example #3
0
#!/usr/bin/python
# -*- coding: utf-8 -*-

import redis
import bgpranking
import os
from csv import writer

csv_dir = os.path.join('..', '..', 'website', 'data', 'csv')

if __name__ == '__main__':

    r = redis.Redis(unix_socket_path='./redis_export.sock')
    interval = int(r.get('interval_size'))
    dates_sources = bgpranking.prepare_sources_by_dates(None, interval)
    while True:
        asn = r.spop('asns')
        if asn is None:
            break
        filename = os.path.join(csv_dir, asn)
        with open(filename, 'w') as csvfile:
            w = writer(csvfile)
            w.writerow(['day', 'rank'])
            ranks = bgpranking.get_all_ranks_single_asn(asn, dates_sources)
            for date, entry in ranks.iteritems():
                w.writerow([date, 1 + entry['total']])