Skip to content

Commit e69080f

Browse files
author
evilcel3ri
committed
Creating Workspace and bookmarks page
This work prepares Pithus for the Workspace section discussed in the January 2022 meeting. * Renames the path `my_rules` to `workspace` and the appropriate paths * Created a model called Bookmarks stored in the DB * Bookmarks are show in the Workspace section * Each report has a bookmark button, only the hash and the user ID are stored in the DB for the bookmarks
1 parent 9f9fc2b commit e69080f

File tree

13 files changed

+718
-173
lines changed

13 files changed

+718
-173
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Generated by Django 3.2.4 on 2021-11-24 15:34
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('sites', '0003_set_site_domain_and_name'),
10+
]
11+
12+
operations = [
13+
migrations.AlterModelOptions(
14+
name='site',
15+
options={'ordering': ['domain'], 'verbose_name': 'site', 'verbose_name_plural': 'sites'},
16+
),
17+
]
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Generated by Django 3.2.4 on 2021-11-24 15:34
2+
3+
import bazaar.core.models
4+
from django.conf import settings
5+
from django.db import migrations, models
6+
import django.db.models.deletion
7+
import uuid
8+
9+
10+
class Migration(migrations.Migration):
11+
12+
dependencies = [
13+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
14+
('core', '0004_auto_20210305_1346'),
15+
]
16+
17+
operations = [
18+
migrations.AlterField(
19+
model_name='yara',
20+
name='content',
21+
field=models.TextField(help_text='Paste the content of your Yara rule', validators=[bazaar.core.models.check_yara_rule]),
22+
),
23+
migrations.AlterField(
24+
model_name='yara',
25+
name='title',
26+
field=models.CharField(help_text='The fancy name of your Yara rule', max_length=256),
27+
),
28+
migrations.CreateModel(
29+
name='Bookmark',
30+
fields=[
31+
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
32+
('sample', models.CharField(max_length=256)),
33+
('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
34+
],
35+
),
36+
]
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Generated by Django 3.2.4 on 2022-04-29 16:17
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('core', '0005_auto_20211124_1534'),
10+
('core', '0005_auto_20220125_1346'),
11+
]
12+
13+
operations = [
14+
]

bazaar/core/models.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
1+
import uuid
2+
13
import yara
24
from django.conf import settings
35
from django.core.exceptions import ValidationError
46
from django.db import models
5-
import uuid
6-
7+
from django.db.models.expressions import F
78
from elasticsearch import Elasticsearch
89

910

11+
class Bookmark(models.Model):
12+
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
13+
sample = models.CharField(max_length=256)
14+
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
15+
16+
@staticmethod
17+
def get_es_index(user):
18+
es_index = f'bookmark_user_{user.id}'
19+
return es_index
20+
21+
1022
def check_yara_rule(rule):
1123
try:
1224
yara.compile(source=rule)

bazaar/front/urls.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,26 @@
11
from django.urls import path
22

3-
from bazaar.front.view import HomeView, ReportView, basic_upload_view, similarity_search_view, export_report_view, \
4-
download_sample_view, my_rules_view, my_rule_edit_view, my_rule_create_view, my_rule_delete_view, og_card_view, \
5-
my_retrohunt_view, get_andgrocfg_code, get_genom, basic_url_download_view
3+
from bazaar.front.view import (
4+
HomeView,
5+
ReportView,
6+
add_bookmark_sample_view,
7+
basic_upload_view,
8+
basic_url_download_view,
9+
download_sample_view,
10+
export_report_view,
11+
get_andgrocfg_code,
12+
get_genom,
13+
my_retrohunt_view,
14+
my_rule_create_view,
15+
my_rule_delete_view,
16+
my_rule_edit_view,
17+
my_rules_view,
18+
og_card_view,
19+
remove_bookmark_sample_view,
20+
similarity_search_view,
21+
workspace_view,
22+
)
23+
624

725
app_name = "front"
826
urlpatterns = [
@@ -15,11 +33,13 @@
1533
path("apk/<str:sha256>", view=download_sample_view, name="download_sample"),
1634
path("similar/", view=similarity_search_view, name="similarity_search"),
1735
path("similar/<str:sha256>", view=similarity_search_view, name="similarity_search"),
18-
path("rules/", view=my_rules_view, name="my_rules"),
36+
path("workspace/", view=workspace_view, name="workspace"),
1937
path("rules/new", view=my_rule_create_view, name="my_rule_create"),
2038
path("rules/<str:uuid>/edit", view=my_rule_edit_view, name="my_rule_edit"),
2139
path("rules/<str:uuid>/delete", view=my_rule_delete_view, name="my_rule_delete"),
2240
path("rules/<str:uuid>/retro", view=my_retrohunt_view, name="my_rule_retro"),
2341
path("androcfg/<str:sha256>/<path:foo>", view=get_andgrocfg_code, name="get_andgrocfg_code"),
24-
path("androcfg/all", view=get_genom, name="get_genom")
42+
path("androcfg/all", view=get_genom, name="get_genom"),
43+
path("apk/<str:sha256>/bookmark/add", view=add_bookmark_sample_view, name="add_bookmark_sample"),
44+
path("apk/<str:sha256>/bookmark/remove", view=remove_bookmark_sample_view, name="remove_bookmark_sample")
2545
]

0 commit comments

Comments
 (0)