Resolve some typos
Use nullptr over NULL Fix confusing regexp Fix issue with non-compliant JWT encoding
This commit is contained in:
		| @@ -65,7 +65,7 @@ class APSettingsForm extends React.Component { | ||||
|             isAPEnabled(apSettings.provision_mode) && | ||||
|             <Fragment> | ||||
|               <TextValidator | ||||
|                 validators={['required', 'matchRegexp:^.{0,32}$']} | ||||
|                 validators={['required', 'matchRegexp:^.{1,32}$']} | ||||
|                 errorMessages={['Access Point SSID is required', 'Access Point SSID must be 32 characeters or less']} | ||||
|                 name="ssid" | ||||
|                 label="Access Point SSID" | ||||
| @@ -75,7 +75,7 @@ class APSettingsForm extends React.Component { | ||||
|                 margin="normal" | ||||
|               /> | ||||
|               <PasswordValidator | ||||
|                     validators={['required', 'matchRegexp:^.{0,64}$']} | ||||
|                     validators={['required', 'matchRegexp:^.{1,64}$']} | ||||
|                     errorMessages={['Access Point Password is required', 'Access Point Password must be 64 characters or less']} | ||||
|                     name="password" | ||||
|                     label="Access Point Password" | ||||
|   | ||||
| @@ -85,7 +85,7 @@ class OTASettingsForm extends React.Component { | ||||
|              /> | ||||
|  | ||||
|              <PasswordValidator | ||||
|                    validators={['required', 'matchRegexp:^.{0,64}$']} | ||||
|                    validators={['required', 'matchRegexp:^.{1,64}$']} | ||||
|                    errorMessages={['OTA Password is required', 'OTA Point Password must be 64 characters or less']} | ||||
|                    name="password" | ||||
|                    label="Password" | ||||
|   | ||||
| @@ -49,7 +49,7 @@ class SecuritySettingsForm extends React.Component { | ||||
|         securitySettings ? | ||||
|           <ValidatorForm onSubmit={this.onSubmit} ref="SecuritySettingsForm"> | ||||
|             <PasswordValidator | ||||
|               validators={['required', 'matchRegexp:^.{0,64}$']} | ||||
|               validators={['required', 'matchRegexp:^.{1,64}$']} | ||||
|               errorMessages={['JWT Secret Required', 'JWT Secret must be 64 characters or less']} | ||||
|               name="jwt_secret" | ||||
|               label="JWT Secret" | ||||
|   | ||||
| @@ -48,7 +48,7 @@ class UserForm extends React.Component { | ||||
|           <DialogContent dividers={true}> | ||||
|             <TextValidator | ||||
|               validators={creating ? ['required', 'uniqueUsername', 'matchRegexp:^[a-zA-Z0-9_\\.]{1,24}$'] : []} | ||||
|               errorMessages={creating ? ['Username is required', "Username already exists", "Must be 1-24 characters: alpha numberic, '_' or '.'"] : []} | ||||
|               errorMessages={creating ? ['Username is required', "Username already exists", "Must be 1-24 characters: alpha numeric, '_' or '.'"] : []} | ||||
|               name="username" | ||||
|               label="Username" | ||||
|               className={classes.textField} | ||||
| @@ -58,7 +58,7 @@ class UserForm extends React.Component { | ||||
|               margin="normal" | ||||
|             /> | ||||
|             <PasswordValidator | ||||
|               validators={['required', 'matchRegexp:^.{0,64}$']} | ||||
|               validators={['required', 'matchRegexp:^.{1,64}$']} | ||||
|               errorMessages={['Password is required', 'Password must be 64 characters or less']} | ||||
|               name="password" | ||||
|               label="Password" | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import React, {Fragment} from 'react'; | ||||
| import React, { Fragment } from 'react'; | ||||
| import PropTypes from 'prop-types'; | ||||
|  | ||||
| import { withStyles } from '@material-ui/core/styles'; | ||||
| @@ -67,7 +67,7 @@ class WiFiSettingsForm extends React.Component { | ||||
|           </ListItemAvatar> | ||||
|           <ListItemText | ||||
|             primary={selectedNetwork.ssid} | ||||
|             secondary={"Security: "+ networkSecurityMode(selectedNetwork) + ", Ch: " + selectedNetwork.channel} | ||||
|             secondary={"Security: " + networkSecurityMode(selectedNetwork) + ", Ch: " + selectedNetwork.channel} | ||||
|           /> | ||||
|           <ListItemSecondaryAction> | ||||
|             <IconButton aria-label="Manual Config" onClick={deselectNetwork}> | ||||
| @@ -84,57 +84,57 @@ class WiFiSettingsForm extends React.Component { | ||||
|     return ( | ||||
|       <div> | ||||
|         { | ||||
|          !wifiSettingsFetched ? | ||||
|           !wifiSettingsFetched ? | ||||
|  | ||||
|          <div className={classes.loadingSettings}> | ||||
|            <LinearProgress className={classes.loadingSettingsDetails}/> | ||||
|            <Typography variant="h4" className={classes.loadingSettingsDetails}> | ||||
|              Loading... | ||||
|            </Typography> | ||||
|          </div> | ||||
|             <div className={classes.loadingSettings}> | ||||
|               <LinearProgress className={classes.loadingSettingsDetails} /> | ||||
|               <Typography variant="h4" className={classes.loadingSettingsDetails}> | ||||
|                 Loading... | ||||
|               </Typography> | ||||
|             </div> | ||||
|  | ||||
|          : wifiSettings ? | ||||
|             : wifiSettings ? | ||||
|  | ||||
|       	 <ValidatorForm onSubmit={onSubmit} ref="WiFiSettingsForm"> | ||||
|            { | ||||
|              selectedNetwork ? this.renderSelectedNetwork() : | ||||
|               <TextValidator | ||||
|                 validators={['required', 'matchRegexp:^.{0,32}$']} | ||||
|                 errorMessages={['SSID is required', 'SSID must be 32 characeters or less']} | ||||
|                 name="ssid" | ||||
|                 label="SSID" | ||||
|                 className={classes.textField} | ||||
|                 value={wifiSettings.ssid} | ||||
|                 onChange={handleValueChange('ssid')} | ||||
|                 margin="normal" | ||||
|               /> | ||||
|             } | ||||
|               { | ||||
|                 !isNetworkOpen(selectedNetwork) && | ||||
|          		<PasswordValidator | ||||
|                   validators={['matchRegexp:^.{0,64}$']} | ||||
|                   errorMessages={['Password must be 64 characters or less']} | ||||
|                   name="password" | ||||
|                   label="Password" | ||||
|                   className={classes.textField} | ||||
|                   value={wifiSettings.password} | ||||
|                   onChange={handleValueChange('password')} | ||||
|                   margin="normal" | ||||
|                 /> | ||||
|               } | ||||
|  | ||||
|               <TextValidator | ||||
|                     validators={['required', 'isHostname']} | ||||
|                     errorMessages={['Hostname is required', "Not a valid hostname"]} | ||||
|                     name="hostname" | ||||
|                     label="Hostname" | ||||
|               <ValidatorForm onSubmit={onSubmit} ref="WiFiSettingsForm"> | ||||
|                 { | ||||
|                   selectedNetwork ? this.renderSelectedNetwork() : | ||||
|                     <TextValidator | ||||
|                       validators={['required', 'matchRegexp:^.{1,32}$']} | ||||
|                       errorMessages={['SSID is required', 'SSID must be 32 characeters or less']} | ||||
|                       name="ssid" | ||||
|                       label="SSID" | ||||
|                       className={classes.textField} | ||||
|                       value={wifiSettings.ssid} | ||||
|                       onChange={handleValueChange('ssid')} | ||||
|                       margin="normal" | ||||
|                     /> | ||||
|                 } | ||||
|                 { | ||||
|                   !isNetworkOpen(selectedNetwork) && | ||||
|                   <PasswordValidator | ||||
|                     validators={['matchRegexp:^.{0,64}$']} | ||||
|                     errorMessages={['Password must be 64 characters or less']} | ||||
|                     name="password" | ||||
|                     label="Password" | ||||
|                     className={classes.textField} | ||||
|                     value={wifiSettings.hostname} | ||||
|                     onChange={handleValueChange('hostname')} | ||||
|                     value={wifiSettings.password} | ||||
|                     onChange={handleValueChange('password')} | ||||
|                     margin="normal" | ||||
|                   /> | ||||
|                 } | ||||
|  | ||||
|         		<FormControlLabel className={classes.checkboxControl} | ||||
|                 <TextValidator | ||||
|                   validators={['required', 'isHostname']} | ||||
|                   errorMessages={['Hostname is required', "Not a valid hostname"]} | ||||
|                   name="hostname" | ||||
|                   label="Hostname" | ||||
|                   className={classes.textField} | ||||
|                   value={wifiSettings.hostname} | ||||
|                   onChange={handleValueChange('hostname')} | ||||
|                   margin="normal" | ||||
|                 /> | ||||
|  | ||||
|                 <FormControlLabel className={classes.checkboxControl} | ||||
|                   control={ | ||||
|                     <Checkbox | ||||
|                       value="static_ip_config" | ||||
| @@ -145,82 +145,82 @@ class WiFiSettingsForm extends React.Component { | ||||
|                   label="Static IP Config?" | ||||
|                 /> | ||||
|  | ||||
|         		{ | ||||
|           		wifiSettings.static_ip_config && | ||||
|           		<Fragment> | ||||
|           			<TextValidator | ||||
|           			  validators={['required', 'isIP']} | ||||
|           			  errorMessages={['Local IP is required', 'Must be an IP address']} | ||||
|           			  name="local_ip" | ||||
|           			  label="Local IP" | ||||
|           			  className={classes.textField} | ||||
|           			  value={wifiSettings.local_ip} | ||||
|           			  onChange={handleValueChange('local_ip')} | ||||
|           			  margin="normal" | ||||
|           			/> | ||||
|                 <TextValidator | ||||
|                   validators={['required', 'isIP']} | ||||
|                   errorMessages={['Gateway IP is required', 'Must be an IP address']} | ||||
|                   name="gateway_ip" | ||||
|                   label="Gateway" | ||||
|                   className={classes.textField} | ||||
|                   value={wifiSettings.gateway_ip} | ||||
|                   onChange={handleValueChange('gateway_ip')} | ||||
|                   margin="normal" | ||||
|                 /> | ||||
|                 <TextValidator | ||||
|           			  validators={['required', 'isIP']} | ||||
|           			  errorMessages={['Subnet mask is required', 'Must be an IP address']} | ||||
|           			  name="subnet_mask" | ||||
|           			  label="Subnet" | ||||
|           			  className={classes.textField} | ||||
|           			  value={wifiSettings.subnet_mask} | ||||
|           			  onChange={handleValueChange('subnet_mask')} | ||||
|                   margin="normal" | ||||
|           			/> | ||||
|                 <TextValidator | ||||
|           			  validators={['isOptionalIP']} | ||||
|           			  errorMessages={['Must be an IP address']} | ||||
|           			  name="dns_ip_1" | ||||
|           			  label="DNS IP #1" | ||||
|           			  className={classes.textField} | ||||
|           			  value={wifiSettings.dns_ip_1} | ||||
|           			  onChange={handleValueChange('dns_ip_1')} | ||||
|                   margin="normal" | ||||
|           			/> | ||||
|                 <TextValidator | ||||
|           			  validators={['isOptionalIP']} | ||||
|           			  errorMessages={['Must be an IP address']} | ||||
|           			  name="dns_ip_2" | ||||
|           			  label="DNS IP #2" | ||||
|           			  className={classes.textField} | ||||
|           			  value={wifiSettings.dns_ip_2} | ||||
|           			  onChange={handleValueChange('dns_ip_2')} | ||||
|                   margin="normal" | ||||
|           			/> | ||||
|           		</Fragment> | ||||
|       		  } | ||||
|                 { | ||||
|                   wifiSettings.static_ip_config && | ||||
|                   <Fragment> | ||||
|                     <TextValidator | ||||
|                       validators={['required', 'isIP']} | ||||
|                       errorMessages={['Local IP is required', 'Must be an IP address']} | ||||
|                       name="local_ip" | ||||
|                       label="Local IP" | ||||
|                       className={classes.textField} | ||||
|                       value={wifiSettings.local_ip} | ||||
|                       onChange={handleValueChange('local_ip')} | ||||
|                       margin="normal" | ||||
|                     /> | ||||
|                     <TextValidator | ||||
|                       validators={['required', 'isIP']} | ||||
|                       errorMessages={['Gateway IP is required', 'Must be an IP address']} | ||||
|                       name="gateway_ip" | ||||
|                       label="Gateway" | ||||
|                       className={classes.textField} | ||||
|                       value={wifiSettings.gateway_ip} | ||||
|                       onChange={handleValueChange('gateway_ip')} | ||||
|                       margin="normal" | ||||
|                     /> | ||||
|                     <TextValidator | ||||
|                       validators={['required', 'isIP']} | ||||
|                       errorMessages={['Subnet mask is required', 'Must be an IP address']} | ||||
|                       name="subnet_mask" | ||||
|                       label="Subnet" | ||||
|                       className={classes.textField} | ||||
|                       value={wifiSettings.subnet_mask} | ||||
|                       onChange={handleValueChange('subnet_mask')} | ||||
|                       margin="normal" | ||||
|                     /> | ||||
|                     <TextValidator | ||||
|                       validators={['isOptionalIP']} | ||||
|                       errorMessages={['Must be an IP address']} | ||||
|                       name="dns_ip_1" | ||||
|                       label="DNS IP #1" | ||||
|                       className={classes.textField} | ||||
|                       value={wifiSettings.dns_ip_1} | ||||
|                       onChange={handleValueChange('dns_ip_1')} | ||||
|                       margin="normal" | ||||
|                     /> | ||||
|                     <TextValidator | ||||
|                       validators={['isOptionalIP']} | ||||
|                       errorMessages={['Must be an IP address']} | ||||
|                       name="dns_ip_2" | ||||
|                       label="DNS IP #2" | ||||
|                       className={classes.textField} | ||||
|                       value={wifiSettings.dns_ip_2} | ||||
|                       onChange={handleValueChange('dns_ip_2')} | ||||
|                       margin="normal" | ||||
|                     /> | ||||
|                   </Fragment> | ||||
|                 } | ||||
|  | ||||
|           <Button variant="contained" color="primary" className={classes.button} type="submit"> | ||||
|             Save | ||||
|                 <Button variant="contained" color="primary" className={classes.button} type="submit"> | ||||
|                   Save | ||||
|           </Button> | ||||
|           <Button variant="contained" color="secondary" className={classes.button} onClick={onReset}> | ||||
|       		  Reset | ||||
|                 <Button variant="contained" color="secondary" className={classes.button} onClick={onReset}> | ||||
|                   Reset | ||||
|       		</Button> | ||||
|  | ||||
|         </ValidatorForm> | ||||
|               </ValidatorForm> | ||||
|  | ||||
|         : | ||||
|               : | ||||
|  | ||||
|         <div className={classes.loadingSettings}> | ||||
|           <Typography variant="h4" className={classes.loadingSettingsDetails}> | ||||
|             {errorMessage} | ||||
|           </Typography> | ||||
|           <Button variant="contained" color="secondary" className={classes.button} onClick={onReset}> | ||||
|       		  Reset | ||||
|               <div className={classes.loadingSettings}> | ||||
|                 <Typography variant="h4" className={classes.loadingSettingsDetails}> | ||||
|                   {errorMessage} | ||||
|                 </Typography> | ||||
|                 <Button variant="contained" color="secondary" className={classes.button} onClick={onReset}> | ||||
|                   Reset | ||||
|       		</Button> | ||||
|         </div> | ||||
|       } | ||||
|               </div> | ||||
|         } | ||||
|       </div> | ||||
|     ); | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user