147 lines
6.0 KiB
Bash
Executable File
147 lines
6.0 KiB
Bash
Executable File
#!/bin/bash
|
||
# Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||
# All rights reserved.
|
||
#
|
||
# This software is proprietary and confidential.
|
||
# Unauthorized copying, modification, or distribution is prohibited.
|
||
#
|
||
# For licensing inquiries: info@hb3-accelerator.com
|
||
# Website: https://hb3-accelerator.com
|
||
# GitHub: https://github.com/VC-HB3-Accelerator
|
||
|
||
#!/bin/bash
|
||
|
||
|
||
if ! docker exec dapp-postgres pg_isready -U dapp_user -d dapp_db > /dev/null 2>&1; then
|
||
exit 1
|
||
fi
|
||
|
||
if [ ! -f "./ssl/keys/full_db_encryption.key" ]; then
|
||
exit 1
|
||
fi
|
||
|
||
ENCRYPTION_KEY=$(cat ./ssl/keys/full_db_encryption.key)
|
||
|
||
# Создаем роли Read-Only и Editor
|
||
# Используем DO блок для безопасной вставки с проверкой уникальности name_encrypted
|
||
docker exec dapp-postgres psql -U dapp_user -d dapp_db -c "
|
||
DO \$\$
|
||
DECLARE
|
||
readonly_id INTEGER;
|
||
editor_id INTEGER;
|
||
BEGIN
|
||
-- Проверяем и создаем/обновляем роль readonly
|
||
SELECT id INTO readonly_id FROM roles WHERE decrypt_text(name_encrypted, get_encryption_key()) = 'readonly' LIMIT 1;
|
||
IF readonly_id IS NULL THEN
|
||
-- Если роли нет, пытаемся вставить с id=1, если занято - используем следующий доступный
|
||
BEGIN
|
||
INSERT INTO roles (id, name_encrypted) VALUES (1, encrypt_text('readonly', get_encryption_key()));
|
||
EXCEPTION WHEN unique_violation THEN
|
||
INSERT INTO roles (name_encrypted) VALUES (encrypt_text('readonly', get_encryption_key()));
|
||
END;
|
||
END IF;
|
||
|
||
-- Проверяем и создаем/обновляем роль editor
|
||
SELECT id INTO editor_id FROM roles WHERE decrypt_text(name_encrypted, get_encryption_key()) = 'editor' LIMIT 1;
|
||
IF editor_id IS NULL THEN
|
||
BEGIN
|
||
INSERT INTO roles (id, name_encrypted) VALUES (2, encrypt_text('editor', get_encryption_key()));
|
||
EXCEPTION WHEN unique_violation THEN
|
||
INSERT INTO roles (name_encrypted) VALUES (encrypt_text('editor', get_encryption_key()));
|
||
END;
|
||
END IF;
|
||
END \$\$;"
|
||
|
||
# Заполняем справочную таблицу is_rag_source
|
||
docker exec dapp-postgres psql -U dapp_user -d dapp_db -c "
|
||
INSERT INTO is_rag_source (id, name_encrypted) VALUES
|
||
(1, encrypt_text('Да', '$ENCRYPTION_KEY')),
|
||
(2, encrypt_text('Нет', '$ENCRYPTION_KEY'))
|
||
ON CONFLICT (id) DO UPDATE SET
|
||
name_encrypted = EXCLUDED.name_encrypted;"
|
||
|
||
# Заполняем RPC провайдеры с проверкой дубликатов
|
||
docker exec dapp-postgres psql -U dapp_user -d dapp_db -c "
|
||
DO \$\$
|
||
BEGIN
|
||
-- Sepolia
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM rpc_providers
|
||
WHERE decrypt_text(network_id_encrypted, get_encryption_key()) = 'sepolia'
|
||
AND chain_id = 11155111
|
||
) THEN
|
||
INSERT INTO rpc_providers (network_id_encrypted, rpc_url_encrypted, chain_id)
|
||
VALUES (encrypt_text('sepolia', get_encryption_key()), encrypt_text('https://1rpc.io/sepolia', get_encryption_key()), 11155111);
|
||
END IF;
|
||
|
||
-- Arbitrum Sepolia
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM rpc_providers
|
||
WHERE decrypt_text(network_id_encrypted, get_encryption_key()) = 'arbitrum-sepolia'
|
||
AND chain_id = 421614
|
||
) THEN
|
||
INSERT INTO rpc_providers (network_id_encrypted, rpc_url_encrypted, chain_id)
|
||
VALUES (encrypt_text('arbitrum-sepolia', get_encryption_key()), encrypt_text('https://sepolia-rollup.arbitrum.io/rpc', get_encryption_key()), 421614);
|
||
END IF;
|
||
|
||
-- Base Sepolia
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM rpc_providers
|
||
WHERE decrypt_text(network_id_encrypted, get_encryption_key()) = 'base-sepolia'
|
||
AND chain_id = 84532
|
||
) THEN
|
||
INSERT INTO rpc_providers (network_id_encrypted, rpc_url_encrypted, chain_id)
|
||
VALUES (encrypt_text('base-sepolia', get_encryption_key()), encrypt_text('https://sepolia.base.org', get_encryption_key()), 84532);
|
||
END IF;
|
||
END \$\$;"
|
||
|
||
# Заполняем токены аутентификации с проверкой дубликатов
|
||
docker exec dapp-postgres psql -U dapp_user -d dapp_db -c "
|
||
DO \$\$
|
||
BEGIN
|
||
-- Sepolia token
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM auth_tokens
|
||
WHERE decrypt_text(network_encrypted, get_encryption_key()) = 'sepolia'
|
||
AND decrypt_text(address_encrypted, get_encryption_key()) = '0xdD27a91692da59d1Ee7dD1Fb342B9f1B5FF29386'
|
||
) THEN
|
||
INSERT INTO auth_tokens (name_encrypted, address_encrypted, network_encrypted, min_balance, readonly_threshold, editor_threshold)
|
||
VALUES (
|
||
encrypt_text('DLE', get_encryption_key()),
|
||
encrypt_text('0xdD27a91692da59d1Ee7dD1Fb342B9f1B5FF29386', get_encryption_key()),
|
||
encrypt_text('sepolia', get_encryption_key()),
|
||
1.000000000000000000, 1, 1
|
||
);
|
||
END IF;
|
||
|
||
-- Arbitrum Sepolia token
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM auth_tokens
|
||
WHERE decrypt_text(network_encrypted, get_encryption_key()) = 'arbitrum-sepolia'
|
||
AND decrypt_text(address_encrypted, get_encryption_key()) = '0xdD27a91692da59d1Ee7dD1Fb342B9f1B5FF29386'
|
||
) THEN
|
||
INSERT INTO auth_tokens (name_encrypted, address_encrypted, network_encrypted, min_balance, readonly_threshold, editor_threshold)
|
||
VALUES (
|
||
encrypt_text('DLE', get_encryption_key()),
|
||
encrypt_text('0xdD27a91692da59d1Ee7dD1Fb342B9f1B5FF29386', get_encryption_key()),
|
||
encrypt_text('arbitrum-sepolia', get_encryption_key()),
|
||
1.000000000000000000, 1, 1
|
||
);
|
||
END IF;
|
||
|
||
-- Base Sepolia token
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM auth_tokens
|
||
WHERE decrypt_text(network_encrypted, get_encryption_key()) = 'base-sepolia'
|
||
AND decrypt_text(address_encrypted, get_encryption_key()) = '0xdD27a91692da59d1Ee7dD1Fb342B9f1B5FF29386'
|
||
) THEN
|
||
INSERT INTO auth_tokens (name_encrypted, address_encrypted, network_encrypted, min_balance, readonly_threshold, editor_threshold)
|
||
VALUES (
|
||
encrypt_text('DLE', get_encryption_key()),
|
||
encrypt_text('0xdD27a91692da59d1Ee7dD1Fb342B9f1B5FF29386', get_encryption_key()),
|
||
encrypt_text('base-sepolia', get_encryption_key()),
|
||
1.000000000000000000, 1, 1
|
||
);
|
||
END IF;
|
||
END \$\$;"
|