Add files via upload

This commit is contained in:
thakares authored and GitHub committed 2025-05-25 11:45:47 +05:30
1 parent 18b2c37dc0
commit f7e8cb0969
3 files changed
+307

No files matched your search

+110
View File
@@ -0,0 +1,110 @@
#!/bin/bash
# Check for required tools
if ! command -v dpkg-deb &> /dev/null; then
echo "dpkg-deb is required but not installed. Please install dpkg-dev package."
exit 1
fi
# Package information
PACKAGE="nx9-dns-server"
VERSION=$(grep '^version =' Cargo.toml | cut -d '"' -f2)
ARCH=$(dpkg --print-architecture)
MAINTAINER="Sunil Purushottam Thakare"
DESCRIPTION="High-performance DNS server with DNSSEC support"
# Create package directory structure
PKGDIR="$PACKAGE-$VERSION"
mkdir -p "$PKGDIR/DEBIAN"
mkdir -p "$PKGDIR/usr/local/bin"
mkdir -p "$PKGDIR/etc/nx9-dns-server"
mkdir -p "$PKGDIR/usr/lib/systemd/system"
mkdir -p "$PKGDIR/var/lib/nx9-dns-server"
mkdir -p "$PKGDIR/usr/share/doc/$PACKAGE"
# Build the project
cargo build --release
# Create control file
cat > "$PKGDIR/DEBIAN/control" << EOF
Package: $PACKAGE
Version: $VERSION
Architecture: $ARCH
Maintainer: $MAINTAINER
Depends: libc6 (>= 2.17), adduser
Section: net
Priority: optional
Homepage: https://github.com/yourusername/nx9-dns-server
Description: $DESCRIPTION
NX9 DNS Server is a high-performance DNS server implementation
with full DNSSEC support. It provides both authoritative and
recursive DNS services with modern features like cache management
and metrics export.
EOF
# Create postinst script
cat > "$PKGDIR/DEBIAN/postinst" << EOF
#!/bin/sh
set -e
# Create nx9-dns user if it doesn't exist
if ! getent passwd nx9-dns > /dev/null; then
adduser --system --group --no-create-home --home /nonexistent nx9-dns
fi
# Set permissions
chown -R nx9-dns:nx9-dns /var/lib/nx9-dns-server
chmod 755 /var/lib/nx9-dns-server
# Enable and start service
if [ -x "/bin/systemctl" ]; then
systemctl daemon-reload
systemctl enable nx9-dns-server.service || true
systemctl start nx9-dns-server.service || true
fi
EOF
# Create prerm script
cat > "$PKGDIR/DEBIAN/prerm" << EOF
#!/bin/sh
set -e
if [ -x "/bin/systemctl" ]; then
systemctl stop nx9-dns-server.service || true
systemctl disable nx9-dns-server.service || true
fi
EOF
# Set permissions for maintainer scripts
chmod 755 "$PKGDIR/DEBIAN/postinst"
chmod 755 "$PKGDIR/DEBIAN/prerm"
# Copy files
cp target/release/nx9-dns-server "$PKGDIR/usr/local/bin/"
cp config/nx9-dns-server.conf "$PKGDIR/etc/nx9-dns-server/" 2>/dev/null || echo "No config file found, skipping..."
cp README.md LICENSE "$PKGDIR/usr/share/doc/$PACKAGE/" 2>/dev/null || echo "No documentation files found, skipping..."
# Create systemd service file
cat > "$PKGDIR/usr/lib/systemd/system/nx9-dns-server.service" << EOF
[Unit]
Description=NX9 DNS Server
After=network.target
[Service]
ExecStart=/usr/local/bin/nx9-dns-server
Environment=DNS_DB_PATH=/var/lib/nx9-dns-server/dns.db
Environment=DNSSEC_KEY_FILE=/etc/nx9-dns-server/dnssec.key
Restart=always
User=nx9-dns
[Install]
WantedBy=multi-user.target
EOF
# Build the package
dpkg-deb --build "$PKGDIR"
# Cleanup
rm -rf "$PKGDIR"
echo "Debian package created: ${PKGDIR}.deb"
+115
View File
@@ -0,0 +1,115 @@
#!/bin/bash
# Check for required tools
if ! command -v rpmbuild &> /dev/null; then
echo "rpmbuild is required but not installed. Please install rpm-build package."
exit 1
fi
# Package information
NAME="nx9-dns-server"
VERSION=$(grep '^version =' Cargo.toml | cut -d '"' -f2)
RELEASE="1"
# Create RPM build directory structure
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
# Create the spec file
cat > ~/rpmbuild/SPECS/$NAME.spec << EOF
Name: $NAME
Version: $VERSION
Release: $RELEASE%{?dist}
Summary: High-performance DNS server with DNSSEC support
License: MIT
URL: https://github.com/yourusername/nx9-dns-server
BuildRequires: cargo, gcc
Requires: systemd
%description
NX9 DNS Server is a high-performance DNS server implementation
with full DNSSEC support. It provides both authoritative and
recursive DNS services with modern features like cache management
and metrics export.
%prep
%setup -q -c -T
cp -r %{_sourcedir}/* .
%build
cargo build --release
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}/usr/local/bin
mkdir -p %{buildroot}/etc/nx9-dns-server
mkdir -p %{buildroot}/usr/lib/systemd/system
mkdir -p %{buildroot}/var/lib/nx9-dns-server
mkdir -p %{buildroot}/usr/share/doc/%{name}
# Install binary
install -m 755 target/release/nx9-dns-server %{buildroot}/usr/local/bin/
# Install config
install -m 644 config/nx9-dns-server.conf %{buildroot}/etc/nx9-dns-server/ || :
# Install docs
install -m 644 README.md LICENSE %{buildroot}/usr/share/doc/%{name}/ || :
# Install systemd service
cat > %{buildroot}/usr/lib/systemd/system/nx9-dns-server.service << 'EOL'
[Unit]
Description=NX9 DNS Server
After=network.target
[Service]
ExecStart=/usr/local/bin/nx9-dns-server
Environment=DNS_DB_PATH=/var/lib/nx9-dns-server/dns.db
Environment=DNSSEC_KEY_FILE=/etc/nx9-dns-server/dnssec.key
Restart=always
User=nx9-dns
[Install]
WantedBy=multi-user.target
EOL
%pre
# Create nx9-dns user if it doesn't exist
if ! getent passwd nx9-dns > /dev/null; then
useradd -r -s /sbin/nologin nx9-dns
fi
%post
%systemd_post nx9-dns-server.service
chown -R nx9-dns:nx9-dns /var/lib/nx9-dns-server
chmod 755 /var/lib/nx9-dns-server
%preun
%systemd_preun nx9-dns-server.service
%postun
%systemd_postun_with_restart nx9-dns-server.service
%files
%attr(755,root,root) /usr/local/bin/nx9-dns-server
%dir %attr(755,nx9-dns,nx9-dns) /var/lib/nx9-dns-server
%dir %attr(755,root,root) /etc/nx9-dns-server
%config(noreplace) /etc/nx9-dns-server/nx9-dns-server.conf
/usr/lib/systemd/system/nx9-dns-server.service
%doc /usr/share/doc/%{name}/*
%changelog
* $(date '+%a %b %d %Y') $USER <$USER@$(hostname)> - $VERSION-$RELEASE
- Initial RPM release
EOF
# Create source tarball
mkdir -p ~/rpmbuild/SOURCES/$NAME-$VERSION
cp -r * ~/rpmbuild/SOURCES/$NAME-$VERSION/
cd ~/rpmbuild/SOURCES
tar czf $NAME-$VERSION.tar.gz $NAME-$VERSION
rm -rf $NAME-$VERSION
# Build the RPM
rpmbuild -ba ~/rpmbuild/SPECS/$NAME.spec
echo "RPM package created in ~/rpmbuild/RPMS/"
+82
View File
@@ -0,0 +1,82 @@
#!/bin/bash
# Default installation prefix
PREFIX=${PREFIX:-/usr/local}
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
--prefix=*)
PREFIX="${1#*=}"
shift
;;
--help)
echo "Usage: $0 [--prefix=/installation/path]"
echo "Default prefix is /usr/local"
exit 0
;;
*)
echo "Unknown option: $1"
exit 1
;;
esac
done
# Build the project
echo "Building nx9-dns-server..."
cargo build --release
# Create necessary directories
echo "Creating directories in $PREFIX..."
sudo mkdir -p "$PREFIX/bin"
sudo mkdir -p "$PREFIX/lib/nx9-dns-server"
sudo mkdir -p "$PREFIX/etc/nx9-dns-server"
sudo mkdir -p "$PREFIX/share/doc/nx9-dns-server"
sudo mkdir -p "$PREFIX/share/man/man1"
# Install binary
echo "Installing binary..."
sudo install -m 755 target/release/nx9-dns-server "$PREFIX/bin/"
# Install configuration
echo "Installing configuration files..."
sudo install -m 644 config/nx9-dns-server.conf "$PREFIX/etc/nx9-dns-server/" 2>/dev/null || echo "No config file found, skipping..."
# Install documentation
echo "Installing documentation..."
sudo install -m 644 README.md "$PREFIX/share/doc/nx9-dns-server/" 2>/dev/null || echo "No README found, skipping..."
sudo install -m 644 LICENSE "$PREFIX/share/doc/nx9-dns-server/" 2>/dev/null || echo "No LICENSE found, skipping..."
# Install man page if it exists
if [ -f doc/nx9-dns-server.1 ]; then
echo "Installing man page..."
sudo install -m 644 doc/nx9-dns-server.1 "$PREFIX/share/man/man1/"
sudo gzip -f "$PREFIX/share/man/man1/nx9-dns-server.1"
fi
# Create systemd service file
echo "Creating systemd service file..."
cat > nx9-dns-server.service << EOF
[Unit]
Description=NX9 DNS Server
After=network.target
[Service]
ExecStart=$PREFIX/bin/nx9-dns-server
Environment=DNS_DB_PATH=/var/lib/nx9-dns-server/dns.db
Environment=DNSSEC_KEY_FILE=/etc/nx9-dns-server/dnssec.key
Restart=always
User=nx9-dns
[Install]
WantedBy=multi-user.target
EOF
sudo install -m 644 nx9-dns-server.service /lib/systemd/system/
rm nx9-dns-server.service
echo "Installation completed successfully!"
echo "To start the service:"
echo "1. Create nx9-dns user: sudo useradd -r -s /bin/false nx9-dns"
echo "2. Enable the service: sudo systemctl enable nx9-dns-server"
echo "3. Start the service: sudo systemctl start nx9-dns-server"