1#!/bin/bash
2
3set -eu
4
5client_configure() {
6	sudo chmod 600 $PQSSLCERTTEST_PATH/postgresql.key
7}
8
9pgdg_repository() {
10	local sourcelist='sources.list.d/postgresql.list'
11
12	curl -sS 'https://www.postgresql.org/media/keys/ACCC4CF8.asc' | sudo apt-key add -
13	echo deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main $PGVERSION | sudo tee "/etc/apt/$sourcelist"
14	sudo apt-get -o Dir::Etc::sourcelist="$sourcelist" -o Dir::Etc::sourceparts='-' -o APT::Get::List-Cleanup='0' update
15}
16
17postgresql_configure() {
18	sudo tee /etc/postgresql/$PGVERSION/main/pg_hba.conf > /dev/null <<-config
19		local     all         all                               trust
20		hostnossl all         pqgossltest 127.0.0.1/32          reject
21		hostnossl all         pqgosslcert 127.0.0.1/32          reject
22		hostssl   all         pqgossltest 127.0.0.1/32          trust
23		hostssl   all         pqgosslcert 127.0.0.1/32          cert
24		host      all         all         127.0.0.1/32          trust
25		hostnossl all         pqgossltest ::1/128               reject
26		hostnossl all         pqgosslcert ::1/128               reject
27		hostssl   all         pqgossltest ::1/128               trust
28		hostssl   all         pqgosslcert ::1/128               cert
29		host      all         all         ::1/128               trust
30	config
31
32	xargs sudo install -o postgres -g postgres -m 600 -t /var/lib/postgresql/$PGVERSION/main/ <<-certificates
33		certs/root.crt
34		certs/server.crt
35		certs/server.key
36	certificates
37
38	sort -VCu <<-versions ||
39		$PGVERSION
40		9.2
41	versions
42	sudo tee -a /etc/postgresql/$PGVERSION/main/postgresql.conf > /dev/null <<-config
43		ssl_ca_file   = 'root.crt'
44		ssl_cert_file = 'server.crt'
45		ssl_key_file  = 'server.key'
46	config
47
48	echo 127.0.0.1 postgres | sudo tee -a /etc/hosts > /dev/null
49
50	sudo service postgresql restart
51}
52
53postgresql_install() {
54	xargs sudo apt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confnew' install <<-packages
55		postgresql-$PGVERSION
56		postgresql-server-dev-$PGVERSION
57		postgresql-contrib-$PGVERSION
58	packages
59}
60
61postgresql_uninstall() {
62	sudo service postgresql stop
63	xargs sudo apt-get -y --purge remove <<-packages
64		libpq-dev
65		libpq5
66		postgresql
67		postgresql-client-common
68		postgresql-common
69	packages
70	sudo rm -rf /var/lib/postgresql
71}
72
73$1
74