예제 #1
0
파일: broker.py 프로젝트: r3boot/blacklist
class Broker:
	def __init__(self):
		self.config = Config()
		self.context = zmq.Context()
		self.broker = self.context.socket(zmq.REQ)
		self.broker.connect(self.config["blacklist.broker"])
		self.encryption = Encryption(self.config["blacklist.api.psk"])

	def request_dispatcher(self, action):
		data = {
			"username":	self.config["username"],
			"password":	self.config["password"],
			"random":	random.random()*time.mktime(datetime.datetime.timetuple(datetime.datetime.now()))
		}

		data["action"] = action
		self.broker.send(self.encryption.encrypt(data))
		return self.encryption.decrypt(self.broker.recv())

	def update_listings(self):
		return self.request_dispatcher("update_listings")

	def update_whitelistings(self):
		return self.request_dispatcher("update_whitelistings")

	def update_rules(self):
		return self.request_dispatcher("update_rules")
예제 #2
0
파일: key.py 프로젝트: jesk78/blacklist
class Key(BaseBackend):
    name = "Key"

    def __init__(self):
        BaseBackend.__init__(self, models.Key)
        self.config = Config()
        self.encryption = Encryption(self.config["blacklist.keystore.psk"])

    def get(self, *args, **kwargs):
        (result, keydata) = BaseBackend.get(self, name=kwargs["name"])
        if result:
            keydata.data = self.encryption.decrypt(keydata.data)
        return (result, keydata)

    def add(self, *args, **kwargs):
        if self.has(name=kwargs["name"]):
            return (False, "Key already exists")

        data = self.encryption.encrypt(kwargs["data"])
        key = models.Key(
            name=kwargs["name"],
            data=data,
        )
        key.save()
        return self.get(name=kwargs["name"])
class Broker:
    def __init__(self):
        self.config = Config()
        self.context = zmq.Context()
        self.broker = self.context.socket(zmq.REQ)
        self.broker.connect(self.config["blacklist.broker"])
        self.encryption = Encryption(self.config["blacklist.api.psk"])

    def request_dispatcher(self, action):
        data = {
            "username":
            self.config["username"],
            "password":
            self.config["password"],
            "random":
            random.random() *
            time.mktime(datetime.datetime.timetuple(datetime.datetime.now()))
        }

        data["action"] = action
        self.broker.send(self.encryption.encrypt(data))
        return self.encryption.decrypt(self.broker.recv())

    def update_listings(self):
        return self.request_dispatcher("update_listings")

    def update_whitelistings(self):
        return self.request_dispatcher("update_whitelistings")

    def update_rules(self):
        return self.request_dispatcher("update_rules")
예제 #4
0
파일: key.py 프로젝트: r3boot/blacklist
class Key(BaseBackend):
	name = "Key"
	def __init__(self):
		BaseBackend.__init__(self, models.Key)
		self.config = Config()
		self.encryption  = Encryption(self.config["blacklist.keystore.psk"])

	def get(self, *args, **kwargs):
		(result, keydata) = BaseBackend.get(self, name=kwargs["name"])
		if result:
			keydata.data = self.encryption.decrypt(keydata.data)
		return (result, keydata)

	def add(self, *args, **kwargs):
		if self.has(name=kwargs["name"]):
			return (False, "Key already exists")

		data = self.encryption.encrypt(kwargs["data"])
		key = models.Key(
			name=kwargs["name"],
			data=data,
		)
		key.save()
		return self.get(name=kwargs["name"])
예제 #5
0
파일: key.py 프로젝트: jesk78/blacklist
 def __init__(self):
     BaseBackend.__init__(self, models.Key)
     self.config = Config()
     self.encryption = Encryption(self.config["blacklist.keystore.psk"])
예제 #6
0
파일: key.py 프로젝트: r3boot/blacklist
	def __init__(self):
		BaseBackend.__init__(self, models.Key)
		self.config = Config()
		self.encryption  = Encryption(self.config["blacklist.keystore.psk"])
