From ea3d2845e084dcec36611124c9b9c6b27b10a7f9 Mon Sep 17 00:00:00 2001 From: metalicn20 Date: Sun, 17 Apr 2022 16:38:55 +0430 Subject: [PATCH 1/6] vault: Add keycloak client secret env for admin module --- Jenkinsfile | 1 + dev.Jenkinsfile | 1 + docker-compose.yml | 1 + resources/vault/workflow-vault.sh | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 21f3634bc..126844a50 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -26,6 +26,7 @@ pipeline { KEYCLOAK_FRONTEND_URL = 'https://demo.opex.dev/auth' KEYCLOAK_ADMIN_USERNAME = credentials("keycloak-admin-username") KEYCLOAK_ADMIN_PASSWORD = credentials("keycloak-admin-password") + OPEX_ADMIN_KEYCLOAK_CLIENT_SECRET = credentials("opex-admin-keycloak-client-secret") COMPOSE_PROJECT_NAME = 'demo-core' DEFAULT_NETWORK_NAME = 'demo-opex' } diff --git a/dev.Jenkinsfile b/dev.Jenkinsfile index fa752aaac..f0cd90cf5 100644 --- a/dev.Jenkinsfile +++ b/dev.Jenkinsfile @@ -26,6 +26,7 @@ pipeline { KEYCLOAK_FRONTEND_URL = 'https://demo.opex.dev:8443/auth' KEYCLOAK_ADMIN_USERNAME = credentials("keycloak-admin-username-dev") KEYCLOAK_ADMIN_PASSWORD = credentials("keycloak-admin-password-dev") + OPEX_ADMIN_KEYCLOAK_CLIENT_SECRET = credentials("opex-admin-keycloak-client-secret-dev") COMPOSE_PROJECT_NAME = 'dev-core' DEFAULT_NETWORK_NAME = 'dev-opex' } diff --git a/docker-compose.yml b/docker-compose.yml index 057876f43..000e873c2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -108,6 +108,7 @@ services: - DB_BACKUP_PASS=${DB_BACKUP_PASS:-hiopex} - KEYCLOAK_ADMIN_USERNAME=${KEYCLOAK_ADMIN_USERNAME:-opex-admin} - KEYCLOAK_ADMIN_PASSWORD=${KEYCLOAK_ADMIN_PASSWORD:-hiopex} + - OPEX_ADMIN_KEYCLOAK_CLIENT_SECRET=${OPEX_ADMIN_KEYCLOAK_CLIENT_SECRET} - VANDAR_API_KEY=$VANDAR_API_KEY healthcheck: retries: 5 diff --git a/resources/vault/workflow-vault.sh b/resources/vault/workflow-vault.sh index 461f5a4d5..c0f7ef875 100755 --- a/resources/vault/workflow-vault.sh +++ b/resources/vault/workflow-vault.sh @@ -88,7 +88,7 @@ vault kv put secret/opex-auth dbusername=${DB_USER} dbpassword=${DB_PASS} admin_ vault kv put secret/opex-wallet dbusername=${DB_USER} dbpassword=${DB_PASS} db_backup_username=${DB_BACKUP_USERNAME} db_backup_pass=${DB_BACKUP_PASS} vault kv put secret/opex-websocket dbusername=${DB_USER} dbpassword=${DB_PASS} db_backup_username=${DB_BACKUP_USERNAME} db_backup_pass=${DB_BACKUP_PASS} vault kv put secret/opex-payment dbusername=${DB_USER} dbpassword=${DB_PASS} db_backup_username=${DB_BACKUP_USERNAME} db_backup_pass=${DB_BACKUP_PASS} vandar_api_key=${VANDAR_API_KEY} -vault kv put secret/opex-admin keycloak_client_secret=${KEYCLOAK_CLIENT_SECRET} +vault kv put secret/opex-admin keycloak_client_secret=${OPEX_ADMIN_KEYCLOAK_CLIENT_SECRET} vault kv put secret/chain-scan-gateway dbusername=${DB_USER} dbpassword=${DB_PASS} vault kv put secret/opex-referral dbusername=${DB_USER} dbpassword=${DB_PASS} db_backup_username=${DB_BACKUP_USERNAME} db_backup_pass=${DB_BACKUP_PASS} From 979a6a65947bd2ec9a3b1823a61afac1916454e6 Mon Sep 17 00:00:00 2001 From: metalicn20 Date: Mon, 18 Apr 2022 11:37:50 +0430 Subject: [PATCH 2/6] captcha: Reduce CAPTCHA length to 5 characters --- .../kotlin/co/nilin/opex/captcha/app/service/SimpleCaptcha.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/captcha/captcha-app/src/main/kotlin/co/nilin/opex/captcha/app/service/SimpleCaptcha.kt b/captcha/captcha-app/src/main/kotlin/co/nilin/opex/captcha/app/service/SimpleCaptcha.kt index 3204f4740..511f081c9 100644 --- a/captcha/captcha-app/src/main/kotlin/co/nilin/opex/captcha/app/service/SimpleCaptcha.kt +++ b/captcha/captcha-app/src/main/kotlin/co/nilin/opex/captcha/app/service/SimpleCaptcha.kt @@ -21,7 +21,7 @@ object SimpleCaptcha { /** * Generates a PNG image of text 180 pixels wide, 40 pixels high with white background. * - * @param text expects string size eight (8) characters. + * @param text expects string size eight (5) characters. * @return byte array that is a PNG image generated with text displayed. */ fun generateImage(text: String): ByteArray { @@ -43,7 +43,7 @@ object SimpleCaptcha { g.drawString(String(byteArrayOf(bytes[i])), start + i * 20, (Math.random() * 20 + 20).toInt()) } g.color = Color.white - for (i in 0..7) { + for (i in 0..4) { g.drawOval((Math.random() * 160).toInt(), (Math.random() * 10).toInt(), 30, 30) } g.dispose() From 2d9e0ff4280fbd295678748050333e7eeb7fa4e4 Mon Sep 17 00:00:00 2001 From: metalicn20 Date: Mon, 18 Apr 2022 12:08:49 +0430 Subject: [PATCH 3/6] captcha: Improve error handling --- .../auth/gateway/extension/UserManagementResource.kt | 5 ++--- .../co/nilin/opex/utility/error/data/OpexError.kt | 10 +++++----- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/UserManagementResource.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/UserManagementResource.kt index ea076f0cc..5d138a0fb 100644 --- a/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/UserManagementResource.kt +++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/UserManagementResource.kt @@ -56,8 +56,7 @@ class UserManagementResource(private val session: KeycloakSession) : RealmResour runCatching { validateCaptcha("${request.captchaAnswer}-${xForwardedFor?.split(",")?.first() ?: "0.0.0.0"}") }.onFailure { - logger.error(it.message) - return Response.status(Response.Status.BAD_REQUEST).build() + return ErrorHandler.response(Response.Status.BAD_REQUEST, OpexError.InvalidCaptcha) } if (!request.isValid()) return ErrorHandler.response(Response.Status.BAD_REQUEST, OpexError.BadRequest) @@ -94,7 +93,7 @@ class UserManagementResource(private val session: KeycloakSession) : RealmResour runCatching { validateCaptcha("$captchaAnswer-${xForwardedFor?.split(",")?.first() ?: "0.0.0.0"}") }.onFailure { - return Response.status(Response.Status.BAD_REQUEST).build() + return ErrorHandler.response(Response.Status.BAD_REQUEST, OpexError.InvalidCaptcha) } val user = session.users().getUserByEmail(email, opexRealm) diff --git a/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt index fbe4543f6..cfe2f6549 100644 --- a/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt +++ b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt @@ -52,7 +52,10 @@ enum class OpexError(val code: Int, val message: String?, val status: HttpStatus ChainNotFound(8003, "Chain not found", HttpStatus.NOT_FOUND), CurrencyNotFoundBC(8004, "Currency not found", HttpStatus.NOT_FOUND), TokenNotFound(8005, "Coin/Token not found", HttpStatus.NOT_FOUND), - InvalidAddressType(8006, "Address type is invalid", HttpStatus.NOT_FOUND); + InvalidAddressType(8006, "Address type is invalid", HttpStatus.NOT_FOUND), + + // code 9000: bc-gateway + InvalidCaptcha(9001, "Captcha is not valid", HttpStatus.BAD_REQUEST); companion object { fun findByCode(code: Int?): OpexError? { @@ -65,10 +68,7 @@ enum class OpexError(val code: Int, val message: String?, val status: HttpStatus @Throws(OpexException::class) inline fun T.throwError( - error: OpexError, - message: String? = null, - status: HttpStatus? = null, - data: Any? = null + error: OpexError, message: String? = null, status: HttpStatus? = null, data: Any? = null ) { throw OpexException(error, message, status, data, T::class.java) } \ No newline at end of file From 29d143d1a1ac9692ec01cf69c1ba0f12d9e86a26 Mon Sep 17 00:00:00 2001 From: metalicn20 Date: Tue, 19 Apr 2022 14:57:41 +0430 Subject: [PATCH 4/6] bc-gateway: Extract data initiate script --- .../src/main/resources/data.sql | 208 ------------------ configure.sh | 10 + 2 files changed, 10 insertions(+), 208 deletions(-) create mode 100644 configure.sh diff --git a/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/data.sql b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/data.sql index d28213b91..843e46945 100644 --- a/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/data.sql +++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/data.sql @@ -57,211 +57,3 @@ ON CONFLICT DO NOTHING; INSERT INTO wallet_sync_schedules VALUES (1, CURRENT_DATE, 30, 10000) ON CONFLICT DO NOTHING; - -INSERT INTO reserved_addresses -VALUES (1, '0x9915b2B115C7061e19292FE6C6e63909448ACbdD', '', 2), - (2, '0x35a55e21f7f62c5ed7d8ab0d6a1ca7d636aa4068', '', 2), - (3, '0x31a45ea63421104e484436bda180ed396381d4c6', '', 2), - (4, '0x726808b2cdc23ee50c698aea978e06c04be1be1d', '', 2), - (5, '0x0b7543bf76f550d3e70fbac3f964d43fb6ce203a', '', 2), - (6, '0x5fe284474b3b52f2fd693da5b5260a4572f90a56', '', 2), - (7, '0x8593659960260335d82376a9fb4b88a3c49593ab', '', 2), - (8, '0x597ea3bff601a9872978ee77d9e005427fc44396', '', 2), - (9, '0x8c3e95eb46e25bd1fdefec295cbb424d20e93552', '', 2), - (10, '0x5057f69595a93fd90be91478b0a6dfbf56df31c0', '', 2), - (11, '0x974046c4ea7779e66b4e74581ed4e03565da2b44', '', 2), - (12, '0xb1f81300b7d9e2f8df54bd8c369256e761a30ea5', '', 2), - (13, '0xc486ba1a7a54c3d10fdbb049d50c9d7ba6e9d8f2', '', 2), - (14, '0x23b23ee63de28993bdd80275465e82f580ba2458', '', 2), - (15, '0x3b729f061057854198cced6c94a91bea92e76510', '', 2), - (16, '0xf524e92481b91dd6a5db112241d93417ac9d7c41', '', 2), - (17, '0xd7350aaf9bf051bc783cb77008d5dea5824ee3d1', '', 2), - (18, '0xe5d9fb6a2881ad30f9911acd3c4afda94bc7261e', '', 2), - (19, '0x7fc8630872e0fd392767008b91bfe3a5fe623ef9', '', 2), - (20, '0xb254ece0214fbef616bc84855261bc9e54fe23e7', '', 2), - (21, '0x9d2f4f5229d4bdb27c6e191198b500d827b80d31', '', 2), - (22, '0xe50a8ebc5ced25289e0f4efaa934597b4c56336e', '', 2), - (23, '0xa3bf7214bf5ab7a0dabb1a1ea78d6ae4a4270c6f', '', 2), - (24, '0x18fdff00ead80e43224e59a85a2bc4c6259a88a3', '', 2), - (25, '0x7200e5bbc596f4f6f4e29e9ba6954a11e40954cd', '', 2), - (26, '0xcf6ee0077cf538e97b29b0667e96ff720dcacef3', '', 2), - (27, '0xaa37606c560f2af28c01f3de838a771f262bc2cc', '', 2), - (28, '0x5a664d1369e7eb5096ad57cb53c58047aad6f376', '', 2), - (29, '0x3e53908e0f035ed1d471b61b5cc4074143dcefab', '', 2), - (30, '0x50e25d825dc955783867d3d3510d20dcac4f905f', '', 2), - (31, '0xae826d35823686e2c3a6cddd446c43da16ff3070', '', 2), - (32, '0xdf934cf7f6455a5620f9de737daa82d4f5bf8f5b', '', 2), - (33, '0x19669c309ccaa6b1afed0701b8e94ae7e6ecd3e1', '', 2), - (34, '0x1506495ae195c96f5f56b79b4baa56a219189538', '', 2), - (35, '0x855fb40e11de5a27061a1f6dc8cc18e4524fa8bf', '', 2), - (36, '0x62e2b44b1e5a2ba4ffe2b4f9e5d067ef5d85f565', '', 2), - (37, '0xe384f167cf7f59449a5b85160b1e9353da1d5470', '', 2), - (38, '0xa51a98ed3ee695a0921767c920a71fbb371c572c', '', 2), - (39, '0x8e6a769df4ececdcc26ce55265ce118f9edb5fa2', '', 2), - (40, '0xde7cce5eb81a961aa7d789a719eb0a56cbd8c218', '', 2), - (41, '0x20832a4bebe768eef9cbda0789b298d29ec11084', '', 2), - (42, '0x32139bcb3a20adbfd60b8f69c06cf0e15304ecdc', '', 2), - (43, '0x3d593222db1e9b18ba9fdd70f7bd380850dd5a3c', '', 2), - (44, '0x3b99f972764765ac85bc65dae7f96206c0b20a02', '', 2), - (45, '0xe4134fa19f3b798b44de09783b2004f6e1143717', '', 2), - (46, '0xc76978e7d6fba69b2f980b36d24b53790fec6dc4', '', 2), - (47, '0x8668bcfc22741d84241da064204d10b3a2616503', '', 2), - (48, '0xf9510e1846206e18484742cb1a6c99c0e3fe745f', '', 2), - (49, '0x5d5581d06f762ec296338cbea4d56b0eba8f7c03', '', 2), - (50, '0x2d84a57ee481c9c7c1caf5dc151fa6205f9af319', '', 2), - (51, '0xcc13def9292bcc6f41bd585c06325343c4eae0da', '', 2), - (52, '0xa082667282fa333612cea74ccc69c70716dc3a86', '', 2), - (53, '0xb640f1ac183453dc12c4bcbe446ecd7016881cdb', '', 2), - (54, '0x68eacdc4f1ea5e722f69b05e736c6fab8163f37a', '', 2), - (55, '0x142b062e66577c16f5e3959b4195cae78e7bec5a', '', 2), - (56, '0x8999dd812ae8ad2b2cf70d46a6acbb59422bc531', '', 2), - (57, '0x1a5fc4a430f40dcff19729cb80f4bb90d5286e88', '', 2), - (58, '0xa36620eb16d699ea2d1e606d2cabaf67b41eba5b', '', 2), - (59, '0xb626afc6f9dee216af119f02fed5d774b185ed1c', '', 2), - (60, '0x3d3f936b6eca5670591609bee2cbe808ef789e7c', '', 2), - (61, '0xcc12704fd2570ef08dc5ed3a4f5147da08f2866f', '', 2), - (62, '0xf8b87807b34e4536bbf7a68653b06175a1673646', '', 2), - (63, '0x03a49b796b3a0cca0de7a0e027895af0eb2103f0', '', 2), - (64, '0xddabe826e1e2e7c0b9c1a4c61f3b3a45630595f7', '', 2), - (65, '0x1782c18709139b16d91143f2f5f9b65f39e9165c', '', 2), - (66, '0x40bae95ec1c3df040abb4d12b6536807ae04d46b', '', 2), - (67, '0xac6bfcc5fe5c4c6bdaff2e7d71f013809896f98b', '', 2), - (68, '0xdeee2d05ac3566efac90b7ee5403ba7e5332c2fe', '', 2), - (69, '0xfe53059bf5cbf35a18f8e5705bd870e5e92b3387', '', 2), - (70, '0x335815f17fc5cba2979c3f135ffb1dcdc2e94228', '', 2), - (71, '0xa62cecf4650bd713c23f15b500fdd0933c9f8aac', '', 2), - (72, '0xa954078b626c49ba1b17f1bff7f5bb0954792758', '', 2), - (73, '0x997260c29aa2eddf3304ed5c0e440ac8e5cacde7', '', 2), - (74, '0x046e80bd6af93389cdc2bed2336f464b3da7c0b7', '', 2), - (75, '0xbb126abc010a53e5b0fd090a90a10cb4003720b5', '', 2), - (76, '0xe720f50c1d16d574946d4090e0510f529a3c9bc5', '', 2), - (77, '0x456cf66467a2f4713356c0a496c263d9e74a8105', '', 2), - (78, '0x29ef6b2b52778cb7792bd0e5d7680b4982c020fc', '', 2), - (79, '0x0cbd9032f92673ccc33ccf7da0a291a267380332', '', 2), - (80, '0x65e9e60636aa7bc000332714e3d67ebe239ad110', '', 2), - (81, '0x211c89ae3077c2ec7ed0fe4c0948f807713ffc56', '', 2), - (82, '0x5efbcc7920453b9ecdc4983ea55d2d25d9ee6b37', '', 2), - (83, '0xc2634f656a99c2b73a96a86a501f999a9cf02566', '', 2), - (84, '0x55e1dbe468ec30e6736313bdbb3a36d1674c1989', '', 2), - (85, '0x6bbf7d9a0dd3eea7458ea0adc70ff4d902091647', '', 2), - (86, '0x549288e51f3d8723c2e7fb43dc0f92ec146a0ee8', '', 2), - (87, '0x21b01a19c0357e4c70eedf82b8f76c31e3f6f325', '', 2), - (88, '0xf56ba97281ff966c30b9a66bd6a4c7a50c286020', '', 2), - (89, '0x0a4b3b72ef9a66b10d6e93e894de1c0fb0bb8eb6', '', 2), - (90, '0xced6c8176da9bba6d6811c55723b1cfbde02fdf1', '', 2), - (91, '0x73657fb131852187d8f2068616de14f449dd5c4b', '', 2), - (92, '0xed8070518c219ddf89b2bbffd7c5d6cd72df1470', '', 2), - (93, '0x8efddeaca85c72580f54aaa00df8f8ae59ce5633', '', 2), - (94, '0x2b6b34f70a3c762e406aa1d55902665747c3b7e0', '', 2), - (95, '0x533bcb1fa7eedc83bd11771c60aca12632899af1', '', 2), - (96, '0xd5d79c3410c6bc6ae1c27329c93e0a943e7efc72', '', 2), - (97, '0x2307fdc11547091b67b36508b680399da508825a', '', 2), - (98, '0x2858f7b3e21f08dce6530ecb68dd3c1756fcba01', '', 2), - (99, '0xa2edce267a43e1cf3b58d62f5da75f4ffcec85df', '', 2), - (100, '0xf6e1ec3f817c8b76b860588dad74354e1772c98c', '', 2) -ON CONFLICT DO NOTHING; - -INSERT INTO reserved_addresses -VALUES (101, '1LJYygirSoWPY8J9g3mTHgfvzuiSc57Jrh', '', 1), - (102, '132dj2K7wwgFULAogws2c7XYeuXzE48WC3', '', 1), - (103, '1LGCvMfzExf2HiYj5Ly3yA28LSZdAxNDKa', '', 1), - (104, '1HRo7b4MqP13vujQNB3sS1L2r2NPdo677z', '', 1), - (105, '1168eG75WRESkQhC2Ga3fG1uQgFjwj17ky', '', 1), - (106, '1QDryfkK8U62LVtCjEn8LKaJj8FptW6ZY6', '', 1), - (107, '13NiXcRQ464xnu1C5KdB9JUserxWA7JqY6', '', 1), - (108, '1NhxrxHP3rc21j4SzFa4aFcsGV3H3hd7Af', '', 1), - (109, '1DxWqdHjAtJZrDLCA86mu8KsuXDLKMyni7', '', 1), - (110, '19d9whtZkAb7YKyjKnNvhNicwVVMGP4BwE', '', 1), - (111, '1KUp7G6nqhMMdmU3Bwvv2DJsmvjisYBTeK', '', 1), - (112, '1PobNJKQFYMGwwsUG6FPny8oZNFfq5UMVd', '', 1), - (113, '16EKdwQ6KtA28jY1ywDRAvk7Wc1fQ7yq8L', '', 1), - (114, '13t3QwEAdMLkktkHF8EMDpvyvs4zeYnNXd', '', 1), - (115, '1CU8Czx8tvBS6B7VwrU6NSZqziyHbbNwf9', '', 1), - (116, '1QKUuge5y1ytscAp9yhyBZcHoqVKz43F5Q', '', 1), - (117, '19Cg2X89XWaovVkHYDi85u9NPtnDvXZjJ7', '', 1), - (118, '1EdZcRGM7xDUxDzrX5pjXwdfG6yGPpUZ3S', '', 1), - (119, '1GaqchuAkHLpMFgYd1wqoJqWk87XNoYjMn', '', 1), - (120, '1Kvx81iqL5qnFYQeX7gEwiqH4UrcnM18Gj', '', 1), - (121, '1BS3gGLk4KtekfkGSG42DVHnDtepMoY2cq', '', 1), - (122, '16vEWVnBcweUM37CKcWaaSupz8ut551Lq7', '', 1), - (123, '14UKNcy6m7dt16ZStuUmyGqwM1tMUh1qsr', '', 1), - (124, '1DfRspiCrgrSYQf83tJRg9KcCYcWVwST5o', '', 1), - (125, '1FCnYfFL8DxCh669WtcZyZuW6p8K1QWtSo', '', 1), - (126, '1GUjY5SEDYHnCW81HXTM1Y3CYdsDWE2qhj', '', 1), - (127, '18uzbGz9Cz7FggQjobKQSHA6RnLjuNZg6E', '', 1), - (128, '149rR1qEzimPGCqTCj598Q9dJMW6RM2KLB', '', 1), - (129, '125uE2an6pDpWnWvyGW53WTWZjHacMQrKq', '', 1), - (130, '1LKz6kCKTSfe1yqxWFq3QQSYf9S4MFAtf3', '', 1), - (131, '12UaDY8ZgRjHiEcxDJx47Y9yN87GXkiNx4', '', 1), - (132, '113JaxwoSV5UzfbkEof3SuMKKatuYx17Vc', '', 1), - (133, '114XL5acj1qeshMUcovETDR2Lhe8xv5kTE', '', 1), - (134, '1MPDF2B4ayPiWbLbWMUw9qWX8eouQoEKVw', '', 1), - (135, '1HuL4EpVMQ3V1P9qqRzsVMaJVBbUqenMJk', '', 1), - (136, '15MZdya9t8VQfBVDinMJACxbTjMo9LfU3R', '', 1), - (137, '1DuCvPagYRk767VpMbbXbZbTGFDMMfrU1H', '', 1), - (138, '12RjdTFtgUMxWLsnis6dAkEuMdUucms61R', '', 1), - (139, '1Gp5MLUCM6ZxpWpEDuFfDnjkLoosu5F5TV', '', 1), - (140, '14JbHWzF1RTZ5gpu9Eea54kVPU8og12AnC', '', 1), - (141, '1Drs6n497mKVag7edjqTRoqeqxrcLtG2Xg', '', 1), - (142, '19A6XzVRazZVFBsYQ5VZSVmTqDGqa7pFMg', '', 1), - (143, '18iktsmhDTAVoMnghQy4xJwjem5uo55EdN', '', 1), - (144, '19RoW9t7JLdoRDaiweQBdq2XSK27ZjpNQ6', '', 1), - (145, '19kr8uYCxx8iShkBn1zTtS6LcYg4bJNysz', '', 1), - (146, '15EDpSeBKvAQxQ1yGHBxvi1YoVzxikhXj1', '', 1), - (147, '1DHB5gTPX6ZKx2mQh1V1VFA73A57P16gV9', '', 1), - (148, '1E4L3ybAkTvNdsDvvwLhxsFq8UEdD7xync', '', 1), - (149, '1G2ody9cDKin2Xkki6cgYX1LacNeo2zSiW', '', 1), - (150, '1KcCXHKBRJbjYC9CzKTxfTUNahYKUk5ryA', '', 1), - (151, '1J3TfJCViebfeTpMc6wSFPeLtVhPS1GaCo', '', 1), - (152, '18LRcPPAvqdwwD5TakN1miVYtbj3Pjk5SL', '', 1), - (153, '16L8Zdjzc778uQ5tyHYDcTFZahBchdXc7C', '', 1), - (154, '1NBE5ibxUnqayzRgb6dJ2uJgSuhz2r4dFa', '', 1), - (155, '1PyMb84JF2ubdTzp3cAQhcaSizK9F3dHop', '', 1), - (156, '1NcE7uEMVH1Y3eJecFdeLbRomYreFUENQm', '', 1), - (157, '1FUY9d4qUjxDg1u3fXpRZAzdvbm5eXMMRZ', '', 1), - (158, '13K15T5xD6Fr2qMAp4R4KvRSDg7HiZB4WN', '', 1), - (159, '1H9v62ZMdHkeu3v789LDSqTiQTYzedS1gC', '', 1), - (160, '1PLZRKohtHTzqGtK1RwxEyPBxGKPRENtpv', '', 1), - (161, '1DuwfU8q4XXWhBUGqzTa9SgYLPsB3JVmKW', '', 1), - (162, '17kEbJrtASWMx87pAnk4uCywsFDinGdkw8', '', 1), - (163, '15exk8y46uXjwtjET7PxGuzWDCXiFWP5hp', '', 1), - (164, '1DcJ4ttvM3cUmzX98fhAdDfDUXnyBt5cxD', '', 1), - (165, '1696g2zqx3Rgjhe29ttsfeDJyBTu2y51Bg', '', 1), - (166, '1AVivVBFn8tUsxMTyk3xe1s4iHm5fWEF49', '', 1), - (167, '1NA2RdYoQpvCrd4mhQ5K5JmRaR3hsWc7Qv', '', 1), - (168, '1Ke9MAahF7c5pmAdKmqnvBEBbT9RSCe2VP', '', 1), - (169, '1KLiGb3mfV4tHnQ4DxbLHMToPfTUbUdF9u', '', 1), - (170, '1HyEGsHStEYZD7SCnPw6j3b7GF5DziXUo7', '', 1), - (171, '1P3QuxqY3FmUPbPeWWGuEqFMHgrBfuUPRL', '', 1), - (172, '1LBMh5h6Vb5JTYFFJHQypgCwgZv7RGwHqh', '', 1), - (173, '1AWHxdEdPnMSTYEzFCjYWrFKCez3MVPcFz', '', 1), - (174, '1enZSZB542hbG3ZqsUkivTp7UE6dZCnjE', '', 1), - (175, '15Shw1FbcNbeVG1rfeoTwQ5EgsdWmyWcoQ', '', 1), - (176, '1LkrRmzuZ1VHGbTZB1tmMCtWHE6G7WreQu', '', 1), - (177, '13usV4iE83KbucaRFHnVssd7EpzMppRGDB', '', 1), - (178, '1DVah1wKDwNkgEVvmWeZ1hT9aD3yrFadVw', '', 1), - (179, '1Cmjbvt7apgF3X5kXg2auRifzNLAC4jyFV', '', 1), - (180, '1piZ99DiJHyhFDoNJQLbmHeEUG574LZ15', '', 1), - (181, '14C9n8My12fCN8btrMRxyUjzdjXXHyXnQX', '', 1), - (182, '12xCuk297QyFKD2637N8wdKVMzmrGvLjdm', '', 1), - (183, '14j9d9bc5rvYzSe2NxDpcQrUKbRU7Dh1gk', '', 1), - (184, '16rqNnnJNCNF9yJVmownYfFbwW2fMC784V', '', 1), - (185, '1FxaP1svexAuqDm5TMkNVYmXw8uXwpHCYh', '', 1), - (186, '1ES2ZHNkswLthMQfggj6TMpXF3tHDgfUBP', '', 1), - (187, '1AEF3YQP7mgXTfYksmthY4WzYx7JCKUe9P', '', 1), - (188, '145szc1LzhVrCZ84N6sd2oAv5CvCGfwewd', '', 1), - (189, '1DT8YS7FcJQF1QAeRYSCeTjNhhsFyww3DP', '', 1), - (190, '19Brny4zVtbcJ3C2PDbQKbdfCnzkWxraAX', '', 1), - (191, '1ErTiL8BaXu4vdhWTgzaUhC5iEzwuJSf3f', '', 1), - (192, '1YZX7cfxPVxSiKC8Bo2T6tkNSGvTfEM71', '', 1), - (193, '19rJVBmCqFWvPd8fKs5ED4XKbAeKqFQYnk', '', 1), - (194, '12byWnQxuHSuAamoyX3KMvjopnAmyA72Zn', '', 1), - (195, '14JGYTGnvWjtKR4sSN847dxw1qroFmQUjX', '', 1), - (196, '16qNWZvUeBMrVPNUBq4pqZTHsQx5wBA8ZR', '', 1), - (197, '1MEQqWEDpsACauQhaGnvQmryQL7dhgHKhW', '', 1), - (198, '13AdmWSaHRv39GLaydy26vkxrNX4DaNARK', '', 1), - (199, '14ZX6BThX8rSay3qNHx1Uc753FmnTWk1ZR', '', 1), - (200, '14BeB612pSr9pjmAh5sa3vMJ33YvLiGdvb', '', 1) -ON CONFLICT DO NOTHING; - -SELECT setval(pg_get_serial_sequence('reserved_addresses', 'id'), (SELECT MAX(id) FROM reserved_addresses)); diff --git a/configure.sh b/configure.sh new file mode 100644 index 000000000..2c47329db --- /dev/null +++ b/configure.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +docker run \ +-e PGPASSWORD="${DB_PASS:-hiopex}" \ +--network="${DEFAULT_NETWORK_NAME:-opex}" \ +--rm \ +--mount type=bind,src="$PWD/bc-gateway-data.sql",dst=/data.sql \ +--entrypoint="" \ +postgres:14-alpine \ +psql -h postgres-bc-gateway -p 5432 -U "${DB_USER:-opex}" -d opex_bc_gateway -f /data.sql From 02e27579cafad95cdc9381eb4f3cbeb3ac6728b4 Mon Sep 17 00:00:00 2001 From: metalicn20 Date: Wed, 20 Apr 2022 11:04:33 +0430 Subject: [PATCH 5/6] captcha: Update CAPTCHA error code --- .../main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt index cfe2f6549..780193110 100644 --- a/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt +++ b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt @@ -54,8 +54,8 @@ enum class OpexError(val code: Int, val message: String?, val status: HttpStatus TokenNotFound(8005, "Coin/Token not found", HttpStatus.NOT_FOUND), InvalidAddressType(8006, "Address type is invalid", HttpStatus.NOT_FOUND), - // code 9000: bc-gateway - InvalidCaptcha(9001, "Captcha is not valid", HttpStatus.BAD_REQUEST); + // code 10000: bc-gateway + InvalidCaptcha(10001, "Captcha is not valid", HttpStatus.BAD_REQUEST); companion object { fun findByCode(code: Int?): OpexError? { From 73186bc82cb11f032e6dbfeee04d5758e86ea98c Mon Sep 17 00:00:00 2001 From: metalicn20 Date: Wed, 20 Apr 2022 12:41:06 +0430 Subject: [PATCH 6/6] Add mainnet currencies --- .../src/main/resources/data.sql | 20 +++++++++++++ .../src/main/resources/data.sql | 9 ++++++ .../src/main/resources/data.sql | 30 +++++++++++++++++++ .../src/main/resources/application.yml | 2 +- .../src/main/resources/data.sql | 28 +++++++++++++++++ 5 files changed, 88 insertions(+), 1 deletion(-) diff --git a/accountant/accountant-ports/accountant-persister-postgres/src/main/resources/data.sql b/accountant/accountant-ports/accountant-persister-postgres/src/main/resources/data.sql index d535fcc0c..dac922021 100644 --- a/accountant/accountant-ports/accountant-persister-postgres/src/main/resources/data.sql +++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/resources/data.sql @@ -5,6 +5,14 @@ VALUES ('btc_usdt', 'btc', 'usdt', 0.000001, 0.01, 55000), ('nln_btc', 'nln', 'btc', 1.0, 0.000001, 1 / 5500000) ON CONFLICT DO NOTHING; +-- Test pairs +INSERT INTO pair_config +VALUES ('tbtc_tusdt', 'tbtc', 'tusdt', 0.000001, 0.01, 55000), + ('teth_tusdt', 'teth', 'tusdt', 0.00001, 0.01, 3800), + ('nln_tusdt', 'nln', 'tusdt', 1.0, 0.01, 0.01), + ('nln_tbtc', 'nln', 'tbtc', 1.0, 0.000001, 1 / 5500000) +ON CONFLICT DO NOTHING; + INSERT INTO pair_fee_config VALUES (1, 'btc_usdt', 'ASK', '*', 0.01, 0.01), (2, 'btc_usdt', 'BID', '*', 0.01, 0.01), @@ -16,6 +24,18 @@ VALUES (1, 'btc_usdt', 'ASK', '*', 0.01, 0.01), (8, 'eth_usdt', 'BID', '*', 0.01, 0.01) ON CONFLICT DO NOTHING; +-- Test pair configs +INSERT INTO pair_fee_config +VALUES (1, 'tbtc_tusdt', 'ASK', '*', 0.01, 0.01), + (2, 'tbtc_tusdt', 'BID', '*', 0.01, 0.01), + (3, 'nln_tusdt', 'ASK', '*', 0.01, 0.01), + (4, 'nln_tusdt', 'BID', '*', 0.01, 0.01), + (5, 'nln_tbtc', 'ASK', '*', 0.01, 0.01), + (6, 'nln_tbtc', 'BID', '*', 0.01, 0.01), + (7, 'teth_tusdt', 'ASK', '*', 0.01, 0.01), + (8, 'teth_tusdt', 'BID', '*', 0.01, 0.01) +ON CONFLICT DO NOTHING; + SELECT setval(pg_get_serial_sequence('pair_fee_config', 'id'), (SELECT MAX(id) FROM pair_fee_config)); COMMIT; diff --git a/api/api-ports/api-persister-postgres/src/main/resources/data.sql b/api/api-ports/api-persister-postgres/src/main/resources/data.sql index 5039b0d01..849c97bd3 100644 --- a/api/api-ports/api-persister-postgres/src/main/resources/data.sql +++ b/api/api-ports/api-persister-postgres/src/main/resources/data.sql @@ -5,3 +5,12 @@ VALUES ('btc_usdt', 'BTCUSDT'), ('nln_usdt', 'NLNUSDT'), ('nln_btc', 'NLNBTC') ON CONFLICT DO NOTHING; + +-- Test symbol mapper +INSERT INTO symbol_maps(symbol, value) +VALUES ('tbtc_tusdt', 'TBTCTUSDT'), + ('teth_tusdt', 'TETHTUSDT'), + ('teth_tbtc', 'TETHTBTC'), + ('nln_tusdt', 'NLNTUSDT'), + ('nln_tbtc', 'NLNTBTC') +ON CONFLICT DO NOTHING; diff --git a/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/data.sql b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/data.sql index 843e46945..dd1e604ca 100644 --- a/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/data.sql +++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/data.sql @@ -38,6 +38,22 @@ VALUES (1, 'BTC', 'bitcoin', false, null, null, true, 0.0001, 0.0001, 0), (3, 'USDT', 'ethereum', true, '0x110a13fc3efe6a245b50102d2d79b3e76125ae83', 'USDT', true, 0.01, 0.01, 6) ON CONFLICT DO NOTHING; +-- Test currency implementation +INSERT INTO currency_implementations(id, + symbol, + chain, + token, + token_address, + token_name, + withdraw_enabled, + withdraw_fee, + withdraw_min, + decimal) +VALUES (1, 'TBTC', 'test-bitcoin', false, null, null, true, 0.0001, 0.0001, 0), + (2, 'TETH', 'test-ethereum', false, null, null, true, 0.00001, 0.000001, 18), + (3, 'TUSDT', 'test-ethereum', true, '0x110a13fc3efe6a245b50102d2d79b3e76125ae83', 'TUSDT', true, 0.01, 0.01, 6) +ON CONFLICT DO NOTHING; + SELECT setval(pg_get_serial_sequence('currency_implementations', 'id'), (SELECT MAX(id) FROM currency_implementations)); INSERT INTO chain_endpoints(id, chain_name, endpoint_url) @@ -46,6 +62,13 @@ VALUES (1, 'bitcoin', 'lb://chain-scan-gateway/bitcoin/transfers'), (3, 'bsc', 'lb://chain-scan-gateway/bsc/transfers') ON CONFLICT DO NOTHING; +-- Test chain endpoints +INSERT INTO chain_endpoints(id, chain_name, endpoint_url) +VALUES (1, 'test-bitcoin', 'lb://chain-scan-gateway/test-bitcoin/transfers'), + (2, 'test-ethereum', 'lb://chain-scan-gateway/test-eth/transfers'), + (3, 'test-bsc', 'lb://chain-scan-gateway/test-bsc/transfers') +ON CONFLICT DO NOTHING; + SELECT setval(pg_get_serial_sequence('chain_endpoints', 'id'), (SELECT MAX(id) FROM chain_endpoints)); INSERT INTO chain_sync_schedules @@ -54,6 +77,13 @@ VALUES ('bitcoin', CURRENT_DATE, 600, 60), ('bsc', CURRENT_DATE, 90, 60) ON CONFLICT DO NOTHING; +-- Test chain scan schedules +INSERT INTO chain_sync_schedules +VALUES ('test-bitcoin', CURRENT_DATE, 600, 60), + ('test-ethereum', CURRENT_DATE, 90, 60), + ('test-bsc', CURRENT_DATE, 90, 60) +ON CONFLICT DO NOTHING; + INSERT INTO wallet_sync_schedules VALUES (1, CURRENT_DATE, 30, 10000) ON CONFLICT DO NOTHING; diff --git a/matching-engine/matching-engine-app/src/main/resources/application.yml b/matching-engine/matching-engine-app/src/main/resources/application.yml index 7c4d889f3..fff0555ac 100644 --- a/matching-engine/matching-engine-app/src/main/resources/application.yml +++ b/matching-engine/matching-engine-app/src/main/resources/application.yml @@ -11,4 +11,4 @@ spring: host: ${REDIS_HOST:localhost} port: 6379 app: - symbols: btc_usdt,eth_usdt,eth_btc \ No newline at end of file + symbols: btc_usdt,eth_usdt,eth_btc,tbtc_tusdt,teth_usdt,teth_tbtc \ No newline at end of file diff --git a/wallet/wallet-ports/wallet-persister-postgres/src/main/resources/data.sql b/wallet/wallet-ports/wallet-persister-postgres/src/main/resources/data.sql index cf1b991e3..e37f6f56f 100644 --- a/wallet/wallet-ports/wallet-persister-postgres/src/main/resources/data.sql +++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/resources/data.sql @@ -11,6 +11,14 @@ VALUES ('btc', 'btc', 0.000001), ('nln', 'nln', 1) ON CONFLICT DO NOTHING; +-- Test currency +INSERT INTO currency(name, symbol, precision) +VALUES ('tbtc', 'tbtc', 0.000001), + ('teth', 'teth', 0.00001), + ('tusdt', 'tusdt', 0.01), + ('nln', 'nln', 1) +ON CONFLICT DO NOTHING; + INSERT INTO currency_rate(id, source_currency, dest_currency, rate) VALUES (1, 'btc', 'nln', 5500000), (2, 'usdt', 'nln', 100), @@ -18,6 +26,14 @@ VALUES (1, 'btc', 'nln', 5500000), (4, 'eth', 'usdt', 3800) ON CONFLICT DO NOTHING; +-- Test currency rate +INSERT INTO currency_rate(id, source_currency, dest_currency, rate) +VALUES (1, 'tbtc', 'nln', 5500000), + (2, 'tusdt', 'nln', 100), + (3, 'tbtc', 'tusdt', 55000), + (4, 'teth', 'tusdt', 3800) +ON CONFLICT DO NOTHING; + SELECT setval(pg_get_serial_sequence('currency_rate', 'id'), (SELECT MAX(id) FROM currency_rate)); INSERT INTO wallet(id, owner, wallet_type, currency, balance) @@ -31,6 +47,18 @@ VALUES (1, 1, 'main', 'btc', 10), (8, 1, 'exchange', 'eth', 0) ON CONFLICT DO NOTHING; +-- Test wallet +INSERT INTO wallet(id, owner, wallet_type, currency, balance) +VALUES (1, 1, 'main', 'tbtc', 10), + (2, 1, 'exchange', 'tbtc', 0), + (3, 1, 'main', 'tusdt', 550000), + (4, 1, 'exchange', 'tusdt', 0), + (5, 1, 'main', 'nln', 100000000), + (6, 1, 'exchange', 'nln', 0), + (7, 1, 'main', 'teth', 10000), + (8, 1, 'exchange', 'teth', 0) +ON CONFLICT DO NOTHING; + SELECT setval(pg_get_serial_sequence('wallet', 'id'), (SELECT MAX(id) FROM wallet)); INSERT INTO user_limits(id,