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.
81 lines
2.3 KiB
PHP
81 lines
2.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
require_once __DIR__ . '/../../vendor/autoload.php';
|
|
|
|
use App\Framework\QrCode\ErrorCorrection\ReedSolomonEncoder;
|
|
|
|
echo "=== Testing Reversed Codewords ===\n\n";
|
|
|
|
// Hypothesis: Maybe we need to reverse the codewords for RS encoding?
|
|
// In QR codes, codewords are placed in a specific order, but maybe
|
|
// for RS encoding we need them in reverse order?
|
|
|
|
$data = [64, 180, 132, 84, 196, 196, 242, 5, 116, 245, 36, 196, 64, 236, 17, 236];
|
|
$ecCodewords = 10;
|
|
|
|
echo "Original data: " . implode(', ', $data) . "\n\n";
|
|
|
|
// Try encoding with reversed data
|
|
$reversedData = array_reverse($data);
|
|
echo "Reversed data: " . implode(', ', $reversedData) . "\n\n";
|
|
|
|
$rs = new ReedSolomonEncoder();
|
|
$ec = $rs->encode($reversedData, $ecCodewords);
|
|
|
|
echo "EC codewords (from reversed data): " . implode(', ', $ec) . "\n\n";
|
|
|
|
// Reverse EC codewords too
|
|
$reversedEC = array_reverse($ec);
|
|
echo "Reversed EC codewords: " . implode(', ', $reversedEC) . "\n\n";
|
|
|
|
// Test with original order
|
|
$originalEC = $rs->encode($data, $ecCodewords);
|
|
echo "Original EC codewords: " . implode(', ', $originalEC) . "\n\n";
|
|
|
|
// Verify both
|
|
require_once __DIR__ . '/test-reed-solomon-decoder.php';
|
|
$decoder = new SimpleRSDecoder();
|
|
|
|
// Test 1: Original order
|
|
$full1 = array_merge($data, $originalEC);
|
|
$syndromes1 = $decoder->calculateSyndromes($full1, $ecCodewords);
|
|
echo "Original order syndromes: " . implode(', ', $syndromes1) . "\n";
|
|
$allZero1 = true;
|
|
foreach ($syndromes1 as $s) {
|
|
if ($s !== 0) {
|
|
$allZero1 = false;
|
|
break;
|
|
}
|
|
}
|
|
echo ($allZero1 ? "✅" : "❌") . "\n\n";
|
|
|
|
// Test 2: Reversed order
|
|
$full2 = array_merge($reversedData, $reversedEC);
|
|
$syndromes2 = $decoder->calculateSyndromes($full2, $ecCodewords);
|
|
echo "Reversed order syndromes: " . implode(', ', $syndromes2) . "\n";
|
|
$allZero2 = true;
|
|
foreach ($syndromes2 as $s) {
|
|
if ($s !== 0) {
|
|
$allZero2 = false;
|
|
break;
|
|
}
|
|
}
|
|
echo ($allZero2 ? "✅" : "❌") . "\n\n";
|
|
|
|
// Test 3: Data reversed, EC original
|
|
$full3 = array_merge($reversedData, $originalEC);
|
|
$syndromes3 = $decoder->calculateSyndromes($full3, $ecCodewords);
|
|
echo "Reversed data + original EC syndromes: " . implode(', ', $syndromes3) . "\n";
|
|
$allZero3 = true;
|
|
foreach ($syndromes3 as $s) {
|
|
if ($s !== 0) {
|
|
$allZero3 = false;
|
|
break;
|
|
}
|
|
}
|
|
echo ($allZero3 ? "✅" : "❌") . "\n\n";
|
|
|
|
|