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 @@ |
| 1 | +gem 'sinatra' | ... | ... |
| ... | ... | @@ -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 @@ |
| 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 | 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 | 93 | case "$ACTION" in |
| 88 | 94 | start|stop) |
| 89 | 95 | do_$ACTION |
| ... | ... | @@ -100,6 +106,10 @@ case "$ACTION" in |
| 100 | 106 | do_restart |
| 101 | 107 | ;; |
| 102 | 108 | |
| 109 | + running) | |
| 110 | + do_running | |
| 111 | + ;; | |
| 112 | + | |
| 103 | 113 | *) |
| 104 | 114 | echo "usage: $0 start|stop|restart|run" |
| 105 | 115 | exit 1 | ... | ... |