Files
html/fix-dl.txt
2026-04-12 22:57:03 +02:00

78 lines
2.7 KiB
Plaintext

<?php
// Universal login fix: replace redirect-after-XHR with credential-caching approach
// The key fix: use Image() with embedded user:pass@host to force browser auth cache
$pages = [
"/var/www/html/weval-login.html" => "/wevia-ia/wevia-admin.php",
"/var/www/html/arsenal-login.html" => "/arsenal-proxy/wevads-dashboard.php",
"/var/www/html/office-login.html" => "/office365/",
"/var/www/ethica/public/ethica-login.html" => "/ethica-app-v3.html",
];
$fixed = 0;
$total = 0;
foreach ($pages as $file => $defaultTarget) {
$total++;
if (!file_exists($file)) {
echo basename($file) . ": NOT_FOUND\n";
continue;
}
$c = file_get_contents($file);
$backup = $file . '.GOLD-' . date('Ymd-His') . '-pre-authfix';
file_put_contents($backup, $c);
// Check if already has the img credential cache fix
if (strpos($c, 'new Image()') !== false && strpos($c, 'encodeURIComponent') !== false) {
echo basename($file) . ": ALREADY_FIXED\n";
$fixed++;
continue;
}
// Find and replace the doLogin function
// Pattern: after successful XHR check, replace simple redirect with credential-caching redirect
// Replace "window.location.href=target;" or "location.href=t;" with credential cache + redirect
$oldPatterns = [
// weval-login pattern
"window.location.href=target;",
// ethica pattern
"location.href=t;",
];
$replaced = false;
foreach ($oldPatterns as $old) {
if (strpos($c, $old) !== false) {
// Determine variable names used in this file
$userVar = (strpos($c, 'var u=') !== false) ? 'u' : 'user';
$passVar = (strpos($c, 'var p=') !== false) ? 'p' : 'pass';
$targetVar = (strpos($old, '=target') !== false) ? 'target' : 't';
$newCode = "// Force browser to cache Basic Auth credentials
var _proto=window.location.protocol;
var _host=window.location.host;
var _authUrl=_proto+'//'+encodeURIComponent($userVar)+':'+encodeURIComponent($passVar)+'@'+_host+$targetVar;
var _img=new Image();
_img.onload=_img.onerror=function(){window.location.href=$targetVar;};
_img.src=_authUrl;
setTimeout(function(){window.location.href=$targetVar;},1200);";
$c = str_replace($old, $newCode, $c);
$replaced = true;
break;
}
}
if (!$replaced) {
echo basename($file) . ": PATTERN_NOT_FOUND\n";
continue;
}
file_put_contents($file, $c);
echo basename($file) . ": FIXED (backup: " . basename($backup) . ")\n";
$fixed++;
}
echo "\n=== RESULT: $fixed/$total fixed ===\n";