From 3e0948d9618678ff0a51b79bff0d1fdaa004a190 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Wed, 20 Oct 2010 20:19:49 +0200 Subject: [PATCH] Polishing up after git mess... --- config/app_config.yml.example | 3 +- pkg/fedora/diaspora-setup | 5 +- pkg/fedora/diaspora-wsd | 4 +- pkg/fedora/diaspora.spec | 6 ++ pkg/fedora/dist/.gitkeep | 0 pkg/ubuntu/diaspora-install | 5 +- pkg/ubuntu/diaspora-setup | 4 +- pkg/ubuntu/diaspora-wsd | 102 ---------------------------------- pkg/ubuntu/diaspora-wsd.conf | 17 ++++++ pkg/ubuntu/dist/.gitkeep | 0 script/websocket_server.rb | 22 +++++++- 11 files changed, 57 insertions(+), 111 deletions(-) create mode 100644 pkg/fedora/dist/.gitkeep delete mode 100755 pkg/ubuntu/diaspora-wsd create mode 100644 pkg/ubuntu/diaspora-wsd.conf create mode 100644 pkg/ubuntu/dist/.gitkeep diff --git a/config/app_config.yml.example b/config/app_config.yml.example index 0bd3771f7..00dcb0b5f 100644 --- a/config/app_config.yml.example +++ b/config/app_config.yml.example @@ -7,6 +7,7 @@ default: debug: false socket_debug : false socket_host: 0.0.0.0 + socket_pidfile: "log/diaspora-wsd.pid" socket_port: 8080 socket_collection_name: 'websocket' pubsub_server: 'https://pubsubhubbub.appspot.com/' @@ -18,7 +19,7 @@ default: smtp_authentication: 'plain' smtp_username: 'no-reply@example.com' smtp_password: 'secret' - + development: diff --git a/pkg/fedora/diaspora-setup b/pkg/fedora/diaspora-setup index 0fa90dc9e..0214e419a 100755 --- a/pkg/fedora/diaspora-setup +++ b/pkg/fedora/diaspora-setup @@ -39,10 +39,11 @@ else exit 1 fi -# %attr(0777, diaspora, diaspora) doesn't work in specfile due to umask 022. -chmod 777 /var/lib/diaspora/uploads chown -R diaspora /var/log/diaspora +sed -i '/socket_pidfile:/s|:.*|: /var/run/diaspora/diaspora-wsd.pid|' \ + config/app_config.yml + hostname=$( awk '/pod_url:/ { print $2; exit }' > dirs && mv -f dirs files sed -i -e '\|.*/master/config.ru"$|d' \ -e '\|.*/master/config/environment.rb"$|d' \ + -e '\|.*/run/diaspora"$|d' \ + -e '\|.*/pkg/fedora/dist"$|d' \ -e 's|%{buildroot}||' -e 's|//|/|' -e '/""/d' \ files @@ -101,6 +104,7 @@ sed -i -e '\|.*/master/config.ru"$|d' \ %post wsd /sbin/chkconfig --add diaspora-wsd || : + %preun wsd if [ $1 -eq 0 ] ; then service diaspora-wsd stop &>/dev/null || : @@ -117,9 +121,11 @@ rm -fr $RPM_BUILD_ROOT %doc AUTHORS README.md GNU-AGPL-3.0 COPYRIGHT README-Fedora.md %attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/config.ru %attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/config/environment.rb +%attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/pkg/fedora/dist %attr(-, diaspora, diaspora) %{_localstatedir}/log/diaspora %attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/uploads %attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/tmp +%attr(-, diaspora, diaspora) %{_localstatedir}/run/diaspora %{_datadir}/diaspora/master/tmp %{_datadir}/diaspora/master/public/uploads diff --git a/pkg/fedora/dist/.gitkeep b/pkg/fedora/dist/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pkg/ubuntu/diaspora-install b/pkg/ubuntu/diaspora-install index e7cef8f31..0685aa3ae 100755 --- a/pkg/ubuntu/diaspora-install +++ b/pkg/ubuntu/diaspora-install @@ -30,7 +30,7 @@ sed -i '/BUNDLE_PATH/s|:.*|: /usr/lib/diaspora-bundle/bundle|' \ cp master/GNU-AGPL-3.0 master/COPYRIGHT master/README.md master/AUTHORS . cp master/config/app_config.yml.example ./app_config.yml -cp master/pkg/ubuntu/diaspora-wsd /etc/init.d +cp master/pkg/ubuntu/diaspora-wsd.conf /etc/init sed -i '/^cd /s|.*|cd /usr/share/diaspora/master|' /etc/init.d/diaspora-wsd @@ -41,8 +41,8 @@ cp master/pkg/ubuntu/diaspora-setup . mkdir -p /var/log/diaspora mkdir -p /var/lib/diaspora/uploads mkdir -p /var/lib/diaspora/tmp +mkdir -p /var/run/diaspora mkdir -p /etc/diaspora -mkdir -p /usr/share/diaspora/master/pkg/ubuntu/dist ln -sf /var/log/diaspora ./master/log cp master/config/app_config.yml.example /etc/diaspora/app_config.yml @@ -65,5 +65,6 @@ chown diaspora:diaspora /var/log/diaspora chown diaspora:diaspora /var/lib/diaspora/uploads chown diaspora:diaspora /var/lib/diaspora/tmp chown diaspora:diaspora /var/lib/diaspora +chown diaspora:diaspora /var/run/diaspora chown diaspora:diaspora /usr/share/diaspora/master/pkg/ubuntu/dist diff --git a/pkg/ubuntu/diaspora-setup b/pkg/ubuntu/diaspora-setup index 3f2c0266c..32293a2d2 100755 --- a/pkg/ubuntu/diaspora-setup +++ b/pkg/ubuntu/diaspora-setup @@ -43,9 +43,11 @@ else exit 1 fi -chmod 777 /var/lib/diaspora/uploads chown -R diaspora /var/log/diaspora +sed -i '/socket_pidfile:/s|:.*|: /var/run/diaspora/diaspora-wsd.pid|' \ + config/app_config.yml + hostname=$( awk '/pod_url:/ { print $2; exit }' >$logfile 2>&1 &" - RETVAL=$? - echo - if test $RETVAL = 0; then - touch $lockfile - pgrep -f "$ruby_cmd" > $pidfile || { - echo "Warning: cannot find running diaspora-webserver" - exit 7 - } - fi -} - -stop() { - [ $UID -eq 0 ] || exit 4 - echo -n $"Stopping $prog: " - killproc -p $pidfile $exec - RETVAL=$? - [ $RETVAL -eq 0 ] && rm -f $lockfile - echo -} - -# -# See how we were called. -# -case "$1" in - start) - start - ;; - stop) - stop - ;; - force-reload|restart) - stop - sleep 1 - start - RETVAL=$? - ;; - condrestart|try-restart) - if [ -f $lockfile ]; then - stop - sleep 3 - start - fi - ;; - status) - status -p $pidfile $exec - RETVAL=$? - ;; - *) - echo $"Usage: $0 {condrestart|try-restart|start|stop|restart|force-reload|status}" - RETVAL=2 - [ "$1" = 'usage' ] && RETVAL=0 -esac - -exit $RETVAL diff --git a/pkg/ubuntu/diaspora-wsd.conf b/pkg/ubuntu/diaspora-wsd.conf new file mode 100644 index 000000000..02956ebd9 --- /dev/null +++ b/pkg/ubuntu/diaspora-wsd.conf @@ -0,0 +1,17 @@ +# Ubuntu upstart file at /etc/init/diaspora-wsd.conf + +start on runlevel [5] +stop on runlevel [06] + +script + if [ -f /etc/default/diaspora ]; then + . /etc/default/diaspora; + fi; + cd /usr/share/diaspora/master; + start-stop-daemon --start \ + --chuid diaspora:diaspora \ + --chdir $PWD \ + --exec "/usr/local/bin/bundle" \ + -- exec ruby -C $PWD script/websocket_server.rb; + +end script diff --git a/pkg/ubuntu/dist/.gitkeep b/pkg/ubuntu/dist/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/script/websocket_server.rb b/script/websocket_server.rb index 65199175e..3b458118b 100644 --- a/script/websocket_server.rb +++ b/script/websocket_server.rb @@ -5,6 +5,25 @@ require File.dirname(__FILE__) + '/../config/environment' require File.dirname(__FILE__) + '/../lib/diaspora/websocket' +at_exit do + begin + File.delete(PID_FILE) + rescue + puts 'Cannot remove pidfile: ' + (PID_FILE ? PID_FILE : "NIL") + end +end + +def write_pidfile + begin + f = File.open(PID_FILE, "w") + f.write(Process.pid) + f.close + rescue => e + puts "Can't write to pidfile!" + puts e.inspect + end +end + CHANNEL = Magent::GenericChannel.new('websocket') def process_message if CHANNEL.queue_count > 0 @@ -36,7 +55,8 @@ begin ws.onclose { Diaspora::WebSocket.unsubscribe(ws.request['Path'].gsub('/',''), sid) } } end - + PID_FILE = APP_CONFIG[:socket_pidfile] + write_pidfile puts "Websocket server started." process_message }