summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2017-02-04 23:21:06 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2017-02-04 23:46:19 -0500
commit35750d39f0026ac744206eaaf311e749f9a0e4ad (patch)
treee67d320b35d081a2767c8b4cf1b85da46d078ac1
parentd570030d25ffba490837499d250587da1ac29dec (diff)
Add a parabolaweb-reporead-rsync tool.
-rw-r--r--Makefile2
-rw-r--r--parabolaweb-reporead-rsync.in33
-rw-r--r--parabolaweb-reporead-rsync.service.in8
-rw-r--r--parabolaweb.conf5
4 files changed, 48 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index f56ded4..38af68d 100644
--- a/Makefile
+++ b/Makefile
@@ -25,9 +25,11 @@ include $(topsrcdir)/build-aux/Makefile.head.mk
targets = \
$(sbindir)/parabolaweb-changepassword \
$(sbindir)/parabolaweb-reporead-inotify \
+ $(sbindir)/parabolaweb-reporead-rsync \
$(sbindir)/parabolaweb-update \
$(pkglibexecdir)/parabolaweb-changepassword.real \
$(systemddir)/parabolaweb-reporead-inotify.service \
+ $(systemddir)/parabolaweb-reporead-rsync.service \
$(uwsgidir)/parabolaweb.ini
files.out.all = depends.txt $(filter-out $(files.src.src),$(notdir $(targets))) parabolaweb.conf
diff --git a/parabolaweb-reporead-rsync.in b/parabolaweb-reporead-rsync.in
new file mode 100644
index 0000000..f8f54a8
--- /dev/null
+++ b/parabolaweb-reporead-rsync.in
@@ -0,0 +1,33 @@
+#!/bin/bash -e
+
+# Copyright (c) 2012-2013, 2017 Luke Shumaker <lukeshu@sbcglobal.net>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. @pkgconffile@
+
+[[ -e "${WEBDIR}/manage.py" ]]
+[[ $# -eq 0 ]]
+
+sudo -u "${WEBUSER:-$USER}" rsync -v --no-motd -mrtlH --no-p \
+ --include='*/' --include='*'.files,.tar.gz --exclude='*' \
+ --delete-after "$RSYNCSRV" "$RSYNCDIR/"
+
+r=0
+find "$RSYNCDIR" -name '*.files.tar.gz' -not -name '.*' | while read -r filename; do
+ dir="${filename%/*.files.tar.gz}"
+ arch="${dir##*/}"
+ sudo -u "${WEBUSER:-$USER}" python2 "${WEBDIR}/manage.py" reporead "$arch" "$filename" || r=$?
+done
+exit $r
diff --git a/parabolaweb-reporead-rsync.service.in b/parabolaweb-reporead-rsync.service.in
new file mode 100644
index 0000000..dde3287
--- /dev/null
+++ b/parabolaweb-reporead-rsync.service.in
@@ -0,0 +1,8 @@
+[Unit]
+Requires=postgresql.service
+After=postgresql.service
+Description=ParabolaWeb rsync reporead batch job
+
+[Service]
+Type=oneshot
+ExecStart=@sbindir@/parabolaweb-reporead-rsync
diff --git a/parabolaweb.conf b/parabolaweb.conf
index 07952a9..441e1d1 100644
--- a/parabolaweb.conf
+++ b/parabolaweb.conf
@@ -7,4 +7,9 @@ GITURL='git://projects.parabola.nu/parabolaweb.git#branch=master'
RUNMAKE='pacman -Q parabolaweb-dev'
+# reporead-inotify
INOTIFYARGS=('/srv/repo/main/%(repo)s/os/%(arch)s/')
+
+# reporead-rsync
+RSYNCSRV=rsync://repo.parabola.nu:875/repos/
+RSYNCDIR=/srv/http/www.parabola.nu/repo