mirror of https://github.com/MISP/misp-docker
				
				
				
			
		
			
				
	
	
		
			126 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			126 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
#!/bin/bash
 | 
						|
 | 
						|
MISP_APP_CONFIG_PATH=/var/www/MISP/app/Config
 | 
						|
[ -z "$MYSQL_HOST" ] && MYSQL_HOST=db
 | 
						|
[ -z "$MYSQL_PORT" ] && MYSQL_PORT=3306
 | 
						|
[ -z "$MYSQL_USER" ] && MYSQL_USER=misp
 | 
						|
[ -z "$MYSQL_PASSWORD" ] && MYSQL_PASSWORD=example
 | 
						|
[ -z "$MYSQL_DATABASE" ] && MYSQL_DATABASE=misp
 | 
						|
[ -z "$REDIS_FQDN" ] && REDIS_FQDN=redis
 | 
						|
 | 
						|
[ -z "$MYSQLCMD" ] && MYSQLCMD="mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -P $MYSQL_PORT -h $MYSQL_HOST -r -N  $MYSQL_DATABASE"
 | 
						|
 | 
						|
ENTRYPOINT_PID_FILE="/entrypoint_apache.install"
 | 
						|
[ ! -f $ENTRYPOINT_PID_FILE ] && touch $ENTRYPOINT_PID_FILE
 | 
						|
 | 
						|
