all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH dab/dab-pve-appliances] add pmg 9.0 template
@ 2025-09-30 14:51 Stoiko Ivanov
  2025-09-30 14:51 ` [pve-devel] [PATCH dab 1/1] add support for repositories, used only for template generation Stoiko Ivanov
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Stoiko Ivanov @ 2025-09-30 14:51 UTC (permalink / raw)
  To: pve-devel

While preparing a template for the upcoming trixie based pmg 9.0,
one small issue was that we install with the pmg-no-subscription
repository but remove the sources.list entry before packaging the
container-template via sed.

With deb822 sources the sed-command would become unwieldy, so instead
add 'Install-Sources' to the dab.conf configuration parser, for
sources entries, which are present for template creation, but not added
to the resulting template.

The patches for dab-pve-appliances are split in 3 for easier review, to
see which changes were actually needed - they could/should be squashed
together when applying.

one remaining issue - is that `dhcp` as network-configuration does not
work. while this is currently a general issue, for the pmg template,
our use of ifupdown2 is specific - as ifupdown2 only uses the deprecated
and unavailable isc-dhcp-client for obtaining leases.

dab:
Stoiko Ivanov (1):
  add support for repositories, used only for template generation

 PVE/DAB.pm | 31 ++++++++++++++++++++++++++++---
 dab        |  6 ++++++
 2 files changed, 34 insertions(+), 3 deletions(-)

dab-pve-appliances:
Stoiko Ivanov (3):
  add template for trixie based pmg 9.0
  pmg: trixie: purge ifupdown before installing ifupdown2
  pmg: trixie: use pmg-repository only during installation

 debian-13-trixie-pmg-9-64/Makefile        | 49 +++++++++++++++++++++++
 debian-13-trixie-pmg-9-64/dab.conf        | 15 +++++++
 debian-13-trixie-pmg-9-64/systemd-presets |  5 +++
 3 files changed, 69 insertions(+)
 create mode 100644 debian-13-trixie-pmg-9-64/Makefile
 create mode 100644 debian-13-trixie-pmg-9-64/dab.conf
 create mode 100644 debian-13-trixie-pmg-9-64/systemd-presets

-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [pve-devel] [PATCH dab 1/1] add support for repositories, used only for template generation
  2025-09-30 14:51 [pve-devel] [PATCH dab/dab-pve-appliances] add pmg 9.0 template Stoiko Ivanov
@ 2025-09-30 14:51 ` Stoiko Ivanov
  2025-09-30 15:20   ` [pve-devel] applied: " Thomas Lamprecht
  2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 1/3] add template for trixie based pmg 9.0 Stoiko Ivanov
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 9+ messages in thread
From: Stoiko Ivanov @ 2025-09-30 14:51 UTC (permalink / raw)
  To: pve-devel

One use-case are the proxmox-mail-gateway container templates, which
ship the correct enterprise-repsitory entry.

Currently the used entry is removed via `sed` during container
creation. With deb822 sources the `sed` command would become a bit
unwieldy, so just add the option to define sources which are only
used for the container preparation

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
---
 PVE/DAB.pm | 31 ++++++++++++++++++++++++++++---
 dab        |  6 ++++++
 2 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/PVE/DAB.pm b/PVE/DAB.pm
index f74d363..59397f2 100644
--- a/PVE/DAB.pm
+++ b/PVE/DAB.pm
@@ -222,7 +222,7 @@ sub read_config {
 	    chomp $res->{description};	    
 	} elsif ($rec =~ s/^([^:]+):\s*(.*\S)\s*\n//) {
 	    my ($key, $value) = (lc ($1), $2);
-	    if ($key eq 'source' || $key eq 'mirror') {
+	    if ($key eq 'source' || $key eq 'mirror' || $key eq 'install-source') {
 		push @{$res->{$key}}, $value;
 	    } else {
 		die "duplicate key '$key'\n" if defined ($res->{$key});
@@ -507,9 +507,33 @@ sub new {
 		source => $url,
 		comp => $ca,
 		suite => $su,
+		keep => 1,
 	    };
 	} else {
-	    die "syntax error in source spezification '$s'\n";
+	    die "syntax error in source specification '$s'\n";
+	}
+    }
+
+    foreach my $is (@{$config->{'install-source'}}) {
+	if ($is =~ m@^\s*((https?|ftp)://\S+)\s+(\S+)((\s+(\S+))+)$@) {
+	    my ($url, $su, $components) = ($1, $3, $4);
+	    $su =~ s/SUITE/$suite/;
+	    $components =~ s/^\s+//;
+	    $components =~ s/\s+$//;
+	    my $ca;
+	    foreach my $co (split (/\s+/, $components)) {
+		push @$ca, $co;
+	    }
+	    $ca = ['main'] if !$ca;
+
+	    push @$sources, {
+		source => $url,
+		comp => $ca,
+		suite => $su,
+		keep => 0,
+	    };
+	} else {
+	    die "syntax error in install-source specification '$is'\n";
 	}
     }
 
@@ -1380,7 +1404,8 @@ sub bootstrap {
 	mkdir "$rootdir/etc/apt/sources.list.d";
 	my $origin = lc($suiteinfo->{origin});
 	my $keyring = $suiteinfo->{keyring} or die "missing keyring for origin '$origin'";
-	my $uris = { map { $_->{source} => 1 } $self->{sources}->@* };
+	my @keep_sources = grep { $_->{keep} } $self->{sources}->@*;
+	my $uris = { map { $_->{source} => 1 } @keep_sources };
 
 	for my $uri (keys $uris->%*) {
 	    my $sources = [ grep { $_->{source} eq $uri } $self->{sources}->@* ];
diff --git a/dab b/dab
index d79afe6..c01c513 100755
--- a/dab
+++ b/dab
@@ -451,6 +451,12 @@ Note: SUITE is a variable and will be substituted.
 There are also reasonable defaults for Ubuntu. If you do not specify any source
 the defaults are used.
 
+=item B<Install-Source:> I<URL [components]>
+
+Defines a source location used only during appliance creation. It is
+not added to the sources.list entries in the resulting templates. Else behaves
+like a B<Source:> entry.
+
 =item B<Depends:> I<dependencies>
 
 Debian like package dependencies. This can be used to make sure that speific
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [pve-devel] [PATCH dab-pve-appliances 1/3] add template for trixie based pmg 9.0
  2025-09-30 14:51 [pve-devel] [PATCH dab/dab-pve-appliances] add pmg 9.0 template Stoiko Ivanov
  2025-09-30 14:51 ` [pve-devel] [PATCH dab 1/1] add support for repositories, used only for template generation Stoiko Ivanov
