|  | @@ -1,498 +0,0 @@
 | 
	
		
			
			| 1 |  | -#!/bin/bash
 | 
	
		
			
			| 2 |  | -#
 | 
	
		
			
			| 3 |  | -# .---.                  .              .
 | 
	
		
			
			| 4 |  | -# |                      |              |
 | 
	
		
			
			| 5 |  | -# |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-.
 | 
	
		
			
			| 6 |  | -# |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-'
 | 
	
		
			
			| 7 |  | -# '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --'
 | 
	
		
			
			| 8 |  | -#
 | 
	
		
			
			| 9 |  | -#                    Freedom in the Cloud
 | 
	
		
			
			| 10 |  | -#
 | 
	
		
			
			| 11 |  | -# Wekan kanban
 | 
	
		
			
			| 12 |  | -#
 | 
	
		
			
			| 13 |  | -# License
 | 
	
		
			
			| 14 |  | -# =======
 | 
	
		
			
			| 15 |  | -#
 | 
	
		
			
			| 16 |  | -# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
 | 
	
		
			
			| 17 |  | -#
 | 
	
		
			
			| 18 |  | -# This program is free software: you can redistribute it and/or modify
 | 
	
		
			
			| 19 |  | -# it under the terms of the GNU Affero General Public License as published by
 | 
	
		
			
			| 20 |  | -# the Free Software Foundation, either version 3 of the License, or
 | 
	
		
			
			| 21 |  | -# (at your option) any later version.
 | 
	
		
			
			| 22 |  | -#
 | 
	
		
			
			| 23 |  | -# This program is distributed in the hope that it will be useful,
 | 
	
		
			
			| 24 |  | -# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
	
		
			
			| 25 |  | -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
	
		
			
			| 26 |  | -# GNU Affero General Public License for more details.
 | 
	
		
			
			| 27 |  | -#
 | 
	
		
			
			| 28 |  | -# You should have received a copy of the GNU Affero General Public License
 | 
	
		
			
			| 29 |  | -# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
	
		
			
			| 30 |  | -
 | 
	
		
			
			| 31 |  | -VARIANTS=''
 | 
	
		
			
			| 32 |  | -
 | 
	
		
			
			| 33 |  | -IN_DEFAULT_INSTALL=0
 | 
	
		
			
			| 34 |  | -SHOW_ON_ABOUT=0
 | 
	
		
			
			| 35 |  | -
 | 
	
		
			
			| 36 |  | -WEKAN_DOMAIN_NAME=
 | 
	
		
			
			| 37 |  | -WEKAN_CODE=
 | 
	
		
			
			| 38 |  | -WEKAN_PORT=8081
 | 
	
		
			
			| 39 |  | -WEKAN_ONION_PORT=8120
 | 
	
		
			
			| 40 |  | -WEKAN_REPO="https://github.com/wekan/wekan"
 | 
	
		
			
			| 41 |  | -WEKAN_COMMIT='dc547c38d1f5ca72729f6d8f81eb03671ca15934'
 | 
	
		
			
			| 42 |  | -FLOW_ROUTER_REPO="git://github.com/wekan/flow-router.git"
 | 
	
		
			
			| 43 |  | -FLOW_ROUTER_COMMIT='0c1f6423ed9b68eb00cfb1a19492438917a38956'
 | 
	
		
			
			| 44 |  | -WEKAN_DIR=/etc/wekan
 | 
	
		
			
			| 45 |  | -
 | 
	
		
			
			| 46 |  | -wekan_variables=(ONION_ONLY
 | 
	
		
			
			| 47 |  | -                 WEKAN_DOMAIN_NAME
 | 
	
		
			
			| 48 |  | -                 WEKAN_CODE
 | 
	
		
			
			| 49 |  | -                 DDNS_PROVIDER
 | 
	
		
			
			| 50 |  | -                 MY_USERNAME)
 | 
	
		
			
			| 51 |  | -
 | 
	
		
			
			| 52 |  | -function logging_on_wekan {
 | 
	
		
			
			| 53 |  | -    echo -n ''
 | 
	
		
			
			| 54 |  | -}
 | 
	
		
			
			| 55 |  | -
 | 
	
		
			
			| 56 |  | -function logging_off_wekan {
 | 
	
		
			
			| 57 |  | -    echo -n ''
 | 
	
		
			
			| 58 |  | -}
 | 
	
		
			
			| 59 |  | -
 | 
	
		
			
			| 60 |  | -function remove_user_wekan {
 | 
	
		
			
			| 61 |  | -    remove_username="$1"
 | 
	
		
			
			| 62 |  | -}
 | 
	
		
			
			| 63 |  | -
 | 
	
		
			
			| 64 |  | -function add_user_wekan {
 | 
	
		
			
			| 65 |  | -    new_username="$1"
 | 
	
		
			
			| 66 |  | -    new_user_password="$2"
 | 
	
		
			
			| 67 |  | -    echo '0'
 | 
	
		
			
			| 68 |  | -}
 | 
	
		
			
			| 69 |  | -
 | 
	
		
			
			| 70 |  | -function install_interactive_wekan {
 | 
	
		
			
			| 71 |  | -    if [[ $ONION_ONLY != "no" ]]; then
 | 
	
		
			
			| 72 |  | -        GIT_DOMAIN_NAME='wekan.local'
 | 
	
		
			
			| 73 |  | -        write_config_param "WEKAN_DOMAIN_NAME" "$WEKAN_DOMAIN_NAME"
 | 
	
		
			
			| 74 |  | -    else
 | 
	
		
			
			| 75 |  | -        function_check interactive_site_details
 | 
	
		
			
			| 76 |  | -        interactive_site_details wekan
 | 
	
		
			
			| 77 |  | -    fi
 | 
	
		
			
			| 78 |  | -    APP_INSTALLED=1
 | 
	
		
			
			| 79 |  | -}
 | 
	
		
			
			| 80 |  | -
 | 
	
		
			
			| 81 |  | -function change_password_wekan {
 | 
	
		
			
			| 82 |  | -    curr_username="$1"
 | 
	
		
			
			| 83 |  | -    new_user_password="$2"
 | 
	
		
			
			| 84 |  | -}
 | 
	
		
			
			| 85 |  | -
 | 
	
		
			
			| 86 |  | -function reconfigure_wekan {
 | 
	
		
			
			| 87 |  | -    echo -n ''
 | 
	
		
			
			| 88 |  | -}
 | 
	
		
			
			| 89 |  | -
 | 
	
		
			
			| 90 |  | -function upgrade_wekan {
 | 
	
		
			
			| 91 |  | -    CURR_WEKAN_COMMIT=$(get_completion_param "wekan commit")
 | 
	
		
			
			| 92 |  | -    if [[ "$CURR_WEKAN_COMMIT" == "$WEKAN_COMMIT" ]]; then
 | 
	
		
			
			| 93 |  | -        return
 | 
	
		
			
			| 94 |  | -    fi
 | 
	
		
			
			| 95 |  | -
 | 
	
		
			
			| 96 |  | -    systemctl stop wekan
 | 
	
		
			
			| 97 |  | -
 | 
	
		
			
			| 98 |  | -    # update to the next commit
 | 
	
		
			
			| 99 |  | -    function_check set_repo_commit
 | 
	
		
			
			| 100 |  | -    set_repo_commit $WEKAN_DIR "wekan commit" "$WEKAN_COMMIT" $WEKAN_REPO
 | 
	
		
			
			| 101 |  | -
 | 
	
		
			
			| 102 |  | -    systemctl start wekan
 | 
	
		
			
			| 103 |  | -}
 | 
	
		
			
			| 104 |  | -
 | 
	
		
			
			| 105 |  | -function backup_local_wekan {
 | 
	
		
			
			| 106 |  | -    source_directory=$WEKAN_DIR/data
 | 
	
		
			
			| 107 |  | -    if [ -d $source_directory ]; then
 | 
	
		
			
			| 108 |  | -        systemctl stop wekan
 | 
	
		
			
			| 109 |  | -
 | 
	
		
			
			| 110 |  | -        dest_directory=wekan
 | 
	
		
			
			| 111 |  | -        function_check suspend_site
 | 
	
		
			
			| 112 |  | -        suspend_site wekan
 | 
	
		
			
			| 113 |  | -
 | 
	
		
			
			| 114 |  | -        function_check backup_database_to_usb
 | 
	
		
			
			| 115 |  | -        backup_database_to_usb wekan
 | 
	
		
			
			| 116 |  | -
 | 
	
		
			
			| 117 |  | -        function_check backup_directory_to_usb
 | 
	
		
			
			| 118 |  | -        backup_directory_to_usb $source_directory $dest_directory
 | 
	
		
			
			| 119 |  | -
 | 
	
		
			
			| 120 |  | -        function_check restart_site
 | 
	
		
			
			| 121 |  | -        restart_site
 | 
	
		
			
			| 122 |  | -
 | 
	
		
			
			| 123 |  | -        systemctl start wekan
 | 
	
		
			
			| 124 |  | -    fi
 | 
	
		
			
			| 125 |  | -}
 | 
	
		
			
			| 126 |  | -
 | 
	
		
			
			| 127 |  | -function restore_local_wekan {
 | 
	
		
			
			| 128 |  | -    if [ -d $WEKAN_DIR ]; then
 | 
	
		
			
			| 129 |  | -        systemctl stop wekan
 | 
	
		
			
			| 130 |  | -
 | 
	
		
			
			| 131 |  | -        function_check restore_database
 | 
	
		
			
			| 132 |  | -        restore_database gogs ${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 133 |  | -
 | 
	
		
			
			| 134 |  | -        temp_restore_dir=/root/tempwekan
 | 
	
		
			
			| 135 |  | -        function_check restore_directory_from_usb
 | 
	
		
			
			| 136 |  | -        restore_directory_from_usb $temp_restore_dir wekan
 | 
	
		
			
			| 137 |  | -        if [ -d $temp_restore_dir$WEKAN_DIR/data ]; then
 | 
	
		
			
			| 138 |  | -            cp -r $temp_restore_dir$WEKAN_DIR/data/* $WEKAN_DIR/data/
 | 
	
		
			
			| 139 |  | -        else
 | 
	
		
			
			| 140 |  | -            cp -r $temp_restore_dir/* $WEKAN_DIR/data/
 | 
	
		
			
			| 141 |  | -        fi
 | 
	
		
			
			| 142 |  | -        rm -rf $temp_restore_dir
 | 
	
		
			
			| 143 |  | -        systemctl start wekan
 | 
	
		
			
			| 144 |  | -    fi
 | 
	
		
			
			| 145 |  | -}
 | 
	
		
			
			| 146 |  | -
 | 
	
		
			
			| 147 |  | -function backup_remote_wekan {
 | 
	
		
			
			| 148 |  | -    if grep -q "wekan domain" $COMPLETION_FILE; then
 | 
	
		
			
			| 149 |  | -        temp_backup_dir=$WEKAN_DIR/data
 | 
	
		
			
			| 150 |  | -        if [ -d $temp_backup_dir ]; then
 | 
	
		
			
			| 151 |  | -            systemctl stop wekan
 | 
	
		
			
			| 152 |  | -
 | 
	
		
			
			| 153 |  | -            function_check suspend_site
 | 
	
		
			
			| 154 |  | -            suspend_site wekan
 | 
	
		
			
			| 155 |  | -
 | 
	
		
			
			| 156 |  | -            echo $"Backing up Wekan installation"
 | 
	
		
			
			| 157 |  | -
 | 
	
		
			
			| 158 |  | -            function_check backup_database_to_friend
 | 
	
		
			
			| 159 |  | -            backup_database_to_friend wekan
 | 
	
		
			
			| 160 |  | -
 | 
	
		
			
			| 161 |  | -            function_check backup_directory_to_friend
 | 
	
		
			
			| 162 |  | -            backup_directory_to_friend $temp_backup_dir wekan
 | 
	
		
			
			| 163 |  | -
 | 
	
		
			
			| 164 |  | -            function_check restart_site
 | 
	
		
			
			| 165 |  | -            restart_site
 | 
	
		
			
			| 166 |  | -
 | 
	
		
			
			| 167 |  | -            systemctl start wekan
 | 
	
		
			
			| 168 |  | -        else
 | 
	
		
			
			| 169 |  | -            echo $"wekan domain specified but not found in ${temp_backup_dir}"
 | 
	
		
			
			| 170 |  | -        fi
 | 
	
		
			
			| 171 |  | -    fi
 | 
	
		
			
			| 172 |  | -}
 | 
	
		
			
			| 173 |  | -
 | 
	
		
			
			| 174 |  | -function restore_remote_wekan {
 | 
	
		
			
			| 175 |  | -    if [ -d $WEKAN_DIR ]; then
 | 
	
		
			
			| 176 |  | -        systemctl stop wekan
 | 
	
		
			
			| 177 |  | -
 | 
	
		
			
			| 178 |  | -        function_check restore_database_from_friend
 | 
	
		
			
			| 179 |  | -        restore_database_from_friend wekan
 | 
	
		
			
			| 180 |  | -
 | 
	
		
			
			| 181 |  | -        temp_restore_dir=/root/tempwekan
 | 
	
		
			
			| 182 |  | -        function_check restore_directory_from_usb
 | 
	
		
			
			| 183 |  | -        restore_directory_from_friend $temp_restore_dir wekan
 | 
	
		
			
			| 184 |  | -        if [ -d $temp_restore_dir$WEKAN_DIR/data ]; then
 | 
	
		
			
			| 185 |  | -            cp -r $temp_restore_dir$WEKAN_DIR/data/* $WEKAN_DIR/data/
 | 
	
		
			
			| 186 |  | -        else
 | 
	
		
			
			| 187 |  | -            cp -r $temp_restore_dir/* $WEKAN_DIR/data/
 | 
	
		
			
			| 188 |  | -        fi
 | 
	
		
			
			| 189 |  | -        rm -rf $temp_restore_dir
 | 
	
		
			
			| 190 |  | -        systemctl start wekan
 | 
	
		
			
			| 191 |  | -    fi
 | 
	
		
			
			| 192 |  | -}
 | 
	
		
			
			| 193 |  | -
 | 
	
		
			
			| 194 |  | -function remove_wekan {
 | 
	
		
			
			| 195 |  | -    systemctl stop wekan
 | 
	
		
			
			| 196 |  | -    systemctl disable wekan
 | 
	
		
			
			| 197 |  | -    if [ -f /etc/systemd/system/wekan.service ]; then
 | 
	
		
			
			| 198 |  | -        rm /etc/systemd/system/wekan.service
 | 
	
		
			
			| 199 |  | -    fi
 | 
	
		
			
			| 200 |  | -    systemctl daemon-reload
 | 
	
		
			
			| 201 |  | -
 | 
	
		
			
			| 202 |  | -    function_check remove_nodejs
 | 
	
		
			
			| 203 |  | -    remove_nodejs wekan
 | 
	
		
			
			| 204 |  | -
 | 
	
		
			
			| 205 |  | -    nginx_dissite wekan
 | 
	
		
			
			| 206 |  | -
 | 
	
		
			
			| 207 |  | -    if [ -d $WEKAN_DIR ]; then
 | 
	
		
			
			| 208 |  | -        rm -rf $WEKAN_DIR
 | 
	
		
			
			| 209 |  | -    fi
 | 
	
		
			
			| 210 |  | -    if [ -f /etc/nginx/sites-available/wekan ]; then
 | 
	
		
			
			| 211 |  | -        rm /etc/nginx/sites-available/wekan
 | 
	
		
			
			| 212 |  | -    fi
 | 
	
		
			
			| 213 |  | -    function_check drop_database
 | 
	
		
			
			| 214 |  | -    drop_database wekan
 | 
	
		
			
			| 215 |  | -    function_check remove_onion_service
 | 
	
		
			
			| 216 |  | -    remove_onion_service wekan ${WEKAN_ONION_PORT}
 | 
	
		
			
			| 217 |  | -    remove_app wekan
 | 
	
		
			
			| 218 |  | -    remove_completion_param install_wekan
 | 
	
		
			
			| 219 |  | -    sed -i '/wekan/d' $COMPLETION_FILE
 | 
	
		
			
			| 220 |  | -
 | 
	
		
			
			| 221 |  | -    groupdel -f wekan
 | 
	
		
			
			| 222 |  | -    userdel -r wekan
 | 
	
		
			
			| 223 |  | -    remove_meteor
 | 
	
		
			
			| 224 |  | -}
 | 
	
		
			
			| 225 |  | -
 | 
	
		
			
			| 226 |  | -function wekan_create_database {
 | 
	
		
			
			| 227 |  | -    if [ -f ${IMAGE_PASSWORD_FILE} ]; then
 | 
	
		
			
			| 228 |  | -        WEKAN_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
 | 
	
		
			
			| 229 |  | -    else
 | 
	
		
			
			| 230 |  | -        if [ ! ${GIT_ADMIN_PASSWORD} ]; then
 | 
	
		
			
			| 231 |  | -            WEKAN_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
 | 
	
		
			
			| 232 |  | -        fi
 | 
	
		
			
			| 233 |  | -    fi
 | 
	
		
			
			| 234 |  | -    if [ ! $WEKAN_ADMIN_PASSWORD ]; then
 | 
	
		
			
			| 235 |  | -        return
 | 
	
		
			
			| 236 |  | -    fi
 | 
	
		
			
			| 237 |  | -
 | 
	
		
			
			| 238 |  | -    function_check create_database
 | 
	
		
			
			| 239 |  | -    create_database gogs "$WEKAN_ADMIN_PASSWORD"
 | 
	
		
			
			| 240 |  | -}
 | 
	
		
			
			| 241 |  | -
 | 
	
		
			
			| 242 |  | -function install_wekan_main {
 | 
	
		
			
			| 243 |  | -    if [[ $(app_is_installed wekan_main) == "1" ]]; then
 | 
	
		
			
			| 244 |  | -        return
 | 
	
		
			
			| 245 |  | -    fi
 | 
	
		
			
			| 246 |  | -
 | 
	
		
			
			| 247 |  | -    if [ ! -d /var/www/wekan ]; then
 | 
	
		
			
			| 248 |  | -        mkdir /var/www/wekan
 | 
	
		
			
			| 249 |  | -    fi
 | 
	
		
			
			| 250 |  | -    if [ -d $WEKAN_DIR ]; then
 | 
	
		
			
			| 251 |  | -        rm -rf $WEKAN_DIR
 | 
	
		
			
			| 252 |  | -    fi
 | 
	
		
			
			| 253 |  | -
 | 
	
		
			
			| 254 |  | -    if [ -d /repos/wekan ]; then
 | 
	
		
			
			| 255 |  | -        mkdir -p $WEKAN_DIR
 | 
	
		
			
			| 256 |  | -        cp -r -p /repos/wekan/. $WEKAN_DIR
 | 
	
		
			
			| 257 |  | -        cd $WEKAN_DIR
 | 
	
		
			
			| 258 |  | -        git pull
 | 
	
		
			
			| 259 |  | -    else
 | 
	
		
			
			| 260 |  | -        function_check git_clone
 | 
	
		
			
			| 261 |  | -        git_clone $WEKAN_REPO $WEKAN_DIR
 | 
	
		
			
			| 262 |  | -    fi
 | 
	
		
			
			| 263 |  | -
 | 
	
		
			
			| 264 |  | -    if [ ! -d $WEKAN_DIR ]; then
 | 
	
		
			
			| 265 |  | -        echo $'Unable to clone wekan repo'
 | 
	
		
			
			| 266 |  | -        exit 783251
 | 
	
		
			
			| 267 |  | -    fi
 | 
	
		
			
			| 268 |  | -
 | 
	
		
			
			| 269 |  | -    # an unprivileged user to run as
 | 
	
		
			
			| 270 |  | -    groupadd wekan
 | 
	
		
			
			| 271 |  | -    useradd -c "Wekan account" -d $WEKAN_DIR/ -m -r -g wekan wekan
 | 
	
		
			
			| 272 |  | -
 | 
	
		
			
			| 273 |  | -    cd $WEKAN_DIR
 | 
	
		
			
			| 274 |  | -    git checkout $WEKAN_COMMIT -b $WEKAN_COMMIT
 | 
	
		
			
			| 275 |  | -    set_completion_param "wekan commit" "$WEKAN_COMMIT"
 | 
	
		
			
			| 276 |  | -
 | 
	
		
			
			| 277 |  | -    chown -R wekan:wekan $WEKAN_DIR
 | 
	
		
			
			| 278 |  | -
 | 
	
		
			
			| 279 |  | -    WEKAN_ONION_HOSTNAME=$(add_onion_service wekan 80 ${WEKAN_ONION_PORT})
 | 
	
		
			
			| 280 |  | -    set_completion_param "wekan onion domain" "$WEKAN_ONION_HOSTNAME"
 | 
	
		
			
			| 281 |  | -
 | 
	
		
			
			| 282 |  | -    wekan_nginx_site=/etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 283 |  | -    if [[ ${ONION_ONLY} == "no" ]]; then
 | 
	
		
			
			| 284 |  | -        function_check nginx_http_redirect
 | 
	
		
			
			| 285 |  | -        nginx_http_redirect ${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 286 |  | -        echo 'server {' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 287 |  | -        echo '    listen 443 ssl;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 288 |  | -        echo '    #listen [::]:443 ssl;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 289 |  | -        echo "    root /var/www/${WEKAN_DOMAIN_NAME}/htdocs;" >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 290 |  | -        echo "    server_name ${WEKAN_DOMAIN_NAME};" >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 291 |  | -        echo '    access_log /dev/null;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 292 |  | -        echo "    error_log /dev/null;" >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 293 |  | -        echo '' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 294 |  | -        function_check nginx_ssl
 | 
	
		
			
			| 295 |  | -        nginx_ssl ${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 296 |  | -        function_check nginx_disable_sniffing
 | 
	
		
			
			| 297 |  | -        nginx_disable_sniffing ${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 298 |  | -        echo '    add_header Strict-Transport-Security max-age=0;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 299 |  | -        echo '' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 300 |  | -        echo '    location / {' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 301 |  | -        function_check nginx_limits
 | 
	
		
			
			| 302 |  | -        nginx_limits ${WEKAN_DOMAIN_NAME} '15m'
 | 
	
		
			
			| 303 |  | -        echo "        proxy_pass http://localhost:$WEKAN_PORT;" >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 304 |  | -        echo '    }' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 305 |  | -        echo '' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 306 |  | -        echo '    fastcgi_buffers 64 4K;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 307 |  | -        echo '' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 308 |  | -        echo '    error_page 403 /core/templates/403.php;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 309 |  | -        echo '    error_page 404 /core/templates/404.php;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 310 |  | -        echo '' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 311 |  | -        echo '    location = /robots.txt {' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 312 |  | -        echo '        allow all;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 313 |  | -        echo '        log_not_found off;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 314 |  | -        echo '        access_log /dev/null;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 315 |  | -        echo '    }' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 316 |  | -        echo '}' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 317 |  | -        echo '' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 318 |  | -    else
 | 
	
		
			
			| 319 |  | -        echo -n '' > /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 320 |  | -    fi
 | 
	
		
			
			| 321 |  | -    echo 'server {' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 322 |  | -    echo "    listen 127.0.0.1:${WEKAN_ONION_PORT} default_server;" >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 323 |  | -    echo "    root /var/www/$WEKAN_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 324 |  | -    echo "    server_name $WEKAN_DOMAIN_NAME;" >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 325 |  | -    echo '    access_log /dev/null;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 326 |  | -    echo "    error_log /dev/null;" >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 327 |  | -    echo '' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 328 |  | -    function_check nginx_disable_sniffing
 | 
	
		
			
			| 329 |  | -    nginx_disable_sniffing ${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 330 |  | -    echo '    add_header Strict-Transport-Security max-age=0;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 331 |  | -    echo '' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 332 |  | -    echo '    location / {' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 333 |  | -    function_check nginx_limits
 | 
	
		
			
			| 334 |  | -    nginx_limits ${WEKAN_DOMAIN_NAME} '15m'
 | 
	
		
			
			| 335 |  | -    echo "        proxy_pass http://localhost:$WEKAN_PORT;" >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 336 |  | -    echo '    }' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 337 |  | -    echo '' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 338 |  | -    echo '    fastcgi_buffers 64 4K;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 339 |  | -    echo '' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 340 |  | -    echo '    error_page 403 /core/templates/403.php;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 341 |  | -    echo '    error_page 404 /core/templates/404.php;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 342 |  | -    echo '' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 343 |  | -    echo '    location = /robots.txt {' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 344 |  | -    echo '        allow all;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 345 |  | -    echo '        log_not_found off;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 346 |  | -    echo '        access_log /dev/null;' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 347 |  | -    echo '    }' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 348 |  | -    echo '}' >> /etc/nginx/sites-available/${WEKAN_DOMAIN_NAME}
 | 
	
		
			
			| 349 |  | -
 | 
	
		
			
			| 350 |  | -    function_check nginx_ensite
 | 
	
		
			
			| 351 |  | -    nginx_ensite wekan
 | 
	
		
			
			| 352 |  | -
 | 
	
		
			
			| 353 |  | -    install_completed wekan_main
 | 
	
		
			
			| 354 |  | -}
 | 
	
		
			
			| 355 |  | -
 | 
	
		
			
			| 356 |  | -function install_wekan {
 | 
	
		
			
			| 357 |  | -    apt-get -qy install build-essential c++ capnproto curl
 | 
	
		
			
			| 358 |  | -
 | 
	
		
			
			| 359 |  | -    function_check install_nodejs
 | 
	
		
			
			| 360 |  | -    install_nodejs wekan
 | 
	
		
			
			| 361 |  | -
 | 
	
		
			
			| 362 |  | -    install_wekan_main
 | 
	
		
			
			| 363 |  | -    install_meteor
 | 
	
		
			
			| 364 |  | -
 | 
	
		
			
			| 365 |  | -    cd $WEKAN_DIR
 | 
	
		
			
			| 366 |  | -
 | 
	
		
			
			| 367 |  | -    su -c 'npm install babel-runtime' - wekan
 | 
	
		
			
			| 368 |  | -    su -c 'npm install node-gyp' - wekan
 | 
	
		
			
			| 369 |  | -    su -c 'npm install node-pre-gyp' - wekan
 | 
	
		
			
			| 370 |  | -    su -c 'npm install fibers' - wekan
 | 
	
		
			
			| 371 |  | -    su -c 'npm install bcrypt' - wekan
 | 
	
		
			
			| 372 |  | -    su -c 'npm install bson' - wekan
 | 
	
		
			
			| 373 |  | -    su -c 'npm install es6-promise' - wekan
 | 
	
		
			
			| 374 |  | -    su -c 'npm install meteor-node-stubs' - wekan
 | 
	
		
			
			| 375 |  | -    su -c 'npm install winston' - wekan
 | 
	
		
			
			| 376 |  | -    su -c 'npm install winston-zulip' - wekan
 | 
	
		
			
			| 377 |  | -    su -c 'npm install xss' - wekan
 | 
	
		
			
			| 378 |  | -
 | 
	
		
			
			| 379 |  | -    # Remove any directories from previous installs
 | 
	
		
			
			| 380 |  | -    if [ -d $WEKAN_DIR/.meteor ]; then
 | 
	
		
			
			| 381 |  | -        rm -rf $WEKAN_DIR/.meteor
 | 
	
		
			
			| 382 |  | -    fi
 | 
	
		
			
			| 383 |  | -    if [ -d $WEKAN_DIR/app ]; then
 | 
	
		
			
			| 384 |  | -        rm -rf $WEKAN_DIR/app
 | 
	
		
			
			| 385 |  | -    fi
 | 
	
		
			
			| 386 |  | -    if [ -d $WEKAN_DIR/app_build ]; then
 | 
	
		
			
			| 387 |  | -        rm -rf $WEKAN_DIR/app_build
 | 
	
		
			
			| 388 |  | -    fi
 | 
	
		
			
			| 389 |  | -
 | 
	
		
			
			| 390 |  | -    # Get additional packages
 | 
	
		
			
			| 391 |  | -    mkdir -p $WEKAN_DIR/.meteor/packages
 | 
	
		
			
			| 392 |  | -    chown wekan:wekan --recursive $WEKAN_DIR/.meteor
 | 
	
		
			
			| 393 |  | -    cd $WEKAN_DIR/.meteor/packages
 | 
	
		
			
			| 394 |  | -    if [ ! -d /repos/flowrouter ]; then
 | 
	
		
			
			| 395 |  | -        su -c "git clone --depth 1 -b master $FLOW_ROUTER_REPO kadira-flow-router" - wekan
 | 
	
		
			
			| 396 |  | -    else
 | 
	
		
			
			| 397 |  | -        mkdir kadira-flow-router
 | 
	
		
			
			| 398 |  | -        cp -r -p /repos/flowrouter/. kadira-flow-router
 | 
	
		
			
			| 399 |  | -        cd kadira-flow-router
 | 
	
		
			
			| 400 |  | -        git pull
 | 
	
		
			
			| 401 |  | -        cd ..
 | 
	
		
			
			| 402 |  | -    fi
 | 
	
		
			
			| 403 |  | -    cd kadira-flow-router
 | 
	
		
			
			| 404 |  | -    git checkout $FLOW_ROUTER_COMMIT -b $FLOW_ROUTER_COMMIT
 | 
	
		
			
			| 405 |  | -    cd ..
 | 
	
		
			
			| 406 |  | -    if [ ! -d /repos/meteoruseraccounts ]; then
 | 
	
		
			
			| 407 |  | -        su -c "git clone --depth 1 -b master $METEOR_USERACCOUNTS_REPO meteor-useraccounts-core" - wekan
 | 
	
		
			
			| 408 |  | -    else
 | 
	
		
			
			| 409 |  | -        mkdir meteor-useraccounts-core
 | 
	
		
			
			| 410 |  | -        cp -r -p /repos/meteoruseraccounts/. meteor-useraccounts-core
 | 
	
		
			
			| 411 |  | -        cd meteor-useraccounts-core
 | 
	
		
			
			| 412 |  | -        git pull
 | 
	
		
			
			| 413 |  | -        cd ..
 | 
	
		
			
			| 414 |  | -    fi
 | 
	
		
			
			| 415 |  | -    cd meteor-useraccounts-core
 | 
	
		
			
			| 416 |  | -    git checkout $METEOR_USERACCOUNTS_COMMIT -b $METEOR_USERACCOUNTS_COMMIT
 | 
	
		
			
			| 417 |  | -    cd ..
 | 
	
		
			
			| 418 |  | -    if [ ! -f $WEKAN_DIR/.meteor/packages/meteor-useraccounts-core/package.js ]; then
 | 
	
		
			
			| 419 |  | -        echo $"File not found: $WEKAN_DIR/.meteor/packages/meteor-useraccounts-core/package.js"
 | 
	
		
			
			| 420 |  | -        exit 7289529
 | 
	
		
			
			| 421 |  | -    fi
 | 
	
		
			
			| 422 |  | -    sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' $WEKAN_DIR/.meteor/packages/meteor-useraccounts-core/package.js
 | 
	
		
			
			| 423 |  | -    cd $WEKAN_DIR/.meteor
 | 
	
		
			
			| 424 |  | -    su -c "$WEKAN_DIR/.meteor/meteor -- help" - wekan
 | 
	
		
			
			| 425 |  | -
 | 
	
		
			
			| 426 |  | -    # Build app
 | 
	
		
			
			| 427 |  | -    if [ ! -d $WEKAN_DIR/app ]; then
 | 
	
		
			
			| 428 |  | -        echo $'No app subdirectory found'
 | 
	
		
			
			| 429 |  | -        exit 294569
 | 
	
		
			
			| 430 |  | -    fi
 | 
	
		
			
			| 431 |  | -    cd $WEKAN_DIR/app
 | 
	
		
			
			| 432 |  | -    su -c "$WEKAN_DIR/.meteor/meteor add standard-minifier-js" - wekan
 | 
	
		
			
			| 433 |  | -    su -c "$WEKAN_DIR/.meteor/meteor npm install" - wekan
 | 
	
		
			
			| 434 |  | -    su -c "$WEKAN_DIR/.meteor/meteor build --directory $WEKAN_DIR/app_build" - wekan
 | 
	
		
			
			| 435 |  | -    cp $WEKAN_DIR/app/fix-download-unicode/cfs_access-point.txt $WEKAN_DIR/app_build/bundle/programs/server/packages/cfs_access-point.js
 | 
	
		
			
			| 436 |  | -    chown wekan:wekan $WEKAN_DIR/app_build/bundle/programs/server/packages/cfs_access-point.js
 | 
	
		
			
			| 437 |  | -    sed -i "s|build\/Release\/bson|browser_build\/bson|g" $WEKAN_DIR/app_build/bundle/programs/server/npm/node_modules/meteor/cfs_gridfs/node_modules/mongodb/node_modules/bson/ext/index.js
 | 
	
		
			
			| 438 |  | -    if [ ! -d $WEKAN_DIR/app_build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt ]; then
 | 
	
		
			
			| 439 |  | -        echo $"No subdirectory found: $WEKAN_DIR/app_build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt"
 | 
	
		
			
			| 440 |  | -        exit 479832
 | 
	
		
			
			| 441 |  | -    fi
 | 
	
		
			
			| 442 |  | -    cd $WEKAN_DIR/app_build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
 | 
	
		
			
			| 443 |  | -    su -c 'rm -rf node_modules/bcrypt' - wekan
 | 
	
		
			
			| 444 |  | -    su -c 'npm install bcrypt' - wekan
 | 
	
		
			
			| 445 |  | -    cd $WEKAN_DIR/app_build/bundle/programs/server/
 | 
	
		
			
			| 446 |  | -    su -c 'npm install' - wekan
 | 
	
		
			
			| 447 |  | -    mv $WEKAN_DIR/app_build/bundle ../build
 | 
	
		
			
			| 448 |  | -
 | 
	
		
			
			| 449 |  | -    if [ ! -f $WEKAN_DIR/build/main.js ]; then
 | 
	
		
			
			| 450 |  | -        echo $'main.js not found'
 | 
	
		
			
			| 451 |  | -        exit 7828252
 | 
	
		
			
			| 452 |  | -    fi
 | 
	
		
			
			| 453 |  | -
 | 
	
		
			
			| 454 |  | -    # Cleanup
 | 
	
		
			
			| 455 |  | -    rm -R $WEKAN_DIR/.meteor
 | 
	
		
			
			| 456 |  | -    rm -R $WEKAN_DIR/app
 | 
	
		
			
			| 457 |  | -    rm -R $WEKAN_DIR/app_build
 | 
	
		
			
			| 458 |  | -
 | 
	
		
			
			| 459 |  | -    chown -R wekan:wekan $WEKAN_DIR
 | 
	
		
			
			| 460 |  | -
 | 
	
		
			
			| 461 |  | -    function_check install_mariadb
 | 
	
		
			
			| 462 |  | -    install_mariadb
 | 
	
		
			
			| 463 |  | -
 | 
	
		
			
			| 464 |  | -    function_check get_mariadb_password
 | 
	
		
			
			| 465 |  | -    get_mariadb_password
 | 
	
		
			
			| 466 |  | -
 | 
	
		
			
			| 467 |  | -    function_check wekan_create_database
 | 
	
		
			
			| 468 |  | -    wekan_create_database
 | 
	
		
			
			| 469 |  | -
 | 
	
		
			
			| 470 |  | -    # daemon
 | 
	
		
			
			| 471 |  | -    echo '[Unit]' > /etc/systemd/system/wekan.service
 | 
	
		
			
			| 472 |  | -    echo 'Description=Wekan' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 473 |  | -    echo 'After=syslog.target' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 474 |  | -    echo 'After=network.target' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 475 |  | -    echo '' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 476 |  | -    echo '[Service]' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 477 |  | -    echo 'User=wekan' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 478 |  | -    echo 'Group=wekan' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 479 |  | -    echo "WorkingDirectory=$WEKAN_DIR" >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 480 |  | -    echo "ExecStart=/usr/local/bin/node $WEKAN_DIR/build/main.js" >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 481 |  | -    echo 'Environment=PATH=/usr/bin:/usr/local/bin' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 482 |  | -    echo 'Environment=NODE_ENV=production' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 483 |  | -    echo 'Restart=on-failure' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 484 |  | -    echo '' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 485 |  | -    echo '[Install]' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 486 |  | -    echo 'WantedBy=multi-user.target' >> /etc/systemd/system/wekan.service
 | 
	
		
			
			| 487 |  | -    systemctl enable wekan.service
 | 
	
		
			
			| 488 |  | -    systemctl daemon-reload
 | 
	
		
			
			| 489 |  | -    systemctl start wekan.service
 | 
	
		
			
			| 490 |  | -
 | 
	
		
			
			| 491 |  | -    systemctl restart nginx
 | 
	
		
			
			| 492 |  | -
 | 
	
		
			
			| 493 |  | -    set_completion_param "wekan domain" "$WEKAN_DOMAIN_NAME"
 | 
	
		
			
			| 494 |  | -
 | 
	
		
			
			| 495 |  | -    APP_INSTALLED=1
 | 
	
		
			
			| 496 |  | -}
 | 
	
		
			
			| 497 |  | -
 | 
	
		
			
			| 498 |  | -# NOTE: deliberately there is no "exit 0"
 |