summaryrefslogtreecommitdiff
path: root/src/flufigut-client.sh
blob: 1fd6de1410e921e211a5a5afe2e034c2aa9b6972 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/sh
#
# flufigut
#
# flufigut, the flumotion configuration utility, is a simple tool
# that generates flumotion configuration files using pyhton jinja2
# template engine and simplejson. flufigut generates planet.xml
# and worker.xml files from configuration templates and an easy to
# understand representation of the flow structure written in json.
#
#
# Copyright (C) 2012 Christian Pointner <equinox@spreadspace.org>
#                    Michael Gebetsroither <michael@mgeb.org>
#
# This file is part of flufigut.
#
# flufigut is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# any later version.
#
# flufigut is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with flufigut. If not, see <http://www.gnu.org/licenses/>.
#

NAME="flumotion"
LOGFILE="/var/log/flumotion/service.log"
DAEMON="/usr/sbin/$NAME"
DAEMON_ARGS="-d 3 -l $LOGFILE"
CONF_DIR="/etc/flumotion"


if [ "install" = "$1" ]; then
  UID=`/usr/bin/id -u`
  if [ $UID -ne 0 ]; then
    echo "ERROR: this script must run as root for install installation."
    exit 1
  fi
  cp $0 /usr/local/bin
  getent passwd flufigut > /dev/null 2>&1
  if [ $? -ne 0 ]; then
    echo -n "copy&paste public key and press enter: "
    read pubkey
    if [ -z "$pubkey" ]; then
      echo "ERROR: no keyfile given"
      exit 1
    fi
    adduser flufigut --disabled-password --home /var/lib/flufigut --gecos "flufigut management" --shell "/bin/sh"
    adduser flufigut flumotion
    mkdir -p /var/lib/flufigut/.ssh
    echo 'command="/usr/local/bin/flufigut-client.sh",no-X11-forwarding,no-agent-forwarding,no-port-forwarding '$pubkey > /var/lib/flufigut/.ssh/authorized_keys
    chown -R flufigut:flufigut /var/lib/flufigut/.ssh
    chmod 600 /var/lib/flufigut/.ssh/authorized_keys
    echo "flufigut ALL = (flumotion) NOPASSWD: $DAEMON, /bin/tar" >> /etc/sudoers
  fi
  echo "successfully installed flufigut client."

  exit 0
fi

start_instance() {
        type="$1"
        name="$2"
        sudo -u flumotion $DAEMON $DAEMON_ARGS start $type $name
        return "$?"
}

stop_instance() {
        type="$1"
        name="$2"
        sudo -u flumotion $DAEMON $DAEMON_ARGS stop $type $name
        return "$?"
}

command=`echo $SSH_ORIGINAL_COMMAND | awk '{ print $1 }'`
param=`echo $SSH_ORIGINAL_COMMAND | awk '{ print $2 }'`

case "$command" in
  install)
    echo -n "install files from $param ... "
    cd $CONF_DIR
    sudo -u flumotion tar --strip-components=2 -xzf "$param"
    rm "$param"
    echo "done."
  ;;
  start)
    echo -n "starting ... "
    echo "ok."
  ;;
  stop)
    echo -n "stopping ... "
    echo "ok."
  ;;
  restart)
    echo -n "stopping ... "
    sleep 1
    echo -n "starting ..."
    echo "ok."
  ;;
  scp)
    $SSH_ORIGINAL_COMMAND
  ;;
  *)
    echo "Unknown command: '$command'"
    exit 1
  ;;
esac

exit 0