gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]