FreeNAS Code
This project has moved to github - see https://github.com/freenas
Brought to you by:
cochard,
mattolander
#!/bin/sh # Copyright (c) 2007 Volker Theile (votdev@gmx.de) # All rights reserved. # PROVIDE: pureftpd # REQUIRE: DAEMON # KEYWORD: shutdown # XQUERY: -i "count(//ftp/enable) > 0" -o "0" -b # RCVAR: pureftpd . /etc/rc.subr . /etc/configxml.subr name="pureftpd" rcvar=`set_rcvar` # Custom commands start_precmd="create_conf" # Defaults pureftpd_enable=${pureftpd_enable:-"NO"} command="/usr/local/sbin/pure-ftpd" pidfile="/var/run/pure-ftpd.pid" create_conf() { local _banner # Create /mnt/.banner file. _banner=`configxml_get "//ftp/banner"` if [ -z "${_banner}" ]; then _productname=`cat /etc/prd.name` echo "Welcome to ${_productname} FTP service" > /mnt/.banner else echo ${_banner} > /mnt/.banner fi # Set command args. command_args=`/usr/local/bin/xml sel -t -m "/${configxml_root}/ftp" \ -v "concat('-S ',port)" \ -v "concat(' -c ',numberclients)" \ -v "concat(' -I ',timeout)" \ -o " -M -B -b" \ -i "maxconperip[. > 0]" -v "concat(' -C ',maxconperip)" -b \ -i "count(anonymous) > 0" -i "count(localuser) = 0" -o " -e" -b -b \ -i "count(anonymous) = 0" -i "count(localuser) > 0" -o " -E" -b -b \ -i "pasv_min_port[. != '0']" -i "pasv_max_port[. != '0']" -v "concat(' -p ',pasv_min_port,':',pasv_max_port)" -b -b \ -i "string-length(filemask) > 0" -i "string-length(directorymask) > 0" -v "concat(' -U ',filemask,':',directorymask)" -b -b \ -i "string-length(filemask) = 0" -i "string-length(directorymask) = 0" -o " -U 077:022" -b -b \ -i "string-length(pasv_address) > 0" -v "concat(' -P ',pasv_address)" -b \ -i "count(natmode) > 0" -o " -N" -b \ -i "count(fxp) > 0" -o " -W" -b \ -i "count(keepallfiles) > 0" -o " -K" -b \ -i "count(permitrootlogin) = 0" -o " -u 1" -b \ -i "count(chrooteveryone) > 0" -o " -A" -b \ ${configxml_file} | /usr/local/bin/xml unesc` } load_rc_config ${name} run_rc_command "$1"