Commit 636e4d79e5993ba9c1e72c8b67043aa51aee9bed
Exists in
master
and in
27 other branches
Merge remote-tracking branch 'origin/master'
Showing
6 changed files
with
176 additions
and
1 deletions
Show diff stats
etc/init.d/noosfero
| @@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
| 1 | +gem 'sinatra' |
| @@ -0,0 +1,36 @@ | @@ -0,0 +1,36 @@ | ||
| 1 | +require 'sinatra' | ||
| 2 | +require 'stoa_plugin/person_fields' | ||
| 3 | + | ||
| 4 | +class StoaPlugin::Auth < Sinatra::Base | ||
| 5 | + | ||
| 6 | + include StoaPlugin::PersonFields | ||
| 7 | + | ||
| 8 | + post '/' do | ||
| 9 | + headers['Content-Type'] = 'application/json' | ||
| 10 | + if params[:login].blank? | ||
| 11 | + person = Person.find_by_usp_id(params[:usp_id]) | ||
| 12 | + login = person ? person.user.login : nil | ||
| 13 | + else | ||
| 14 | + login = params[:login] | ||
| 15 | + end | ||
| 16 | + | ||
| 17 | + domain = Domain.find_by_name(request.host) | ||
| 18 | + environment = domain && domain.environment | ||
| 19 | + environment ||= Environment.default | ||
| 20 | + | ||
| 21 | + user = User.authenticate(login, params[:password], environment) | ||
| 22 | + if user | ||
| 23 | + result = StoaPlugin::PersonApi.new(user.person, self).fields(selected_fields(params[:fields], user)) | ||
| 24 | + result.merge!(:ok => true) | ||
| 25 | + else | ||
| 26 | + result = { :error => _('Incorrect user/password pair.'), :ok => false } | ||
| 27 | + end | ||
| 28 | + result.to_json | ||
| 29 | + end | ||
| 30 | + | ||
| 31 | + get '/' do | ||
| 32 | + headers['Content-Type'] = 'application/json' | ||
| 33 | + { :error => _('Conection requires post method.'), :ok => false }.to_json | ||
| 34 | + end | ||
| 35 | + | ||
| 36 | +end |
| @@ -0,0 +1,123 @@ | @@ -0,0 +1,123 @@ | ||
| 1 | +#! /bin/sh | ||
| 2 | +### BEGIN INIT INFO | ||
| 3 | +# Provides: noosfero | ||
| 4 | +# Required-Start: $remote_fs | ||
| 5 | +# Required-Stop: $remote_fs | ||
| 6 | +# Should-Start: postgresql | ||
| 7 | +# Should-Stop: postgresql | ||
| 8 | +# Default-Start: 2 3 4 5 | ||
| 9 | +# Default-Stop: 0 1 6 | ||
| 10 | +# Short-Description: Stoa authentication daemon | ||
| 11 | +# Description: This file should be symlinked or copied into /etc/init.d. | ||
| 12 | +### END INIT INFO | ||
| 13 | + | ||
| 14 | +# Sample init.d script for noosfero. | ||
| 15 | +# | ||
| 16 | +# This script was based on the skeleton init.d script present in a Debian | ||
| 17 | +# GNU/Linux system (sid), on Sat Feb 16 11:12:03 BRT 2008. It must be placed | ||
| 18 | +# in /etc/init.d/ (or whatever place your system uses for startup scripts), | ||
| 19 | +# and you must create a file /etc/default/noosfero defining the variable | ||
| 20 | +# | ||
| 21 | +# Author: Antonio Terceiro <terceiro@colivre.coop.br> | ||
| 22 | + | ||
| 23 | +# Do NOT "set -e" | ||
| 24 | + | ||
| 25 | +# PATH should only include /usr/* if it runs after the mountnfs.sh script | ||
| 26 | +PATH=/sbin:/usr/sbin:/bin:/usr/bin | ||
| 27 | +DESC="Stoa authentication deamon" | ||
| 28 | +NAME=stoa-auth-daemon | ||
| 29 | +SCRIPTNAME=/etc/init.d/$NAME | ||
| 30 | + | ||
| 31 | +# default values | ||
| 32 | +NOOSFERO_DIR=/var/lib/noosfero/current | ||
| 33 | +NOOSFERO_USER=noosfero | ||
| 34 | + | ||
| 35 | +# Read configuration variable file if it is present | ||
| 36 | +if [ -r /etc/default/$NAME ]; then | ||
| 37 | + . /etc/default/$NAME | ||
| 38 | +else | ||
| 39 | + # for running from development setup, or from git with the script symlinked | ||
| 40 | + script=$(readlink -f $0) | ||
| 41 | + NOOSFERO_DIR=$(readlink -f $(dirname $script)/../../..) | ||
| 42 | + NOOSFERO_USER=$(stat --format %U $NOOSFERO_DIR/tmp/pids) | ||
| 43 | +fi | ||
| 44 | + | ||
| 45 | +# Load the VERBOSE setting and other rcS variables | ||
| 46 | +. /lib/init/vars.sh | ||
| 47 | + | ||
| 48 | +. /lib/lsb/init-functions | ||
| 49 | + | ||
| 50 | +if [ -z "$NOOSFERO_DIR" ] || [ -z "$NOOSFERO_USER" ]; then | ||
| 51 | + echo "NOOSFERO_DIR or NOOSFERO_USER not defined, noosfero not being started." | ||
| 52 | + echo "Both variables must be defined in /etc/default/noosfero" | ||
| 53 | + exit 0 | ||
| 54 | +fi | ||
| 55 | + | ||
| 56 | +if test -x /usr/sbin/noosfero-check-dbconfig ; then | ||
| 57 | + if ! /usr/sbin/noosfero-check-dbconfig; then | ||
| 58 | + echo "Noosfero database access not configured, service disabled." | ||
| 59 | + exit 0 | ||
| 60 | + fi | ||
| 61 | +fi | ||
| 62 | + | ||
| 63 | +###################### | ||
| 64 | + | ||
| 65 | +THIN_PID_FILE='--pid tmp/pids/stoa-auth-server.pid' | ||
| 66 | +THIN_START_OPTIONS="--port 4000 --environment production --chdir $NOOSFERO_DIR --rackup plugins/stoa/config.ru --log log/stoa-auth-server.log --daemonize" | ||
| 67 | + | ||
| 68 | +as_noosfero_user() { | ||
| 69 | + cmd="$@" | ||
| 70 | + if [ "$NOOSFERO_USER" != "$USER" ]; then | ||
| 71 | + su $NOOSFERO_USER -l -c "cd $NOOSFERO_DIR && $cmd" | ||
| 72 | + else | ||
| 73 | + cd $NOOSFERO_DIR | ||
| 74 | + $cmd | ||
| 75 | + fi | ||
| 76 | +} | ||
| 77 | + | ||
| 78 | +run_thin() { | ||
| 79 | + action="$1" | ||
| 80 | + shift | ||
| 81 | + log_daemon_msg "$action $DESC" "$NAME" | ||
| 82 | + if as_noosfero_user thin $THIN_PID_FILE $@; then | ||
| 83 | + log_success_msg | ||
| 84 | + else | ||
| 85 | + log_failure_msg | ||
| 86 | + fi | ||
| 87 | +} | ||
| 88 | + | ||
| 89 | +running() { | ||
| 90 | + kill -0 $(cat $NOOSFERO_DIR/tmp/pids/stoa-auth-server.pid 2>/dev/null || true) 2>/dev/null | ||
| 91 | +} | ||
| 92 | + | ||
| 93 | +do_start() { | ||
| 94 | + if ! running; then | ||
| 95 | + run_thin "Starting" $THIN_START_OPTIONS start | ||
| 96 | + fi | ||
| 97 | +} | ||
| 98 | + | ||
| 99 | +do_stop() { | ||
| 100 | + if running; then | ||
| 101 | + run_thin "Stopping" stop | ||
| 102 | + fi | ||
| 103 | +} | ||
| 104 | + | ||
| 105 | +do_restart() { | ||
| 106 | + if running; then | ||
| 107 | + do_stop | ||
| 108 | + fi | ||
| 109 | + do_start | ||
| 110 | +} | ||
| 111 | + | ||
| 112 | +case "$1" in | ||
| 113 | + start|stop|restart) | ||
| 114 | + do_$1 | ||
| 115 | + ;; | ||
| 116 | + force-reload) | ||
| 117 | + do_restart | ||
| 118 | + ;; | ||
| 119 | + *) | ||
| 120 | + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|setup}" >&2 | ||
| 121 | + exit 3 | ||
| 122 | + ;; | ||
| 123 | +esac |
script/production
| @@ -84,6 +84,12 @@ environments_loop() { | @@ -84,6 +84,12 @@ environments_loop() { | ||
| 84 | fi | 84 | fi |
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | +do_running() { | ||
| 88 | + pids=$(cat tmp/pids/thin.*.pid 2>/dev/null || true) | ||
| 89 | + # passes if any of $pids exist, fails otherwise | ||
| 90 | + kill -0 $pids > /dev/null 2>&1 | ||
| 91 | +} | ||
| 92 | + | ||
| 87 | case "$ACTION" in | 93 | case "$ACTION" in |
| 88 | start|stop) | 94 | start|stop) |
| 89 | do_$ACTION | 95 | do_$ACTION |
| @@ -100,6 +106,10 @@ case "$ACTION" in | @@ -100,6 +106,10 @@ case "$ACTION" in | ||
| 100 | do_restart | 106 | do_restart |
| 101 | ;; | 107 | ;; |
| 102 | 108 | ||
| 109 | + running) | ||
| 110 | + do_running | ||
| 111 | + ;; | ||
| 112 | + | ||
| 103 | *) | 113 | *) |
| 104 | echo "usage: $0 start|stop|restart|run" | 114 | echo "usage: $0 start|stop|restart|run" |
| 105 | exit 1 | 115 | exit 1 |