How to use the rules.models.Category.objects.filter function in rules

To help you get started, we’ve selected a few rules examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github StamusNetworks / scirius / rules / models.py View on Github external
os.fsync(f)
        shutil.copy(f.name, os.path.join(rules_dir, 'sigs.rules'))

        index = repo.index
        if len(index.diff(None)) or self.first_run:
            os.environ['USERNAME'] = 'scirius'
            index.add(["rules"])
            message =  'source version at %s' % (self.updated_date)
            index.commit(message)

        self.save()
        # Now we must update SourceAtVersion for this source
        # or create it if needed
        self.create_sourceatversion()
        # category based on filename
        category = Category.objects.filter(source = self, name = ('%s Sigs' % (self.name))[:100])
        if not category:
            category = Category.objects.create(source = self,
                                    name = ('%s Sigs' % (self.name))[:100], created_date = timezone.now(),
                                    filename = os.path.join('rules', 'sigs.rules'))
            category.get_rules(self)
        else:
            category[0].get_rules(self)
github StamusNetworks / scirius / rules / models.py View on Github external
for rule in Rule.objects.all().prefetch_related('category'):
            existing_rules_hash[rule.sid] = rule
        for f in os.listdir(os.path.join(source_git_dir, 'rules')):
            if f.endswith('.rules'):
                match = catname.search(f)
                name = match.groups()[0]
                category = Category.objects.filter(source = self, name = name)
                if not category:
                    category = Category.objects.create(source = self,
                                            name = name, created_date = timezone.now(),
                                            filename = os.path.join('rules', f))
                else:
                    category = category[0]
                category.get_rules(self, existing_rules_hash = existing_rules_hash)
                # get rules in this category
        for category in Category.objects.filter(source = self):
            if not os.path.isfile(os.path.join(source_git_dir, category.filename)):
                category.delete()
github StamusNetworks / scirius / rules / views.py View on Github external
else:
                return scirius_render(request, 'rules/edit_ruleset.html', {'ruleset': ruleset, 'error': 'Invalid form.', 'form': form})

        msg = """All changes are saved. Don't forget to update the ruleset to apply the changes.
                 After the ruleset Update the changes would be updated on the probe(s) upon the next Ruleset Push"""

        messages.success(request, msg)

        return redirect(ruleset)
    else:
        cats_selection = []
        categories_list = {}
        sources = ruleset.sources.all()
        ruleset_cats = ruleset.categories.all()
        for sourceatversion in sources:
            src_cats = Category.objects.filter(source = sourceatversion.source)
            for pcats in src_cats:
                if pcats in ruleset_cats:
                    cats_selection.append(unicode(pcats.id))
            cats = EditCategoryTable(src_cats)
            tables.RequestConfig(request,paginate = False).configure(cats)
            categories_list[sourceatversion.source.name] = cats
        rules = EditRuleTable(ruleset.get_transformed_rules(key=SUPPRESSED, value=S_SUPPRESSED))
        tables.RequestConfig(request, paginate = False).configure(rules)

        context = {'ruleset': ruleset,  'categories_list': categories_list, 'sources': sources, 'rules': rules, 'cats_selection': ", ".join(cats_selection) }
        if request.GET.has_key('mode'):
            context['mode'] = request.GET['mode']
            context['form'] = CommentForm()
            if context['mode'] == 'sources':
                all_sources = SourceAtVersion.objects.all()
                sources_selection = []
github StamusNetworks / scirius / rules / management / commands / disablecategory.py View on Github external
def handle(self, *args, **options):
        name = options['ruleset']
        catname = options['category']
        
        try:
            ruleset = Ruleset.objects.filter(name = ruleset)
            ruleset = ruleset[0]
        except:
            raise CommandError("No ruleset with name '%s' is defined" % (ruleset))
        try:
            categories = Category.objects.filter(name = catname)
        except:
            raise CommandError("No Category is defined")
        for cat in categories:
            ruleset.categories.remove(cat)
        ruleset.save()
        self.stdout.write('Successfully removed "%s" from ruleset "%s"' % (catname, ruleset))
github StamusNetworks / scirius / rules / views.py View on Github external
return scirius_render(request, 'rules/add_source.html', { 'error': 'Unsufficient permissions' })

    if request.method == 'POST': # If the form has been submitted...
        form = SourceForm(request.POST, request.FILES, instance=source)
        try:
            if source.method == 'local' and request.FILES.has_key('file'):
                categories = Category.objects.filter(source = source)
                firstimport = False
                if not categories:
                    firstimport = True
                source.new_uploaded_file(request.FILES['file'], firstimport)

            form.save()

            if source.datatype == 'sig':
                categories = Category.objects.filter(source=source)
                firstimport = False if len(categories) > 0 else True

                if 'name' in form.changed_data and firstimport is False:
                    category = categories[0]  # sig => one2one source/category
                    category.name = '%s Sigs' % form.cleaned_data['name']
                    category.save()

            UserAction.create(
                    action_type='edit_source',
                    comment=form.cleaned_data['comment'],
                    user=request.user,
                    source=source
            )

            return redirect(source)
        except Exception as e:
github StamusNetworks / scirius / rules / models.py View on Github external
def get_categories(self):
        source_git_dir = os.path.join(settings.GIT_SOURCES_BASE_DIRECTORY, unicode(self.pk))
        catname = re.compile("(.+)\.rules$")
        existing_rules_hash = {}
        for rule in Rule.objects.all().prefetch_related('category'):
            existing_rules_hash[rule.sid] = rule
        for f in os.listdir(os.path.join(source_git_dir, 'rules')):
            if f.endswith('.rules'):
                match = catname.search(f)
                name = match.groups()[0]
                category = Category.objects.filter(source = self, name = name)
                if not category:
                    category = Category.objects.create(source = self,
                                            name = name, created_date = timezone.now(),
                                            filename = os.path.join('rules', f))
                else:
                    category = category[0]
                category.get_rules(self, existing_rules_hash = existing_rules_hash)
                # get rules in this category
        for category in Category.objects.filter(source = self):
            if not os.path.isfile(os.path.join(source_git_dir, category.filename)):
                category.delete()