CEC-4072 - IDPS Enabled

This commit is contained in:
padamsen_fisker
2024-02-21 18:32:56 -05:00
parent 1a562ca129
commit 2b71b669ad
28 changed files with 492 additions and 10 deletions

View File

@@ -11343,6 +11343,44 @@ exports[`App Route /vehicle-add authenticated 1`] = `
</fieldset> </fieldset>
</div> </div>
</div> </div>
<label
class="MuiFormControlLabel-root"
>
<span
aria-disabled="false"
class="MuiButtonBase-root MuiIconButton-root PrivateSwitchBase-root-0 MuiCheckbox-root MuiCheckbox-colorSecondary PrivateSwitchBase-checked-0 Mui-checked MuiIconButton-colorSecondary"
>
<span
class="MuiIconButton-label"
>
<input
checked=""
class="PrivateSwitchBase-input-0"
data-indeterminate="false"
type="checkbox"
value=""
/>
<svg
aria-hidden="true"
class="MuiSvgIcon-root"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
/>
</svg>
</span>
<span
class="MuiTouchRipple-root"
/>
</span>
<span
class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"
>
IDPS Enabled
</span>
</label>
<button <button
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-0 MuiButton-containedPrimary MuiButton-fullWidth" class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-0 MuiButton-containedPrimary MuiButton-fullWidth"
tabindex="0" tabindex="0"
@@ -12373,6 +12411,21 @@ exports[`App Route /vehicle-status authenticated 1`] = `
false false
</p> </p>
</div> </div>
<div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
>
<div
class="MuiBox-root MuiBox-root-0"
>
<p>
<b>
IDPS Enabled
</b>
:
true
</p>
</div>
</div>
<div <div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12" class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
> >

View File

