Add admin.repos.* qrexec services

This is a prerequisite for QubesOS/qubes-issues#4550.
This commit is contained in:
AJ Jordan 2018-12-08 20:43:36 -05:00
parent 2ec29a4d4c
commit 888073df05
No known key found for this signature in database
GPG Key ID: A4FDB7BE12F63EC3
6 changed files with 80 additions and 0 deletions

View File

@ -0,0 +1,7 @@
## Note that policy parsing stops at the first match,
## so adding anything below "$anyvm $anyvm action" line will have no effect
## Please use a single # to start your custom comments
dom0 dom0 allow
$anyvm $anyvm deny

View File

@ -0,0 +1,7 @@
## Note that policy parsing stops at the first match,
## so adding anything below "$anyvm $anyvm action" line will have no effect
## Please use a single # to start your custom comments
dom0 dom0 allow
$anyvm $anyvm deny

View File

@ -0,0 +1,7 @@
## Note that policy parsing stops at the first match,
## so adding anything below "$anyvm $anyvm action" line will have no effect
## Please use a single # to start your custom comments
dom0 dom0 allow
$anyvm $anyvm deny

24
qubes-rpc/admin.repos.Disable Executable file
View File

@ -0,0 +1,24 @@
#!/usr/bin/python3
# Empty output indicates success; any input indicates error (probably an exception)
import dnf
import iniparse
import sys
base = dnf.Base()
base.read_all_repos()
reponame = sys.stdin.readline()
repo = base.repos[reponame]
# Loosely based on write_raw_configfile() from DNF source code,
# because that method was introduced in DNF 2.0 but Qubes dom0 has DNF 1.x.
with open(repo.repofile) as fp:
ini = iniparse.INIConfig(fp)
ini[reponame]['enabled'] = 0
with open(repo.repofile, 'w') as fp:
fp.write(str(ini))

24
qubes-rpc/admin.repos.Enable Executable file
View File

@ -0,0 +1,24 @@
#!/usr/bin/python3
# Empty output indicates success; any input indicates error (probably an exception)
import dnf
import iniparse
import sys
base = dnf.Base()
base.read_all_repos()
reponame = sys.stdin.readline()
repo = base.repos[reponame]
# Loosely based on write_raw_configfile() from DNF source code,
# because that method was introduced in DNF 2.0 but Qubes dom0 has DNF 1.x.
with open(repo.repofile) as fp:
ini = iniparse.INIConfig(fp)
ini[reponame]['enabled'] = 1
with open(repo.repofile, 'w') as fp:
fp.write(str(ini))

11
qubes-rpc/admin.repos.List Executable file
View File

@ -0,0 +1,11 @@
#!/usr/bin/python3
import dnf
base = dnf.Base()
base.read_all_repos()
for repo in base.repos.all():
l = [repo.id, repo.name, 'enabled' if repo.enabled else 'disabled']
print('\0'.join(l))