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.
66 lines
2.1 KiB
PHP
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";
|
|
|
|
|