| 
									
										
										
										
											2023-09-05 09:07:14 -07:00
										 |  |  |  | #!/usr/bin/with-contenv bash | 
					
						
							|  |  |  |  | # shellcheck shell=bash | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | # create our folders | 
					
						
							|  |  |  |  | mkdir -p \ | 
					
						
							|  |  |  |  |     /config/{data,logs} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | # create symlinks for config | 
					
						
							|  |  |  |  | symlinks=( \ | 
					
						
							|  |  |  |  | /usr/lib/unifi/data \ | 
					
						
							|  |  |  |  | /usr/lib/unifi/logs ) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | for i in "${symlinks[@]}"; do | 
					
						
							|  |  |  |  |     if [[ -L "$i" && ! "$i" -ef /config/"$(basename "$i")"  ]]; then | 
					
						
							|  |  |  |  |         unlink "$i" | 
					
						
							|  |  |  |  |     fi | 
					
						
							|  |  |  |  |     if [[ ! -L "$i" ]]; then | 
					
						
							|  |  |  |  |         ln -s /config/"$(basename "$i")" "$i" | 
					
						
							|  |  |  |  |     fi | 
					
						
							|  |  |  |  | done | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | if [[ ! -e /config/data/system.properties ]]; then | 
					
						
							|  |  |  |  |     if [[ -z "${MONGO_HOST}" ]]; then | 
					
						
							|  |  |  |  |         echo "*** No MONGO_HOST set, cannot configure database settings. ***" | 
					
						
							| 
									
										
										
										
											2023-10-16 08:53:03 -07:00
										 |  |  |  |         sleep infinity | 
					
						
							| 
									
										
										
										
											2023-09-05 09:07:14 -07:00
										 |  |  |  |     else | 
					
						
							| 
									
										
										
										
											2023-10-29 12:19:23 -07:00
										 |  |  |  |         echo "*** Waiting for MONGO_HOST ${MONGO_HOST} to be reachable. ***" | 
					
						
							|  |  |  |  |         DBCOUNT=0 | 
					
						
							|  |  |  |  |         while true; do | 
					
						
							|  |  |  |  |             if nc -w1 "${MONGO_HOST}" "${MONGO_PORT}" >/dev/null 2>&1; then | 
					
						
							|  |  |  |  |                 break | 
					
						
							|  |  |  |  |             fi | 
					
						
							|  |  |  |  |             DBCOUNT=$((DBCOUNT+1)) | 
					
						
							|  |  |  |  |             if [[ ${DBCOUNT} -gt 6 ]]; then | 
					
						
							|  |  |  |  |                 echo "*** Defined MONGO_HOST ${MONGO_HOST} is not reachable, cannot proceed. ***" | 
					
						
							|  |  |  |  |                 sleep infinity | 
					
						
							|  |  |  |  |             fi | 
					
						
							|  |  |  |  |             sleep 5 | 
					
						
							|  |  |  |  |         done | 
					
						
							| 
									
										
										
										
											2023-09-05 09:07:14 -07:00
										 |  |  |  |         sed -i "s/~MONGO_USER~/${MONGO_USER}/" /defaults/system.properties | 
					
						
							|  |  |  |  |         sed -i "s/~MONGO_HOST~/${MONGO_HOST}/" /defaults/system.properties | 
					
						
							|  |  |  |  |         sed -i "s/~MONGO_PORT~/${MONGO_PORT}/" /defaults/system.properties | 
					
						
							|  |  |  |  |         sed -i "s/~MONGO_DBNAME~/${MONGO_DBNAME}/" /defaults/system.properties | 
					
						
							| 
									
										
										
										
											2023-09-07 01:03:17 -07:00
										 |  |  |  |         sed -i "s/~MONGO_PASS~/${MONGO_PASS}/" /defaults/system.properties | 
					
						
							| 
									
										
										
										
											2023-09-27 15:13:35 -07:00
										 |  |  |  |         if [[ "${MONGO_TLS,,}" = "true" ]]; then | 
					
						
							|  |  |  |  |             sed -i "s/~MONGO_TLS~/true/" /defaults/system.properties | 
					
						
							|  |  |  |  |         else | 
					
						
							|  |  |  |  |             sed -i "s/~MONGO_TLS~/false/" /defaults/system.properties | 
					
						
							|  |  |  |  |         fi | 
					
						
							|  |  |  |  |         if [[ -z "${MONGO_AUTHSOURCE}" ]]; then | 
					
						
							| 
									
										
										
										
											2023-11-21 12:08:27 -08:00
										 |  |  |  |             sed -i "s/~MONGO_AUTHSOURCE~//" /defaults/system.properties | 
					
						
							| 
									
										
										
										
											2023-09-27 15:13:35 -07:00
										 |  |  |  |         else | 
					
						
							| 
									
										
										
										
											2023-11-21 12:08:27 -08:00
										 |  |  |  |             sed -i "s/~MONGO_AUTHSOURCE~/\&authSource=${MONGO_AUTHSOURCE}/" /defaults/system.properties | 
					
						
							| 
									
										
										
										
											2023-09-27 15:13:35 -07:00
										 |  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2023-09-05 09:07:14 -07:00
										 |  |  |  |         cp /defaults/system.properties /config/data | 
					
						
							|  |  |  |  |     fi | 
					
						
							|  |  |  |  | fi | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | # generate key | 
					
						
							|  |  |  |  | if [[ ! -f /config/data/keystore ]]; then | 
					
						
							|  |  |  |  |     keytool -genkey -keyalg RSA -alias unifi -keystore /config/data/keystore \ | 
					
						
							|  |  |  |  |     -storepass aircontrolenterprise -keypass aircontrolenterprise -validity 3650 \ | 
					
						
							|  |  |  |  |     -keysize 4096 -dname "cn=unifi" -ext san=dns:unifi | 
					
						
							|  |  |  |  | fi | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | # permissions | 
					
						
							|  |  |  |  | lsiown -R abc:abc \ | 
					
						
							|  |  |  |  | 	/config \ | 
					
						
							|  |  |  |  | 	/run/unifi | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | lsiown abc:abc \ | 
					
						
							|  |  |  |  |     /config/data/keystore |