Files
claudetools/trigger-sync-now.ps1
Mike Swanson 6b232c6102 docs: Session log update - VPN setup and DOS deployment completion
Updated comprehensive session log documenting:

## DOS System Completion (Part 1)

**Major Milestones:**
- Located and documented AD2 sync mechanism (Sync-FromNAS.ps1)
- Deployed 6 DOS batch files to production (AD2)
- Created DEPLOY.BAT for one-time DOS machine setup
- Fixed CRITICAL test data routing in CTONW v1.2
- Added root-level file sync (UPDATE.BAT, DEPLOY.BAT to T:\)

**CTONW v1.2 Critical Fix:**
- Separated software distribution (ProdSW) from test data (LOGS)
- Problem: Test data uploaded to ProdSW, but sync expects LOGS folder
- Solution: Separate workflows - programs to ProdSW, DAT files to LOGS
- Subdirectory mapping: 8BDATA→8BLOG, DSCDATA→DSCLOG, etc.
- Result: Database import now functional

## VPN System Completion (Part 2)

**Peaceful Spirit VPN Setup:**
- Created Setup-PeacefulSpiritVPN.ps1 (ready-to-run with credentials)
- Created Create-PeacefulSpiritVPN.ps1 (interactive with parameters)
- Created VPN_QUICK_SETUP.md (comprehensive 350+ line guide)

**Configuration:**
- Server: 98.190.129.150 (L2TP/IPSec)
- Authentication: MS-CHAPv2 (fixed from PAP)
- Split Tunneling: Enabled (only 192.168.0.0/24 uses VPN)
- Network: UniFi router at CC location
- DNS: 192.168.0.2, Gateway: 192.168.0.10

**Authentication Fix:**
- Error: PAP doesn't support Required encryption with L2TP/IPSec
- Solution: Changed to MS-CHAPv2 authentication
- Updated all scripts and documentation

## Credentials Documented (UNREDACTED)

**Complete credentials for:**
- Peaceful Spirit VPN (PSK, username, password, network config)
- AD2 (192.168.0.6) - C$ admin share connection method
- D2TESTNAS (192.168.0.9) - SMB1 proxy
- Jupiter (172.16.3.20) - Gitea server
- GuruRMM (172.16.3.30) - Database and API
- Gitea SSH key (needs to be added to server)

## Documentation Updates

**Files Modified:**
- session-logs/2026-01-19-session.md: Complete rewrite with both DOS and VPN work
- credentials.md: Added VPN section with network topology
- VPN_QUICK_SETUP.md: Added split tunneling section, updated examples

**Session Statistics:**
- Duration: ~5 hours (DOS + VPN work)
- Files Created: 8 files
- Files Modified: 5 files
- Lines of Code: ~1,200 lines
- Credentials Documented: 10 systems/services
- Issues Resolved: 6 issues (4 DOS, 2 VPN)

## Technical Details Documented

**DOS 6.22 Limitations:**
- Never use: %COMPUTERNAME%, IF /I, %ERRORLEVEL%, FOR /F, &&, ||
- Always use: IF ERRORLEVEL n, GOTO labels, simple FOR loops

**VPN Authentication:**
- L2TP/IPSec with PSK requires MS-CHAPv2, not PAP
- Required encryption only works with MS-CHAPv2 or EAP

**Split Tunneling:**
- Only traffic to 192.168.0.0/24 routes through VPN
- All other traffic uses local internet connection
- Configured via Add-VpnConnectionRoute

**CTONW Data Routing:**
- ProdSW: Software distribution (bidirectional)
- LOGS: Test data for database import (unidirectional upload)
- Separation critical for database import workflow

## Sync Workflow Documented

**AD2 → NAS (Software): PUSH**
- Admin deposits in C:\Shares\test\COMMON\ProdSW\
- Sync-FromNAS.ps1 runs every 15 minutes
- PSCP copies to /data/test/COMMON/ProdSW/
- DOS machines download via NWTOC from T:\COMMON\ProdSW\

**NAS → AD2 (Test Data): PULL**
- DOS machines write to T:\TS-XX\LOGS\
- Sync pulls to C:\Shares\test\TS-XX\LOGS\
- Files deleted from NAS after copy
- DAT files auto-imported to database

**Root Files: PUSH**
- UPDATE.BAT and DEPLOY.BAT sync to /data/test/ root
- Available at T:\UPDATE.BAT and T:\DEPLOY.BAT

## Pending Tasks

**Immediate:**
- DOS and VPN work complete 

