From f5e026ff85eaac071614b08915d1370c3fdf6680 Mon Sep 17 00:00:00 2001 From: Ilija Lazoroski Date: Tue, 12 Jul 2022 18:25:05 +0200 Subject: [PATCH] UI: Add PropagationConfig component --- .../PropagationConfig.js | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 monkey/monkey_island/cc/ui/src/components/configuration-components/PropagationConfig.js diff --git a/monkey/monkey_island/cc/ui/src/components/configuration-components/PropagationConfig.js b/monkey/monkey_island/cc/ui/src/components/configuration-components/PropagationConfig.js new file mode 100644 index 000000000..9302e2330 --- /dev/null +++ b/monkey/monkey_island/cc/ui/src/components/configuration-components/PropagationConfig.js @@ -0,0 +1,97 @@ +import Form from 'react-jsonschema-form-bs4'; +import React, {useState} from 'react'; +import {Nav} from 'react-bootstrap'; +import {CREDENTIALS} from '../../services/configuration/credentials.js'; + +const sectionOrder = [ + 'exploitation', + 'network_scan', + 'credentials', + 'maximum_depth' +]; + +const initialSection = sectionOrder[0]; + +export default function PropagationConfig(props) { + const { + schema, + uiSchema, + onChange, + customFormats, + className, + formData + } = props; + console.log(schema, uiSchema, formData); + const [selectedSection, setSelectedSection] = useState(initialSection); + const [displayedSchema, setDisplayedSchema] = useState(getSchemaByKey(schema, initialSection)); + const [displayedSchemaUi, setDisplayedSchemaUi] = useState(getUiSchemaByKey(uiSchema, initialSection)); + const onInnerDataChange = (innerData) => { + console.log(innerData); + formData[selectedSection] = innerData.formData; + onChange({formData: formData}); + } + + const setSection = (sectionKey) => { + console.log(sectionKey); + setSelectedSection(sectionKey); + setDisplayedSchema(getSchemaByKey(schema, sectionKey)); + setDisplayedSchemaUi(getUiSchemaByKey(uiSchema, sectionKey)); + } + + const renderNav = () => { + return () + } + + console.log(displayedSchemaUi) + + return (
+ {renderNav()} +
+ +
+
) +} + +function getSchemaByKey(schema, key) { + if(key === 'maximum_depth'){ + return schema['properties'][key]; + } + if(key === 'credentials') { + return { properties: CREDENTIALS['properties']}; + } + let definitions = schema['definitions']; + + return {definitions: definitions, properties: schema['properties'][key]['properties']}; +} + + +function getUiSchemaByKey(uiSchema, key){ + return uiSchema[key]; +} + +function getNavTitle(schema, key) { + if(key === 'maximum_depth'){ + return 'General'; + } + if(key === 'credentials'){ + return 'Credentials'; + } + return schema.properties[key].title; +}