Files
agentic-soc-platform/backend/apps/settings/models.py

159 lines
5.7 KiB
Python

import uuid
from django.db import models
class LLMProviderConfig(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=100, unique=True)
base_url = models.URLField(max_length=500)
model = models.CharField(max_length=200)
api_key = models.TextField(blank=True, default="")
proxy = models.CharField(max_length=500, blank=True, default="")
tags = models.JSONField(default=list, blank=True)
enabled = models.BooleanField(default=True)
priority = models.PositiveIntegerField(default=100)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "setting_llm_provider_configs"
ordering = ["priority", "name", "created_at"]
def __str__(self):
return self.name
class ThreatIntelAlienVaultOTXConfig(models.Model):
singleton_id = models.PositiveSmallIntegerField(default=1, unique=True, editable=False)
enabled = models.BooleanField(default=False)
api_key = models.TextField(blank=True, default="")
base_url = models.URLField(max_length=500, default="https://otx.alienvault.com/api/v1")
proxy = models.CharField(max_length=500, blank=True, default="")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "setting_ti_alienvault_otx_config"
def __str__(self):
return "AlienVault OTX"
@classmethod
def get_current(cls):
instance, _ = cls.objects.get_or_create(singleton_id=1)
return instance
class ThreatIntelOpenCTIConfig(models.Model):
singleton_id = models.PositiveSmallIntegerField(default=1, unique=True, editable=False)
enabled = models.BooleanField(default=False)
url = models.URLField(max_length=500, default="http://localhost:8080")
token = models.TextField(blank=True, default="")
ssl_verify = models.BooleanField(default=False)
proxy = models.CharField(max_length=500, blank=True, default="")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "setting_ti_opencti_config"
def __str__(self):
return "OpenCTI"
@classmethod
def get_current(cls):
instance, _ = cls.objects.get_or_create(singleton_id=1)
return instance
class SiemSplunkConfig(models.Model):
singleton_id = models.PositiveSmallIntegerField(default=1, unique=True, editable=False)
host = models.CharField(max_length=255, blank=True, default="")
port = models.PositiveIntegerField(default=8089)
username = models.CharField(max_length=255, blank=True, default="")
password = models.TextField(blank=True, default="")
scheme = models.CharField(max_length=10, default="https")
verify = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "setting_siem_splunk_config"
def __str__(self):
return "Splunk"
@classmethod
def get_current(cls):
instance, _ = cls.objects.get_or_create(singleton_id=1)
return instance
class SiemElkConfig(models.Model):
singleton_id = models.PositiveSmallIntegerField(default=1, unique=True, editable=False)
host = models.URLField(max_length=500, blank=True, default="")
api_key = models.TextField(blank=True, default="")
verify_certs = models.BooleanField(default=False)
process_alert_from_index_enabled = models.BooleanField(default=False)
action_index = models.CharField(max_length=255, blank=True, default="siem-alert")
action_poll_interval_seconds = models.PositiveIntegerField(default=60)
action_size = models.PositiveIntegerField(default=1000)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "setting_siem_elk_config"
def __str__(self):
return "ELK"
@classmethod
def get_current(cls):
instance, _ = cls.objects.get_or_create(singleton_id=1)
return instance
class LdapConfig(models.Model):
singleton_id = models.PositiveSmallIntegerField(default=1, unique=True, editable=False)
enabled = models.BooleanField(default=False)
server_uri = models.CharField(max_length=500, blank=True, default="")
domain = models.CharField(max_length=255, blank=True, default="")
bind_dn = models.CharField(max_length=500, blank=True, default="")
bind_password = models.TextField(blank=True, default="")
user_search_base_dn = models.CharField(max_length=500, blank=True, default="")
user_login_attr = models.CharField(max_length=100, default="uid")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "setting_ldap_config"
def __str__(self):
return "LDAP"
@classmethod
def get_current(cls):
instance, _ = cls.objects.get_or_create(singleton_id=1)
return instance
class RuntimeConfig(models.Model):
singleton_id = models.PositiveSmallIntegerField(default=1, unique=True, editable=False)
prompt_language = models.CharField(max_length=10, default="en")
stream_maxlen = models.PositiveIntegerField(default=10000)
dashboard_refresh_interval_seconds = models.PositiveIntegerField(default=300)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "setting_runtime_config"
def __str__(self):
return "Runtime"
@classmethod
def get_current(cls):
instance, _ = cls.objects.get_or_create(singleton_id=1)
return instance