From fe76d837d5181f582232dd11bc92798ac8f878b2 Mon Sep 17 00:00:00 2001 From: cccs-rs <62077998+cccs-rs@users.noreply.github.com> Date: Wed, 5 Mar 2025 16:39:48 +0000 Subject: [PATCH 1/5] Use global update interval as the default for update sources --- .../routes/admin/service_detail/updater.tsx | 9 +++++++-- .../routes/manage/signature_sources.tsx | 19 ++++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/components/routes/admin/service_detail/updater.tsx b/src/components/routes/admin/service_detail/updater.tsx index 90d69b079..1d27042dd 100644 --- a/src/components/routes/admin/service_detail/updater.tsx +++ b/src/components/routes/admin/service_detail/updater.tsx @@ -18,7 +18,7 @@ import { useTheme } from '@mui/material'; import FormControl from '@mui/material/FormControl'; -import { Service, UpdateSource } from 'components/models/base/service'; +import { DEFAULT_SOURCE, Service, UpdateSource } from 'components/models/base/service'; import { SourceCard } from 'components/routes/manage/signature_sources'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; @@ -365,7 +365,12 @@ const ServiceUpdater = ({ service, defaults, setService, setModified }: ServiceU - + diff --git a/src/components/routes/manage/signature_sources.tsx b/src/components/routes/manage/signature_sources.tsx index 187cca008..6a8ef14bf 100644 --- a/src/components/routes/manage/signature_sources.tsx +++ b/src/components/routes/manage/signature_sources.tsx @@ -503,9 +503,10 @@ type ServiceDetailProps = { service: string; sources: UpdateConfig['sources']; generatesSignatures: UpdateConfig['generates_signatures']; + updateIntervalSeconds: UpdateConfig['update_interval_seconds']; }; -const ServiceDetail = ({ service, sources, generatesSignatures }: ServiceDetailProps) => { +const ServiceDetail = ({ service, sources, generatesSignatures, updateIntervalSeconds }: ServiceDetailProps) => { const { t } = useTranslation(['manageSignatureSources']); const theme = useTheme(); const classes = useStyles(); @@ -561,7 +562,7 @@ const ServiceDetail = ({ service, sources, generatesSignatures }: ServiceDetailP color: theme.palette.mode === 'dark' ? theme.palette.success.light : theme.palette.success.dark, margin: '-4px 0' }} - onClick={() => openDrawer(service, null)} + onClick={() => openDrawer(service, { ...DEFAULT_SOURCE, update_interval: updateIntervalSeconds })} size="large" > @@ -623,7 +624,18 @@ const ServiceDetail = ({ service, sources, generatesSignatures }: ServiceDetailP ), - [classes.title, generatesSignatures, open, openDrawer, service, sources, t, theme, triggerSourceUpdateAll] + [ + classes.title, + generatesSignatures, + open, + openDrawer, + service, + sources, + t, + theme, + triggerSourceUpdateAll, + updateIntervalSeconds + ] ); }; @@ -674,6 +686,7 @@ export default function SignatureSources() { service={key} sources={sources[key].sources} generatesSignatures={sources[key].generates_signatures} + updateIntervalSeconds={sources[key].update_interval_seconds} /> )) : [...Array(2)].map((item, i) => ( From 77d476eec0e03d9b3c790258fe9ee4c637333482 Mon Sep 17 00:00:00 2001 From: cccs-rs <62077998+cccs-rs@users.noreply.github.com> Date: Sat, 8 Mar 2025 03:34:06 +0000 Subject: [PATCH 2/5] Set default classification for new sources --- src/components/routes/admin/service_detail/updater.tsx | 8 +++++++- src/components/routes/manage/signature_sources.tsx | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/components/routes/admin/service_detail/updater.tsx b/src/components/routes/admin/service_detail/updater.tsx index 1d27042dd..7293d1328 100644 --- a/src/components/routes/admin/service_detail/updater.tsx +++ b/src/components/routes/admin/service_detail/updater.tsx @@ -18,6 +18,7 @@ import { useTheme } from '@mui/material'; import FormControl from '@mui/material/FormControl'; +import useALContext from 'components/hooks/useALContext'; import { DEFAULT_SOURCE, Service, UpdateSource } from 'components/models/base/service'; import { SourceCard } from 'components/routes/manage/signature_sources'; import { useEffect, useState } from 'react'; @@ -57,6 +58,7 @@ const marks = [ const ServiceUpdater = ({ service, defaults, setService, setModified }: ServiceUpdaterProps) => { const { t } = useTranslation(['adminServices']); + const { c12nDef } = useALContext(); const [dialog, setDialog] = useState(false); const [editDialog, setEditDialog] = useState(false); const [editedSourceID, setEditedSourceID] = useState(-1); @@ -367,7 +369,11 @@ const ServiceUpdater = ({ service, defaults, setService, setModified }: ServiceU diff --git a/src/components/routes/manage/signature_sources.tsx b/src/components/routes/manage/signature_sources.tsx index 6a8ef14bf..1ec826cd6 100644 --- a/src/components/routes/manage/signature_sources.tsx +++ b/src/components/routes/manage/signature_sources.tsx @@ -510,6 +510,7 @@ const ServiceDetail = ({ service, sources, generatesSignatures, updateIntervalSe const { t } = useTranslation(['manageSignatureSources']); const theme = useTheme(); const classes = useStyles(); + const { c12nDef } = useALContext(); const { apiCall } = useMyAPI(); const { closeGlobalDrawer, setGlobalDrawer } = useDrawer(); const { showSuccessMessage } = useMySnackbar(); @@ -562,7 +563,13 @@ const ServiceDetail = ({ service, sources, generatesSignatures, updateIntervalSe color: theme.palette.mode === 'dark' ? theme.palette.success.light : theme.palette.success.dark, margin: '-4px 0' }} - onClick={() => openDrawer(service, { ...DEFAULT_SOURCE, update_interval: updateIntervalSeconds })} + onClick={() => + openDrawer(service, { + ...DEFAULT_SOURCE, + update_interval: updateIntervalSeconds, + default_classification: c12nDef.UNRESTRICTED + }) + } size="large" > From 248fa54ba8b0c9a8805d1de44980a0934aa6afc3 Mon Sep 17 00:00:00 2001 From: cccs-rs <62077998+cccs-rs@users.noreply.github.com> Date: Sun, 9 Mar 2025 02:53:22 +0000 Subject: [PATCH 3/5] Set default pattern based on update_config --- src/components/models/base/service.ts | 3 +++ src/components/routes/admin/service_detail/updater.tsx | 3 ++- src/components/routes/manage/signature_sources.tsx | 7 +++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/components/models/base/service.ts b/src/components/models/base/service.ts index c26058c43..45a20036e 100644 --- a/src/components/models/base/service.ts +++ b/src/components/models/base/service.ts @@ -299,6 +299,9 @@ export type UpdateConfig = { /** Custom delimiter definition */ custom_delimiter?: string; + /** Default pattern for finding signatures*/ + default_pattern: string + /** Does the updater produce signatures? */ generates_signatures: boolean; diff --git a/src/components/routes/admin/service_detail/updater.tsx b/src/components/routes/admin/service_detail/updater.tsx index 7293d1328..f572f79ef 100644 --- a/src/components/routes/admin/service_detail/updater.tsx +++ b/src/components/routes/admin/service_detail/updater.tsx @@ -372,7 +372,8 @@ const ServiceUpdater = ({ service, defaults, setService, setModified }: ServiceU source={{ ...DEFAULT_SOURCE, update_interval: service.update_config.update_interval_seconds, - default_classification: c12nDef.UNRESTRICTED + default_classification: c12nDef.UNRESTRICTED, + pattern: service.update_config.default_pattern }} setOpen={setDialog} onSave={handleSaveSource} diff --git a/src/components/routes/manage/signature_sources.tsx b/src/components/routes/manage/signature_sources.tsx index 1ec826cd6..e9b6dac40 100644 --- a/src/components/routes/manage/signature_sources.tsx +++ b/src/components/routes/manage/signature_sources.tsx @@ -504,9 +504,10 @@ type ServiceDetailProps = { sources: UpdateConfig['sources']; generatesSignatures: UpdateConfig['generates_signatures']; updateIntervalSeconds: UpdateConfig['update_interval_seconds']; + defaultPattern: UpdateConfig['default_pattern'] }; -const ServiceDetail = ({ service, sources, generatesSignatures, updateIntervalSeconds }: ServiceDetailProps) => { +const ServiceDetail = ({ service, sources, generatesSignatures, updateIntervalSeconds, defaultPattern }: ServiceDetailProps) => { const { t } = useTranslation(['manageSignatureSources']); const theme = useTheme(); const classes = useStyles(); @@ -567,7 +568,8 @@ const ServiceDetail = ({ service, sources, generatesSignatures, updateIntervalSe openDrawer(service, { ...DEFAULT_SOURCE, update_interval: updateIntervalSeconds, - default_classification: c12nDef.UNRESTRICTED + default_classification: c12nDef.UNRESTRICTED, + pattern: defaultPattern }) } size="large" @@ -694,6 +696,7 @@ export default function SignatureSources() { sources={sources[key].sources} generatesSignatures={sources[key].generates_signatures} updateIntervalSeconds={sources[key].update_interval_seconds} + defaultPattern={sources[key].default_pattern} /> )) : [...Array(2)].map((item, i) => ( From bacf4147ad4661ff386c753960bd3836161793ff Mon Sep 17 00:00:00 2001 From: cccs-rs <62077998+cccs-rs@users.noreply.github.com> Date: Sun, 9 Mar 2025 04:13:58 +0000 Subject: [PATCH 4/5] Fix source name field when adding a source --- .../admin/service_detail/source_dialog.tsx | 2 +- .../routes/manage/signature_sources.tsx | 48 ++++++++++++++----- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/components/routes/admin/service_detail/source_dialog.tsx b/src/components/routes/admin/service_detail/source_dialog.tsx index 8143743b9..5cc4576eb 100644 --- a/src/components/routes/admin/service_detail/source_dialog.tsx +++ b/src/components/routes/admin/service_detail/source_dialog.tsx @@ -52,7 +52,7 @@ const WrappedSourceDialog = ({ open, setOpen, source = null, defaults, onSave }: ({ type SourceDetailDrawerProps = { service: string; base: UpdateSource; + defaults: UpdateSource; generatesSignatures: UpdateConfig['generates_signatures']; onClose?: () => void; }; -const WrappedSourceDetailDrawer = ({ service, base, onClose, generatesSignatures }: SourceDetailDrawerProps) => { +const WrappedSourceDetailDrawer = ({ + service, + base, + defaults, + onClose, + generatesSignatures +}: SourceDetailDrawerProps) => { const { t } = useTranslation(['manageSignatureSources']); const theme = useTheme(); const { apiCall } = useMyAPI(); @@ -324,8 +331,8 @@ const WrappedSourceDetailDrawer = ({ service, base, onClose, generatesSignatures { +const ServiceDetail = ({ + service, + sources, + generatesSignatures, + updateIntervalSeconds, + defaultPattern +}: ServiceDetailProps) => { const { t } = useTranslation(['manageSignatureSources']); const theme = useTheme(); const classes = useStyles(); @@ -530,11 +543,12 @@ const ServiceDetail = ({ service, sources, generatesSignatures, updateIntervalSe }); }; - const openDrawer = useCallback((currentService: string, source) => { + const openDrawer = useCallback((currentService: string, source, defaults) => { setGlobalDrawer( @@ -565,12 +579,20 @@ const ServiceDetail = ({ service, sources, generatesSignatures, updateIntervalSe margin: '-4px 0' }} onClick={() => - openDrawer(service, { - ...DEFAULT_SOURCE, - update_interval: updateIntervalSeconds, - default_classification: c12nDef.UNRESTRICTED, - pattern: defaultPattern - }) + openDrawer( + service, + { + ...DEFAULT_SOURCE, + update_interval: updateIntervalSeconds, + default_classification: c12nDef.UNRESTRICTED, + pattern: defaultPattern + }, + { + update_interval: updateIntervalSeconds, + default_classification: c12nDef.UNRESTRICTED, + pattern: defaultPattern + } + ) } size="large" > @@ -620,7 +642,7 @@ const ServiceDetail = ({ service, sources, generatesSignatures, updateIntervalSe key={id} source={source} service={service} - onClick={() => openDrawer(service, source)} + onClick={() => openDrawer(service, source, source)} generatesSignatures={generatesSignatures} /> )) From cda6b9054d6018da8be3742a96e825ab03f4999a Mon Sep 17 00:00:00 2001 From: cccs-rs <62077998+cccs-rs@users.noreply.github.com> Date: Sun, 9 Mar 2025 06:27:47 +0000 Subject: [PATCH 5/5] Fix bug in adding new sources --- src/components/routes/manage/signature_sources.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/routes/manage/signature_sources.tsx b/src/components/routes/manage/signature_sources.tsx index ef5421a6f..65261156e 100644 --- a/src/components/routes/manage/signature_sources.tsx +++ b/src/components/routes/manage/signature_sources.tsx @@ -175,13 +175,13 @@ const WrappedSourceDetailDrawer = ({ const saveChanges = () => { apiCall({ - method: base ? 'POST' : 'PUT', - url: base + method: base?.name ? 'POST' : 'PUT', + url: base?.name ? `/api/v4/signature/sources/${service}/${encodeURIComponent(source.name)}/` : `/api/v4/signature/sources/${service}/`, body: source, onSuccess: () => { - showSuccessMessage(t(base ? 'change.success' : 'add.success')); + showSuccessMessage(t(base?.name ? 'change.success' : 'add.success')); setModified(false); if (!base || !isXL) onClose(); setTimeout(() => window.dispatchEvent(new CustomEvent('reloadUpdateSources')), 1000);