change_php_vars(){
 | 
						|
    for FILE in $(ls /etc/php/*/apache2/php.ini)
 | 
						|
    do  
 | 
						|
        sed -i "s/memory_limit = .*/memory_limit = 2048M/" "$FILE"
 | 
						|
        sed -i "s/max_execution_time = .*/max_execution_time = 300/" "$FILE"
 | 
						|
        sed -i "s/upload_max_filesize = .*/upload_max_filesize = 50M/" "$FILE"
 | 
						|
        sed -i "s/post_max_size = .*/post_max_size = 50M/" "$FILE"
 | 
						|
    done
 | 
						|
}
 | 
						|
 | 
						|
init_misp_config(){
 | 
						|
    [ -f $MISP_APP_CONFIG_PATH/bootstrap.php ] || cp $MISP_APP_CONFIG_PATH/bootstrap.default.php $MISP_APP_CONFIG_PATH/bootstrap.php
 | 
						|
    [ -f $MISP_APP_CONFIG_PATH/database.php ] || cp $MISP_APP_CONFIG_PATH/database.default.php $MISP_APP_CONFIG_PATH/database.php
 | 
						|
    [ -f $MISP_APP_CONFIG_PATH/core.php ] || cp $MISP_APP_CONFIG_PATH/core.default.php $MISP_APP_CONFIG_PATH/core.php
 | 
						|
    [ -f $MISP_APP_CONFIG_PATH/config.php ] || cp $MISP_APP_CONFIG_PATH/config.default.php $MISP_APP_CONFIG_PATH/config.php
 | 
						|
 | 
						|
    echo "Configure MISP | Set DB User, Password and Host in database.php"
 | 
						|
    sed -i "s/localhost/$MYSQL_HOST/" $MISP_APP_CONFIG_PATH/database.php
 | 
						|
    sed -i "s/db\s*login/$MYSQL_USER/" $MISP_APP_CONFIG_PATH/database.php
 | 
						|
    sed -i "s/db\s*password/$MYSQL_PASSWORD/" $MISP_APP_CONFIG_PATH/database.php
 | 
						|
 | 
						|
    #### CAKE ####
 | 
						|
    echo "Configure Cake | Change Redis host to $REDIS_FQDN"
 | 
						|
    sed -i "s/'host' => 'localhost'.*/'host' => '$REDIS_FQDN',          \/\/ Redis server hostname/" "/var/www/MISP/app/Plugin/CakeResque/Config/config.php"
 | 
						|
}
 | 
						|
 | 
						|
init_misp_files(){
 | 
						|
    if [ ! -f /var/www/MISP/app/files/INIT ]; then
 | 
						|
        cp -R /var/www/MISP/app/files.dist/* /var/www/MISP/app/files
 | 
						|
        touch /var/www/MISP/app/files/INIT
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
check_mysql(){
 | 
						|
    # Test when MySQL is ready....
 | 
						|
 | 
						|
    # Test if entrypoint_local_mariadb.sh is ready
 | 
						|
    sleep 5
 | 
						|
    while (true)
 | 
						|
    do
 | 
						|
        [ ! -f /var/lib/mysql/entrypoint_local_mariadb.sh.pid ] && break
 | 
						|
        sleep 5
 | 
						|
    done
 | 
						|
 | 
						|
    # wait for Database come ready
 | 
						|
    isDBup () {
 | 
						|
        echo "SHOW STATUS" | $MYSQLCMD 1>/dev/null
 | 
						|
        echo $?
 | 
						|
    }
 | 
						|
    
 | 
						|
    RETRY=100
 | 
						|
    until [ $(isDBup) -eq 0 ] || [ $RETRY -le 0 ] ; do
 | 
						|
        echo "Waiting for database to come up"
 | 
						|
        sleep 5
 | 
						|
        RETRY=$(( $RETRY - 1))
 | 
						|
    done
 | 
						|
    if [ $RETRY -le 0 ]; then
 | 
						|
        >&2 echo "Error: Could not connect to Database on $MYSQL_HOST:$MYSQL_PORT"
 | 
						|
        exit 1
 | 
						|
    fi
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
init_mysql(){
 | 
						|
    #####################################################################
 | 
						|
    if [[ "$INIT_MYSQL" == true ]]; then
 | 
						|
        check_mysql
 | 
						|
        # import MISP DB Scheme
 | 
						|
        echo "... importing MySQL scheme..."
 | 
						|
        $MYSQLCMD < /var/www/MISP/INSTALL/MYSQL.sql
 | 
						|
        echo "MySQL import...finished"
 | 
						|
    fi
 | 
						|
    echo
 | 
						|
}
 | 
						|
 | 
						|
start_apache() {
 | 
						|
    # Apache gets grumpy about PID files pre-existing
 | 
						|
    rm -f /run/apache2/apache2.pid
 | 
						|
    # execute APACHE2
 | 
						|
    /usr/sbin/apache2ctl -D FOREGROUND -k "$1"
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
##### check MySQL
 | 
						|
echo "Check if MySQL is ready..." && check_mysql
 | 
						|
 | 
						|
# Change PHP VARS
 | 
						|
echo "Change PHP values ..." && change_php_vars
 | 
						|
 | 
						|
##### Import MySQL scheme
 | 
						|
echo "Import MySQL scheme..." && init_mysql
 | 
						|
 | 
						|
##### initialize MISP-Server
 | 
						|
echo "Initialize misp base config..." && init_misp_config
 | 
						|
 | 
						|
echo "Make sure files dir is setup..." && init_misp_files
 | 
						|
 | 
						|
##### Check permissions #####
 | 
						|
    echo "Configure MISP | Check permissions..."
 | 
						|
    echo "... chown -R www-data.www-data /var/www/MISP..." && find /var/www/MISP -not -user www-data -exec chown www-data.www-data {} +
 | 
						|
    echo "... chmod -R 0750 /var/www/MISP..." && find /var/www/MISP -perm 550 -type f -exec chmod 0550 {} + && find /var/www/MISP -perm 770 -type d -exec chmod 0770 {} +
 | 
						|
    echo "... chmod -R g+ws /var/www/MISP/app/tmp..." && chmod -R g+ws /var/www/MISP/app/tmp
 | 
						|
    echo "... chmod -R g+ws /var/www/MISP/app/files..." && chmod -R g+ws /var/www/MISP/app/files
 | 
						|
    echo "... chmod -R g+ws /var/www/MISP/app/files/scripts/tmp" && chmod -R g+ws /var/www/MISP/app/files/scripts/tmp
 | 
						|
 | 
						|
# delete pid file
 | 
						|
[ -f $ENTRYPOINT_PID_FILE ] && rm $ENTRYPOINT_PID_FILE
 | 
						|
 | 
						|
##### execute apache
 | 
						|
start_apache start
 |