mirror of
https://github.com/safing/portmaster
synced 2026-04-28 19:41:59 +00:00
Restructure modules (#1572)
* Move portbase into monorepo * Add new simple module mgr * [WIP] Switch to new simple module mgr * Add StateMgr and more worker variants * [WIP] Switch more modules * [WIP] Switch more modules * [WIP] swtich more modules * [WIP] switch all SPN modules * [WIP] switch all service modules * [WIP] Convert all workers to the new module system * [WIP] add new task system to module manager * [WIP] Add second take for scheduling workers * [WIP] Add FIXME for bugs in new scheduler * [WIP] Add minor improvements to scheduler * [WIP] Add new worker scheduler * [WIP] Fix more bug related to new module system * [WIP] Fix start handing of the new module system * [WIP] Improve startup process * [WIP] Fix minor issues * [WIP] Fix missing subsystem in settings * [WIP] Initialize managers in constructor * [WIP] Move module event initialization to constrictors * [WIP] Fix setting for enabling and disabling the SPN module * [WIP] Move API registeration into module construction * [WIP] Update states mgr for all modules * [WIP] Add CmdLine operation support * Add state helper methods to module group and instance * Add notification and module status handling to status package * Fix starting issues * Remove pilot widget and update security lock to new status data * Remove debug logs * Improve http server shutdown * Add workaround for cleanly shutting down firewall+netquery * Improve logging * Add syncing states with notifications for new module system * Improve starting, stopping, shutdown; resolve FIXMEs/TODOs * [WIP] Fix most unit tests * Review new module system and fix minor issues * Push shutdown and restart events again via API * Set sleep mode via interface * Update example/template module * [WIP] Fix spn/cabin unit test * Remove deprecated UI elements * Make log output more similar for the logging transition phase * Switch spn hub and observer cmds to new module system * Fix log sources * Make worker mgr less error prone * Fix tests and minor issues * Fix observation hub * Improve shutdown and restart handling * Split up big connection.go source file * Move varint and dsd packages to structures repo * Improve expansion test * Fix linter warnings * Fix interception module on windows * Fix linter errors --------- Co-authored-by: Vladimir Stoilov <vladimir@safing.io>
This commit is contained in:
parent
10a77498f4
commit
80664d1a27
647 changed files with 37690 additions and 3366 deletions
|
|
@ -24,7 +24,7 @@ import {
|
|||
} from '@safing/portmaster-api';
|
||||
import { BehaviorSubject, Subscription, combineLatest } from 'rxjs';
|
||||
import { debounceTime } from 'rxjs/operators';
|
||||
import { StatusService, Subsystem } from 'src/app/services';
|
||||
import { StatusService } from 'src/app/services';
|
||||
import {
|
||||
fadeInAnimation,
|
||||
fadeInListAnimation,
|
||||
|
|
@ -44,6 +44,8 @@ import {
|
|||
ImportDialogComponent,
|
||||
} from './import-dialog/import-dialog.component';
|
||||
|
||||
import { subsystems, SubsystemWithExpertise } from './subsystems'
|
||||
|
||||
interface Category {
|
||||
name: string;
|
||||
settings: Setting[];
|
||||
|
|
@ -52,12 +54,6 @@ interface Category {
|
|||
hasUserDefinedValues: boolean;
|
||||
}
|
||||
|
||||
interface SubsystemWithExpertise extends Subsystem {
|
||||
minimumExpertise: ExpertiseLevelNumber;
|
||||
isDisabled: boolean;
|
||||
hasUserDefinedValues: boolean;
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'app-settings-view',
|
||||
templateUrl: './config-settings.html',
|
||||
|
|
@ -66,7 +62,7 @@ interface SubsystemWithExpertise extends Subsystem {
|
|||
})
|
||||
export class ConfigSettingsViewComponent
|
||||
implements OnInit, OnDestroy, AfterViewInit {
|
||||
subsystems: SubsystemWithExpertise[] = [];
|
||||
subsystems: SubsystemWithExpertise[] = subsystems;
|
||||
others: Setting[] | null = null;
|
||||
settings: Map<string, Category[]> = new Map();
|
||||
|
||||
|
|
@ -207,7 +203,7 @@ export class ConfigSettingsViewComponent
|
|||
private searchService: FuzzySearchService,
|
||||
private actionIndicator: ActionIndicatorService,
|
||||
private portapi: PortapiService,
|
||||
private dialog: SfngDialogService
|
||||
private dialog: SfngDialogService,
|
||||
) { }
|
||||
|
||||
openImportDialog() {
|
||||
|
|
@ -303,21 +299,12 @@ export class ConfigSettingsViewComponent
|
|||
ngOnInit(): void {
|
||||
this.subscription = combineLatest([
|
||||
this.onSettingsChange,
|
||||
this.statusService.querySubsystem(),
|
||||
this.onSearch.pipe(debounceTime(250)),
|
||||
this.configService.watch<StringSetting>('core/releaseLevel'),
|
||||
])
|
||||
.pipe(debounceTime(10))
|
||||
.subscribe(
|
||||
([settings, subsystems, searchTerm, currentReleaseLevelSetting]) => {
|
||||
this.subsystems = subsystems.map((s) => ({
|
||||
...s,
|
||||
// we start with developer and decrease to the lowest number required
|
||||
// while grouping the settings.
|
||||
minimumExpertise: ExpertiseLevelNumber.developer,
|
||||
isDisabled: false,
|
||||
hasUserDefinedValues: false,
|
||||
}));
|
||||
([settings, searchTerm, currentReleaseLevelSetting]) => {
|
||||
this.others = [];
|
||||
this.settings = new Map();
|
||||
|
||||
|
|
|
|||
272
desktop/angular/src/app/shared/config/subsystems.ts
Normal file
272
desktop/angular/src/app/shared/config/subsystems.ts
Normal file
|
|
@ -0,0 +1,272 @@
|
|||
import { ExpertiseLevelNumber } from "@safing/portmaster-api";
|
||||
import { Subsystem } from "src/app/services/status.types";
|
||||
|
||||
export interface SubsystemWithExpertise extends Subsystem {
|
||||
minimumExpertise: ExpertiseLevelNumber;
|
||||
isDisabled: boolean;
|
||||
hasUserDefinedValues: boolean;
|
||||
}
|
||||
|
||||
export var subsystems : SubsystemWithExpertise[] = [
|
||||
{
|
||||
minimumExpertise: ExpertiseLevelNumber.developer,
|
||||
isDisabled: false,
|
||||
hasUserDefinedValues: false,
|
||||
ID: "core",
|
||||
Name: "Core",
|
||||
Description: "Base Structure and System Integration",
|
||||
Modules: [
|
||||
{
|
||||
Name: "core",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "subsystems",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "runtime",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "status",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "ui",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "compat",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "broadcasts",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "sync",
|
||||
Enabled: true
|
||||
}
|
||||
],
|
||||
ToggleOptionKey: "",
|
||||
ExpertiseLevel: "user",
|
||||
ReleaseLevel: 0,
|
||||
ConfigKeySpace: "config:core/",
|
||||
_meta: {
|
||||
Created: 0,
|
||||
Modified: 0,
|
||||
Expires: 0,
|
||||
Deleted: 0,
|
||||
Key: "runtime:subsystems/core"
|
||||
}
|
||||
},
|
||||
{
|
||||
minimumExpertise: ExpertiseLevelNumber.developer,
|
||||
isDisabled: false,
|
||||
hasUserDefinedValues: false,
|
||||
ID: "dns",
|
||||
Name: "Secure DNS",
|
||||
Description: "DNS resolver with scoping and DNS-over-TLS",
|
||||
Modules: [
|
||||
{
|
||||
Name: "nameserver",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "resolver",
|
||||
Enabled: true
|
||||
}
|
||||
],
|
||||
ToggleOptionKey: "",
|
||||
ExpertiseLevel: "user",
|
||||
ReleaseLevel: 0,
|
||||
ConfigKeySpace: "config:dns/",
|
||||
_meta: {
|
||||
Created: 0,
|
||||
Modified: 0,
|
||||
Expires: 0,
|
||||
Deleted: 0,
|
||||
Key: "runtime:subsystems/dns"
|
||||
}
|
||||
},
|
||||
{
|
||||
minimumExpertise: ExpertiseLevelNumber.developer,
|
||||
isDisabled: false,
|
||||
hasUserDefinedValues: false,
|
||||
ID: "filter",
|
||||
Name: "Privacy Filter",
|
||||
Description: "DNS and Network Filter",
|
||||
Modules: [
|
||||
{
|
||||
Name: "filter",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "interception",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "base",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "database",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "config",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "rng",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "metrics",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "api",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "updates",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "network",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "netenv",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "processes",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "profiles",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "notifications",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "intel",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "geoip",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "filterlists",
|
||||
Enabled: true
|
||||
},
|
||||
{
|
||||
Name: "customlists",
|
||||
Enabled: true
|
||||
}
|
||||
],
|
||||
ToggleOptionKey: "",
|
||||
ExpertiseLevel: "user",
|
||||
ReleaseLevel: 0,
|
||||
ConfigKeySpace: "config:filter/",
|
||||
_meta: {
|
||||
Created: 0,
|
||||
Modified: 0,
|
||||
Expires: 0,
|
||||
Deleted: 0,
|
||||
Key: "runtime:subsystems/filter"
|
||||
}
|
||||
},
|
||||
{
|
||||
minimumExpertise: ExpertiseLevelNumber.developer,
|
||||
isDisabled: false,
|
||||
hasUserDefinedValues: false,
|
||||
ID: "history",
|
||||
Name: "Network History",
|
||||
Description: "Keep Network History Data",
|
||||
Modules: [
|
||||
{
|
||||
Name: "netquery",
|
||||
Enabled: true
|
||||
}
|
||||
],
|
||||
ToggleOptionKey: "",
|
||||
ExpertiseLevel: "user",
|
||||
ReleaseLevel: 0,
|
||||
ConfigKeySpace: "config:history/",
|
||||
_meta: {
|
||||
Created: 0,
|
||||
Modified: 0,
|
||||
Expires: 0,
|
||||
Deleted: 0,
|
||||
Key: "runtime:subsystems/history"
|
||||
}
|
||||
},
|
||||
{
|
||||
minimumExpertise: ExpertiseLevelNumber.developer,
|
||||
isDisabled: false,
|
||||
hasUserDefinedValues: false,
|
||||
ID: "spn",
|
||||
Name: "SPN",
|
||||
Description: "Safing Privacy Network",
|
||||
Modules: [
|
||||
{
|
||||
Name: "captain",
|
||||
Enabled: false
|
||||
},
|
||||
{
|
||||
Name: "terminal",
|
||||
Enabled: false
|
||||
},
|
||||
{
|
||||
Name: "cabin",
|
||||
Enabled: false
|
||||
},
|
||||
{
|
||||
Name: "ships",
|
||||
Enabled: false
|
||||
},
|
||||
{
|
||||
Name: "docks",
|
||||
Enabled: false
|
||||
},
|
||||
{
|
||||
Name: "access",
|
||||
Enabled: false
|
||||
},
|
||||
{
|
||||
Name: "crew",
|
||||
Enabled: false
|
||||
},
|
||||
{
|
||||
Name: "navigator",
|
||||
Enabled: false
|
||||
},
|
||||
{
|
||||
Name: "sluice",
|
||||
Enabled: false
|
||||
},
|
||||
{
|
||||
Name: "patrol",
|
||||
Enabled: false
|
||||
}
|
||||
],
|
||||
ToggleOptionKey: "spn/enable",
|
||||
ExpertiseLevel: "user",
|
||||
ReleaseLevel: 0,
|
||||
ConfigKeySpace: "config:spn/",
|
||||
_meta: {
|
||||
Created: 0,
|
||||
Modified: 0,
|
||||
Expires: 0,
|
||||
Deleted: 0,
|
||||
Key: "runtime:subsystems/spn"
|
||||
}
|
||||
}
|
||||
];
|
||||
Loading…
Add table
Add a link
Reference in a new issue