As per discussion on https://discourse.diasporafoundation.org/t/removing-diaspora-s-current-chat-integration/2718, nobody raised serious concerns or objections. Given future plans, we do not think having an unfinished implementation of something that likely will not get finished in the current form is worth it. So let's get rid of it.
223 lines
5.8 KiB
Bash
Executable file
223 lines
5.8 KiB
Bash
Executable file
#!/bin/sh
|
|
# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
|
# licensed under the Affero General Public License version 3 or later. See
|
|
# the COPYRIGHT file.
|
|
|
|
warning()
|
|
{
|
|
echo "WARNING: $1" >&2
|
|
}
|
|
|
|
fatal()
|
|
{
|
|
echo "FATAL: $1" >&2
|
|
exit 1
|
|
}
|
|
|
|
on_failure()
|
|
{
|
|
if [ $? != 0 ]
|
|
then
|
|
fatal "$1"
|
|
fi
|
|
}
|
|
|
|
# Check if already running/port blocked
|
|
chk_service()
|
|
{
|
|
port=${1:?Missing port}
|
|
case $os in
|
|
*[Bb][Ss][Dd]*|Darwin)
|
|
## checks ipv[46]
|
|
netstat -anL | awk '{print $2}' | grep "\.$1$"
|
|
;;
|
|
*)
|
|
# Is someone listening on the ports already? (ipv4 only test ?)
|
|
netstat -nl | grep '[^:]:'$port'[ \t]'
|
|
;;
|
|
esac
|
|
}
|
|
|
|
|
|
# ensure right directory
|
|
realpath=$( ruby -e "puts File.expand_path(\"$0\")")
|
|
cd $(dirname $realpath)/..
|
|
|
|
#Warn if legacy config exists
|
|
if [ -e "config/script_server.yml" ]
|
|
then
|
|
warning "config/script_server.yml was merged into config/diaspora.yml. Please read the changelog!"
|
|
fi
|
|
|
|
# Check if database.yml exists
|
|
if [ ! -e "config/database.yml" ]
|
|
then
|
|
fatal "config/database.yml is missing! Copy over config/database.yml.example to config/database.yml and edit it properly!"
|
|
fi
|
|
|
|
# Check if diaspora.yml exists
|
|
if [ ! -e "config/diaspora.yml" ]
|
|
then
|
|
fatal "config/diaspora.yml is missing! Copy over config/diaspora.yml.example to config/diaspora.yml and edit it properly!"
|
|
fi
|
|
|
|
command -v git > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
# Check if we're in a repository, before doing any verification.
|
|
if git status > /dev/null 2>&1;
|
|
then
|
|
# Check if git merge is in progress
|
|
if [ -f .git/MERGE_MODE ]; then
|
|
fatal "A git merge is in progress!"
|
|
fi
|
|
|
|
# Check if detached head state
|
|
git_branch_name="$(git symbolic-ref HEAD 2>/dev/null)"
|
|
if [ -z "$git_branch_name" ];
|
|
then
|
|
warning "You are in detached HEAD state!"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Do RVM checks if RVM is being used
|
|
command -v rvm > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
rvm_gemset="$(rvm current | cut -d"@" -f2)"
|
|
project_gemset="$(cat .ruby-gemset | tr -d " \t\n\r")"
|
|
if [ "$rvm_gemset" != "$project_gemset" ]; then
|
|
warning "Project gemset is $project_gemset but you are using $rvm_gemset"
|
|
fi
|
|
fi
|
|
|
|
# Check if bundle is complete
|
|
if ! bin/bundle check > /dev/null
|
|
then
|
|
fatal "Your bundle is not up to date, run the command \"bundle install\""
|
|
fi
|
|
|
|
# Setup environment
|
|
if [ -z "$RAILS_ENV" ]
|
|
then
|
|
RAILS_ENV=$(bin/bundle exec ruby ./script/get_config.rb server.rails_environment | grep -vE "is not writable|as your home directory temporarily" )
|
|
on_failure "Couldn't parse config/diaspora.yml!"
|
|
export RAILS_ENV
|
|
fi
|
|
|
|
|
|
os=$(uname -s)
|
|
vars=$(bin/bundle exec ruby ./script/get_config.rb \
|
|
single_process_mode=environment.single_process_mode? \
|
|
embed_sidekiq_worker=server.embed_sidekiq_worker \
|
|
workers=server.sidekiq_workers \
|
|
redis_url=environment.redis \
|
|
| grep -vE "is not writable|as your home directory temporarily"
|
|
)
|
|
on_failure "Couldn't parse config/diaspora.yml!"
|
|
eval "$vars"
|
|
|
|
args="$@"
|
|
for arg in $(echo $args | awk '{ for (i = 1; i <= NF; i++) print $i}')
|
|
do
|
|
[ "$prev_arg" = '-p' ] && PORT="$arg"
|
|
prev_arg="$arg"
|
|
done
|
|
|
|
if [ -n "$PORT" ]
|
|
then
|
|
export PORT
|
|
|
|
services=$(chk_service $PORT)
|
|
if [ -n "$services" ]
|
|
then
|
|
fatal "Port $PORT is already in use.\n\t$services"
|
|
fi
|
|
fi
|
|
|
|
# Force AGPL
|
|
if [ -w "public" -a ! -e "public/source.tar.gz" ]
|
|
then
|
|
if command -v git > /dev/null 2>&1 && git rev-parse --is-inside-work-tree > /dev/null 2>&1
|
|
then
|
|
commit_sha=$(git rev-parse HEAD)
|
|
tar czf public/source.tar.gz $(git ls-tree -r $commit_sha | awk '{print $4}')
|
|
else
|
|
fatal "Can't generate public/source.tar.gz for you.
|
|
Please tar up a copy of your Diaspora installation and place it there."
|
|
fi
|
|
fi
|
|
|
|
if [ ! -e "public/source.tar.gz" ]
|
|
then
|
|
fatal "Can't find public/source.tar.gz"
|
|
fi
|
|
|
|
# Check if assets are precompiled
|
|
if [ "$RAILS_ENV" = "production" -a -z "$(find public/assets/ -maxdepth 1 -name 'main-*.js' -print -quit 2>/dev/null)" ]
|
|
then
|
|
fatal "You're running in production mode without having assets
|
|
precompiled. Now and after each update before you restart the
|
|
application, run:
|
|
bin/rake assets:precompile"
|
|
fi
|
|
|
|
# Check if redis is running
|
|
if [ "$single_process_mode" = "false" ]
|
|
then
|
|
if [ -n "$redis_url" ]
|
|
then
|
|
redis_param="url: '$redis_url'"
|
|
fi
|
|
if [ "$(bin/bundle exec ruby -e "require 'redis'; puts Redis.new($redis_param).ping" 2> /dev/null | grep -vE "is not writable|as your home directory temporarily" )" != "PONG" ]
|
|
then
|
|
fatal "Can't connect to redis. Please check if it's running and if environment.redis is configured correctly in config/diaspora.yml."
|
|
fi
|
|
fi
|
|
|
|
# Check for old curl versions (see https://github.com/diaspora/diaspora/issues/4202)
|
|
if [ `curl -V | grep AsynchDNS | wc -l` -ne 1 ]
|
|
then
|
|
warning "
|
|
*****************************************************************
|
|
curl does not support async DNS, this can cause Sidekiq to crash!
|
|
Please update curl to version 7.32, see issue
|
|
https://github.com/diaspora/diaspora/issues/4202 for details
|
|
*****************************************************************
|
|
"
|
|
fi
|
|
|
|
# Use libjemalloc if it's available for better memory usage
|
|
command -v ldconfig > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
ldconfig=ldconfig
|
|
elif [ -x /sbin/ldconfig ]; then
|
|
ldconfig=/sbin/ldconfig
|
|
fi
|
|
if [ -n "${ldconfig}" ]; then
|
|
jemalloc_path=$(${ldconfig} -p | grep jemalloc | tr ' ' '\n' | grep '^/' | head -1)
|
|
|
|
if [ -n "${jemalloc_path}" ]; then
|
|
export LD_PRELOAD="${jemalloc_path}"
|
|
fi
|
|
fi
|
|
|
|
# Start Diaspora
|
|
printf "Starting Diaspora in $RAILS_ENV mode "
|
|
if [ -n "$PORT" ]
|
|
then
|
|
printf "on port $PORT "
|
|
fi
|
|
if [ "$embed_sidekiq_worker" = "true" ]
|
|
then
|
|
echo "with a Sidekiq worker embedded into Unicorn."
|
|
workers=0
|
|
elif [ "$single_process_mode" = "true" ]
|
|
then
|
|
echo "with job processing inside the request cycle."
|
|
workers=0
|
|
else
|
|
echo "with $workers Sidekiq worker(s)."
|
|
fi
|
|
echo ""
|
|
|
|
exec bin/bundle exec loader_eye --stop_all -c config/eye.rb
|