diff --git a/.github/workflows/typos.yaml b/.github/workflows/typos.yaml new file mode 100644 index 000000000..97c090201 --- /dev/null +++ b/.github/workflows/typos.yaml @@ -0,0 +1,24 @@ +name: Spell check with typos + +on: + push: + branches: ["main"] + pull_request: + branches: ["**"] + +permissions: {} + +jobs: + typos: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Checkout repository + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Run typos + uses: crate-ci/typos@d43b6c087ac471e2ea7b8af622ff15f05c0c365b # v1.50.1 + diff --git a/Makefile b/Makefile index 2f76041dd..b8118d5bb 100644 --- a/Makefile +++ b/Makefile @@ -83,7 +83,7 @@ buildx-machine: docker buildx create --name=$(MACHINE) --platform=$(DEFAULT_PLATFORMS) test-image: - # Instead of loading image, target all platforms, effectivelly testing + # Instead of loading image, target all platforms, effectively testing # the build for the target architectures. $(MAKE) build-image BUILD_ACTION="--platform=$(TARGET_PLATFORMS)" diff --git a/admin/src/main/scala/com/neu/model/DashboardJsonProtocal.scala b/admin/src/main/scala/com/neu/model/DashboardJsonProtocol.scala similarity index 99% rename from admin/src/main/scala/com/neu/model/DashboardJsonProtocal.scala rename to admin/src/main/scala/com/neu/model/DashboardJsonProtocol.scala index ba1b43fc2..259f3f279 100644 --- a/admin/src/main/scala/com/neu/model/DashboardJsonProtocal.scala +++ b/admin/src/main/scala/com/neu/model/DashboardJsonProtocol.scala @@ -658,7 +658,7 @@ case class PolicyOutput( applicationsInPolicy: List[(String, Int)] ) /*========================================= - For new dashbaord API + For new dashboard API =========================================*/ case class DashboardNotificationDTO( criticalSecurityEvents: CriticalSecurityEventDTO, @@ -945,7 +945,7 @@ object DashboardJsonProtocol extends DefaultJsonProtocol with LazyLogging { ) /*========================================= - For new dashbaord API + For new dashboard API =========================================*/ given podFormat: RootJsonFormat[Pod] = jsonFormat7(Pod.apply) diff --git a/admin/src/main/scala/com/neu/model/SystemConfig.scala b/admin/src/main/scala/com/neu/model/SystemConfig.scala index fbdd07fae..da8b78194 100644 --- a/admin/src/main/scala/com/neu/model/SystemConfig.scala +++ b/admin/src/main/scala/com/neu/model/SystemConfig.scala @@ -3,19 +3,30 @@ package com.neu.model /** * Created by bxu on 4/28/16. */ -case class RegistyHttpProxy(url: String, username: String, password: Option[String]) -case class RegistyHttpsProxy(url: String, username: String, password: Option[String]) -case class RegistyHttpProxyCfg( +case class RegistryHttpProxy(url: String, username: String, password: Option[String]) +case class RegistryHttpsProxy(url: String, username: String, password: Option[String]) +case class RegistryHttpProxyCfg( url: Option[String], username: Option[String], password: Option[String] ) -case class RegistyHttpsProxyCfg( +case class RegistryHttpsProxyCfg( url: Option[String], username: Option[String], password: Option[String] ) case class Webhook( + name: String, + url: String, + enable: Boolean, + use_proxy: Boolean, + `type`: String, + cfg_type: String, + username: Option[String] = None, + password: Option[String] = None +) + +case class MaskedWebhook( name: String, url: String, enable: Boolean, @@ -23,6 +34,7 @@ case class Webhook( `type`: String, cfg_type: String ) + case class RemoteRepository( nickname: String, provider: String, @@ -71,8 +83,8 @@ case class SystemConfig( webhooks: Option[Array[Webhook]] = None, cluster_name: Option[String] = None, auth_by_platform: Option[Boolean] = None, - registry_http_proxy: Option[RegistyHttpProxy] = None, - registry_https_proxy: Option[RegistyHttpsProxy] = None, + registry_http_proxy: Option[RegistryHttpProxy] = None, + registry_https_proxy: Option[RegistryHttpsProxy] = None, registry_http_proxy_status: Option[Boolean] = None, registry_https_proxy_status: Option[Boolean] = None, xff_enabled: Option[Boolean] = None, @@ -128,10 +140,10 @@ case class SystemConfigAuthCfgV2( case class SystemConfigProxyCfgV2( registry_http_proxy_status: Option[Boolean] = None, registry_https_proxy_status: Option[Boolean] = None, - registry_http_proxy: Option[RegistyHttpProxy] = None, - registry_https_proxy: Option[RegistyHttpsProxy] = None, - registry_http_proxy_cfg: Option[RegistyHttpProxyCfg] = None, - registry_https_proxy_cfg: Option[RegistyHttpsProxyCfg] = None + registry_http_proxy: Option[RegistryHttpProxy] = None, + registry_https_proxy: Option[RegistryHttpsProxy] = None, + registry_http_proxy_cfg: Option[RegistryHttpProxyCfg] = None, + registry_https_proxy_cfg: Option[RegistryHttpsProxyCfg] = None ) case class SystemConfigIBMSAVCfg2( @@ -186,6 +198,10 @@ case class WebhookConfigWrap( config: Webhook ) +case class MaskedWebhookConfigWrap( + config: MaskedWebhook +) + case class SystemConfig4DashboardWrap( config: SystemConfig4Dashboard, error: Option[Error] diff --git a/admin/src/main/scala/com/neu/model/SystemConfigJsonProtocol.scala b/admin/src/main/scala/com/neu/model/SystemConfigJsonProtocol.scala index 925a104f2..b89f61b41 100644 --- a/admin/src/main/scala/com/neu/model/SystemConfigJsonProtocol.scala +++ b/admin/src/main/scala/com/neu/model/SystemConfigJsonProtocol.scala @@ -7,17 +7,17 @@ import spray.json.* */ object SystemConfigJsonProtocol extends DefaultJsonProtocol { given errorFormat: RootJsonFormat[Error] = jsonFormat1(Error.apply) - given registyHttpsProxyFormat: RootJsonFormat[RegistyHttpsProxy] = jsonFormat3( - RegistyHttpsProxy.apply + given registryHttpsProxyFormat: RootJsonFormat[RegistryHttpsProxy] = jsonFormat3( + RegistryHttpsProxy.apply ) - given registyHttpProxyFormat: RootJsonFormat[RegistyHttpProxy] = jsonFormat3( - RegistyHttpProxy.apply + given registryHttpProxyFormat: RootJsonFormat[RegistryHttpProxy] = jsonFormat3( + RegistryHttpProxy.apply ) - given registyHttpsProxyCfgFormat: RootJsonFormat[RegistyHttpsProxyCfg] = jsonFormat3( - RegistyHttpsProxyCfg.apply + given registryHttpsProxyCfgFormat: RootJsonFormat[RegistryHttpsProxyCfg] = jsonFormat3( + RegistryHttpsProxyCfg.apply ) - given registyHttpProxyCfgFormat: RootJsonFormat[RegistyHttpProxyCfg] = jsonFormat3( - RegistyHttpProxyCfg.apply + given registryHttpProxyCfgFormat: RootJsonFormat[RegistryHttpProxyCfg] = jsonFormat3( + RegistryHttpProxyCfg.apply ) given githubConfigurationFormat: RootJsonFormat[GithubConfiguration] = jsonFormat6( GithubConfiguration.apply @@ -25,7 +25,7 @@ object SystemConfigJsonProtocol extends DefaultJsonProtocol { given azureDevopsConfigurationFormat: RootJsonFormat[AzureDevopsConfiguration] = jsonFormat5( AzureDevopsConfiguration.apply ) - given webhookFormat: RootJsonFormat[Webhook] = jsonFormat6(Webhook.apply) + given webhookFormat: RootJsonFormat[Webhook] = jsonFormat8(Webhook.apply) given remoteRepoFormat: RootJsonFormat[RemoteRepository] = jsonFormat6(RemoteRepository.apply) given remoteRepositoryWrapFormat: RootJsonFormat[RemoteRepositoryWrap] = jsonFormat1( RemoteRepositoryWrap.apply @@ -52,6 +52,11 @@ object SystemConfigJsonProtocol extends DefaultJsonProtocol { WebhookConfigWrap.apply ) + given MaskedWebhookFormat: RootJsonFormat[MaskedWebhook] = jsonFormat6(MaskedWebhook.apply) + given MaskedWebhookConfigWrapFormat: RootJsonFormat[MaskedWebhookConfigWrap] = jsonFormat1( + MaskedWebhookConfigWrap.apply + ) + given systemConfigSvcCfgV2Format: RootJsonFormat[SystemConfigSvcCfgV2] = jsonFormat3( SystemConfigSvcCfgV2.apply ) @@ -104,6 +109,9 @@ object SystemConfigJsonProtocol extends DefaultJsonProtocol { def webhookConfigWrapToJson(webhookConfigWrap: WebhookConfigWrap): String = webhookConfigWrap.toJson.compactPrint + def maskedWebhookConfigWrapToJson(maskedWebhookConfigWrap: MaskedWebhookConfigWrap): String = + maskedWebhookConfigWrap.toJson.compactPrint + def remoteRepositoryToJson(remoteRepository: RemoteRepository): String = remoteRepository.toJson.compactPrint diff --git a/admin/src/main/scala/com/neu/service/Services.scala b/admin/src/main/scala/com/neu/service/Services.scala index 4fc7f74aa..4b836605c 100644 --- a/admin/src/main/scala/com/neu/service/Services.scala +++ b/admin/src/main/scala/com/neu/service/Services.scala @@ -124,7 +124,7 @@ object Utils extends LazyLogging with Directives { * bit1 bit2 bit3 bit4 * ---------------------------------------------------------------------------------------------------------------------------- * Supplemental bit 1 ONLY env MANAGER_SSL on: 1 Request static resources env IS_DEV == true or - * NOT requset js files off: 0 true: 1 true: 1 (undefined): 0 false: 0 false: 0 + * NOT request js files off: 0 true: 1 true: 1 (undefined): 0 false: 0 false: 0 */ val headerConfigMapKey: Short = (1000 + isUsingSSLBit * 100 + isStaticResourceBit * 10 + isDevOrNotJsBit).toShort diff --git a/admin/src/main/scala/com/neu/service/authentication/OpenIdAuthService.scala b/admin/src/main/scala/com/neu/service/authentication/OpenIdAuthService.scala index 7f35f0d5d..f8d3cd5c2 100644 --- a/admin/src/main/scala/com/neu/service/authentication/OpenIdAuthService.scala +++ b/admin/src/main/scala/com/neu/service/authentication/OpenIdAuthService.scala @@ -45,7 +45,7 @@ class OpenIdAuthService()(implicit } else { Await .result( - handleExistingResoureces(code, state, ip, host, nonce), + handleExistingResources(code, state, ip, host, nonce), RestClient.waitingLimit.seconds ) } @@ -105,7 +105,7 @@ class OpenIdAuthService()(implicit } } - private def handleExistingResoureces( + private def handleExistingResources( code: Option[String], state: Option[String], ip: String, diff --git a/admin/src/main/scala/com/neu/service/dashboard/DashboardService.scala b/admin/src/main/scala/com/neu/service/dashboard/DashboardService.scala index 5f8eb8880..475125680 100644 --- a/admin/src/main/scala/com/neu/service/dashboard/DashboardService.scala +++ b/admin/src/main/scala/com/neu/service/dashboard/DashboardService.scala @@ -409,13 +409,13 @@ class DashboardService()(implicit executionContext: ExecutionContext) ) logger.debug("Got {}", dashboardScoreDTO) val endTime = new DateTime() - logger.info("Dashbaord scores - End: {}", endTime) + logger.info("Dashboard scores - End: {}", endTime) logger.info( - "Dashbaord scores - Calculation Duration: {}", + "Dashboard scores - Calculation Duration: {}", endTime.getMillis - calculationStartTime.getMillis ) logger.info( - "Dashbaord scores - Duration: {}", + "Dashboard scores - Duration: {}", endTime.getMillis - startTime.getMillis ) diff --git a/admin/src/main/scala/com/neu/service/device/DeviceService.scala b/admin/src/main/scala/com/neu/service/device/DeviceService.scala index 8f1b0ba8a..7852559b7 100644 --- a/admin/src/main/scala/com/neu/service/device/DeviceService.scala +++ b/admin/src/main/scala/com/neu/service/device/DeviceService.scala @@ -127,8 +127,21 @@ class DeviceService extends Directives with DefaultJsonFormats with LazyLogging } def updateWebhook(tokenId: String, webhook: Webhook, scope: Option[String]): Route = complete { + val printedPayload = maskedWebhookConfigWrapToJson( + MaskedWebhookConfigWrap( + MaskedWebhook( + name = webhook.name, + url = webhook.url, + enable = webhook.enable, + use_proxy = webhook.use_proxy, + `type` = webhook.`type`, + cfg_type = webhook.cfg_type + ) + ) + ) + logger.info("Update config: {}", printedPayload) + val payload = webhookConfigWrapToJson(WebhookConfigWrap(webhook)) - logger.info("Update config: {}", payload) RestClient.httpRequestWithHeader( scope.fold( diff --git a/admin/src/main/scala/com/neu/service/policy/PolicyService.scala b/admin/src/main/scala/com/neu/service/policy/PolicyService.scala index 0800f9270..e4ee913b1 100644 --- a/admin/src/main/scala/com/neu/service/policy/PolicyService.scala +++ b/admin/src/main/scala/com/neu/service/policy/PolicyService.scala @@ -851,7 +851,7 @@ class PolicyService() extends BaseService with DefaultJsonFormats with LazyLoggi } def addAdmissionRules(tokenId: String, admissionRuleConfig: AdmRuleConfig): Route = complete { - logger.info("Adding addmission rule: {}", admissionRuleConfig) + logger.info("Adding admission rule: {}", admissionRuleConfig) logger.info( "config in json: {}", admissionRuleConfigToJson(admissionRuleConfig) @@ -867,7 +867,7 @@ class PolicyService() extends BaseService with DefaultJsonFormats with LazyLoggi } def updateAdmissionRule(tokenId: String, admissionRuleConfig: AdmRuleConfig): Route = complete { - logger.info("Updating addmission rule: {}", admissionRuleConfig) + logger.info("Updating admission rule: {}", admissionRuleConfig) logger.info( "config in json: {}", admissionRuleConfigToJson(admissionRuleConfig) diff --git a/admin/test/REST_API/test_shell.sh b/admin/test/REST_API/test_shell.sh index 4a7e5125e..4b6f65082 100755 --- a/admin/test/REST_API/test_shell.sh +++ b/admin/test/REST_API/test_shell.sh @@ -11,7 +11,7 @@ base_url="https://127.0.0.1:8443" file="${inputDir}/test_data.properties" function start_test { - #Variables initialzation + #Variables initialization #Remove all output files rm -f ${outputDir} diff --git a/admin/webapp/websrc/app/common/constants/global.constant.ts b/admin/webapp/websrc/app/common/constants/global.constant.ts index 8ab993296..a4a45318a 100644 --- a/admin/webapp/websrc/app/common/constants/global.constant.ts +++ b/admin/webapp/websrc/app/common/constants/global.constant.ts @@ -27,7 +27,7 @@ export class GlobalConstant { public static NETWORK_RULES_PORTS_DISPLAY_LEN = 40; public static EXTERNAL = 'external'; public static PROXY_VALUE = 'neuvector-service-webui:8443/proxy'; - public static NO_CAHCE = 'no-cache'; + public static NO_CACHE = 'no-cache'; public static KUBE = 'kubernetes'; public static OPENSHIFT = 'Kubernetes-OpenShift'; public static RANCHER = 'Kubernetes-Rancher'; @@ -190,7 +190,7 @@ export class GlobalConstant { SOURCE: 'source', DESTINATION: 'destination', }, - PROTOCOL: 'protocal', + PROTOCOL: 'protocol', }; public static TAB_NAME = { @@ -281,7 +281,7 @@ export class GlobalConstant { WAF: 'cfgWafExport.yaml', COMPLIANCE_PROFILE: 'cfgComplianceProfileExport.yaml', VUL_PROFILE: 'cfgVulProfileExport.yaml', - RESPONSE_RULES: 'cfgReponseRulesExport.yaml', + RESPONSE_RULES: 'cfgResponseRulesExport.yaml', FED_SYSTEM_CONFIG: 'cfgFedSystemConfigExport.yaml', }; diff --git a/admin/webapp/websrc/app/common/constants/map.constant.ts b/admin/webapp/websrc/app/common/constants/map.constant.ts index c1d8c2f58..bdb8e782d 100644 --- a/admin/webapp/websrc/app/common/constants/map.constant.ts +++ b/admin/webapp/websrc/app/common/constants/map.constant.ts @@ -298,7 +298,7 @@ export class MapConstant { LEFT: 'left', KICKED: 'kicked', DISCONNECTED: 'disconnected', - UPGADE_REQUIRED: 'joint_upgrade_required', + UPGRADE_REQUIRED: 'joint_upgrade_required', SYNCED: 'synced', OUT_OF_SYNC: 'out_of_sync', JOIN: 'join', diff --git a/admin/webapp/websrc/app/common/constants/path.constant.ts b/admin/webapp/websrc/app/common/constants/path.constant.ts index 1e1e303dc..9ea1eb1ea 100644 --- a/admin/webapp/websrc/app/common/constants/path.constant.ts +++ b/admin/webapp/websrc/app/common/constants/path.constant.ts @@ -35,14 +35,14 @@ export class PathConstant { public static SAML_SLO_URL = 'token_auth_server_slo'; //auth public static OIDC_AUTH = 'openId_auth'; //auth public static LICENSE_LOAD_URL = 'license/update'; //auth - public static GROUP_URL = 'group'; //poilcy - public static SERVICE_URL = 'service'; //poilcy - public static PROCESS_PROFILE_URL = 'processProfile'; //poilcy - public static FILE_PROFILE_URL = 'fileProfile'; //poilcy - public static FILE_PREDEFINED_PROFILE_URL = 'filePreProfile'; //poilcy - public static POLICY_URL = 'policy'; //poilcy - public static POLICY_APP_URL = 'policy/application'; //poilcy - public static POLICY_RULE_URL = 'policy/rule'; //poilcy + public static GROUP_URL = 'group'; //policy + public static SERVICE_URL = 'service'; //policy + public static PROCESS_PROFILE_URL = 'processProfile'; //policy + public static FILE_PROFILE_URL = 'fileProfile'; //policy + public static FILE_PREDEFINED_PROFILE_URL = 'filePreProfile'; //policy + public static POLICY_URL = 'policy'; //policy + public static POLICY_APP_URL = 'policy/application'; //policy + public static POLICY_RULE_URL = 'policy/rule'; //policy public static VUL_ASSET_URL = 'vulasset'; //risks public static RISK_CVE_URL = 'risk/cve'; //risks public static RISK_COMPLIANCE_URL = 'risk/compliance'; //risks diff --git a/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.html b/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.html index ebafd3845..86f62baf9 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.html +++ b/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.html @@ -7,35 +7,35 @@ to.header | translate }} - - + +
  • {{ c | translate }}