@ 2025-09-30 14:51 ` Stoiko Ivanov
  2025-10-01 14:12   ` [pve-devel] applied: " Thomas Lamprecht
  2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 2/3] pmg: trixie: purge ifupdown before installing ifupdown2 Stoiko Ivanov
  2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 3/3] pmg: trixie: use pmg-repository only during installation Stoiko Ivanov
  3 siblings, 1 reply; 9+ messages in thread
From: Stoiko Ivanov @ 2025-09-30 14:51 UTC (permalink / raw)
  To: pve-devel

copied from debian-12-bookworm-pmg-8-64, with the version number and
codename adapted.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
---
 debian-13-trixie-pmg-9-64/Makefile        | 49 +++++++++++++++++++++++
 debian-13-trixie-pmg-9-64/dab.conf        | 15 +++++++
 debian-13-trixie-pmg-9-64/systemd-presets |  5 +++
 3 files changed, 69 insertions(+)
 create mode 100644 debian-13-trixie-pmg-9-64/Makefile
 create mode 100644 debian-13-trixie-pmg-9-64/dab.conf
 create mode 100644 debian-13-trixie-pmg-9-64/systemd-presets

diff --git a/debian-13-trixie-pmg-9-64/Makefile b/debian-13-trixie-pmg-9-64/Makefile
new file mode 100644
index 0000000..9330588
--- /dev/null
+++ b/debian-13-trixie-pmg-9-64/Makefile
@@ -0,0 +1,49 @@
+BASEDIR:=$(shell dab basedir)
+
+CVD_FILES:=main.cvd bytecode.cvd daily.cvd safebrowsing.cvd
+
+all: info/init_ok ${CVD_FILES}
+	dab bootstrap --minimal
+	sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' ${BASEDIR}/etc/ssh/sshd_config
+	mkdir -p ${BASEDIR}/etc/systemd/system-preset
+	cp systemd-presets ${BASEDIR}/etc/systemd/system-preset/00-pve-template.preset
+	touch ${BASEDIR}/proxmox_install_mode
+	dab install \
+	    antiword \
+	    dbus \
+	    docx2txt \
+	    gpg \
+	    ifupdown2 \
+	    libcgi-pm-perl \
+	    libdbi-perl \
+	    libsasl2-modules \
+	    odt2txt \
+	    perl-openssl-defaults \
+	    poppler-utils \
+	    proxmox-mailgateway-container \
+	    tesseract-ocr \
+	    unrtf \
+	    ;
+	rm ${BASEDIR}/proxmox_install_mode
+	sed -i '/^deb.*\.proxmox\.com\/.*$$/d;$${/^$$/d;}' ${BASEDIR}/etc/apt/sources.list
+	cp ${CVD_FILES} ${BASEDIR}/var/lib/clamav/
+	dab finalize --compressor zstd-max
+
+info/init_ok: dab.conf
+	dab init
+	touch $@
+
+.PHONY: clean
+clean:
+	dab clean
+	rm -f *~
+
+.PHONY: dist-clean
+dist-clean: clean
+	dab dist-clean
+	rm -f ${CVD_FILES}
+
+${CVD_FILES}:
+	curl -L --silent --show-error --fail --time-cond $@ --user-agent "CVDUPDATE/0.3.0 (9d591f58-b430-4d0c-99b2-febb1cee0872)" -o $@.tmp https://database.clamav.net/$@
+	[ -f $@.tmp ] && mv $@.tmp $@ || true
+	if command -v sigtool > /dev/null ; then sigtool -i $@; else echo "skipping verification of $@"; fi
diff --git a/debian-13-trixie-pmg-9-64/dab.conf b/debian-13-trixie-pmg-9-64/dab.conf
new file mode 100644
index 0000000..a17a1f7
--- /dev/null
+++ b/debian-13-trixie-pmg-9-64/dab.conf
@@ -0,0 +1,15 @@
+Suite: trixie
+CacheDir: ../cache
+Source: http://ftp.debian.org/debian SUITE main contrib
+Source: http://ftp.debian.org/debian SUITE-updates main contrib
+Source: http://security.debian.org/debian-security SUITE-security main contrib
+Source: http://download.proxmox.com/debian/pmg/ SUITE pmg-no-subscription
+Architecture: amd64
+Name: proxmox-mail-gateway-9.0-standard
+Version: 9.0-beta1
+Section: mail
+Maintainer: Proxmox Support Team <support@proxmox.com>
+Infopage: https://www.proxmox.com/en/proxmox-mail-gateway/overview
+Description: Proxmox Mail Gateway 9.0
+ A full featured mail proxy for spam and virus filtering, optimized for
+ container environment.
diff --git a/debian-13-trixie-pmg-9-64/systemd-presets b/debian-13-trixie-pmg-9-64/systemd-presets
new file mode 100644
index 0000000..2711b48
--- /dev/null
+++ b/debian-13-trixie-pmg-9-64/systemd-presets
@@ -0,0 +1,5 @@
+disable clamav-clamonacc.service
+disable pg_basebackup@.timer
+disable pg_basebackup@.timer
+disable pg_dump@.timer
+disable pg_receivewal@.service
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [pve-devel] [PATCH dab-pve-appliances 2/3] pmg: trixie: purge ifupdown before installing ifupdown2
  2025-09-30 14:51 [pve-devel] [PATCH dab/dab-pve-appliances] add pmg 9.0 template Stoiko Ivanov
  2025-09-30 14:51 ` [pve-devel] [PATCH dab 1/1] add support for repositories, used only for template generation Stoiko Ivanov
  2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 1/3] add template for trixie based pmg 9.0 Stoiko Ivanov
@ 2025-09-30 14:51 ` Stoiko Ivanov
  2025-10-01 14:12   ` [pve-devel] applied: " Thomas Lamprecht
  2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 3/3] pmg: trixie: use pmg-repository only during installation Stoiko Ivanov
  3 siblings, 1 reply; 9+ messages in thread
From: Stoiko Ivanov @ 2025-09-30 14:51 UTC (permalink / raw)
  To: pve-devel

without this there is not working networking in the resulting
container:
* ifupdown is in state 'ic'
* `ifup` and `ifdown` do not exist on the system.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
---
 debian-13-trixie-pmg-9-64/Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/debian-13-trixie-pmg-9-64/Makefile b/debian-13-trixie-pmg-9-64/Makefile
index 9330588..35dc127 100644
--- a/debian-13-trixie-pmg-9-64/Makefile
+++ b/debian-13-trixie-pmg-9-64/Makefile
@@ -8,6 +8,7 @@ all: info/init_ok ${CVD_FILES}
 	mkdir -p ${BASEDIR}/etc/systemd/system-preset
 	cp systemd-presets ${BASEDIR}/etc/systemd/system-preset/00-pve-template.preset
 	touch ${BASEDIR}/proxmox_install_mode
+	dab exec apt purge -y ifupdown
 	dab install \
 	    antiword \
 	    dbus \
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [pve-devel] [PATCH dab-pve-appliances 3/3] pmg: trixie: use pmg-repository only during installation
  2025-09-30 14:51 [pve-devel] [PATCH dab/dab-pve-appliances] add pmg 9.0 template Stoiko Ivanov
                   ` (2 preceding siblings ...)
  2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 2/3] pmg: trixie: purge ifupdown before installing ifupdown2 Stoiko Ivanov
