| Server IP : 188.114.96.3 / Your IP : 216.73.216.143 Web Server : Apache System : Linux sv058.home.net.pl 6.8.2 husak_dirty_pages_fix #1 SMP PREEMPT_DYNAMIC Tue Apr 2 22:06:51 CEST 2024 x86_64 User : ( 3194769) PHP Version : 8.5.12 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /polana/admin/ |
Upload File : |
<?php
declare(strict_types=1);
/** TKLM POLANA V19.2 — standalone authenticated atomic installer and rollback. */
require_once dirname(__DIR__).'/includes/functions.php';
require_login();
require_admin_role();
start_session();
const P192_VER = '19.2';
const P192_MANIFEST = '{"includes/polana_site_translations.php":"b14d08a8f7ad1d4e487591c5fc12eb3a445a1d969148773a477eeca337843d92","includes/polana_i18n.php":"2ad3f8fe737346db1c232fea10d2ecaf97353b5812650e852452a48641a1dafc","includes/polana_translate_client.php":"be67ca854552424ed0adac152ae1d85ec646363107c0be8393e8a5d9483701f4","includes/functions.php":"ff84b571b7c3b1c1632e4763ac350fead7985d1baca95022d90414c1ec7d5e7e","includes/global_splash.php":"ca867b0f481ee1fbf24b7d77f12b89de1cd1d356f8a3d1483538be2c47c443f4","includes/polana_public_phrases_v192.php":null,"admin/translate-site.php":"356e2663d3b7a674810495de7f13f67b2f64c12cd12977cb22a602e5011cd20f"}';
const P192_ARCHIVE = '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';
function p192_payload(): array {
$raw=base64_decode(P192_ARCHIVE,true);
if($raw===false) throw new RuntimeException('Nieczytelny pakiet instalatora.');
$data=gzdecode($raw);
if(!is_string($data)) throw new RuntimeException('Uszkodzony pakiet instalatora.');
$content=json_decode($data,true,512,JSON_THROW_ON_ERROR);
if(!is_array($content))throw new RuntimeException('Nieprawidłowe źródła patcha.');
return $content;
}
function p192_dir():string{return dirname(__DIR__).'/storage/polana_v192_backups';}
function p192_live():string{return dirname(__DIR__);}
function p192_manifest():array{
$m=json_decode(P192_MANIFEST,true,512,JSON_THROW_ON_ERROR);
if(!is_array($m))throw new RuntimeException('Brak manifestu.');
return $m;
}
function p192_validate_path(string $relative):string{
if(!preg_match('~^(includes|admin)/[a-zA-Z0-9_.-]+\.php$~D',$relative))throw new RuntimeException('Nieznana ścieżka: '.$relative);
return p192_live().'/'.$relative;
}
function p192_write(string $dst,string $data):void{
$dir=dirname($dst);
if(!is_dir($dir)||!is_writable($dir))throw new RuntimeException('Brak uprawnień zapisu do '.$dir);
$tmp=tempnam($dir,'.polana192_');
if(!is_string($tmp))throw new RuntimeException('Błąd pliku tymczasowego.');
try{
if(file_put_contents($tmp,$data,LOCK_EX)!==strlen($data))throw new RuntimeException('Niepełny zapis '.$dst);
chmod($tmp,0644);
if(!rename($tmp,$dst))throw new RuntimeException('Nie udało się zatwierdzić '.$dst);
}finally{if(is_file($tmp))@unlink($tmp);}
}
function p192_check():array{
$m=p192_manifest();$r=[];
foreach($m as $rel=>$sha){
$path=p192_validate_path($rel);
$actual=is_file($path)?hash_file('sha256',$path):null;
$r[$rel]=['expected'=>$sha,'actual'=>$actual,'state'=>$sha===null?($actual===null?'new':'COLLISION'):($actual===$sha?'OK':'DIFFERENT')];
}
return $r;
}
function p192_prepare_backups(string $dir,array $manifest):void{
if(!is_dir($dir)&&!mkdir($dir,0700,true))throw new RuntimeException('Nie da się utworzyć kopii na serwerze.');
@chmod($dir,0700);
file_put_contents($dir.'/.htaccess',"Deny from all\n");
foreach($manifest as $rel=>$sha){
if($sha===null)continue;
$target=p192_validate_path($rel);
$backup=$dir.'/'.str_replace('/','__',$rel).'.bak';
if(!copy($target,$backup)||hash_file('sha256',$backup)!==$sha)throw new RuntimeException('Nie udał się backup: '.$rel);
@chmod($backup,0600);
}
}
function p192_backup_tables(string $stamp):array{
$done=[];
foreach(['polana_site_translations','polana_site_locales_v192'] as $table){
$q=db()->prepare('SHOW TABLES LIKE ?');$q->execute([$table]);
if(!$q->fetchColumn())continue;
// Names are fixed constants + a trusted UTC numeric timestamp.
$dest='polana_v192_bkp_'.($table==='polana_site_translations'?'en_':'other_').$stamp;
db()->exec('CREATE TABLE `'.$dest.'` LIKE `'.$table.'`');
db()->exec('INSERT INTO `'.$dest.'` SELECT * FROM `'.$table.'`');
$done[]=$dest;
}
return $done;
}
function p192_install():string{
$checks=p192_check();
foreach($checks as $rel=>$test)if(!in_array($test['state'],['OK','new'],true))throw new RuntimeException('Plik '.$rel.' zmieniono od archiwum z 21 października. Instalacja zatrzymana. Wgraj aktualną wersję do analizy.');
$payload=p192_payload();$m=p192_manifest();
foreach($m as $rel=>$old){
if(!array_key_exists($rel,$payload)||!is_string($payload[$rel])||!str_starts_with($payload[$rel],'<?php'))throw new RuntimeException('Brak źródła '.$rel);
}
$root=p192_dir();if(!is_dir($root)&&!mkdir($root,0700,true))throw new RuntimeException('Katalog backup nie jest zapisywalny.');
if(!is_writable($root))throw new RuntimeException('Brak zapisu katalogu backupów.');
@file_put_contents($root.'/.htaccess',"Deny from all\n");
if(is_file($root.'/last.json'))throw new RuntimeException('Ta aktualizacja ma już historię. Najpierw wycofaj poprzednią lub oceń ręcznie.');
$stamp=gmdate('Ymd_His').'_'.bin2hex(random_bytes(3));
$dir=$root.'/'.$stamp;
p192_prepare_backups($dir,$m);
$tables=p192_backup_tables(gmdate('YmdHis'));
db()->exec("CREATE TABLE IF NOT EXISTS polana_site_locales_v192 (
lang ENUM('de','es') NOT NULL,
translation_id CHAR(64) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
scope VARCHAR(20) NOT NULL,
source_text MEDIUMTEXT NOT NULL,
translated_text MEDIUMTEXT NOT NULL,
state ENUM('draft','published') NOT NULL DEFAULT 'draft',
reviewed_at DATETIME NULL,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (lang, translation_id), INDEX idx_state(lang,scope,state)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");
$state=['stamp'=>$stamp,'manifest'=>$m,'new_hashes'=>[], 'sql_backup_tables'=>$tables, 'installed_at'=>date('c')];
foreach($payload as $rel=>$source)$state['new_hashes'][$rel]=hash('sha256',$source);
file_put_contents($dir.'/state.json',json_encode($state,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES|JSON_THROW_ON_ERROR));
$written=[];
try{
foreach($payload as $rel=>$source){
$target=p192_validate_path($rel);
p192_write($target,$source);
if(hash_file('sha256',$target)!==$state['new_hashes'][$rel])throw new RuntimeException('Błąd odczytu po instalacji: '.$rel);
$written[]=$rel;
}
p192_write($root.'/last.json',json_encode($state,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES|JSON_THROW_ON_ERROR));
}catch(Throwable $e){
// Atomic per-file writes and automatic rollback of files already changed.
foreach(array_reverse($written) as $rel){
$dest=p192_validate_path($rel);$old=$m[$rel];
if($old===null)@unlink($dest);else {
$copy=$dir.'/'.str_replace('/','__',$rel).'.bak';
if(is_file($copy))p192_write($dest,(string)file_get_contents($copy));
}
}
throw $e;
}
return 'Zainstalowano V19.2. Backup '.$dir.'. Kopie tabel SQL: '.implode(', ',$tables).'.';
}
function p192_rollback():string{
$root=p192_dir();$last=$root.'/last.json';
if(!is_file($last))throw new RuntimeException('Brak zarejestrowanej instalacji V19.2.');
$state=json_decode((string)file_get_contents($last),true,512,JSON_THROW_ON_ERROR);
if(!is_array($state)||!preg_match('/^\d{8}_\d{6}_[0-9a-f]{6}$/D',(string)($state['stamp']??'')))throw new RuntimeException('Nieprawidłowy stan backupu.');
$dir=$root.'/'.$state['stamp'];
foreach($state['new_hashes'] as $rel=>$sha){
$file=p192_validate_path((string)$rel);
if(!is_file($file)||hash_file('sha256',$file)!==$sha)throw new RuntimeException('Plik '.$rel.' zmieniono po instalacji — odmowa automatycznego rollbacku.');
}
foreach($state['manifest'] as $rel=>$old){
if($old===null)continue;
$file=$dir.'/'.str_replace('/','__',$rel).'.bak';
if(!is_file($file)||hash_file('sha256',$file)!==$old)throw new RuntimeException('Brakuje niezmienionej kopii '.$rel);
}
foreach($state['manifest'] as $rel=>$old){
$target=p192_validate_path($rel);
if($old===null) { if(!unlink($target))throw new RuntimeException('Nie usunięto '.$rel); }
else p192_write($target,(string)file_get_contents($dir.'/'.str_replace('/','__',$rel).'.bak'));
}
@unlink($last);
// New DB table and SQL snapshots stay intact to avoid destroying editorial changes.
return 'Przywrócono poprzednie pliki. Tabele i dane tłumaczeń pozostają nienaruszone (bezpieczny rollback).';
}
$info='';$error='';
if(($_SERVER['REQUEST_METHOD']??'')==='POST'){
verify_csrf();
try{
$action=(string)($_POST['action']??'');
if($action==='install')$info=p192_install();
elseif($action==='rollback')$info=p192_rollback();
else throw new RuntimeException('Nieznana operacja.');
}catch(Throwable $e){$error=$e->getMessage();}
}
$checks=p192_check();$installed=is_file(p192_dir().'/last.json');
render_admin_header('Polana V19.2 — instalator tłumaczeń');
?>
<section class="form-card"><h1>Polana V19.2 — EN / DE / ES</h1>
<p>Bezpieczna instalacja na aktualnym źródle z 21.10.2026. Wykrywa zmienione pliki, tworzy kopie oryginałów oraz tabele SQL, zachowuje istniejące EN.</p>
<?php if($info):?><div class="alert alert-success"><?=e($info)?></div><?php endif;?>
<?php if($error):?><div class="alert alert-error"><?=e($error)?></div><?php endif;?>
<table style="width:100%;border-collapse:collapse"><thead><tr><th style="text-align:left">Plik</th><th style="text-align:left">Weryfikacja</th></tr></thead><tbody>
<?php foreach($checks as $rel=>$test):?><tr><td style="padding:6px"><?=e($rel)?></td><td style="padding:6px"><?=e($test['state'])?></td></tr><?php endforeach;?></tbody></table>
<?php if(!$installed):?><form method="post" style="margin-top:15px"><?=csrf_field()?><button class="btn btn-green" name="action" value="install" <?=count(array_filter($checks,fn($c)=>!in_array($c['state'],['OK','new'],true)))?'disabled':''?>>Zrób backup i zainstaluj V19.2</button></form>
<?php else:?><p><a class="btn btn-green" href="/admin/translate-site.php">Otwórz tłumaczenie strony →</a></p><form method="post"><?=csrf_field()?><button class="btn btn-light" name="action" value="rollback">Rollback plików</button></form><?php endif;?>
<p style="font-size:13px">Nowe treści zawsze powstają jako szkice. Menu, blog i podstrony dalej obsługuje Centrum Tłumaczeń V16. Kopie SQL pozostają dostępne po rollbacku; nie przywracamy automatycznie tabel kosztem nowych danych.</p>
</section>
<?php render_admin_footer(); ?>