Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
humanities
gargantext
Commits
2db92765
Commit
2db92765
authored
Nov 16, 2017
by
sim
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Automatic generation of PostgREST configuration
parent
63ed09b6
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
79 additions
and
20 deletions
+79
-20
.gitignore
.gitignore
+1
-0
postgrest.template.conf
tools/conf/postgrest.template.conf
+2
-2
mkconf.sh
tools/mkconf.sh
+73
-16
mkenvs.sh
tools/mkenvs.sh
+3
-2
No files found.
.gitignore
View file @
2db92765
...
...
@@ -3,3 +3,4 @@ __pycache__
/static
.env
gargantext.ini
postgrest.conf
tools/
postgrest
.conf
→
tools/
conf/postgrest.template
.conf
View file @
2db92765
db
-
uri
=
"
postgres://authenticator:CHANGEME@127.0.0.1:5432/gargandb
"
db
-
uri
=
"
{DB_URI}
"
db
-
schema
=
"api"
db
-
anon
-
role
=
"anon"
db
-
pool
=
10
...
...
@@ -11,7 +11,7 @@ server-port = 3000
## choose a secret to enable JWT auth
## (use "@filename" to load from separate file)
jwt
-
secret
=
"
Mw/q=efK3ai7}?}?!D68}a2.j}G5;1]ceI;OV1l=N^(-mH+%l=
"
jwt
-
secret
=
"
{SECRET_KEY}
"
# secret-is-base64 = false
## limit rows in response
...
...
tools/mkconf.sh
View file @
2db92765
#!/usr/bin/env bash
query
()
{
PGPASSWORD
=
"
$2
"
psql
-w
-d
"
$DB_NAME
"
-U
"
$1
"
-h
"
$DB_HOST
"
-p
"
$DB_PORT
"
\
-c
"
$3
"
1>/dev/null 2>&1
}
escape_ini
()
{
echo
-n
"
$1
"
|
sed
-e
's/[\/&\"]/\\&/g'
}
# Adapted from https://gist.github.com/cdown/1163649
escape_url
()
{
local
_LC_COLLATE
=
$LC_COLLATE
LC_COLLATE
=
C
local
length
=
"
${#
1
}
"
for
((
i
=
0
;
i < length
;
i++
))
;
do
local
c
=
"
${
1
:i:1
}
"
case
$c
in
[
a-zA-Z0-9.~_-]
)
printf
"
$c
"
;;
*
)
printf
'%%%02X'
"'
$c
"
;;
esac
done
LC_COLLATE
=
$_LC_COLLATE
}
USAGE
=
"Usage:
$0
[-h|--help] [-f|--force] [dev|prod]"
while
:
;
do
case
$1
in
...
...
@@ -17,8 +43,12 @@ TARGET="${1:-dev}"
# Gargantext configuration file path
[
-z
"
$GARGANTEXT_CONF
"
]
&&
GARGANTEXT_CONF
=
gargantext.ini
# Configuration template path
TEMPLATE
=
tools/conf/gargantext.template.ini
# PostgREST configuration file path
[
-z
"
$POSTGREST_CONF
"
]
&&
POSTGREST_CONF
=
postgrest.conf
# Configuration template paths
GARGANTEXT_TEMPLATE
=
tools/conf/gargantext.template.ini
POSTGREST_TEMPLATE
=
tools/conf/postgrest.template.conf
# Check for configuration file existence
if
[
-f
"
$GARGANTEXT_CONF
"
-a
-z
"
$FORCE
"
]
;
then
...
...
@@ -38,10 +68,10 @@ fi
# Setup DEBUG mode for dev target
[
"
$TARGET
"
=
"prod"
]
&&
DEBUG
=
False
||
DEBUG
=
True
echo
"Generate secret key for Django..."
SECRET_KEY
=
$(
p
ython ./tools/gensecret.py
)
echo
"
▸
Generate secret key for Django..."
SECRET_KEY
=
$(
p
ipenv run python ./tools/gensecret.py 2>/dev/null
)
echo
"PostgreSQL configuration..."
echo
"
▸
PostgreSQL configuration..."
DB_NAME_DEFAULT
=
gargandb
DB_USER_DEFAULT
=
gargantua
...
...
@@ -58,27 +88,43 @@ while :; do
read
-s
-p
"Please provide the password for
$DB_USER
: "
DB_PASS
&&
echo
echo
"Check database access..."
if
!
sudo
-u
postgres
PGPASSWORD
=
"
$DB_PASS
"
psql
-wq
-d
"
$DB_NAME
"
\
-U
"
$DB_USER
"
-h
127.0.0.1
-c
""
1>/dev/null 2>&1
;
then
read
-p
"Can't connect to database, give up? (Y/n) "
GIVE_UP
[
-z
"
$GIVE_UP
"
-o
"
${
GIVE_UP
,,
}
"
=
"y"
]
&&
break
else
if
query
"
$DB_USER
"
"
$DB_PASS
"
""
;
then
DB_ACCESS
=
true
echo
"Access granted!"
break
else
DB_ACCESS
=
false
read
-p
"Can't connect to database, give up? (Y/n) "
GIVE_UP
[
-z
"
$GIVE_UP
"
-o
"
${
GIVE_UP
,,
}
"
=
"y"
]
&&
break
fi
done
escape_ini
()
{
echo
-n
"
$1
"
|
sed
-e
's/[\/&\"]/\\&/g'
}
echo
"▸ PostgresREST configuration..."
PGREST_USER
=
authenticator
PGREST_PASS
=
CHANGEME
if
$DB_ACCESS
&&
query
"
$PGREST_USER
"
"
$PGREST_PASS
"
""
;
then
read
-p
"You should change password for database user
$PGREST_USER
, auto-generate a new one? (Y/n) "
PGREST_CHANGE
# Generate a password with letters and digits between 12 and 20 chars
PGREST_PASS
=
$(
pipenv run python ./tools/gensecret.py LD 12 20 2>/dev/null
)
if
[
"
${
PGREST_CHANGE
,,
}
"
=
"y"
]
;
then
query
"
$DB_USER
"
"
$DB_PASS
"
"ALTER ROLE
$PGREST_USER
PASSWORD '
$PGREST_PASS
'"
fi
fi
PGREST_DB_URI
=
"postgres://"
$(
escape_url
"
$PGREST_USER
"
)
":"
$(
escape_url
"
$PGREST_PASS
"
)
"@"
$(
escape_url
"
$DB_HOST
"
)
":"
$(
escape_url
"
$DB_PORT
"
)
"/"
$(
escape_url
"
$DB_NAME
"
)
# Escape variables
SECRET_KEY
=
$(
escape_ini
"
$SECRET_KEY
"
)
DB_HOST
=
$(
escape_ini
"
${
DB_HOST
:-
127
.0.0.1
}
"
)
DB_PORT
=
$(
escape_ini
"
${
DB_PORT
:-
5432
}
"
)
DB_NAME
=
$(
escape_ini
"
$DB_NAME
"
)
DB_USER
=
$(
escape_ini
"
$DB_USER
"
)
DB_PASS
=
$(
escape_ini
"
$DB_PASS
"
)
PGREST_DB_URI
=
$(
escape_ini
"
$PGREST_DB_URI
"
)
echo
"
Generate configuration file from
$
TEMPLATE
..."
echo
"
▸ Generate configuration file from
$GARGANTEXT_
TEMPLATE
..."
sed
-E
-e
"s/[{]DEBUG[}]/
$DEBUG
/g"
\
-e
"s/[{]SECRET_KEY[}]/
$SECRET_KEY
/g"
\
-e
"s/[{]DB_HOST[}]/
$DB_HOST
/g"
\
...
...
@@ -86,11 +132,22 @@ sed -E -e "s/[{]DEBUG[}]/$DEBUG/g" \
-e
"s/[{]DB_NAME[}]/
$DB_NAME
/g"
\
-e
"s/[{]DB_USER[}]/
$DB_USER
/g"
\
-e
"s/[{]DB_PASS[}]/
$DB_PASS
/g"
\
"
$TEMPLATE
"
>
"
$GARGANTEXT_CONF
"
\
"
$
GARGANTEXT_
TEMPLATE
"
>
"
$GARGANTEXT_CONF
"
\
&&
echo
"Configuration for
$TARGET
environment written successfully in"
\
"
$GARGANTEXT_CONF
."
echo
"▸ Generate configuration file for PostgREST from
$POSTGREST_TEMPLATE
..."
sed
-E
-e
"s/[{]DB_URI[}]/
$PGREST_DB_URI
/g"
\
-e
"s/[{]SECRET_KEY[}]/
$SECRET_KEY
/g"
\
"
$POSTGREST_TEMPLATE
"
>
"
$POSTGREST_CONF
"
\
&&
echo
"PostgREST configuration written successfully in
$POSTGREST_CONF
."
if
[
-z
"
$DB_PASS
"
]
;
then
echo
"You didn't provide any database password, please"
\
echo
"
WARNING:
You didn't provide any database password, please"
\
"edit
$GARGANTEXT_CONF
before running Gargantext."
fi
if
!
$DB_ACCESS
;
then
echo
"WARNING: Couldn't configure PostgREST user
$PGREST_USER
correctly,"
\
"you may need to edit
$POSTGREST_CONF
manually."
fi
tools/mkenvs.sh
View file @
2db92765
...
...
@@ -10,9 +10,10 @@ EOF
build_env
()
{
cat
<<
EOF
>
$ENV_FILE
$DJANGO_VAR
# Path
to gargantext configuration file, you're welcome to change that; when
#
a simple filename is given, it'll be searched in current directory
# Path
s of configuration files, you're welcome to change that; when a simple
#
filename is given, it'll be searched in current directory.
GARGANTEXT_CONF=gargantext.ini
POSTGREST_CONF=postgrest.conf
EOF
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment