Skip to content

Commit 820a1c7

Browse files
feat[backend](updated filters and rules): forced systemOwnedMode on rules and filters insertion in initial update
1 parent 8b96a58 commit 820a1c7

File tree

3 files changed

+30
-6
lines changed

3 files changed

+30
-6
lines changed

backend/src/main/java/com/park/utmstack/service/DefinitionSyncService.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.park.utmstack.service.dto.correlation.AdversaryType;
1212
import com.park.utmstack.service.dto.correlation.UtmCorrelationRulesDTO;
1313
import com.park.utmstack.service.dto.correlation.UtmCorrelationRulesMapper;
14+
import com.park.utmstack.service.logstash_filter.UtmLogstashFilterService;
1415
import lombok.Data;
1516
import lombok.RequiredArgsConstructor;
1617
import org.slf4j.Logger;
@@ -40,6 +41,7 @@ public class DefinitionSyncService implements CommandLineRunner {
4041
private final UtmDataTypesRepository dataTypesRepository;
4142
private final UtmCorrelationRulesService rulesService;
4243
private final UtmCorrelationRulesMapper rulesMapper;
44+
private final UtmLogstashFilterService filterService;
4345

4446
@Override
4547
@Transactional
@@ -70,7 +72,7 @@ private void syncFilters() {
7072
log.info("Updating existing filter for module: {}", moduleName);
7173
filter.setLogstashFilter(content);
7274
filter.setUpdatedAt(Instant.now());
73-
filterRepository.save(filter);
75+
filterService.save(filter, true);
7476
}
7577
} else {
7678
log.info("Inserting new filter for module: {}", moduleName);
@@ -88,7 +90,7 @@ private void syncFilters() {
8890
filter.setDatatype(dataType.get());
8991
}
9092

91-
filterRepository.save(filter);
93+
filterService.save(filter, true);
9294
}
9395
} catch (IOException e) {
9496
log.error("Error reading filter file {}: {}", path, e.getMessage());
@@ -158,10 +160,10 @@ private void syncRules() {
158160

159161
UtmCorrelationRules entity = rulesMapper.toEntity(ruleDto);
160162
if (ruleOpt.isPresent()) {
161-
rulesService.updateRule(entity);
163+
rulesService.updateRule(entity, true);
162164

163165
} else {
164-
rulesService.save(entity);
166+
rulesService.save(entity, true);
165167
}
166168

167169
} catch (Exception e) {

backend/src/main/java/com/park/utmstack/service/correlation/rules/UtmCorrelationRulesService.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ public UtmCorrelationRulesService(UtmCorrelationRulesRepository utmCorrelationRu
6262
* @return the persisted entity.
6363
*/
6464
public UtmCorrelationRules save(UtmCorrelationRules rule) {
65+
return save(rule, false);
66+
}
67+
68+
public UtmCorrelationRules save(UtmCorrelationRules rule, boolean forcedSystemMode) {
6569
final String ctx = CLASSNAME + ".saveRule";
6670
log.debug("Request to save UtmCorrelationRules : {}", rule);
6771

@@ -72,6 +76,10 @@ public UtmCorrelationRules save(UtmCorrelationRules rule) {
7276
}
7377
}
7478

79+
if (forcedSystemMode) {
80+
rule.setSystemOwner(true);
81+
}
82+
7583
rule.setDataTypes(this.saveDataTypes(rule));
7684
rule.setRuleLastUpdate(Instant.now(Clock.systemUTC()));
7785
return utmCorrelationRulesRepository.save(rule);
@@ -86,6 +94,11 @@ public UtmCorrelationRules save(UtmCorrelationRules rule) {
8694
* */
8795
@Transactional
8896
public void updateRule(UtmCorrelationRules correlationRule) throws Exception {
97+
updateRule(correlationRule, false);
98+
}
99+
100+
@Transactional
101+
public void updateRule(UtmCorrelationRules correlationRule, boolean forcedSystemMode) throws Exception {
89102
final String ctx = CLASSNAME + ".updateRule";
90103
Long id = correlationRule.getId();
91104
if (id == null) {
@@ -99,7 +112,12 @@ public void updateRule(UtmCorrelationRules correlationRule) throws Exception {
99112
if (correlationRule.getDataTypes().isEmpty()) {
100113
throw new BadRequestException(ctx + ": The rule must have at least one data type.");
101114
}
102-
if(optionalCorrelationRule.get().getSystemOwner() && !utmStackService.isInDevelop()) {
115+
116+
if (forcedSystemMode) {
117+
correlationRule.setSystemOwner(true);
118+
}
119+
120+
if(optionalCorrelationRule.get().getSystemOwner() && !utmStackService.isInDevelop() && !forcedSystemMode) {
103121
throw new BadRequestException(ctx + ": System's rules can't be updated.");
104122
}
105123
correlationRule.setDataTypes(this.saveDataTypes(correlationRule));

backend/src/main/java/com/park/utmstack/service/logstash_filter/UtmLogstashFilterService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,14 @@ public UtmLogstashFilterService(UtmLogstashFilterRepository logstashFilterReposi
3535
* @return the persisted entity
3636
*/
3737
public UtmLogstashFilter save(UtmLogstashFilter logstashFilter) {
38+
return save(logstashFilter, false);
39+
}
40+
41+
public UtmLogstashFilter save(UtmLogstashFilter logstashFilter, boolean forcedSystemMode) {
3842
final String ctx = CLASSNAME + ".save";
3943
try {
4044
logstashFilter.setUpdatedAt(Instant.now());
41-
logstashFilter.setSystemOwner(false);
45+
logstashFilter.setSystemOwner(forcedSystemMode);
4246
return logstashFilterRepository.save(logstashFilter);
4347
} catch (Exception e) {
4448
throw new RuntimeException(ctx + ": " + e.getMessage());

0 commit comments

Comments
 (0)