@@ -20,6 +20,7 @@ const DEFAULT_CANBUS_ENABLED = false;
const DEFAULT_DATA_LOGGER_ENABLED = false; const DEFAULT_DATA_LOGGER_ENABLED = false;
const DEFAULT_MAX_MEM_BUFFER_SIZE = 0; const DEFAULT_MAX_MEM_BUFFER_SIZE = 0;
const DEFAULT_MAX_DISK_BUFFER_SIZE = 0; const DEFAULT_MAX_DISK_BUFFER_SIZE = 0;
const DEFAULT_IDPS_ENABLED = true;
export default forwardRef(({ export default forwardRef(({
ids = [], ids = [],
@@ -36,6 +37,7 @@ export default forwardRef(({
const [selectedLogLevel, setSelectedLogLevel] = useState(DEFAULT_LOG_LEVEL); const [selectedLogLevel, setSelectedLogLevel] = useState(DEFAULT_LOG_LEVEL);
const [canbusEnabled, setCANBusEnabled] = useState(DEFAULT_CANBUS_ENABLED); const [canbusEnabled, setCANBusEnabled] = useState(DEFAULT_CANBUS_ENABLED);
const [idpsEnabled, setIDPSEnabled] = useState(DEFAULT_IDPS_ENABLED);
const [dataLoggerEnabled, setDataLoggerEnabled] = useState(DEFAULT_DATA_LOGGER_ENABLED); const [dataLoggerEnabled, setDataLoggerEnabled] = useState(DEFAULT_DATA_LOGGER_ENABLED);
const [maxMemBufferSize, setMaxMemBufferSize] = useState(DEFAULT_MAX_MEM_BUFFER_SIZE); const [maxMemBufferSize, setMaxMemBufferSize] = useState(DEFAULT_MAX_MEM_BUFFER_SIZE);
const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(DEFAULT_MAX_DISK_BUFFER_SIZE); const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(DEFAULT_MAX_DISK_BUFFER_SIZE);
@@ -62,7 +64,8 @@ export default forwardRef(({
data_logger_enabled: canbusEnabled ? dataLoggerEnabled : false, data_logger_enabled: canbusEnabled ? dataLoggerEnabled : false,
max_mem_buffer_size: parseInt(maxMemBufferSize), max_mem_buffer_size: parseInt(maxMemBufferSize),
max_disk_buffer_size: parseInt(maxDiskBufferSize), max_disk_buffer_size: parseInt(maxDiskBufferSize),
} },
idps_enabled: idpsEnabled,
}; };
await fleetsAPI await fleetsAPI
@@ -135,6 +138,10 @@ export default forwardRef(({
setCANBusEnabled(event.target.checked); setCANBusEnabled(event.target.checked);
} }
const onIDPSChange = (event) => {
setIDPSEnabled(event.target.checked);
}
const onDataLoggerChange = (event) => { const onDataLoggerChange = (event) => {
setDataLoggerEnabled(event.target.checked); setDataLoggerEnabled(event.target.checked);
} }
@@ -151,12 +158,13 @@ export default forwardRef(({
if (!toFleet) { if (!toFleet) {
setSelectedLogLevel(DEFAULT_LOG_LEVEL); setSelectedLogLevel(DEFAULT_LOG_LEVEL);
setCANBusEnabled(DEFAULT_CANBUS_ENABLED); setCANBusEnabled(DEFAULT_CANBUS_ENABLED);
setIDPSEnabled(DEFAULT_IDPS_ENABLED);
setDataLoggerEnabled(DEFAULT_DATA_LOGGER_ENABLED); setDataLoggerEnabled(DEFAULT_DATA_LOGGER_ENABLED);
setMaxMemBufferSize(DEFAULT_MAX_MEM_BUFFER_SIZE); setMaxMemBufferSize(DEFAULT_MAX_MEM_BUFFER_SIZE);
setMaxDiskBufferSize(DEFAULT_MAX_DISK_BUFFER_SIZE); setMaxDiskBufferSize(DEFAULT_MAX_DISK_BUFFER_SIZE);
} }
}, [ }, [
toFleet, setSelectedLogLevel, setCANBusEnabled, toFleet, setSelectedLogLevel, setCANBusEnabled, setIDPSEnabled,
setDataLoggerEnabled, setMaxMemBufferSize, setMaxDiskBufferSize setDataLoggerEnabled, setMaxMemBufferSize, setMaxDiskBufferSize
]); ]);
@@ -165,9 +173,10 @@ export default forwardRef(({
setDataLoggerEnabled(DEFAULT_DATA_LOGGER_ENABLED); setDataLoggerEnabled(DEFAULT_DATA_LOGGER_ENABLED);
setMaxMemBufferSize(DEFAULT_MAX_MEM_BUFFER_SIZE); setMaxMemBufferSize(DEFAULT_MAX_MEM_BUFFER_SIZE);
setMaxDiskBufferSize(DEFAULT_MAX_DISK_BUFFER_SIZE); setMaxDiskBufferSize(DEFAULT_MAX_DISK_BUFFER_SIZE);
setIDPSEnabled(DEFAULT_IDPS_ENABLED)
} }
}, [ }, [
canbusEnabled, setDataLoggerEnabled, setMaxMemBufferSize, canbusEnabled, setDataLoggerEnabled, setIDPSEnabled, setMaxMemBufferSize,
setMaxDiskBufferSize, setMaxDiskBufferSize,
]); ]);
@@ -237,6 +246,13 @@ export default forwardRef(({
disabled={!toFleet} disabled={!toFleet}
/> />
} label="CAN Bus Enabled" /> } label="CAN Bus Enabled" />
<FormControlLabel control={
<Checkbox
checked={idpsEnabled}
onChange={onIDPSChange}
disabled={!toFleet}
/>
} label="IDPS Enabled" />
<FormControlLabel control={ <FormControlLabel control={
<Checkbox <Checkbox
checked={dataLoggerEnabled} checked={dataLoggerEnabled}

View File

@@ -603,6 +603,44 @@ exports[`VehicleAddForm Render 1`] = `
</fieldset> </fieldset>
</div> </div>
</div> </div>
<label
class="MuiFormControlLabel-root"
>
<span
aria-disabled="false"
class="MuiButtonBase-root MuiIconButton-root PrivateSwitchBase-root-0 MuiCheckbox-root MuiCheckbox-colorSecondary PrivateSwitchBase-checked-0 Mui-checked MuiIconButton-colorSecondary"
>
<span
class="MuiIconButton-label"
>
<input
checked=""
class="PrivateSwitchBase-input-0"
data-indeterminate="false"
type="checkbox"
value=""
/>
<svg
aria-hidden="true"
class="MuiSvgIcon-root"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
/>
</svg>
</span>
<span
class="MuiTouchRipple-root"
/>
</span>
<span
class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"
>
IDPS Enabled
</span>
</label>
<button <button
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-0 MuiButton-containedPrimary MuiButton-fullWidth" class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-0 MuiButton-containedPrimary MuiButton-fullWidth"
tabindex="0" tabindex="0"

View File

@@ -35,6 +35,7 @@ const MainForm = () => {
const [vin, setVIN] = useState(""); const [vin, setVIN] = useState("");
const [selectedLogLevel, setSelectedLogLevel] = useState("info"); const [selectedLogLevel, setSelectedLogLevel] = useState("info");
const [canbusEnabled, setCANBusEnabled] = useState(true); const [canbusEnabled, setCANBusEnabled] = useState(true);
const [idpsEnabled, setIDPSEnabled] = useState(true);
const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false); const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false);
const [maxMemBufferSize, setMaxMemBufferSize] = useState(0); const [maxMemBufferSize, setMaxMemBufferSize] = useState(0);
const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(0); const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(0);
@@ -62,6 +63,10 @@ const MainForm = () => {
setCANBusEnabled(event.target.checked); setCANBusEnabled(event.target.checked);
} }
const onIDPSChange = (event) => {
setIDPSEnabled(event.target.checked);
}
const onDataLoggerChange = (event) => { const onDataLoggerChange = (event) => {
setDataLoggerEnabled(event.target.checked); setDataLoggerEnabled(event.target.checked);
} }
@@ -91,7 +96,8 @@ const MainForm = () => {
max_mem_buffer_size: canbusEnabled ? parseInt(maxMemBufferSize) : 0, max_mem_buffer_size: canbusEnabled ? parseInt(maxMemBufferSize) : 0,
max_disk_buffer_size: canbusEnabled && dataLoggerEnabled ? parseInt(maxDiskBufferSize) : 0, max_disk_buffer_size: canbusEnabled && dataLoggerEnabled ? parseInt(maxDiskBufferSize) : 0,
dtc_enabled: dtcEnabled dtc_enabled: dtcEnabled
} },
idps_enabled: idpsEnabled,
}; };
const result = await addVehicle(formData, token); const result = await addVehicle(formData, token);
@@ -195,6 +201,12 @@ const MainForm = () => {
required required
fullWidth fullWidth
/> />
<FormControlLabel control={
<Checkbox
checked={idpsEnabled}
onChange={onIDPSChange}
/>
} label="IDPS Enabled" />
<Button <Button
type="submit" type="submit"
disabled={busy} disabled={busy}

View File

@@ -162,6 +162,21 @@ exports[`VehicleDetailsTab Render 1`] = `
false false
</p> </p>
</div> </div>
<div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
>
<div
class="MuiBox-root MuiBox-root-0"
>
<p>
<b>
IDPS Enabled
</b>
:
true
</p>
</div>
</div>
<div <div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12" class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
> >

View File

@@ -161,6 +161,21 @@ const MainForm = ({ vin }) => {
</p> </p>
)} )}
</Grid> </Grid>
<Grid
item
md={12}
className={classes.textCenterAlign}
>
<Box sx={{
display: "flex",
justifyContent: "center",
alignItems: "flex-end"
}}>
<p>
<b>IDPS Enabled</b>: {(vehicle.idps_enabled || false).toString()}
</p>
</Box>
</Grid>
{showDebugMask && ( {showDebugMask && (
<Grid item md={12} className={classes.textCenterAlign}> <Grid item md={12} className={classes.textCenterAlign}>
<p> <p>

View File

@@ -170,6 +170,21 @@ exports[`DetailsTab Render 1`] = `
false false
</p> </p>
</div> </div>
<div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
>
<div
class="MuiBox-root MuiBox-root-0"
>
<p>
<b>
IDPS Enabled
</b>
:
true
</p>
</div>
</div>
<div <div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12" class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
> >

View File

@@ -352,6 +352,21 @@ exports[`CarStatus Render 1`] = `
false false
</p> </p>
</div> </div>
<div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
>
<div
class="MuiBox-root MuiBox-root-0"
>
<p>
<b>
IDPS Enabled
</b>
:
false
</p>
</div>
</div>
<div <div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12" class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
> >

View File

@@ -1178,6 +1178,44 @@ exports[`VehicleUpdate Render 1`] = `
</fieldset> </fieldset>
</div> </div>
</div> </div>
<label
class="MuiFormControlLabel-root"
>
<span
aria-disabled="false"
class="MuiButtonBase-root MuiIconButton-root PrivateSwitchBase-root-0 MuiCheckbox-root MuiCheckbox-colorSecondary PrivateSwitchBase-checked-0 Mui-checked MuiIconButton-colorSecondary"
>
<span
class="MuiIconButton-label"
>
<input
checked=""
class="PrivateSwitchBase-input-0"
data-indeterminate="false"
type="checkbox"
value=""
/>
<svg
aria-hidden="true"
class="MuiSvgIcon-root"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
/>
</svg>
</span>
<span
class="MuiTouchRipple-root"
/>
</span>
<span
class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"
>
IDPS Enabled
</span>
</label>
<button <button
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-0 MuiButton-containedPrimary MuiButton-fullWidth" class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-0 MuiButton-containedPrimary MuiButton-fullWidth"
tabindex="0" tabindex="0"

View File

@@ -47,6 +47,7 @@ const MainForm = () => {
const infoSourceEl = useRef(null); const infoSourceEl = useRef(null);
const [selectedLogLevel, setSelectedLogLevel] = useState("info"); const [selectedLogLevel, setSelectedLogLevel] = useState("info");
const [canbusEnabled, setCANBusEnabled] = useState(true); const [canbusEnabled, setCANBusEnabled] = useState(true);
const [idpsEnabled, setIDPSEnabled] = useState(true);
const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false); const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false);
const [maxMemBufferSize, setMaxMemBufferSize] = useState(0); const [maxMemBufferSize, setMaxMemBufferSize] = useState(0);
const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(0); const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(0);
@@ -116,6 +117,8 @@ const MainForm = () => {
debugMaskEl.current.value = vehicle.debug_mask ?? "" debugMaskEl.current.value = vehicle.debug_mask ?? ""
} }
setIDPSEnabled(vehicle.idps_enabled ?? idpsEnabled);
tagsEl.current.value = vehicle.tags ?? "" tagsEl.current.value = vehicle.tags ?? ""
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -129,6 +132,10 @@ const MainForm = () => {
setCANBusEnabled(event.target.checked); setCANBusEnabled(event.target.checked);
} }
const onIDPSChange = (event) => {
setIDPSEnabled(event.target.checked);
}
const onDataLoggerChange = (event) => { const onDataLoggerChange = (event) => {
setDataLoggerEnabled(event.target.checked); setDataLoggerEnabled(event.target.checked);
} }
@@ -181,7 +188,8 @@ const MainForm = () => {
}, },
dlt_enabled: dltEnabled, dlt_enabled: dltEnabled,
dlt_level: dltEnabled ? parseInt(dltLevel) : 0, dlt_level: dltEnabled ? parseInt(dltLevel) : 0,
debug_mask: debugMaskEl.current?.value debug_mask: debugMaskEl.current?.value,
idps_enabled: idpsEnabled,
}; };
const result = await updateVehicle(vin, formData, token); const result = await updateVehicle(vin, formData, token);
@@ -508,6 +516,12 @@ const MainForm = () => {
inputRef={debugMaskEl} inputRef={debugMaskEl}
/> />
)} )}
<FormControlLabel control={
<Checkbox
checked={idpsEnabled}
onChange={onIDPSChange}
/>
} label="IDPS Enabled" />
<Button <Button
type="submit" type="submit"
disabled={busy} disabled={busy}

View File

@@ -142,6 +142,7 @@ describe("FleetContext", () => {
name: "EU-WEST", name: "EU-WEST",
log_level: "warning", log_level: "warning",
canbus: { enabled: false }, canbus: { enabled: false },
idps_enabled: true,
}) })
} }
/> />
@@ -222,6 +223,7 @@ describe("FleetContext", () => {
name: "EU-WEST", name: "EU-WEST",
log_level: "warning", log_level: "warning",
canbus: { enabled: false }, canbus: { enabled: false },
idps_enabled: true,
}) })
} }
/> />
@@ -761,6 +763,7 @@ const expectedFleetData = {
max_disk_buffer_size: 2, max_disk_buffer_size: 2,
filters: expectedFilters, filters: expectedFilters,
}, },
idps_enabled: true,
vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"], vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"],
}; };
@@ -775,6 +778,7 @@ const expectedFleetsData = [
max_disk_buffer_size: 2, max_disk_buffer_size: 2,
filters: expectedFilters, filters: expectedFilters,
}, },
idps_enabled: true,
vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"], vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"],
}, },
{ {
@@ -786,12 +790,14 @@ const expectedFleetsData = [
max_mem_buffer_size: 0, max_mem_buffer_size: 0,
max_disk_buffer_size: 0, max_disk_buffer_size: 0,
}, },
idps_enabled: true,
vehicles: ["USCENTVIN12345678", "USCENTVIN12345679", "USCENTVIN12345670"], vehicles: ["USCENTVIN12345678", "USCENTVIN12345679", "USCENTVIN12345670"],
}, },
{ {
name: "US-EAST", name: "US-EAST",
log_level: "error", log_level: "error",
canbus: { enabled: true }, canbus: { enabled: true },
idps_enabled: true,
vehicles: ["USEASTVIN12345678", "USEASTVIN12345679", "USEASTVIN12345670"], vehicles: ["USEASTVIN12345678", "USEASTVIN12345679", "USEASTVIN12345670"],
}, },
]; ];

View File

@@ -255,6 +255,7 @@ describe("VehicleContext", () => {
vin: "3C4PDCBG0ET127145", vin: "3C4PDCBG0ET127145",
log_level: "warning", log_level: "warning",
canbus: { enabled: false }, canbus: { enabled: false },
idps_enabled: true,
}) })
} }
/> />
@@ -394,6 +395,7 @@ const expectedVehicleData = {
max_disk_buffer_size: 2, max_disk_buffer_size: 2,
filters: expectedFilters, filters: expectedFilters,
}, },
idps_enabled: true,
iccid: "8988300000000000000", iccid: "8988300000000000000",
connected: true, connected: true,
connectedHMI: false, connectedHMI: false,
@@ -414,6 +416,7 @@ const expectedVehiclesData = [
max_disk_buffer_size: 2, max_disk_buffer_size: 2,
filters: expectedFilters, filters: expectedFilters,
}, },
idps_enabled: true,
iccid: "8988300000000000000", iccid: "8988300000000000000",
connected: true, connected: true,
connectedHMI: false, connectedHMI: false,

View File

@@ -19,6 +19,7 @@ let fleet = {
name: "US-WEST", name: "US-WEST",
log_level: "info", log_level: "info",
canbus: { enabled: true, data_logger_enabled: true, max_mem_buffer_size: 1, max_disk_buffer_size: 2, filters: fleetCANFilters }, canbus: { enabled: true, data_logger_enabled: true, max_mem_buffer_size: 1, max_disk_buffer_size: 2, filters: fleetCANFilters },
idps_enabled: true,
vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"], vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"],
vehicles_count: 3, vehicles_count: 3,
} }
@@ -27,6 +28,7 @@ let fleets = [
name: "US-WEST", name: "US-WEST",
log_level: "info", log_level: "info",
canbus: { enabled: true, data_logger_enabled: true, max_mem_buffer_size: 1, max_disk_buffer_size: 2, filters: fleetCANFilters }, canbus: { enabled: true, data_logger_enabled: true, max_mem_buffer_size: 1, max_disk_buffer_size: 2, filters: fleetCANFilters },
idps_enabled: true,
vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"], vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"],
vehicles_count: 3, vehicles_count: 3,
}, },
@@ -34,6 +36,7 @@ let fleets = [
name: "US-CENTRAL", name: "US-CENTRAL",
log_level: "warning", log_level: "warning",
canbus: { enabled: false, data_logger_enabled: false, max_mem_buffer_size: 0, max_disk_buffer_size: 0 }, canbus: { enabled: false, data_logger_enabled: false, max_mem_buffer_size: 0, max_disk_buffer_size: 0 },
idps_enabled: true,
vehicles: ["USCENTVIN12345678", "USCENTVIN12345679", "USCENTVIN12345670"], vehicles: ["USCENTVIN12345678", "USCENTVIN12345679", "USCENTVIN12345670"],
vehicles_count: 3, vehicles_count: 3,
}, },
@@ -41,6 +44,7 @@ let fleets = [
name: "US-EAST", name: "US-EAST",
log_level: "error", log_level: "error",
canbus: { enabled: true }, canbus: { enabled: true },
idps_enabled: true,
vehicles: ["USEASTVIN12345678", "USEASTVIN12345679", "USEASTVIN12345670"], vehicles: ["USEASTVIN12345678", "USEASTVIN12345679", "USEASTVIN12345670"],
vehicles_count: 3, vehicles_count: 3,
}, },

View File

@@ -31,6 +31,7 @@ let vehicle = {
max_disk_buffer_size: 2, max_disk_buffer_size: 2,
filters: filters, filters: filters,
}, },
idps_enabled: true,
}; };
let vehicleState = { let vehicleState = {
data: { data: {

View File

@@ -27,6 +27,10 @@ const tableColumns = [
id: "data_logger_enabled", id: "data_logger_enabled",
label: "Data Logger Enabled" label: "Data Logger Enabled"
}, },
{
id: "idps_enabled",
label: "IDPS Enabled"
},
{ {
id: "num_vehicles", id: "num_vehicles",
label: "Vehicles" label: "Vehicles"
@@ -159,6 +163,7 @@ const FleetSelectionTable = (props) => {
<TableCell align="center">{row.log_level}</TableCell> <TableCell align="center">{row.log_level}</TableCell>
<TableCell align="center">{row.canbus.enabled ? "true" : "false"}</TableCell> <TableCell align="center">{row.canbus.enabled ? "true" : "false"}</TableCell>
<TableCell align="center">{row.canbus.data_logger_enabled ? "true" : "false"}</TableCell> <TableCell align="center">{row.canbus.data_logger_enabled ? "true" : "false"}</TableCell>
<TableCell align="center">{row.idps_enabled ? "true" : "false"}</TableCell>
<TableCell align="center">{row.vehicles_count || 0}</TableCell> <TableCell align="center">{row.vehicles_count || 0}</TableCell>
<TableCell align="center">{!row.canbus.filters ? 0 : row.canbus.filters.length}</TableCell> <TableCell align="center">{!row.canbus.filters ? 0 : row.canbus.filters.length}</TableCell>
</TableRow>) </TableRow>)
@@ -169,7 +174,7 @@ const FleetSelectionTable = (props) => {
<TableRow> <TableRow>
<TablePagination <TablePagination
rowsPerPageOptions={[5, 10, 25, 100]} rowsPerPageOptions={[5, 10, 25, 100]}
colSpan={8} colSpan={9}
count={totalFleets} count={totalFleets}
rowsPerPage={pageSize} rowsPerPage={pageSize}
page={pageIndex} page={pageIndex}

View File

@@ -566,6 +566,44 @@ exports[`FleetAddForm Render 1`] = `
</fieldset> </fieldset>
</div> </div>
</div> </div>
<label
class="MuiFormControlLabel-root"
>
<span
aria-disabled="false"
class="MuiButtonBase-root MuiIconButton-root PrivateSwitchBase-root-0 MuiCheckbox-root MuiCheckbox-colorSecondary PrivateSwitchBase-checked-0 Mui-checked MuiIconButton-colorSecondary"
>
<span
class="MuiIconButton-label"
>
<input
checked=""
class="PrivateSwitchBase-input-0"
data-indeterminate="false"
type="checkbox"
value=""
/>
<svg
aria-hidden="true"
class="MuiSvgIcon-root"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
/>
</svg>
</span>
<span
class="MuiTouchRipple-root"
/>
</span>
<span
class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"
>
IDPS Enabled
</span>
</label>
<button <button
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-0 MuiButton-containedPrimary MuiButton-fullWidth" class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-0 MuiButton-containedPrimary MuiButton-fullWidth"
tabindex="0" tabindex="0"

View File

@@ -34,6 +34,7 @@ const MainForm = () => {
const nameEl = useRef(null); const nameEl = useRef(null);
const [selectedLogLevel, setSelectedLogLevel] = useState("info"); const [selectedLogLevel, setSelectedLogLevel] = useState("info");
const [canbusEnabled, setCANBusEnabled] = useState(true); const [canbusEnabled, setCANBusEnabled] = useState(true);
const [idpsEnabled, setIDPSEnabled] = useState(true);
const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false); const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false);
const [maxMemBufferSize, setMaxMemBufferSize] = useState(0); const [maxMemBufferSize, setMaxMemBufferSize] = useState(0);
const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(0); const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(0);
@@ -60,6 +61,10 @@ const MainForm = () => {
setCANBusEnabled(event.target.checked); setCANBusEnabled(event.target.checked);
} }
const onIDPSChange = (event) => {
setIDPSEnabled(event.target.checked);
}
const onDataLoggerChange = (event) => { const onDataLoggerChange = (event) => {
setDataLoggerEnabled(event.target.checked); setDataLoggerEnabled(event.target.checked);
} }
@@ -84,7 +89,8 @@ const MainForm = () => {
data_logger_enabled: canbusEnabled ? dataLoggerEnabled : false, data_logger_enabled: canbusEnabled ? dataLoggerEnabled : false,
max_mem_buffer_size: canbusEnabled ? parseInt(maxMemBufferSize) : 0, max_mem_buffer_size: canbusEnabled ? parseInt(maxMemBufferSize) : 0,
max_disk_buffer_size: canbusEnabled && dataLoggerEnabled ? parseInt(maxDiskBufferSize) : 0 max_disk_buffer_size: canbusEnabled && dataLoggerEnabled ? parseInt(maxDiskBufferSize) : 0
} },
idps_enabled: idpsEnabled,
}; };
const result = await addFleet(formData, token); const result = await addFleet(formData, token);
if (!result || result.error) return; if (!result || result.error) return;
@@ -181,6 +187,12 @@ const MainForm = () => {
required required
fullWidth fullWidth
/> />
<FormControlLabel control={
<Checkbox
checked={idpsEnabled}
onChange={onIDPSChange}
/>
} label="IDPS Enabled" />
<Button <Button
type="submit" type="submit"
disabled={busy} disabled={busy}

View File

@@ -94,6 +94,17 @@ exports[`FleetDetailsTab Render 1`] = `
false false
</p> </p>
</div> </div>
<div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
>
<p>
<b>
IDPS Enabled
</b>
:
true
</p>
</div>
<div <div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12" class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
> >

View File

@@ -76,6 +76,11 @@ const MainForm = ({ name }) => {
<p><b>DTC Enabled</b>: {(fleet.canbus.dtc_enabled || false).toString()}</p> <p><b>DTC Enabled</b>: {(fleet.canbus.dtc_enabled || false).toString()}</p>
</Grid> </Grid>
)} )}
<Grid item md={12} className={classes.textCenterAlign}>
<p>
<b>IDPS Enabled</b>: {(fleet.idps_enabled || false).toString()}
</p>
</Grid>
{showDebugMask && ( {showDebugMask && (
<Grid item md={12} className={classes.textCenterAlign}> <Grid item md={12} className={classes.textCenterAlign}>
<p> <p>

View File

@@ -934,6 +934,44 @@ exports[`FleetVehicleAdd Render 1`] = `
</fieldset> </fieldset>
</div> </div>
</div> </div>
<label
class="MuiFormControlLabel-root"
>
<span
aria-disabled="false"
class="MuiButtonBase-root MuiIconButton-root PrivateSwitchBase-root-0 MuiCheckbox-root MuiCheckbox-colorSecondary PrivateSwitchBase-checked-0 Mui-checked MuiIconButton-colorSecondary"
>
<span
class="MuiIconButton-label"
>
<input
checked=""
class="PrivateSwitchBase-input-0"
data-indeterminate="false"
type="checkbox"
value=""
/>
<svg
aria-hidden="true"
class="MuiSvgIcon-root"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
/>
</svg>
</span>
<span
class="MuiTouchRipple-root"
/>
</span>
<span
class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"
>
IDPS Enabled
</span>
</label>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -45,6 +45,7 @@ const MainForm = () => {
const { payload, query, setQuery, loading } = useQuery(); const { payload, query, setQuery, loading } = useQuery();
const [selectedLogLevel, setSelectedLogLevel] = useState("info"); const [selectedLogLevel, setSelectedLogLevel] = useState("info");
const [canbusEnabled, setCANBusEnabled] = useState(true); const [canbusEnabled, setCANBusEnabled] = useState(true);
const [idpsEnabled, setIDPSEnabled] = useState(true);
const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false); const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false);
const [maxMemBufferSize, setMaxMemBufferSize] = useState(0); const [maxMemBufferSize, setMaxMemBufferSize] = useState(0);
const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(0); const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(0);
@@ -100,6 +101,10 @@ const MainForm = () => {
setCANBusEnabled(event.target.checked); setCANBusEnabled(event.target.checked);
} }
const onIDPSChange = (event) => {
setIDPSEnabled(event.target.checked);
}
const onDataLoggerChange = (event) => { const onDataLoggerChange = (event) => {
setDataLoggerEnabled(event.target.checked); setDataLoggerEnabled(event.target.checked);
} }
@@ -124,7 +129,8 @@ const MainForm = () => {
data_logger_enabled: canbusEnabled ? dataLoggerEnabled : false, data_logger_enabled: canbusEnabled ? dataLoggerEnabled : false,
max_mem_buffer_size: canbusEnabled ? parseInt(maxMemBufferSize) : 0, max_mem_buffer_size: canbusEnabled ? parseInt(maxMemBufferSize) : 0,
max_disk_buffer_size: canbusEnabled && dataLoggerEnabled ? parseInt(maxDiskBufferSize) : 0 max_disk_buffer_size: canbusEnabled && dataLoggerEnabled ? parseInt(maxDiskBufferSize) : 0
} },
idps_enabled: idpsEnabled,
}; };
const result = await addFleetVehicles(name, formData, token); const result = await addFleetVehicles(name, formData, token);
@@ -228,6 +234,12 @@ const MainForm = () => {
required required
fullWidth fullWidth
/> />
<FormControlLabel control={
<Checkbox
checked={idpsEnabled}
onChange={onIDPSChange}
/>
} label="IDPS Enabled" />
</Box> </Box>
</AccordionDetails> </AccordionDetails>
</Accordion> </Accordion>

View File

@@ -102,6 +102,17 @@ exports[`DetailsTab Render 1`] = `
false false
</p> </p>
</div> </div>
<div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
>
<p>
<b>
IDPS Enabled
</b>
:
true
</p>
</div>
<div <div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12" class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
> >

View File

@@ -191,6 +191,17 @@ exports[`FleetStatus Render 1`] = `
false false
</p> </p>
</div> </div>
<div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
>
<p>
<b>
IDPS Enabled
</b>
:
true
</p>
</div>
<div <div
class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12" class="MuiGrid-root makeStyles-textCenterAlign-0 MuiGrid-item MuiGrid-grid-md-12"
> >

View File

@@ -200,6 +200,29 @@ exports[`FleetTable Render 1`] = `
</svg> </svg>
</span> </span>
</th> </th>
<th
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignCenter"
scope="col"
>
<span
aria-disabled="false"
class="MuiButtonBase-root MuiTableSortLabel-root"
role="button"
tabindex="0"
>
IDPS Enabled
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiTableSortLabel-icon MuiTableSortLabel-iconDirectionAsc"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z"
/>
</svg>
</span>
</th>
<th <th
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignCenter" class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignCenter"
scope="col" scope="col"
@@ -278,6 +301,11 @@ exports[`FleetTable Render 1`] = `
> >
true true
</td> </td>
<td
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
>
true
</td>
<td <td
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter" class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
> >
@@ -316,6 +344,11 @@ exports[`FleetTable Render 1`] = `
> >
false false
</td> </td>
<td
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
>
true
</td>
<td <td
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter" class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
> >
@@ -354,6 +387,11 @@ exports[`FleetTable Render 1`] = `
> >
false false
</td> </td>
<td
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
>
true
</td>
<td <td
class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter" class="MuiTableCell-root MuiTableCell-body MuiTableCell-alignCenter"
> >
@@ -374,7 +412,7 @@ exports[`FleetTable Render 1`] = `
> >
<td <td
class="MuiTableCell-root MuiTableCell-footer MuiTablePagination-root" class="MuiTableCell-root MuiTableCell-footer MuiTablePagination-root"
colspan="8" colspan="9"
> >
<div <div
class="MuiToolbar-root MuiToolbar-regular MuiTablePagination-toolbar MuiToolbar-gutters" class="MuiToolbar-root MuiToolbar-regular MuiTablePagination-toolbar MuiToolbar-gutters"

View File

@@ -640,6 +640,44 @@ exports[`FleetUpdate Render 1`] = `
</fieldset> </fieldset>
</div> </div>
</div> </div>
<label
class="MuiFormControlLabel-root"
>
<span
aria-disabled="false"
class="MuiButtonBase-root MuiIconButton-root PrivateSwitchBase-root-0 MuiCheckbox-root MuiCheckbox-colorSecondary PrivateSwitchBase-checked-0 Mui-checked MuiIconButton-colorSecondary"
>
<span
class="MuiIconButton-label"
>
<input
checked=""
class="PrivateSwitchBase-input-0"
data-indeterminate="false"
type="checkbox"
value=""
/>
<svg
aria-hidden="true"
class="MuiSvgIcon-root"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
/>
</svg>
</span>
<span
class="MuiTouchRipple-root"
/>
</span>
<span
class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"
>
IDPS Enabled
</span>
</label>
<button <button
class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-0 MuiButton-containedPrimary MuiButton-fullWidth" class="MuiButtonBase-root MuiButton-root MuiButton-contained makeStyles-submit-0 MuiButton-containedPrimary MuiButton-fullWidth"
tabindex="0" tabindex="0"

View File

@@ -35,6 +35,7 @@ const MainForm = () => {
const [oldName] = useState(name); const [oldName] = useState(name);
const [selectedLogLevel, setSelectedLogLevel] = useState("info"); const [selectedLogLevel, setSelectedLogLevel] = useState("info");
const [canbusEnabled, setCANBusEnabled] = useState(true); const [canbusEnabled, setCANBusEnabled] = useState(true);
const [idpsEnabled, setIDPSEnabled] = useState(true);
const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false); const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false);
const [maxMemBufferSize, setMaxMemBufferSize] = useState(0); const [maxMemBufferSize, setMaxMemBufferSize] = useState(0);
const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(0); const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(0);
@@ -89,6 +90,8 @@ const MainForm = () => {
debugMaskEl.current.value = fleet.debug_mask ?? "" debugMaskEl.current.value = fleet.debug_mask ?? ""
} }
setIDPSEnabled(fleet.idps_enabled ?? idpsEnabled);
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, [fleet]); }, [fleet]);
@@ -104,6 +107,10 @@ const MainForm = () => {
setCANBusEnabled(event.target.checked); setCANBusEnabled(event.target.checked);
}; };
const onIDPSChange = (event) => {
setIDPSEnabled(event.target.checked);
}
const onDataLoggerChange = (event) => { const onDataLoggerChange = (event) => {
setDataLoggerEnabled(event.target.checked); setDataLoggerEnabled(event.target.checked);
}; };
@@ -133,7 +140,8 @@ const MainForm = () => {
max_disk_buffer_size: canbusEnabled && dataLoggerEnabled ? parseInt(maxDiskBufferSize) : 0, max_disk_buffer_size: canbusEnabled && dataLoggerEnabled ? parseInt(maxDiskBufferSize) : 0,
dtc_enabled: dtcEnabled dtc_enabled: dtcEnabled
}, },
debug_mask: debugMaskEl.current?.value debug_mask: debugMaskEl.current?.value,
idps_enabled: idpsEnabled,
}; };
const result = await updateFleet(oldName, formData, token); const result = await updateFleet(oldName, formData, token);
@@ -267,6 +275,12 @@ const MainForm = () => {
inputRef={debugMaskEl} inputRef={debugMaskEl}
/> />
)} )}
<FormControlLabel control={
<Checkbox
checked={idpsEnabled}
onChange={onIDPSChange}
/>
} label="IDPS Enabled" />
<Button <Button
type="submit" type="submit"
disabled={busy} disabled={busy}

