From 994f5e3e59136dd5e1fca05e3050f2a3a36a7995 Mon Sep 17 00:00:00 2001
From: Morten Linderud <morten@linderud.pw>
Date: Thu, 27 Jan 2022 20:07:52 +0100
Subject: [PATCH] debuginfod: Add package listing

Displays packages

https://debuginfod.archlinux.org/packages/

Signed-off-by: Morten Linderud <morten@linderud.pw>
---
 roles/debuginfod/files/packagelist.service |  6 ++++++
 roles/debuginfod/files/packagelist.timer   | 10 ++++++++++
 roles/debuginfod/tasks/main.yml            | 12 ++++++++++++
 roles/debuginfod/templates/nginx.d.conf.j2 |  8 ++++++++
 4 files changed, 36 insertions(+)
 create mode 100644 roles/debuginfod/files/packagelist.service
 create mode 100644 roles/debuginfod/files/packagelist.timer

diff --git a/roles/debuginfod/files/packagelist.service b/roles/debuginfod/files/packagelist.service
new file mode 100644
index 000000000..4935b10b0
--- /dev/null
+++ b/roles/debuginfod/files/packagelist.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=Synchronize package list
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/bash -c "find /srv/ftp/pool/*-debug/ -type f -not -name *.sig > /srv/http/debuginfod/index.html"
diff --git a/roles/debuginfod/files/packagelist.timer b/roles/debuginfod/files/packagelist.timer
new file mode 100644
index 000000000..d54c1a944
--- /dev/null
+++ b/roles/debuginfod/files/packagelist.timer
@@ -0,0 +1,10 @@
+[Unit]
+Description=Sync package lists every hour
+
+[Timer]
+OnCalendar=hourly
+AccuracySec=1m
+Persistent=true
+
+[Install]
+WantedBy=timers.target
diff --git a/roles/debuginfod/tasks/main.yml b/roles/debuginfod/tasks/main.yml
index 2dd590c01..b06d48772 100644
--- a/roles/debuginfod/tasks/main.yml
+++ b/roles/debuginfod/tasks/main.yml
@@ -16,6 +16,18 @@
   notify:
     - reload debuginfod
 
+- name: create http directory for debuginfod website files
+  file: path=/srv/http/debuginfod state=directory owner=root group=root mode=0755
+
+- name: install packagelist units
+  copy: src={{ item }} dest=/etc/systemd/system/{{ item }} owner=root group=root mode=0644
+  loop:
+    - packagelist.timer
+    - packagelist.service
+
+- name: start and enable packagelist.timer
+  service: name=packagelist.timer enabled=yes state=started
+
 - name: make nginx log dir
   file: path=/var/log/nginx/{{ debuginfod_domain }} state=directory owner=root group=root mode=0755
 
diff --git a/roles/debuginfod/templates/nginx.d.conf.j2 b/roles/debuginfod/templates/nginx.d.conf.j2
index 483fff4b6..aa98df6e9 100644
--- a/roles/debuginfod/templates/nginx.d.conf.j2
+++ b/roles/debuginfod/templates/nginx.d.conf.j2
@@ -28,8 +28,16 @@ server {
     ssl_certificate_key  /etc/letsencrypt/live/{{ debuginfod_domain }}/privkey.pem;
     ssl_trusted_certificate /etc/letsencrypt/live/{{ debuginfod_domain }}/chain.pem;
 
+    root  /srv/http/debuginfod;
+    index index.html;
+
     location / {
         proxy_set_header X-Forwarded-For $remote_addr;
         proxy_pass http://127.0.0.1:8002;
     }
+
+    location /packages {
+        default_type "text/plain";
+        alias /srv/http/debuginfod/;
+    }
 }
-- 
GitLab