summarylogtreecommitdiffstats
path: root/stoq-server.install
blob: f850f3e01c3db2a452d275d1574e232bbdd75613 (plain)
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
115
116
117
118
119
post_install() {
  # Make sure stoqserver's home exists
  if [ ! -d '/usr/share/stoqserver' ]; then
    mkdir -p '/usr/share/stoqserver'    
  fi
  
  #Crete script stoqsconf
  if [ ! -d '/usr/share/stoqserver/stoqsconf' ]; then
    cat << 'EOF' > /usr/bin/stoqsconf
#!/bin/bash
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"

case $key in
    -p|--port)
    PORT="$2"
    shift # past argument
    shift # past value
    ;;
    -D|--directory)
    DIR="$2"
    shift # past argument
    shift # past value
    ;;
    -h|--help)
    HELP="$2"
    shift # past argument
    shift # past value
    echo "help text"
    ;;
    *)    # unknown option
    POSITIONAL+=("$1") # save it in an array for later
    shift # past argument
    ;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters

if [[ -n $1 ]]; then
    echo "Invalid argument."
else

  #Create pgpass file
  if [ ! -f ${DIR}/.pgpass ]; then
    createuser -p ${PORT} -dsR stoqserver
    PG_PASSWORD="`cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c32`"
    psql -p $PORT -c "ALTER USER stoqserver WITH PASSWORD '${PG_PASSWORD}';"
    echo "*:*:*:stoqserver:${PG_PASSWORD}" > ${DIR}/.pgpass
    chmod 0600 ${DIR}/.pgpass
  fi

  #Create a ssh key for remote support
  if [ ! -f ${DIR}/.ssh/id_rsa ]; then
    if [ ! -f ${DIR}/.ssh/ ]; then
      mkdir -p ${DIR}/.ssh
    fi
    ssh-keygen -t rsa -N "" -f ${DIR}/.ssh/id_rsa
  fi
fi
EOF
  chmod 777 /usr/bin/stoqsconf
  
  fi
  
  # Create .stoq dir and configuration if they don't exist
  if [ ! -f /usr/share/stoqserver/.stoq/stoq.conf ]; then
    mkdir -p /usr/share/stoqserver/.stoq
    cat <<EOF > /usr/share/stoqserver/.stoq/stoq.conf
[General]
logfile = /usr/share/stoqserver/.stoq/stoqserver.log

[Database]
rdbms = postgres
address = 
port = 5432
dbname = stoq
dbusername = stoqserver

[Backup]
key = 
EOF
  fi
    
  # Create stoqserver user if it doesn't exist
  if ! getent group stoqserver >/dev/null; then
    useradd -d '/usr/share/stoqserver' -s /bin/bash stoqserver
    passwd -l stoqserver >/dev/null
  fi
  
  if ! getent group stoqserver | grep &>/dev/null "postgres"; then
    gpasswd -a postgres stoqserver
  fi
    
  # Fix directory permissions
  chown -R stoqserver:stoqserver /usr/share/stoqserver
  chmod g+rwx -R /usr/share/stoqserver
  
  grep -q 'files = /etc/supervisor/conf.d/\*.conf' /etc/supervisord.conf || echo 'files = /etc/supervisor/conf.d/*.conf' >> /etc/supervisord.conf
}

post_upgrade() {
  post_install $1
  # FS#23858, fix postgres user shell issue
  stoqserver_shell=$(getent passwd stoqserver | cut -d: -f7)
  if [ "$stoqserver_shell" = "/sbin/nologin" ]; then
    chsh -s /bin/bash stoqserver
  fi
}

post_remove() {
  if getent passwd stoqserver >/dev/null; then
    userdel stoqserver
  fi
  if getent group stoqserver >/dev/null; then
    groupdel stoqserver
  fi
}