Menu

[r10367]: / legacy / etc / rc.d / afpd  Maximize  Restore  History

Download this file

92 lines (79 with data), 2.9 kB

#!/bin/sh
# Copyright (c) 2007-2009 Volker Theile (votdev@gmx.de)
# All rights reserved.

# PROVIDE: afpd
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
# XQUERY: -i "count(//afp/enable) > 0" -o "0" -b
# RCVAR: afpd

. /etc/rc.subr
. /etc/configxml.subr

name="afpd"
rcvar=`set_rcvar`

load_rc_config "${name}"

# Custom commands
start_precmd="afpd_mkconf"
start_postcmd="afpd_poststart"
stop_postcmd="afpd_poststop"
mkconf_cmd="afpd_mkconf"
extra_commands="mkconf"

# Defaults
afpd_enable=${afpd_enable:-"NO"}
afpd_config=${afpd_config:-"/var/etc/${name}.conf"}
afpd_avdefault=${afpd_avdefault:-"/var/etc/AppleVolumes.default"}
afpd_avsystem=${afpd_avsystem:-"/var/etc/AppleVolumes.system"}
command="/usr/local/sbin/${name}"
command_args="-F ${afpd_config}"

afpd_mkconf()
{
	# Create config file
	/usr/local/bin/xml sel -t -m "//afp" \
		-i "string-length(afpname) > 0" -v "concat('\"',afpname,'\"')" -b \
		-i "string-length(afpname) = 0" -o "-" -b \
		-i "count(noddp) > 0" -o " -noddp" -b \
		-o " -uamlist " \
		-i "count(guest) > 0" -o "uams_guest.so" -b \
		-i "count(local) > 0" -i "count(guest) > 0" -o "," -b -o "uams_clrtxt.so,uams_dhx.so,uams_randnum.so,uams_dhx2.so" -b \
		-o " -nosavepassword -defaultvol ${afpd_avdefault} -systemvol ${afpd_avsystem} -uservol -uampath /etc/uams -guestname \"ftp\"" -n \
		${configxml_file} | /usr/local/bin/xml unesc > ${afpd_config}

	# Generate '/var/etc/AppleVolumes.system'
	/usr/local/bin/xml sel -t -m "//mounts/mount" \
		-v "concat('\"/mnt/',sharename,'\" \"',sharename,'\" ')" \
		-o "options:usedots allow:@admin" \
		-n \
		${configxml_file} | /usr/local/bin/xml unesc > ${afpd_avsystem}

	# Generate /var/etc/AppleVolumes.default
	/usr/local/bin/xml sel -t -m "//afp/share" \
		-v "concat('\"',path,'\" \"',name,'\" ')" \
		-i "string-length(volpasswd) > 0" -v "concat('password:',volpasswd,' ')" -b \
		-i "not(casefold[. = 'none'])" -v "concat('casefold:',casefold,' ')" -b \
		-i "string-length(volcharset) > 0" -v "concat('volcharset:',volcharset,' ')" -b \
		-o "options:usedots" \
		-m "options/*" \
			-v "concat(',',local-name())" \
		-b \
		-i "adisk/enable" \
			-i "string-length(adisk/advf) > 0" \
				-v "concat(',','tm')" \
			-b \
		-b \
		-o " " \
		-i "string-length(allow) > 0" -v "concat('allow:',allow,' ')" -b \
		-i "string-length(deny) > 0" -v "concat('deny:',deny,' ')" -b \
		-i "string-length(rolist) > 0" -v "concat('rolist:',rolist,' ')" -b \
		-i "string-length(rwlist) > 0" -v "concat('rwlist:',rwlist,' ')" -b \
		-i "string-length(dbpath) > 0" -v "concat('dbpath:\"',dbpath,'\" ')" -b \
		-i "string-length(cnidscheme) > 0" -v "concat('cnidscheme:',cnidscheme,' ')" -b \
		-n \
		${configxml_file} | /usr/local/bin/xml unesc > ${afpd_avdefault}
}

afpd_poststart()
{
	checkyesno afpd_enable && /usr/local/sbin/cnid_metad
}

afpd_poststop()
{
	checkyesno afpd_enable && killall cnid_metad
}

run_rc_command "$1"
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.