Push code

This commit is contained in:
2026-01-28 23:03:50 +01:00
parent 5bd203b516
commit 00bbd6534b
19 changed files with 1224 additions and 0 deletions

152
scripts/build-deb.sh Executable file
View File

@@ -0,0 +1,152 @@
#!/bin/bash
# build-deb.sh - Build Debian package for FeatherDDNS (runs inside container)
set -e
VERSION="${VERSION:-1.0.0}"
ARCH="amd64"
PACKAGE_NAME="featherddns"
MAINTAINER="Steven Tracey <steven@nevets.tech>"
HOMEPAGE="https://git.nevets.tech/Steven/FeatherDDNS"
BUILD_DIR="build/${PACKAGE_NAME}_${VERSION}_${ARCH}"
echo "Building ${PACKAGE_NAME} version ${VERSION}..."
# Clean and create build directory
rm -rf "$BUILD_DIR"
mkdir -p "$BUILD_DIR/DEBIAN"
mkdir -p "$BUILD_DIR/usr/bin"
mkdir -p "$BUILD_DIR/etc/featherddns"
mkdir -p "$BUILD_DIR/lib/systemd/system"
# Copy and strip binary
echo "Copying binary..."
cp "bin/FeatherDDNS" "$BUILD_DIR/usr/bin/featherddns"
strip "$BUILD_DIR/usr/bin/featherddns"
chmod 755 "$BUILD_DIR/usr/bin/featherddns"
# Copy config if exists
if [ -f "config.json.example" ]; then
echo "Copying configuration..."
cp "config.json.example" "$BUILD_DIR/etc/featherddns/config.json"
chmod 644 "$BUILD_DIR/etc/featherddns/config.json"
fi
# Copy systemd service if exists
if [ -f "featherddns.service" ]; then
echo "Copying systemd service..."
cp "featherddns.service" "$BUILD_DIR/lib/systemd/system/"
chmod 644 "$BUILD_DIR/lib/systemd/system/featherddns.service"
fi
# Create control file
cat > "$BUILD_DIR/DEBIAN/control" <<EOF
Package: ${PACKAGE_NAME}
Version: ${VERSION}
Section: net
Priority: optional
Architecture: ${ARCH}
Maintainer: ${MAINTAINER}
Depends: libc6
Homepage: ${HOMEPAGE}
Description: FeatherDDNS - Lightweight Dynamic DNS Server
A lightweight dynamic DNS server for updating DNS records
via HTTP API requests.
EOF
# Create conffiles if config exists
if [ -f "$BUILD_DIR/etc/featherddns/config.json" ]; then
cat > "$BUILD_DIR/DEBIAN/conffiles" <<EOF
/etc/featherddns/config.json
EOF
chmod 644 "$BUILD_DIR/DEBIAN/conffiles"
fi
# Create postinst script
cat > "$BUILD_DIR/DEBIAN/postinst" <<'EOF'
#!/bin/bash
set -e
case "$1" in
configure)
# Create featherddns user if it doesn't exist
if ! getent passwd featherddns > /dev/null; then
useradd --system --home-dir /var/lib/featherddns --shell /bin/false featherddns
fi
# Create directories
mkdir -p /var/lib/featherddns
mkdir -p /var/log/featherddns
chown featherddns:featherddns /var/lib/featherddns
chown featherddns:featherddns /var/log/featherddns
# Reload systemd
if [ -d /run/systemd/system ]; then
systemctl daemon-reload >/dev/null || true
fi
;;
esac
exit 0
EOF
chmod 755 "$BUILD_DIR/DEBIAN/postinst"
# Create prerm script
cat > "$BUILD_DIR/DEBIAN/prerm" <<'EOF'
#!/bin/bash
set -e
case "$1" in
remove|upgrade)
if [ -d /run/systemd/system ]; then
systemctl stop featherddns.service >/dev/null 2>&1 || true
fi
;;
esac
exit 0
EOF
chmod 755 "$BUILD_DIR/DEBIAN/prerm"
# Create postrm script
cat > "$BUILD_DIR/DEBIAN/postrm" <<'EOF'
#!/bin/bash
set -e
case "$1" in
remove)
if [ -d /run/systemd/system ]; then
systemctl daemon-reload >/dev/null || true
fi
;;
purge)
rm -rf /etc/featherddns
rm -rf /var/lib/featherddns
rm -rf /var/log/featherddns
if [ -d /run/systemd/system ]; then
systemctl daemon-reload >/dev/null || true
fi
;;
esac
exit 0
EOF
chmod 755 "$BUILD_DIR/DEBIAN/postrm"
# Build the package
echo "Building package..."
dpkg-deb --build --root-owner-group "$BUILD_DIR"
# Move to dist directory
mkdir -p dist
mv "${BUILD_DIR}.deb" "dist/"
echo "Package built: dist/${PACKAGE_NAME}_${VERSION}_${ARCH}.deb"
# Run lintian check
if command -v lintian > /dev/null 2>&1; then
echo "Running lintian check..."
lintian "dist/${PACKAGE_NAME}_${VERSION}_${ARCH}.deb" || true
fi
echo "Done!"