Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Aug 2012 19:31:51 +0700 (NOVT)
From:      Eugene Grosbein <ports@grosbein.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/170819: New port: net-mgmt/UniFi UniFi Wireless Controller
Message-ID:  <201208211231.q7LCVpfM066606@k-45-monitor.sd.rdtc.ru>
Resent-Message-ID: <201208211240.q7LCeAfi097658@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         170819
>Category:       ports
>Synopsis:       New port: net-mgmt/UniFi UniFi Wireless Controller
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue Aug 21 12:40:10 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Eugene Grosbein
>Release:        FreeBSD 9.1-PRERELEASE amd64
>Organization:
RDTC JSC
>Environment:
System: FreeBSD k-45-monitor 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #6: Wed Aug 15 16:24:32 NOVT 2012 root@k-45-monitor:/usr/obj/usr/local/src/sys/K-45-MONITOR amd64

>Description:
	This is new port for the UniFi Wireless Controler -
	java-based server-side software to control UniFi Access Points
	using web interface.

	Please note that original zip file contains proprietary
	firmware images for access points and the license prohibits
	their redistribution. Also, the user must accept license agreement
	on-site to download the distibution file,
	so MASTER_SITES is empty (contents commented out).

>How-To-Repeat:
	N/A
>Fix:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	UniFi
#	UniFi/Makefile
#	UniFi/distinfo
#	UniFi/pkg-descr
#	UniFi/pkg-plist
#	UniFi/files
#	UniFi/files/UniFi.in
#	UniFi/files/pkg-deinstall.in
#
echo c - UniFi
mkdir -p UniFi > /dev/null 2>&1
echo x - UniFi/Makefile
sed 's/^X//' >UniFi/Makefile << '6493abb108342c994405f3f0c0b569ee'
X# New ports collection makefile for:   UniFi
X# Date created:        21 August 2012
X# Whom:                Eugene Grosbein <ports@grosbein.net>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	UniFi
XPORTVERSION=	2.3.5
XCATEGORIES=	net-mgmt java
XMASTER_SITES=	#http://www.ubnt.com/downloads/unifi/2.3.5/
XDISTNAME=	${PORTNAME}.unix
XDIST_SUBDIR=	${PORTNAME}-${PORTVERSION}
X
XMAINTAINER=	ports@grosbein.net
XCOMMENT=	UniFi Wireless Controller
X
XRUN_DEPENDS=	mongodb>=1.6.5:${PORTSDIR}/databases/mongodb
X
XSUB_FILES=	pkg-deinstall
XSUB_LIST=	PORTNAME=${PORTNAME} USERS=${USERS} GROUPS=${GROUPS}
X
XWRKSRC=		${WRKDIR}/${PORTNAME}-${PORTVERSION}
X
XUSE_ZIP=	yes
X
XUSE_JAVA=	yes
XJAVA_VERSION=	1.6+
XJAVA_OS=	native
XJAVA_VENDOR=	openjdk bsdjava
XJAVA_RUN=	yes
X
XDATADIR=	${JAVASHAREDIR}/${PORTNAME}
XNO_BUILD=	yes
X
XUSE_RC_SUBR=	${PORTNAME}
X
XUSERS=		unifi
XGROUPS=		unifi
X
XRESTRICTED=	Redistribution of bundled firmware images is not permitted
X
X.include <bsd.port.pre.mk>
X
X.if !defined(PACKAGE_BUILDING) && (!exists(${DISTDIR}/${DIST_SUBDIR}/${DISTNAME}.zip))
XDISTFILE_INSTRUCTIONS=\n\
XDue to licensing restrictions, distribution file must be fetched manually.\n\
XPlease download the file to ${DISTDIR}/${DIST_SUBDIR}/${DISTNAME}.zip from: \n\n\
Xhttp://www.ubnt.com/downloads/unifi/${PORTVERSION}/${DISTNAME}.zip\n\n
X.endif
X
X.if defined(DISTFILE_INSTRUCTIONS)
Xpre-fetch:
X	@${PRINTF} "${DISTFILE_INSTRUCTIONS}"
X	@exit 1
X.endif
X
Xpost-extract:
X	@${MV} ${WRKDIR}/${PORTNAME} ${WRKSRC}
X	@${ECHO} system_ip=0.0.0.0 >> ${WRKSRC}/data/system.properties
X
Xdo-install:
X	@( cd ${WRKSRC} && \
X	  ${COPYTREE_SHARE} "bin data dl lib webapps readme.txt" ${DATADIR} \
X		'! -path data/system.properties' && \
X	  ${MKDIR} ${DATADIR}/conf && \
X	  for f in conf/catalina.policy conf/catalina.properties \
X		conf/context.xml conf/server.xml conf/tomcat-users.xml \
X		conf/web.xml data/system.properties; \
X	  do	${CP} -p $$f ${DATADIR}/$$f.sample && \
X		if [ ! -f ${DATADIR}/$$f ]; then \
X			${CP} -p $$f ${DATADIR}/$$f; \
X		fi; \
X	  done; \
X	)
X	@${CHOWN} -R ${USERS}:${GROUPS} ${DATADIR}
X	@${CHMOD} -R g+w ${DATADIR}/*
X	@${LN} -sf ${PREFIX}/bin/mongod ${DATADIR}/bin/
X
X.include <bsd.port.post.mk>
6493abb108342c994405f3f0c0b569ee
echo x - UniFi/distinfo
sed 's/^X//' >UniFi/distinfo << 'bd662b9b933319e0a9ae8bbb1ccd7c20'
XSHA256 (UniFi-2.3.5/UniFi.unix.zip) = 27c304744bea3224048773658259368b54c37071c3d15fc538cc58c56427f22a
XSIZE (UniFi-2.3.5/UniFi.unix.zip) = 22650879
bd662b9b933319e0a9ae8bbb1ccd7c20
echo x - UniFi/pkg-descr
sed 's/^X//' >UniFi/pkg-descr << 'bcf3a6f93eef3e49af172f8445a33804'
XThe UniFi Controller allows to manage the UniFi Wireless Network.
X
XWWW:	http://wiki.ubnt.com/UniFi_FAQ
bcf3a6f93eef3e49af172f8445a33804
echo x - UniFi/pkg-plist
sed 's/^X//' >UniFi/pkg-plist << '199d70a395bfd59bb4417f4e3b5a1864'
X%%DATADIR%%/bin/mongod
X@unexec if cmp -s %D/%%DATADIR%%/conf/catalina.policy.sample %D/%%DATADIR%%/conf/catalina.policy; then rm -f %D/%%DATADIR%%/conf/catalina.policy; fi
X%%DATADIR%%/conf/catalina.policy.sample
X@exec if [ ! -f %D/%%DATADIR%%/conf/catalina.policy ]; then cp -p %F %D/%%DATADIR%%/catalina.policy; fi
X@unexec if cmp -s %D/%%DATADIR%%/conf/catalina.properties.sample %D/%%DATADIR%%/conf/catalina.properties; then rm -f %D/%%DATADIR%%/conf/catalina.properties; fi
X%%DATADIR%%/conf/catalina.properties.sample
X@exec if [ ! -f %D/%%DATADIR%%/conf/catalina.properties ]; then cp -p %F %D/%%DATADIR%%/catalina.properties; fi
X@unexec if cmp -s %D/%%DATADIR%%/conf/context.xml.sample %D/%%DATADIR%%/conf/context.xml; then rm -f %D/%%DATADIR%%/conf/context.xml; fi
X%%DATADIR%%/conf/context.xml.sample
X@exec if [ ! -f %D/%%DATADIR%%/conf/context.xml ]; then cp -p %F %D/%%DATADIR%%/context.xml; fi
X@unexec if cmp -s %D/%%DATADIR%%/conf/server.xml.sample %D/%%DATADIR%%/conf/server.xml; then rm -f %D/%%DATADIR%%/conf/server.xml; fi
X%%DATADIR%%/conf/server.xml.sample
X@exec if [ ! -f %D/%%DATADIR%%/conf/server.xml ]; then cp -p %F %D/%%DATADIR%%/server.xml; fi
X@unexec if cmp -s %D/%%DATADIR%%/conf/tomcat-users.xml.sample %D/%%DATADIR%%/conf/tomcat-users.xml; then rm -f %D/%%DATADIR%%/conf/tomcat-users.xml; fi
X%%DATADIR%%/conf/tomcat-users.xml.sample
X@exec if [ ! -f %D/%%DATADIR%%/conf/tomcat-users.xml ]; then cp -p %F %D/%%DATADIR%%/tomcat-users.xml; fi
X@unexec if cmp -s %D/%%DATADIR%%/conf/web.xml.sample %D/%%DATADIR%%/conf/web.xml; then rm -f %D/%%DATADIR%%/conf/web.xml; fi
X%%DATADIR%%/conf/web.xml.sample
X@exec if [ ! -f %D/%%DATADIR%%/conf/web.xml ]; then cp -p %F %D/%%DATADIR%%/web.xml; fi
X@unexec if cmp -s %D/%%DATADIR%%/data/system.properties.sample %D/%%DATADIR%%/data/system.properties; then rm -f %D/%%DATADIR%%/data/system.properties; fi
X%%DATADIR%%/data/system.properties.sample
X@exec if [ ! -f %D/%%DATADIR%%/data/system.properties ]; then cp -p %F %D/%%DATADIR%%/data/system.properties; fi
X%%DATADIR%%/dl/firmware/BZ2/2.3.5.954/firmware.bin
X%%DATADIR%%/dl/firmware/U7P/2.3.5.954/firmware.bin
X%%DATADIR%%/dl/firmware/bundles.json
X%%DATADIR%%/lib/MRJAdapter.jar
X%%DATADIR%%/lib/ace.jar
X%%DATADIR%%/lib/annotations-api.jar
X%%DATADIR%%/lib/asm.jar
X%%DATADIR%%/lib/bootstrap.jar
X%%DATADIR%%/lib/catalina-ant.jar
X%%DATADIR%%/lib/catalina-ha.jar
X%%DATADIR%%/lib/catalina-tribes.jar
X%%DATADIR%%/lib/catalina.jar
X%%DATADIR%%/lib/cglib.jar
X%%DATADIR%%/lib/commons-beanutils.jar
X%%DATADIR%%/lib/commons-codec-1.4.jar
X%%DATADIR%%/lib/commons-collections.jar
X%%DATADIR%%/lib/commons-daemon.jar
X%%DATADIR%%/lib/commons-digester.jar
X%%DATADIR%%/lib/commons-httpclient-3.1.jar
X%%DATADIR%%/lib/commons-lang.jar
X%%DATADIR%%/lib/commons-logging.jar
X%%DATADIR%%/lib/dom4j.jar
X%%DATADIR%%/lib/el-api.jar
X%%DATADIR%%/lib/jasper-el.jar
X%%DATADIR%%/lib/jasper-jdt.jar
X%%DATADIR%%/lib/jasper.jar
X%%DATADIR%%/lib/javassist.jar
X%%DATADIR%%/lib/jmdns.jar
X%%DATADIR%%/lib/jsp-api.jar
X%%DATADIR%%/lib/jstl.jar
X%%DATADIR%%/lib/jstun-0.7.3.jar
X%%DATADIR%%/lib/jul-log4j-bridge.jar
X%%DATADIR%%/lib/log4j.jar
X%%DATADIR%%/lib/mail.jar
X%%DATADIR%%/lib/mongo.jar
X%%DATADIR%%/lib/org.springframework.config.java-1.0.0.M4.jar
X%%DATADIR%%/lib/quartz-all-1.6.1.jar
X%%DATADIR%%/lib/servlet-api.jar
X%%DATADIR%%/lib/slf4j-api.jar
X%%DATADIR%%/lib/slf4j-log4j12.jar
X%%DATADIR%%/lib/spring-aop-2.5.6.jar
X%%DATADIR%%/lib/spring-beans-2.5.6.jar
X%%DATADIR%%/lib/spring-context-2.5.6.jar
X%%DATADIR%%/lib/spring-context-support-2.5.6.jar
X%%DATADIR%%/lib/spring-core-2.5.6.jar
X%%DATADIR%%/lib/spring-web-2.5.6.jar
X%%DATADIR%%/lib/sshj.jar
X%%DATADIR%%/lib/standard.jar
X%%DATADIR%%/lib/tomcat-coyote.jar
X%%DATADIR%%/lib/tomcat-dbcp.jar
X%%DATADIR%%/lib/tomcat-i18n-es.jar
X%%DATADIR%%/lib/tomcat-i18n-fr.jar
X%%DATADIR%%/lib/tomcat-i18n-ja.jar
X%%DATADIR%%/lib/tomcat-juli-adapters.jar
X%%DATADIR%%/lib/tomcat-juli.jar
X%%DATADIR%%/readme.txt
X%%DATADIR%%/webapps/ROOT.war
X@dirrmtry %%DATADIR%%/work/Catalina/localhost/_
X@dirrmtry %%DATADIR%%/work/Catalina/localhost
X@dirrmtry %%DATADIR%%/work/Catalina
X@dirrmtry %%DATADIR%%/work
X@dirrmtry %%DATADIR%%/webapps
X@dirrm %%DATADIR%%/lib
X@dirrm %%DATADIR%%/dl/firmware/U7P/2.3.5.954
X@dirrm %%DATADIR%%/dl/firmware/U7P
X@dirrm %%DATADIR%%/dl/firmware/BZ2/2.3.5.954
X@dirrm %%DATADIR%%/dl/firmware/BZ2
X@dirrm %%DATADIR%%/dl/firmware
X@dirrm %%DATADIR%%/dl
X@dirrmtry %%DATADIR%%/data/backup
X@dirrmtry %%DATADIR%%/data
X@dirrmtry %%DATADIR%%/conf
X@dirrm %%DATADIR%%/bin
X@dirrmtry %%DATADIR%%
199d70a395bfd59bb4417f4e3b5a1864
echo c - UniFi/files
mkdir -p UniFi/files > /dev/null 2>&1
echo x - UniFi/files/UniFi.in
sed 's/^X//' >UniFi/files/UniFi.in << 'ee35482e7baa9edd47bc8454b47b43e5'
X#!/bin/sh
X#
X# $FreeBSD$
X#
X
X# PROVIDE: UniFi
X# REQUIRE: LOGIN
X# KEYWORD: shutdown
X
X#
X# Add the following line to /etc/rc.conf to enable `UniFi':
X#
X# UniFi_enable="YES"
X
X. /etc/rc.subr
X
Xcommand_interpreter="."
Xcommand="%%PREFIX%%/bin/java"
Xcommand_args="-jar lib/ace.jar"
Xname="UniFi"
Xrcvar="${name}_enable"
Xstart_cmd="start_cmd"
Xstop_cmd="stop_cmd"
Xpidfile="/var/run/${name}.pid"
Xrequired_files="%%DATADIR%%/lib/ace.jar"
XUniFi_chdir=%%DATADIR%%
X
Xeval `JAVAVM_DRYRUN=yes ${command} | fgrep JAVAVM_COMMAND`
Xprocname=${JAVAVM_COMMAND}
X
Xstart_cmd()
X{
X	check_startmsgs && echo "Starting ${name}."
X	cd ${UniFi_chdir}
X	daemon -u %%USERS%% -f -p ${pidfile} ${command} ${command_args} start
X}
X
Xstop_cmd()
X{
X	check_startmsgs && echo "Stopping ${name}."
X	rc_pid=$(check_pidfile $pidfile $procname)
X	cd ${UniFi_chdir}
X	${command} ${command_args} stop
X	wait_for_pids $rc_pid
X}
X
Xload_rc_config ${name}
X: ${UniFi_enable="NO"}
Xrun_rc_command "$1"
ee35482e7baa9edd47bc8454b47b43e5
echo x - UniFi/files/pkg-deinstall.in
sed 's/^X//' >UniFi/files/pkg-deinstall.in << '2784190a27095d588b76c5331c1863ae'
X#!/bin/sh
X
XPATH=/bin:/usr/bin:/usr/sbin
X
XUSER=%%USERS%%
XGROUP=%%GROUPS%%
X
Xask() {
X    local question default answer
X
X    question=$1; shift
X    while [ $# -gt 1 ]
X    do
X	if [ -z "${BATCH}" -a -z "${PACKAGE_BUILDING}" ]; then
X	    echo "$question" >&2
X	fi
X	question=$1; shift
X    done
X
X    default=$1
X    if [ -z "${BATCH}" -a -z "${PACKAGE_BUILDING}" ]; then
X	read -p "${question} [${default}]? " answer
X    fi
X    if [ x${answer} = x ]; then
X	answer=${default}
X    fi
X    echo ${answer}
X}
X
Xyesno() {
X    local dflt question answer
X
X    question=$1
X    dflt=$2
X    while :; do
X	answer=$(ask "$@")
X	case "${answer}" in
X	[Yy]*)		return 0;;
X	[Nn]*)		return 1;;
X	esac
X	echo "Please answer yes or no."
X    done
X}
X
Xdelete_account() {
X    local u g
X
X    u=$1
X    g=$2
X    if yesno "Do you want me to remove group \"${g}\"" y; then
X	pw groupdel -n ${g}
X	echo "Done."
X    fi
X    if yesno "Do you want me to remove user \"${u}\"" y; then
X	pw userdel -n ${u}
X	echo "Done."
X    fi
X}
X
X[ "$2" = DEINSTALL ] || exit 0
X
Xif kill -0 `head -1 /var/run/%%PORTNAME%%.pid 2>/dev/null` 2>/dev/null; then
X    if yesno "There are some UniFi Controller processes running.  Shall I kill them" y
X    then
X	service %%PORTNAME%% forcestop
X    else
X	echo "OK ... I hope you know what you are doing."
X	echo ""
X    fi
Xfi
X
Xif yesno "Whould you like to remove all configs, logs and other staff" \
X	 "of the UniFi Controller (perform complete uninstallation)" n
Xthen
X    cd %%DATADIR%%/data && \
X	rm -rf backup db keystore system.properties update.json
X    cd .. && rm -rf conf logs webapps/ROOT work
X    echo "Done."
Xfi
X
Xdelete_account ${USER} ${GROUP}
Xexit 0
2784190a27095d588b76c5331c1863ae
exit



>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201208211231.q7LCVpfM066606>