diff options
| -rw-r--r-- | LICENSE | 24 | ||||
| -rw-r--r-- | README.md | 8 | ||||
| -rw-r--r-- | cmd/wg-wrap/main.go | 2 | ||||
| -rw-r--r-- | go.mod | 2 | ||||
| -rw-r--r-- | internal/cli/cli.go | 10 | ||||
| -rw-r--r-- | internal/namespace/lifecycle.go | 2 | ||||
| -rw-r--r-- | internal/namespace/lifecycle_test.go | 2 | ||||
| -rw-r--r-- | internal/namespace/lock_linux.go | 2 | ||||
| -rw-r--r-- | internal/namespace/lock_stub.go | 2 | ||||
| -rw-r--r-- | internal/namespace/namespace_stub.go | 2 | ||||
| -rw-r--r-- | internal/namespace/pinning.go | 2 | ||||
| -rw-r--r-- | internal/namespace/pinning_test.go | 2 | ||||
| -rw-r--r-- | internal/wireguard/wireguard.go | 2 | ||||
| -rw-r--r-- | internal/wireguard/wireguard_stub.go | 2 | ||||
| -rw-r--r-- | tests/e2e/lifecycle_test.go | 4 | ||||
| -rw-r--r-- | tests/e2e/vulnerability_test.go | 2 |
16 files changed, 45 insertions, 25 deletions
@@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to <https://unlicense.org/> @@ -114,12 +114,8 @@ To support multiple concurrent commands on the same WireGuard tunnel without re- | **Isolation** | Global | Per-process/Namespace | | **Routing** | Host Routing Table | Isolated Namespace Table | -## Implementation Roadmap -1. **Bootstrap Logic**: Implement the `unshare` and re-execution flow via an embedded C launcher. (DONE) -2. **TUN/WG Integration**: Integrate the `tun` device with the `wireguard-go` device. -3. **Routing Automation**: Automate the `ip` command sequence for interface and route setup. -4. **Config & Profile Management**: Implement a robust parser for WireGuard configuration files and a full profile management system (import, list, edit, delete) targeting `~/.config/wg-wrap/profiles/`. -5. **Lifecycle Management**: Ensure the TUN and WireGuard devices are cleaned up upon process termination. +## License +This project is free and unencumbered software released into the public domain. See the [LICENSE](LICENSE) file for details. ## Technical Gotchas & Implementation Details diff --git a/cmd/wg-wrap/main.go b/cmd/wg-wrap/main.go index 7e2de9f..b313dec 100644 --- a/cmd/wg-wrap/main.go +++ b/cmd/wg-wrap/main.go @@ -6,7 +6,7 @@ import ( "os" "os/exec" - "git.theodohertyfamily.com/tools/wg-wrap/internal/cli" + "git.theodohertyfamily.com/wg-wrap/internal/cli" ) func main() { @@ -1,4 +1,4 @@ -module git.theodohertyfamily.com/tools/wg-wrap +module git.theodohertyfamily.com/wg-wrap go 1.26.3 diff --git a/internal/cli/cli.go b/internal/cli/cli.go index 0a2ec96..4d028a2 100644 --- a/internal/cli/cli.go +++ b/internal/cli/cli.go @@ -8,11 +8,11 @@ import ( "path/filepath" "strings" - "git.theodohertyfamily.com/tools/wg-wrap/internal/config" - "git.theodohertyfamily.com/tools/wg-wrap/internal/namespace" - "git.theodohertyfamily.com/tools/wg-wrap/internal/paths" - "git.theodohertyfamily.com/tools/wg-wrap/internal/wireguard" - "git.theodohertyfamily.com/tools/wg-wrap/pkg/wgconf" + "git.theodohertyfamily.com/wg-wrap/internal/config" + "git.theodohertyfamily.com/wg-wrap/internal/namespace" + "git.theodohertyfamily.com/wg-wrap/internal/paths" + "git.theodohertyfamily.com/wg-wrap/internal/wireguard" + "git.theodohertyfamily.com/wg-wrap/pkg/wgconf" ) type App struct { diff --git a/internal/namespace/lifecycle.go b/internal/namespace/lifecycle.go index 9a3b567..3bd1753 100644 --- a/internal/namespace/lifecycle.go +++ b/internal/namespace/lifecycle.go @@ -9,7 +9,7 @@ import ( "syscall" "time" - "git.theodohertyfamily.com/tools/wg-wrap/internal/paths" + "git.theodohertyfamily.com/wg-wrap/internal/paths" ) // GetProfileNamespacePath returns the path to the pinned namespace file for a profile. diff --git a/internal/namespace/lifecycle_test.go b/internal/namespace/lifecycle_test.go index 230e93a..1fb0a13 100644 --- a/internal/namespace/lifecycle_test.go +++ b/internal/namespace/lifecycle_test.go @@ -6,7 +6,7 @@ import ( "strconv" "testing" - "git.theodohertyfamily.com/tools/wg-wrap/internal/paths" + "git.theodohertyfamily.com/wg-wrap/internal/paths" ) func TestLifecycleReferenceCounting(t *testing.T) { diff --git a/internal/namespace/lock_linux.go b/internal/namespace/lock_linux.go index 8da98f6..3197d95 100644 --- a/internal/namespace/lock_linux.go +++ b/internal/namespace/lock_linux.go @@ -7,7 +7,7 @@ import ( "os" "path/filepath" - "git.theodohertyfamily.com/tools/wg-wrap/internal/paths" + "git.theodohertyfamily.com/wg-wrap/internal/paths" "golang.org/x/sys/unix" ) diff --git a/internal/namespace/lock_stub.go b/internal/namespace/lock_stub.go index 2282852..881c64c 100644 --- a/internal/namespace/lock_stub.go +++ b/internal/namespace/lock_stub.go @@ -5,7 +5,7 @@ package namespace import ( "os" - "git.theodohertyfamily.com/tools/wg-wrap/internal/paths" + "git.theodohertyfamily.com/wg-wrap/internal/paths" ) // AcquireProfileLock is a stub for non-Linux platforms. diff --git a/internal/namespace/namespace_stub.go b/internal/namespace/namespace_stub.go index db0ec24..e9d55df 100644 --- a/internal/namespace/namespace_stub.go +++ b/internal/namespace/namespace_stub.go @@ -4,7 +4,7 @@ package namespace import ( "fmt" - "git.theodohertyfamily.com/tools/wg-wrap/internal/paths" + "git.theodohertyfamily.com/wg-wrap/internal/paths" ) // PinNamespace touches the namespace path to indicate it is pinned/active. diff --git a/internal/namespace/pinning.go b/internal/namespace/pinning.go index e257187..07f15f8 100644 --- a/internal/namespace/pinning.go +++ b/internal/namespace/pinning.go @@ -8,7 +8,7 @@ import ( "path/filepath" "strconv" - "git.theodohertyfamily.com/tools/wg-wrap/internal/paths" + "git.theodohertyfamily.com/wg-wrap/internal/paths" "golang.org/x/sys/unix" ) diff --git a/internal/namespace/pinning_test.go b/internal/namespace/pinning_test.go index 18aba00..1bb40da 100644 --- a/internal/namespace/pinning_test.go +++ b/internal/namespace/pinning_test.go @@ -7,7 +7,7 @@ import ( "path/filepath" "testing" - "git.theodohertyfamily.com/tools/wg-wrap/internal/paths" + "git.theodohertyfamily.com/wg-wrap/internal/paths" ) func TestUnpinNamespace(t *testing.T) { diff --git a/internal/wireguard/wireguard.go b/internal/wireguard/wireguard.go index e250dab..8ac7e63 100644 --- a/internal/wireguard/wireguard.go +++ b/internal/wireguard/wireguard.go @@ -12,7 +12,7 @@ import ( "strconv" "strings" - "git.theodohertyfamily.com/tools/wg-wrap/pkg/wgconf" + "git.theodohertyfamily.com/wg-wrap/pkg/wgconf" "github.com/vishvananda/netlink" "golang.org/x/sys/unix" "golang.zx2c4.com/wireguard/conn" diff --git a/internal/wireguard/wireguard_stub.go b/internal/wireguard/wireguard_stub.go index 47d7b41..88660bd 100644 --- a/internal/wireguard/wireguard_stub.go +++ b/internal/wireguard/wireguard_stub.go @@ -4,7 +4,7 @@ package wireguard import ( "fmt" - "git.theodohertyfamily.com/tools/wg-wrap/pkg/wgconf" + "git.theodohertyfamily.com/wg-wrap/pkg/wgconf" ) type Tunnel struct{} diff --git a/tests/e2e/lifecycle_test.go b/tests/e2e/lifecycle_test.go index b6c001b..6cff0c8 100644 --- a/tests/e2e/lifecycle_test.go +++ b/tests/e2e/lifecycle_test.go @@ -10,7 +10,7 @@ import ( ) func waitForPids(t *testing.T, pidsDir string, expectedCount int) { - timeout := time.After(5 * time.Second) + timeout := time.After(10 * time.Second) tick := time.NewTicker(100 * time.Millisecond) defer tick.Stop() @@ -38,7 +38,7 @@ func waitForPids(t *testing.T, pidsDir string, expectedCount int) { } func waitForLifecycle(t *testing.T, binaryPath, runtimeDir, profile string, expectedActive bool) { - timeout := time.After(5 * time.Second) + timeout := time.After(10 * time.Second) tick := time.NewTicker(100 * time.Millisecond) defer tick.Stop() diff --git a/tests/e2e/vulnerability_test.go b/tests/e2e/vulnerability_test.go index a8c2dfb..8de38a3 100644 --- a/tests/e2e/vulnerability_test.go +++ b/tests/e2e/vulnerability_test.go @@ -8,7 +8,7 @@ import ( "strings" "testing" - "git.theodohertyfamily.com/tools/wg-wrap/internal/cli" + "git.theodohertyfamily.com/wg-wrap/internal/cli" ) // TestEditorArgumentSplitting verifies that the editor is correctly split into command and arguments. |
