_(Docker LOG rotation)_:
:
:docker_log_rotation_help:
_(Docker LOG maximum file size)_:
:
:docker_log_file_size_help:
_(Docker LOG number of files)_:
:
:docker_log_file_number_help:
_(Template Authoring Mode)_:
:
:docker_authoring_mode_help:
_(Docker custom network type)_:
:
_(Please read the Help carefully)_. _(Misconfiguration can cause problems)_.
:docker_custom_network_type_help:
_(Host access to custom networks)_:
:
_(Make sure you understand what you are doing before enabling)_.
:docker_custom_network_access_help:
_(Preserve user defined networks)_:
:
:docker_user_defined_network_help:
$route):?>
$net = normalize($network);
$docker_auto = "DOCKER_AUTO_$net";
$docker_dhcp = "DOCKER_DHCP_$net";
?>
_(IPv4 custom network on interface)_ =$network?> (_(optional)_):
$auto = _var($dockercfg,$docker_auto) == '' || str_contains(_var($dockercfg,$docker_auto), '4');
$autoDisabled = $auto ? '' : 'disabled';
$dhcp = _var($dockercfg,$docker_dhcp);
$dhcpDisabled = ($auto && $dhcp) ? '' : 'disabled';
$net = base_min($route);
$max = base_max($route);
$mask = explode('/',$route)[1];
$net_user = $dhcp ? base_min($dhcp) : $net;
$mask_user = $dhcp ? explode('/',$dhcp)[1] : $mask+1;
$size = pow(2,32-$mask_user);
switch (true) {
case ($mask < 16): $prefix = $net[0]; $box = 1; break;
case ($mask < 24): $prefix = $net[0].'.'.$net[1]; $box = 2; break;
case ($mask < 32): $prefix = $net[0].'.'.$net[1].'.'.$net[2]; $box = 3 ;break;
}
// Build network select options arrays
$network_selects = [];
for ($b = $box; $b <= 3; $b++) {
switch ($b) {
case 1: $step = floor($size/65536) % 256; break;
case 2: $step = floor($size/256) % 256; break;
case 3: $step = $size % 256; break;
}
if ($step === 0) $step = 256;
$network_selects[$b] = [
'id' => "{$docker_dhcp}_{$b}",
'options' => []
];
for ($n = $net[$b]; $n <= $max[$b]; $n++) {
$network_selects[$b]['options'][] = mk_option($net_user[$b], $n, $n, $n % $step == 0 ? '' : 'class="hide"');
}
}
// Build mask select options
$mask_options = [];
for ($m = $mask + 1; $m <= 30; $m++) {
$mask_options[] = mk_option($mask_user, $m, $m);
}
?>
:
=_('Subnet')?>: =str_replace(' ', '
'._('Subnet').': ', $route)?>
=_('Gateway')?>: =$gateway[$network] ?: '---'?>
=$prefix?>.
(=$size?> =_('hosts')?>)
:docker_include_interface_vlan_ipv4_help:
$port = normalize($network);
[$subnet,$mask] = my_explode('/',_var($dockercfg,"DOCKER_SUBNET_$port"));
[$range,$size] = my_explode('/',_var($dockercfg,"DOCKER_RANGE_$port"));
$disabled = $subnet ? '':'disabled';
$dhcpDisabled = $range ? '':'disabled';
?>
_(IPv4 custom network on interface)_ =$network?> (_(optional)_):
:
=_('Subnet') ?>:
>
=_('Gateway') ?>:
" title="_(IPv4 address A.B.C.D)_"=$disabled?>>
>
(=pow(2,32-($size?:25))?> _(hosts)_)
:docker_exclude_interface_vlan_ipv4_help:
$route):?>
$net = normalize($network);
$docker_auto = "DOCKER_AUTO_$net";
$docker_dhcp6 = "DOCKER_DHCP6_$net";
?>
_(IPv6 custom network on interface)_ =$network?> (_(optional)_):
$auto6 = _var($dockercfg,$docker_auto) == '' || str_contains(_var($dockercfg,$docker_auto), '6');
$auto6Disabled = $auto6 ? '':'disabled';
$dhcp6 = _var($dockercfg,$docker_dhcp6);
$dhcp6Disabled = ($auto6 && $dhcp6) ? '':'disabled';
$net = base_net($route);
$mask = explode('/',$route)[1];
$net_user = $dhcp6 ? str_replace("$net:","",base_net($dhcp6)) : '';
$mask_user = $dhcp6 ? explode('/',$dhcp6)[1] : $mask;
?>
:
**_(Subnet)_:** =str_replace(' ', '
'._('Subnet').': ', $route)?>
**_(Gateway)_:** =$gateway6[$network] ?: '---'?>
:docker_include_interface_vlan_ipv6_help:
$port = normalize($network);
[$subnet6,$mask6] = my_explode('/',_var($dockercfg,"DOCKER_SUBNET6_$port"));
[$range6,$size6] = my_explode('/',_var($dockercfg,"DOCKER_RANGE6_$port"));
$disabled = $subnet6 ? '':'disabled';
$dhcpDisabled = $range6 ? '':'disabled';
?>
_(IPv6 custom network on interface)_ =$network?> (_(optional)_):
:
=_('Subnet') ?>:
>
=_('Gateway') ?>:
" title="_(IPv6 address nnnn:xxxx::yyyy)_"=$disabled?>>
:docker_exclude_interface_vlan_ipv6_help:
_(Docker version)_:
: $arrInfo = $DockerClient->getInfo(); echo $arrInfo['Version']?>
:docker_version_help:
_(Docker vDisk location)_:
: =htmlspecialchars(_var($dockercfg,'DOCKER_IMAGE_FILE'))?>
_(Docker directory)_:
: =htmlspecialchars(_var($dockercfg,'DOCKER_IMAGE_FILE'))?>
:docker_vdisk_location_active_help:
_(Docker storage driver)_:
: =htmlspecialchars(_var($dockercfg,'DOCKER_BACKINGFS'))?>
:docker_storage_driver_active_help:
_(Default appdata storage location)_:
: =htmlspecialchars(_var($dockercfg,'DOCKER_APP_CONFIG_PATH'))?>
:docker_appdata_location_active_help:
_(Docker LOG rotation)_:
: =_var($dockercfg,'DOCKER_LOG_ROTATION')=='yes' ? _('Enabled') : _('Disabled')?>
:docker_log_rotation_active_help:
_(Docker custom network type)_:
: =_var($dockercfg,'DOCKER_NETWORK_TYPE')!='1' || !$bridge ? _('macvlan') : _('ipvlan')?>
:docker_custom_network_type_help:
_(Host access to custom networks)_:
: =_var($dockercfg,'DOCKER_ALLOW_ACCESS')=='yes' ? _('Enabled') : _('Disabled')?>
:docker_custom_network_access_help:
_(Preserve user defined networks)_:
: =_var($dockercfg,'DOCKER_USER_NETWORKS')=='preserve' ? _('Yes') : _('No')?>
:docker_user_defined_network_help:
$route):?>
$net = normalize($network);
$docker_dhcp = "DOCKER_DHCP_$net";
?>
_(IPv4 custom network on interface)_ =$network?>:
:
**_(Subnet)_:** =str_replace(' ', '
'._('Subnet').': ', $route)?>
**_(Gateway)_:** =$gateway[$network] ?: '---'?>
**_(DHCP pool)_:** =_var($dockercfg,$docker_dhcp) ?: "_(not set)_"?> (=pow(2,32-my_explode('/',$dockercfg[$docker_dhcp])[1])?> _(hosts)_)
$port = normalize($network);
if (substr($network,0,4) != 'wlan') {
[$eth, $vlan] = my_explode('.',$network);
$eth = str_replace(['bond','br'],'eth',$eth);
if (!$vlan) {
$protocol = _var($$eth,'PROTOCOL:0','ipv4');
} else {
foreach ($$eth as $key => $value) {
if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol = _var($$eth,str_replace('VLANID','PROTOCOL',$key),'ipv4'); break;}
}
}
} else {
$protocol = empty($wlan['IP6']) ? 'ipv4' : 'ipv4+ipv6';
}
[$subnet, $mask] = my_explode('/',_var($dockercfg,"DOCKER_SUBNET_$port"));
[$range, $size] = my_explode('/',_var($dockercfg,"DOCKER_RANGE_$port"));
?>
_(IPv4 custom network on interface)_ =$network?>:
:
**_(Subnet)_:** =$subnet?>/=$mask?>
**_(Gateway)_:** =_var($dockercfg,"DOCKER_GATEWAY_$port") ?: '---'?>
**_(DHCP pool)_:** =$range ? "$range/$size" : "_(not set)_"?> (=pow(2,32-($size?:25))?> _(hosts)_)
$route):?>
$net = normalize($network);
$docker_dhcp6 = "DOCKER_DHCP6_$net";
if (isset($dockercfg[$docker_dhcp6]) || empty($dockercfg["DOCKER_AUTO_$net"]) || $dockercfg["DOCKER_AUTO_$net"] != 'no'):?>
$wide = true;?>
_(IPv6 custom network on interface)_ =$network?>:
:
**_(Subnet)_:** =str_replace(' ', '
'._('Subnet').': ', $route)?>
**_(Gateway)_:** =$gateway6[$network] ?: '---'?>
$port = normalize($network);
if (substr($network,0,4) != 'wlan') {
[$eth, $vlan] = my_explode('.',$network);
$eth = str_replace(['bond','br'],'eth',$eth);
if (!$vlan) {
$protocol = _var($$eth,'PROTOCOL:0','ipv4');
} else {
foreach ($$eth as $key => $value) {
if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol = _var($$eth,str_replace('VLANID','PROTOCOL',$key),'ipv4'); break;}
}
}
} else {
$protocol = empty($wlan['IP6']) ? 'ipv4' : 'ipv4+ipv6';
}
[$subnet6, $mask6] = my_explode('/',_var($dockercfg,"DOCKER_SUBNET6_$port"));
[$range6, $size6] = my_explode('/',_var($dockercfg,"DOCKER_RANGE6_$port"));
?>
_(IPv6 custom network on interface)_ =$network?>:
:
**_(Subnet)_:** =$subnet6?>/=$mask6?>
**_(Gateway)_:** =_var($dockercfg,"DOCKER_GATEWAY6_$port") ?: '---'?>
: