1+ <template >
2+ <b-card no-body :header =" header" >
3+ <b-card-body >
4+ <p >{{ $t('admin.task_scheduler_description') }}</p >
5+ <br />
6+ <h4 >Components</h4 >
7+ <b-validated-input-group-form-input
8+ id =" repository_metadata_fetch"
9+ :label =" $t('admin.task_scheduler_repository_metadata_fetch')"
10+ input-group-size =" mb-3"
11+ rules =" required"
12+ type =" number"
13+ v-model =" repositoryMetadataFetch.value"
14+ :tooltip =" repositoryMetadataFetch.description"
15+ />
16+ <b-validated-input-group-form-input
17+ id =" internal_component_identification"
18+ :label =" $t('admin.task_scheduler_internal_component_identification')"
19+ input-group-size =" mb-3"
20+ rules =" required"
21+ type =" number"
22+ v-model =" internalComponentIdentification.value"
23+ :tooltip =" internalComponentIdentification.description"
24+ />
25+ <br />
26+ <h4 >Vulnerability databases synchronization</h4 >
27+ <b-validated-input-group-form-input
28+ id =" ghsa_mirror"
29+ :label =" $t('admin.github_advisories')"
30+ input-group-size =" mb-3"
31+ rules =" required"
32+ type =" number"
33+ v-model =" ghsaMirror.value"
34+ :tooltip =" ghsaMirror.description"
35+ />
36+ <b-validated-input-group-form-input
37+ id =" nist_mirror"
38+ :label =" $t('admin.nvd')"
39+ input-group-size =" mb-3"
40+ rules =" required"
41+ type =" number"
42+ v-model =" nistMirror.value"
43+ :tooltip =" nistMirror.description"
44+ />
45+ <b-validated-input-group-form-input
46+ id =" vulndb_mirror"
47+ :label =" $t('admin.vulndb')"
48+ input-group-size =" mb-3"
49+ rules =" required"
50+ type =" number"
51+ v-model =" vulndbMirror.value"
52+ :tooltip =" vulndbMirror.description"
53+ />
54+ <b-validated-input-group-form-input
55+ id =" osv_mirror"
56+ :label =" $t('admin.osv_advisories')"
57+ input-group-size =" mb-3"
58+ rules =" required"
59+ type =" number"
60+ v-model =" osvMirror.value"
61+ :tooltip =" osvMirror.description"
62+ />
63+ <br />
64+ <h4 >Analysis</h4 >
65+ <b-validated-input-group-form-input
66+ id =" portfolio_vulnerability_analysis"
67+ :label =" $t('admin.task_scheduler_portfolio_vulnerability_analysis')"
68+ input-group-size =" mb-3"
69+ rules =" required"
70+ type =" number"
71+ v-model =" portfolioVulnerabilityAnalysis.value"
72+ :tooltip =" portfolioVulnerabilityAnalysis.description"
73+ />
74+ <b-validated-input-group-form-input
75+ id =" component_analysis_cache_clear"
76+ :label =" $t('admin.task_scheduler_component_analysis_cache_clear')"
77+ input-group-size =" mb-3"
78+ rules =" required"
79+ type =" number"
80+ v-model =" analysisCacheClear.value"
81+ :tooltip =" analysisCacheClear.description"
82+ />
83+ <br />
84+ <h4 >Metrics update</h4 >
85+ <b-validated-input-group-form-input
86+ id =" portfolio_metrics_update"
87+ :label =" $t('admin.task_scheduler_portfolio_metrics_update')"
88+ input-group-size =" mb-3"
89+ rules =" required"
90+ type =" number"
91+ v-model =" portfolioMetricsUpdate.value"
92+ :tooltip =" portfolioMetricsUpdate.description"
93+ />
94+ <b-validated-input-group-form-input
95+ id =" vulnerability_metrics_update"
96+ :label =" $t('admin.task_scheduler_vulnerability_metrics_update')"
97+ input-group-size =" mb-3"
98+ rules =" required"
99+ type =" number"
100+ v-model =" vulnerabilityMetricsUpdate.value"
101+ :tooltip =" vulnerabilityMetricsUpdate.description"
102+ />
103+ <br />
104+ <h4 >Authentication</h4 >
105+ <b-validated-input-group-form-input
106+ id =" ldap_sync"
107+ :label =" $t('admin.task_scheduler_ldap_sync')"
108+ input-group-size =" mb-3"
109+ rules =" required"
110+ type =" number"
111+ v-model =" ldapSync.value"
112+ :tooltip =" ldapSync.description"
113+ />
114+ </b-card-body >
115+ <b-card-footer >
116+ <b-button variant =" outline-primary" class =" px-4" @click =" saveChanges" >{{ $t('message.update') }}</b-button >
117+ </b-card-footer >
118+ </b-card >
119+ </template >
120+
121+ <script >
122+ import { ValidationObserver } from ' vee-validate' ;
123+ import BValidatedInputGroupFormInput from ' ../../../forms/BValidatedInputGroupFormInput'
124+ import configPropertyMixin from " ../mixins/configPropertyMixin" ;
125+
126+ export default {
127+ mixins: [configPropertyMixin],
128+ props: {
129+ header: String
130+ },
131+ components: {
132+ ValidationObserver,
133+ BValidatedInputGroupFormInput
134+ },
135+ data () {
136+ return {
137+ ghsaMirror: {" value" : " 0" , " description" : " " },
138+ nistMirror: {" value" : " 0" , " description" : " " },
139+ vulndbMirror: {" value" : " 0" , " description" : " " },
140+ osvMirror: {" value" : " 0" , " description" : " " },
141+ portfolioMetricsUpdate: {" value" : " 0" , " description" : " " },
142+ vulnerabilityMetricsUpdate: {" value" : " 0" , " description" : " " },
143+ portfolioVulnerabilityAnalysis: {" value" : " 0" , " description" : " " },
144+ analysisCacheClear: {" value" : " 0" , " description" : " " },
145+ ldapSync: {" value" : " 0" , " description" : " " },
146+ repositoryMetadataFetch: {" value" : " 0" , " description" : " " },
147+ internalComponentIdentification: {" value" : " 0" , " description" : " " }
148+ }
149+ },
150+ methods: {
151+ saveChanges : function () {
152+ this .updateConfigProperties ([
153+ {groupName: ' task-scheduler' , propertyName: ' ldap.sync.period' , propertyValue: this .ldapSync .value },
154+ {groupName: ' task-scheduler' , propertyName: ' ghsa.mirror.period' , propertyValue: this .ghsaMirror .value },
155+ {groupName: ' task-scheduler' , propertyName: ' osv.mirror.period' , propertyValue: this .osvMirror .value },
156+ {groupName: ' task-scheduler' , propertyName: ' nist.mirror.period' , propertyValue: this .nistMirror .value },
157+ {groupName: ' task-scheduler' , propertyName: ' vulndb.mirror.period' , propertyValue: this .vulndbMirror .value },
158+ {groupName: ' task-scheduler' , propertyName: ' portfolio.metrics.update.period' , propertyValue: this .portfolioMetricsUpdate .value },
159+ {groupName: ' task-scheduler' , propertyName: ' vulnerability.metrics.update.period' , propertyValue: this .vulnerabilityMetricsUpdate .value },
160+ {groupName: ' task-scheduler' , propertyName: ' portfolio.vulnerability.analysis.period' , propertyValue: this .portfolioVulnerabilityAnalysis .value },
161+ {groupName: ' task-scheduler' , propertyName: ' repository.metadata.fetch.period' , propertyValue: this .repositoryMetadataFetch .value },
162+ {groupName: ' task-scheduler' , propertyName: ' internal.components.identification.period' , propertyValue: this .internalComponentIdentification .value },
163+ {groupName: ' task-scheduler' , propertyName: ' component.analysis.cache.clear.period' , propertyValue: this .analysisCacheClear .value },
164+ ]);
165+ }
166+ },
167+ created () {
168+ this .axios .get (this .configUrl ).then ((response ) => {
169+ let configItems = response .data .filter (function (item ) { return item .groupName === " task-scheduler" });
170+ for (let i= 0 ; i< configItems .length ; i++ ) {
171+ let item = configItems[i];
172+ switch (item .propertyName ) {
173+ case " ldap.sync.period" :
174+ this .ldapSync .value = item .propertyValue ;
175+ this .ldapSync .description = item .description ;
176+ break ;
177+ case " ghsa.mirror.period" :
178+ this .ghsaMirror .value = item .propertyValue ;
179+ this .ghsaMirror .description = item .description ;
180+ break ;
181+ case " osv.mirror.period" :
182+ this .osvMirror .value = item .propertyValue ;
183+ this .osvMirror .description = item .description ;
184+ break ;
185+ case " nist.mirror.period" :
186+ this .nistMirror .value = item .propertyValue ;
187+ this .nistMirror .description = item .description ;
188+ break ;
189+ case " vulndb.mirror.period" :
190+ this .vulndbMirror .value = item .propertyValue ;
191+ this .vulndbMirror .description = item .description ;
192+ break ;
193+ case " portfolio.metrics.update.period" :
194+ this .portfolioMetricsUpdate .value = item .propertyValue ;
195+ this .portfolioMetricsUpdate .description = item .description ;
196+ break ;
197+ case " vulnerability.metrics.update.period" :
198+ this .vulnerabilityMetricsUpdate .value = item .propertyValue ;
199+ this .vulnerabilityMetricsUpdate .description = item .description ;
200+ break ;
201+ case " portfolio.vulnerability.analysis.period" :
202+ this .portfolioVulnerabilityAnalysis .value = item .propertyValue ;
203+ this .portfolioVulnerabilityAnalysis .description = item .description ;
204+ break ;
205+ case " repository.metadata.fetch.period" :
206+ this .repositoryMetadataFetch .value = item .propertyValue ;
207+ this .repositoryMetadataFetch .description = item .description ;
208+ break ;
209+ case " internal.components.identification.period" :
210+ this .internalComponentIdentification .value = item .propertyValue ;
211+ this .internalComponentIdentification .description = item .description ;
212+ break ;
213+ case " component.analysis.cache.clear.period" :
214+ this .analysisCacheClear .value = item .propertyValue ;
215+ this .analysisCacheClear .description = item .description ;
216+ break ;
217+ }
218+ }
219+ });
220+ }
221+ }
222+ </script >
0 commit comments