#!/bin/sh
set -e

# Create user and group if they don't exist
if ! getent group p2pool >/dev/null; then
    addgroup --system p2pool
fi

if ! getent passwd p2pool >/dev/null; then
    adduser --system --ingroup p2pool --no-create-home \
        --home /var/lib/p2pool --shell /usr/sbin/nologin \
        --gecos "P2Pool Service" p2pool
fi

# Create data directory
mkdir -p /var/lib/p2pool/data-api
chown -R p2pool:p2pool /var/lib/p2pool
chmod -R 750 /var/lib/p2pool

# Create example params.conf if it doesn't exist
if [ ! -f /var/lib/p2pool/params.conf ]; then
    cat > /var/lib/p2pool/params.conf << 'CONF'
# P2Pool Configuration File
# Edit this file with your settings and restart the service

# Monero node connection
host = 127.0.0.1
rpc-port = 18081
zmq-port = 18083

# Use SSL for RPC connection
# rpc-ssl = true

# RPC credentials (if applicable)
# rpc-login = username:password

# Your Monero wallet address (REQUIRED)
wallet = YOUR_MONERO_WALLET_ADDRESS

# P2P settings
p2p = 0.0.0.0:37889

# API settings
data-api = /var/lib/p2pool/data-api
local-api = true

# Logging
log-file = /var/log/p2pool/p2pool.log
loglevel = 3

# Mining mode (uncomment to enable mini sidechain)
# mini = true

# Merge mining (optional - uncomment to enable Tari merge mining)
# merge-mine = tari://TARI_NODE_IP:18142 TARI_WALLET_ADDRESS

# Stratum server (for miners to connect)
# stratum = 0.0.0.0:3333
CONF
    chown p2pool:p2pool /var/lib/p2pool/params.conf
    chmod 640 /var/lib/p2pool/params.conf
fi

# Create log directory
mkdir -p /var/log/p2pool
chown p2pool:p2pool /var/log/p2pool
chmod 750 /var/log/p2pool

# Set binary permissions
chown root:root /opt/p2pool/p2pool
chmod 755 /opt/p2pool/p2pool

# Reload systemd and handle service restart on upgrade
if [ -d /run/systemd/system ]; then
    systemctl daemon-reload

    # On upgrade: restart service if it was enabled
    if [ "$1" = "configure" ] && [ -n "$2" ]; then
        # $2 is the previously installed version (only set on upgrade)
        if systemctl is-enabled --quiet p2pool.service 2>/dev/null; then
            echo "Restarting p2pool service after upgrade..."
            systemctl start p2pool.service || true
        fi
    fi
    # Note: On fresh install, service is NOT auto-enabled or auto-started
    # Users should manually enable the service:
    #   systemctl enable p2pool.service
    #   systemctl start p2pool.service
fi

echo ""
echo "✅ P2Pool installed successfully!"
echo ""
echo "📋 Before starting P2Pool, you MUST configure your settings:"
echo ""
echo "1. Edit the configuration file:"
echo "   sudo nano /var/lib/p2pool/params.conf"
echo ""
echo "   Set your Monero wallet address and adjust other settings as needed."
echo ""
echo "2. Start P2Pool:"
echo "   sudo systemctl enable p2pool.service"
echo "   sudo systemctl start p2pool.service"
echo ""
echo "3. Check status:"
echo "   sudo systemctl status p2pool.service"
echo "   sudo journalctl -u p2pool -f"
echo ""
echo "📁 Important paths:"
echo "   Config file:    /var/lib/p2pool/params.conf"
echo "   Data directory: /var/lib/p2pool"
echo "   Log directory:  /var/log/p2pool"
echo "   Binary:         /opt/p2pool/p2pool"
echo ""
echo "💡 Tip: Your params.conf will NOT be overwritten during package upgrades."
echo ""
echo "For help:"
echo "   /opt/p2pool/p2pool --help"
echo ""

exit 0