예제 #7
0
파일: peering.py 프로젝트: r3boot/blacklist
	def __init__(self):
		BaseBackend.__init__(self, models.Peering)
		self.config = Config()
		self.encryption = Encryption(self.config["blacklist.keystore.psk"])
		self.ipcalc = IPCalc()
		self.netdata = NetData()
예제 #8
0
파일: peering.py 프로젝트: r3boot/blacklist
class Peering(BaseBackend):
	name = "Peering"
	def __init__(self):
		BaseBackend.__init__(self, models.Peering)
		self.config = Config()
		self.encryption = Encryption(self.config["blacklist.keystore.psk"])
		self.ipcalc = IPCalc()
		self.netdata = NetData()

	#@transaction.commit_manually
	def bulk_import(self, import_data):
		t_start = mktime(datetime.now().timetuple())
		data = []
		failed = []
		num_failed = 0
		for entry in import_data:
			if entry[0] == "":
				num_failed += 1
				failed.append(entry)
				continue
			tmp = {}

			try:
				user = User.objects.get(username=entry[3])
			except User.DoesNotExist:
				user = User(username=entry[3])
				user.save()

			try:
				asnum = models.ASNum.objects.get(asnum=entry[1])
			except models.ASNum.DoesNotExist:
				## TODO: fix unknown RIR
				asnum = models.ASNum(
					asnum=entry[1],
					rir=models.RIR.objects.get(name="RIPE")
				)
				asnum.save()

			(asn, asn_name, whois_data, net, cc) = self.netdata.get_whois_data(entry[0])

			try:
				country = models.Country.objects.get(code=cc)
			except models.Country.DoesNotExist:
				country = models.Country(code=cc, name=cc)
				country.save()

			try:
				asnum = models.ASNum.objects.get(asnum=asn)
			except models.ASNum.DoesNotExist:
				asnum = models.ASNum(
					asnum=asnum,
					name=asn_name,
					whois_data=whois_data,
					country=country,
				)
				asnum.save()

			(n, m) = net.split("/")
			try:
				subnet = models.Subnet.objects.get(subnet=self.ipcalc.dqtoi(n))
			except models.Subnet.DoesNotExist:
				subnet = models.Subnet(
					subnet=self.ipcalc.dqtoi(n),
					mask=m,
					name=asn_name,
					asnum=asnum,
				)
				subnet.save()

			try:
				ip = models.IP.objects.get(ip=self.ipcalc.dqtoi(entry[0]))
			except models.IP.DoesNotExist:
				ip = models.IP(
					ip=self.ipcalc.dqtoi(entry[0]),
					subnet=subnet,
				)
				ip.save()

			try:
				peer = models.Host.objects.get(hostname=entry[2])
			except models.Host.DoesNotExist:
				peer = models.Host(
					hostname=entry[2],
					ip=ip,
					owner=user,
				)
				peer.save()

			try:
				key = models.Key.objects.get(name="%s-bgp" % (entry[2]))
			except models.Key.DoesNotExist:
				key = models.Key(
					name="%s-bgp" % (entry[2]),
					data=self.encryption.encrypt(entry[4])
				)
				key.save()

			tmp["peer"] = peer
			tmp["asnum"] = asnum
			tmp["owner"] = user
			tmp["key"] = key
			data.append(tmp)
		for entry in data:
			peering = models.Peering(
				peer=entry["peer"],
				asnum=entry["asnum"],
				user=entry["owner"],
				key=entry["key"]
			)
			peering.save()

		#transaction.commit()
		#reset_queries()
		t_end = mktime(datetime.now().timetuple())
		return (t_end - t_start, num_failed, failed)
예제 #9
0
 def __init__(self):
     BaseBackend.__init__(self, models.Peering)
     self.config = Config()
     self.encryption = Encryption(self.config["blacklist.keystore.psk"])
     self.ipcalc = IPCalc()
     self.netdata = NetData()
