-
Notifications
You must be signed in to change notification settings - Fork 8.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
task/mac-eventing-form #62999
task/mac-eventing-form #62999
Changes from 9 commits
e11e19f
43c6a10
3d9e34c
d9c77ac
c12e150
d413a05
9fdfe77
0e8aa04
817c4bb
bf65411
47ac630
2e636ce
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -43,3 +43,33 @@ export function clone(policyDetailsConfig: UIPolicyConfig): UIPolicyConfig { | |
*/ | ||
return clonedConfig as UIPolicyConfig; | ||
} | ||
|
||
/** | ||
* Returns value from `configuration` | ||
*/ | ||
export const getIn = (a: UIPolicyConfig) => <Key extends keyof UIPolicyConfig>(key: Key) => < | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this works to keep us type compliant when we have different combinations of keys? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yeah this was to make sure the types were still getting passed through correctly |
||
subKey extends keyof UIPolicyConfig[Key] | ||
>( | ||
subKey: subKey | ||
) => <LeafKey extends keyof UIPolicyConfig[Key][subKey]>( | ||
leafKey: LeafKey | ||
): UIPolicyConfig[Key][subKey][LeafKey] => { | ||
return a[key][subKey][leafKey]; | ||
}; | ||
|
||
/** | ||
* Returns cloned `configuration` with `value` set by the `keyPath`. | ||
*/ | ||
export const setIn = (a: UIPolicyConfig) => <Key extends keyof UIPolicyConfig>(key: Key) => < | ||
subKey extends keyof UIPolicyConfig[Key] | ||
>( | ||
subKey: subKey | ||
) => <LeafKey extends keyof UIPolicyConfig[Key][subKey]>(leafKey: LeafKey) => < | ||
V extends UIPolicyConfig[Key][subKey][LeafKey] | ||
>( | ||
v: V | ||
): UIPolicyConfig => { | ||
const c = clone(a); | ||
c[key][subKey][leafKey] = v; | ||
return c; | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -105,6 +105,32 @@ export const selectedWindowsEventing = (state: PolicyDetailsState): number => { | |
return 0; | ||
}; | ||
|
||
/** Returns an object of all the mac eventing configurations */ | ||
export const macEventing = (state: PolicyDetailsState) => { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. probs going to remove this guy. |
||
const config = policyConfig(state); | ||
return config && config.mac.events; | ||
}; | ||
|
||
/** Returns the total number of possible mac eventing configurations */ | ||
export const totalMacEventing = (state: PolicyDetailsState): number => { | ||
const config = policyConfig(state); | ||
if (config) { | ||
return Object.keys(config.mac.events).length; | ||
} | ||
return 0; | ||
}; | ||
|
||
/** Returns the number of selected mac eventing configurations */ | ||
export const selectedMacEventing = (state: PolicyDetailsState): number => { | ||
const config = policyConfig(state); | ||
if (config) { | ||
return Object.values(config.mac.events).reduce((count, event) => { | ||
return event === true ? count + 1 : count; | ||
}, 0); | ||
} | ||
return 0; | ||
}; | ||
|
||
/** is there an api call in flight */ | ||
export const isLoading = (state: PolicyDetailsState) => state.isLoading; | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -97,7 +97,7 @@ export interface PolicyListState { | |
/** | ||
* Policy details store state | ||
*/ | ||
export interface PolicyDetailsState { | ||
export type PolicyDetailsState = Immutable<{ | ||
/** A single policy item */ | ||
policyItem?: PolicyData; | ||
/** API error if loading data failed */ | ||
|
@@ -112,40 +112,27 @@ export interface PolicyDetailsState { | |
success: boolean; | ||
error?: ServerApiError; | ||
}; | ||
} | ||
}>; | ||
|
||
/** | ||
* Endpoint Policy configuration | ||
*/ | ||
export interface PolicyConfig { | ||
windows: { | ||
events: { | ||
process: boolean; | ||
network: boolean; | ||
}; | ||
/** malware mode can be off, detect, prevent or prevent and notify user */ | ||
malware: MalwareFields; | ||
windows: UIPolicyConfig['windows'] & { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. curious to know why this was needed There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I was trying random stuff. Don't think the change is needed |
||
logging: { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. i see you use this same format 3 times here, could be a candidate to abstract
|
||
stdout: string; | ||
file: string; | ||
}; | ||
advanced: PolicyConfigAdvancedOptions; | ||
}; | ||
mac: { | ||
events: { | ||
process: boolean; | ||
}; | ||
malware: MalwareFields; | ||
mac: UIPolicyConfig['mac'] & { | ||
logging: { | ||
stdout: string; | ||
file: string; | ||
}; | ||
advanced: PolicyConfigAdvancedOptions; | ||
}; | ||
linux: { | ||
events: { | ||
process: boolean; | ||
}; | ||
linux: UIPolicyConfig['linux'] & { | ||
logging: { | ||
stdout: string; | ||
file: string; | ||
|
@@ -168,29 +155,39 @@ interface PolicyConfigAdvancedOptions { | |
}; | ||
} | ||
|
||
/** | ||
* Windows-specific policy configuration that is supported via the UI | ||
*/ | ||
type WindowsPolicyConfig = Pick<PolicyConfig['windows'], 'events' | 'malware'>; | ||
|
||
/** | ||
* Mac-specific policy configuration that is supported via the UI | ||
*/ | ||
type MacPolicyConfig = Pick<PolicyConfig['mac'], 'malware' | 'events'>; | ||
|
||
/** | ||
* Linux-specific policy configuration that is supported via the UI | ||
*/ | ||
type LinuxPolicyConfig = Pick<PolicyConfig['linux'], 'events'>; | ||
|
||
/** | ||
* The set of Policy configuration settings that are show/edited via the UI | ||
*/ | ||
export interface UIPolicyConfig { | ||
windows: WindowsPolicyConfig; | ||
mac: MacPolicyConfig; | ||
linux: LinuxPolicyConfig; | ||
} | ||
/* eslint-disable @typescript-eslint/consistent-type-definitions */ | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why disable this here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not needed. was just trying random stuff because typescript was beating us up |
||
export type UIPolicyConfig = { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. do you ever use these fields all together and not just selecting one type from the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yes as of now, there is one form that changes malware protections for both windows and mac. so it grabs the entire policyconfig and returns back the changed malware protection for both mac and windows. There will probably be other protections like this in the future |
||
windows: { | ||
events: { | ||
process: boolean; | ||
network: boolean; | ||
}; | ||
/** malware mode can be off, detect, prevent or prevent and notify user */ | ||
malware: MalwareFields; | ||
}; | ||
mac: { | ||
events: { | ||
file: boolean; | ||
process: boolean; | ||
network: boolean; | ||
}; | ||
malware: MalwareFields; | ||
}; | ||
|
||
/** | ||
* Linux-specific policy configuration that is supported via the UI | ||
*/ | ||
linux: { | ||
events: { | ||
file: boolean; | ||
process: boolean; | ||
network: boolean; | ||
}; | ||
}; | ||
}; | ||
|
||
/** OS used in Policy */ | ||
export enum OS { | ||
|
@@ -203,6 +200,7 @@ export enum OS { | |
export enum EventingFields { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think this is used anymore There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. i believe you are right! |
||
process = 'process', | ||
network = 'network', | ||
file = 'file', | ||
} | ||
|
||
/** | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License; | ||
* you may not use this file except in compliance with the Elastic License. | ||
*/ | ||
|
||
export { WindowsEventing } from './windows'; | ||
export { MacEventing } from './mac'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
uhhh gotta take away these TODOs