summaryrefslogtreecommitdiffstats
path: root/abs/extra-testing/autofs
diff options
context:
space:
mode:
authorCecil Hugh Watson <knoppmyth@gmail.com>2009-03-29 04:17:30 (GMT)
committerCecil Hugh Watson <knoppmyth@gmail.com>2009-03-29 04:17:30 (GMT)
commitbdc2bbbbc402a76744ff8960842bd150e25e1bdc (patch)
tree0def40e0c600703663ff7480bf664ada915761d1 /abs/extra-testing/autofs
parent39770dd14dbaace8af5c81cd59adfdcf57f30c05 (diff)
downloadlinhes_pkgbuild-bdc2bbbbc402a76744ff8960842bd150e25e1bdc.zip
linhes_pkgbuild-bdc2bbbbc402a76744ff8960842bd150e25e1bdc.tar.gz
linhes_pkgbuild-bdc2bbbbc402a76744ff8960842bd150e25e1bdc.tar.bz2
Initial inclusion of autofs.
Diffstat (limited to 'abs/extra-testing/autofs')
-rw-r--r--abs/extra-testing/autofs/PKGBUILD48
-rw-r--r--abs/extra-testing/autofs/auto.master7
-rw-r--r--abs/extra-testing/autofs/auto.misc9
-rw-r--r--abs/extra-testing/autofs/auto.net29
-rw-r--r--abs/extra-testing/autofs/autofs389
-rw-r--r--abs/extra-testing/autofs/autofs.conf.d5
6 files changed, 487 insertions, 0 deletions
diff --git a/abs/extra-testing/autofs/PKGBUILD b/abs/extra-testing/autofs/PKGBUILD
new file mode 100644
index 0000000..1bc5435
--- /dev/null
+++ b/abs/extra-testing/autofs/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Dale Blount <dale@archlinux.org>
+# Contributor: Manolis Tzanidakis
+
+pkgname=autofs
+pkgver=4.1.4
+pkgrel=4
+pkgdesc="A kernel-based automounter for Linux."
+arch=(i686 x86_64)
+url="ftp://ftp.kernel.org/pub/linux/daemons/autofs"
+depends=('libldap')
+backup=(etc/autofs/auto.master etc/conf.d/autofs)
+source=($url/v4/${pkgname}-${pkgver}.tar.bz2
+ ${pkgname}
+ ${pkgname}.conf.d
+ auto.master
+ auto.misc
+ auto.net)
+md5sums=('7e3949114c00665b4636f0c318179657' '80b77182aa957646a2074433d3890518'\
+ 'ddd69346754419faee15fc4c7edeb8b8' '0543a0d172eaec300e8d08708440dd4b'\
+ '0be409ef0cdf0255ce701ed4ba9e46b5' 'e4d945d63abc0488a47a5e2a750e8c3b')
+
+build() {
+ export MAKEFLAGS="-j1"
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ /bin/sed -i "s:-O3 -fomit-frame-pointer -Wall:${CFLAGS}:" \
+ Makefile.rules
+ /bin/sed -i "s:SUBDIRS = lib daemon modules man samples:SUBDIRS = lib daemon modules man:" \
+ Makefile.rules
+ ./configure --prefix=/usr --sysconfdir=/etc/autofs
+ /usr/bin/make || return 1
+ /usr/bin/make INSTALLROOT=${startdir}/pkg install
+
+ local conf_file
+ for conf_file in auto.{master,misc}; do
+ /bin/install -D -m 644 ${startdir}/$conf_file \
+ ${startdir}/pkg/etc/autofs/$conf_file
+ done
+
+ /bin/install -m 755 ${startdir}/auto.net \
+ ${startdir}/pkg/etc/autofs/auto.net
+ /bin/sed -i "s:/etc:/etc/autofs:g" \
+ ${startdir}/pkg/usr/man/man5/auto.master.5
+ /bin/install -D -m 755 ${startdir}/autofs ${startdir}/pkg/etc/rc.d/autofs
+ /bin/install -D -m 644 ${startdir}/autofs.conf.d \
+ ${startdir}/pkg/etc/conf.d/autofs
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/abs/extra-testing/autofs/auto.master b/abs/extra-testing/autofs/auto.master
new file mode 100644
index 0000000..faa42c9
--- /dev/null
+++ b/abs/extra-testing/autofs/auto.master
@@ -0,0 +1,7 @@
+# Sample auto.master file
+# Format of this file:
+# mountpoint map options
+# For details of the format look at autofs(5).
+
+/var/autofs/misc /etc/autofs/auto.misc
+/var/autofs/net /etc/autofs/auto.net
diff --git a/abs/extra-testing/autofs/auto.misc b/abs/extra-testing/autofs/auto.misc
new file mode 100644
index 0000000..e7714bd
--- /dev/null
+++ b/abs/extra-testing/autofs/auto.misc
@@ -0,0 +1,9 @@
+# This is an automounter map and it has the following format
+# key [ -mount-options-separated-by-comma ] location
+# Details may be found in the autofs(5) manpage
+
+kernel -ro ftp.kernel.org:/pub/linux
+boot -fstype=ext2 :/dev/hda1
+removable -fstype=ext2 :/dev/hdd
+cd -fstype=iso9660,ro :/dev/hdc
+floppy -fstype=auto :/dev/fd0
diff --git a/abs/extra-testing/autofs/auto.net b/abs/extra-testing/autofs/auto.net
new file mode 100644
index 0000000..20861d1
--- /dev/null
+++ b/abs/extra-testing/autofs/auto.net
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# $Id: auto.net,v 1.1 2003/11/15 15:40:14 manolis Exp $
+
+# Look at what a host is exporting to determine what we can mount.
+# This is very simple, but it appears to work surprisingly well
+
+key="$1"
+
+# add "nosymlink" here if you want to suppress symlinking local filesystems
+# Note: "nonstrict" is now set by default, remove it if you don't want it.
+opts="-fstype=nfs,hard,intr,nodev,nosuid,nonstrict"
+
+# Showmount comes in a number of names and varieties. "showmount" is
+# typically an older version which accepts the '--no-headers' flag
+# but ignores it. "kshowmount" is the newer version installed with knfsd,
+# which both accepts and acts on the '--no-headers' flag.
+#SHOWMOUNT="kshowmount --no-headers -e $key"
+#SHOWMOUNT="showmount -e $key | tail +2"
+
+# Newer distributions get this right
+SHOWMOUNT="/usr/sbin/showmount --no-headers -e $key"
+
+$SHOWMOUNT | LC_ALL=C sort +0 | \
+ awk -v key="$key" -v opts="$opts" -- '
+ BEGIN { ORS=""; first=1 }
+ { if (first) { print opts; first=0 }; print " \\\n\t" $1, key ":" $1 }
+ END { if (!first) print "\n"; else exit 1 }
+ '
diff --git a/abs/extra-testing/autofs/autofs b/abs/extra-testing/autofs/autofs
new file mode 100644
index 0000000..83b0303
--- /dev/null
+++ b/abs/extra-testing/autofs/autofs
@@ -0,0 +1,389 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+# source application-specific settings
+[ -f /etc/conf.d/autofs ] && . /etc/conf.d/autofs
+
+DAEMON=/usr/sbin/automount
+
+if [ ! -z "$TIMEOUT" ]; then
+ daemonoptions="--timeout=$TIMEOUT $daemonoptions"
+fi
+
+# Extract the schemes from /etc/nsswitch.conf
+# (function derived from RedHat)
+function getschemes()
+{
+ grep ^automount: /etc/nsswitch.conf | sed -e 's/^.*://' -e 's/\[.*\]/ /g'
+}
+
+# Process the schemes found in /etc/nsswitch.conf
+# (function derived from RedHat, with some modifications)
+function getrawmounts()
+{
+ for scheme in `getschemes` ; do
+ case "$scheme" in
+ files)
+ if [ -z "$filescheme" ] ; then
+ if getmounts_file /etc/autofs/auto.master; then
+ filescheme=1 # success
+ else
+ filescheme=0 # failure
+ fi
+ export filescheme
+ fi
+ ;;
+ nis)
+ if [ -z "$nisscheme" ] ; then
+ if getnismounts auto.master; then
+ nisscheme=1 # success
+ else
+ nisscheme=0 # failure
+ fi
+ export nisscheme
+ fi
+ ;;
+ ldap*)
+ if [ -z "$ldapscheme" ] ; then
+ if getldapmounts; then
+ ldapscheme=1 # success
+ else
+ ldapscheme=0 # failure
+ fi
+ export ldapscheme
+ fi
+ ;;
+ esac
+ done
+
+ if [ -z "$filescheme" -a -z "$nisscheme" -a -z "$ldapscheme" ]; then
+ # nothing configured in /etc/nsswitch.conf, fall back to old behaviour
+ if ! getmounts_file /etc/autofs/auto.master; then
+ if ! getnismounts auto.master; then
+ if ! getldapmounts; then
+ echo "no autofs mounts configured!" 1>&2
+ fi
+ fi
+ fi
+ else
+ if [ ! \( "$filescheme" == "1" -o "$nisscheme" == "1" -o "$ldapscheme" == "1" \) ]; then
+ # all schemes found in /etc/nsswitch.conf have failed
+ echo "no autofs mounts configured!" 1>&2
+ fi
+ fi
+}
+
+# This function will build a list of automount commands to execute in
+# order to activate all the mount points. It is used to figure out
+# the difference of automount points in case of a reload
+function getmounts()
+{
+ getrawmounts
+}
+
+function getmounts_file()
+{
+ # Check for local maps to be loaded
+ local map="$1"
+ shift
+ if [ -f "$map" ]; then
+ cat "$map" | sed -e '/^#/d' -e '/^$/d' | process_master_file
+ else
+ return 1
+ fi
+}
+
+function process_master_file()
+{
+ local line_options
+ local daemon_options
+ line_options="$@" # from `+auto.master <line_options>' in /etc/autofs/auto.master
+
+ while read dir map first_option options; do
+ all_options="$first_option $options"
+
+ case "$dir" in
+ +*)
+ # note: $map contains options instead of a map
+ getnismounts "${dir/+/}" "$line_options" "$map" "$all_options"
+ continue;
+ ;;
+ '/-')
+ # ignore (not supported) direct maps
+ continue;
+ ;;
+ esac
+
+ if [ ! -z "$dir" -a ! -z "$map" -a x`echo "$map" | cut -c1` != 'x-' ]; then
+ type=""
+ # Break up the maptype and map, if the map type is specified
+ maptype=`echo $map | cut -f1 -d:`
+ if [ "$maptype" != "$map" ]; then
+ # map has form <maptype>:<map>
+ type=$maptype
+ map=`echo $map | cut -f2- -d:`
+ else
+ # special handling of maps
+ case "$map" in
+ hesiod|userhome)
+ type=$map
+ map=""
+ ;;
+ ldap)
+ # /<mountpoint> ldap <ldap data> <options>
+ type=ldap
+
+ # extract LDAP data
+ map="$first_option"
+ all_options=$options
+ ;;
+ /*)
+ # map is absolute path
+ if [ -x $map ]; then
+ type=program
+ elif [ -f $map ]; then
+ type=file
+ else
+ # invalid absolute path, ignoring
+ type=""
+ fi
+ ;;
+ !*)
+ # map is executable file
+ type=program
+ map="${map/!/}"
+ ;;
+ *)
+ # map is relative path or empty
+ if [ ! -z "$map" ]; then
+ # map is relative path
+ if [ -x /etc/autofs/$map ]; then
+ type=program
+ map=/etc/autofs/$map
+ elif [ -f /etc/autofs/$map ]; then
+ type=file
+ map=/etc/autofs/$map
+ else
+ type=yp
+ fi
+ else
+ # map is empty, ignoring
+ type=""
+ fi
+ ;;
+ esac
+ fi
+
+ if [ "$type" ]; then
+ options="$line_options $all_options"
+
+ daemon_options=`munge_options daemon $daemonoptions $options`
+ options=`munge_options mount $options`
+
+ echo "$DAEMON $daemon_options -- $dir $type $map $localoptions $options" | sed -e 's/ */ /g'
+ fi
+ fi
+ done
+}
+
+function getnismounts()
+{
+ # Check for YellowPage maps to be loaded
+ local map="$1"
+ shift
+ if [ -e /usr/bin/ypcat ] && [ `ypcat -k "$map" 2>/dev/null | wc -l` -gt 0 ]; then
+ # exclude references to other nis maps (avoid self-references -> inf. loop)
+ # - e.g. a map may look like:
+ # $ ypcat -k auto.master
+ # +auto_master # <- = auto.master = erk!
+ # /net -hosts -nosuid,nobrowse
+ # /home auto_home -nobrowse
+ ypcat -k "$map" | grep -v '^+' | process_master_file "$@"
+ else
+ return 1
+ fi
+}
+
+function getldapmounts() {
+ if [ ! -x /usr/bin/ldapsearch -o -z "$LDAPURI" -o -z "$LDAPBASE" ]; then
+ return 1
+ fi
+
+ # TODO: Doesn't yet work for LDIF output where lines are continued on the
+ # next line (starting with space or tab). (See ldif(5))
+
+ ldapsearch -LLL -H $LDAPURI -b $LDAPBASE -x \
+ '(objectClass=automount)' cn automountInformation 2>/dev/null \
+ | while read attr val; do
+ case "$attr" in
+ dn:)
+ node=""
+ args=""
+ ;;
+ cn:)
+ node=$val
+ ;;
+ automountInformation:)
+ args=$val
+ ;;
+ *)
+ ;;
+ esac
+ if [ -n "$node" -a -n "$args" ]; then
+ echo "$node $args" | process_master_file "$@"
+ node=""
+ args=""
+ fi
+ done
+}
+
+# List active mounts
+function active()
+{
+ ps ax|grep "[0-9]:[0-9][0-9] $DAEMON " |
+ while read pid tt stat time command; do
+ echo $command
+ done
+}
+
+# Status lister.
+function status()
+{
+ echo "Configured Mount Points:"
+ echo "------------------------"
+ getmounts | sed 's/ -- / /'
+ echo ""
+ echo "Active Mount Points:"
+ echo "--------------------"
+ active
+}
+
+function munge_options()
+{
+ local which="$1"
+ shift
+
+ o="$@"
+ # bring `timeout' option in suitable format
+ o=`echo "$o" | sed -e 's/\(\(-\|, *\)t\(imeout\)\?\) \+/\1=/g'`
+ # remove dashes in front of options
+ o=`echo "$o" | sed -e 's/^-\+//' -e 's/ -\+/ /' -e 's/,-\+/,/g'`
+
+ echo "$o" | awk -v which="$which" '
+BEGIN {
+ RS="[, \n]"
+ FS="="
+ daemon_opts[ "timeout" ] = "timeout"
+ daemon_opts[ "t" ] = "timeout"
+}
+{
+ if ( $0 ~ /^$/ )
+ next
+ if ( $1 in daemon_opts ) {
+ daemon[ daemon_opts[ $1 ] ] = $2
+ } else if ($1 ~ /^D.+/) {
+ defines[ $1 ] = $2
+ } else {
+ mount[NR] = $0
+ }
+}
+END {
+ if ( which ~ "^daemon$" ) {
+ if ( "timeout" in daemon ) {
+ printf "--timeout=%s\n", daemon["timeout"]
+ }
+ } else {
+ for ( a in defines ) {
+ printf "-%s=%s ", a, defines[a]
+ }
+ for ( a in mount ) {
+ if ( length( out ) )
+ out=out "," mount[a]
+ else
+ out=mount[a]
+ }
+ printf "%s\n", out
+ }
+}
+'
+}
+
+function get_command_from_pid()
+{
+ ps ax | grep "[0-9]:[0-9][0-9] $DAEMON " | (
+ while read pid tt stat time command; do
+ if [ "$pid" = "$1" ] ; then
+ echo `echo "$command" | sed 's/--pid-file.*\.pid/ /'`
+ return 0
+ fi
+ done
+ )
+
+ return 0
+}
+
+# return true if at least one pid is alive
+function alive()
+{
+ if [ -z "$*" ]; then
+ return 1
+ fi
+ for i in $*; do
+ if kill -0 $i 2> /dev/null; then
+ return 0
+ fi
+ done
+
+ return 1
+}
+
+# Start the fun :)
+PID=`pidof -o %PPID /usr/sbin/automount`
+case "$1" in
+ start)
+ stat_busy "Starting automounter"
+ getmounts | while read cmd args; do
+ opt=${args%%-- *}
+ rest=${args#*-- }
+ mnt=${rest%% *}
+ rest=${rest#* }
+ echo -n " $mnt"
+ if [ ! -d /var/run/autofs ]; then
+ mkdir /var/run/autofs
+ fi
+ pidfile=/var/run/autofs/`echo $mnt | sed 's,_,__,g;s,/,_:,g'`.pid
+ $DAEMON $daemonoptions --pid-file=$pidfile $opt $mnt $rest
+ done
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon autofs
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping automounter"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon autofs
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ status)
+ status
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+ ;;
+esac
+
+exit 0
diff --git a/abs/extra-testing/autofs/autofs.conf.d b/abs/extra-testing/autofs/autofs.conf.d
new file mode 100644
index 0000000..435665d
--- /dev/null
+++ b/abs/extra-testing/autofs/autofs.conf.d
@@ -0,0 +1,5 @@
+# e.g. localoptions='rsize=8192,wsize=8192'
+localoptions=''
+
+# e.g. --timeout=60
+daemonoptions=''