mirror of
https://github.com/fleetdm/fleet
synced 2026-05-18 06:28:40 +00:00
## Addresses #20467 – part 2 ### Aggregate software: #### Software titles <img width="1616" alt="sw-titles-updated" src="https://github.com/user-attachments/assets/0b9922c7-e36e-4d2f-b204-95c3cdf9b602"> #### Software versions <img width="1616" alt="Screenshot 2024-07-29 at 6 14 21 PM" src="https://github.com/user-attachments/assets/5a097700-cd6c-45b1-a21f-9d76a733f0ae"> #### Host software <img width="1616" alt="Screenshot 2024-07-29 at 6 23 01 PM" src="https://github.com/user-attachments/assets/84e18695-f47a-4022-bd53-7f5d37ce452a"> ### Add software modal (VPP) _screenshots use mocked data - UI is flexible enough to display cleanly before and after backend is in place:_ <img width="1339" alt="happy" src="https://github.com/user-attachments/assets/8900aa93-316c-4a09-8e5a-1a1e45b0c458"> #### No apps: <img width="1572" alt="Screenshot 2024-07-29 at 6 35 03 PM" src="https://github.com/user-attachments/assets/466b9b6c-4d3d-49dd-94a9-94e395d89cb7"> #### Not enabled: <img width="1572" alt="Screenshot 2024-07-29 at 6 37 45 PM" src="https://github.com/user-attachments/assets/9bcfd480-8741-4d95-ba3b-550dee4dc673"> #### Error: <img width="1572" alt="Screenshot 2024-07-29 at 6 39 39 PM" src="https://github.com/user-attachments/assets/e944dd40-676e-4aba-9cd9-49ff319bf402"> ### Vuln support – Not supported for now: _see above screenshots for `list` endpoints_ #### Software title detail <img width="1616" alt="Screenshot 2024-07-29 at 6 47 29 PM" src="https://github.com/user-attachments/assets/2e30fd0a-21e4-4d19-bf9b-71a994bfd0e7"> #### Software version and OS detail: <img width="1616" alt="Screenshot 2024-07-29 at 6 48 28 PM" src="https://github.com/user-attachments/assets/e8fec769-ba97-4b6b-b10c-9bb4c973c732"> <img width="1616" alt="Screenshot 2024-07-29 at 6 50 25 PM" src="https://github.com/user-attachments/assets/0ac15727-e0cb-447c-8758-c58b79656d1a"> - [x] Changes file added for user-visible changes in `changes/`, - [x] Added/updated tests - [x] Manual QA for all new/changed functionality --------- Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
110 lines
3.1 KiB
TypeScript
110 lines
3.1 KiB
TypeScript
export const APPLE_PLATFORM_DISPLAY_NAMES = {
|
|
darwin: "macOS",
|
|
ios: "iOS",
|
|
ipados: "iPadOS",
|
|
} as const;
|
|
|
|
export type ApplePlatform = keyof typeof APPLE_PLATFORM_DISPLAY_NAMES;
|
|
export type AppleDisplayPlatform = typeof APPLE_PLATFORM_DISPLAY_NAMES[keyof typeof APPLE_PLATFORM_DISPLAY_NAMES];
|
|
|
|
export const PLATFORM_DISPLAY_NAMES = {
|
|
windows: "Windows",
|
|
linux: "Linux",
|
|
chrome: "ChromeOS",
|
|
...APPLE_PLATFORM_DISPLAY_NAMES,
|
|
} as const;
|
|
|
|
export type Platform = keyof typeof PLATFORM_DISPLAY_NAMES;
|
|
export type DisplayPlatform = typeof PLATFORM_DISPLAY_NAMES[keyof typeof PLATFORM_DISPLAY_NAMES];
|
|
export type QueryableDisplayPlatform = Exclude<
|
|
DisplayPlatform,
|
|
"iOS" | "iPadOS"
|
|
>;
|
|
export type QueryablePlatform = Exclude<Platform, "ios" | "ipados">;
|
|
|
|
export const SUPPORTED_PLATFORMS: QueryablePlatform[] = [
|
|
"darwin",
|
|
"windows",
|
|
"linux",
|
|
"chrome",
|
|
];
|
|
|
|
// TODO - add "iOS" and "iPadOS" once we support them
|
|
export const VULN_SUPPORTED_PLATFORMS: Platform[] = ["darwin", "windows"];
|
|
|
|
export type SelectedPlatform = QueryablePlatform | "all";
|
|
|
|
export type SelectedPlatformString =
|
|
| ""
|
|
| QueryablePlatform
|
|
| `${QueryablePlatform},${QueryablePlatform}`
|
|
| `${QueryablePlatform},${QueryablePlatform},${QueryablePlatform}`
|
|
| `${QueryablePlatform},${QueryablePlatform},${QueryablePlatform},${QueryablePlatform}`;
|
|
|
|
// TODO: revisit this approach pending resolution of https://github.com/fleetdm/fleet/issues/3555.
|
|
export const MACADMINS_EXTENSION_TABLES: Record<string, QueryablePlatform[]> = {
|
|
file_lines: ["darwin", "linux", "windows"],
|
|
filevault_users: ["darwin"],
|
|
google_chrome_profiles: ["darwin", "linux", "windows"],
|
|
macos_profiles: ["darwin"],
|
|
mdm: ["darwin"],
|
|
munki_info: ["darwin"],
|
|
munki_install: ["darwin"],
|
|
// network_quality: ["darwin"], // TODO: add this table if/when it is incorporated into orbit
|
|
puppet_info: ["darwin", "linux", "windows"],
|
|
puppet_logs: ["darwin", "linux", "windows"],
|
|
puppet_state: ["darwin", "linux", "windows"],
|
|
macadmins_unified_log: ["darwin"],
|
|
};
|
|
|
|
/**
|
|
* Host Linux OSs as defined by the Fleet server.
|
|
*
|
|
* @see https://github.com/fleetdm/fleet/blob/5a21e2cfb029053ddad0508869eb9f1f23997bf2/server/fleet/hosts.go#L780
|
|
*/
|
|
export const HOST_LINUX_PLATFORMS = [
|
|
"linux",
|
|
"ubuntu",
|
|
"debian",
|
|
"rhel",
|
|
"centos",
|
|
"sles",
|
|
"kali",
|
|
"gentoo",
|
|
"amzn",
|
|
"pop",
|
|
"arch",
|
|
"linuxmint",
|
|
"void",
|
|
"nixos",
|
|
"endeavouros",
|
|
"manjaro",
|
|
"opensuse-leap",
|
|
"opensuse-tumbleweed",
|
|
"tuxedo",
|
|
] as const;
|
|
|
|
export const HOST_APPLE_PLATFORMS = ["darwin", "ios", "ipados"] as const;
|
|
|
|
export type HostPlatform =
|
|
| typeof HOST_LINUX_PLATFORMS[number]
|
|
| typeof HOST_APPLE_PLATFORMS[number]
|
|
| "windows"
|
|
| "chrome";
|
|
|
|
/**
|
|
* Checks if the provided platform is a Linux-like OS. We can recieve many
|
|
* different types of host platforms so we need a check that will cover all
|
|
* the possible Linux-like platform values.
|
|
*/
|
|
export const isLinuxLike = (platform: string) => {
|
|
return HOST_LINUX_PLATFORMS.includes(
|
|
platform as typeof HOST_LINUX_PLATFORMS[number]
|
|
);
|
|
};
|
|
|
|
export const isAppleDevice = (platform: string) => {
|
|
return HOST_APPLE_PLATFORMS.includes(
|
|
platform as typeof HOST_APPLE_PLATFORMS[number]
|
|
);
|
|
};
|