[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-cashless2ecash] branch master updated: setup: automate setup
From: |
gnunet |
Subject: |
[taler-cashless2ecash] branch master updated: setup: automate setup |
Date: |
Thu, 16 May 2024 00:29:40 +0200 |
This is an automated email from the git hooks/post-receive script.
joel-haeberli pushed a commit to branch master
in repository cashless2ecash.
The following commit(s) were added to refs/heads/master by this push:
new cd1a9c2 setup: automate setup
cd1a9c2 is described below
commit cd1a9c2cbe1ac7ed2e467ce8611f934298523a6e
Author: Joel-Haeberli <haebu@rubigen.ch>
AuthorDate: Thu May 16 00:29:31 2024 +0200
setup: automate setup
---
Makefile | 22 +++++++++++++-----
README | 2 ++
c2ec/c2ec-config.yaml | 8 +++----
c2ec/db/access.sql | 5 +++-
c2ec/db/drop.sql | 17 +++++++++++++-
c2ec/db/migrate.sh | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++
setup | 32 ++++++++++++++++++++++++++
7 files changed, 138 insertions(+), 12 deletions(-)
diff --git a/Makefile b/Makefile
index 26d2e68..78055a4 100644
--- a/Makefile
+++ b/Makefile
@@ -16,17 +16,26 @@ dependencies-check:
build: dependencies-check
go build -C ./c2ec/ -o ${C2EC_HOME}
+stop:
+ kill $(pgrep c2ec)
+
+start: stop
+ (cd ${C2EC_HOME}; ./c2ec &)
+
+migrate: build
+ (cd ./c2ec/db; ./migrate.sh c2ec_admin ${C2EC_DB_ADMIN_PW}
${C2EC_DB_NAME})
+
install: dependencies-check
- cp ./c2ec-config.yaml ${C2EC_HOME}/c2ec-config.yaml
+ cp ./c2ec/c2ec-config.yaml ${C2EC_HOME}/c2ec-config.yaml
chmod ${C2EC_FILE_PERMISSIONS} ${C2EC_HOME}/c2ec-config.yaml
- chown ${C2EC_HOME}/c2ec-config.yaml ${C2EC_USER}
- cp ./c2ec-config.conf ${C2EC_HOME}/c2ec-config.conf
+ chown ${C2EC_USER} ${C2EC_HOME}/c2ec-config.yaml
+ cp ./c2ec/c2ec-config.conf ${C2EC_HOME}/c2ec-config.conf
chmod ${C2EC_FILE_PERMISSIONS} ${C2EC_HOME}/c2ec-config.conf
- chown ${C2EC_HOME}/c2ec-config.conf ${C2EC_USER}
+ chown ${C2EC_USER} ${C2EC_HOME}/c2ec-config.conf
touch ${C2EC_HOME}/c2ec-log.txt
chmod ${C2EC_FILE_PERMISSIONS} ${C2EC_HOME}/c2ec-log.txt
- chown ${C2EC_HOME}/c2ec-log.txt ${C2EC_USER}
-
+ chown ${C2EC_USER} ${C2EC_HOME}/c2ec-log.txt
+ (cd ./c2ec/db; ./migrate.sh ${C2EC_POSTGRES_USER}
${C2EC_POSTGRES_PASSWORD} ${C2EC_DB_NAME} ${C2EC_DB_ADMIN_PW}
${C2EC_DB_OPERATOR_PW} ${C2EC_DB_API_PW})
echo "you may want to alter the current configuration of your
installation at ${C2EC_HOME}/c2ec-config.conf"
cli: dependencies-check
@@ -34,3 +43,4 @@ cli: dependencies-check
simulation: dependencies-check
go build -C ./simulation/ -o ${C2EC_HOME}
+ cp ./simulation/config.yaml ${C2EC_HOME}/sim-config.yaml
diff --git a/README b/README
index acec3b8..728325d 100644
--- a/README
+++ b/README
@@ -21,6 +21,8 @@ The following tree describes the structure of the document
and a rough descripti
## Installation
+Hint: the following process can be achieved by editing the `setup` script in
this repository and then executing `./setup` (if you agree with the default
values, just run the script (not recommended, probably won't even work))
+
1. Clone this repository
2. Define variables
2.1 C2EC_HOME: Everything that is installed here. (default: $HOME)
diff --git a/c2ec/c2ec-config.yaml b/c2ec/c2ec-config.yaml
index 8c430c1..1e98218 100644
--- a/c2ec/c2ec-config.yaml
+++ b/c2ec/c2ec-config.yaml
@@ -20,7 +20,7 @@ db:
password: "local"
database: "postgres"
providers:
- - name: "Wallee"
- key: "secret"
- - name: "Simulation"
- key: "secret"
+ # - name: "Wallee"
+ # key: "secret"
+ #- name: "Simulation"
+ # key: "secret"
diff --git a/c2ec/db/access.sql b/c2ec/db/access.sql
index 265aa0f..2cb7231 100644
--- a/c2ec/db/access.sql
+++ b/c2ec/db/access.sql
@@ -1,15 +1,18 @@
+-- DO NOT EXECUTE THIS BY HAND (use migrate.sh instead)
BEGIN;
-SELECT _v.register_patch('setup_users', ARRAY['versioning',
'0001-c2ec-schema', 'proc-c2ec-payment-notification-listener',
'proc-c2ec-retry-listener', 'proc-c2ec-status-listener',
'proc-c2ec-transfer-listener'], NULL);
+SELECT _v.register_patch('access', ARRAY['0001-c2ec-schema',
'proc-c2ec-payment-notification-listener', 'proc-c2ec-retry-listener',
'proc-c2ec-status-listener', 'proc-c2ec-transfer-listener'], NULL);
SET search_path TO c2ec;
+-- For migration and other db management tasks
CREATE USER c2ec_admin WITH ENCRYPTED PASSWORD ADMIN_PASSWORD;
--For CLI (managing terminals and providers):
CREATE USER c2ec_operator WITH ENCRYPTED PASSWORD OPERATOR_PASSWORD;
--For the API (handling withdrawals):
CREATE USER c2ec_api WITH ENCRYPTED PASSWORD API_PASSWORD;
+GRANT USAGE ON SCHEMA _v TO c2ec_admin;
GRANT ALL PRIVILEGES ON DATABASE DB_NAME TO c2ec_admin;
GRANT USAGE ON SCHEMA c2ec TO c2ec_operator;
diff --git a/c2ec/db/drop.sql b/c2ec/db/drop.sql
index 3694296..70e8785 100644
--- a/c2ec/db/drop.sql
+++ b/c2ec/db/drop.sql
@@ -3,6 +3,21 @@ BEGIN;
DROP SCHEMA IF EXISTS c2ec CASCADE;
-DROP SCHEMA IF EXISTS _v CASCADE;
+DELETE FROM _v.patches WHERE patch_name IN (
+ '0001-c2ec-schema',
+ 'proc-c2ec-payment-notification-listener',
+ 'proc-c2ec-retry-listener',
+ 'proc-c2ec-status-listener',
+ 'proc-c2ec-transfer-listener',
+ 'access'
+);
+
+DROP OWNED BY c2ec_operator;
+DROP OWNED BY c2ec_api;
+DROP OWNED BY c2ec_admin;
+
+DROP ROLE IF EXISTS c2ec_operator;
+DROP ROLE IF EXISTS c2ec_api;
+DROP ROLE IF EXISTS c2ec_admin;
COMMIT;
\ No newline at end of file
diff --git a/c2ec/db/migrate.sh b/c2ec/db/migrate.sh
new file mode 100755
index 0000000..7124357
--- /dev/null
+++ b/c2ec/db/migrate.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+if [[ ($# -ne 3) && ($# -ne 6) ]]; then
+ echo "Usage: $0 <db-username> <db-password> <db-name> [<new-db-admin-pw>
<new-db-operator-pw> <new-db-api-pw>]"
+ exit 1
+fi
+
+DB_USERNAME=$1
+DB_PASSWORD=$2
+DB_NAME=$3
+
+ACCESS_WITH_PASSWORDS="./access-with-passwords.sql"
+INITIAL_SETUP=0
+if [ "$#" -eq 6 ]; then
+ if [[ ($4 = $5) || ($5 = $6) || ($4 = $6) ]]; then
+ echo "PROBLEM: passwords for db admin, operator and must be
different..."
+ echo "Usage: $0 <db-username> <db-password> <db-name> <source-root>
<new-db-admin-pw> <new-db-admin-pw> <new-db-admin-pw>"
+ exit 1
+ fi
+
+ ADMIN_PASSWORD=$4
+ OPERATOR_PASSWORD=$5
+ API_PASSWORD=$6
+
+ cp "./access.sql" $ACCESS_WITH_PASSWORDS
+ sed -i "s/ADMIN_PASSWORD/'$ADMIN_PASSWORD'/g" $ACCESS_WITH_PASSWORDS
+ sed -i "s/OPERATOR_PASSWORD/'$OPERATOR_PASSWORD'/g" $ACCESS_WITH_PASSWORDS
+ sed -i "s/API_PASSWORD/'$API_PASSWORD'/g" $ACCESS_WITH_PASSWORDS
+ sed -i "s/DB_NAME/$DB_NAME/g" $ACCESS_WITH_PASSWORDS
+
+ INITIAL_SETUP=1
+fi
+
+SQL_SCRIPTS=(
+ "./versioning.sql"
+ "./0001-c2ec_schema.sql"
+ "./proc-c2ec_status_listener.sql"
+ "./proc-c2ec_payment_notification_listener.sql"
+ "./proc-c2ec_retry_listener.sql"
+ "./proc-c2ec_transfer_listener.sql"
+)
+
+execute_sql_scripts() {
+ for script in "${SQL_SCRIPTS[@]}"; do
+ echo "Executing SQL script: $script"
+ PGPASSWORD=$DB_PASSWORD psql -U $DB_USERNAME -d $DB_NAME -f $script
+ if [ $? -ne 0 ]; then
+ echo "Failed to execute SQL script: $script"
+ exit 1
+ fi
+ done
+
+ if [ $INITIAL_SETUP -eq 1 ]; then
+ PGPASSWORD=$DB_PASSWORD psql -U $DB_USERNAME -d $DB_NAME -f
$ACCESS_WITH_PASSWORDS
+ rm $ACCESS_WITH_PASSWORDS
+ fi
+
+ PGPASSWORD=""
+}
+
+execute_sql_scripts
+if [ $? -ne 0 ]; then
+ exit 1
+fi
diff --git a/setup b/setup
new file mode 100755
index 0000000..ca9eb59
--- /dev/null
+++ b/setup
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# to install the app with non-default values
+# uncomment the line you want to change and
+# the belonging value
+
+#export C2EC_HOME=$HOME/c2ec-test-installation
+#export C2EC_USER=$(whoami)
+#export C2EC_POSTGRES_USER=postgres
+#export C2EC_POSTGRES_PASSWORD=postgres
+#export C2EC_DB_NAME=postgres
+#export C2EC_DB_ADMIN_PW=secret
+#export C2EC_DB_OPERATOR_PW=secret
+#export C2EC_DB_API_PW=secret
+#export C2EC_FILE_PERMISSIONS=660
+
+# This will setup the database and the required files inside C2EC_HOME
+make install
+
+# This will compile the c2ec executable and save it to C2EC_HOME
+make build
+
+# This will compile the c2ec cli and save it to C2EC_HOME
+make cli
+
+# This will compile the simulation and save it to C2EC_HOME
+make simulation
+
+unset C2EC_POSTGRES_PASSWORD
+unset C2EC_DB_ADMIN_PW
+unset C2EC_DB_OPERATOR_PW
+unset C2EC_DB_API_PW
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-cashless2ecash] branch master updated: setup: automate setup,
gnunet <=