mirror of
https://github.com/Terranom674/Piwigo_Bratonien_Tools.git
synced 2026-09-19 16:24:33 +00:00
Add manual NC connector run and clean status text
This commit is contained in:
@@ -4,9 +4,14 @@ if (!defined('PHPWG_ROOT_PATH'))
|
|||||||
die('Hacking attempt!');
|
die('Hacking attempt!');
|
||||||
}
|
}
|
||||||
|
|
||||||
function bratonien_tools_nc_connector_systemctl_value(array $args)
|
function bratonien_tools_nc_connector_systemctl_run(array $args)
|
||||||
{
|
{
|
||||||
if (!function_exists('proc_open')) return '';
|
$result = array('exit'=>-1, 'stdout'=>'', 'stderr'=>'');
|
||||||
|
if (!function_exists('proc_open'))
|
||||||
|
{
|
||||||
|
$result['stderr'] = 'proc_open ist in PHP nicht verfügbar.';
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
$command = array_merge(array('/usr/bin/systemctl'), $args);
|
$command = array_merge(array('/usr/bin/systemctl'), $args);
|
||||||
$spec = array(
|
$spec = array(
|
||||||
@@ -16,13 +21,38 @@ function bratonien_tools_nc_connector_systemctl_value(array $args)
|
|||||||
);
|
);
|
||||||
$environment = array_merge($_ENV, array('LC_ALL'=>'C','LANG'=>'C'));
|
$environment = array_merge($_ENV, array('LC_ALL'=>'C','LANG'=>'C'));
|
||||||
$process = @proc_open($command, $spec, $pipes, null, $environment);
|
$process = @proc_open($command, $spec, $pipes, null, $environment);
|
||||||
if (!is_resource($process)) return '';
|
if (!is_resource($process))
|
||||||
$stdout = stream_get_contents($pipes[1]);
|
{
|
||||||
stream_get_contents($pipes[2]);
|
$result['stderr'] = 'systemctl konnte nicht gestartet werden.';
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result['stdout'] = trim((string)stream_get_contents($pipes[1]));
|
||||||
|
$result['stderr'] = trim((string)stream_get_contents($pipes[2]));
|
||||||
fclose($pipes[1]);
|
fclose($pipes[1]);
|
||||||
fclose($pipes[2]);
|
fclose($pipes[2]);
|
||||||
$exit = proc_close($process);
|
$result['exit'] = (int)proc_close($process);
|
||||||
return $exit === 0 ? trim((string)$stdout) : '';
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function bratonien_tools_nc_connector_systemctl_value(array $args)
|
||||||
|
{
|
||||||
|
$result = bratonien_tools_nc_connector_systemctl_run($args);
|
||||||
|
return $result['exit'] === 0 ? $result['stdout'] : '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function bratonien_tools_nc_connector_run_now()
|
||||||
|
{
|
||||||
|
$service = 'bratonien-nc-connector.service';
|
||||||
|
$result = bratonien_tools_nc_connector_systemctl_run(array('start','--no-block',$service));
|
||||||
|
if ($result['exit'] !== 0)
|
||||||
|
{
|
||||||
|
$detail = $result['stderr'] !== '' ? $result['stderr'] : $result['stdout'];
|
||||||
|
if ($detail === '') $detail = 'systemctl Exit-Code '.$result['exit'];
|
||||||
|
throw new RuntimeException('WebDAV-Abgleich konnte nicht gestartet werden: '.$detail);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array('message'=>'WebDAV-Abgleich wurde gestartet.');
|
||||||
}
|
}
|
||||||
|
|
||||||
function bratonien_tools_nc_connector_parse_systemd_time($value)
|
function bratonien_tools_nc_connector_parse_systemd_time($value)
|
||||||
@@ -112,6 +142,15 @@ function bratonien_tools_nc_connector_last_status(array $connections)
|
|||||||
return $latest;
|
return $latest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function bratonien_tools_nc_connector_status_message(array $last)
|
||||||
|
{
|
||||||
|
if ((string)($last['state'] ?? '') === 'ok')
|
||||||
|
{
|
||||||
|
return 'WebDAV eingelesen und Piwigo synchronisiert';
|
||||||
|
}
|
||||||
|
return (string)($last['message'] ?? '');
|
||||||
|
}
|
||||||
|
|
||||||
function bratonien_tools_nc_connector_system_status(array $connections = array())
|
function bratonien_tools_nc_connector_system_status(array $connections = array())
|
||||||
{
|
{
|
||||||
$timer = 'bratonien-nc-connector.timer';
|
$timer = 'bratonien-nc-connector.timer';
|
||||||
@@ -143,7 +182,7 @@ function bratonien_tools_nc_connector_system_status(array $connections = array()
|
|||||||
'last_run_timestamp'=>(int)$last['timestamp'],
|
'last_run_timestamp'=>(int)$last['timestamp'],
|
||||||
'last_run_label'=>$last['timestamp'] > 0 ? date('d.m.Y H:i:s', (int)$last['timestamp']) : 'Nicht verfügbar',
|
'last_run_label'=>$last['timestamp'] > 0 ? date('d.m.Y H:i:s', (int)$last['timestamp']) : 'Nicht verfügbar',
|
||||||
'last_run_state'=>(string)$last['state'],
|
'last_run_state'=>(string)$last['state'],
|
||||||
'last_run_message'=>(string)$last['message'],
|
'last_run_message'=>bratonien_tools_nc_connector_status_message($last),
|
||||||
'last_run_auth_mode'=>(string)$last['auth_mode'],
|
'last_run_auth_mode'=>(string)$last['auth_mode'],
|
||||||
'last_run_api_state'=>(string)$last['api_state'],
|
'last_run_api_state'=>(string)$last['api_state'],
|
||||||
'last_run_api_message'=>(string)$last['api_message'],
|
'last_run_api_message'=>(string)$last['api_message'],
|
||||||
|
|||||||
Reference in New Issue
Block a user