blob: def4e0626e4a8950072437cd0b9b02624c24a63d (
plain) (
tree)
|
|
<?php
class Dnbd3 {
const PROP_ENABLED = 'dnbd3.enabled';
const PROP_NFS_FALLBACK = 'dnbd3.nfs-fallback';
const PROP_PREFER_LOCAL = 'dnbd3.prefer-local';
public static function isEnabled(): bool
{
return (bool)Property::get(self::PROP_ENABLED, 0);
}
public static function setEnabled($bool)
{
Property::set(self::PROP_ENABLED, $bool ? 1 : 0);
Trigger::mount(false, true);
}
public static function hasNfsFallback(): bool
{
return (bool)Property::get(self::PROP_NFS_FALLBACK, 0);
}
public static function setNfsFallback($bool)
{
Property::set(self::PROP_NFS_FALLBACK, $bool ? 1 : 0);
}
public static function preferLocal(): bool
{
return (bool)Property::get(self::PROP_PREFER_LOCAL, 0);
}
public static function setPreferLocal($bool)
{
Property::set(self::PROP_PREFER_LOCAL, $bool ? 1 : 0);
}
public static function getActiveServers(): array
{
$res = Database::simpleQuery('SELECT s.serverid, m.clientip, s.fixedip
FROM dnbd3_server s
LEFT JOIN machine m ON (s.machineuuid = m.machineuuid)
WHERE s.lastseen > :cutoff', ['cutoff' => CONFIG_DEBUG ? 0 : time() - 310]);
$lookup = [];
foreach ($res as $row) {
$lookup[$row['fixedip'] ?? $row['clientip'] ?? ''] = $row['serverid'];
}
return $lookup;
}
public static function getServer(string $serverId)
{
return Database::queryFirst('SELECT s.serverid, IFNULL(s.fixedip, m.clientip) AS clientip
FROM dnbd3_server s
LEFT JOIN machine m ON (s.machineuuid = m.machineuuid)
WHERE s.serverid = :id', ['id' => $serverId]);
}
}
|