View File

@@ -18,18 +18,21 @@ const fleets = [
name: "US-WEST", name: "US-WEST",
log_level: "info", log_level: "info",
canbus: { enabled: true, data_logger_enabled: true, max_mem_buffer_size: 1, max_disk_buffer_size: 2, filters: filters }, canbus: { enabled: true, data_logger_enabled: true, max_mem_buffer_size: 1, max_disk_buffer_size: 2, filters: filters },
idps_enabled: true,
vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"] vehicles: ["USWESTVIN12345678", "USWESTVIN12345679", "USWESTVIN12345670"]
}, },
{ {
name: "US-CENTRAL", name: "US-CENTRAL",
log_level: "warning", log_level: "warning",
canbus: { enabled: false, data_logger_enabled: false, max_mem_buffer_size: 0, max_disk_buffer_size: 0 }, canbus: { enabled: false, data_logger_enabled: false, max_mem_buffer_size: 0, max_disk_buffer_size: 0 },
idps_enabled: true,
vehicles: ["USCENTVIN12345678", "USCENTVIN12345679", "USCENTVIN12345670"] vehicles: ["USCENTVIN12345678", "USCENTVIN12345679", "USCENTVIN12345670"]
}, },
{ {
name: "US-EAST", name: "US-EAST",
log_level: "error", log_level: "error",
canbus: { enabled: true }, canbus: { enabled: true },
idps_enabled: true,
vehicles: ["USEASTVIN12345678", "USEASTVIN12345679", "USEASTVIN12345670"] vehicles: ["USEASTVIN12345678", "USEASTVIN12345679", "USEASTVIN12345670"]
}, },
]; ];

View File

@@ -22,6 +22,7 @@ const data = [
ecu_list: "ECUA 2.0.0, ECUB 2.1.1", ecu_list: "ECUA 2.0.0, ECUB 2.1.1",
log_level: "info", log_level: "info",
canbus: { enabled: true, data_logger_enabled: true, max_mem_buffer_size: 1, max_disk_buffer_size: 2, filters: filters }, canbus: { enabled: true, data_logger_enabled: true, max_mem_buffer_size: 1, max_disk_buffer_size: 2, filters: filters },
idps_enabled: true,
iccid: "8988300000000000000", iccid: "8988300000000000000",
}, },
{ vin: "1G1FP87S3GN100062" }, { vin: "1G1FP87S3GN100062" },