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 | ... | ... |