From 984d2615ab26eab19cbd3275f4e8450e6bea68ee Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Tue, 8 Oct 2024 13:38:53 +0100 Subject: [PATCH 1/4] feat: store swarm uo rul in user store --- relay/nodes.json | 53 +++++++++++++++++++++++++++++++- src/components/Auth/index.tsx | 13 ++++++-- src/stores/useUserStore/index.ts | 5 +++ src/types/index.ts | 1 + 4 files changed, 68 insertions(+), 4 deletions(-) diff --git a/relay/nodes.json b/relay/nodes.json index fe51488c7..fba17e3ec 100644 --- a/relay/nodes.json +++ b/relay/nodes.json @@ -1 +1,52 @@ -[] +[ + { + "alias": "alice", + "pubkey": "03a394d0ebf0d003124ab130c6b12b8b990a50a30a464354800a51981ba745bb07", + "ip": "http://alice.sphinx:3001", + "external_ip": "http://localhost:3001", + "authToken": "0gZrKKkIsl9gcnimWtzg", + "transportToken": "MIIBCgKCAQEAwjePjltgz8sybBbLOC2Bzze2mB8HTH+DhBU6PT15aFyX97f+5IKk\nm3ogXfQir8OIgMSZ5W9SE1SCsdYG70Fz1MBryWBjxdliGpkA/Wxo/FLw6/7a7Xbo\ngBVgsroroeLpwCrqZsDb7eJLrXisuXPsF3lcTJIrqKPNqDPIuNRc7tNG6uyItpFr\nPNvjU2awzi3LUraX86vjvAHhg10kVz4/lmSlS+9bN1x29D0CqPiYRUj0OwknFT6/\nxCxMNpGjRNKiVdbAWEx7fodcXysMfC/mvZJzxZo5xJIN96IHqHGhPWdPRK6yrKHC\nxD9OCpzbKcck1gliyc7MFCRFeF6tlZv/7wIDAQAB", + "contact_key": "MIIBCgKCAQEA6YnxqM5XIXB9y/m2vV4iguoDqG3Gd9T9WQf8iMyFMAQ5+wHOpzDeNwwxI+ge3itesdI1RHJlm3j7FHhMRbPmFIDOk5BQ/sV+qJbnaczjzepqv0qnkuR7CbrDpRCqN/PQELb5+e8EzunZlwFeJSxCX21bKZb2G8A+M0tJSXt6RaFZjIdtwJ7M2nyGgY14w/gHnuILtW0cDvkkmbYKXsTyFrLHsO454lkaKUjhjKeturRLncSwyGx66fobDonKTwBz8LLbEc6a7pZORgNA3YvteaXijDVCQ+W53uLM4P8ysHLdXMH71fgMpVgL844ncfABal3/5tETyAwetNiNdI78oQIDAQAB", + "privkey": "MIIEpQIBAAKCAQEA6YnxqM5XIXB9y/m2vV4iguoDqG3Gd9T9WQf8iMyFMAQ5+wHOpzDeNwwxI+ge3itesdI1RHJlm3j7FHhMRbPmFIDOk5BQ/sV+qJbnaczjzepqv0qnkuR7CbrDpRCqN/PQELb5+e8EzunZlwFeJSxCX21bKZb2G8A+M0tJSXt6RaFZjIdtwJ7M2nyGgY14w/gHnuILtW0cDvkkmbYKXsTyFrLHsO454lkaKUjhjKeturRLncSwyGx66fobDonKTwBz8LLbEc6a7pZORgNA3YvteaXijDVCQ+W53uLM4P8ysHLdXMH71fgMpVgL844ncfABal3/5tETyAwetNiNdI78oQIDAQABAoIBAQCsxHr9maCFwXWex56z2wcG+F46ZPOVRQEjsy/UeBDz47yM/9pEf3d1G9Tirl7flxAX1t3HRCX87XQ5wYETc7H7awrnybTRtYMs725FK+k/NXNBDtaHafXHzd3cqEZ03C8JnoOxrWxOMlvhRYbDU0nK1NjDHMX247JgOgr+jJV5GilgyLas2K/ApkO/n74Dhocc1TXwKmw4O5L+rbef3DDfqeqEZzE0S47Kr40G+8t1EHrkOSr8/7VIwDvFojQnXle5I2d/doaCI/Kni72neJxEE86sf1pieSRZKMuVaVcpUx8/+OXaLuj9eL8gPvfOlsJCyLYxuxRGbhYO6gldzyyRAoGBAP3W9Kydzj875W/zMXKtW1sTZ7SNMm9EGM0wRmqHyyc1K3lY20u8Irf5WM1wIWAg1dCIsa4g/WEF34P8AMUUaPnPC8pp1MhMxfK7S0P7CPVmUZDBp4fG+5abnwBOTfZWopnjn0iBZXyaYhHXC7OxZr9YsQlTvI7+4H1m6028Lb79AoGBAOuGwi3ElRAzzv+A2aGRVjzvcOKD+IXHZdQ6rRQ7w+TD6bpgEdg5KhHU9Uf0dEDJaDRbCAVqKgTOBPL4QCI20wV75rApQvAY7XPcIHNFZdbtlLEWMT8RxssDXk1C0Ff6hoh4FYGXJt3kX+D7oRfHUtHrhAlVLybpZhxsQB1qY291AoGAZB93XubXxUVg2Gl6ZZtPX3sl+qd+7zhS+AxEmhx52zszrKeJyDOrFhn6Fv5Vi88nxxtDykUk7DIe2bZ6r0G/rlkmc26PCXqO0ZFivKu1+uWi4pAf/oRUFDHJ45r/UV0WwdBwsW6okx9p81N5QCWHO45GNkGbLGQINC52PbEt8hkCgYEAxOD16oo8TLnyG9Sal5tE6lUBGOhWU4XV0i1mRtaart0xwLDT2doXF6bbjlWC5DE4ISPDNbuD+lY4/t2TxsXradcjhDhJkyhTPZlRqunk8l/Q/qLdcaorccKUDqN+QzzRPryaxaQTQkLH/up4w8bDrWRhD+gcLTvHNpUqlyw6iI0CgYEAlkBZ28f1fEQwI0xiGiMLDH6UucvRyBfVp2y/cy6DfBYpw8/l93hStt10UjTqoPj2S+PrSWXqXJDpS2bfBoTdste0gPEr8n9yAyfl8G6yOg7xPFhpzSnSjsAOTUsjO+60u3LKh819r/H7PO8WXSgrKsQS2VVwZZnpKBgkz7MWWSk=", + "exported_keys": "a2V5czo6QXdGQU5zRU5Jam9YOElZRzlnSHhrUWJvTXRuUXY4ZTI5SmVkUUFPZUNWdjY0azFNUG1uWjVkOHo0VDAxT3VzVHdEYnZSeTk5WmpwUzZmdW1lQUhtSzM4NXNEdlhJdnhYelJPQWYyUHRJZ3dEVTF5TEtHejJxT3BxSTdXeEluQ2UxV2ZMWEhVbW1YcGV2L2VhQzN1RUdMY3ZwY2ZQMTdPektqMVNwN0kyMmJwcHZlNThmQXVYNFVxWENHRy9QV2pabTQ5RTVLeStVT1lra0FEUE5ieEdOc1huYThiMFJ3UU03ekZQN1ZBbEk5dVlKWFBXVWUrQmtwWlpMRWNKTlJta1hMOVJUaERXZmt6d0tJa1FqYTk0L2RoMG5Qb2F1RWdzOUJnY3NlSU5CUTJBam43M3RIUEo2aUhRdi8xVE90RzNqNTM0R3cwQk5IbWlTUlFlMjlyYWhYbGtHdDFjZmg0VHQ4aVlJMmZWa2MwVFpHMjJ6c1g2VmZldzIwMkJvSzZNdUw2a0o2NThNeG4wNmVuaVd3L0RTeTd5NmV6bVlGUDVSYUhmMDQ0WTVaN0RNZnJreU5RMVU3bHRWNVlKS051akZGb2t4bUozRTBvU20vUExqWGJaTWNRUGFocmZBRFZLSk0xQktmT3JCRmM3dWdZUHJiaEtXSkpQR0xXUitxV1pyYytNVnlWZitDYWZnSmRGL08vTUxMQmFjZ3YzVEpKc0pkWHY1WllEZldTeVRuSTBLWlU1SDJTRXFJTG9DM1ZEOVduZm5WOVd0TVJIZlNxblNYTUpJTUVsVEJBODNMZHd5WVhhbnlrWXBIWkRrOG45QmpzOTdUZ2hRajNGL0g4RitTd01KdVRJSGV3cHVxWkg2NTRKVUVyVWNoc0s2U0U3TXBpRVlFWkgrTzlPRUl5OEhaNzJCUVhIUTR5NnFMSDVINkFYZzdqc2JyemJIQWtoaTA0Mk1DdWVQOGI0UTBQSzhqK0RiOTF2ZjY5ZjVuRS9HTmwwd3pleGswdjNGZGlMTlJPQ0FwZjZzNFRLRDViRmNHdUVIRmU0dFg1bjNQM3B2Um95V2NJR3dZY1dZbzdGbVgrMkxZbVo0ZExOUkE1UU1YVE5DeFB4bUphZEhhcTBvR0dSQmdDSVFRY3ZIQm1PQTN6dXdMaGpYSjM5QzdGbWpkZTNzNmdmOFZyRmI3YlRGVDNLSlloWnRxVTROTjg5citSZ0JWbzdxNlBFLys4c0EzbjNUalRLc0tIcXcvTHFsTFdGbnMwTjRicjFHUUZHcE1HOTNtZDlxV1dyOHd4V3ZGMDdkSnkvOEpUbnlmRERVU3ljbFY1L3FSNzdCd0cwQjJhNUVMY0J5TjdOeForbzdIUlBLdUNTLzN3aGdCSFk1bG1JbVdsemdUZytCZHp6NTAycVE2Q0tySGcxTEliZi80T05Qb0JCSTlLOEpFWG5YY1p5Uk8yeVBoOWs3WXNaMmpPZFBxbXF5dHl4aVpHS2RmSitrbDdlSi9YL3l2aWs3emhVeUFzWUZTVnhWc28yd1JWcW1xNGJmWG9QU2xNMW9lSGIzSFhzeUhjOUluODVBV1g3NHF0WDFscUV3Z2lVTUovS2pLZ2hPS084NGdjbXlFd0dXeWNVMGROYlZSUDJYekZLWVhCem02Ty9xUENrZ1VIb1A4b3hhQWNhOVk4TnpGY2FVY1VtWVVTODZpZGk4RnNrVGkyeWV0VFNwQ09XT0tSamxSWEsxNHZJeUY0cExiZnByL3N3VEJOUm9iSFB6VlRUOUJudzlmQkxLVXV3SjZpRG8vSnN5MGIxM3FCT080QzdjWWdMYSs4Ym90Zi9GSDZ6N2VJRHBDUGpNNm5lQUdnTUgzRlFsMkxGRzdQa0lKeE1MNk44OU9MVVJTU1ExeFBlT0VhQ0JEMUQ1Q3ZXYUM5MWRUZHEvZHRQWVd5ZFk0T3RlY1R2VEJTZzQzck5IOHpPUEN1TXdPMTNNWUdta1U5ZEZjeXNyTTJGK0UzV0xucVhCTFpEbmowVHhWU0pwdUl4Z3hJcVp5QVRZZERYdjEyRzQvYkZ1N1IwQkdlUm1PY0hPM01YNGVqV0Z6S29kbXgxNE9wZ0p4MHdyRTJZZFFvQ1J4aEFENzdyaExpTGxrVG05cU10YTJPNXJtMlFkK0lMN1BTbVZsUm9TL1JYTTBlKzFuSUU4SjY2NzUzaDBUZVAvMmZxVldLMnlyaENqTjZyL1YzQjZUdU5zRFp5MEI0U3BrU2lXOWpueVJGcmg0bkwwU1djdnV3VHJ0UktGZkt5eHJsMk1CYXc5RlJURFBueUZmQXpvelpoVHg3Nk1sdC9kSWhmWm8rODJEdUFxeGd3aXBpUmNkOXgrNkdoU2NWTVVEVGZrSlphdjZhcmYxTXRxdHFHQlZXYjBFRy8vOUs3NU1OZ0dQWC9nT3FjWTRwWERuV3JuaEFxYkhzZnlXbnZWUTRuaVJkQmYvbWdXcTh1ZXBDSnFkYWpRdVR3amVhdk50Y20zMkxSd0FMYnVCU0tvajVmbThEeElLUi8rMDBpbmRsclhSa2hxdmtzMHZWZHVKaTM3RVBPVWF5dE9rTUtYT3k4ZWZkclJRS2ZiZDFhaDNja0twZVpNUldzTU9GOFZ0WDVFbEZPWFNaeXVsOUgwK1VzTyticlVzNTR0TzNJSWQ3Y0M4cEUvWUJTU2xXNTUzdTdiaTJTZTVEbklVYzVMekE1V2tQUkhBdHJFUDFxb2VXNTB3Rlg3SjN6ekgvTnRzZTJqWkdVSmU1U0dHUmZpY2JleHhyNk1rSnNiZTJOVkhOSzNoTmxJWGt2NWZKU2pPRzhVYjAzU3JhWm9udXNCMTkrTG15YVVHd1BxWGlacVpHN3EwVmtEOVM3cmc0eGNReDljcjdDYmJJZ2RJcjdVb3VJaHpUYU9YbTBFY05ITFF3ejhxYnpuRUs1RHI1dFJUcmhLNklHcnRVZWgwTGhsZ1VjVGx0RGdPc0hkSTdiN2dwZVZZZFlzS1dRczkwSUJQRWFGZXREak5ZaFdZc1hoR0o3Vm93SGwzT0o1bHp2b2Q0b3dNOGxaQSt2YksrcUdrbUMyVWJrTjdORjNlcTBWSkJpMk8vd1RHTnQyaDNOM010Nm53L1FKRWJEL2ZLc1NMN0JsQlVwT1loTWpaZTQxSWNiRHFqVXAwSGJSWmhNTkVzWkQrTDNZZk9mZFRGQmNUN0lsanF5a0orSGtZM3BVbi9TVldHZzUwcGFFYzVReFpwTzJ0NjZWbVZvbEQzYWFWQWFWek1ZOE1lQ0pYREEzUEhwWndzUnFWdm02UXNYd0JadUFYUUsrVzFCZjNBRWlZZXdsSHZWSTdEcHFuSWtIcVNoYjdZVjRyMmQ0YnNZTS92bDRzUlQ1RDhRSTFNZkJCdWk1bzhITHRvOXdvWmxraTE1Q3pDTHJLZi8wSXV2U2tNVXg1dXlGenpRbWprSk9ZdnhOeW44bnB2Q0l4cDJkYUdmTU5pZzJsWDdrS3diYmsrSVBCbkUrTjBGQUhjQkJCSi84K0F5K2t1MWVha2J6OHQ4YVJHLzdZTHl1Tk1WWTVtMFBKa2ZWMVkwZ0pwSXNXWnM4R1pKM1ZKZktkNmNCVU9SL0ZFNVNlVXZQMXhuWmhEZjRzU01LK2l0eDVsTkxzTzhjT3Y0azN0TjdjYz0=", + "pin": "111111" + }, + { + "alias": "bob", + "pubkey": "02a38857848aca6b32ebcc3c85d07ee41354988f4f1e0b4e6ccd255eee6ed75b8d", + "ip": "http://bob.sphinx:3002", + "external_ip": "http://localhost:3002", + "authToken": "/lqWhagh6gdpe2qm//0N", + "transportToken": "MIIBCgKCAQEAtmenafoqcY0he6y//DTlva28EOp6fv+fJ8Qxi6NwGHCFjVTYjaZs\n44PMb4xZgti7zgPFJZAUZKGurf+mzhcUzBxlxEWP6dS61WaJlTaskVjeYkqTExpN\nV9gllEhTfACPcg7MS4hcSILN6nMFHlgCqPvbFGCBCe0c6cemcfNgU/FhQZqT+Tat\nwmh4TTJtjeyvEjzKFUgwtO6wf4cb8WFUrB0jfk/coXGm/RrD5Btt7NaQmGYypMGc\nca/IL2xlaiqiDfna4YoDYJr/UAcigNneTA5TwBcl9RlAqfidpLaOnufbm58DmPpc\nrBiU2xY1FoZthItI263js9us2jD6ZSoaJQIDAQAB", + "contact_key": "MIIBCgKCAQEAm2w6D61aJQ6BmX8Va9fIWV9Cg/A+pIygfESR6YOEFYbE6IoK8BpteTos71j7P23Diowd15il86mLlvniwIGHkMeHCS4Ppp56Ic2emdcqWoncHfqwA4yyVHT4K5adXpqLmLFxvDeDZPqSb+O49jqSVugwN0/izsrw95IZK2HOVoK2tzCEzR9jywrYFDgSQ6CGhK88VbKnDpVoRCwxjUzpizuxQrktb7OLkvvJ9hOLnrN6PB8tHxXxd/iHTkzGO1R5osUc2byl4/nMm67c91YSimg3GwMMobJAkLotb/YzfVCXXRMLaAPgq+bB5S3aamS7Rz938rBOfsqH6PBGBGz2fQIDAQAB", + "privkey": "MIIEogIBAAKCAQEAm2w6D61aJQ6BmX8Va9fIWV9Cg/A+pIygfESR6YOEFYbE6IoK8BpteTos71j7P23Diowd15il86mLlvniwIGHkMeHCS4Ppp56Ic2emdcqWoncHfqwA4yyVHT4K5adXpqLmLFxvDeDZPqSb+O49jqSVugwN0/izsrw95IZK2HOVoK2tzCEzR9jywrYFDgSQ6CGhK88VbKnDpVoRCwxjUzpizuxQrktb7OLkvvJ9hOLnrN6PB8tHxXxd/iHTkzGO1R5osUc2byl4/nMm67c91YSimg3GwMMobJAkLotb/YzfVCXXRMLaAPgq+bB5S3aamS7Rz938rBOfsqH6PBGBGz2fQIDAQABAoIBAFZXsYm0DDg57tWPPB9FKRA9U35ooORZG27tyQGpBl/PFuT4i0sH43lNUFlHXYzHNbJqVMnJC6hpsBqXh9jaHK3ZqrL228r8j2zoBgwA9I6Ht7kP42iVaRxyPsw4SASeZp7VNRIS5PPcIC34nHBt6Y5OPzr7Lk0jgOqIR2NKWo7EAYwSRc40kOXA2BTI294NDWvZiQHdZ+jFL9hteyocfZOAhLaI4KM3LfX0ADXJFq9fUYh+hdGFELjaGTEUTmv1UJXa5lTnfhmYx1fyDt5H29yZqQpGaOxQQ4QcNiO0e/6TVT3RQITqyqWNqTm8833GD5TBF1du+evh97pFT2tnuQECgYEAyIdTOpjOC7leIgda0H2kv3XwOoZ9xhLNVCB7jwTFNGBqMlyLwIWyVsjVpQw4q7se9Slz1+JPLC4iWOXCEr9+nJ2k1cpzqAz7VyELq67BVPnnq6i6qOuohQeVc5elheMjDVIKKuH8QdqMhvwihDVKreyJB1LtrgBPG3dGbJbll7kCgYEAxmqtLoZ7/SaIG1HD/teHCBPtt8I5QQR29blkyGSzTgCWQvEbbkqlVuXsYw8HK1GfM4J/IZktW36GO9SBerlnhcB5k0gdQ1veG5WScB0p9dc6P0EfeOYRfxdK56JaBJoDjIKUVf1CZ/hjhSqXB0SA9FvjoyJU3vggYi0rjZiRLuUCgYBZFRT6QQu31Z9lypKjcE2R6JjRxxF0vsGMj+mT/XCF9hb3THmhC0PQneObMLS0RapZCxM1Yon9fHkxuM/geEWM2dNyTj/W9f1qFXoTyMyGLYankYtqo1X30wink0SrF95oenud1Uq1DpvDE5tZ1DrazOuK32JLHEQIVZJphxdzsQKBgEXu9YlPd0YbnZ9ba2RYHMzZEVFSUJG8/BzRslb7P0N/63Y+uvddsfb15SJo+pLnGuCx3xM9hQIZj0BpPxW9YWKAG5mwsje6modIaavAa7itmmcPEgOvu3z6/bi0vVuf2R5eK+A++nfg0VrvTvoNyBHYjVxDTnykIe3Yk+A9ZPaNAoGAJyL37Zfp4CE30vKfRGq0e2NMjvrYnBjL55YwYzmVPxc9mAE7+8aauLRdu8ArOV7FczIHzZ/Wj1P4RbGw1wx2rBk14NK8MfwUCE1SsactSnWC+2ItLJlSBagSb3YdrjzVcwM2ffUh9YK/PmiASxzB3jPYYs2go1w3d5u7w2Pn53U=", + "exported_keys": "a2V5czo6QXdFOURuTFd2cHVBMkJFWkwzU0R2VldqVlp5aHU5UzVYTmpFcVBydE03WHFkNlI0dWk3Ylp3K0cwbEhwaFdPRDZNbjdpOGordTdxWkY3ZnlONU5wbS9nRXlIRHlPTkxRMFFiZEZYUlFPSCtSaHE4OHlYdnZOcDhnelFoc0lJelpSaXNMdjdrT0puTVlIa28xK3VvMDNYWmNnL1c0aVJNZ2JDajFKQTg5b3BBOEpraThLYUJlM2VIRWdjaUFQUEtPQ1UrbmxzdzA4cGovQk5URUNwUkxSRUxmQVJPL3JJOUJxT2xaWjQ2cERxRnArL2YrYUNvN2ZMR3U5RndkZE44QW1nSEpkeTBzU0d5YmtmZVQrTldJWFpsVC9Na3FPd1pjYkl4SkVTdDQ4S0I2QjFuZmRPTFI0TmtLcWRJVUdWMW9KVlZGeUp5cVFrTEhLTkJYTlI4bis4dFVLcHB5RUg5Uk43Q2Z0RVBacmtUVVA5cUJTdFlaUFV1ZWZMbE9pYjNaOHhXNzB3WG9GaVQvZURMMGpaejlqWWNRWk5TL2ZiWUJqb0RPNlNZbFBLRlVxcDREZ1lWRDdzQllPSHJXM3BsVzIzZE1OeTV0dDFzY0FaOTBHZjJwOGcycHV5ODFsR1BpSmVxaW5waSsxSWNWeFhKRnFkeHhOaHhXb1pJTExVa0c2ZElkbEJ4cWdEcjhHMjBsellNaXk1bjNyTS9IeW1YUGVMbUdWSVpVYzVKdklIOVBEeXc5ZGtaaHNZbEdpSk8wOGRHR1JQMVArcDZzWmpUOE5Ub2s2cHNaeU9adlN3K2xrTGtLbGhLSkppT2tvWjJPNnR3MStybVNxclZBR0hNSHJmZDJuT1V3Z3BhV3p2WDZrcTBoQjJCUDVrT29RempXUGZSdWFqK0FRa3pkNk5tYklxL3kzOTd6K1lUa3ZiR0pzMlQzckg2RmJCcmRidC8wYjl6ODdZOWZjeFM3TkFuQk1adTRCdU4za0RwZGhrUDNHRjdEQ1BzWGIxaExaWGhTd2FUaDRMdlRncE1lTnJQWjFEQmhKYWFlQklURnk2MDdoWi84SDZCUGM4OTM3SzhJOWk4TDlFZ1cvdHgrSm1uc3VBNmpVMXJZWHk3NkVBK3Arak13VlhuTThURGVQTnl0Sk9aMU5VNmRad3VxL2M1RWluRytCZ1RWekYwL28vWkdZakE2Zk1zZFZTdTd5TTE4aTdvQXJxZ1ZtU3hTSklkN1QvdzFkT0J1eU54YVBmWVQ5U0RkVFdpQ2N3UThESzUvdGE1Q205NTRlRWQzWTMyUTUyeTBNZ2lMcnhPeFByUWlnYlc2RGJRTzRWVGJsemxmaWxRQ0xVMHBwR2diNzBvMDhnL2RlZUNWdjVjeUR3YjdLSjgydnVlL1grUXVyRUE5NENXdG9rTDRTZmlpNXBEK1RzTnBrVWhrZ0c0dW1RTU8vRFBITjBURHZobkZZQW15ZGd6SFlEVlNMMG9kdWNBUHVkSEhrS05pVjkyVXZjOW9reTViWTdJaTlicFhONWRhNTRLK3FDOHFXNmd3VXJobU04TldmTThiOUxnNlhIOVZOeFJNTmZNT0hWRkVrK2gwS0gxekVpZi82NnhZVUQzd0MwbUpBQk5tRUVwZzJSN0hjUHdYb3I1VmFuRXdaa291dVV6bWk2dlZXVXNwWHZOZURrQlFjL0ZsTXNXQWVqWWtGN1RyeEZsNHZwNnoyNWorY2dzWTZDei9jUHNwejRZeHpBd0o2SUY3Q09oVCtQckpTRWJXMGhxaHB4SDJDd0NXNlBybG5YRG1tZ0Jaa0FXWkgramk4THlYcmJtbzFOZWRNaFliencxLzhQZjljbk5oTUw1OVpFZDdraGc5T21OUnpLbVBwUjBmRk1jVGROczk4WGVhS2dydHlZZUNudmFrUnh1VnAyK1FaUytyK2lVcSsraXVUaHRJcklndk9PTTA1UEhCK29TTDkzQTFtL2VxemN5TmJ4Q29jWUU5WEtlTk9tQXZremxwSStzczFPRUpWazVqSlRZY0p4UnpXazZ5SGpBSFJVczBDQmhPSkExWXhZZ1htVFRUMmVHdXhIUW96bzdyTmRZTW10NHJML1I1Y3g1UkNSSE0rbFRlaVR2WWNPYW9EVzQ3OEhRQ01ib3ZxUXQ3ejNma3JHTUEzS082RitjbTBMbDdXL2ZpNllFWnF5WlRiMktibDgzOVg4eDJ0NXVlSWpIZWNKa2J6clBSWkg1QUVKUjllOGlHcWtRQ0RkUmtOb1JxR0tmbEpLQk1iWnBMYlgydWpvOFU0ZGN2Zk03bHNCMmNSZGNKOEJJRmNmLzZLc01EazVQQS9zSlhlRFIrNHFEaEFtbldsVDVlRThZcmNIY2drNGc3SlZUYlh3VGE0OXlEQWh5ZnVwVHNsQVNXYnFZNXRVZFBUMHN4MS9KL3RNa3VzNkVkcEZYZVY1ejQvZTd3MWhPaHkybnNLYTRkUlpFc0FZOGF2Q3hmN0cyQ0FISnVzajdxTzlZR2dpYkpDSlNYK2dTM1IwTlAxNE5TbXpaWmF4VGMvTUpLSkdVaUhQQnowZm5BL2Y5N05LSXZYM3ZiemxtdVNFNGc5emJOK2E2M0JjYXVVdjdlQ28zSEFWcXlYc096RnpVSnlJTGtkSndNSE5CaWtISU52d2x5aGl5Q2FNdk5lY25iNHJGSEFsUjQzT0xNUW1HSWU3ZkVpalRLMWV3bHJrenVHOXgyaUdFdVhRWmtxdzBuUSsyY0lTVUFEODd2N0dnRndGaVpPTUVPVTJMVjJZNWNUUzdVQmFhNlNTcDRSNE96aktsMFNCK0VGbyswaEVSOEdtSmQ3MFVkSzNsV0tlRGd5SHRvUVRSNERxVlhvZ2c4ZnljbzBub2YyTFhKWWIxbS9lbUtxL09rbXRUVE4xVGtkMnVkYngrOW92WVVVbDJjdUtWajI0RlZsZXZ4RGJ6amd4bWhPR0ZzaFVibkl4YlZyY2d0ZGZxUGpGY2I5TkpJSVorVnZIYURBQUJXU3NQNUltdFpld3hmVVdRbTRQYUxpN2ZJeDdjblVoNDJiTTdjZVlEdCsxODNMclpqakV0dFA0WkkrOVE0cjFYQm1YMjlWd1U1cHFXM2FtRWlnS3dGUEtoVi9aK0x3NU91M2dJY3VmbEV3Wm1VL1B1ODhEL21ZbFBzTFRWVkpSaG42NG02T3I1cjJzcHREMVRxYmhiSnRiNWdCZkNKWTJZRktNOHFQZUg4Wk8xRUNxQ3I1Z3dFT1hINU9qRDhtbzNTRVoybTMyRHdYQW5TMUVKbGErSExzbjhRdm1LWWVVNmk1VzVZdS9samx2VU55ZFYvdm0wOUJBbGpaZnBMbXZLK3VGN3NDQ01vVmZacEo5eFhRclJwMG1tM095TzhvanZaRHNSajlucTZNU052QXAzZXkxaHRtUHZtQXJaOW1CamNucCtNS29xZlV2Y0UvRm83VXZUVmN6aEpqdjJYcTNzWnFVREE5ZWlabHp1RlQrc0RVRmV4RFZEcEt3Y21WOW1qWi85NkF1bFVCRzZBK1Q0V3BuVThpbFhlLzhmNWZwcU1RQUp0c1Vadzl2R256VHlzN0JrY0lFV0FvZ20rSm8veUcvUFowRU9WYnlTS2dzcHhSYUFmVE9xMnQ0ak8rSDdwU29jMjJmRT0=", + "pin": "111111" + }, + { + "alias": "carol", + "pubkey": "0364c05cbcbb9612036cc66297445a88bcfc21941fd816e17a56b54b0b52ff02b9", + "ip": "http://carol.sphinx:3003", + "external_ip": "http://localhost:3003", + "authToken": "dfaIHLp3AF7oOHUuFfRV", + "transportToken": "MIIBCgKCAQEAwEmXNT+5iZlXU7+WNT8EACuwWJ5eoZNZjtgv5KNFDvASXde82U8j\ngcefYT29nFcZL7LSbhOYIXpGOhiYm633fPmJaxN1wmBj0ulJr03f2ExkBLskI5wv\nXv4fce3Ul8VDVDKTr13vmeo4g8UzlYuw435OhQEfPKR9ESiFL6BaICEUnW+nKkKi\nnHvDVSWc9gQQx5Io/1OgONVJzxaY6hY09C3HAbp/3L9dOliUYa3tBVDgYbNo/p6C\nLPJ9zr1bKtQCz2Z2mTzaXXOR/n03GCydlQk8h+h6uxy3YXA42pvvr617mortExca\nTlz7lhqVQYdodmeXRuHgVfnZL0DYpGC+/wIDAQAB", + "contact_key": "MIIBCgKCAQEA1W4YTmQof7Y8SQ0evhXYOv95ogjh5OW1YKy09+pXNJeVJz9fOPzFVIF/XiNxqemS71LYtSj7feTv1PC7dRZOY+5tdy1jC0nFuh5uQfk/+NZprDdfJNS+bs3Q03j60mU7BfW4LsC/PhwhMBdfmkQmpW44oSWeroT9D+swwAoca0wpNAO7W1RHOZf9PMEVs997HEjH0My49znfDpLk7Jq5NksZZAB7taZeWKM3qEC1qrgYFXRg1ZZzKSkgWBZG5B+By7LljTY4djMytSffHADuA3AzZx3Pkl8kGXgHMSaxMdfQrjdUWhmVqOSSp4AnsZCAZhTZ7D9vCTKaFtBD+leZ9wIDAQAB", + "privkey": "MIIEogIBAAKCAQEA1W4YTmQof7Y8SQ0evhXYOv95ogjh5OW1YKy09+pXNJeVJz9fOPzFVIF/XiNxqemS71LYtSj7feTv1PC7dRZOY+5tdy1jC0nFuh5uQfk/+NZprDdfJNS+bs3Q03j60mU7BfW4LsC/PhwhMBdfmkQmpW44oSWeroT9D+swwAoca0wpNAO7W1RHOZf9PMEVs997HEjH0My49znfDpLk7Jq5NksZZAB7taZeWKM3qEC1qrgYFXRg1ZZzKSkgWBZG5B+By7LljTY4djMytSffHADuA3AzZx3Pkl8kGXgHMSaxMdfQrjdUWhmVqOSSp4AnsZCAZhTZ7D9vCTKaFtBD+leZ9wIDAQABAoIBAA7XKe+BfWNr+4Mk22diQ3fOvdlrfrGY22TOfYLjk46/n4psGKXwxZPbsUyNcGDdMe9cNl9aaypU2exXlOFOXMMMGCZ6THHDfnEznn0N5MnbtttXulDoThmMTCH4PpCUo2cFr/noQyQBdrlOVsJ2TK2iHWPvJrqB2srZkrk3usQnFgNMNQXtUailwCL5sB1T0s6r5df+TjVv2SbXS+i+p9R6QI0CSkW9igcBfpECC3JgjYVWFjGd855mDMlK5PP59Fwx2NxQNTmVnKBnoOE+Ai7/QJ7cOVECvPYMNqeqFGNXwROcGjIyAQj+stDQCIMZn6N9pWUySwl6WqUmMNI33ekCgYEA91QL8cp8ci4vHRP7kxTrdMTZ3EpuDghiRErwXlqIIR3sCWA+CPdyvyMiXGVxPajn1J5GgIJA/G66gvq3orVX7YNQgb0mPsV6b5Vcr4vlne3Ko8GwuXtLleAE9jbUV7UDOYbpQxAKDMLD0tws230OOKzU0KCWVk/AC75uIm+JWJsCgYEA3OnJXewrDdd6lWcU/v8h2551PTZ6LuhvTm/LCyWQAXnyW51bdZs2uYaJs0pqjHz0R2d4uxi7lLUOxA04/R5hitYqCntX2iFdzJ4CgSO/NtxSRYrAKaBtRbYnPmA+AquBewtf8V0mVG3sZw/CAUHQt+c+TRxDrvSUiVEzrI7eM9UCgYA/J+AQ8xLKGU8Ajty71yi03ZuALCVkQfHN3JD6lwWR51Ehp8jPg1hyxGb+zwyWoS3p1izMnfY4P5Iy5hDEZKg6R0DkkEdW2hiEq9BKJ2AP7uvC2y/kfT503AqIUMHyT4+uPewMqujWD1nv2zc9KPbbtA5347nf+mdg2FTJSE/7JwKBgG72w5343dtzC/D1uVcookIlgvA/Z/od6KL2hn/P21jSf0lDbkhRsZhZGtvDGmf879rZ/4vDLZ3RoFwb5C9ITmilkLJ5KDS6I9p+1/U0Fn0hB/ZEbqe6HIkyqN2tDBjdOwmqOgQL7Q/lsyRFhwaIn6Vwcxvagajk06Nx9UnM7ZINAoGAUyO9a/AALymACaIY4ftRzDwXxKYclLQl/b+hN+AmeWX/eKOKCt43hwdO5rfCNCfEQAVbj0HxjWcGeB4/NbtDYyjEOOlxwxI888kMN90C+SjkJOx5imE58fTkdHY4nSHhgz0Z93eINEWNXUUMszCrpB4rZ6GD9+4Ctuf+GbYfjdc=", + "exported_keys": "a2V5czo6QXdGaTlqK1pCMHBSd29YZHFkOWlnUUVMaDN2NnZtL0w2bGNOazVEUnIvUFJmK0J1YVlJSk5ZaXY2REU5d2IxRWZFaE5FNC9HTXlTNE9IbG9BRlBCeEs3cW13STFmNURUbzcrRkhGUkQ2L0FjaEJqWnQ1ekZJMkgraHhmK2pEaFc5NDJXK3RQckgwTEtNL25jY3RKN1NFeDZKa2wzK2pWOTRLRklLOTl6UjB2aEFBMGd5ZkFmU2VveTZ5eTMzTWxjcE5uTUM0TDhSL2xKdTFXRyt3bkJzMU85RUVwNEhzRVVIdTBsSXkwWTVKQmxUQStQUjN2NnZ1VUVlZU9FQ0NuemxqYjNhTWJ3cUJmajJZRVdtUDg0UFUrZDZUVkNqU05FT0VkeTh6RDZicUw2eURLM3pJWkFOaWpGcEVueEFXYzl5VjFKaFlxQUZtRm51d0pDemJUakJzTjBJdU1lSDNQVDBoK0xBbGIvNVEwNDRWSUpwTWxRWWtzSGJTSm5sdVNPVlJBSE1xd0R2eXR2aklKdStGaVNoWmN6ZVpLYUhmWVpXS1R6YTd6TGZ5NytQV2VjRDBlUjFXZ0dGV3BBcll2d3RlaG5pZTl4WnJMTUJ0bVZ5RHllK1RTSS8vVk9sZEE3WDBBUWRDUUhnSmFKenZxYmFIYzdnUDExM1Rta1Y1aGJqZGloc0UySnFqMGdwMVh0SXdURHFvQVVqZUNwd0RBNExIdncyTWNsWHVyYkxTMERLVUp3SnV1bkV3ZXNSVGZOaE5hM05qcFZJWTNKcDZ0ZUlqclZzUUNYSkcyY3NpS3hBWmNsN1hYd0dPMTExdm1WaUtzWHR4WC9vQlVacTVBVTZmVllNeGNDZnhVbHhndy9xa2VxRmVEYlkvOHFRTURaWVROcEVBM3lWRWpyc1pLUm01OURLNmdoL2haOURPQVozNVB1NGp3MG9HUk9tMmJLZjdzaTdTc1BuR2t2aVdjRFdnZkMveW9EVFNLK0xTWkVsWEZXeUxkY0w0WXl2UFBZQ2o5YUZCM0FKWEFYMXZVaUFkMmxkdG9udS9WUWUxbTRvQmMzWjBudGExVm50UW53bWYrUVNoVVBnaDZqOVQrMC9QbjFMc3hCbHJRcTh1WkhzanhxQXVOcGFmMmgwYWRqOTM5ZG9FRi9SUmtFcWMrT2J6ME5zMWg1OEROT2VnU0ZJTUdNSEdmUXpmRGdoQ2s2S2dJUmhybVpyYWs1QUpnYlBiWm95eWdZSDlIaWplbWhET0x6ZmNncjZDV3N0Qjl2UWhzc29pcXo3dDBrNHc0bDFnaEtiUzBsdko4K3ljSXFvSHdTMUxqZHI3VTYza2EzVDh5OTFQNk9ncjduOTBmekFYWnBWYUI0dEtBYTVRNFB0OGtMWDc5ZmhTVGI2L0xBZWV0RkZ2anVIUk4rRmxSTy9HM1dmWHZtaEhjNjRJeXRVOHlGVFgvRVVPdFFjSTR0eXRTemJzZlk1VzRNTWNubXA0MXF6L3hRa0ZaWHlYcytOeDdzb0ROYjRiai9INFRPTGY2cUVDWDRRVm5SdTJ0djZtMXVzVllscmxNYVVLSktLL1VBbkJtQ0FWd2QwTU5mUjl5anZZbHFYWVF5YmpGcGtvYVpJSmZKTTU3UkJSRzU2ZnZSbUFkbnpvaVlBbzdmandGeXp2a1NVcUxlYStweC93Q1ZLL3BObno1U1pPYzZ6K1dIblNqM2RqMzFxV3JDdzN1UUx5akZyNEdzTStXRGMyaXN0QVd2amtKcTdXa1EyMnhFZmRwOVRDRnZJOTVjQlZWTS9SUVhXVEhIV1FmQVpuRktHcGlYMDgxaWlwSURnT3B5VW1oQmIrYXRyaGtFM2p4M3VaUUNmZ3ZDZkgxc05Pclo5WlVzb04rcmVUVnRxREI4dVM5SkhENWNscUVBZHdWZUxDSDYvRlg2c0h4Qm9ubnZpSWN5ZUFaZVF5VW50Wi9aRjlBMUdFTmJTQU1nak9waXBkcXdnTytHemVvN3JzRzB0S2s3M3hZZ0o0a3JZV0JpNklqeHhrVkVYYWVGb2U0YU1YZVhSdGpyd1FHZHVPVVZGN1ZJV3phQm5mRElPQWJPamp2aG0xM2p2YmxKVlFpdGRTNlBNNDNPQU5UY1hvVlQ0aHF4dm9IZytNWGlVQm4zM3AwTlpPendCQXJOUEJMQkRQb0tVQ2tZL2E2NUNEdVJSZ0xWdzhpdHovUXd5ZStmSi9LVVYvWHJCK2g2K1YvaFJqbzdKRkt6L01RMzQrUlk4K3ZNOFU5VUZRa1JZdnhJWHBxNUVUT2pGNXFIWWtoRy9WVGI2UzQwaTg4cGcxL21IRDZGbEsvWTNQMHFUZE80NFlkT2xib25rRGVldmh2eGZVZVpYczRRREpuOC9lUTgxYklpT1FsTU1RQ0RrUjJ1Wm4vSldqZmtoZjE1U3FZU0x5ZjJPNm9WLy8zY1ZhbDFtUzc0NGxMQmVha0VBOFRKY0dYZ0JzUzJ3REp5QldTb1pkL3p0aHc5c25KTlBUMVU0bm0xU0kvOWEyaTlKaHVSd3IzdmI1OE9MV2R5TGZQNUxXajAxeGkyOGFtUTVvT01tWC9JZUxzSjlXT2tmUzZiOFgzU2pSRjMvbzZ6S3NIMnB2bjZXZVlTMDBmaENLOUhiV0tBRzY3Z2ZiVEd1dkwzak9GdEpMTDRqVVprdFNnMTVvVjBwbEl0d2xUekhyb1BaWFF4VHROWWt4ek53bHcyam1SSTZuNnhnVzlEYzFocVF1OWxPVU4ySndLRGllOEFTUTRyQ1FJdXJIKzU2SzhncDhmV2hXR1cyV0hYYWtmY1Z3cnNnRmNxa1cxanFtWDJPcWQzUkJ1aU9KU2dvRUhOVUxPUXdVbjl3NGoxODlvYnk2MVMycGNWcThFZjR5akZzYTVtS3A0ZDRpNERnc25zamk2MG45WkRoV1VsUFhldDVxZDR4UWg0TVlvTXhIeGZXNWhsSDZad2IyRXZKNENpNU1OZHIwNWJaNlNFeDJoUDdBSThqd2JkdzZyWkU3NjNxMkdvWGVmYmVCcWlTTFNwUlBPSDRhYmloSE5HdGd6NDZObEs5Wk8rR1hCVUFYZ2RwUGhhb0FVRTk5a0U4TmppckFidjhTRlVzQ21HQlROWFJCaHp5SUpiejk4WitJM0VWS3Q0NGJqZFBoclNwbEpyRm00dkEyTEwrNmNDNDRpTUhmK0lQTlIwQUJuQW5pNTlXaU5lcTV3WEZ4VnhFK3RqTk1VTXZjS1NxYXMzMmI4MWdNU1UyS1NvZ2daKy8vNE4xY3RHazZsYzRXcjhpckZMR1kxQ3R1Z2JQdHVzTDZiZmF5YWZhZStoM252aENJeml5djFmc0YxbFdqdUo1WERwNVdiazN4NC84Z2tCNjVycDNHQTlSelFMaVo4LzRSUGgzMDNoZ0FKcGh3MHR2TmVtMzdxQU9SQnBFSW1zOXVRTzRqaVZjK2hSUFBsZzJ4Z0VqUkh2M3pGSnJWSkQ2c0RUN01tbXk5NE1pbU5ncng0T1RjQThkdDdNQmRwQzh5RmhzTmxVZHFCOGRMRHJncE5lMHJUdlhQWk9nc2JVaFMzUTE0Yk5renYwRVJQZ0w0YVJSQUFwcnVOVUsrVndwbEJSNDB3MG1SY00vRHBUZ0ZBUzhhQ3JzYmU1Q1YxeVJOYz0=", + "pin": "111111" + }, + { + "alias": "dave", + "pubkey": "037ec785c6004d512ebaeb0020f81a2bcdb6fccc9539f7b891f704289ebc65a4e3", + "ip": "http://host.docker.internal:3004", + "external_ip": "http://localhost:3004", + "proxy_ip": "http://proxy.sphinx:5050", + "admin_token": "r46bnf8ibrhbb424heba", + "authToken": "qBBuNujP8lGJvEqhl+bQ", + "transportToken": "MIIBCgKCAQEAwydStz6plRJQT8z589RFUFk5aB702tfHGFJhhLhRj8XFBiYp5p85\nbZRKZ66ROxmceuBzUbbnyJ8TMwyi0TLekwN9hirzigE0FxV8P2ejOVTLthNfmNkm\n/0VzqfLR0qGkAAyxwrsE9cvjpH9euJz/u4+X6c+mVqTzikJ2ZqrkdRX6ruEl4Xvj\nIGppvm0HlZ4yRYku9EC1xWF17hgu4NfUldJhJib9/g7PdjDAjjP/JJCrVhWT4LP0\nUZBR7odDe75z99Nf55tr3LAwZ4YUs5+aMy1CcysIk+0T5C3Bd9i5F9WKXznMAk+C\nexUG03gHWAFhXJ5in4YIbh29H9GJSSfA2QIDAQAB", + "contact_key": "MIIBCgKCAQEAznZzwnhfZaO/hipCMYgQDgIsOM0JNf/fHrP9LwxXzN7f1QPgXdnsoYgPK2QZhL7ydSFmDcRO24CV9ycZgEWgGFColBjzCdufxibJA2Pti2+fNI54WD84FljqEwTwf7soRZuTt69bNWExGVYPXfmMpt5jfeGjXuOnRKg1TWjHOPtACpQd1UFKs5BAkstY5UelxaTvHhJP6UimXxDCAl91sgrzamSU2qonhrxtz9wuCNBv57uz8i6M2EIuy6CgfbTY43fBTBV/H934LXn3Tq16J+s+HEA0wycr7J02cADikcOYzJaV8/ec5HR/AbV4wfjcTS/6az8SXb3trW5mO7WPcQIDAQAB", + "privkey": "MIIEogIBAAKCAQEAznZzwnhfZaO/hipCMYgQDgIsOM0JNf/fHrP9LwxXzN7f1QPgXdnsoYgPK2QZhL7ydSFmDcRO24CV9ycZgEWgGFColBjzCdufxibJA2Pti2+fNI54WD84FljqEwTwf7soRZuTt69bNWExGVYPXfmMpt5jfeGjXuOnRKg1TWjHOPtACpQd1UFKs5BAkstY5UelxaTvHhJP6UimXxDCAl91sgrzamSU2qonhrxtz9wuCNBv57uz8i6M2EIuy6CgfbTY43fBTBV/H934LXn3Tq16J+s+HEA0wycr7J02cADikcOYzJaV8/ec5HR/AbV4wfjcTS/6az8SXb3trW5mO7WPcQIDAQABAoIBAFXCEfdXNJjtWWKLLw+P6stGz8OQNyE89Rq1vJbMU7P/Z439nDafjJDUCSkG3Sqsfd11UASr4+19Dc2paghD42n2Ju/NJTaVCVqvRZOo8ESYytJz0z0klVGDAUeBJ7yGqwWux77mkcYsZs6VVrC8NVYizcS98rQ5b4MvM2TB/u6FfukQJYAW7ZNvEBKYRwTyJQ0XZ/Vj/5YxGPWf1ormz67HJ24eKb9NQXvxW4OQfJaHO3sMaW/uxK/YHLr2eWXQWLJoqnwWQ0TfAYDeRwSkWIVjMT6lwE+4L4ADmOokmk7grU+Yk+VJqTvbkMAnK+pAwQf9XTIZc1Nxnigb9bYJ5fkCgYEA9yPPUbJD1iEJIw6CWYH/W0/XUZg2bql9iEaY9rQxLx2sSw1GuUzvO1Tfc6vOONe9tzY9fAq7zfjfN1Ke82b4dwyTTJ0tsWaxc9ofBnuBAYhB1Vr6Ou6pD3BAzsGjM6sDWnjbRuakhfe+m7Vz+9zrp3HnsURO5IGJziSFhDbEfbsCgYEA1d1RKJic/Zs648wXjd49frKzQUeHTvmhyOy7KfrAzkkSe2ZfyDR02rEX8kBhPVSyoTL4cvV/ALb6kzupSt57i4yWNG1LiAchvHg4ur4KBbBFrnqZ47w5qAXW5RQfnIyhi+ioL34yi9d36KRfnj9OcMEKghI0klNm3yzhJ4QbvsMCgYBbGYoslUfIQPk7QPfvwqm8oRu/6hn2hOfPOibcmeOfeJKwP76YQ7HT7x9HZkdoUK6QQKA9fz9nV5wAqqYJFyXzzGDn1vCm+jHjgL37B7+wLugFm7mty5fqJvjcvihIvXtI+E/sPMzczUwn3aVZbEA5wxUjFQj31oBTysakzAN2TQKBgDsP0uEGPJzhKMNOUtbwIEWELnMBwQFzeVWW4x11zZdqoLsJi7wrmHXo4Hcbhn88i9Ru0iRVXgyhe9P7bwZpKO9iFP1Hjct0RMHa5bfU0cm+Y5AK9cLp8XZQnodHJm/Cer67su7iyCzMhaXu9yUp0IzdEvzW8EPU2p0ZtNiH6G2nAoGAI3XOYJAOO1tn5TUZ/22FYumE7CYSm/xybWtxpPyETcydh+bpFb/W1PZA5uGC2xwTPmCbZ5d0V94wLYPKKiCw35ENvAcW/Hq6kZXk0M3aM3MQ1ZiqUTQ++Y9gl3Jef2h9Ita7w9ics/PmFjP3JMjFLPdbttPYLf0MudKlbBJT1zc=", + "exported_keys": "a2V5czo6QXdGZW9pYzl1MnZNaloyVWVSNXFrWUxlQnFIK0NQUkZFS1lLaExoY0VNaDBNSmhHSmFoWWljMngzUGN4b0xnWjRHVXRMSlFqL1VocG1JUmQ4eWp0bkx3OEdhbG5VWmtCZmVRQWlxdmNGV0dHWCtJVlNrdHFLRTdrbjJ5cWJvZGNwdUdsK2FHdGlIQzI1dGlDaDJrM0MrZTlIYmhHQ2E0SFdRc0VoT3hDUXlDWVU3SWlScHJEYzU3TWgxdWRDaXdnN2FKVWtnR1FVZ055dnFvWWllTE5oaDVnUjNrc1VmdElEQkxxdlRseUYvQVVYYmZqNHpWUEdTcmVrSHNQSjVnc2Z6TTdTbHJ3ZEVGbjhZVHB5VWxYRHNjRDRCazIwb1NhVXdwZDgxWTBQS3hsdEJYUHF3SE1yUlNSTnEydUw0ZWJhdDJFdU95M1JOblM0U0h2WlN5M2FweG5zbHBZUnJ3cmRKOFBNamFUMytQb1VFQnROT2V1eUlUYm5rQmExMnphdHVLUDhqbE9ydEpGVVBRZ0Z1ODRtM2laVm1PNWFsUUtET0Ria3l1ZXFDbURzZlNKTmlvSE8rTDFCa01kY2dRZFpzVnlXRm5hVGI5M3BBa2xNRlhIcXRoOVV6cTNRY1F3ZG50YVlnVVBmYWM0blFtOXU1a28zNVZaVm42b3hsYTdDMWowcCtFQXFTSkxicnVtWnpsTnhYTjdyWUN1QWFQQVgxS3VIRWRmRXRaZXhpeDFDbkYwUTB0MDBzVjI3OG9zZFhvQjVZZkRwZEJrbDJyQVpIcXgyTjl3dkdPV1RCRDJ4SjlDUldseGRNVzZrci85cCtUa1UxMXNmeFFScmNKVUNYNnJ2RjJqZUptK2NkSy9FN2NWdFlWT0ZtbzM3WEQ5UFAwRjB3QXBMNkI3clFlaVR2QVhWSXNwYStHS0R4OVBHRnZNNHJXdmJNVS9NenA1Wm13Q054dFg4Zjd2aXppSlE4eDRzcEt6dkt1SXc4S1g3NkpObU9zTktSOFR3UG5OQnJSWTR2OHJvTkNzUzJJakU1N21FaEI3bTFJSjJCck1iUXRBN0ZSUUUxK210S3JuYUhEUEtia2l4K015NjJ5aVBuK1BsOHF6TzZaOXpJR2QvT3YvOE9mSUl0WGMrQVNLclZlamZrVkxIN0IxdnAvY0EwQjhuV3Jzb29Rc2tKS2JXOHRoY2tqdm85ZmJYRTJmU3luVkxvVktibEswSExaakRMU3JVaElQc2NYbi9xOTU2M3QwVEEvdEZMbkhzUlAyaDE4M3JORWk1aXZXS3NIWDEwOGZVa1l1T2tqZitNWmtFdHBTZTFJQnBsbHFhbkxIeGw5WTVPUG0rMThFK2dlYUwxWnIwUHZGL1ErRnJJV25pTWFoWFRVLzU1cGR0UWRvbC9iR0h4eTc5dTVjNFV0eHhBRWl5bmNkSDRoMFh0TGgrSkJTcFkvc3lVZFZtNWVsdDUwRW9KUG9ORzFjbjJsTUcvb3lNZEg3TWhCeVFpZUJsRXM3QStrR21BOElScVNjMlRycTFuSEhpMjBsK2N2cnpabDliNVEvU2p1Ukd3aVQ3TUtXYUMyVFQ2c3pUMkkrU3BDWFpRZGM1a2FaZkxrWkdZTVdybDlTa3pUYlhMejVHZll4SXp1K0NZUEs1ODR3dE1jdTlxZjdrV1plSUhFQVVDYTRrZWRnNEl6QUwycmpkQnVrVElYS1hLVVhJczRsU1F4dFZraGRJbmJJaTNiL1VYSU9wVTZyNldSbkpxaXBlZkVybkNqMVRXZnp2UUNBY0poTG93RkFJdzhUd2pIM0dhU3E2ZEsrOEhPdTZUTWN6VjFnZDhwbUNpbUFOWVBsQXVnalZSa3RmaWlyNXJNRm0zTks1Wm53dlFwUTJ5bXYweEhTaWRXVzRBeHU0L3dyR0ZtRlhURGNhRHhIMm1XcURsQkpHWWNGU3Y2K2x4VEkvUEJDeEp0UGtNZ2lFVEhCSVJVcXRraHYyRTVvMFowUUtpMWJDRzRqMWlCVXg2Q1J2eTV3RVB1dlNUY2gwc0JUUHpmVXJBbGhOc2t0YlZiWXVhaUxJM09LQXNuQlJkdzJTVDJ3cmhKazhPbUoyYjhXOHhkOUhqQTN0Z0V3am0zWG1pQ2I3a00yYzBtYXpnbmdEVnpyTFUrMi9xbFhZUXlSZ0JnU3h1Mk1tV2Z5d0dqcU1rcmtGcjNGdC9iZlppQ1Z4ZlZpQmJHaGVMT3dydFd1emFJU2JkZjNxT0FIL1Q2QURiOWNWREN1WHNvK0x0V25sTEVpMmFjVXpocUNGdE1xbXhLelgvWWdmcFFrVkpPMWxSbCtCbENWa1E2RDB4akI3T1FDQWtMbmo0WXlqdzR0RTNoS3RLZUZPK04yNnBKekRTdzBMZUlOMnRBSDFLS21YQXZrSkJ1VGlIQ091NXZNWVNRL290Z3FOeUdKR2xGcW04UzBxRjlvWERrMnI2TE04ZlgxMTU4SzFqZXU4ajBqQ1lIV3VIcVpTUlZHYTB6WTFCSWdFRVh6ZjdJS1loektURmhJcUVKeWxIRExqaUY0Y3NuNXFKSnM3NWoxczRlUGgxSUg3Z1pqNU1vZ24rV0lCWDUvb3poSEV5Yi8wK1hGQWhQVnRNZEkxektBUEtaWFFRNlExWjNkU2ZBdGJ2MWgvQlpwVERYbStacVpWa3RaRTFwWXh6SjUzR1FaTU9zNG1hOStHUWhzUW1HVFZHTXR5WUszUGdaUjRvV0RvNHM0bEUzSzNQMmNsdU1oNlQyKzRhb080MlYvNy9aWWdxNFN5RmlDUDFrbGwyOW9QMlZ2RWlmelZZSVVNVFU3L0ZabWRnUS9uOGZYb3hQODgvQkhMWWRMSWkvbll0RWM0c3NCNDhWSUVQM2VwOXF6dm9EQVU0OHdzZTlrc1RKM2FoWlNDK0hERGlkSjgvelhlbHJCaUNtYkpZaDEyWjdqWXExY2Y4WGEwMXo5T0M0eVBQK2ZFS1EwZTZCMzNpcmVYdTFRckErUFFMaFcwQXdZU0VLVVh1d2V6UG9nY3RUaTVCV1J3dk5JNG5sMHIrRkNTTGIzK3dmeHRKZ1NlbWRBMmdBeGlXMHJlMDkvS3N4UFI4MGdLS3ZCU0RBU2M4ekZXZHVRWjJ0UjlqSGltSnE2ek9zN3NpdmFONFVtWGhxVE1zK3lUdUI3UUtOSmpyYldCYmdmQmUyL1QvaWdZam9rc3k3N1dwUkpTTWRrME11NmRjK2VwcENXMy96T2wyYkNBRDFyck5tQVd6bFRXeTRmS1d2eGtLSjVXUlM2eGxobnduaUpRK1JFRkUyUXpndkl6bzJ2b096ek43UVRYSCtEZHVxM0xEUk14SmdHeHR0MysyeG53eGp0cXNuYURDVDB6OVVtZDllOHFpc093eHd0dzBWcUpHakNGK2NuQWI0VGNtKzBPU1Y3NzRUZmZPMFZveHBUOTlUMVptaU01bHRIVE55VWFCcHczWVU3akFJRHJPUGJGVnFGVjk3dVhuMndZMlIremNlelFlaHlrbVR6cEh5OFBOT3JncXRRSHhyV2gxRVFmNFQ1YU1kb29vZWZVL2hjYm8wNHFXUnJ5WGYxQ1AxMnpiUVE5ekhENGdjRjc5Q01BNSswcEF3d3Q2cnpRVkFQa0pJZmQrWkhKeUkyd0JURDd6cz0=", + "pin": "111111" + } +] diff --git a/src/components/Auth/index.tsx b/src/components/Auth/index.tsx index 677775e7f..98f9b3fbf 100644 --- a/src/components/Auth/index.tsx +++ b/src/components/Auth/index.tsx @@ -15,7 +15,7 @@ import { Splash } from '../App/Splash' export const AuthGuard = ({ children }: PropsWithChildren) => { const [unAuthorized, setUnauthorized] = useState(false) - const { setBudget, setIsAdmin, setPubKey, setIsAuthenticated } = useUserStore((s) => s) + const { setBudget, setIsAdmin, setPubKey, setIsAuthenticated, setSwarmUiUrl } = useUserStore((s) => s) const { splashDataLoading } = useDataStore((s) => s) const [renderMainPage, setRenderMainPage] = useState(false) @@ -67,9 +67,15 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { const res = await getIsAdmin() if (res.data) { - localStorage.setItem('admin', JSON.stringify({ isAdmin: res.data.isAdmin })) + const isAdmin = !!res.data.isAdmin - setIsAdmin(!!res.data.isAdmin) + localStorage.setItem('admin', JSON.stringify({ isAdmin })) + + if (isAdmin && res.data.swarmUiUrl) { + setSwarmUiUrl(res.data.swarmUiUrl) + } + + setIsAdmin(isAdmin) setTrendingTopicsFeatureFlag(res.data.trendingTopics) setQueuedSourcesFeatureFlag(res.data.queuedSources) setCustomSchemaFeatureFlag(res.data.customSchema) @@ -91,6 +97,7 @@ export const AuthGuard = ({ children }: PropsWithChildren) => { setCustomSchemaFeatureFlag, setRealtimeGraphFeatureFlag, setChatInterfaceFeatureFlag, + setSwarmUiUrl, ]) // auth checker diff --git a/src/stores/useUserStore/index.ts b/src/stores/useUserStore/index.ts index ad0965b7e..941223fea 100644 --- a/src/stores/useUserStore/index.ts +++ b/src/stores/useUserStore/index.ts @@ -16,9 +16,11 @@ export type UserStore = { tribeUuid: string setTribeUuid: (val: string) => void tribeHost: string + swarmUiUrl: string setTribeHost: (val: string) => void setIsAuthenticated: (val: boolean) => void setSignedToken: (val: string) => void + setSwarmUiUrl: (val: string) => void } const defaultData: Omit< @@ -31,6 +33,7 @@ const defaultData: Omit< | 'setTribeHost' | 'setIsAuthenticated' | 'setSignedToken' + | 'setSwarmUiUrl' > = { isAdmin: false, isAuthenticated: false, @@ -40,6 +43,7 @@ const defaultData: Omit< tribeHost: '', tribeUuid: '', signedToken: '', + swarmUiUrl: '', } export const useUserStore = create((set) => ({ @@ -59,4 +63,5 @@ export const useUserStore = create((set) => ({ setTribeHost: (tribeHost) => set({ tribeHost }), setIsAuthenticated: (isAuthenticated) => set({ isAuthenticated }), setSignedToken: (signedToken) => set({ signedToken }), + setSwarmUiUrl: (swarmUiUrl) => set({ swarmUiUrl }), })) diff --git a/src/types/index.ts b/src/types/index.ts index 18e314bf2..6a7dcf700 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -240,6 +240,7 @@ export type IsAdminResponse = { customSchema: boolean realtimeGraph: boolean chatInterface: boolean + swarmUiUrl: string } success: boolean message: string From 8e565ee33e36f2943cf10906fd36ba6a58f23f85 Mon Sep 17 00:00:00 2001 From: Oluwatobi Bamidele Date: Tue, 8 Oct 2024 14:35:52 +0100 Subject: [PATCH 2/4] feat: view swarm ui from admin modal --- .../SettingsView/General/index.tsx | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/components/SettingsModal/SettingsView/General/index.tsx b/src/components/SettingsModal/SettingsView/General/index.tsx index dd0a9a3c3..b49dd9d65 100644 --- a/src/components/SettingsModal/SettingsView/General/index.tsx +++ b/src/components/SettingsModal/SettingsView/General/index.tsx @@ -1,16 +1,17 @@ -import { FC, useState } from 'react' import { Button } from '@mui/material' +import { FC, useState } from 'react' import { FormProvider, useForm } from 'react-hook-form' +import { MdError } from 'react-icons/md' import { ClipLoader } from 'react-spinners' import styled from 'styled-components' import { Flex } from '~/components/common/Flex' +import { SuccessNotify } from '~/components/common/SuccessToast' import { TextInput } from '~/components/common/TextInput' import { NODE_ADD_ERROR, requiredRule } from '~/constants' -import { TAboutParams, postAboutData } from '~/network/fetchSourcesData' +import { postAboutData, TAboutParams } from '~/network/fetchSourcesData' import { useAppStore } from '~/stores/useAppStore' +import { useUserStore } from '~/stores/useUserStore' import { colors } from '~/utils/colors' -import { SuccessNotify } from '~/components/common/SuccessToast' -import { MdError } from 'react-icons/md' type Props = { initialValues: TAboutParams @@ -21,6 +22,7 @@ export const General: FC = ({ initialValues, onClose }) => { const form = useForm({ defaultValues: initialValues, mode: 'onSubmit' }) const { isSubmitting } = form.formState const setAppMetaData = useAppStore((s) => s.setAppMetaData) + const { swarmUiUrl } = useUserStore((s) => s) const [error, setError] = useState('') const onSubmit = form.handleSubmit(async (data) => { @@ -58,6 +60,12 @@ export const General: FC = ({ initialValues, onClose }) => { <> + {swarmUiUrl && ( + + View Swarm UI + + )} + = ({ initialValues, onClose }) => { - +