Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
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)
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()
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 = []
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))
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:
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()