@ 2025-09-30 14:51 ` Stoiko Ivanov
  2025-10-01 14:12   ` [pve-devel] applied: " Thomas Lamprecht
  3 siblings, 1 reply; 9+ messages in thread
From: Stoiko Ivanov @ 2025-09-30 14:51 UTC (permalink / raw)
  To: pve-devel

This patch depends on the changes for dab, which enable providing a
debian repository only for installation, without it being added to the
resulting container.

this seemed a bit more elegant, than the sed-script for removing
one deb822 entry in a file with multiple entries.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
---
 debian-13-trixie-pmg-9-64/Makefile | 1 -
 debian-13-trixie-pmg-9-64/dab.conf | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/debian-13-trixie-pmg-9-64/Makefile b/debian-13-trixie-pmg-9-64/Makefile
index 35dc127..ab0bc6a 100644
--- a/debian-13-trixie-pmg-9-64/Makefile
+++ b/debian-13-trixie-pmg-9-64/Makefile
@@ -26,7 +26,6 @@ all: info/init_ok ${CVD_FILES}
 	    unrtf \
 	    ;
 	rm ${BASEDIR}/proxmox_install_mode
-	sed -i '/^deb.*\.proxmox\.com\/.*$$/d;$${/^$$/d;}' ${BASEDIR}/etc/apt/sources.list
 	cp ${CVD_FILES} ${BASEDIR}/var/lib/clamav/
 	dab finalize --compressor zstd-max
 
