Files
michaelschiemer/tests/debug/test-reed-solomon-ec.php
Michael Schiemer 95147ff23e refactor(deployment): Remove WireGuard VPN dependency and restore public service access
Remove WireGuard integration from production deployment to simplify infrastructure:
- Remove docker-compose-direct-access.yml (VPN-bound services)
- Remove VPN-only middlewares from Grafana, Prometheus, Portainer
- Remove WireGuard middleware definitions from Traefik
- Remove WireGuard IPs (10.8.0.0/24) from Traefik forwarded headers

All monitoring services now publicly accessible via subdomains:
- grafana.michaelschiemer.de (with Grafana native auth)
- prometheus.michaelschiemer.de (with Basic Auth)
- portainer.michaelschiemer.de (with Portainer native auth)

All services use Let's Encrypt SSL certificates via Traefik.
2025-11-05 12:48:25 +01:00

66 lines
2.1 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use App\Framework\QrCode\ErrorCorrection\ReedSolomonEncoder;
use App\Framework\QrCode\QrCodeGenerator;
use App\Framework\QrCode\ValueObjects\ErrorCorrectionLevel;
use App\Framework\QrCode\ValueObjects\QrCodeConfig;
use App\Framework\QrCode\ValueObjects\QrCodeVersion;
use App\Framework\QrCode\ValueObjects\EncodingMode;
echo "=== Reed-Solomon Error Correction Test ===\n\n";
// Test with known data
$testData = 'HELLO WORLD';
$config = new QrCodeConfig(
version: QrCodeVersion::fromNumber(1),
errorCorrectionLevel: ErrorCorrectionLevel::M,
encodingMode: EncodingMode::BYTE
);
// Manually encode data
$encoder = new \ReflectionClass(QrCodeGenerator::class);
$method = $encoder->getMethod('encodeData');
$method->setAccessible(true);
$tempGenerator = new QrCodeGenerator(new \App\Framework\QrCode\QrCodeRenderer());
$dataCodewords = $method->invoke($tempGenerator, $testData, $config);
echo "Data codewords: " . count($dataCodewords) . "\n";
echo "First 5 data codewords: " . implode(', ', array_slice($dataCodewords, 0, 5)) . "\n\n";
// Generate EC codewords
$reedSolomon = new ReedSolomonEncoder();
$ecInfo = ReedSolomonEncoder::getECInfo(1, 'M');
echo "EC info:\n";
echo " Data codewords: {$ecInfo['dataCodewords']}\n";
echo " EC codewords: {$ecInfo['ecCodewords']}\n\n";
$ecCodewords = $reedSolomon->encode($dataCodewords, $ecInfo['ecCodewords']);
echo "EC codewords: " . count($ecCodewords) . "\n";
echo "First 5 EC codewords: " . implode(', ', array_slice($ecCodewords, 0, 5)) . "\n\n";
// Expected for Version 1, Level M:
// Data: 16 codewords
// EC: 10 codewords
// Total: 26 codewords
$allCodewords = array_merge($dataCodewords, $ecCodewords);
echo "Total codewords: " . count($allCodewords) . " (expected: 26)\n";
if (count($allCodewords) === 26) {
echo "✅ Codeword count is correct\n";
} else {
echo "❌ Codeword count is wrong!\n";
}
// Verify known values for "HELLO WORLD" (if available)
echo "\n=== Codeword Verification ===\n";
echo "Note: This is a basic check. Full verification requires reference implementation.\n";