aboutsummaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2024-09-09flag: rename cli to flagOphestra Umiker
Yet another leftover from Ego. The cli name made no sense and this file only contains flag declarations now hence the rename. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09app/dbus: set dbusAddress earlyOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09app/dbus: manage dbus proxy and pass address to childOphestra Umiker
This commit adds code that starts and registers the D-Bus proxy, as well as cleanup code that tracks and closes the daemon once our child exits. A few more flags were added to pass D-Bus config to xdg-dbus-proxy. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09dbus: implement xdg-dbus-proxy wrapperOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09app: treat display server variable unset as fatalOphestra Umiker
This is yet another remnant of Ego, as Ego unconditionally shares these resources and the absence of them are ignored and warned about in verbose logging. In our case they are individually opt-in so silently dropping them while the enablement is still set makes very little sense. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09app/run: remove bare launch optionOphestra Umiker
This flag serves no use and is only a leftover from Ego. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-08state/print: collect and output state information of all usersOphestra Umiker
The -state flag now outputs state of all users. The old behaviour can be accessed via the -state-current flag, user is selected via -u. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-08nix: provide options for capability flagsOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-08clean up setup/launcher code and enable better control over sharesOphestra Umiker
In the past Wayland, X and PulseAudio are shared unconditionally. This can unnecessarily increase attack surface as some of these resources might not be needed at all. This commit moves all environment preparation code to the internal app package and selectively call them based on flags. An "enablements" bitfield is introduced tracking all enabled shares. This value is registered after successful child process launch and stored in launcher states. Code responsible for running the child process is isolated to its own app/run file and cleaned up. Launch method selection is also extensively cleaned up. The internal state/track readLaunchers function now takes uid as an argument. Launcher state is now printed using text/tabwriter and argv is only emitted when verbose. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-04release: 1.0.4Ophestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-04update README documentOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-04nix: implement nixos moduleOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-04app/launch: set argv when launching shellOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-04workflows: rename binary to fortifyOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-04rename to fortify and restructureOphestra Umiker
More sandbox features will be added and this will no longer track ego's features and behaviour. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-16license: embed license in executableOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-16nix: build directly with buildGoModulesOphestra Umiker
Since we have no dependencies, we don't need a vendor hash, so doing this actually makes sense. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-16adapt README documentOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-16apply MIT licenseOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-16apply X11 licenseOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-16state: track launcher states in runDir and clean up before exitOphestra Umiker
X11 hosts and ACL rules are no longer necessary after all launcher processes exit. This reverts all changes to the system made during setup when no launchers remain. State information is also saved in runDir which can be tracked externally. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15workflows: add release workflowOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15main: implement sudo and machinectl launcher methodsOphestra Umiker
This does almost exactly what github:intgr/ego does, with some minor optimisations and corrections. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15launcher: implement launcher wrapperOphestra Umiker
There is no way to have machinectl pass part of its argv to the child, and formatting the string for a shell is highly error-prone and complex, so the argv slice is encoded and passed to a launcher process launched by machinectl which then calls execve(2) to start the final process. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15util: PulseAudio cookie discoveryOphestra Umiker
This appears to be how a regular PulseAudio client discovers the PulseAudio cookie. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15acl: fix memory leak in removeEntryOphestra Umiker
According to manpage acl_get_qualifier(3) the void * returned by this function could be allocated on the heap. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15util: file copy and exec.LookPath wrapperOphestra Umiker
Add convenience functions for copying files to owner readable targets and LookPath comma ok wrapper. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15nix: add libxcb package to dev shellOphestra Umiker
Since we link libxcb as well now this is needed in the dev shell for it to build properly without impure. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-14x11: wrap libxcb ChangeHosts requestOphestra Umiker
Even though many pure Go libxcb implementations exist, it is at least as complex and unreadable as libxcb, if not more. Since well known libraries like SDL, qt and gtk uses libxcb, and they somehow understand how to use it, I can only assume these people have read enough code to make sure it's correct enough. Call it wishful thinking. I don't care anymore. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-11util: port sd_booted functionOphestra Umiker
Manpage provided by systemd states that the sd_booted function internally "checks whether the directory /run/systemd/system/ exists", as well as that "a simple check like this can also be implemented trivially in shell or any other language". This implies the behaviour of this function can be expected to be stable. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-11nix: set up devShellOphestra Umiker
Since we're using cgo to call into libacl a few dependencies other than go are required to build. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-11acl: implement acl utils via libaclOphestra Umiker
The library is simple and should be easy to port to Go, however correctness matters more in this case and overhead from cgo is negligible for our usage scenario. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-09cli: parse and resolve flagsOphestra Umiker
Copy all flags from upstream. The machinectl flag is dropped as it does nothing. the flag package is used to reduce complexity since we do not care about compatibility with upstream. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>