summaryrefslogtreecommitdiff
path: root/cron-jobs
diff options
context:
space:
mode:
authorJoseph Graham <joseph@fibreglass.tunachunks>2014-06-01 16:04:55 +0100
committerJoseph Graham <joseph@fibreglass.tunachunks>2014-06-01 16:04:55 +0100
commitc9ad9623c80ddf2db2a734b4a7914ab9eebd84fb (patch)
treeaedacb77c4dc1a8672b719f6fcdb83f54d75396a /cron-jobs
Added the script `make_repo_torrents' which makes torrents for all the packages.
Diffstat (limited to 'cron-jobs')
-rw-r--r--cron-jobs/make_repo_torrents81
1 files changed, 81 insertions, 0 deletions
diff --git a/cron-jobs/make_repo_torrents b/cron-jobs/make_repo_torrents
new file mode 100644
index 0000000..d3c3df6
--- /dev/null
+++ b/cron-jobs/make_repo_torrents
@@ -0,0 +1,81 @@
+#! /bin/bash
+# Copyright (C) 2014 Joseph Graham <joseph@t67.eu>
+#
+# 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 3 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 Affero 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/>.
+
+# This script depends on `mktorrent'
+
+username=$( id -un )
+
+case "${username}" in
+ repo | root )
+ true
+ ;;
+ * )
+ echo "This script must be run as repo user or root user."
+ echo "ByeBye!"
+ exit 1
+ ;;
+esac
+
+# pacman doesn't support multiple different packages of the same name,
+# so it's OK to just stuff all the torrents into a single directory.
+torrent_location='/srv/http/repo/public/torrents/'
+public_location='/srv/http/repo/public/'
+
+# Tracker announce URL
+tracker='http://t67.eu:6969/announce' # t67.eu is run by Xylon
+
+# All mirrors go here
+declare -a url_prefixes=('http://repo.parabolagnulinux.org/' 'https://parabola.goodgnus.com.ar/' 'http://mirror.yandex.ru/mirrors/parabola/' 'http://alfplayer.com/parabola/')
+
+cd "${torrent_location}"
+
+find "${public_location}" -name 'os' -type 'd' |
+while read dir
+do
+ find "${dir}" -name '*\.pkg\.tar\.xz' |
+ while read pkg
+ do
+ pkg_name="${pkg##*/}"
+
+ if [[ -h "${pkg}" ]] # check if it's a symbolic link
+ then
+ # We get the target of the symlink
+ pkg=$( readlink -f "${pkg}" )
+ fi
+
+ if ! [[ -f "${torrent_location}${pkg_name}.torrent" ]]
+ then
+ # We need to make a comma seperated list of webseeds (this is passed
+ # as a single argument to mktorrent)
+ webseeds=''
+
+ for prefix in "${url_prefixes[@]}"
+ do
+ webseeds+="${prefix}${pkg#${public_location}},"
+ done
+
+ # There should not be a random comma at the end of the webseeds
+ webseeds="${webseeds%,}"
+
+ mktorrent -a "${tracker}" "${pkg}" -w "${webseeds}" # "${torrent_location}"
+ fi
+ done
+done
+
+if [[ "${username}" == root ]]
+then
+ chown repo *
+fi