**Short-term:**
- Add SSH key to Gitea for /sync command
- Deploy VPN to client machines
- DOS pilot deployment to 2-3 machines

## Context Recovery

Session log now contains complete context for:
- AD2 connection methods (C$ admin share works)
- CTONW test data routing (v1.2 separates ProdSW/LOGS)
- VPN authentication (MS-CHAPv2, not PAP)
- Split tunneling configuration
- All credentials unredacted

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 14:39:56 -07:00

102 lines
3.8 KiB
PowerShell

# Trigger sync immediately and monitor results
$password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("INTRANET\sysadmin", $password)
Write-Host "=== Triggering Sync Manually ===" -ForegroundColor Cyan
Write-Host ""
Invoke-Command -ComputerName 192.168.0.6 -Credential $cred -ScriptBlock {
$scriptPath = "C:\Shares\test\scripts\Sync-FromNAS.ps1"
$logFile = "C:\Shares\test\scripts\sync-from-nas.log"
Write-Host "[1] Getting current log position" -ForegroundColor Yellow
$logSize = (Get-Item $logFile).Length
Write-Host "[OK] Current log size: $logSize bytes" -ForegroundColor Green
Write-Host ""
Write-Host "[2] Starting sync script..." -ForegroundColor Yellow
Write-Host "=" * 80 -ForegroundColor Gray
# Run sync script and capture output
$syncStart = Get-Date
try {
& powershell.exe -ExecutionPolicy Bypass -File $scriptPath *>&1 | Out-String -Stream | ForEach-Object {
if ($_ -match "ERROR|error") {
Write-Host $_ -ForegroundColor Red
} elseif ($_ -match "Pushed|Pulled") {
Write-Host $_ -ForegroundColor Green
} elseif ($_ -match "Starting|Complete|sync") {
Write-Host $_ -ForegroundColor Cyan
} else {
Write-Host $_ -ForegroundColor Gray
}
}
} catch {
Write-Host "[ERROR] Sync script failed: $($_.Exception.Message)" -ForegroundColor Red
}
$syncEnd = Get-Date
$duration = ($syncEnd - $syncStart).TotalSeconds
Write-Host ""
Write-Host "=" * 80 -ForegroundColor Gray
Write-Host "[3] Sync completed in $([math]::Round($duration, 1)) seconds" -ForegroundColor Yellow
Write-Host ""
Write-Host "[4] Analyzing new log entries" -ForegroundColor Yellow
Write-Host "=" * 80 -ForegroundColor Gray
# Get new log content
Start-Sleep -Seconds 2
$newLogSize = (Get-Item $logFile).Length
$newBytes = $newLogSize - $logSize
if ($newBytes -gt 0) {
$allContent = Get-Content $logFile -Raw
$newContent = $allContent.Substring([math]::Max(0, $allContent.Length - $newBytes - 100))
Write-Host "New log entries ($newBytes bytes):" -ForegroundColor Cyan
$newContent -split "`n" | Where-Object { $_.Trim() } | ForEach-Object {
if ($_ -match "SCP ERROR|ERROR.*push|ERROR.*pull") {
Write-Host " $_" -ForegroundColor Red
} elseif ($_ -match "Pushed:|Pulled:") {
Write-Host " $_" -ForegroundColor Green
} else {
Write-Host " $_" -ForegroundColor Gray
}
}
}
Write-Host ""
Write-Host "[5] Error summary from this run" -ForegroundColor Yellow
Write-Host "=" * 80 -ForegroundColor Gray
$recentErrors = Get-Content $logFile -Tail 100 | Select-String -Pattern "SCP ERROR|ERROR.*push|ERROR.*pull"
if ($recentErrors) {
$errorCount = ($recentErrors | Measure-Object).Count
Write-Host "[FOUND] $errorCount error(s) in recent log:" -ForegroundColor Red
Write-Host ""
# Group similar errors
$errorGroups = $recentErrors | Group-Object {
if ($_ -match "SCP ERROR.*: (.+)") { $matches[1] }
else { $_ }
} | Sort-Object Count -Descending
foreach ($group in $errorGroups | Select-Object -First 5) {
Write-Host " [$($group.Count)x] $($group.Name)" -ForegroundColor Red
}
if ($errorGroups.Count -gt 5) {
Write-Host " ... and $($errorGroups.Count - 5) more error types" -ForegroundColor Yellow
}
} else {
Write-Host "[SUCCESS] No errors found in this sync run!" -ForegroundColor Green
}
}
Write-Host ""
Write-Host "=== Sync Trigger Complete ===" -ForegroundColor Cyan