summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames O'Doherty <james@theodohertyfamily.com>2026-05-29 23:35:21 -0400
committerJames O'Doherty <james@theodohertyfamily.com>2026-05-29 23:35:21 -0400
commitda70b10fbd056f19d892acad542ce96c40c58389 (patch)
tree7d506e83c163234403237b195ebe9e079e515af4
parent328a42144fd54ac99d1bf231e6114147e48b820f (diff)
refactor: rename module to git.theodohertyfamily.com/wg-wrap and apply public domain license
- Update go.mod and all internal imports to reflect the new module path - Add LICENSE file with the Unlicense (public domain dedication) - Increase timeouts in e2e lifecycle tests to prevent flaky failures - Verify all tests, linting, and formatting pass with the new module name
-rw-r--r--LICENSE24
-rw-r--r--README.md8
-rw-r--r--cmd/wg-wrap/main.go2
-rw-r--r--go.mod2
-rw-r--r--internal/cli/cli.go10
-rw-r--r--internal/namespace/lifecycle.go2
-rw-r--r--internal/namespace/lifecycle_test.go2
-rw-r--r--internal/namespace/lock_linux.go2
-rw-r--r--internal/namespace/lock_stub.go2
-rw-r--r--internal/namespace/namespace_stub.go2
-rw-r--r--internal/namespace/pinning.go2
-rw-r--r--internal/namespace/pinning_test.go2
-rw-r--r--internal/wireguard/wireguard.go2
-rw-r--r--internal/wireguard/wireguard_stub.go2
-rw-r--r--tests/e2e/lifecycle_test.go4
-rw-r--r--tests/e2e/vulnerability_test.go2
16 files changed, 45 insertions, 25 deletions
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..efb9808
--- /dev/null
+++ b/LICENSE
@@ -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/>
diff --git a/README.md b/README.md
index 679c49e..c648168 100644
--- a/README.md
+++ b/README.md
@@ -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() {
diff --git a/go.mod b/go.mod
index cc438ba..76e5820 100644
--- a/go.mod
+++ b/go.mod
@@ -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.