예제 #10
0
class Peering(BaseBackend):
    name = "Peering"

    def __init__(self):
        BaseBackend.__init__(self, models.Peering)
        self.config = Config()
        self.encryption = Encryption(self.config["blacklist.keystore.psk"])
        self.ipcalc = IPCalc()
        self.netdata = NetData()

    #@transaction.commit_manually
    def bulk_import(self, import_data):
        t_start = mktime(datetime.now().timetuple())
        data = []
        failed = []
        num_failed = 0
        for entry in import_data:
            if entry[0] == "":
                num_failed += 1
                failed.append(entry)
                continue
            tmp = {}

            try:
                user = User.objects.get(username=entry[3])
            except User.DoesNotExist:
                user = User(username=entry[3])
                user.save()

            try:
                asnum = models.ASNum.objects.get(asnum=entry[1])
            except models.ASNum.DoesNotExist:
                ## TODO: fix unknown RIR
                asnum = models.ASNum(asnum=entry[1],
                                     rir=models.RIR.objects.get(name="RIPE"))
                asnum.save()

            (asn, asn_name, whois_data, net,
             cc) = self.netdata.get_whois_data(entry[0])

            try:
                country = models.Country.objects.get(code=cc)
            except models.Country.DoesNotExist:
                country = models.Country(code=cc, name=cc)
                country.save()

            try:
                asnum = models.ASNum.objects.get(asnum=asn)
            except models.ASNum.DoesNotExist:
                asnum = models.ASNum(
                    asnum=asnum,
                    name=asn_name,
                    whois_data=whois_data,
                    country=country,
                )
                asnum.save()

            (n, m) = net.split("/")
            try:
                subnet = models.Subnet.objects.get(subnet=self.ipcalc.dqtoi(n))
            except models.Subnet.DoesNotExist:
                subnet = models.Subnet(
                    subnet=self.ipcalc.dqtoi(n),
                    mask=m,
                    name=asn_name,
                    asnum=asnum,
                )
                subnet.save()

            try:
                ip = models.IP.objects.get(ip=self.ipcalc.dqtoi(entry[0]))
            except models.IP.DoesNotExist:
                ip = models.IP(
                    ip=self.ipcalc.dqtoi(entry[0]),
                    subnet=subnet,
                )
                ip.save()

            try:
                peer = models.Host.objects.get(hostname=entry[2])
            except models.Host.DoesNotExist:
                peer = models.Host(
                    hostname=entry[2],
                    ip=ip,
                    owner=user,
                )
                peer.save()

            try:
                key = models.Key.objects.get(name="%s-bgp" % (entry[2]))
            except models.Key.DoesNotExist:
                key = models.Key(name="%s-bgp" % (entry[2]),
                                 data=self.encryption.encrypt(entry[4]))
                key.save()

            tmp["peer"] = peer
            tmp["asnum"] = asnum
            tmp["owner"] = user
            tmp["key"] = key
            data.append(tmp)
        for entry in data:
            peering = models.Peering(peer=entry["peer"],
                                     asnum=entry["asnum"],
                                     user=entry["owner"],
                                     key=entry["key"])
            peering.save()

        #transaction.commit()
        #reset_queries()
        t_end = mktime(datetime.now().timetuple())
        return (t_end - t_start, num_failed, failed)
예제 #11
0
파일: broker.py 프로젝트: r3boot/blacklist
	def __init__(self):
		self.config = Config()
		self.context = zmq.Context()
		self.broker = self.context.socket(zmq.REQ)
		self.broker.connect(self.config["blacklist.broker"])
		self.encryption = Encryption(self.config["blacklist.api.psk"])
예제 #12
0
from django.contrib.auth import authenticate
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import RequestContext

from blacklist.common.api import API
from blacklist.common.config import Config
from blacklist.common.encryption import Encryption

import datetime
import random
import time

config = Config()
api = API()
enc = Encryption(config["blacklist.api.psk"])


def dispatch(request, data):
    response = {
        "result":
        False,
        "data":
        None,
        "random":
        random.random() *
        time.mktime(datetime.datetime.timetuple(datetime.datetime.now()))
    }

    try:
        data = enc.decrypt(data)
 def __init__(self):
     self.config = Config()
     self.context = zmq.Context()
     self.broker = self.context.socket(zmq.REQ)
     self.broker.connect(self.config["blacklist.broker"])
     self.encryption = Encryption(self.config["blacklist.api.psk"])