summaryrefslogtreecommitdiff
path: root/mail-client/drac/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /mail-client/drac/files
reinit the tree, so we can have metadata
Diffstat (limited to 'mail-client/drac/files')
-rw-r--r--mail-client/drac/files/drac_rotate99
-rw-r--r--mail-client/drac/files/dracd.rc620
2 files changed, 119 insertions, 0 deletions
diff --git a/mail-client/drac/files/drac_rotate b/mail-client/drac/files/drac_rotate
new file mode 100644
index 000000000000..45cce3a4dc4d
--- /dev/null
+++ b/mail-client/drac/files/drac_rotate
@@ -0,0 +1,99 @@
+#!/bin/bash
+
+usage="[/path/to/real_file.db [/path/to/link_file.db]] [--debug] [--verbose]"
+help="
+A DRAC-enabled MTA performs better by using a seldomly, instead of
+constantly changing, access database. This script creates a link
+to a snapshotted database which the MTA can use. It is designed
+to run every minute from cron. Here is an example cron configuration:
+
+ * * * * * $(basename "$0")
+"
+
+for i in $* ; do
+ case "${i}" in
+ --verbose | -verbose | -v | --debug | -debug | -d)
+ debug=1
+ ;;
+ --usage | -usage | -u )
+ echo "usage: $(basename "$0") ${usage}"
+ exit 1
+ ;;
+ --help | -help | -h)
+ echo "${help}"
+ echo "usage: $(basename "$0") ${usage}"
+ echo
+ exit 1
+ ;;
+ *)
+ args[${#args}]="${i}"
+ ;;
+ esac
+done
+
+debug_print() {
+ if [ -n "${debug}" ] ; then
+ if [ -n "$2" ] ; then
+ echo -n "$1 ... "
+ else
+ echo "$1"
+ fi
+ fi
+}
+
+check_result() {
+ if [ "$?" -ne 0 ] ; then
+ debug_print
+ if [ -n "$1" ] ; then
+ echo "$(basename "$0"): $1, exiting ..."
+ else
+ echo "$(basename "$0"): exiting ..."
+ fi
+ exit 1
+ fi
+}
+
+debug_print "finding current minute" "1"
+min="$(date '+%-M')" && \
+[ -n "${min}" ]
+check_result "can't determine current minute"
+debug_print "success! (${min})"
+
+debug_print "finding drac database file" "1"
+real="${args[0]:-/var/lib/drac/drac.db}" && \
+[ -n "${real}" -a -f "${real}" ]
+check_result "can't find drac database file"
+debug_print "success! (${real})"
+
+debug_print "setting drac link file" "1"
+link="${args[1]:-/var/lib/drac/drac_link.db}" && \
+[ -n "${link}" -a -d "$(dirname "${link}")" ]
+check_result "can't set drac link file"
+debug_print "success! (${link})"
+
+debug_print "finding new drac database" "1"
+new="${real}$(( ${min} % 3 ))" && \
+[ "${new}" != "${real}" ]
+check_result "can't set new drac database"
+debug_print "success! (${new})"
+
+debug_print "finding old drac database" "1"
+old="${real}$(( (${min} + 1) % 3 ))" && \
+[ "${old}" != "${real}" -a "${old}" != "${new}" ]
+check_result "can't set old drac database"
+debug_print "success! (${old})"
+
+debug_print "creating new drac database" "1"
+cp "${real}" "${new}"
+check_result "can't create new drac database"
+debug_print "success! ($(basename "${real}") -> $(basename "${new}"))"
+
+debug_print "linking new drac database" "1"
+ln -sf "${new}" "${link}"
+check_result "can't link new drac database"
+debug_print "success! ($(basename "${new}") -> $(basename "${link}"))"
+
+debug_print "removing old drac database" "1"
+rm -f "${old}"
+check_result "can't remove old drac database"
+debug_print "success! (${old})"
diff --git a/mail-client/drac/files/dracd.rc6 b/mail-client/drac/files/dracd.rc6
new file mode 100644
index 000000000000..fb8e2f109d53
--- /dev/null
+++ b/mail-client/drac/files/dracd.rc6
@@ -0,0 +1,20 @@
+#!/sbin/openrc-run
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+depend() {
+ need net portmap
+}
+
+start() {
+ ebegin "Starting dracd"
+ start-stop-daemon --start --quiet --exec /usr/sbin/dracd \
+ -- -i -e 5 /var/lib/drac/drac.db
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping dracd"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/dracd
+ eend $?
+}