tasks.py 1.67 KB
Newer Older
1 2 3 4 5 6 7 8
from celery.task import Task, PeriodicTask
import celery
from django.core.cache import cache
from firewall.fw import *
import django.conf

settings = django.conf.settings.FIREWALL_SETTINGS

9

10 11 12
@celery.task
def reload_dns_task(data):
    pass
13 14


15 16 17
@celery.task
def reload_firewall_task(data4, data6):
    pass
18 19


20 21 22
@celery.task
def reload_dhcp_task(data):
    pass
23 24


25 26 27 28
@celery.task
def reload_blacklist_task(data):
    pass

29

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
class Periodic(PeriodicTask):
    run_every = timedelta(seconds=10)

    def run(self, **kwargs):

        if cache.get('dns_lock'):
            cache.delete("dns_lock")
            reload_dns_task.delay(dns())
            print "dns ujratoltese kesz"

        if cache.get('dhcp_lock'):
            cache.delete("dhcp_lock")
            reload_dhcp_task.delay(dhcp())
            print "dhcp ujratoltese kesz"

        if cache.get('firewall_lock'):
            cache.delete("firewall_lock")
            ipv4 = Firewall().get()
            ipv6 = Firewall(True).get()
            reload_firewall_task.delay(ipv4, ipv6)
            print "firewall ujratoltese kesz"

        if cache.get('blacklist_lock'):
            cache.delete("blacklist_lock")
            reload_blacklist_task.delay(list(ipset()))
            print "blacklist ujratoltese kesz"

57

58 59 60
class ReloadTask(Task):
    def run(self, type='Host'):

61
        if type in ["Host", "Record", "Domain", "Vlan"]:
62 63 64 65 66 67 68 69 70 71 72 73
            cache.add("dns_lock", "true", 30)

        if type == "Host":
            cache.add("dhcp_lock", "true", 30)

        if type in ["Host", "Rule", "Firewall"]:
            cache.add("firewall_lock", "true", 30)

        if type == "Blacklist":
            cache.add("blacklist_lock", "true", 30)

        print type