Commit d2469420adc40e1fefd0f880889fce7edf2621fc

Authored by nickAS21
1 parent e0591bc6

Lwm2m: front add validator json for security config device

@@ -41,7 +41,7 @@ import { @@ -41,7 +41,7 @@ import {
41 DeviceCredentialsDialogLwm2mData, 41 DeviceCredentialsDialogLwm2mData,
42 END_POINT, 42 END_POINT,
43 getDefaultSecurityConfig, 43 getDefaultSecurityConfig,
44 - JSON_ALL_CONFIG 44 + JSON_ALL_CONFIG, SecurityConfigModels, validateSecurityConfig
45 } from '@home/pages/device/lwm2m/security-config.models'; 45 } from '@home/pages/device/lwm2m/security-config.models';
46 import {TranslateService} from '@ngx-translate/core'; 46 import {TranslateService} from '@ngx-translate/core';
47 import {MatDialog} from '@angular/material/dialog'; 47 import {MatDialog} from '@angular/material/dialog';
@@ -285,15 +285,6 @@ export class DeviceCredentialsComponent implements ControlValueAccessor, OnInit, @@ -285,15 +285,6 @@ export class DeviceCredentialsComponent implements ControlValueAccessor, OnInit,
285 } 285 }
286 286
287 private jsonValidator(control: FormControl) { 287 private jsonValidator(control: FormControl) {
288 - try {  
289 - JSON.parse(control.value);  
290 - return null  
291 - } catch (e) {  
292 - return {  
293 - jsonError: {  
294 - parsedJson: "error"  
295 - }  
296 - }  
297 - } 288 + return validateSecurityConfig(control.value) ? null: {jsonError: {parsedJson: "error"}};
298 } 289 }
299 } 290 }
@@ -395,21 +395,4 @@ export class Lwm2mDeviceProfileTransportConfigurationComponent implements Contro @@ -395,21 +395,4 @@ export class Lwm2mDeviceProfileTransportConfigurationComponent implements Contro
395 } 395 }
396 }); 396 });
397 } 397 }
398 -  
399 - isPathInJson(path: string): boolean {  
400 - let isPath = this.findPathInJson(path, ATTRIBUTE);  
401 - if (!isPath) {  
402 - isPath = this.findPathInJson(path, TELEMETRY);  
403 - }  
404 - return !!isPath;  
405 - }  
406 -  
407 - private findPathInJson = (path: string, side: string): string => {  
408 - if (this.configurationValue.observeAttr) {  
409 - if (this.configurationValue.observeAttr[side]) {  
410 - return this.configurationValue.bootstrap[side].find(  
411 - pathJs => pathJs === path);  
412 - }  
413 - }  
414 - }  
415 } 398 }
@@ -27,7 +27,7 @@ export const DEFAULT_ID_SERVER = 123; @@ -27,7 +27,7 @@ export const DEFAULT_ID_SERVER = 123;
27 export const DEFAULT_ID_BOOTSTRAP = 111; 27 export const DEFAULT_ID_BOOTSTRAP = 111;
28 export const DEFAULT_HOST_NAME = 'localhost'; 28 export const DEFAULT_HOST_NAME = 'localhost';
29 export const DEFAULT_PORT_SERVER_NO_SEC = 5685; 29 export const DEFAULT_PORT_SERVER_NO_SEC = 5685;
30 -export const DEFAULT_PORT_BOOTSTRAP_NO_SEC = 5686; 30 +export const DEFAULT_PORT_BOOTSTRAP_NO_SEC = 5687;
31 export const DEFAULT_CLIENT_HOLD_OFF_TIME = 1; 31 export const DEFAULT_CLIENT_HOLD_OFF_TIME = 1;
32 export const DEFAULT_LIFE_TIME = 300; 32 export const DEFAULT_LIFE_TIME = 300;
33 export const DEFAULT_MIN_PERIOD = 1; 33 export const DEFAULT_MIN_PERIOD = 1;
@@ -20,7 +20,6 @@ export const DEFAULT_END_POINT = 'default_client_lwm2m_end_point_no_sec'; @@ -20,7 +20,6 @@ export const DEFAULT_END_POINT = 'default_client_lwm2m_end_point_no_sec';
20 export const BOOTSTRAP_SERVERS = 'servers'; 20 export const BOOTSTRAP_SERVERS = 'servers';
21 export const BOOTSTRAP_SERVER = 'bootstrapServer'; 21 export const BOOTSTRAP_SERVER = 'bootstrapServer';
22 export const LWM2M_SERVER = 'lwm2mServer'; 22 export const LWM2M_SERVER = 'lwm2mServer';
23 -export const JSON_OBSERVE = 'jsonObserve';  
24 export const LEN_MAX_PSK = 64; 23 export const LEN_MAX_PSK = 64;
25 export const LEN_MAX_PRIVATE_KEY = 134; 24 export const LEN_MAX_PRIVATE_KEY = 134;
26 export const LEN_MAX_PUBLIC_KEY_RPK = 182; 25 export const LEN_MAX_PUBLIC_KEY_RPK = 182;
@@ -148,4 +147,41 @@ export function getDefaultSecurityConfig(): SecurityConfigModels { @@ -148,4 +147,41 @@ export function getDefaultSecurityConfig(): SecurityConfigModels {
148 return securityConfigModels; 147 return securityConfigModels;
149 } 148 }
150 149
  150 +const isSecurityConfigModels = (p: any): p is SecurityConfigModels =>
  151 + p.hasOwnProperty('client') &&
  152 + isClientSecurityConfigType(p['client']) &&
  153 + p.hasOwnProperty('bootstrap') &&
  154 + isBootstrapSecurityConfig(p['bootstrap']);
  155 +
  156 +const isClientSecurityConfigType = (p: any): p is ClientSecurityConfigType =>
  157 + p.hasOwnProperty('securityConfigClientMode') &&
  158 + p.hasOwnProperty('endpoint') &&
  159 + p.hasOwnProperty('identity') &&
  160 + p.hasOwnProperty('key') &&
  161 + p.hasOwnProperty('x509');
  162 +
  163 +const isBootstrapSecurityConfig = (p: any): p is BootstrapSecurityConfig =>
  164 + p.hasOwnProperty('bootstrapServer') &&
  165 + isServerSecurityConfig(p['bootstrapServer']) &&
  166 + p.hasOwnProperty('lwm2mServer') &&
  167 + isServerSecurityConfig(p['lwm2mServer']);
  168 +
  169 +const isServerSecurityConfig = (p: any): p is ServerSecurityConfig =>
  170 + p.hasOwnProperty('securityMode') &&
  171 + p.hasOwnProperty('clientPublicKeyOrId') &&
  172 + p.hasOwnProperty('clientSecretKey');
  173 +
  174 +export function validateSecurityConfig(config: string): boolean {
  175 + try {
  176 + const securityConfig= JSON.parse(config);
  177 + if (isSecurityConfigModels(securityConfig)) {
  178 + return true;
  179 + } else {
  180 + return false;
  181 + }
  182 + } catch (e) {
  183 + return false;
  184 + }
  185 +}
  186 +
151 187