summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-05-05pki: T7122: when ACME listen-address is used - check if port is availableChristian Breunig
When instructing certbot to listen on a given address, check if the address is free to use. Also take this into account when spawning certbot behind HAProxy. If the address is not (yet) bound - the request must be done in standalone mode and not via the reverse-proxy.
2025-05-05haproxy: T7122: add ACME/certbot bootstrap supportChristian Breunig
When both the CLI PKI node for an ACME-issued certificate and HAProxy are configured during initial setup, the certbot challenge cannot be served via the reverse proxy because HAProxy has not yet been configured at all. This commit introduces a special case to handle this bootstrap scenario, ensuring that the certbot challenge can still be served correctly in standalone mode on port 80 despite initial config dependencies/priorities between PKI and HAProxy.
2025-05-05pki: T7122: extend ca/certificate removal check to listsChristian Breunig
Some VyOS CLI nodes support defining multiple certificates. The previous check when removing a certificate from the CLI only performed a string comparison, which failed in cases where the underlying data was a list (CLI <multi/> node). This update extends the check to handle both cases: - If the datum is a string, perform a string comparison. - If the datum is a list, check whether the target certificate is part of the list. This ensures proper removal behavior regardless of the data type used in the CLI node.
2025-05-05vyos.base: T7122: add new Message() helper wrapper for print()Christian Breunig
This will wrap the messages at 72 characters in the same way as Warning() and DeprecationWarning() would do. We now have simple wrappers for it! Example: vyos@vyos# commit [ pki ] Updating configuration: "load-balancing haproxy service frontend ssl certificate LE_cloud" Add/replace automatically imported CA certificate for "LE_cloud"
2025-05-04haproxy: T7122: always reverse-proxy ACL for certbotChristian Breunig
Always enable the ACL entry to reverse-proxy requests to the path "/.well-known/acme-challenge/" when "redirect-http-to-https" is configured for a given HAProxy frontend service. This is an intentional design decision to simplify the implementation and reduce overall code complexity. It poses no risk: a missing path returns a 404, and an unavailable backend yields an error 503. This approach avoids a chicken-and-egg problem where certbot might try to request a certificate via reverse-proxy before the proxy config is actually generated and active. By always routing through HAProxy, we also eliminate downtime as port 80 does not need to be freed for certbot's standalone mode.
2025-05-04vyos.template: T7122: add Jinja2 clever function helper to read vyos.defaultsChristian Breunig
Add a new category if Jinja2 operands. We already have filters and tests, but sometimes we would like to call a Python function without and data "|" piped to it - that's what they call a clever-function. {{ get_default_port(NAME) }} can be used to retrieve the value from vyos.defaults.internal_ports[NAME] within Jinja2. We no longer need to extend the dictionary with arbitrary data retrieved from vyos.defaults, we can now simply register another clever-function to the Jinja2 backend.
2025-05-04xml: T7122: it is spelled HAProxyChristian Breunig
2025-05-04op-mode: T7122: add "show|monitor log haproxy" commandsChristian Breunig
2025-04-28haproxy: T7122: automatically reverse-proxy to certbotChristian Breunig
Automatically render HaProxy rules to reverse-proxy ACME challanges when the requested certificate was issued using ACME.
2025-04-28haproxy: T7122: do not use f'ormat strings without variableChristian Breunig
2025-04-28pki: T7122: place certbot behind reverse-proxy if cert used by haproxyChristian Breunig
If we detect that an ACME issued certificate is consumed by haproxy service, we will move the certbot webserver to localhost and a highport, to proxy the request via haproxy which is already using port 80.
2025-04-28pki: T7122: remove duplicate list definition - can be auto generatedChristian Breunig
changed_keys had the same content as the values inside the sync_translate dictionary. Infact they were both used together do defined changed CLI keys. The list for changed_keys is a list of all unique values inside the sync_translate dict.
2025-04-28T7122: remove trailing chars and add new line for every template.render() callChristian Breunig
2025-04-28haproxy: T7122: render explicit http configuration to properly bind port 80Christian Breunig
If redirect-http-to-https is set we will render a discrete onfiguration in HAproxy to properly claim port 80 in the system to detect if a service is alreadey using the port or not.
2025-04-28vyos.utils: T7122: fix IPv6 support in check_port_availability()Christian Breunig
Commit 4523e9c897b3 ("wireguard: T3763: Added check for listening port availability") added a function to check if a port is free to use or already occupied by a different running service. This has been done by trying to bind a socket to said given port. Unfortunately there is no support for IPv6 address-fdamily in both socketserver.TCPServer or socketserver.UDPServer. This must be done manually by deriving TCPServer and setting self.address_family for IPv6. The new implementation gets rid of both TCPServer and UDPServer and replaces it with a simple socket binding to a given IPv4/IPv6 address or any interface/ address if unspecified. In addition build time tests are added for the function to check for proper behavior during build time of vyos-1x.
2025-04-25Merge pull request #4475 from c-po/vxlan-T7400Christian Breunig
smoketest: T7400: fix unbound variable when checking VXLAN remote and group settings
2025-04-25image_installer: T7394: add system image raise "Error: argument of type ↵Christian Breunig
'NoneType' is not iterable" (#4471) Co-authored-by: canoziia <canoziia@qq.com>
2025-04-25smoketest: T7400: fix unbound variable when checking VXLAN remote and group ↵Christian Breunig
settings FAIL: test_vxlan_group_remote_error (__main__.VXLANInterfaceTest.test_vxlan_group_remote_error) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/libexec/vyos/tests/smoke/cli/test_interfaces_vxlan.py", line 139, in test_vxlan_group_remote_error self.assertIn('Both group and remote cannot be specified', str(exception)) AssertionError: 'Both group and remote cannot be specified' not found in '[[interfaces vxlan vxlan60]] failed\nCommit failed\n' This happens because cm variable is accessed when no longer valid. Change behavior to match common smoketest style, check ConfigError exception - but do not check exception message. Fix the error and commit again.
2025-04-25Merge pull request #4457 from l0crian1/t7358-add-offload-to-global-stateViacheslav Hletenko
firewall: T7358: add offload option to global state policy
2025-04-25image_installer: T7394: add system image raise "Error: argument of type ↵canoziia
'NoneType' is not iterable"
2025-04-24Merge pull request #4469 from KawaiiNetworks/currentDaniil Baturin
bgp: T7220: Add the option to disable enforce-first-as at peer level
2025-04-24Merge pull request #4414 from markh0338/op-fw-dyn-grpsDaniil Baturin
T7282: op-mode: show firewall group filtering and tab completion update
2025-04-24Merge pull request #4442 from srividya0208/T7316Daniil Baturin
T7316: Add MTU validation for interfaces with MTU less then 1200
2025-04-24T7220: Add the option to disable enforce-first-as at peer levelcanoziia
2025-04-23router-advert: T7380: Implement auto-ignore-prefix syntax for router ↵Ryan Zuwala
advertisements (#4463)
2025-04-23Merge pull request #4465 from MattKobayashi/T6253Christian Breunig
dhclient: T6253: Respect `no-default-route`
2025-04-23Merge pull request #4467 from c-po/ipv6-nd-fixesChristian Breunig
interface: T4627: not every interface type supports IPv6 interface-identifiers
2025-04-23interface: T4627: not every interface type supports IPv6 interface-identifiersChristian Breunig
Turns out commit b124f0b3b ("interface: T4627: support IPv6 Interface Identifier (token) for SLAAC") uncovered a wrong assumption in VyOS that every interface type in use always supports SLAAC and IPv6-ND (neighbor discovery). This is not true for WireGuard, Tunnel and VTI interfaces, thus do not provide that CLI option. In addition SLAAC support should be removed for those interface types in a future PR.
2025-04-23Merge pull request #4460 from c-po/systemd-syslogViacheslav Hletenko
syslog: T7367: ensure rsyslog is registered as default systemd syslog service
2025-04-23Merge pull request #4461 from c-po/slaac-removalViacheslav Hletenko
interface: T7375: cleanup SLAAC assigned address and default route after removing SLAAC CLI configuration
2025-04-22Merge pull request #4419 from sskaje/T5636Daniil Baturin
geoip: T5636: Add geoip for policy route/route6
2025-04-22Merge pull request #4392 from symysak/T4627Daniil Baturin
interface: T4627: support setting of IPv6 Interface Identifier(Token)
2025-04-22Merge pull request #4444 from l0crian1/T7322-fix-allowed-vlanDaniil Baturin
bridge: T7322: fix slow performance of allowed vlan
2025-04-22Merge pull request #4466 from aapostoliuk/T7383-rollingDaniil Baturin
ospf: T7383: Fixed unconfigured redistribution of nhrp into ospf
2025-04-22T6773: RFC-2136 support for Kea DHCP4 server (#4153)Alex Bukharov
2025-04-22interface: T7379: do not request SLAAC default route when only DHCPv6 is setChristian Breunig
When an interface runs in DHCPv6 only mode, there is no reason to have a default installed that was received via SLAAC. If SLAAC is needed, it should be turned on explicitly. This bug was only triggered during system boot where a DHCPv6 client address and a default route to a link-local address was shown in the system. If DHCPv6 was enabled only on an interface while VyOS was already running - no default route got installed.
2025-04-22sysctl: T7379: always disable IPv6 autoconf and accept_ra during startupChristian Breunig
2025-04-22interface: T7375: routes received via SLAAC are not cleared on exitChristian Breunig
When using SLAAC for IPv6 addresses we will also receive a default route via a RA (Router Advertisement). When we disable SLAAC on a interface the Linux Kernel does not automatically flush all addresses nor the routes received. The Kernel wait's until the addresses/prefixes/routes expire using their lifestime setting. When removing SLAAC from an interface, also remove the auto generated IPv6 address and both the default router received and the connected IP prefix of the SLAAC advertisement.
2025-04-22interface: T7375: remove superfluous "ifname = self.ifname" assignmentChristian Breunig
We can reference "self.ifname" in any Python f-ormatted string directly. No need for an interim temporary variable.
2025-04-22interface: T7375: SLAAC assigned address is not cleared when removing SLAACChristian Breunig
2025-04-22T7282: op-mode: update op-mode template build script to concatenate with ; ↵Mark Hayes
instead of &&
2025-04-22T7282: op-mode: update firewall completion paths to include all group typesMark Hayes
2025-04-22T7282: op-mode: update firewall.py for proper group filteringMark Hayes
2025-04-22ospf: T7383: Fixed unconfigured redistribution of nhrp into ospfaapostoliuk
Fixed unconfigured redistribution of nhrp into ospf.
2025-04-22dhclient: T6253: Respect `no-default-route`Matthew Kobayashi
2025-04-20Merge pull request #4462 from kumvijaya/currentChristian Breunig
T7334: pr mirror trigger workflow added with label creation permission for default github token
2025-04-20T7334: pr mirror trigger workflow added with label creation permission for ↵kumvijaya
default github token
2025-04-19T7358: add offload option to global state policyl0crian1
- Added smoketest for offload in global state policy
2025-04-18interface: T4627: support IPv6 Interface Identifier (token) for SLAACYoshiaki Suyama
Add common IPv6 CLI option (use ethernet as example): set interfaces ethernet eth0 ipv6 address interface-identifier Co-authored-by: Christian Breunig <christian@breunig.cc>
2025-04-18syslog: T7367: use generic systemd syslog.service over rsyslog.serviceChristian Breunig