Merge branch 'master' of ch1p.io:homekit

This commit is contained in:
Evgeny Zinoviev 2024-02-17 02:43:49 +03:00
commit c4ace35818
6 changed files with 35 additions and 19 deletions

View File

@ -61,6 +61,14 @@ class MyOpenWrtUtils {
return $list;
}
public static function setUpstream(string $ip) {
return self::run(['homekit-set-default-upstream', $ip]);
}
public static function getDefaultRoute() {
return self::run(['get-default-route']);
}
//
// http functions
@ -128,4 +136,4 @@ class MyOpenWrtUtils {
];
}
}
}

View File

@ -93,10 +93,12 @@ class InverterHandler extends RequestHandler
protected function getClient(): InverterdClient {
global $config;
if (isset($_GET['alt']) && $_GET['alt'] == 1)
$config['inverterd_host'] = '192.168.5.223';
$inv = new InverterdClient($config['inverterd_host'], $config['inverterd_port']);
$inv->setFormat('json');
return $inv;
}
}
}

View File

@ -33,6 +33,9 @@ class MiscHandler extends RequestHandler
public function GET_pump_page() {
global $config;
if (isset($_GET['alt']) && $_GET['alt'] == 1)
$config['pump_host'] = '192.168.5.223';
list($set) = $this->input('set');
$client = new GPIORelaydClient($config['pump_host'], $config['pump_port']);
@ -165,4 +168,4 @@ class MiscHandler extends RequestHandler
phpinfo();
}
}
}

View File

@ -76,7 +76,7 @@ class ModemHandler extends RequestHandler
global $config;
list($error) = $this->input('error');
$upstream = self::getCurrentSmallHomeUpstream();
$upstream = self::getCurrentUpstream();
$current_upstream = [
'key' => $upstream,
@ -98,12 +98,13 @@ class ModemHandler extends RequestHandler
if (!isset($config['modems'][$new_upstream]))
redirect('/routing/?error='.urlencode('invalid upstream'));
$current_upstream = self::getCurrentSmallHomeUpstream();
$current_upstream = self::getCurrentUpstream();
if ($current_upstream != $new_upstream) {
if ($current_upstream != $config['routing_default'])
MyOpenWrtUtils::ipsetDel($current_upstream, $config['routing_smallhome_ip']);
if ($new_upstream != $config['routing_default'])
MyOpenWrtUtils::ipsetAdd($new_upstream, $config['routing_smallhome_ip']);
if ($new_upstream == 'mts-il')
$new_upstream_ip = '192.168.88.1';
else
$new_upstream_ip = $config['modems'][$new_upstream]['ip'];
MyOpenWrtUtils::setUpstream($new_upstream_ip);
}
redirect('/routing/');
@ -264,14 +265,16 @@ class ModemHandler extends RequestHandler
}
}
protected static function getCurrentSmallHomeUpstream() {
protected static function getCurrentUpstream() {
global $config;
$default_route = MyOpenWrtUtils::getDefaultRoute();
if ($default_route == '192.168.88.1')
$default_route = $config['modems']['mts-il']['ip'];
$upstream = null;
$ip_sets = MyOpenWrtUtils::ipsetListAll();
foreach ($ip_sets as $set => $ips) {
if (in_array($config['routing_smallhome_ip'], $ips)) {
$upstream = $set;
foreach ($config['modems'] as $modem_name => $modem_data) {
if ($default_route == $modem_data['ip']) {
$upstream = $modem_name;
break;
}
}
@ -294,4 +297,4 @@ class ModemHandler extends RequestHandler
redirect('/routing/ipsets/?error='.urlencode('invalid ip/network: '.$ip));
}
}
}

View File

@ -20,8 +20,8 @@
<h6 class="mt-4">Другое</h6>
<ul class="list-group list-group-flush">
<li class="list-group-item"><a href="/inverter/">Инвертор</a> (<a href="{{ grafana_inverter_url }}">Grafana</a>)</li>
<li class="list-group-item"><a href="/pump/">Насос</a></li>
<li class="list-group-item"><a href="/inverter/">Инвертор</a> (<a href="/inverter/?alt=1">alt</a>, <a href="{{ grafana_inverter_url }}">Grafana</a>)</li>
<li class="list-group-item"><a href="/pump/">Насос</a> (<a href="/pump/?alt=1">alt</a>)</li>
<li class="list-group-item"><a href="/sensors/">Датчики</a> (<a href="{{ grafana_sensors_url }}">Grafana</a>)</li>
</ul>
@ -32,4 +32,4 @@
{% endfor %}
<li class="list-group-item"><a href="/cams/stat/">Статистика</a></li>
</ul>
</div>
</div>

View File

@ -5,7 +5,7 @@
} %}
{% set routing_tabs = [
{tab: 'smallhome', url: '/routing/', label: 'Маленький дом'},
{tab: 'smallhome', url: '/routing/', label: 'Интернет'},
{tab: 'ipsets', url: '/routing/ipsets/', label: 'Правила'},
{tab: 'dhcp', url: '/routing/dhcp/', label: 'DHCP'}
] %}