[elbe-devel] [PATCH 1/1] Implement noauth for a single package repo as attribute to <url>
bage at linutronix.de
bage at linutronix.de
Wed Aug 21 10:36:13 CEST 2019
From: Johann Neuhauser <jneuhauser at dh-electronics.com>
The element <noauth> is global for all package repos.
This does decrease security if there are signed repos and for
example only one repo url requires this mechanism.
https://github.com/Linutronix/elbe/issues/220
Signed-off-by: Johann Neuhauser <jneuhauser at dh-electronics.com>
Acked-by: Bastian Germann <bage at linutronix.de>
---
elbepack/elbexml.py | 7 +++++--
elbepack/pbuilder.py | 7 +++++--
elbepack/pkgutils.py | 7 +++++--
elbepack/rfs.py | 8 +-------
elbepack/virtapt.py | 8 +-------
schema/dbsfed.xsd | 7 +++++++
6 files changed, 24 insertions(+), 20 deletions(-)
diff --git a/elbepack/elbexml.py b/elbepack/elbexml.py
index 5972600c..44f5258e 100644
--- a/elbepack/elbexml.py
+++ b/elbepack/elbexml.py
@@ -163,11 +163,14 @@ class ElbeXML(object):
if self.prj.has("mirror/url-list"):
for url in self.prj.node("mirror/url-list"):
+ noauth_url = ""
+ if url.bool_attr("noauth") and noauth is "":
+ noauth_url = "[trusted=yes] "
if url.has("binary"):
- mirror += "deb " + noauth + \
+ mirror += "deb " + noauth + noauth_url + \
url.text("binary").strip() + "\n"
if url.has("source"):
- mirror += "deb-src " + noauth + \
+ mirror += "deb-src " + noauth + noauth_url + \
url.text("source").strip() + "\n"
if self.prj.has("mirror/cdrom"):
diff --git a/elbepack/pbuilder.py b/elbepack/pbuilder.py
index 6bc2945f..a79839d1 100644
--- a/elbepack/pbuilder.py
+++ b/elbepack/pbuilder.py
@@ -137,11 +137,14 @@ def pbuilder_write_repo_hook(builddir, xml):
if xml.prj.has("noauth"):
noauth = "[trusted=yes] "
for url in xml.prj.node("mirror/url-list"):
+ noauth_url = ""
+ if url.bool_attr("noauth") and noauth is "":
+ noauth_url = "[trusted=yes] "
if url.has("binary"):
- mirror += 'echo "deb ' + noauth + \
+ mirror += 'echo "deb ' + noauth + noauth_url + \
url.text("binary").strip() + \
'" >> /etc/apt/sources.list\n'
- if url.has("raw-key") and not xml.prj.has("noauth"):
+ if url.has("raw-key") and not xml.prj.has("noauth") and not url.bool_attr("noauth"):
key = "\n".join(line.strip(" \t") for line in url.text('raw-key').splitlines()[1:-1])
mirror = mirror_script_add_key_text(mirror, key)
diff --git a/elbepack/pkgutils.py b/elbepack/pkgutils.py
index 595ecc31..0e10372e 100644
--- a/elbepack/pkgutils.py
+++ b/elbepack/pkgutils.py
@@ -35,12 +35,15 @@ def get_sources_list(prj):
if prj.node("mirror/url-list"):
for n in prj.node("mirror/url-list"):
+ noauth_url = ""
+ if n.bool_attr("noauth"):
+ noauth_url = "[trusted=yes] "
if n.has("binary"):
tmp = n.text("binary").replace("LOCALMACHINE", "10.0.2.2")
- slist += "deb %s\n" % tmp.strip()
+ slist += "deb %s\n" % noauth_url + tmp.strip()
if n.has("source"):
tmp = n.text("source").replace("LOCALMACHINE", "10.0.2.2")
- slist += "deb-src %s\n" % tmp.strip()
+ slist += "deb-src %s\n" % noauth_url + tmp.strip()
return slist
diff --git a/elbepack/rfs.py b/elbepack/rfs.py
index e12051e0..a514d105 100644
--- a/elbepack/rfs.py
+++ b/elbepack/rfs.py
@@ -283,14 +283,8 @@ class BuildEnv (object):
def import_keys(self):
if self.xml.has('project/mirror/url-list'):
- # Should we use self.xml.prj.has("noauth")???
- #
- # If so, this is related to issue #220 -
- # https://github.com/Linutronix/elbe/issues/220
- #
- # I could make a none global 'noauth' flag for mirrors
for url in self.xml.node('project/mirror/url-list'):
- if url.has('raw-key'):
+ if url.has('raw-key') and not url.bool_attr("noauth"):
key = "\n".join(line.strip(" \t") for line in url.text('raw-key').splitlines()[1:-1])
self.add_key(key)
diff --git a/elbepack/virtapt.py b/elbepack/virtapt.py
index f74facd0..f20faf37 100644
--- a/elbepack/virtapt.py
+++ b/elbepack/virtapt.py
@@ -161,14 +161,8 @@ class VirtApt(object):
def import_keys(self):
if self.xml.has('project/mirror/url-list'):
- # Should we use self.xml.prj.has("noauth")???
- #
- # If so, this is related to issue #220 -
- # https://github.com/Linutronix/elbe/issues/220
- #
- # I could make a none global 'noauth' flag for mirrors
for url in self.xml.node('project/mirror/url-list'):
- if url.has('raw-key'):
+ if url.has('raw-key') and not url.bool_attr("noauth"):
key = "\n".join(line.strip(" \t") for line in url.text('raw-key').splitlines()[1:-1])
self.add_key(key)
diff --git a/schema/dbsfed.xsd b/schema/dbsfed.xsd
index c321090b..7c31cc48 100644
--- a/schema/dbsfed.xsd
+++ b/schema/dbsfed.xsd
@@ -200,6 +200,13 @@
</element>
</all>
<attribute ref="xml:base"/>
+ <attribute name="noauth" type="boolean" use="optional">
+ <annotation>
+ <documentation>
+ Allow installation of unsigned debian packages from this repo url(s).
+ </documentation>
+ </annotation>
+ </attribute>
</complexType>
<complexType name="url-list">
--
2.20.1
More information about the elbe-devel
mailing list