auto-sync-0140
This commit is contained in:
24
api/ambre-compare-gold.php
Normal file
24
api/ambre-compare-gold.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
header("Content-Type: text/plain");
|
||||
$gold = "/opt/wevads/vault/wevia.html.GOLD-20260421-230109-pre-safe-write";
|
||||
$current = "/var/www/html/wevia.html";
|
||||
|
||||
$g_content = @file_get_contents($gold);
|
||||
$c_content = @file_get_contents($current);
|
||||
|
||||
echo "GOLD size: " . strlen($g_content) . "\n";
|
||||
echo "Current size: " . strlen($c_content) . "\n\n";
|
||||
|
||||
// Parse both with node to see which has error
|
||||
file_put_contents("/tmp/gold.js", "void function(){" . extract_main_script($g_content) . "}();");
|
||||
file_put_contents("/tmp/current.js", "void function(){" . extract_main_script($c_content) . "}();");
|
||||
|
||||
echo "=== GOLD node --check ===\n";
|
||||
echo @shell_exec("node --check /tmp/gold.js 2>&1 | head -10");
|
||||
echo "\n=== Current node --check ===\n";
|
||||
echo @shell_exec("node --check /tmp/current.js 2>&1 | head -10");
|
||||
|
||||
function extract_main_script($html) {
|
||||
preg_match('/<script>(.*?)<\/script>/s', $html, $m);
|
||||
return $m[1] ?? "";
|
||||
}
|
||||
13
api/ambre-gold-list.php
Normal file
13
api/ambre-gold-list.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
header("Content-Type: application/json");
|
||||
$golds = glob("/opt/wevads/vault/wevia.html.GOLD-2026*");
|
||||
usort($golds, function($a,$b){return filemtime($b)-filemtime($a);});
|
||||
$out = [];
|
||||
foreach (array_slice($golds, 0, 20) as $g) {
|
||||
$out[] = [
|
||||
"name" => basename($g),
|
||||
"size" => filesize($g),
|
||||
"mtime" => date("c", filemtime($g)),
|
||||
];
|
||||
}
|
||||
echo json_encode($out, JSON_PRETTY_PRINT);
|
||||
@@ -80,7 +80,7 @@
|
||||
"workerIndex": 0,
|
||||
"parallelIndex": 0,
|
||||
"status": "passed",
|
||||
"duration": 4665,
|
||||
"duration": 4765,
|
||||
"errors": [],
|
||||
"stdout": [
|
||||
{
|
||||
@@ -104,7 +104,7 @@
|
||||
],
|
||||
"stderr": [],
|
||||
"retry": 0,
|
||||
"startTime": "2026-04-21T23:27:03.240Z",
|
||||
"startTime": "2026-04-21T23:37:33.159Z",
|
||||
"annotations": [],
|
||||
"attachments": [
|
||||
{
|
||||
@@ -133,8 +133,8 @@
|
||||
],
|
||||
"errors": [],
|
||||
"stats": {
|
||||
"startTime": "2026-04-21T23:27:02.653Z",
|
||||
"duration": 5440.364,
|
||||
"startTime": "2026-04-21T23:37:32.630Z",
|
||||
"duration": 5456.215,
|
||||
"expected": 1,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
|
||||
Binary file not shown.
7
api/ambre-pw-v22-deploy.php
Normal file
7
api/ambre-pw-v22-deploy.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
header("Content-Type: application/json");
|
||||
$base = "/var/www/html/api/ambre-pw-tests/tests";
|
||||
$spec = base64_decode("Y29uc3QgeyB0ZXN0IH0gPSByZXF1aXJlKCJAcGxheXdyaWdodC90ZXN0Iik7Cgp0ZXN0KCJWMjIgwrcgc21va2UgYWZ0ZXIgcmVnZXggZml4IDIiLCBhc3luYyAoeyBwYWdlIH0pID0+IHsKICB0ZXN0LnNldFRpbWVvdXQoNjAwMDApOwogIGNvbnN0IGVycm9ycyA9IFtdOwogIHBhZ2Uub24oInBhZ2VlcnJvciIsIGUgPT4gZXJyb3JzLnB1c2goZS5tZXNzYWdlKSk7CiAgcGFnZS5vbigiY29uc29sZSIsIG1zZyA9PiB7CiAgICBpZiAobXNnLnR5cGUoKSA9PT0gIndhcm5pbmciIHx8IG1zZy50eXBlKCkgPT09ICJlcnJvciIpIHsKICAgICAgZXJyb3JzLnB1c2gobXNnLnR5cGUoKSArICI6ICIgKyBtc2cudGV4dCgpLnN1YnN0cmluZygwLCAyMDApKTsKICAgIH0KICB9KTsKICAKICBhd2FpdCBwYWdlLmdvdG8oIi93ZXZpYS5odG1sIik7CiAgYXdhaXQgcGFnZS53YWl0Rm9yVGltZW91dCgzNTAwKTsKICAKICBjb25zb2xlLmxvZygiZXJyb3JzOiIsIEpTT04uc3RyaW5naWZ5KGVycm9ycywgbnVsbCwgMikpOwogIAogIC8vIE5vdyB0cnkgc2VuZGluZyBhIG1lc3NhZ2UKICBjb25zdCBpbnB1dCA9IHBhZ2UubG9jYXRvcigiI21zZ0lucHV0Iik7CiAgYXdhaXQgaW5wdXQuZmlsbCgiY2FsY3VsZSAyKzIiKTsKICBhd2FpdCBwYWdlLndhaXRGb3JUaW1lb3V0KDQwMCk7CiAgYXdhaXQgaW5wdXQucHJlc3MoIkVudGVyIik7CiAgCiAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpOwogIGxldCByZXBseSA9ICIiOwogIHdoaWxlIChEYXRlLm5vdygpIC0gc3RhcnQgPCAyMDAwMCkgewogICAgY29uc3Qgc3RhdGUgPSBhd2FpdCBwYWdlLmV2YWx1YXRlKCgpID0+IHsKICAgICAgY29uc3QgYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tc2cuYXNzaXN0YW50IC5idWJibGUnKTsKICAgICAgcmV0dXJuIGEubGVuZ3RoID4gMCA/IGFbYS5sZW5ndGggLSAxXS5pbm5lclRleHQgOiAiIjsKICAgIH0pOwogICAgaWYgKHN0YXRlICYmICFzdGF0ZS5zdGFydHNXaXRoKCJCb25qb3VyICEgQ29tbWVudCIpKSB7CiAgICAgIHJlcGx5ID0gc3RhdGU7CiAgICAgIGJyZWFrOwogICAgfQogICAgYXdhaXQgcGFnZS53YWl0Rm9yVGltZW91dCgxNTAwKTsKICB9CiAgY29uc29sZS5sb2coIlJlcGx5OiIsIHJlcGx5LnN1YnN0cmluZygwLCAyNTApKTsKICAKICBhd2FpdCBwYWdlLnNjcmVlbnNob3QoeyBwYXRoOiAib3V0cHV0L3YyMi1jYWxjLnBuZyIgfSk7Cn0pOwo=");
|
||||
foreach (glob("$base/*.spec.js") as $old) @unlink($old);
|
||||
$written = @file_put_contents("$base/v22-smoke.spec.js", $spec);
|
||||
echo json_encode(["written" => $written]);
|
||||
36
api/ambre-regex-direct-fix.php
Normal file
36
api/ambre-regex-direct-fix.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
header("Content-Type: text/plain");
|
||||
|
||||
$file = "/var/www/html/wevia.html";
|
||||
$content = file_get_contents($file);
|
||||
$len_before = strlen($content);
|
||||
|
||||
// The broken regex on line 1503 uses [.*+?^${}()|[\]\\/] which has [] inside [] chars -- INVALID
|
||||
// Replace with safer version using non-class-based escape
|
||||
|
||||
$broken = 'var _escUrl = finalFileUrl.replace(/[.*+?^${}()|[\]\\\\\/]/g, \'\\\\$&\');';
|
||||
$fixed = 'var _escUrl = finalFileUrl.split(/([^A-Za-z0-9])/).map(function(p,i){return i%2?"\\\\"+p:p;}).join("");';
|
||||
|
||||
if (strpos($content, $broken) !== false) {
|
||||
$new_content = str_replace($broken, $fixed, $content);
|
||||
// GOLD backup
|
||||
$gold = "/opt/wevads/vault/wevia.html.GOLD-" . date("Ymd-His") . "-regex-fix";
|
||||
@copy($file, $gold);
|
||||
// Write
|
||||
@chattr_remove(); // ignore - chattr might not be set
|
||||
file_put_contents($file, $new_content);
|
||||
echo "FIXED! delta=" . (strlen($new_content) - $len_before) . " gold=$gold\n";
|
||||
} else {
|
||||
echo "Pattern not found in file\n";
|
||||
// Show what we have at line 1503
|
||||
$lines = explode("\n", $content);
|
||||
echo "Line 1503: " . ($lines[1502] ?? "N/A") . "\n";
|
||||
// Extract exact bytes
|
||||
$line = $lines[1502];
|
||||
$pos_var = strpos($line, "var _escUrl");
|
||||
if ($pos_var !== false) {
|
||||
echo "Bytes 60-200: " . bin2hex(substr($line, 60, 50)) . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
function chattr_remove(){ @shell_exec("chattr -i /var/www/html/wevia.html 2>&1"); }
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-21T23:33:41+00:00",
|
||||
"ts": "2026-04-21T23:39:41+00:00",
|
||||
"summary": {
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
|
||||
@@ -1500,7 +1500,7 @@ function send() {
|
||||
finalFileUrl = data.file_url;
|
||||
// Format final response with link if present
|
||||
if (currentChunkEl && finalFileUrl) {
|
||||
var _escUrl = finalFileUrl.replace(/[.*+?^${}()|[\]\\\/]/g, '\\$&'); var linkHtml = fullResponse.replace(new RegExp(_escUrl, 'g'), '<a href="'+finalFileUrl+'" target="_blank" style="color:#2563eb;font-weight:600">'+finalFileUrl+'</a>');
|
||||
var _escUrl = finalFileUrl.split(/([^A-Za-z0-9])/).map(function(p,i){return i%2?"\\"+p:p;}).join(""); var linkHtml = fullResponse.replace(new RegExp(_escUrl, 'g'), '<a href="'+finalFileUrl+'" target="_blank" style="color:#2563eb;font-weight:600">'+finalFileUrl+'</a>');
|
||||
currentChunkEl.innerHTML = linkHtml;
|
||||
}
|
||||
var elapsed = ((performance.now() - startTime) / 1000).toFixed(1);
|
||||
|
||||
Reference in New Issue
Block a user