diff --git a/debian-13-trixie-pmg-9-64/dab.conf b/debian-13-trixie-pmg-9-64/dab.conf
index a17a1f7..019933e 100644
--- a/debian-13-trixie-pmg-9-64/dab.conf
+++ b/debian-13-trixie-pmg-9-64/dab.conf
@@ -3,7 +3,7 @@ CacheDir: ../cache
 Source: http://ftp.debian.org/debian SUITE main contrib
 Source: http://ftp.debian.org/debian SUITE-updates main contrib
 Source: http://security.debian.org/debian-security SUITE-security main contrib
-Source: http://download.proxmox.com/debian/pmg/ SUITE pmg-no-subscription
+Install-Source: http://download.proxmox.com/debian/pmg/ SUITE pmg-no-subscription
 Architecture: amd64
 Name: proxmox-mail-gateway-9.0-standard
 Version: 9.0-beta1
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [pve-devel] applied:  [PATCH dab 1/1] add support for repositories, used only for template generation
  2025-09-30 14:51 ` [pve-devel] [PATCH dab 1/1] add support for repositories, used only for template generation Stoiko Ivanov
@ 2025-09-30 15:20   ` Thomas Lamprecht
  0 siblings, 0 replies; 9+ messages in thread
From: Thomas Lamprecht @ 2025-09-30 15:20 UTC (permalink / raw)
  To: pve-devel, Stoiko Ivanov