- +
{{ c | translate }}
- + - + *ngIf="isObjectContent(to.content); else NormalStringDisplay"> +
  • {{ c | translate }} - {{ to.content[c] }}
- +
{{ c | translate }} - {{ to.content[c] }}
- +
{{ to.content }}
diff --git a/admin/webapp/websrc/app/common/neuvector-formly/select/select.component.html b/admin/webapp/websrc/app/common/neuvector-formly/select/select.component.html index 15f87355f..dd476cac0 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/select/select.component.html +++ b/admin/webapp/websrc/app/common/neuvector-formly/select/select.component.html @@ -1,17 +1,20 @@ - - {{ field.templateOptions?.label ?? '' | translate }} - - - {{ item.viewValue | translate }} - - - +
+ + {{ field.templateOptions?.label ?? '' | translate }} + + + {{ item.viewValue | translate }} + + + +
diff --git a/admin/webapp/websrc/app/common/services/network-rules.service.ts b/admin/webapp/websrc/app/common/services/network-rules.service.ts index 3f60388fd..7fb3eb7ad 100644 --- a/admin/webapp/websrc/app/common/services/network-rules.service.ts +++ b/admin/webapp/websrc/app/common/services/network-rules.service.ts @@ -36,7 +36,7 @@ export class NetworkRulesService { w: any; isNetworkRuleChanged: boolean = false; networkRuleBackup: Array = []; - squence: number = GlobalConstant.NEW_ID_SEED.NETWORK_RULE; + sequence: number = GlobalConstant.NEW_ID_SEED.NETWORK_RULE; constructor( public sanitizer: DomSanitizer, diff --git a/admin/webapp/websrc/app/common/services/response-rules.service.ts b/admin/webapp/websrc/app/common/services/response-rules.service.ts index b67c726ff..46a398573 100644 --- a/admin/webapp/websrc/app/common/services/response-rules.service.ts +++ b/admin/webapp/websrc/app/common/services/response-rules.service.ts @@ -384,13 +384,13 @@ export class ResponseRulesService { } filterSelectedOptions(optionsBoolean, optionList) { - let selecetedOptions: Array = []; + let selectedOptions: Array = []; optionList.forEach((action, index) => { if (optionsBoolean[index]) { - selecetedOptions.push(action); + selectedOptions.push(action); } }); - return selecetedOptions; + return selectedOptions; } removeResponseRuleData(id) { diff --git a/admin/webapp/websrc/app/common/styles/eos-ds/css/eos-style.css b/admin/webapp/websrc/app/common/styles/eos-ds/css/eos-style.css index c314ca504..da0518d9b 100644 --- a/admin/webapp/websrc/app/common/styles/eos-ds/css/eos-style.css +++ b/admin/webapp/websrc/app/common/styles/eos-ds/css/eos-style.css @@ -316,7 +316,7 @@ h6, .h6 { .title-underline { border-bottom: 1px solid #f2f2f2; } -.title-no-margings { +.title-no-margins { margin: 0; } .subheadline { @@ -774,16 +774,16 @@ eos-alert ~ .content { @media screen and (max-width: 769px) { .main-menu { display: none; } } - .main-menu .menu-togglable { + .main-menu .menu-toggleable { margin-bottom: 40px; max-height: calc(100vh - 141px); overflow-x: hidden; overflow-y: auto; padding: 0 0 48px 0; } - .main-menu .menu-togglable:first-child { + .main-menu .menu-toggleable:first-child { margin-bottom: 0; padding-bottom: 0; } - .main-menu .menu-togglable li { + .main-menu .menu-toggleable li { padding: 0; } .main-menu .menu-title { border-left: 5px solid transparent; @@ -846,13 +846,13 @@ eos-alert ~ .content { margin-right: 0; } /* Uncollapsed sidebar styles for dropdown menu */ -.menu-togglable .menu-dropdown-list { +.menu-toggleable .menu-dropdown-list { background: #f2f2f2; padding-top: 0; } - .menu-togglable .menu-dropdown-list li a { + .menu-toggleable .menu-dropdown-list li a { padding-left: 48px; text-decoration: none; } - .menu-togglable .menu-dropdown-list li a:hover { + .menu-toggleable .menu-dropdown-list li a:hover { text-decoration: underline; } .menu-collapsed-title, .main-collapsed-single { @@ -894,20 +894,20 @@ eos-alert ~ .content { margin: 0; } .collapsed-sidebar.main-menu .menu-title-content, .collapsed-sidebar.main-menu .menu-expand { display: none; } - .collapsed-sidebar.main-menu .menu-togglable { + .collapsed-sidebar.main-menu .menu-toggleable { height: 100%; max-height: calc(100vh - 141px); overflow-x: hidden; overflow-y: auto; width: 100%; } - .collapsed-sidebar.main-menu .menu-togglable .menu-item { + .collapsed-sidebar.main-menu .menu-toggleable .menu-item { position: static; } - .collapsed-sidebar.main-menu .menu-togglable .menu-item .menu-element { + .collapsed-sidebar.main-menu .menu-toggleable .menu-item .menu-element { display: none; position: absolute; } - .collapsed-sidebar.main-menu .menu-togglable .menu-item .menu-dropdown-list { + .collapsed-sidebar.main-menu .menu-toggleable .menu-item .menu-dropdown-list { border: 1px solid #f2f2f2; } - .collapsed-sidebar.main-menu .menu-togglable .menu-item:hover > .menu-element { + .collapsed-sidebar.main-menu .menu-toggleable .menu-item:hover > .menu-element { display: flex; } .collapsed-sidebar.main-menu .menu-dropdown-list { background: #fff; @@ -1023,15 +1023,15 @@ eos-alert ~ .content { max-height: calc(100vh - 85px); overflow-y: scroll; padding-top: 16px; } - .mobile-menu nav .menu-togglable { + .mobile-menu nav .menu-toggleable { margin: 0; padding: 0; } - .mobile-menu nav .menu-togglable li { + .mobile-menu nav .menu-toggleable li { cursor: pointer; list-style: none; margin: 0; padding: 0; } - .mobile-menu nav .menu-togglable li .menu-title { + .mobile-menu nav .menu-toggleable li .menu-title { border-left: 5px solid transparent; color: #141823; cursor: pointer; @@ -1041,32 +1041,32 @@ eos-alert ~ .content { padding: 8px 24px; transition: .1s; user-select: none; } - .mobile-menu nav .menu-togglable li .menu-title i { + .mobile-menu nav .menu-toggleable li .menu-title i { font-size: 18px; height: 18px; text-align: center; width: 18px; } - .mobile-menu nav .menu-togglable li .menu-title:hover { + .mobile-menu nav .menu-toggleable li .menu-title:hover { border-left: 5px solid #30ba78; text-decoration: none; } - .mobile-menu nav .menu-togglable li .menu-title.selected { + .mobile-menu nav .menu-toggleable li .menu-title.selected { background-color: #0e7e3c; color: #fff; } - .mobile-menu nav .menu-togglable li .menu-title.selected > label { + .mobile-menu nav .menu-toggleable li .menu-title.selected > label { color: #fff; } - .mobile-menu nav .menu-togglable li .menu-element li a { + .mobile-menu nav .menu-toggleable li .menu-element li a { padding-left: 48px; } - .mobile-menu nav .menu-togglable li.menu-dropdown.selected label { + .mobile-menu nav .menu-toggleable li.menu-dropdown.selected label { color: #fff; } - .mobile-menu nav .menu-togglable li.menu-dropdown input[type='checkbox'] { + .mobile-menu nav .menu-toggleable li.menu-dropdown input[type='checkbox'] { display: none; } - .mobile-menu nav .menu-togglable li.menu-dropdown .menu-element ul { + .mobile-menu nav .menu-toggleable li.menu-dropdown .menu-element ul { display: none; } - .mobile-menu nav .menu-togglable li.menu-dropdown input[type='checkbox']:checked .menu-element > ul, .mobile-menu nav .menu-togglable li.menu-dropdown.selected .menu-element > ul { + .mobile-menu nav .menu-toggleable li.menu-dropdown input[type='checkbox']:checked .menu-element > ul, .mobile-menu nav .menu-toggleable li.menu-dropdown.selected .menu-element > ul { display: block; } - .mobile-menu nav .menu-togglable li.menu-dropdown input[type='checkbox']:checked ~ label, .mobile-menu nav .menu-togglable li.menu-dropdown.selected ~ label { + .mobile-menu nav .menu-toggleable li.menu-dropdown input[type='checkbox']:checked ~ label, .mobile-menu nav .menu-toggleable li.menu-dropdown.selected ~ label { color: #141823; } - .mobile-menu nav .menu-togglable li.menu-dropdown input[type='checkbox']:checked ~ label .menu-expand, .mobile-menu nav .menu-togglable li.menu-dropdown.selected ~ label .menu-expand { + .mobile-menu nav .menu-toggleable li.menu-dropdown input[type='checkbox']:checked ~ label .menu-expand, .mobile-menu nav .menu-toggleable li.menu-dropdown.selected ~ label .menu-expand { margin-right: 0; } .dark-theme .main-menu { @@ -1077,16 +1077,16 @@ eos-alert ~ .content { color: #fff; } .dark-theme .main-menu hr { border-top-color: #686565; } - .dark-theme .main-menu .menu-togglable .menu-dropdown-list { + .dark-theme .main-menu .menu-toggleable .menu-dropdown-list { background: #2b2e38; } - .dark-theme .main-menu .menu-togglable .menu-dropdown-list li a { + .dark-theme .main-menu .menu-toggleable .menu-dropdown-list li a { background: transparent; color: #fff; text-decoration: none; } - .dark-theme .main-menu .menu-togglable .menu-dropdown-list li a:hover { + .dark-theme .main-menu .menu-toggleable .menu-dropdown-list li a:hover { background: transparent; text-decoration: underline; } - .dark-theme .main-menu .menu-togglable .menu-dropdown-list li a.selected { + .dark-theme .main-menu .menu-toggleable .menu-dropdown-list li a.selected { color: #30ba78; text-decoration: none; } .dark-theme .main-menu .menu-dropdown input[type='checkbox']:checked ~ .menu-title, .dark-theme .main-menu .menu-dropdown.selected ~ .menu-title { @@ -1103,9 +1103,9 @@ eos-alert ~ .content { background-color: #2b2e38; } .dark-theme .mobile-menu nav hr { border-top-color: #686565; } - .dark-theme .mobile-menu nav .menu-togglable .menu-dropdown-list { + .dark-theme .mobile-menu nav .menu-toggleable .menu-dropdown-list { background: #2b2e38; } - .dark-theme .mobile-menu nav .menu-togglable li .menu-title { + .dark-theme .mobile-menu nav .menu-toggleable li .menu-title { color: #fff; } .dark-theme .mobile-menu nav .menu-dropdown input[type='checkbox']:checked ~ .menu-title, .dark-theme .mobile-menu nav .menu-dropdown.selected ~ .menu-title { background-color: #2b2e38; @@ -1128,7 +1128,7 @@ eos-alert ~ .content { .dark-theme .collapsed-sidebar .menu-dropdown-list { border: 1px solid #757575; } -.dark-theme .collapsed-sidebar.main-menu .menu-togglable .menu-item .menu-dropdown-list { +.dark-theme .collapsed-sidebar.main-menu .menu-toggleable .menu-item .menu-dropdown-list { border: 1px solid #757575; } /* Footer diff --git a/admin/webapp/websrc/app/common/styles/eos-ds/images/dark-theme/sign-in-bg.svg b/admin/webapp/websrc/app/common/styles/eos-ds/images/dark-theme/sign-in-bg.svg index 6159c2d44..5cd4beb19 100644 --- a/admin/webapp/websrc/app/common/styles/eos-ds/images/dark-theme/sign-in-bg.svg +++ b/admin/webapp/websrc/app/common/styles/eos-ds/images/dark-theme/sign-in-bg.svg @@ -1,5 +1,5 @@ - + diff --git a/admin/webapp/websrc/app/common/styles/eos-ds/images/sign-in-bg.svg b/admin/webapp/websrc/app/common/styles/eos-ds/images/sign-in-bg.svg index 6159c2d44..5cd4beb19 100644 --- a/admin/webapp/websrc/app/common/styles/eos-ds/images/sign-in-bg.svg +++ b/admin/webapp/websrc/app/common/styles/eos-ds/images/sign-in-bg.svg @@ -1,5 +1,5 @@ - + diff --git a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-base/titles.scss b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-base/titles.scss index 67ff585aa..8c5e010ca 100644 --- a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-base/titles.scss +++ b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-base/titles.scss @@ -47,7 +47,7 @@ h6, .h6 { border-bottom: 1px solid $eos-underline-title; } -.title-no-margings { +.title-no-margins { margin: 0; } diff --git a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/alerts/alerts.component.scss b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/alerts/alerts.component.scss index a830ac046..7babf86e8 100644 --- a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/alerts/alerts.component.scss +++ b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/alerts/alerts.component.scss @@ -132,7 +132,7 @@ margin-bottom: $eos-alert-global-height; } - // if mobile-menu is open in conjuntion with a alert-global, then the menu needs + // if mobile-menu is open in conjunction with a alert-global, then the menu needs // extra spacing on top @media screen and (max-width: $eos-sd-max) { ~ .mobile-menu { diff --git a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/menu/dark-theme/menu.component.scss b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/menu/dark-theme/menu.component.scss index f0e66ab4c..b21db51a9 100644 --- a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/menu/dark-theme/menu.component.scss +++ b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/menu/dark-theme/menu.component.scss @@ -14,7 +14,7 @@ border-top-color: $eos-dark-main-menu-border; } - .menu-togglable .menu-dropdown-list { + .menu-toggleable .menu-dropdown-list { background: $eos-dark-main-menu-background; li a { @@ -57,7 +57,7 @@ border-top-color: $eos-dark-main-menu-border; } - .menu-togglable { + .menu-toggleable { .menu-dropdown-list { background: $eos-dark-main-menu-background; } @@ -100,7 +100,7 @@ } } - .collapsed-sidebar.main-menu .menu-togglable .menu-item .menu-dropdown-list { + .collapsed-sidebar.main-menu .menu-toggleable .menu-item .menu-dropdown-list { border: $eos-mm-dropdown-dark; } } diff --git a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/menu/menu.component.scss b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/menu/menu.component.scss index cf394167f..8477004dd 100644 --- a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/menu/menu.component.scss +++ b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/menu/menu.component.scss @@ -23,7 +23,7 @@ display: none; } - .menu-togglable { + .menu-toggleable { margin-bottom: $eos-menu-ul-margin-bottom; max-height: $eos-menu-navbar-max-height; overflow-x: hidden; @@ -130,7 +130,7 @@ } /* Uncollapsed sidebar styles for dropdown menu */ -.menu-togglable { +.menu-toggleable { .menu-dropdown-list { background: $eos-menu-bg; padding-top: 0; @@ -222,7 +222,7 @@ display: none; } - .menu-togglable { + .menu-toggleable { height: 100%; max-height: $eos-menu-navbar-max-height; overflow-x: hidden; @@ -426,7 +426,7 @@ padding-top: $eos-mm-nav-wrap-padding-top; } - .menu-togglable { + .menu-toggleable { margin: 0; padding: 0; diff --git a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/tooltip/tooltip.component.scss b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/tooltip/tooltip.component.scss index 9531a8b57..d359e3645 100644 --- a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/tooltip/tooltip.component.scss +++ b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-components/tooltip/tooltip.component.scss @@ -1,6 +1,6 @@ /* Tooltip ========================================================================== */ -// overwrite Boostrap's default tooltip color +// overwrite Bootstrap's default tooltip color .tooltip { &-inner { background-color: $eos-tooltip-color; diff --git a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-elements/badges/index.scss b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-elements/badges/index.scss index d8329f0b9..224ac7421 100644 --- a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-elements/badges/index.scss +++ b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-elements/badges/index.scss @@ -1,6 +1,6 @@ /* Badges ========================================================================== */ -// Used to copile individual compontes to CSS +// Used to compile individual compontes to CSS @import '../../eos-base/variables/index'; @import 'badges.variables'; diff --git a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-elements/buttons/index.scss b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-elements/buttons/index.scss index 1ba207a2e..150486a5b 100644 --- a/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-elements/buttons/index.scss +++ b/admin/webapp/websrc/app/common/styles/eos-ds/scss/eos-elements/buttons/index.scss @@ -1,6 +1,6 @@ /* Buttons ========================================================================== */ -// Used to copile individual compontes to CSS +// Used to compile individual compontes to CSS @import '../../eos-base/variables/index'; @import 'buttons.variables'; diff --git a/admin/webapp/websrc/app/common/styles/eos-icon/fonts/eos-icons.svg b/admin/webapp/websrc/app/common/styles/eos-icon/fonts/eos-icons.svg index e55ce3e5d..7ba604778 100644 --- a/admin/webapp/websrc/app/common/styles/eos-icon/fonts/eos-icons.svg +++ b/admin/webapp/websrc/app/common/styles/eos-icon/fonts/eos-icons.svg @@ -2229,7 +2229,7 @@ v43h43v-43h-43zM405 85v43h43q0 -18 -12.5 -30.5t-30.5 -12.5zM107 299v-256h256v-43 -
diff --git a/admin/webapp/websrc/app/routes/components/federated-policy-configuration/federated-config-form/types/constants/webhook-constants.ts b/admin/webapp/websrc/app/routes/components/federated-policy-configuration/federated-config-form/types/constants/webhook-constants.ts index 03f56c081..5d4223d0f 100644 --- a/admin/webapp/websrc/app/routes/components/federated-policy-configuration/federated-config-form/types/constants/webhook-constants.ts +++ b/admin/webapp/websrc/app/routes/components/federated-policy-configuration/federated-config-form/types/constants/webhook-constants.ts @@ -110,6 +110,42 @@ export const WebhookTableField = { }, }, }, + { + key: 'username', + wrappers: [FormlyComponents.READONLY_WRAPPER], + type: FormlyComponents.ICON_INPUT, + templateOptions: { + viewValue: 'login.USERNAME', + placeholder: 'login.USERNAME', + isCell: true, + required: false, + hideRequiredMarker: true, + maxLength: 1000, + }, + validators: { + validation: [FormlyValidators.ObjName], + }, + expressionProperties: { + 'templateOptions.disabled': model => { + return !model.isEditable; + }, + }, + }, + { + key: 'password', + type: FormlyComponents.ICON_INPUT, + templateOptions: { + viewValue: 'login.PASSWORD', + isCell: true, + maxLength: 1000, + type: 'password', + }, + expressionProperties: { + 'templateOptions.disabled': model => { + return !model.isEditable; + }, + }, + }, { key: 'use_proxy', type: FormlyComponents.CHECKBOX, diff --git a/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.ts b/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.ts index 1193ccd45..f8815e6ab 100644 --- a/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.ts +++ b/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.ts @@ -141,7 +141,7 @@ export class GlobalNotificationsComponent implements OnInit { generateNotifications(): void { this.generateManagerNotifications(); - this.generaterUserNotifications(); + this.generateUserNotifications(); this.generateSystemAlertNotifications(); } @@ -346,7 +346,7 @@ export class GlobalNotificationsComponent implements OnInit { } } - private generaterUserNotifications(): void { + private generateUserNotifications(): void { if (this.passwordExpiration >= 0 && this.passwordExpiration < 10) { this.globalNotifications.push({ type: GlobalNotificationType.USER_NOTIFICATION, diff --git a/admin/webapp/websrc/app/routes/components/multi-cluster-grid/multi-cluster-grid-action-cell/multi-cluster-grid-action-cell.component.ts b/admin/webapp/websrc/app/routes/components/multi-cluster-grid/multi-cluster-grid-action-cell/multi-cluster-grid-action-cell.component.ts index 99231f40a..40ff744f7 100644 --- a/admin/webapp/websrc/app/routes/components/multi-cluster-grid/multi-cluster-grid-action-cell/multi-cluster-grid-action-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/multi-cluster-grid/multi-cluster-grid-action-cell/multi-cluster-grid-action-cell.component.ts @@ -28,7 +28,7 @@ export class MultiClusterGridActionCellComponent implements ICellRendererAngular buttonDisplayMap: any; left_status: string = MapConstant.FED_STATUS.LEFT; disconnect_status: string = MapConstant.FED_STATUS.DISCONNECTED; - upgrade_status: string = MapConstant.FED_STATUS.UPGADE_REQUIRED; + upgrade_status: string = MapConstant.FED_STATUS.UPGRADE_REQUIRED; kicked_status: string = MapConstant.FED_STATUS.KICKED; pending_status: string = MapConstant.FED_STATUS.PENDING; primaryClusterRestVersion: string = ''; diff --git a/admin/webapp/websrc/app/routes/components/network-rules/network-rules.component.ts b/admin/webapp/websrc/app/routes/components/network-rules/network-rules.component.ts index 28b552cc2..a089b48a0 100644 --- a/admin/webapp/websrc/app/routes/components/network-rules/network-rules.component.ts +++ b/admin/webapp/websrc/app/routes/components/network-rules/network-rules.component.ts @@ -422,7 +422,7 @@ export class NetworkRulesComponent implements OnInit, OnChanges, OnDestroy { // confirm actions setTimeout(() => { this.gridApi!.deselectAll(); - this.networkRulesService.squence = + this.networkRulesService.sequence = GlobalConstant.NEW_ID_SEED.NETWORK_RULE; this.getNetworkRules(); }, 2000); diff --git a/admin/webapp/websrc/app/routes/components/network-rules/partial/action-buttons/action-buttons.component.html b/admin/webapp/websrc/app/routes/components/network-rules/partial/action-buttons/action-buttons.component.html index ec2115d87..4d52bdf37 100644 --- a/admin/webapp/websrc/app/routes/components/network-rules/partial/action-buttons/action-buttons.component.html +++ b/admin/webapp/websrc/app/routes/components/network-rules/partial/action-buttons/action-buttons.component.html @@ -37,7 +37,7 @@ class="eos-icons icon-18 hand text-action" id="promote-from-action" *ngIf="buttonDisplayMap.promote" - (click)="promoteNeworkRuleOnEntry(params.data)" + (click)="promoteNetworkRuleOnEntry(params.data)" matTooltip="{{ 'policy.PROMOTE' | translate }}" matTooltipPosition="above" >ingress diff --git a/admin/webapp/websrc/app/routes/components/network-rules/partial/action-buttons/action-buttons.component.ts b/admin/webapp/websrc/app/routes/components/network-rules/partial/action-buttons/action-buttons.component.ts index a2d44313d..0884cbdc0 100644 --- a/admin/webapp/websrc/app/routes/components/network-rules/partial/action-buttons/action-buttons.component.ts +++ b/admin/webapp/websrc/app/routes/components/network-rules/partial/action-buttons/action-buttons.component.ts @@ -214,7 +214,7 @@ export class ActionButtonsComponent implements ICellRendererAngularComp { }, 500); }; - promoteNeworkRuleOnEntry = id => { + promoteNetworkRuleOnEntry = id => { let payload = { request: { ids: [id], diff --git a/admin/webapp/websrc/app/routes/components/network-rules/partial/add-edit-network-rule-modal/add-edit-network-rule-modal.component.ts b/admin/webapp/websrc/app/routes/components/network-rules/partial/add-edit-network-rule-modal/add-edit-network-rule-modal.component.ts index 6ab9ea142..71e8ae5fd 100644 --- a/admin/webapp/websrc/app/routes/components/network-rules/partial/add-edit-network-rule-modal/add-edit-network-rule-modal.component.ts +++ b/admin/webapp/websrc/app/routes/components/network-rules/partial/add-edit-network-rule-modal/add-edit-network-rule-modal.component.ts @@ -91,7 +91,7 @@ export class AddEditNetworkRuleModalComponent implements OnInit { ).slice() ) ); - let enpointList = + let endpointList = this.data.source === GlobalConstant.NAV_SOURCE.FED_POLICY ? this.data.networkRuleOptions.groupList.map(group => group.name) : this.data.networkRuleOptions.hostList @@ -103,13 +103,13 @@ export class AddEditNetworkRuleModalComponent implements OnInit { .get('from')! .valueChanges.pipe( startWith(''), - map((from: string) => this.filter(from, enpointList)) + map((from: string) => this.filter(from, endpointList)) ); this.filteredToEndpoints = this.addEditNetworkRuleForm .get('to')! .valueChanges.pipe( startWith(''), - map((to: string) => this.filter(to, enpointList)) + map((to: string) => this.filter(to, endpointList)) ); } @@ -187,7 +187,7 @@ export class AddEditNetworkRuleModalComponent implements OnInit { state: GlobalConstant.NETWORK_RULES_STATE.NEW, disable: false, learned: false, - id: this.networkRulesService.squence++, + id: this.networkRulesService.sequence++, }; }; diff --git a/admin/webapp/websrc/app/routes/components/security-risk-panel/partial/score-instruction/score-instruction.component.ts b/admin/webapp/websrc/app/routes/components/security-risk-panel/partial/score-instruction/score-instruction.component.ts index 8b862fa7d..e0b81a234 100644 --- a/admin/webapp/websrc/app/routes/components/security-risk-panel/partial/score-instruction/score-instruction.component.ts +++ b/admin/webapp/websrc/app/routes/components/security-risk-panel/partial/score-instruction/score-instruction.component.ts @@ -27,7 +27,7 @@ export class ScoreInstructionComponent { }; openScoreImprovementConsole = () => { - const scoreImpovementDialogRef = this.dialog.open( + const scoreImprovementDialogRef = this.dialog.open( ScoreImprovementModalComponent, { data: { @@ -39,7 +39,7 @@ export class ScoreInstructionComponent { height: '685px', } ); - scoreImpovementDialogRef.afterClosed().subscribe(result => { + scoreImprovementDialogRef.afterClosed().subscribe(result => { this.dashboardService.refresh(); }); }; diff --git a/admin/webapp/websrc/app/routes/components/security-risk-panel/security-risk-panel.component.ts b/admin/webapp/websrc/app/routes/components/security-risk-panel/security-risk-panel.component.ts index 19a4a0f52..beec949b9 100644 --- a/admin/webapp/websrc/app/routes/components/security-risk-panel/security-risk-panel.component.ts +++ b/admin/webapp/websrc/app/routes/components/security-risk-panel/security-risk-panel.component.ts @@ -127,7 +127,7 @@ export class SecurityRiskPanelComponent implements OnInit { }; openScoreImprovementConsole = () => { - const scoreImpovementDialogRef = this.dialog.open( + const scoreImprovementDialogRef = this.dialog.open( ScoreImprovementModalComponent, { data: { @@ -139,7 +139,7 @@ export class SecurityRiskPanelComponent implements OnInit { height: '685px', } ); - scoreImpovementDialogRef.afterClosed().subscribe(result => { + scoreImprovementDialogRef.afterClosed().subscribe(result => { this.dashboardService.refresh(); }); }; diff --git a/admin/webapp/websrc/app/routes/components/security-risk-printable-report/risks-view-report/risk-view-report-description-col/risk-view-report-description-col.component.html b/admin/webapp/websrc/app/routes/components/security-risk-printable-report/risks-view-report/risk-view-report-description-col/risk-view-report-description-col.component.html index 49cf3e755..1a2b6264e 100644 --- a/admin/webapp/websrc/app/routes/components/security-risk-printable-report/risks-view-report/risk-view-report-description-col/risk-view-report-description-col.component.html +++ b/admin/webapp/websrc/app/routes/components/security-risk-printable-report/risks-view-report/risk-view-report-description-col/risk-view-report-description-col.component.html @@ -1,3 +1,3 @@ -
+
{{ descriptionLine }}
diff --git a/admin/webapp/websrc/app/routes/components/security-risk-printable-report/risks-view-report/risk-view-report-description-col/risk-view-report-description-col.component.ts b/admin/webapp/websrc/app/routes/components/security-risk-printable-report/risks-view-report/risk-view-report-description-col/risk-view-report-description-col.component.ts index f7fba07bf..5166a3981 100644 --- a/admin/webapp/websrc/app/routes/components/security-risk-printable-report/risks-view-report/risk-view-report-description-col/risk-view-report-description-col.component.ts +++ b/admin/webapp/websrc/app/routes/components/security-risk-printable-report/risks-view-report/risk-view-report-description-col/risk-view-report-description-col.component.ts @@ -7,14 +7,14 @@ import { Component, OnInit, Input } from '@angular/core'; styleUrls: ['./risk-view-report-description-col.component.scss'], }) export class RiskViewReportDescriptionColComponent implements OnInit { - displayedDescrition: string[]; + displayedDescription: string[]; @Input() description: string; constructor() {} ngOnInit(): void { - this.displayedDescrition = this.description + this.displayedDescription = this.description ? this.description.split('\n') : ['N/A']; } diff --git a/admin/webapp/websrc/app/routes/components/waf-sensors/partial/add-edit-rule-modal/add-edit-rule-modal.component.html b/admin/webapp/websrc/app/routes/components/waf-sensors/partial/add-edit-rule-modal/add-edit-rule-modal.component.html index 9ccf1a6bd..41506f156 100644 --- a/admin/webapp/websrc/app/routes/components/waf-sensors/partial/add-edit-rule-modal/add-edit-rule-modal.component.html +++ b/admin/webapp/websrc/app/routes/components/waf-sensors/partial/add-edit-rule-modal/add-edit-rule-modal.component.html @@ -71,7 +71,7 @@

[attr.maxlength]="'general.FILTER_MAX_LEN' | translate" />

diff --git a/admin/webapp/websrc/app/routes/pages/login/login.component.ts b/admin/webapp/websrc/app/routes/pages/login/login.component.ts index ef5a9e91a..f9779e833 100644 --- a/admin/webapp/websrc/app/routes/pages/login/login.component.ts +++ b/admin/webapp/websrc/app/routes/pages/login/login.component.ts @@ -526,8 +526,8 @@ export class LoginComponent implements OnInit, OnDestroy { } private nav2LinkedUrl(url) { - let trimedUrl = url.split('#')[1]; - let pathSec = trimedUrl.split('?'); + let trimmedUrl = url.split('#')[1]; + let pathSec = trimmedUrl.split('?'); let refPath = pathSec[0]; let querySec = pathSec[1] ? pathSec[1].split('&') : []; let query = {}; diff --git a/admin/webapp/websrc/app/routes/registries/regestries-communication.service.ts b/admin/webapp/websrc/app/routes/registries/registries-communication.service.ts similarity index 100% rename from admin/webapp/websrc/app/routes/registries/regestries-communication.service.ts rename to admin/webapp/websrc/app/routes/registries/registries-communication.service.ts diff --git a/admin/webapp/websrc/app/routes/registries/registries-table/add-registry-dialog/add-registry-dialog.component.ts b/admin/webapp/websrc/app/routes/registries/registries-table/add-registry-dialog/add-registry-dialog.component.ts index 05d6f0eb2..06a1441a8 100644 --- a/admin/webapp/websrc/app/routes/registries/registries-table/add-registry-dialog/add-registry-dialog.component.ts +++ b/admin/webapp/websrc/app/routes/registries/registries-table/add-registry-dialog/add-registry-dialog.component.ts @@ -26,7 +26,7 @@ import { import { RegistriesService } from '@services/registries.service'; import { finalize, take } from 'rxjs/operators'; import { TestSettingsDialogComponent } from './test-connection-dialog/test-settings-dialog.component'; -import { RegistriesCommunicationService } from '../../regestries-communication.service'; +import { RegistriesCommunicationService } from '../../registries-communication.service'; import { GlobalConstant } from '@common/constants/global.constant'; import { NotificationService } from '@services/notification.service'; import { FormlyFieldConfig, FormlyFormOptions } from '@ngx-formly/core'; diff --git a/admin/webapp/websrc/app/routes/registries/registries-table/registries-table.component.ts b/admin/webapp/websrc/app/routes/registries/registries-table/registries-table.component.ts index b134982db..37d8bbb4e 100644 --- a/admin/webapp/websrc/app/routes/registries/registries-table/registries-table.component.ts +++ b/admin/webapp/websrc/app/routes/registries/registries-table/registries-table.component.ts @@ -18,7 +18,7 @@ import { MatDialog } from '@angular/material/dialog'; import { ErrorResponse, RegistryConfig, Summary } from '@common/types'; import { RegistriesTableButtonsComponent } from './registries-table-buttons/registries-table-buttons.component'; import { RegistriesService } from '@services/registries.service'; -import { RegistriesCommunicationService } from '../regestries-communication.service'; +import { RegistriesCommunicationService } from '../registries-communication.service'; import { TranslateService } from '@ngx-translate/core'; import { RegistryTableStatusCellComponent } from './registry-table-status-cell/registry-table-status-cell.component'; import { cloneDeep } from 'lodash'; diff --git a/admin/webapp/websrc/app/routes/registries/registries.component.ts b/admin/webapp/websrc/app/routes/registries/registries.component.ts index b711d2c3b..2eb6d1a2c 100644 --- a/admin/webapp/websrc/app/routes/registries/registries.component.ts +++ b/admin/webapp/websrc/app/routes/registries/registries.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit, OnDestroy } from '@angular/core'; -import { RegistriesCommunicationService } from './regestries-communication.service'; +import { RegistriesCommunicationService } from './registries-communication.service'; import { catchError, map } from 'rxjs/operators'; import { MultiClusterService } from '@services/multi-cluster.service'; import { ActivatedRoute } from '@angular/router'; diff --git a/admin/webapp/websrc/app/routes/registries/registries.module.ts b/admin/webapp/websrc/app/routes/registries/registries.module.ts index f7c5431f1..0f815cc06 100644 --- a/admin/webapp/websrc/app/routes/registries/registries.module.ts +++ b/admin/webapp/websrc/app/routes/registries/registries.module.ts @@ -43,7 +43,7 @@ import { LayersTableCvesCellComponent } from './registry-details/registry-detail import { MatMenuModule } from '@angular/material/menu'; import { MatTooltipModule } from '@angular/material/tooltip'; import { QuickFilterModule } from '@components/quick-filter/quick-filter.module'; -import { RegistriesCommunicationService } from './regestries-communication.service'; +import { RegistriesCommunicationService } from './registries-communication.service'; import { RegistryDetailsTableStatusCellComponent } from './registry-details/registry-details-table/registry-details-table-status-cell/registry-details-table-status-cell.component'; import { LoadingButtonModule } from '@components/ui/loading-button/loading-button.module'; import { MatSnackBarModule } from '@angular/material/snack-bar'; diff --git a/admin/webapp/websrc/app/routes/registries/registry-details/registry-details-table/registry-details-dialog/registry-modules/registry-modules.component.ts b/admin/webapp/websrc/app/routes/registries/registry-details/registry-details-table/registry-details-dialog/registry-modules/registry-modules.component.ts index db6e1172c..e623bf96a 100644 --- a/admin/webapp/websrc/app/routes/registries/registry-details/registry-details-table/registry-details-dialog/registry-modules/registry-modules.component.ts +++ b/admin/webapp/websrc/app/routes/registries/registry-details/registry-details-table/registry-details-dialog/registry-modules/registry-modules.component.ts @@ -55,7 +55,7 @@ export class RegistryModulesComponent { name: module.name, source: module.source, version: module.version, - count_of_vulnerabilies: module.cves + count_of_vulnerabilities: module.cves ? this.translateService.instant('registry.gridHeader.FIXABLE') + ': ' + module.cves.filter( @@ -66,7 +66,7 @@ export class RegistryModulesComponent { ': ' + module.cves.length : '', - vulnerabilites: module.cves + vulnerabilities: module.cves ? `'${module.cves .map(cve => { if (vulMap[cve.name]) { diff --git a/admin/webapp/websrc/app/routes/registries/registry-details/registry-details.component.ts b/admin/webapp/websrc/app/routes/registries/registry-details/registry-details.component.ts index 36f8ec00f..cd09c7abb 100644 --- a/admin/webapp/websrc/app/routes/registries/registry-details/registry-details.component.ts +++ b/admin/webapp/websrc/app/routes/registries/registry-details/registry-details.component.ts @@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { RegistriesCommunicationService, RegistryDetails, -} from '../regestries-communication.service'; +} from '../registries-communication.service'; import { FormControl } from '@angular/forms'; import { catchError, tap } from 'rxjs/operators'; import { arrayToCsv } from '@common/utils/common.utils'; diff --git a/admin/webapp/websrc/app/routes/security-events/partial/advanced-filter-modal/advanced-filter-modal.service.ts b/admin/webapp/websrc/app/routes/security-events/partial/advanced-filter-modal/advanced-filter-modal.service.ts index de91c860c..16efe15b4 100644 --- a/admin/webapp/websrc/app/routes/security-events/partial/advanced-filter-modal/advanced-filter-modal.service.ts +++ b/admin/webapp/websrc/app/routes/security-events/partial/advanced-filter-modal/advanced-filter-modal.service.ts @@ -20,7 +20,7 @@ export const FilterCategory = { file: 'file', tunnel: 'tunnel', process: 'process', - priviledge: 'priviledge', + privilege: 'privilege', }; export const Other = { diff --git a/admin/webapp/websrc/app/routes/security-events/partial/review-network-rule-modal/review-network-rule-modal.component.ts b/admin/webapp/websrc/app/routes/security-events/partial/review-network-rule-modal/review-network-rule-modal.component.ts index b6afe2e24..0b7fce127 100644 --- a/admin/webapp/websrc/app/routes/security-events/partial/review-network-rule-modal/review-network-rule-modal.component.ts +++ b/admin/webapp/websrc/app/routes/security-events/partial/review-network-rule-modal/review-network-rule-modal.component.ts @@ -60,7 +60,7 @@ export class ReviewNetworkRuleModalComponent implements OnInit { if (this.data.networkRule.id) { this.prepareRegularNetworkRule(); } else { - this.prepareImplictNetworkRule(); + this.prepareImplicitNetworkRule(); } }; @@ -95,7 +95,7 @@ export class ReviewNetworkRuleModalComponent implements OnInit { MapConstant.colourMap[this.data.networkRule.cfg_type.toUpperCase()]; }; - private prepareImplictNetworkRule = () => { + private prepareImplicitNetworkRule = () => { let srcGroup = this.data.secEvent.endpoint.source.group4Rule; let destGroup = this.data.secEvent.endpoint.destination.group4Rule; this.violatedImplicitRuleText = this.translate.instant( diff --git a/admin/webapp/websrc/app/routes/security-events/security-events.component.html b/admin/webapp/websrc/app/routes/security-events/security-events.component.html index 5aab07fb3..73256c5a9 100644 --- a/admin/webapp/websrc/app/routes/security-events/security-events.component.html +++ b/admin/webapp/websrc/app/routes/security-events/security-events.component.html @@ -31,7 +31,7 @@
diff --git a/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form-config/constants/tls-constants.ts b/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form-config/constants/tls-constants.ts index 78ccb145f..facfa22fc 100644 --- a/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form-config/constants/tls-constants.ts +++ b/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form-config/constants/tls-constants.ts @@ -64,7 +64,7 @@ export const TlsTableField: FormlyFieldConfig = { try { const cert = certificateDeserializer.getCertificate(context); const manifest: CertificateManifest = - certificateDeserializer.getMainfest(cert); + certificateDeserializer.getManifest(cert); return { 'setting.tls.CERTIFICATE_MANIFEST.COMMON_NAME': diff --git a/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form-config/constants/webhook-constants.ts b/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form-config/constants/webhook-constants.ts index a5d6bda53..6304f9d24 100644 --- a/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form-config/constants/webhook-constants.ts +++ b/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form-config/constants/webhook-constants.ts @@ -73,6 +73,7 @@ export const WebhookTableField = { templateOptions: { viewValue: 'setting.webhook.WH_TYPE', placeholder: 'setting.webhook.WH_TYPE', + isCell: true, items: WebhookTypes, required: true, hideRequiredMarker: true, @@ -112,6 +113,48 @@ export const WebhookTableField = { }, }, }, + { + key: 'username', + wrappers: [FormlyComponents.READONLY_WRAPPER], + type: FormlyComponents.ICON_INPUT, + templateOptions: { + viewValue: 'login.USERNAME', + placeholder: 'login.USERNAME', + isCell: true, + required: false, + hideRequiredMarker: true, + maxLength: 1000, + }, + validators: { + validation: [FormlyValidators.ObjName], + }, + expressionProperties: { + 'templateOptions.disabled': (model, formState) => { + return ( + !formState.permissions.isWebhookAuthorized || + model.cfg_type === GlobalConstant.CFG_TYPE.FED + ); + }, + }, + }, + { + key: 'password', + type: FormlyComponents.ICON_INPUT, + templateOptions: { + viewValue: 'login.PASSWORD', + isCell: true, + maxLength: 1000, + type: 'password', + }, + expressionProperties: { + 'templateOptions.disabled': (model, formState) => { + return ( + !formState.permissions.isWebhookAuthorized || + model.cfg_type === GlobalConstant.CFG_TYPE.FED + ); + }, + }, + }, { key: 'use_proxy', type: FormlyComponents.CHECKBOX, diff --git a/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form.component.ts b/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form.component.ts index f0101ad27..a194b31f6 100644 --- a/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form.component.ts +++ b/admin/webapp/websrc/app/routes/settings/configuration/config-form/config-form.component.ts @@ -216,6 +216,9 @@ export class ConfigFormComponent implements OnInit, OnDestroy { this.updateWebhookValueChanges(); this.notificationService.open(this.tr.instant('setting.SUBMIT_OK')); + this._config.webhooks.forEach(webhook => { + webhook.password = ''; + }); this.configOptions.resetModel?.(this._config); setTimeout(() => this.configOptions.resetModel?.(this._config)); }, diff --git a/admin/webapp/websrc/app/routes/settings/configuration/remote-repository-form/remote-repository-form-config/index.ts b/admin/webapp/websrc/app/routes/settings/configuration/remote-repository-form/remote-repository-form-config/index.ts index 80065fb6a..9c025b0f8 100644 --- a/admin/webapp/websrc/app/routes/settings/configuration/remote-repository-form/remote-repository-form-config/index.ts +++ b/admin/webapp/websrc/app/routes/settings/configuration/remote-repository-form/remote-repository-form-config/index.ts @@ -8,7 +8,7 @@ export const RemoteRepoFormConfig: FormlyFieldConfig[] = [ fieldGroupClassName: 'row', fieldGroup: [ { - className: 'col-12 col-md-6 mt-2', + className: 'col-12 col-md-6', ...ProviderField, }, { diff --git a/admin/webapp/websrc/app/routes/vulnerabilities/vulnerabilities.filter.service.ts b/admin/webapp/websrc/app/routes/vulnerabilities/vulnerabilities.filter.service.ts index ae153f978..9ac702c41 100644 --- a/admin/webapp/websrc/app/routes/vulnerabilities/vulnerabilities.filter.service.ts +++ b/admin/webapp/websrc/app/routes/vulnerabilities/vulnerabilities.filter.service.ts @@ -332,20 +332,20 @@ export class VulnerabilitiesFilterService { } filterView( - vulnerabilites: VulnerabilityAsset[], + vulnerabilities: VulnerabilityAsset[], selectedView: VulnerabilityView ): VulnerabilityAsset[] { switch (selectedView) { case 'all': - return vulnerabilites; + return vulnerabilities; case 'containers': - return vulnerabilites.filter(vul => vul.workloads.length); + return vulnerabilities.filter(vul => vul.workloads.length); case 'infrastructure': - return vulnerabilites.filter( + return vulnerabilities.filter( vul => vul.nodes.length || vul.platforms.length ); case 'registry': - return vulnerabilites.filter(vul => vul.images.length); + return vulnerabilities.filter(vul => vul.images.length); } } } diff --git a/admin/webapp/websrc/assets/i18n/en-common.json b/admin/webapp/websrc/assets/i18n/en-common.json index 1ab021dd6..3928db9ab 100644 --- a/admin/webapp/websrc/assets/i18n/en-common.json +++ b/admin/webapp/websrc/assets/i18n/en-common.json @@ -242,7 +242,7 @@ "CVE_DB_OLD": "CVE Database has not been updated for {{day}} days", "UPGRADE_AVAILABLE": "NeuVector is running {{currentVersion}} and can be upgraded to {{newVersion}}", "RBAC_ALERT": { - "RETRIVE_BOOTSTRAP_PASSWORD": "To retrieve the bootstrap password from Kubernetes Secret.", + "RETRIEVE_BOOTSTRAP_PASSWORD": "To retrieve the bootstrap password from Kubernetes Secret.", "PASSWORD_RETRIEVAL_ERROR": "Unable to get password from K8s Secret ", "ROLEBINDING_DETAILS_LINK": "(role/rolebinding error)", "TITLE_GET_BOOTSTRAP_PASSWORD": "Get Bootstrap Password", @@ -1601,7 +1601,7 @@ "AUTOCOMPLETE_INVALID": "{{field}} not recognized. Click one of the autocomplete options.", "label": { "NETWORK": "Network", - "PRIVILEDGE": "Privilege", + "PRIVILEGE": "Privilege", "FILE": "File", "TUNNEL": "Tunnel", "PROCESS": "Process", @@ -2225,11 +2225,11 @@ "RULE_SAMPLE": "Sample: /dir/xxx, /dir/xxx.*, /dir/*.xxx, /dir/*/abc/* (不支持: [], () and regexp)", "REMOVE_CONFIRM": "Will you remove file access rule? - Filter:", "REMOVE_OK": "Your file access rule has been removed.", - "REMOVE_NG": "Error happened when removing file acess rule!", + "REMOVE_NG": "Error happened when removing file access rule!", "ADD_OK": "Your file access rule has been added.", - "ADD_NG": "Error happened when adding file acess rule!", + "ADD_NG": "Error happened when adding file access rule!", "EDIT_OK": "Your file access rule has been modified.", - "EDIT_NG": "Error happened when editing file acess rule!" + "EDIT_NG": "Error happened when editing file access rule!" }, "dlp": { "TITLE": "DLP", @@ -3175,8 +3175,8 @@ "ENABLED_CPATH_NG": "Error happens when enabling controller control path debug!", "DISABLED_CPATH_NG": "Error happens when disabling controller control path debug!", "ENFORCERS": "Enforcers", - "ENFORCERS_HINT": "Select enforcers to include their support information if necessary. Up to {{maxSlectedEnforcer}} enforcers can be selected.", - "MAX_SELECTED_ENFORCER_HINT": "Please select no more than {{maxSlectedEnforcer}} enforcers for support information.", + "ENFORCERS_HINT": "Select enforcers to include their support information if necessary. Up to {{maxSelectedEnforcer}} enforcers can be selected.", + "MAX_SELECTED_ENFORCER_HINT": "Please select no more than {{maxSelectedEnforcer}} enforcers for support information.", "AS_STANDALONE": "Import configuration as standalone cluster", "RANCHER_EP": "Rancher Endpoint", "NOTICE": "Notice", @@ -3385,7 +3385,7 @@ "ADD_ON_TOP": "Add on Top", "INSERT": "Insert", "EDIT": "Edit", - "ROMOVE": "Remove", + "REMOVE": "Remove", "MOVE": "Move" }, "dialog": { @@ -3467,7 +3467,7 @@ "CALLBACK_URL": "SAML Redirect URI: ", "message": { "GET_SAML_ERR": "Error happened when getting SAML configuration", - "AUDIENCE_URI_ADV": "Specify the Audience URI is recommened." + "AUDIENCE_URI_ADV": "Specify the Audience URI is recommended." } }, "openId": { diff --git a/admin/webapp/websrc/assets/i18n/zh_cn-common.json b/admin/webapp/websrc/assets/i18n/zh_cn-common.json index e7d51a7f2..9ec99ba01 100644 --- a/admin/webapp/websrc/assets/i18n/zh_cn-common.json +++ b/admin/webapp/websrc/assets/i18n/zh_cn-common.json @@ -1600,7 +1600,7 @@ "AUTOCOMPLETE_INVALID": "{{field}}未被识别。单击其中一个自动完成选项。", "label": { "NETWORK": "网络", - "PRIVILEDGE": "权限", + "PRIVILEGE": "权限", "FILE": "文件", "TUNNEL": "隧道", "PROCESS": "进程", @@ -2667,7 +2667,7 @@ "DOWNLOAD": "下载", "CONFIG": "包含配置", "CAN_NOT_CONFIG": "由于配置是通过CRD部署的,配置设定被禁用.", - "NOT_SUPPORT": " 由于不是Kubernates系统,配置设定被禁用.", + "NOT_SUPPORT": " 由于不是Kubernetes系统,配置设定被禁用.", "NOT_BINDING": " 由于要求的绑定不存在,配置设定被禁用.", "EXCLUDE_RULES": "排除缺省规则", "DEFAULT_RULES": "缺省规则", @@ -3171,8 +3171,8 @@ "ENABLED_CPATH_NG": "控制器控制路径调试启用时发生错误!", "DISABLED_CPATH_NG": "控制器控制路径调试停用时发生错误!", "ENFORCERS": "代理", - "ENFORCERS_HINT": "如果需要可以选择代理以加入它们的支持信息. 最多可以选择{{maxSlectedEnforcer}}个", - "MAX_SELECTED_ENFORCER_HINT": "请为支持信息选择不超过{{maxSlectedEnforcer}}个代理.", + "ENFORCERS_HINT": "如果需要可以选择代理以加入它们的支持信息. 最多可以选择{{maxSelectedEnforcer}}个", + "MAX_SELECTED_ENFORCER_HINT": "请为支持信息选择不超过{{maxSelectedEnforcer}}个代理.", "AS_STANDALONE": "作为独立集群导入配置", "RANCHER_EP": "Rancher端点", "NOTICE": "注意", @@ -3380,7 +3380,7 @@ "ADD_ON_TOP": "自顶添加", "INSERT": "添加", "EDIT": "编辑", - "ROMOVE": "删除", + "REMOVE": "删除", "MOVE": "移动" }, "dialog": { diff --git a/admin/webapp/websrc/assets/img/dark-theme/sign-in-bg.svg b/admin/webapp/websrc/assets/img/dark-theme/sign-in-bg.svg index 6159c2d44..5cd4beb19 100644 --- a/admin/webapp/websrc/assets/img/dark-theme/sign-in-bg.svg +++ b/admin/webapp/websrc/assets/img/dark-theme/sign-in-bg.svg @@ -1,5 +1,5 @@ - + diff --git a/admin/webapp/websrc/assets/img/sign-in-bg.svg b/admin/webapp/websrc/assets/img/sign-in-bg.svg index 6159c2d44..5cd4beb19 100644 --- a/admin/webapp/websrc/assets/img/sign-in-bg.svg +++ b/admin/webapp/websrc/assets/img/sign-in-bg.svg @@ -1,5 +1,5 @@ - + diff --git a/build.sbt b/build.sbt index 5095da723..40c8047f4 100644 --- a/build.sbt +++ b/build.sbt @@ -75,7 +75,7 @@ lazy val commonSettings = Seq( ) ) -// lazy val buil1dSettings = Defaults.coreDefaultSettings ++ Seq( +// lazy val build1dSettings = Defaults.coreDefaultSettings ++ Seq( // scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature", "-target:jvm-1.7"), // libraryDependencies := Seq(scalaTest), // libraryDependencies += "javax.activation" % "activation" % "1.1.1", diff --git a/package/Dockerfile b/package/Dockerfile index 957b581d1..22f1f83b8 100644 --- a/package/Dockerfile +++ b/package/Dockerfile @@ -84,7 +84,7 @@ RUN cd /chroot/usr/bin/ && \ rm -rf basename chcon chgrp chmod chown chroot cksum dd df dircolors \ dirname du install install-info join locale localedef mkdir mkfifo \ mknod mktemp paste pathchk readlink realpath sync smidiff smidump \ - smilink smiquery smistrip smixlate tee tiemout tload top truncate \ + smilink smiquery smistrip smixlate tee timeout tload top truncate \ unlink watch FROM micro diff --git a/typos.toml b/typos.toml index bb0866264..05fe3c1a3 100644 --- a/typos.toml +++ b/typos.toml @@ -1,4 +1,13 @@ [files] extend-exclude = [ - "admin/src/main/resources/**" -] \ No newline at end of file + "admin/src/main/resources/**", + "admin/webapp/websrc/assets/img/country-flag/**" +] + +[default.extend-words] +fo = "fo" +EDE = "EDE" +IST = "IST" +indx = "indx" +Implicits = "Implicits" +assemblys = "assemblys"