mirror of
https://github.com/Terranom674/Piwigo_Bratonien_Tools.git
synced 2026-09-20 19:13:19 +00:00
Compare commits
3 Commits
345ece63f3
...
59792988da
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59792988da | ||
|
|
5222d12a5f | ||
|
|
65316043d8 |
@@ -60,8 +60,15 @@ function bratonien_tools_run_webdav_scan_diagnostic()
|
|||||||
$parts[] = 'WebDAV #'.$id.': FEHLER: '.(string)$report['fatal'].' (Exit '.(int)$report['exit_code'].')';
|
$parts[] = 'WebDAV #'.$id.': FEHLER: '.(string)$report['fatal'].' (Exit '.(int)$report['exit_code'].')';
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$lock_state = (string)($report['worker_lock_state'] ?? 'unknown');
|
||||||
|
if ($lock_state === 'free') $lock_text = 'Worker-Lock frei';
|
||||||
|
elseif ($lock_state === 'busy') $lock_text = 'Worker-Lock BELEGT';
|
||||||
|
elseif ($lock_state === 'open_failed') $lock_text = 'Worker-Lock NICHT OEFFENBAR';
|
||||||
|
else $lock_text = 'Worker-Lock unbekannt';
|
||||||
|
|
||||||
$parts[] = sprintf(
|
$parts[] = sprintf(
|
||||||
'WebDAV #%d: Mapping %d Dateien, Shadow %d Links, %d passend, %d defekt, %d ohne Mapping, %d doppelt (Exit %d).',
|
'WebDAV #%d: Mapping %d Dateien, Shadow %d Links, %d passend, %d defekt, %d ohne Mapping, %d doppelt; %s%s (Exit %d).',
|
||||||
$id,
|
$id,
|
||||||
(int)($report['mapping_files'] ?? 0),
|
(int)($report['mapping_files'] ?? 0),
|
||||||
(int)($report['shadow_links'] ?? 0),
|
(int)($report['shadow_links'] ?? 0),
|
||||||
@@ -69,11 +76,13 @@ function bratonien_tools_run_webdav_scan_diagnostic()
|
|||||||
(int)($report['broken'] ?? 0),
|
(int)($report['broken'] ?? 0),
|
||||||
(int)($report['unmapped'] ?? 0),
|
(int)($report['unmapped'] ?? 0),
|
||||||
(int)($report['duplicates'] ?? 0),
|
(int)($report['duplicates'] ?? 0),
|
||||||
|
$lock_text,
|
||||||
|
!empty($report['worker_lock_detail']) ? ' - '.(string)$report['worker_lock_detail'] : '',
|
||||||
(int)$report['exit_code']
|
(int)$report['exit_code']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'message'=>($failed ? 'Scan-Test fehlgeschlagen. ' : 'Scan-Test erfolgreich. ').implode(' ', $parts),
|
'message'=>($failed ? 'Scan-/Lock-Test auffaellig. ' : 'Scan-/Lock-Test erfolgreich. ').implode(' ', $parts),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
Plugin Name: Bratonien Tools
|
Plugin Name: Bratonien Tools
|
||||||
Version: 0.9.7.1.20
|
Version: 0.9.7.1.21
|
||||||
Description: Erweiterbare Administrationswerkzeuge fuer die Bratonien-Piwigo-Installation.
|
Description: Erweiterbare Administrationswerkzeuge fuer die Bratonien-Piwigo-Installation.
|
||||||
Plugin URI: https://github.com/Terranom674/Piwigo_Bratonien_Tools
|
Plugin URI: https://github.com/Terranom674/Piwigo_Bratonien_Tools
|
||||||
Author: Bratonien
|
Author: Bratonien
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ $_SERVER['REQUEST_URI'] = '/';
|
|||||||
$_SERVER['SCRIPT_NAME'] = '/plugins/bratonien_tools/runtime/lib/webdav-scan-diagnostic.php';
|
$_SERVER['SCRIPT_NAME'] = '/plugins/bratonien_tools/runtime/lib/webdav-scan-diagnostic.php';
|
||||||
$_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'];
|
$_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'];
|
||||||
$_SERVER['QUERY_STRING'] = '';
|
$_SERVER['QUERY_STRING'] = '';
|
||||||
$_SERVER['HTTP_USER_AGENT'] = 'Bratonien-WebDAV-Scan-Diagnostic/0.9.7.1.20';
|
$_SERVER['HTTP_USER_AGENT'] = 'Bratonien-WebDAV-Scan-Diagnostic/0.9.7.1.21';
|
||||||
$_SERVER['HTTPS'] = 'off';
|
$_SERVER['HTTPS'] = 'off';
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -54,6 +54,29 @@ try
|
|||||||
if ($state_dir === '') throw new RuntimeException('Connector-State-Verzeichnis fehlt.');
|
if ($state_dir === '') throw new RuntimeException('Connector-State-Verzeichnis fehlt.');
|
||||||
if ($gallery_root === '') throw new RuntimeException('Shadow-Tree-Pfad fehlt in der Connector-Konfiguration.');
|
if ($gallery_root === '') throw new RuntimeException('Shadow-Tree-Pfad fehlt in der Connector-Konfiguration.');
|
||||||
|
|
||||||
|
$lock_file = $state_dir.'/webdav-cache-warmup.lock';
|
||||||
|
$worker_lock_state = 'open_failed';
|
||||||
|
$worker_lock_detail = '';
|
||||||
|
$lock_handle = @fopen($lock_file, 'c');
|
||||||
|
if (is_resource($lock_handle))
|
||||||
|
{
|
||||||
|
if (@flock($lock_handle, LOCK_EX | LOCK_NB))
|
||||||
|
{
|
||||||
|
$worker_lock_state = 'free';
|
||||||
|
@flock($lock_handle, LOCK_UN);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$worker_lock_state = 'busy';
|
||||||
|
$worker_lock_detail = 'Ein anderer Prozess haelt den WebDAV-Worker-Lock.';
|
||||||
|
}
|
||||||
|
fclose($lock_handle);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$worker_lock_detail = 'Worker-Lock-Datei konnte nicht geoeffnet werden.';
|
||||||
|
}
|
||||||
|
|
||||||
$mapping_file = $state_dir.'/webdav-map.json';
|
$mapping_file = $state_dir.'/webdav-map.json';
|
||||||
if (!is_file($mapping_file) || !is_readable($mapping_file)) throw new RuntimeException('WebDAV-Mapping fehlt oder ist nicht lesbar: '.$mapping_file);
|
if (!is_file($mapping_file) || !is_readable($mapping_file)) throw new RuntimeException('WebDAV-Mapping fehlt oder ist nicht lesbar: '.$mapping_file);
|
||||||
$mapping = json_decode((string)file_get_contents($mapping_file), true);
|
$mapping = json_decode((string)file_get_contents($mapping_file), true);
|
||||||
@@ -124,12 +147,17 @@ try
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$scan_ok = ($shadow_links > 0 && $matched === $shadow_links && $broken === 0 && $unmapped === 0 && $duplicates === 0);
|
||||||
$payload = array(
|
$payload = array(
|
||||||
'ok'=>($shadow_links > 0 && $matched === $shadow_links && $broken === 0 && $unmapped === 0 && $duplicates === 0),
|
'ok'=>$scan_ok && $worker_lock_state !== 'open_failed',
|
||||||
|
'scan_ok'=>$scan_ok,
|
||||||
'connection_id'=>$connection_id,
|
'connection_id'=>$connection_id,
|
||||||
'state_dir'=>$state_dir,
|
'state_dir'=>$state_dir,
|
||||||
'gallery_root'=>$gallery_root,
|
'gallery_root'=>$gallery_root,
|
||||||
'mapping_file'=>$mapping_file,
|
'mapping_file'=>$mapping_file,
|
||||||
|
'worker_lock_file'=>$lock_file,
|
||||||
|
'worker_lock_state'=>$worker_lock_state,
|
||||||
|
'worker_lock_detail'=>$worker_lock_detail,
|
||||||
'mapping_files'=>count($mapped_files),
|
'mapping_files'=>count($mapped_files),
|
||||||
'shadow_links'=>$shadow_links,
|
'shadow_links'=>$shadow_links,
|
||||||
'matched'=>$matched,
|
'matched'=>$matched,
|
||||||
|
|||||||
Reference in New Issue
Block a user