# Reset Gitea password for mike@azcomputerguru.com via SSH
# Runs on Jupiter server (172.16.3.20)

$JupiterHost = "172.16.3.20"
$JupiterUser = "root"
$JupiterPassword = "Th1nk3r^99##"

Write-Host "=== Gitea Password Reset ===" -ForegroundColor Cyan
Write-Host ""

# Prompt for new password
$NewPassword = Read-Host "Enter new Gitea password" -AsSecureString
$ConfirmPassword = Read-Host "Confirm password" -AsSecureString

# Convert to plain text for comparison
$NewPasswordPlain = [Runtime.InteropServices.Marshal]::PtrToStringAuto(
    [Runtime.InteropServices.Marshal]::SecureStringToBSTR($NewPassword))
$ConfirmPasswordPlain = [Runtime.InteropServices.Marshal]::PtrToStringAuto(
    [Runtime.InteropServices.Marshal]::SecureStringToBSTR($ConfirmPassword))

if ($NewPasswordPlain -ne $ConfirmPasswordPlain) {
    Write-Host "[ERROR] Passwords do not match" -ForegroundColor Red
    exit 1
}

if ([string]::IsNullOrWhiteSpace($NewPasswordPlain)) {
    Write-Host "[ERROR] Password cannot be empty" -ForegroundColor Red
    exit 1
}

Write-Host ""
Write-Host "[1] Connecting to Jupiter server..." -ForegroundColor Yellow

# Build SSH command to reset Gitea password in Docker container
$GiteaCommand = @"
# Find Gitea Docker container
echo '[1] Finding Gitea container...'
CONTAINER=`$(docker ps --filter 'name=gitea' --format '{{.Names}}' | head -n 1)

if [ -z "`$CONTAINER" ]; then
    echo '[ERROR] Cannot find Gitea container'
    echo 'Available containers:'
    docker ps --format '{{.Names}}'
    exit 1
fi

echo '[OK] Found container: '`$CONTAINER
echo ''
echo '[2] Resetting password for mike@azcomputerguru.com...'

# Execute gitea admin command inside container
# Try username 'mike' first, then email
docker exec `$CONTAINER gitea admin user change-password --username mike --password '$NewPasswordPlain' 2>&1 || \
docker exec `$CONTAINER gitea admin user change-password --username mike@azcomputerguru.com --password '$NewPasswordPlain' 2>&1

if [ `$? -eq 0 ]; then
    echo ''
    echo '[SUCCESS] Password changed successfully!'
    exit 0
else
    echo ''
    echo '[ERROR] Failed to change password'
    exit 1
fi
"@

# Execute via SSH using plink (or ssh if available)
try {
    if (Get-Command plink -ErrorAction SilentlyContinue) {
        # Use PuTTY's plink
        $result = echo y | plink -ssh -batch -pw $JupiterPassword "$JupiterUser@$JupiterHost" $GiteaCommand 2>&1
    } elseif (Get-Command ssh -ErrorAction SilentlyContinue) {
        # Use OpenSSH
        # Note: This will prompt for password interactively
        Write-Host "[INFO] Using OpenSSH - you'll need to enter root password: $JupiterPassword" -ForegroundColor Yellow
        $result = ssh "$JupiterUser@$JupiterHost" $GiteaCommand 2>&1
    } else {
        Write-Host "[ERROR] No SSH client found (plink or ssh)" -ForegroundColor Red
        Write-Host ""
        Write-Host "Manual steps:" -ForegroundColor Yellow
        Write-Host "1. SSH to Jupiter: ssh root@172.16.3.20" -ForegroundColor Gray
        Write-Host "2. Find container: docker ps | grep gitea" -ForegroundColor Gray
        Write-Host "3. Reset password: docker exec <container_name> gitea admin user change-password --username mike --password 'YOUR_PASSWORD'" -ForegroundColor Gray
        exit 1
    }

    Write-Host $result

    Write-Host ""
    Write-Host "=== Password Reset Complete ===" -ForegroundColor Cyan
    Write-Host ""
    Write-Host "Login at: https://git.azcomputerguru.com/" -ForegroundColor Green
    Write-Host "Username: mike@azcomputerguru.com (or just 'mike')" -ForegroundColor Green
    Write-Host "Password: (the one you just set)" -ForegroundColor Green

} catch {
    Write-Host ""
    Write-Host "[ERROR] Failed to connect: $($_.Exception.Message)" -ForegroundColor Red
    Write-Host ""
    Write-Host "Manual alternative:" -ForegroundColor Yellow
    Write-Host "1. SSH to Jupiter: ssh root@172.16.3.20 (password: $JupiterPassword)" -ForegroundColor Gray
    Write-Host "2. Find Gitea container: docker ps | grep gitea" -ForegroundColor Gray
    Write-Host "3. Reset password: docker exec <container_name> gitea admin user change-password --username mike --password 'YOUR_PASSWORD'" -ForegroundColor Gray
}
