aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Boss <bossm8@bfh.ch>2022-04-02 09:27:30 +0200
committerMarco Boss <bossm8@bfh.ch>2022-04-02 09:27:30 +0200
commit0ba219fe5b02d8b22be72e6320c5d7e31c894995 (patch)
tree1ffdb3bfa1e98b89e61eba0da4b11a664631cafb
parent45916b992b2a8e680aa1e53ec6fab4846a17e650 (diff)
add permissions
-rw-r--r--src/exchangedb/common-0001.sql39
1 files changed, 35 insertions, 4 deletions
diff --git a/src/exchangedb/common-0001.sql b/src/exchangedb/common-0001.sql
index 873141b82..bf2a9925c 100644
--- a/src/exchangedb/common-0001.sql
+++ b/src/exchangedb/common-0001.sql
@@ -1560,6 +1560,7 @@ CREATE OR REPLACE FUNCTION create_foreign_table(
,modulus INTEGER
,shard_suffix VARCHAR
,current_shard_num INTEGER
+ ,local_user VARCHAR DEFAULT 'taler-exchange-httpd'
)
RETURNS VOID
LANGUAGE plpgsql
@@ -1581,14 +1582,15 @@ BEGIN
);
EXECUTE FORMAT(
- 'ALTER FOREIGN TABLE %I OWNER TO "taler-exchange-httpd"',
- source_table_name || '_' || shard_suffix
+ 'ALTER FOREIGN TABLE %I OWNER TO %L'
+ ,source_table_name || '_' || shard_suffix
+ ,local_user
);
END
$$;
-CREATE OR REPLACE FUNCTION master_prepare_sharding()
+CREATE OR REPLACE FUNCTION prepare_sharding()
RETURNS VOID
LANGUAGE plpgsql
AS $$
@@ -1717,131 +1719,160 @@ BEGIN
,remote_user_password
);
+ EXECUTE FORMAT(
+ 'GRANT ALL PRIVILEGES '
+ 'ON FOREIGN SERVER %I '
+ 'TO %L;'
+ ,shard_suffix
+ ,local_user
+ );
+
PERFORM create_foreign_table(
'wire_targets'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'reserves'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'reserves_in'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'reserves_out'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'reserves_close'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'known_coins'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'refresh_commitments'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'refresh_revealed_coins'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'refresh_transfer_keys'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'deposits'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
-- PERFORM create_foreign_table(
-- 'deposits_by_ready'
-- ,total_num_shards
-- ,shard_suffix
-- ,current_shard_num
+-- ,local_user
-- );
-- PERFORM create_foreign_table(
-- 'deposits_for_matching'
-- ,total_num_shards
-- ,shard_suffix
-- ,current_shard_num
+-- ,local_user
-- );
PERFORM create_foreign_table(
'refunds'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'wire_out'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'aggregation_tracking'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'recoup'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'recoup_by_reserve'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'reserves_out_by_reserve'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'recoup_refresh'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'prewire'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
PERFORM create_foreign_table(
'cs_nonce_locks'
,total_num_shards
,shard_suffix
,current_shard_num
+ ,local_user
);
END
@@ -1860,7 +1891,7 @@ CREATE OR REPLACE FUNCTION create_foreign_servers(
AS $$
BEGIN
- PERFORM master_prepare_sharding();
+ PERFORM prepare_sharding();
FOR i IN 1..amount LOOP
PERFORM create_shard_server(