summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorVinicius Correa2018-03-21 17:14:47 +0000
committerVinicius Correa2018-03-21 17:14:47 +0000
commitb27216a86fe480d096dfda3513175875787081f4 (patch)
tree03a9d5d6d4b11acfa9e49d1ff5368b24b4d866d7
parent051578a64041231a65c7db63dcc30df6d5f369a2 (diff)
downloadaur-b27216a86fe480d096dfda3513175875787081f4.tar.gz
pos install
-rw-r--r--.SRCINFO5
-rw-r--r--PKGBUILD5
-rw-r--r--stoq-server.install94
3 files changed, 100 insertions, 4 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 44858e2d2b65..464e48db8532 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,9 +1,10 @@
pkgbase = stoq-server
pkgdesc = Stoq server.
pkgver = 0.14.1
- pkgrel = 1
+ pkgrel = 2
url = https://github.com/stoq/stoq-server
- arch = x86_64
+ install = stoq-server.install
+ arch = any
license = LGPL
makedepends = git
depends = python2
diff --git a/PKGBUILD b/PKGBUILD
index 655baa7392ad..fc0488988f49 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,9 +1,9 @@
# Maintainer: Vinicius Correa <vinicius dot correa at zoho dot com>
pkgname=stoq-server
pkgver=0.14.1
-pkgrel=1
+pkgrel=2
pkgdesc="Stoq server."
-arch=('x86_64')
+arch=('any')
url="https://github.com/stoq/${pkgname}"
license=('LGPL')
depends=('python2' 'kiwi' 'stoqdrivers' 'stoq' 'python2-twisted' 'python2-requests' 'python2-netifaces'
@@ -11,6 +11,7 @@ depends=('python2' 'kiwi' 'stoqdrivers' 'stoq' 'python2-twisted' 'python2-reques
'avahi' 'python2-htsql' 'python2-htsql-pgsql')
makedepends=('git')
conflicts=('stoq-server-git')
+install=stoq-server.install
source=("https://github.com/stoq/${pkgname}/archive/${pkgver}.tar.gz")
md5sums=('a7689059dcd43d74da5c6a8a20184129')
diff --git a/stoq-server.install b/stoq-server.install
new file mode 100644
index 000000000000..574c4e97ef5b
--- /dev/null
+++ b/stoq-server.install
@@ -0,0 +1,94 @@
+post_install() {
+ # Make sure stoqserver's home exists
+ if [ ! -d '/usr/share/stoqserver' ]; then
+ mkdir -p '/usr/share/stoqserver'
+ fi
+
+ # Try to find the stoq database
+ if [ -d "/var/run/postgresql" ]; then
+ for socket in `find /var/run/postgresql -regex '.*\.s\.PGSQL\.[0-9]+'`; do
+ PORT="`echo $PORT | sed -e 's/\(.*\.\)\([0-9]\+\)/\2/' | xargs`"
+ [ -z "$PORT" ] && continue
+ set +e
+ # TODO: Improve code when we find more than one database candidates
+ DBNAME=`sudo -u postgres psql -p $PORT -AtqwlF \| | cut -d \| -f 1 | grep stoq | head -n1`
+ set -e
+ [ ! -z "$DBNAME" ] && break
+ done
+ fi
+
+ # If the process above failed for some reason, use the default 5432
+ if [ -z "$PORT" ]; then
+ PORT="5432"
+ fi
+ if [ -z "$DBNAME" ]; then
+ DBNAME="stoq"
+ 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 = $PORT
+dbname = $DBNAME
+dbusername = stoqserver
+
+[Backup]
+key =
+EOF
+ fi
+
+ # Create stoqserver user if it doesn't exist
+ if ! getent group stoqserver >/dev/null; then
+ groupadd stoqserver
+ fi
+ if ! getent passwd stoqserver >/dev/null; then
+ useradd -c 'stoqserver user' -g stoqserver -d '/usr/share/stoqserver' -s /bin/bash stoqserver
+ passwd -l stoqserver >/dev/null
+ fi
+
+ # Add stoqserver on dialout group so it can interact with usb/serial devices
+ gpasswd -a stoqserver storage
+ gpasswd -a stoqserver uucp
+
+ # Create a ssh key for stoqserver
+ if [ ! -f /usr/share/stoqserver/.ssh/id_rsa ]; then
+ mkdir -p /usr/share/stoqserver/.ssh
+ ssh-keygen -t rsa -N "" -f /usr/share/stoqserver/.ssh/id_rsa
+ fi
+
+ # Create a .pgpass file stoqserverl
+ if [ ! -f /usr/share/stoqserver/.pgpass ]; then
+ PG_PASSWORD="`cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c32`"
+ sudo -u postgres psql -p $PORT -c "ALTER USER stoqserver WITH PASSWORD '$PG_PASSWORD';"
+ echo "*:*:*:stoqserver:$PG_PASSWORD" > /usr/share/stoqserver/.pgpass
+ chmod 0600 /usr/share/stoqserver/.pgpass
+ fi
+
+ # Fix directory permissions
+ chown -R stoqserver:stoqserver /usr/share/stoqserver
+}
+
+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
+}