Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
99cfc07
fix[frontend](app_settings): added GMT+12 and daylight saving options…
AlexSanchez-bit Oct 16, 2025
afd0b4f
fix[frontend](web_console): sanitized password parameter to admit all…
AlexSanchez-bit Oct 16, 2025
932e802
feat[backend](api-keys): added api keys dto, controllers and entities
AlexSanchez-bit Oct 17, 2025
ec75a02
feat[backend](api_keys): added api keys
AlexSanchez-bit Oct 17, 2025
545ac09
feat(api_keys): create api_keys table with user_id and add foreign ke…
mjabascal10 Oct 17, 2025
c4fef1e
feat(api_keys): implement API key management with CRUD operations and…
mjabascal10 Oct 17, 2025
a30c27e
refactor(api_keys): simplify API key management by removing user ID d…
mjabascal10 Oct 17, 2025
ef0398e
feat(api_keys): implement API key filtering and usage logging for enh…
mjabascal10 Oct 19, 2025
cf133e4
feat[frontend](api_key): added api key list/creation components
AlexSanchez-bit Oct 17, 2025
94951f8
refactor(api_keys): remove unused ApplicationEventService from ApiKey…
mjabascal10 Oct 20, 2025
af0a349
refactor(api_keys): update API key table schema and change ID type to…
mjabascal10 Oct 20, 2025
dcde7f3
feat(api_keys): enhance API key management UI
mjabascal10 Oct 23, 2025
c61fb02
feat(api_keys): enhance API key management UI
mjabascal10 Oct 23, 2025
b38f613
feat(config): introduce constants for configuration data types and re…
mjabascal10 Oct 22, 2025
231c504
refactor(UtmDataInputStatus, UtmNetworkScan): remove unused relations…
mjabascal10 Oct 23, 2025
d60d5ce
feat(api_keys): implement API key filtering and usage logging for enh…
mjabascal10 Oct 19, 2025
d85d1e3
feat(api_keys): enhance API key management with new fields and loggin…
mjabascal10 Oct 23, 2025
8abce9e
feat(api_keys): enhance IP address management with validation and err…
mjabascal10 Oct 23, 2025
3f06c65
feat(api_keys): add API key generation and expiration handling with u…
mjabascal10 Oct 24, 2025
9ee4d9c
feat(api_keys): update API key modal for editing and improved deletio…
mjabascal10 Oct 24, 2025
d97830a
refactor(api_keys): change API key identifier type from UUID to Long …
mjabascal10 Oct 27, 2025
fdbea5f
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 27, 2025
f1a088d
feat(api_keys): improve API key listing with pagination, loading stat…
mjabascal10 Oct 27, 2025
b9b555a
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
b75f5e7
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
fd36727
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
850c1e4
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
f45194a
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
3cd54c4
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
b3f8c68
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
83118a9
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
4ce6306
Update frontend/src/app/app-management/api-keys/shared/components/api…
mjabascal10 Oct 28, 2025
c6c9b59
Update backend/src/main/java/com/park/utmstack/security/api_key/ApiKe…
mjabascal10 Oct 28, 2025
da17219
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
6760e98
Merge branch 'release/v11' into backlog/api_key
mjabascal10 Oct 28, 2025
47fea36
feat(api_keys): enhance clipboard functionality with fallback support…
mjabascal10 Oct 29, 2025
e73b24c
feat(api_key): enhance ApiKeyFilter with improved logging and validat…
mjabascal10 Oct 29, 2025
a1d08cd
feat(api_key): enhance ApiKeyFilter with improved logging and validat…
mjabascal10 Oct 29, 2025
201bbbd
fix[frontend](web_console): sanitized password parameter to admit all…
AlexSanchez-bit Oct 16, 2025
38c4bf7
feat[backend](api-keys): added api keys dto, controllers and entities
AlexSanchez-bit Oct 17, 2025
5fa8b22
feat[backend](api_keys): added api keys
AlexSanchez-bit Oct 17, 2025
86968a5
feat(api_keys): create api_keys table with user_id and add foreign ke…
mjabascal10 Oct 17, 2025
bb3a3ce
feat(api_keys): implement API key management with CRUD operations and…
mjabascal10 Oct 17, 2025
158462c
refactor(api_keys): simplify API key management by removing user ID d…
mjabascal10 Oct 17, 2025
00ea732
feat(api_keys): implement API key filtering and usage logging for enh…
mjabascal10 Oct 19, 2025
270d9f1
feat[frontend](api_key): added api key list/creation components
AlexSanchez-bit Oct 17, 2025
28551bc
refactor(api_keys): remove unused ApplicationEventService from ApiKey…
mjabascal10 Oct 20, 2025
2219a51
refactor(api_keys): update API key table schema and change ID type to…
mjabascal10 Oct 20, 2025
f3f3789
feat(api_keys): enhance API key management UI
mjabascal10 Oct 23, 2025
d1fb569
feat(api_keys): enhance API key management UI
mjabascal10 Oct 23, 2025
cb20183
feat(api_keys): implement API key filtering and usage logging for enh…
mjabascal10 Oct 19, 2025
db1771c
feat(api_keys): enhance API key management with new fields and loggin…
mjabascal10 Oct 23, 2025
089514e
feat(api_keys): enhance IP address management with validation and err…
mjabascal10 Oct 23, 2025
6891a88
feat(api_keys): add API key generation and expiration handling with u…
mjabascal10 Oct 24, 2025
e25681a
feat(api_keys): update API key modal for editing and improved deletio…
mjabascal10 Oct 24, 2025
beff945
refactor(api_keys): change API key identifier type from UUID to Long …
mjabascal10 Oct 27, 2025
90d6874
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 27, 2025
8425c2f
feat(api_keys): improve API key listing with pagination, loading stat…
mjabascal10 Oct 27, 2025
ab3d3bf
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
68a6ed6
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
37e4511
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
b59c8ad
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
fea3bc9
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
cb44de9
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
abbbc63
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
14455ad
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
3786d00
Update frontend/src/app/app-management/api-keys/shared/components/api…
mjabascal10 Oct 28, 2025
7029ca7
Update backend/src/main/java/com/park/utmstack/security/api_key/ApiKe…
mjabascal10 Oct 28, 2025
1420ceb
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
1e43d5f
feat(api_keys): enhance clipboard functionality with fallback support…
mjabascal10 Oct 29, 2025
2de870c
feat(api_key): enhance ApiKeyFilter with improved logging and validat…
mjabascal10 Oct 29, 2025
1d34358
feat(api_key): enhance ApiKeyFilter with improved logging and validat…
mjabascal10 Oct 29, 2025
5e587c8
feat(api_key): enhance ApiKeyFilter with improved logging and validat…
mjabascal10 Oct 29, 2025
5393cc0
Merge remote-tracking branch 'origin/backlog/api_key' into backlog/ap…
mjabascal10 Oct 29, 2025
1722168
refactor(agent): remove unused TLS certificate validation and related…
yllada Oct 31, 2025
cd47f70
Update frontend/src/app/core/auth/account.service.ts
mjabascal10 Oct 31, 2025
4452b69
Merge pull request #1384 from utmstack/backlog/agent_console_login
mjabascal10 Oct 31, 2025
7d31359
Merge pull request #1382 from utmstack/backlog/timezone_settings
mjabascal10 Oct 31, 2025
164c851
feat(agent): validate TLS certificates before enabling TLS for integr…
yllada Oct 31, 2025
c86d8de
fix[frontend](web_console): sanitized password parameter to admit all…
AlexSanchez-bit Oct 16, 2025
e35286b
feat[backend](api-keys): added api keys dto, controllers and entities
AlexSanchez-bit Oct 17, 2025
2ab5f14
feat[backend](api_keys): added api keys
AlexSanchez-bit Oct 17, 2025
4fbec89
feat(api_keys): create api_keys table with user_id and add foreign ke…
mjabascal10 Oct 17, 2025
0342cfb
feat(api_keys): implement API key management with CRUD operations and…
mjabascal10 Oct 17, 2025
3752e6d
refactor(api_keys): simplify API key management by removing user ID d…
mjabascal10 Oct 17, 2025
fbbd719
feat(api_keys): implement API key filtering and usage logging for enh…
mjabascal10 Oct 19, 2025
dade609
feat[frontend](api_key): added api key list/creation components
AlexSanchez-bit Oct 17, 2025
a1f27a2
refactor(api_keys): remove unused ApplicationEventService from ApiKey…
mjabascal10 Oct 20, 2025
0a8538f
refactor(api_keys): update API key table schema and change ID type to…
mjabascal10 Oct 20, 2025
f22f18d
feat(api_keys): enhance API key management UI
mjabascal10 Oct 23, 2025
1a9fcee
feat(api_keys): enhance API key management UI
mjabascal10 Oct 23, 2025
e22ae75
feat(api_keys): implement API key filtering and usage logging for enh…
mjabascal10 Oct 19, 2025
528cac1
feat(api_keys): enhance API key management with new fields and loggin…
mjabascal10 Oct 23, 2025
2757f2e
feat(api_keys): enhance IP address management with validation and err…
mjabascal10 Oct 23, 2025
eabbc02
feat(api_keys): add API key generation and expiration handling with u…
mjabascal10 Oct 24, 2025
910852e
feat(api_keys): update API key modal for editing and improved deletio…
mjabascal10 Oct 24, 2025
9476b78
refactor(api_keys): change API key identifier type from UUID to Long …
mjabascal10 Oct 27, 2025
6e6ed51
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 27, 2025
a1040ea
feat(api_keys): improve API key listing with pagination, loading stat…
mjabascal10 Oct 27, 2025
c0884eb
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
f37cc49
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
d6eaefb
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
09d3de3
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
306e412
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
ce46deb
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
05206e1
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
4a9bff7
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
28c7340
Update frontend/src/app/app-management/api-keys/shared/components/api…
mjabascal10 Oct 28, 2025
4803487
Update backend/src/main/java/com/park/utmstack/security/api_key/ApiKe…
mjabascal10 Oct 28, 2025
fba61ec
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
147d702
feat(api_keys): enhance clipboard functionality with fallback support…
mjabascal10 Oct 29, 2025
01ae5d5
feat(api_key): enhance ApiKeyFilter with improved logging and validat…
mjabascal10 Oct 29, 2025
32946df
feat(api_key): enhance ApiKeyFilter with improved logging and validat…
mjabascal10 Oct 29, 2025
1da1e18
feat(api_key): enhance ApiKeyFilter with improved logging and validat…
mjabascal10 Oct 29, 2025
fbd7af4
feat[backend](api-keys): added api keys dto, controllers and entities
AlexSanchez-bit Oct 17, 2025
9146c77
feat[backend](api_keys): added api keys
AlexSanchez-bit Oct 17, 2025
7b7a279
feat(api_keys): create api_keys table with user_id and add foreign ke…
mjabascal10 Oct 17, 2025
ff1f189
feat(api_keys): implement API key management with CRUD operations and…
mjabascal10 Oct 17, 2025
026266c
feat[frontend](api_key): added api key list/creation components
AlexSanchez-bit Oct 17, 2025
ba0ba89
refactor(api_keys): remove unused ApplicationEventService from ApiKey…
mjabascal10 Oct 20, 2025
0b9b3a5
refactor(api_keys): update API key table schema and change ID type to…
mjabascal10 Oct 20, 2025
3be2b4b
feat(api_keys): enhance API key management UI
mjabascal10 Oct 23, 2025
9791323
feat(api_keys): implement API key filtering and usage logging for enh…
mjabascal10 Oct 19, 2025
f249dce
feat(api_keys): enhance API key management with new fields and loggin…
mjabascal10 Oct 23, 2025
686c9fa
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
01cce88
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
c7c284d
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
2eb0f88
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
62f49fe
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
ebd9fb2
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
5aa81b8
feat(api_keys): simplify API key listing endpoint and enhance expirat…
mjabascal10 Oct 28, 2025
735abfb
Update backend/src/main/java/com/park/utmstack/security/api_key/ApiKe…
mjabascal10 Oct 28, 2025
a3ba51a
Merge remote-tracking branch 'origin/backlog/api_key' into backlog/ap…
mjabascal10 Nov 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 0 additions & 36 deletions agent/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package main
import (
"fmt"
"os"
"strings"
"time"

pb "github.com/utmstack/UTMStack/agent/agent"
Expand Down Expand Up @@ -170,41 +169,6 @@ func main() {
fmt.Println("TLS certificates loaded successfully!")
time.Sleep(5 * time.Second)

case "check-tls-certs":
fmt.Println("Checking TLS certificates status ...")

status := utils.GetTLSStatus(
config.IntegrationCertPath,
config.IntegrationKeyPath,
config.IntegrationCAPath,
)

fmt.Printf("Certificate file exists: %v\n", status.CertExists)
fmt.Printf("Private key file exists: %v\n", status.KeyExists)
fmt.Printf("CA certificate file exists: %v\n", status.CAExists)
fmt.Printf("TLS Available: %v\n", status.Available)
fmt.Printf("Certificates Valid: %v\n", status.Valid)

if status.Error != "" {
fmt.Printf("Error: %s\n", status.Error)
}

if status.Available {
fmt.Println("\n" + strings.Repeat("=", 50))
details, err := utils.GetCertificateDetails(config.IntegrationCertPath)
if err == nil {
fmt.Println(details)
}
fmt.Println("TLS is ready for use!")
fmt.Println("Use: ./utmstack_agent enable-tls <integration> tcp")
} else {
fmt.Println("\n" + strings.Repeat("=", 50))
fmt.Println("TLS is NOT available.")
fmt.Println("To enable TLS:")
fmt.Println(" Load your certificates: ./utmstack_agent load-tls-certs <cert> <key> [ca]")
}
time.Sleep(5 * time.Second)

case "change-port":
fmt.Println("Changing integration port ...")
integration := os.Args[2]
Expand Down
3 changes: 3 additions & 0 deletions agent/modules/configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ func ChangeIntegrationStatus(logTyp string, proto string, isEnabled bool, tlsOpt
// Handle TLS configuration if specified
if len(tlsOptions) > 0 && isEnabled {
if tlsOptions[0] {
if !utils.CheckIfPathExist(config.IntegrationCertPath) || !utils.CheckIfPathExist(config.IntegrationKeyPath) {
return "", fmt.Errorf("TLS certificates not found. Please load certificates first")
}
// Enable TLS
integration.TCP.TLSEnabled = true
mod := GetModule(logTyp)
Expand Down
6 changes: 6 additions & 0 deletions agent/modules/syslog.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,12 @@ func (m *SyslogModule) GetPort(proto string) string {
func (m *SyslogModule) EnablePort(proto string, enableTLS bool) error {
switch proto {
case "tcp":
if enableTLS {
if !utils.CheckIfPathExist(config.IntegrationCertPath) || !utils.CheckIfPathExist(config.IntegrationKeyPath) {
return fmt.Errorf("TLS certificates not found. Please load certificates first")
}
}

m.TCPListener.TLSEnabled = enableTLS
go m.enableTCP()
return nil
Expand Down
13 changes: 0 additions & 13 deletions agent/serv/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,19 +40,6 @@ func (p *program) run() {
utils.Logger.Fatal("error getting config: %v", err)
}

if utils.CheckIfPathExist(config.IntegrationCertPath) && utils.CheckIfPathExist(config.IntegrationKeyPath) {
err = utils.ValidateIntegrationCertificates(config.IntegrationCertPath, config.IntegrationKeyPath)
if err != nil {
utils.Logger.ErrorF("TLS certificates are invalid: %v", err)
utils.Logger.Info("TLS functionality will be disabled. Use 'load-tls-certs' command to fix this.")
} else {
utils.Logger.Info("TLS certificates are valid and ready for use")
}
} else {
utils.Logger.Info("No TLS certificates found. TLS functionality is disabled.")
utils.Logger.Info("Use 'load-tls-certs' command to load your certificates.")
}

db := database.GetDB()
err = db.Migrate(models.Log{})
if err != nil {
Expand Down
17 changes: 17 additions & 0 deletions agent/utils/files.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,3 +157,20 @@ func IsDirEmpty(path string) (bool, error) {
}
return false, err
}

func copyFile(src, dst string) error {
sourceFile, err := os.Open(src)
if err != nil {
return err
}
defer sourceFile.Close()

destFile, err := os.Create(dst)
if err != nil {
return err
}
defer destFile.Close()

_, err = io.Copy(destFile, sourceFile)
return err
}
97 changes: 0 additions & 97 deletions agent/utils/integration_tls.go → agent/utils/int_tls.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,9 @@ import (
"crypto/rsa"
"crypto/tls"
"crypto/x509"
"encoding/pem"
"fmt"
"io"
"os"
"path/filepath"
"strings"
"time"
)

Expand Down Expand Up @@ -170,97 +167,3 @@ func LoadUserCertificatesWithStruct(src, dest CertificateFiles) error {

return nil
}

func GetTLSStatus(certPath, keyPath, caPath string) TLSStatus {
status := TLSStatus{
CertExists: CheckIfPathExist(certPath),
KeyExists: CheckIfPathExist(keyPath),
CAExists: CheckIfPathExist(caPath),
}

if status.CertExists && status.KeyExists {
err := ValidateIntegrationCertificates(certPath, keyPath)
if err == nil {
status.Available = true
status.Valid = true
} else {
status.Error = err.Error()
}
} else {
status.Error = "Certificate or private key files not found"
}

return status
}

func GetCertificateDetails(certPath string) (string, error) {
if !CheckIfPathExist(certPath) {
return "", fmt.Errorf("certificate file not found: %s", certPath)
}

// Parse certificate directly
certData, err := os.ReadFile(certPath)
if err != nil {
return "", fmt.Errorf("error reading certificate: %w", err)
}

block, _ := pem.Decode(certData)
if block == nil {
return "", fmt.Errorf("failed to decode certificate PEM")
}

cert, err := x509.ParseCertificate(block.Bytes)
if err != nil {
return "", fmt.Errorf("failed to parse certificate: %w", err)
}

return formatCertificateDetails(cert), nil
}

func formatCertificateDetails(cert *x509.Certificate) string {
var builder strings.Builder

builder.WriteString(fmt.Sprintf("Subject: %s\n", cert.Subject.String()))
builder.WriteString(fmt.Sprintf("Issuer: %s\n", cert.Issuer.String()))
builder.WriteString(fmt.Sprintf("Valid from: %s\n", cert.NotBefore.Format("2006-01-02 15:04:05 UTC")))
builder.WriteString(fmt.Sprintf("Valid until: %s\n", cert.NotAfter.Format("2006-01-02 15:04:05 UTC")))
builder.WriteString(fmt.Sprintf("Serial Number: %s\n", cert.SerialNumber.String()))

if len(cert.DNSNames) > 0 || len(cert.IPAddresses) > 0 {
builder.WriteString("Subject Alternative Names: ")

for i, dns := range cert.DNSNames {
if i > 0 {
builder.WriteString(", ")
}
builder.WriteString(dns)
}

for i, ip := range cert.IPAddresses {
if i > 0 || len(cert.DNSNames) > 0 {
builder.WriteString(", ")
}
builder.WriteString(ip.String())
}
builder.WriteString("\n")
}

return builder.String()
}

func copyFile(src, dst string) error {
sourceFile, err := os.Open(src)
if err != nil {
return err
}
defer sourceFile.Close()

destFile, err := os.Create(dst)
if err != nil {
return err
}
defer destFile.Close()

_, err = io.Copy(destFile, sourceFile)
return err
}
1 change: 1 addition & 0 deletions backend/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ local.properties
*.orig
classes/
out/
.nvim/

######################
# Visual Studio Code
Expand Down
6 changes: 6 additions & 0 deletions backend/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,12 @@
<version>3.0.5</version>
</dependency>

<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.9.0</version>
</dependency>

</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@
import com.park.utmstack.security.TooMuchLoginAttemptsException;
import com.park.utmstack.service.application_events.ApplicationEventService;
import com.park.utmstack.util.ResponseUtil;
import com.park.utmstack.util.exceptions.IncidentAlertConflictException;
import com.park.utmstack.util.exceptions.NoAlertsProvidedException;
import com.park.utmstack.util.exceptions.TfaVerificationException;
import com.park.utmstack.util.exceptions.TooManyRequestsException;
import com.park.utmstack.util.exceptions.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
Expand Down Expand Up @@ -41,8 +38,9 @@ public ResponseEntity<?> handleTooManyLoginAttempts(TooMuchLoginAttemptsExceptio
return ResponseUtil.buildLockedResponse(e.getMessage());
}

@ExceptionHandler(NoSuchElementException.class)
public ResponseEntity<?> handleNotFound(NoSuchElementException e, HttpServletRequest request) {
@ExceptionHandler({NoSuchElementException.class,
ApiKeyNotFoundException.class})
public ResponseEntity<?> handleNotFound(Exception e, HttpServletRequest request) {
return ResponseUtil.buildNotFoundResponse(e.getMessage());
}

Expand All @@ -56,8 +54,9 @@ public ResponseEntity<?> handleNoAlertsProvided(Exception e, HttpServletRequest
return ResponseUtil.buildErrorResponse(HttpStatus.BAD_REQUEST, e.getMessage());
}

@ExceptionHandler(IncidentAlertConflictException.class)
public ResponseEntity<?> handleConflict(IncidentAlertConflictException e, HttpServletRequest request) {
@ExceptionHandler({IncidentAlertConflictException.class,
ApiKeyExistException.class})
public ResponseEntity<?> handleConflict(Exception e, HttpServletRequest request) {
return ResponseUtil.buildErrorResponse(HttpStatus.CONFLICT, e.getMessage());
}

Expand Down
6 changes: 6 additions & 0 deletions backend/src/main/java/com/park/utmstack/config/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import com.park.utmstack.domain.index_pattern.enums.SystemIndexPattern;

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public final class Constants {
Expand Down Expand Up @@ -137,6 +139,7 @@ public final class Constants {
// Defines the index pattern for querying Elasticsearch statistics indexes.
// ----------------------------------------------------------------------------------
public static final String STATISTICS_INDEX_PATTERN = "v11-statistics-*";
public static final String V11_API_ACCESS_LOGS = "v11-api-access-logs-*";

// Logging
public static final String TRACE_ID_KEY = "traceId";
Expand All @@ -156,6 +159,9 @@ public final class Constants {
public static final String CONF_TYPE_PASSWORD = "password";
public static final String CONF_TYPE_FILE = "file";

public static final String API_KEY_HEADER = "Utm-Api-Key";
public static final List<String> API_ENDPOINT_IGNORE = Collections.emptyList();

private Constants() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,30 @@ public OpenApiConfiguration(InfoEndpoint infoEndpoint) {
@Bean
public OpenAPI customOpenAPI() {
final String securitySchemeBearer = "bearerAuth";
final String securitySchemeApiInternalKey = "ApiInternalKeyAuth";
final String securitySchemeApiKey = "ApiKeyAuth";

final String apiTitle = "UTMStack API";
String version = MapUtil.flattenToStringMap(infoEndpoint.info(), true).get("build.version");
return new OpenAPI()
.addSecurityItem(new SecurityRequirement().addList(securitySchemeBearer).addList(securitySchemeApiKey))
.addSecurityItem(new SecurityRequirement()
.addList(securitySchemeBearer)
.addList(securitySchemeApiInternalKey)
.addList(securitySchemeApiKey))
.components(new Components()
.addSecuritySchemes(securitySchemeBearer,
new SecurityScheme()
.name(securitySchemeBearer)
.type(SecurityScheme.Type.HTTP)
.scheme("bearer")
.bearerFormat("JWT"))
.addSecuritySchemes(securitySchemeApiKey, new SecurityScheme()
.addSecuritySchemes(securitySchemeApiInternalKey, new SecurityScheme()
.name("Utm-Internal-Key")
.type(SecurityScheme.Type.APIKEY)
.in(SecurityScheme.In.HEADER))
.addSecuritySchemes(securitySchemeApiKey, new SecurityScheme()
.name(Constants.API_KEY_HEADER)
.type(SecurityScheme.Type.APIKEY)
.in(SecurityScheme.In.HEADER)))
.info(new Info().title(apiTitle).version(version))
.addServersItem(new Server().url("/").description("Default Server URL"));
Expand Down
Loading