mirror of
https://github.com/fosrl/newt.git
synced 2026-03-09 12:16:39 +00:00
Set username explicitly
This commit is contained in:
12
.github/workflows/cicd.yml
vendored
12
.github/workflows/cicd.yml
vendored
@@ -85,7 +85,7 @@ jobs:
|
|||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
timeout-minutes: 120
|
timeout-minutes: 120
|
||||||
env:
|
env:
|
||||||
DOCKERHUB_IMAGE: docker.io/${{ secrets.DOCKER_HUB_USERNAME }}/${{ github.event.repository.name }}
|
DOCKERHUB_IMAGE: docker.io/fosrl/${{ github.event.repository.name }}
|
||||||
GHCR_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}
|
GHCR_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@@ -108,7 +108,7 @@ jobs:
|
|||||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||||
with:
|
with:
|
||||||
registry: docker.io
|
registry: docker.io
|
||||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
username: fosrl
|
||||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||||
|
|
||||||
- name: Log in to GHCR
|
- name: Log in to GHCR
|
||||||
@@ -247,7 +247,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
images="${GHCR_IMAGE}"
|
images="${GHCR_IMAGE}"
|
||||||
if [ -n "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}" ] && [ -n "${{ secrets.DOCKER_HUB_USERNAME }}" ]; then
|
if [ -n "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}" ] && [ -n "fosrl" ]; then
|
||||||
images="${images}\n${DOCKERHUB_IMAGE}"
|
images="${images}\n${DOCKERHUB_IMAGE}"
|
||||||
fi
|
fi
|
||||||
{
|
{
|
||||||
@@ -290,7 +290,7 @@ jobs:
|
|||||||
IMAGE_LICENSE: ${{ env.IMAGE_LICENSE }}
|
IMAGE_LICENSE: ${{ env.IMAGE_LICENSE }}
|
||||||
DOCKERHUB_IMAGE: ${{ env.DOCKERHUB_IMAGE }}
|
DOCKERHUB_IMAGE: ${{ env.DOCKERHUB_IMAGE }}
|
||||||
GHCR_IMAGE: ${{ env.GHCR_IMAGE }}
|
GHCR_IMAGE: ${{ env.GHCR_IMAGE }}
|
||||||
DOCKER_HUB_USER: ${{ secrets.DOCKER_HUB_USERNAME }}
|
DOCKER_HUB_USER: fosrl
|
||||||
REPO: ${{ github.repository }}
|
REPO: ${{ github.repository }}
|
||||||
OWNER: ${{ github.repository_owner }}
|
OWNER: ${{ github.repository_owner }}
|
||||||
WORKFLOW_REF: ${{ github.workflow_ref }}
|
WORKFLOW_REF: ${{ github.workflow_ref }}
|
||||||
@@ -311,7 +311,7 @@ jobs:
|
|||||||
echo "=== Images ==="
|
echo "=== Images ==="
|
||||||
echo "DOCKERHUB_IMAGE=${DOCKERHUB_IMAGE}"
|
echo "DOCKERHUB_IMAGE=${DOCKERHUB_IMAGE}"
|
||||||
echo "GHCR_IMAGE=${GHCR_IMAGE}"
|
echo "GHCR_IMAGE=${GHCR_IMAGE}"
|
||||||
echo "DOCKER_HUB_USERNAME=${DOCKER_HUB_USER}"
|
echo "DOCKER_HUB_USERNAME=fosrl
|
||||||
echo
|
echo
|
||||||
echo "=== GitHub Kontext ==="
|
echo "=== GitHub Kontext ==="
|
||||||
echo "repository=${REPO}"
|
echo "repository=${REPO}"
|
||||||
@@ -364,7 +364,7 @@ jobs:
|
|||||||
id: attest-dh
|
id: attest-dh
|
||||||
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
|
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
|
||||||
with:
|
with:
|
||||||
subject-name: index.docker.io/${{ secrets.DOCKER_HUB_USERNAME }}/${{ github.event.repository.name }}
|
subject-name: index.docker.io/fosrl/${{ github.event.repository.name }}
|
||||||
subject-digest: ${{ steps.build.outputs.digest }}
|
subject-digest: ${{ steps.build.outputs.digest }}
|
||||||
push-to-registry: true
|
push-to-registry: true
|
||||||
show-summary: true
|
show-summary: true
|
||||||
|
|||||||
57
clients/permissions/permissions_freebsd.go
Normal file
57
clients/permissions/permissions_freebsd.go
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
//go:build freebsd
|
||||||
|
|
||||||
|
package permissions
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/fosrl/newt/logger"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// TUN device on FreeBSD
|
||||||
|
tunDevice = "/dev/tun"
|
||||||
|
ifnamsiz = 16
|
||||||
|
iffTun = 0x0001
|
||||||
|
iffNoPi = 0x1000
|
||||||
|
)
|
||||||
|
|
||||||
|
// ifReq is the structure for TUN interface configuration
|
||||||
|
type ifReq struct {
|
||||||
|
Name [ifnamsiz]byte
|
||||||
|
Flags uint16
|
||||||
|
_ [22]byte // padding to match kernel structure
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckNativeInterfacePermissions checks if the process has sufficient
|
||||||
|
// permissions to create a native TUN interface on FreeBSD.
|
||||||
|
// This requires root privileges (UID 0).
|
||||||
|
func CheckNativeInterfacePermissions() error {
|
||||||
|
logger.Debug("Checking native interface permissions on FreeBSD")
|
||||||
|
|
||||||
|
// Check if running as root
|
||||||
|
if os.Geteuid() == 0 {
|
||||||
|
logger.Debug("Running as root, sufficient permissions for native TUN interface")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// On FreeBSD, only root can create TUN interfaces
|
||||||
|
// Try to open the TUN device to verify
|
||||||
|
return tryOpenTunDevice()
|
||||||
|
}
|
||||||
|
|
||||||
|
// tryOpenTunDevice attempts to open the TUN device to verify permissions.
|
||||||
|
// On FreeBSD, /dev/tun is a cloning device that creates a new interface
|
||||||
|
// when opened.
|
||||||
|
func tryOpenTunDevice() error {
|
||||||
|
// Try opening /dev/tun (cloning device)
|
||||||
|
f, err := os.OpenFile(tunDevice, os.O_RDWR, 0)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("cannot open %s: %v (need root privileges)", tunDevice, err)
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
logger.Debug("Successfully opened TUN device, sufficient permissions for native TUN interface")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user