On Tue, 30 Sep 2025 16:51:27 +0200, Stoiko Ivanov wrote:
> One use-case are the proxmox-mail-gateway container templates, which
> ship the correct enterprise-repsitory entry.
> 
> Currently the used entry is removed via `sed` during container
> creation. With deb822 sources the `sed` command would become a bit
> unwieldy, so just add the option to define sources which are only
> used for the container preparation
> 
> [...]

Applied, thanks!

[1/1] add support for repositories, used only for template generation
      commit: 4af804657404dce64f526d242583ea812c3daa3d


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [pve-devel] applied: [PATCH dab-pve-appliances 1/3] add template for trixie based pmg 9.0
  2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 1/3] add template for trixie based pmg 9.0 Stoiko Ivanov
@ 2025-10-01 14:12   ` Thomas Lamprecht
  0 siblings, 0 replies; 9+ messages in thread
From: Thomas Lamprecht @ 2025-10-01 14:12 UTC (permalink / raw)
  To: pve-devel, Stoiko Ivanov

On Tue, 30 Sep 2025 16:51:28 +0200, Stoiko Ivanov wrote:
> copied from debian-12-bookworm-pmg-8-64, with the version number and
> codename adapted.
> 
> 

Applied, thanks!

[1/3] add template for trixie based pmg 9.0
      commit: cf1b19b03a81819b0a9f1576ff6b51b9a674fe90


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [pve-devel] applied: [PATCH dab-pve-appliances 2/3] pmg: trixie: purge ifupdown before installing ifupdown2
  2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 2/3] pmg: trixie: purge ifupdown before installing ifupdown2 Stoiko Ivanov
@ 2025-10-01 14:12   ` Thomas Lamprecht
  0 siblings, 0 replies; 9+ messages in thread
From: Thomas Lamprecht @ 2025-10-01 14:12 UTC (permalink / raw)
  To: pve-devel, Stoiko Ivanov

On Tue, 30 Sep 2025 16:51:29 +0200, Stoiko Ivanov wrote:
> without this there is not working networking in the resulting
> container:
> * ifupdown is in state 'ic'
> * `ifup` and `ifdown` do not exist on the system.
> 
> 

Applied, thanks!

[2/3] pmg: trixie: purge ifupdown before installing ifupdown2
      commit: 21019c5bc636cdd140ea16f2c2ee0bf1d0383b55


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [pve-devel] applied: [PATCH dab-pve-appliances 3/3] pmg: trixie: use pmg-repository only during installation
  2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 3/3] pmg: trixie: use pmg-repository only during installation Stoiko Ivanov
@ 2025-10-01 14:12   ` Thomas Lamprecht
  0 siblings, 0 replies; 9+ messages in thread
From: Thomas Lamprecht @ 2025-10-01 14:12 UTC (permalink / raw)
  To: pve-devel, Stoiko Ivanov

On Tue, 30 Sep 2025 16:51:30 +0200, Stoiko Ivanov wrote:
> This patch depends on the changes for dab, which enable providing a
> debian repository only for installation, without it being added to the
> resulting container.
> 
> this seemed a bit more elegant, than the sed-script for removing
> one deb822 entry in a file with multiple entries.
> 
> [...]

Applied, thanks!

[3/3] pmg: trixie: use pmg-repository only during installation
      commit: 0da8df9c809290f23b96eff7f7cb8ad4fab43a82


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-10-01 14:13 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-09-30 14:51 [pve-devel] [PATCH dab/dab-pve-appliances] add pmg 9.0 template Stoiko Ivanov
2025-09-30 14:51 ` [pve-devel] [PATCH dab 1/1] add support for repositories, used only for template generation Stoiko Ivanov
2025-09-30 15:20   ` [pve-devel] applied: " Thomas Lamprecht
2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 1/3] add template for trixie based pmg 9.0 Stoiko Ivanov
2025-10-01 14:12   ` [pve-devel] applied: " Thomas Lamprecht
2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 2/3] pmg: trixie: purge ifupdown before installing ifupdown2 Stoiko Ivanov
2025-10-01 14:12   ` [pve-devel] applied: " Thomas Lamprecht
2025-09-30 14:51 ` [pve-devel] [PATCH dab-pve-appliances 3/3] pmg: trixie: use pmg-repository only during installation Stoiko Ivanov
2025-10-01 14:12   ` [pve-devel] applied: " Thomas Lamprecht

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal