From 99f6b96b76e325ab62711feb10c56a608727559f Mon Sep 17 00:00:00 2001 From: Jonah Husson <jonah@elixxir.io> Date: Wed, 3 May 2023 16:09:47 +0000 Subject: [PATCH] Xx 4639/condense network --- .gitignore | 2 +- .gitlab-ci.yml | 155 ++-- .../LoremIpsum.txt => LoremIpsum.txt | 0 README_V2.md | 111 +++ basice2e/- | 1 - basice2e/README.md | 35 - basice2e/client-registrar.yaml | 36 - basice2e/client-session-tests.sh | 108 --- basice2e/clients.net_goldoutput/client100.txt | 66 -- basice2e/clients.net_goldoutput/client101.txt | 67 -- basice2e/clients.net_goldoutput/client120.txt | 29 - basice2e/clients.net_goldoutput/client121.txt | 29 - basice2e/clients.net_goldoutput/client22.txt | 0 basice2e/clients.net_goldoutput/client23.txt | 0 basice2e/clients.net_goldoutput/client25.txt | 29 - basice2e/clients.net_goldoutput/client26.txt | 27 - basice2e/clients.net_goldoutput/client33.txt | 11 - basice2e/clients.net_goldoutput/client34.txt | 11 - basice2e/clients.net_goldoutput/client42.txt | 75 -- basice2e/clients.net_goldoutput/client43.txt | 72 -- basice2e/clients.net_goldoutput/client44.txt | 5 - basice2e/clients.net_goldoutput/client46.txt | 4 - basice2e/clients.net_goldoutput/client85.txt | 14 - basice2e/clients.net_goldoutput/client86.txt | 14 - basice2e/crust.sh | 183 ---- basice2e/crustUd.crt | 33 - basice2e/crustUdContact.bin | 1 - basice2e/e2eReport.py | 147 ---- basice2e/gateway-1.yaml | 46 - basice2e/gateway-2.yaml | 46 - basice2e/gateway-3.yaml | 46 - basice2e/gateway-4.yaml | 46 - basice2e/gateway-5.yaml | 47 - basice2e/ndf.json | 1 - basice2e/network.config | 26 - basice2e/network.sh | 109 --- basice2e/partialNdf | 1 - basice2e/permissioning.yaml | 91 -- basice2e/regCodes.json | 1 - basice2e/registration-commands.txt | 2 - basice2e/registration.json | 12 - basice2e/run.sh | 831 ------------------ basice2e/server-1.yaml | 39 - basice2e/server-2.yaml | 39 - basice2e/server-3.yaml | 39 - basice2e/server-4.yaml | 39 - basice2e/server-5.yaml | 39 - basice2e/tmp | 7 - basice2e/ud-stress.sh | 105 --- basice2e/udb.yaml | 10 - broadcast/- | 1 - broadcast/betanet.txt | 306 ------- broadcast/client-registrar.yaml | 36 - broadcast/devnet.txt | 3 - broadcast/gateway-1.yaml | 49 -- broadcast/gateway-2.yaml | 49 -- broadcast/gateway-3.yaml | 49 -- broadcast/gateway-4.yaml | 49 -- broadcast/gateway-5.yaml | 49 -- broadcast/mainnet.txt | 74 -- broadcast/network.config | 26 - broadcast/noerrors.txt | 0 broadcast/permissioning.yaml | 96 -- broadcast/regCodes.json | 1 - broadcast/release.txt | 3 - broadcast/run.sh | 229 ----- broadcast/server-1.yaml | 42 - broadcast/server-2.yaml | 42 - broadcast/server-3.yaml | 42 - broadcast/server-4.yaml | 42 - broadcast/server-5.yaml | 42 - broadcast/tmp | 1 - broadcast/udb.yaml | 10 - broadcast/udbContact.bin | 1 - broadcast/udbProto.json | 1 - broadcast/whitelist.txt | 1 - channels/betanet.txt | 306 ------- channels/client-registrar.yaml | 36 - channels/devnet.txt | 3 - channels/gateway-4.yaml | 49 -- channels/gateway-5.yaml | 49 -- channels/mainnet.txt | 74 -- channels/noerrors.txt | 0 channels/permissioning.yaml | 96 -- channels/registration.json | 12 - channels/release.txt | 3 - channels/run.sh | 243 ----- channels/tmp | 7 - channels/udb.yaml | 10 - channels/udbContact.bin | 1 - channels/udbProto.json | 1 - channels/whitelist.txt | 1 - channelsFileTransfer/betanet.txt | 306 ------- channelsFileTransfer/client-registrar.yaml | 36 - channelsFileTransfer/devnet.txt | 3 - channelsFileTransfer/gateway-1.yaml | 49 -- channelsFileTransfer/gateway-2.yaml | 49 -- channelsFileTransfer/gateway-3.yaml | 49 -- channelsFileTransfer/gateway-4.yaml | 49 -- channelsFileTransfer/gateway-5.yaml | 49 -- channelsFileTransfer/mainnet.txt | 74 -- channelsFileTransfer/network.config | 26 - channelsFileTransfer/noerrors.txt | 0 channelsFileTransfer/permissioning.yaml | 96 -- channelsFileTransfer/regCodes.json | 1 - channelsFileTransfer/registration.json | 12 - channelsFileTransfer/release.txt | 3 - channelsFileTransfer/run.sh | 211 ----- channelsFileTransfer/server-1.yaml | 42 - channelsFileTransfer/server-2.yaml | 42 - channelsFileTransfer/server-3.yaml | 42 - channelsFileTransfer/server-4.yaml | 42 - channelsFileTransfer/server-5.yaml | 42 - channelsFileTransfer/udb.yaml | 10 - channelsFileTransfer/udbContact.bin | 1 - channelsFileTransfer/udbProto.json | 1 - channelsFileTransfer/whitelist.txt | 1 - connect/betanet.txt | 306 ------- connect/client-registrar.yaml | 36 - connect/devnet.txt | 3 - connect/gateway-1.yaml | 49 -- connect/gateway-2.yaml | 49 -- connect/gateway-3.yaml | 49 -- connect/gateway-4.yaml | 49 -- connect/gateway-5.yaml | 49 -- connect/mainnet.txt | 74 -- connect/network.config | 26 - connect/network.sh | 110 --- connect/noerrors.txt | 0 connect/permissioning.yaml | 96 -- connect/regCodes.json | 1 - connect/registration.json | 12 - connect/release.txt | 3 - connect/run.sh | 267 ------ connect/server-1.yaml | 42 - connect/server-2.yaml | 42 - connect/server-3.yaml | 42 - connect/server-4.yaml | 42 - connect/server-5.yaml | 42 - connect/udb.yaml | 10 - connect/udbContact.bin | 1 - connect/udbProto.json | 1 - connect/whitelist.txt | 1 - ephemeralRegistration/betanet.txt | 306 ------- ephemeralRegistration/client-registrar.yaml | 36 - ephemeralRegistration/devnet.txt | 3 - ephemeralRegistration/gateway-1.yaml | 49 -- ephemeralRegistration/gateway-2.yaml | 49 -- ephemeralRegistration/gateway-3.yaml | 49 -- ephemeralRegistration/gateway-4.yaml | 49 -- ephemeralRegistration/gateway-5.yaml | 49 -- ephemeralRegistration/mainnet.txt | 74 -- ephemeralRegistration/network.config | 26 - ephemeralRegistration/noerrors.txt | 0 ephemeralRegistration/permissioning.yaml | 96 -- ephemeralRegistration/regCodes.json | 1 - ephemeralRegistration/registration.json | 12 - ephemeralRegistration/release.txt | 3 - ephemeralRegistration/run.sh | 241 ----- ephemeralRegistration/server-1.yaml | 42 - ephemeralRegistration/server-2.yaml | 42 - ephemeralRegistration/server-3.yaml | 42 - ephemeralRegistration/server-4.yaml | 42 - ephemeralRegistration/server-5.yaml | 42 - ephemeralRegistration/udb.yaml | 10 - ephemeralRegistration/udbContact.bin | 1 - ephemeralRegistration/udbProto.json | 1 - ephemeralRegistration/whitelist.txt | 1 - fileTransfer/- | 1 - fileTransfer/LoremIpsum.txt | 333 ------- fileTransfer/betanet.txt | 306 ------- fileTransfer/clients.goldoutput/client110.txt | 336 ------- fileTransfer/clients.goldoutput/client111.txt | 3 - fileTransfer/devnet.txt | 3 - fileTransfer/gateway-1.yaml | 49 -- fileTransfer/gateway-2.yaml | 49 -- fileTransfer/gateway-3.yaml | 49 -- fileTransfer/mainnet.txt | 74 -- fileTransfer/network.config | 26 - fileTransfer/noerrors.txt | 0 fileTransfer/regCodes.json | 1 - fileTransfer/registration.json | 12 - fileTransfer/release.txt | 3 - fileTransfer/run.sh | 236 ----- fileTransfer/server-1.yaml | 42 - fileTransfer/server-2.yaml | 42 - fileTransfer/server-3.yaml | 42 - fileTransfer/server-4.yaml | 42 - fileTransfer/server-5.yaml | 42 - fileTransfer/udb.yaml | 10 - fileTransfer/udbContact.bin | 1 - fileTransfer/udbProto.json | 1 - fileTransfer/whitelist.txt | 1 - gen/betanet.txt | 306 ------- gen/client-registrar.yaml | 36 - gen/devnet.txt | 3 - gen/gateway.yaml | 49 -- gen/mainnet.txt | 74 -- gen/network.config | 26 - gen/noerrors.txt | 0 gen/permissioning.yaml | 96 -- gen/registration.json | 12 - gen/release.txt | 3 - gen/run.sh | 158 +--- gen/server.yaml | 42 - gen/udb.yaml | 10 - gen/udbContact.bin | 1 - gen/udbProto.json | 1 - gen/whitelist.txt | 1 - groupChat/- | 1 - groupChat/betanet.txt | 306 ------- groupChat/client-registrar.yaml | 36 - groupChat/clients.goldoutput/client80.txt | 10 - groupChat/clients.goldoutput/client81.txt | 11 - groupChat/clients.goldoutput/client82.txt | 11 - groupChat/devnet.txt | 3 - groupChat/gateway-1.yaml | 49 -- groupChat/gateway-2.yaml | 49 -- groupChat/gateway-3.yaml | 49 -- groupChat/gateway-4.yaml | 49 -- groupChat/gateway-5.yaml | 49 -- groupChat/mainnet.txt | 74 -- groupChat/network.config | 26 - groupChat/network.sh | 110 --- groupChat/noerrors.txt | 0 groupChat/permissioning.yaml | 96 -- groupChat/regCodes.json | 1 - groupChat/registration.json | 12 - groupChat/release.txt | 3 - groupChat/run.sh | 378 -------- groupChat/server-1.yaml | 42 - groupChat/server-2.yaml | 42 - groupChat/server-3.yaml | 42 - groupChat/server-4.yaml | 42 - groupChat/server-5.yaml | 42 - groupChat/udb.yaml | 10 - groupChat/udbContact.bin | 1 - groupChat/udbProto.json | 1 - groupChat/whitelist.txt | 1 - localNetwork/README.md | 83 -- localNetwork/client-registrar.yaml | 36 - .../gateway_template.yaml | 79 -- localNetwork/configFileGeneration/gen.py | 103 --- .../permissioning_template.yaml | 97 -- .../registration_template.json | 12 - .../configFileGeneration/server_template.yaml | 45 - localNetwork/gateway-0.yaml | 79 -- localNetwork/gateway-1.yaml | 79 -- localNetwork/gateway-2.yaml | 79 -- localNetwork/ndf.json | 1 - localNetwork/permissioning-actual.yaml | 111 --- localNetwork/permissioning.yaml | 111 --- localNetwork/regCodes.json | 1 - localNetwork/registration.json | 12 - localNetwork/run.sh | 127 --- localNetwork/runpublic.sh | 31 - localNetwork/server-0.yaml | 45 - localNetwork/server-1.yaml | 45 - localNetwork/server-2.yaml | 45 - localNetwork/udb.yaml | 10 - localNetwork/udbContact.bin | 1 - localNetwork/udbProto.json | 1 - localNetwork/whitelist.json | 1 - {basice2e => network}/betanet.txt | 0 network/cleanup.sh | 46 + .../client-registrar.yaml | 6 +- {basice2e => network}/devnet.txt | 0 {channels => network}/gateway-1.yaml | 12 +- {channels => network}/gateway-2.yaml | 13 +- {channels => network}/gateway-3.yaml | 13 +- {fileTransfer => network}/gateway-4.yaml | 13 +- {fileTransfer => network}/gateway-5.yaml | 13 +- {basice2e => network}/mainnet.txt | 0 {channels => network}/network.config | 0 network/network.sh | 81 +- {basice2e => network}/noerrors.txt | 0 {fileTransfer => network}/permissioning.yaml | 26 +- {channels => network}/regCodes.json | 0 {broadcast => network}/registration.json | 0 {basice2e => network}/release.txt | 0 {channels => network}/server-1.yaml | 18 +- {channels => network}/server-2.yaml | 18 +- {channels => network}/server-3.yaml | 18 +- {channels => network}/server-4.yaml | 18 +- {channels => network}/server-5.yaml | 18 +- network/udb.yaml | 10 + {basice2e => network}/udbContact.bin | 0 {basice2e => network}/udbProto.json | 0 {basice2e => network}/whitelist.txt | 0 run.sh | 219 +++-- singleUse/betanet.txt | 306 ------- singleUse/client-registrar.yaml | 36 - singleUse/clients.goldoutput/client52.txt | 3 - singleUse/clients.goldoutput/client53.txt | 3 - singleUse/devnet.txt | 3 - singleUse/gateway-1.yaml | 49 -- singleUse/gateway-2.yaml | 49 -- singleUse/gateway-3.yaml | 49 -- singleUse/gateway-4.yaml | 49 -- singleUse/gateway-5.yaml | 49 -- singleUse/mainnet.txt | 74 -- singleUse/network.config | 26 - singleUse/noerrors.txt | 0 singleUse/permissioning.yaml | 96 -- singleUse/regCodes.json | 1 - singleUse/registration.json | 12 - singleUse/release.txt | 3 - singleUse/run.sh | 214 ----- singleUse/server-1.yaml | 42 - singleUse/server-2.yaml | 42 - singleUse/server-3.yaml | 42 - singleUse/server-4.yaml | 42 - singleUse/server-5.yaml | 42 - singleUse/udb.yaml | 10 - singleUse/udbContact.bin | 1 - singleUse/udbProto.json | 1 - singleUse/whitelist.txt | 1 - start.sh | 63 ++ stop.sh | 20 + tests/basice2e/.DS_Store | Bin 0 -> 6148 bytes .../clients.goldoutput/client100.txt | 0 .../clients.goldoutput/client101.txt | 0 .../clients.goldoutput/client120.txt | 0 .../clients.goldoutput/client121.txt | 0 .../basice2e}/clients.goldoutput/client25.txt | 0 .../basice2e}/clients.goldoutput/client26.txt | 0 .../basice2e}/clients.goldoutput/client42.txt | 0 .../basice2e}/clients.goldoutput/client43.txt | 0 .../basice2e}/clients.goldoutput/client44.txt | 0 .../basice2e}/clients.goldoutput/client46.txt | 0 .../basice2e}/clients.goldoutput/client85.txt | 0 .../basice2e}/clients.goldoutput/client86.txt | 0 tests/basice2e/run.sh | 509 +++++++++++ .../clients.goldoutput/client18.txt | 0 .../clients.goldoutput/client18_rekey.txt | 0 .../clients.goldoutput/client20.txt | 0 .../clients.goldoutput/client21.txt | 0 .../clients.goldoutput/client33.txt | 0 .../clients.goldoutput/client34.txt | 0 .../clients.goldoutput/client45.txt | 0 .../clients.goldoutput/client56.txt | 0 .../clients.goldoutput/client67.txt | 0 .../clients.goldoutput/client74.txt | 0 .../clients.goldoutput/client9.txt | 0 .../clients.goldoutput/client9_rekey.txt | 0 tests/basice2e_local/run.sh | 164 ++++ .../clients.goldoutput/client130.txt | 0 .../clients.goldoutput/client131.txt | 0 .../clients.goldoutput/client132.txt | 0 .../clients.goldoutput/client133.txt | 0 .../clients.goldoutput/client134.txt | 0 tests/broadcast/run.sh | 96 ++ .../clients.goldoutput/client500.txt | 0 .../clients.goldoutput/client501.txt | 0 .../clients.goldoutput/client502.txt | 0 tests/channels/run.sh | 103 +++ .../clients.goldoutput/channel0_download.txt | 0 .../clients.goldoutput/channel1_download.txt | 0 .../clients.goldoutput/channel2_download.txt | 0 .../clients.goldoutput/channel3_download.txt | 0 .../clients.goldoutput/client0.txt | 0 .../clients.goldoutput/client1.txt | 0 .../clients.goldoutput/client2.txt | 0 .../clients.goldoutput/client3.txt | 0 tests/channelsFileTransfer/run.sh | 86 ++ .../connect}/clients.goldoutput/client200.txt | 0 .../connect}/clients.goldoutput/client201.txt | 0 .../connect}/clients.goldoutput/client202.txt | 0 .../connect}/clients.goldoutput/client203.txt | 0 .../connect}/clients.goldoutput/client204.txt | 0 .../connect}/clients.goldoutput/client205.txt | 0 .../connect}/clients.goldoutput/client206.txt | 0 .../connect}/clients.goldoutput/client207.txt | 0 tests/connect/run.sh | 133 +++ .../dm}/clients.goldoutput/client1.txt | 0 .../dm}/clients.goldoutput/client2.txt | 0 tests/dm/run.sh | 93 ++ .../clients.goldoutput/client601.txt | 0 .../clients.goldoutput/client602.txt | 0 tests/ephemeralRegistration/run.sh | 108 +++ .../clients.goldoutput}/client110.txt | 0 .../clients.goldoutput}/client111.txt | 0 tests/fileTransfer/run.sh | 104 +++ .../clients.goldoutput}/client80.txt | 0 .../clients.goldoutput}/client81.txt | 0 .../clients.goldoutput}/client82.txt | 0 tests/groupChat/run.sh | 243 +++++ .../clients.goldoutput/client22.txt | 0 .../clients.goldoutput/client23.txt | 0 .../clients.goldoutput/client35.txt | 0 .../clients.goldoutput/client36.txt | 0 tests/historical/run.sh | 86 ++ .../clients.goldoutput}/client52.txt | 0 .../clients.goldoutput}/client53.txt | 0 tests/singleUse/run.sh | 81 ++ .../ud}/clients.goldoutput/client13-2.txt | 0 .../ud}/clients.goldoutput/client13.txt | 0 .../ud}/clients.goldoutput/client31.txt | 0 tests/ud/run.sh | 139 +++ ud/- | 1 - ud/betanet.txt | 306 ------- ud/client-registrar.yaml | 36 - ud/devnet.txt | 3 - ud/gateway-1.yaml | 49 -- ud/gateway-2.yaml | 49 -- ud/gateway-3.yaml | 49 -- ud/gateway-4.yaml | 49 -- ud/gateway-5.yaml | 49 -- ud/mainnet.txt | 74 -- ud/network.config | 26 - ud/network.sh | 110 --- ud/noerrors.txt | 0 ud/permissioning.yaml | 96 -- ud/regCodes.json | 1 - ud/registration.json | 12 - ud/release.txt | 3 - ud/run.sh | 272 ------ ud/server-1.yaml | 42 - ud/server-2.yaml | 42 - ud/server-3.yaml | 42 - ud/server-4.yaml | 42 - ud/server-5.yaml | 42 - ud/udb.yaml | 10 - ud/udbContact.bin | 1 - ud/udbProto.json | 1 - ud/whitelist.txt | 1 - 426 files changed, 2591 insertions(+), 16860 deletions(-) rename channelsFileTransfer/LoremIpsum.txt => LoremIpsum.txt (100%) create mode 100644 README_V2.md delete mode 100644 basice2e/- delete mode 100644 basice2e/README.md delete mode 100644 basice2e/client-registrar.yaml delete mode 100755 basice2e/client-session-tests.sh delete mode 100644 basice2e/clients.net_goldoutput/client100.txt delete mode 100644 basice2e/clients.net_goldoutput/client101.txt delete mode 100644 basice2e/clients.net_goldoutput/client120.txt delete mode 100644 basice2e/clients.net_goldoutput/client121.txt delete mode 100644 basice2e/clients.net_goldoutput/client22.txt delete mode 100644 basice2e/clients.net_goldoutput/client23.txt delete mode 100644 basice2e/clients.net_goldoutput/client25.txt delete mode 100644 basice2e/clients.net_goldoutput/client26.txt delete mode 100644 basice2e/clients.net_goldoutput/client33.txt delete mode 100644 basice2e/clients.net_goldoutput/client34.txt delete mode 100644 basice2e/clients.net_goldoutput/client42.txt delete mode 100644 basice2e/clients.net_goldoutput/client43.txt delete mode 100644 basice2e/clients.net_goldoutput/client44.txt delete mode 100644 basice2e/clients.net_goldoutput/client46.txt delete mode 100644 basice2e/clients.net_goldoutput/client85.txt delete mode 100644 basice2e/clients.net_goldoutput/client86.txt delete mode 100755 basice2e/crust.sh delete mode 100644 basice2e/crustUd.crt delete mode 100644 basice2e/crustUdContact.bin delete mode 100755 basice2e/e2eReport.py delete mode 100644 basice2e/gateway-1.yaml delete mode 100644 basice2e/gateway-2.yaml delete mode 100644 basice2e/gateway-3.yaml delete mode 100644 basice2e/gateway-4.yaml delete mode 100644 basice2e/gateway-5.yaml delete mode 100644 basice2e/ndf.json delete mode 100644 basice2e/network.config delete mode 100755 basice2e/network.sh delete mode 100644 basice2e/partialNdf delete mode 100644 basice2e/permissioning.yaml delete mode 100644 basice2e/regCodes.json delete mode 100644 basice2e/registration-commands.txt delete mode 100644 basice2e/registration.json delete mode 100755 basice2e/run.sh delete mode 100644 basice2e/server-1.yaml delete mode 100644 basice2e/server-2.yaml delete mode 100644 basice2e/server-3.yaml delete mode 100644 basice2e/server-4.yaml delete mode 100644 basice2e/server-5.yaml delete mode 100644 basice2e/tmp delete mode 100755 basice2e/ud-stress.sh delete mode 100644 basice2e/udb.yaml delete mode 100644 broadcast/- delete mode 100644 broadcast/betanet.txt delete mode 100644 broadcast/client-registrar.yaml delete mode 100644 broadcast/devnet.txt delete mode 100644 broadcast/gateway-1.yaml delete mode 100644 broadcast/gateway-2.yaml delete mode 100644 broadcast/gateway-3.yaml delete mode 100644 broadcast/gateway-4.yaml delete mode 100644 broadcast/gateway-5.yaml delete mode 100644 broadcast/mainnet.txt delete mode 100644 broadcast/network.config delete mode 100644 broadcast/noerrors.txt delete mode 100644 broadcast/permissioning.yaml delete mode 100644 broadcast/regCodes.json delete mode 100644 broadcast/release.txt delete mode 100755 broadcast/run.sh delete mode 100644 broadcast/server-1.yaml delete mode 100644 broadcast/server-2.yaml delete mode 100644 broadcast/server-3.yaml delete mode 100644 broadcast/server-4.yaml delete mode 100644 broadcast/server-5.yaml delete mode 100644 broadcast/tmp delete mode 100644 broadcast/udb.yaml delete mode 100644 broadcast/udbContact.bin delete mode 100644 broadcast/udbProto.json delete mode 100644 broadcast/whitelist.txt delete mode 100644 channels/betanet.txt delete mode 100644 channels/client-registrar.yaml delete mode 100644 channels/devnet.txt delete mode 100644 channels/gateway-4.yaml delete mode 100644 channels/gateway-5.yaml delete mode 100644 channels/mainnet.txt delete mode 100644 channels/noerrors.txt delete mode 100644 channels/permissioning.yaml delete mode 100644 channels/registration.json delete mode 100644 channels/release.txt delete mode 100755 channels/run.sh delete mode 100644 channels/tmp delete mode 100644 channels/udb.yaml delete mode 100644 channels/udbContact.bin delete mode 100644 channels/udbProto.json delete mode 100644 channels/whitelist.txt delete mode 100644 channelsFileTransfer/betanet.txt delete mode 100644 channelsFileTransfer/client-registrar.yaml delete mode 100644 channelsFileTransfer/devnet.txt delete mode 100644 channelsFileTransfer/gateway-1.yaml delete mode 100644 channelsFileTransfer/gateway-2.yaml delete mode 100644 channelsFileTransfer/gateway-3.yaml delete mode 100644 channelsFileTransfer/gateway-4.yaml delete mode 100644 channelsFileTransfer/gateway-5.yaml delete mode 100644 channelsFileTransfer/mainnet.txt delete mode 100644 channelsFileTransfer/network.config delete mode 100644 channelsFileTransfer/noerrors.txt delete mode 100644 channelsFileTransfer/permissioning.yaml delete mode 100644 channelsFileTransfer/regCodes.json delete mode 100644 channelsFileTransfer/registration.json delete mode 100644 channelsFileTransfer/release.txt delete mode 100755 channelsFileTransfer/run.sh delete mode 100644 channelsFileTransfer/server-1.yaml delete mode 100644 channelsFileTransfer/server-2.yaml delete mode 100644 channelsFileTransfer/server-3.yaml delete mode 100644 channelsFileTransfer/server-4.yaml delete mode 100644 channelsFileTransfer/server-5.yaml delete mode 100644 channelsFileTransfer/udb.yaml delete mode 100644 channelsFileTransfer/udbContact.bin delete mode 100644 channelsFileTransfer/udbProto.json delete mode 100644 channelsFileTransfer/whitelist.txt delete mode 100644 connect/betanet.txt delete mode 100644 connect/client-registrar.yaml delete mode 100644 connect/devnet.txt delete mode 100644 connect/gateway-1.yaml delete mode 100644 connect/gateway-2.yaml delete mode 100644 connect/gateway-3.yaml delete mode 100644 connect/gateway-4.yaml delete mode 100644 connect/gateway-5.yaml delete mode 100644 connect/mainnet.txt delete mode 100644 connect/network.config delete mode 100755 connect/network.sh delete mode 100644 connect/noerrors.txt delete mode 100644 connect/permissioning.yaml delete mode 100644 connect/regCodes.json delete mode 100644 connect/registration.json delete mode 100644 connect/release.txt delete mode 100755 connect/run.sh delete mode 100644 connect/server-1.yaml delete mode 100644 connect/server-2.yaml delete mode 100644 connect/server-3.yaml delete mode 100644 connect/server-4.yaml delete mode 100644 connect/server-5.yaml delete mode 100644 connect/udb.yaml delete mode 100644 connect/udbContact.bin delete mode 100644 connect/udbProto.json delete mode 100644 connect/whitelist.txt delete mode 100644 ephemeralRegistration/betanet.txt delete mode 100644 ephemeralRegistration/client-registrar.yaml delete mode 100644 ephemeralRegistration/devnet.txt delete mode 100644 ephemeralRegistration/gateway-1.yaml delete mode 100644 ephemeralRegistration/gateway-2.yaml delete mode 100644 ephemeralRegistration/gateway-3.yaml delete mode 100644 ephemeralRegistration/gateway-4.yaml delete mode 100644 ephemeralRegistration/gateway-5.yaml delete mode 100644 ephemeralRegistration/mainnet.txt delete mode 100644 ephemeralRegistration/network.config delete mode 100644 ephemeralRegistration/noerrors.txt delete mode 100644 ephemeralRegistration/permissioning.yaml delete mode 100644 ephemeralRegistration/regCodes.json delete mode 100644 ephemeralRegistration/registration.json delete mode 100644 ephemeralRegistration/release.txt delete mode 100755 ephemeralRegistration/run.sh delete mode 100644 ephemeralRegistration/server-1.yaml delete mode 100644 ephemeralRegistration/server-2.yaml delete mode 100644 ephemeralRegistration/server-3.yaml delete mode 100644 ephemeralRegistration/server-4.yaml delete mode 100644 ephemeralRegistration/server-5.yaml delete mode 100644 ephemeralRegistration/udb.yaml delete mode 100644 ephemeralRegistration/udbContact.bin delete mode 100644 ephemeralRegistration/udbProto.json delete mode 100644 ephemeralRegistration/whitelist.txt delete mode 100644 fileTransfer/- delete mode 100644 fileTransfer/LoremIpsum.txt delete mode 100644 fileTransfer/betanet.txt delete mode 100644 fileTransfer/clients.goldoutput/client110.txt delete mode 100644 fileTransfer/clients.goldoutput/client111.txt delete mode 100644 fileTransfer/devnet.txt delete mode 100644 fileTransfer/gateway-1.yaml delete mode 100644 fileTransfer/gateway-2.yaml delete mode 100644 fileTransfer/gateway-3.yaml delete mode 100644 fileTransfer/mainnet.txt delete mode 100644 fileTransfer/network.config delete mode 100644 fileTransfer/noerrors.txt delete mode 100644 fileTransfer/regCodes.json delete mode 100644 fileTransfer/registration.json delete mode 100644 fileTransfer/release.txt delete mode 100755 fileTransfer/run.sh delete mode 100644 fileTransfer/server-1.yaml delete mode 100644 fileTransfer/server-2.yaml delete mode 100644 fileTransfer/server-3.yaml delete mode 100644 fileTransfer/server-4.yaml delete mode 100644 fileTransfer/server-5.yaml delete mode 100644 fileTransfer/udb.yaml delete mode 100644 fileTransfer/udbContact.bin delete mode 100644 fileTransfer/udbProto.json delete mode 100644 fileTransfer/whitelist.txt delete mode 100644 gen/betanet.txt delete mode 100644 gen/client-registrar.yaml delete mode 100644 gen/devnet.txt delete mode 100644 gen/gateway.yaml delete mode 100644 gen/mainnet.txt delete mode 100644 gen/network.config delete mode 100644 gen/noerrors.txt delete mode 100644 gen/permissioning.yaml delete mode 100644 gen/registration.json delete mode 100644 gen/release.txt delete mode 100644 gen/server.yaml delete mode 100644 gen/udb.yaml delete mode 100644 gen/udbContact.bin delete mode 100644 gen/udbProto.json delete mode 100644 gen/whitelist.txt delete mode 100644 groupChat/- delete mode 100644 groupChat/betanet.txt delete mode 100644 groupChat/client-registrar.yaml delete mode 100644 groupChat/clients.goldoutput/client80.txt delete mode 100644 groupChat/clients.goldoutput/client81.txt delete mode 100644 groupChat/clients.goldoutput/client82.txt delete mode 100644 groupChat/devnet.txt delete mode 100644 groupChat/gateway-1.yaml delete mode 100644 groupChat/gateway-2.yaml delete mode 100644 groupChat/gateway-3.yaml delete mode 100644 groupChat/gateway-4.yaml delete mode 100644 groupChat/gateway-5.yaml delete mode 100644 groupChat/mainnet.txt delete mode 100644 groupChat/network.config delete mode 100755 groupChat/network.sh delete mode 100644 groupChat/noerrors.txt delete mode 100644 groupChat/permissioning.yaml delete mode 100644 groupChat/regCodes.json delete mode 100644 groupChat/registration.json delete mode 100644 groupChat/release.txt delete mode 100755 groupChat/run.sh delete mode 100644 groupChat/server-1.yaml delete mode 100644 groupChat/server-2.yaml delete mode 100644 groupChat/server-3.yaml delete mode 100644 groupChat/server-4.yaml delete mode 100644 groupChat/server-5.yaml delete mode 100644 groupChat/udb.yaml delete mode 100644 groupChat/udbContact.bin delete mode 100644 groupChat/udbProto.json delete mode 100644 groupChat/whitelist.txt delete mode 100644 localNetwork/README.md delete mode 100644 localNetwork/client-registrar.yaml delete mode 100644 localNetwork/configFileGeneration/gateway_template.yaml delete mode 100644 localNetwork/configFileGeneration/gen.py delete mode 100644 localNetwork/configFileGeneration/permissioning_template.yaml delete mode 100644 localNetwork/configFileGeneration/registration_template.json delete mode 100644 localNetwork/configFileGeneration/server_template.yaml delete mode 100644 localNetwork/gateway-0.yaml delete mode 100644 localNetwork/gateway-1.yaml delete mode 100644 localNetwork/gateway-2.yaml delete mode 100644 localNetwork/ndf.json delete mode 100644 localNetwork/permissioning-actual.yaml delete mode 100644 localNetwork/permissioning.yaml delete mode 100644 localNetwork/regCodes.json delete mode 100644 localNetwork/registration.json delete mode 100755 localNetwork/run.sh delete mode 100755 localNetwork/runpublic.sh delete mode 100644 localNetwork/server-0.yaml delete mode 100644 localNetwork/server-1.yaml delete mode 100644 localNetwork/server-2.yaml delete mode 100644 localNetwork/udb.yaml delete mode 100644 localNetwork/udbContact.bin delete mode 100644 localNetwork/udbProto.json delete mode 100644 localNetwork/whitelist.json rename {basice2e => network}/betanet.txt (100%) create mode 100644 network/cleanup.sh rename {fileTransfer => network}/client-registrar.yaml (88%) rename {basice2e => network}/devnet.txt (100%) rename {channels => network}/gateway-1.yaml (85%) rename {channels => network}/gateway-2.yaml (85%) rename {channels => network}/gateway-3.yaml (85%) rename {fileTransfer => network}/gateway-4.yaml (85%) rename {fileTransfer => network}/gateway-5.yaml (85%) rename {basice2e => network}/mainnet.txt (100%) rename {channels => network}/network.config (100%) rename {basice2e => network}/noerrors.txt (100%) rename {fileTransfer => network}/permissioning.yaml (86%) rename {channels => network}/regCodes.json (100%) rename {broadcast => network}/registration.json (100%) rename {basice2e => network}/release.txt (100%) rename {channels => network}/server-1.yaml (71%) rename {channels => network}/server-2.yaml (71%) rename {channels => network}/server-3.yaml (71%) rename {channels => network}/server-4.yaml (71%) rename {channels => network}/server-5.yaml (71%) create mode 100644 network/udb.yaml rename {basice2e => network}/udbContact.bin (100%) rename {basice2e => network}/udbProto.json (100%) rename {basice2e => network}/whitelist.txt (100%) delete mode 100644 singleUse/betanet.txt delete mode 100644 singleUse/client-registrar.yaml delete mode 100644 singleUse/clients.goldoutput/client52.txt delete mode 100644 singleUse/clients.goldoutput/client53.txt delete mode 100644 singleUse/devnet.txt delete mode 100644 singleUse/gateway-1.yaml delete mode 100644 singleUse/gateway-2.yaml delete mode 100644 singleUse/gateway-3.yaml delete mode 100644 singleUse/gateway-4.yaml delete mode 100644 singleUse/gateway-5.yaml delete mode 100644 singleUse/mainnet.txt delete mode 100644 singleUse/network.config delete mode 100644 singleUse/noerrors.txt delete mode 100644 singleUse/permissioning.yaml delete mode 100644 singleUse/regCodes.json delete mode 100644 singleUse/registration.json delete mode 100644 singleUse/release.txt delete mode 100755 singleUse/run.sh delete mode 100644 singleUse/server-1.yaml delete mode 100644 singleUse/server-2.yaml delete mode 100644 singleUse/server-3.yaml delete mode 100644 singleUse/server-4.yaml delete mode 100644 singleUse/server-5.yaml delete mode 100644 singleUse/udb.yaml delete mode 100644 singleUse/udbContact.bin delete mode 100644 singleUse/udbProto.json delete mode 100644 singleUse/whitelist.txt create mode 100755 start.sh create mode 100755 stop.sh create mode 100644 tests/basice2e/.DS_Store rename {basice2e => tests/basice2e}/clients.goldoutput/client100.txt (100%) rename {basice2e => tests/basice2e}/clients.goldoutput/client101.txt (100%) rename {basice2e => tests/basice2e}/clients.goldoutput/client120.txt (100%) rename {basice2e => tests/basice2e}/clients.goldoutput/client121.txt (100%) rename {basice2e => tests/basice2e}/clients.goldoutput/client25.txt (100%) rename {basice2e => tests/basice2e}/clients.goldoutput/client26.txt (100%) rename {basice2e => tests/basice2e}/clients.goldoutput/client42.txt (100%) rename {basice2e => tests/basice2e}/clients.goldoutput/client43.txt (100%) rename {basice2e => tests/basice2e}/clients.goldoutput/client44.txt (100%) rename {basice2e => tests/basice2e}/clients.goldoutput/client46.txt (100%) rename {basice2e => tests/basice2e}/clients.goldoutput/client85.txt (100%) rename {basice2e => tests/basice2e}/clients.goldoutput/client86.txt (100%) create mode 100755 tests/basice2e/run.sh rename {basice2e => tests/basice2e_local}/clients.goldoutput/client18.txt (100%) rename {basice2e => tests/basice2e_local}/clients.goldoutput/client18_rekey.txt (100%) rename {basice2e => tests/basice2e_local}/clients.goldoutput/client20.txt (100%) rename {basice2e => tests/basice2e_local}/clients.goldoutput/client21.txt (100%) rename {basice2e => tests/basice2e_local}/clients.goldoutput/client33.txt (100%) rename {basice2e => tests/basice2e_local}/clients.goldoutput/client34.txt (100%) rename {basice2e => tests/basice2e_local}/clients.goldoutput/client45.txt (100%) rename {basice2e => tests/basice2e_local}/clients.goldoutput/client56.txt (100%) rename {basice2e => tests/basice2e_local}/clients.goldoutput/client67.txt (100%) rename {basice2e => tests/basice2e_local}/clients.goldoutput/client74.txt (100%) rename {basice2e => tests/basice2e_local}/clients.goldoutput/client9.txt (100%) rename {basice2e => tests/basice2e_local}/clients.goldoutput/client9_rekey.txt (100%) create mode 100644 tests/basice2e_local/run.sh rename {broadcast => tests/broadcast}/clients.goldoutput/client130.txt (100%) rename {broadcast => tests/broadcast}/clients.goldoutput/client131.txt (100%) rename {broadcast => tests/broadcast}/clients.goldoutput/client132.txt (100%) rename {broadcast => tests/broadcast}/clients.goldoutput/client133.txt (100%) rename {broadcast => tests/broadcast}/clients.goldoutput/client134.txt (100%) create mode 100755 tests/broadcast/run.sh rename {channels => tests/channels}/clients.goldoutput/client500.txt (100%) rename {channels => tests/channels}/clients.goldoutput/client501.txt (100%) rename {channels => tests/channels}/clients.goldoutput/client502.txt (100%) create mode 100755 tests/channels/run.sh rename {channelsFileTransfer => tests/channelsFileTransfer}/clients.goldoutput/channel0_download.txt (100%) rename {channelsFileTransfer => tests/channelsFileTransfer}/clients.goldoutput/channel1_download.txt (100%) rename {channelsFileTransfer => tests/channelsFileTransfer}/clients.goldoutput/channel2_download.txt (100%) rename {channelsFileTransfer => tests/channelsFileTransfer}/clients.goldoutput/channel3_download.txt (100%) rename {channelsFileTransfer => tests/channelsFileTransfer}/clients.goldoutput/client0.txt (100%) rename {channelsFileTransfer => tests/channelsFileTransfer}/clients.goldoutput/client1.txt (100%) rename {channelsFileTransfer => tests/channelsFileTransfer}/clients.goldoutput/client2.txt (100%) rename {channelsFileTransfer => tests/channelsFileTransfer}/clients.goldoutput/client3.txt (100%) create mode 100755 tests/channelsFileTransfer/run.sh rename {connect => tests/connect}/clients.goldoutput/client200.txt (100%) rename {connect => tests/connect}/clients.goldoutput/client201.txt (100%) rename {connect => tests/connect}/clients.goldoutput/client202.txt (100%) rename {connect => tests/connect}/clients.goldoutput/client203.txt (100%) rename {connect => tests/connect}/clients.goldoutput/client204.txt (100%) rename {connect => tests/connect}/clients.goldoutput/client205.txt (100%) rename {connect => tests/connect}/clients.goldoutput/client206.txt (100%) rename {connect => tests/connect}/clients.goldoutput/client207.txt (100%) create mode 100755 tests/connect/run.sh rename {basice2e => tests/dm}/clients.goldoutput/client1.txt (100%) rename {basice2e => tests/dm}/clients.goldoutput/client2.txt (100%) create mode 100644 tests/dm/run.sh rename {ephemeralRegistration => tests/ephemeralRegistration}/clients.goldoutput/client601.txt (100%) rename {ephemeralRegistration => tests/ephemeralRegistration}/clients.goldoutput/client602.txt (100%) create mode 100755 tests/ephemeralRegistration/run.sh rename {basice2e/clients.net_goldoutput => tests/fileTransfer/clients.goldoutput}/client110.txt (100%) rename {basice2e/clients.net_goldoutput => tests/fileTransfer/clients.goldoutput}/client111.txt (100%) create mode 100755 tests/fileTransfer/run.sh rename {basice2e/clients.net_goldoutput => tests/groupChat/clients.goldoutput}/client80.txt (100%) rename {basice2e/clients.net_goldoutput => tests/groupChat/clients.goldoutput}/client81.txt (100%) rename {basice2e/clients.net_goldoutput => tests/groupChat/clients.goldoutput}/client82.txt (100%) create mode 100755 tests/groupChat/run.sh rename {basice2e => tests/historical}/clients.goldoutput/client22.txt (100%) rename {basice2e => tests/historical}/clients.goldoutput/client23.txt (100%) rename {basice2e => tests/historical}/clients.goldoutput/client35.txt (100%) rename {basice2e => tests/historical}/clients.goldoutput/client36.txt (100%) create mode 100644 tests/historical/run.sh rename {basice2e/clients.net_goldoutput => tests/singleUse/clients.goldoutput}/client52.txt (100%) rename {basice2e/clients.net_goldoutput => tests/singleUse/clients.goldoutput}/client53.txt (100%) create mode 100755 tests/singleUse/run.sh rename {ud => tests/ud}/clients.goldoutput/client13-2.txt (100%) rename {ud => tests/ud}/clients.goldoutput/client13.txt (100%) rename {ud => tests/ud}/clients.goldoutput/client31.txt (100%) create mode 100755 tests/ud/run.sh delete mode 100644 ud/- delete mode 100644 ud/betanet.txt delete mode 100644 ud/client-registrar.yaml delete mode 100644 ud/devnet.txt delete mode 100644 ud/gateway-1.yaml delete mode 100644 ud/gateway-2.yaml delete mode 100644 ud/gateway-3.yaml delete mode 100644 ud/gateway-4.yaml delete mode 100644 ud/gateway-5.yaml delete mode 100644 ud/mainnet.txt delete mode 100644 ud/network.config delete mode 100755 ud/network.sh delete mode 100644 ud/noerrors.txt delete mode 100644 ud/permissioning.yaml delete mode 100644 ud/regCodes.json delete mode 100644 ud/registration.json delete mode 100644 ud/release.txt delete mode 100755 ud/run.sh delete mode 100644 ud/server-1.yaml delete mode 100644 ud/server-2.yaml delete mode 100644 ud/server-3.yaml delete mode 100644 ud/server-4.yaml delete mode 100644 ud/server-5.yaml delete mode 100644 ud/udb.yaml delete mode 100644 ud/udbContact.bin delete mode 100644 ud/udbProto.json delete mode 100644 ud/whitelist.txt diff --git a/.gitignore b/.gitignore index a8965ef..7d6a075 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ bin/* blob* junk* *.wasm -tmp +*tmp # Vim swap files *.swp diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 45f2ce9..3c7a458 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -69,7 +69,7 @@ installbinaries: paths: - bin/ -basice2e: +basice2e_local: stage: tests tags: # - gpu @@ -77,7 +77,6 @@ basice2e: script: - mkdir -p ~/.elixxir - echo $PWD - - cd basice2e - rm -fr results - rm -fr results-cpu - rm -fr results-gpu @@ -86,26 +85,23 @@ basice2e: # - mv results results-cpu # - sleep 60 - mkdir -p /opt/xxnetwork/lib - - ./run.sh + - ./run.sh --run basice2e_local - mv results results-gpu - - cd .. artifacts: when: always expire_in: '1 day' paths: - - basice2e/ + - results/ - bin/ -channels: +basice2e: stage: tests tags: - #- gpu + # - gpu image: $DOCKER_IMAGE script: - mkdir -p ~/.elixxir - echo $PWD - - cd channels - - cp ../network/network.sh network.sh - rm -fr results - rm -fr results-cpu - rm -fr results-gpu @@ -114,60 +110,100 @@ channels: # - mv results results-cpu # - sleep 60 - mkdir -p /opt/xxnetwork/lib - - ./run.sh + - ./run.sh --run basice2e - mv results results-gpu - - if [ -f network.sh ]; then rm network.sh; fi - - cd .. artifacts: when: always expire_in: '1 day' paths: - - channels/ + - results/ - bin/ -channelsFileTransfer: + +dm: stage: tests image: $DOCKER_IMAGE script: - mkdir -p ~/.elixxir - echo $PWD - - cd channelsFileTransfer - - cp ../network/network.sh network.sh - rm -fr results - - ./run.sh - - if [ -f network.sh ]; then rm network.sh; fi - - cd .. + - ./run.sh --run dm artifacts: when: always expire_in: '1 day' paths: - - channelsFileTransfer/ + - results/ - bin/ -fileTransfer: + +historical: + stage: tests + image: $DOCKER_IMAGE + script: + - mkdir -p ~/.elixxir + - echo $PWD + - rm -fr results + - ./run.sh --run historical + artifacts: + when: always + expire_in: '1 day' + paths: + - results/ + - bin/ + +channels: stage: tests tags: - #- gpu + #- gpu image: $DOCKER_IMAGE script: - mkdir -p ~/.elixxir - echo $PWD - - cd fileTransfer - - cp ../network/network.sh network.sh + - rm -fr results + - rm -fr results-cpu + - rm -fr results-gpu # - ls -lha # - ./run.sh # - mv results results-cpu # - sleep 60 - mkdir -p /opt/xxnetwork/lib - - ./run.sh + - ./run.sh --run channels - mv results results-gpu - - if [ -f network.sh ]; then rm network.sh; fi - - cd .. artifacts: when: always expire_in: '1 day' paths: - - fileTransfer/ + - results/ + - bin/ + +channelsFileTransfer: + stage: tests + image: $DOCKER_IMAGE + script: + - mkdir -p ~/.elixxir + - echo $PWD + - rm -fr results + - ./run.sh --run channelsFileTransfer + artifacts: + when: always + expire_in: '1 day' + paths: + - results/ + - bin/ + +fileTransfer: + stage: tests + image: $DOCKER_IMAGE + script: + - mkdir -p ~/.elixxir + - echo $PWD + - rm -fr results + - ./run.sh --run fileTransfer + artifacts: + when: always + expire_in: '1 day' + paths: + - results/ - bin/ connect: @@ -176,126 +212,99 @@ connect: script: - mkdir -p ~/.elixxir - echo $PWD - - cd connect #modify with your package name - - cp ../network/network.sh network.sh - rm -fr results - - ./run.sh - - if [ -f network.sh ]; then rm network.sh; fi - - cd .. + - ./run.sh --run connect artifacts: when: always expire_in: '1 day' paths: - - connect/ #modify with your package name + - results/ - bin/ + broadcast: stage: tests image: $DOCKER_IMAGE script: - mkdir -p ~/.elixxir - echo $PWD - - cd broadcast #modify with your package name - - cp ../network/network.sh network.sh - rm -fr results - - ./run.sh - - if [ -f network.sh ]; then rm network.sh; fi - - cd .. + - ./run.sh --run broadcast artifacts: when: always expire_in: '1 day' paths: - - broadcast/ #modify with your package name + - results/ - bin/ + singleUse: stage: tests image: $DOCKER_IMAGE script: - mkdir -p ~/.elixxir - echo $PWD - - cd singleUse #modify with your package name - - cp ../network/network.sh network.sh - rm -fr results - - ./run.sh - - if [ -f network.sh ]; then rm network.sh; fi - - cd .. + - ./run.sh --run singleUse artifacts: when: always expire_in: '1 day' paths: - - singleUse/ #modify with your package name + - results/ - bin/ + ephemeralRegistration: stage: tests - tags: - #- gpu image: $DOCKER_IMAGE script: - mkdir -p ~/.elixxir - echo $PWD - - cd ephemeralRegistration #modify with your package name - - cp ../network/network.sh network.sh - rm -fr results - - rm -fr results-cpu - - rm -fr results-gpu - # - ls -lha - # - ./run.sh - # - mv results results-cpu - # - sleep 60 - - mkdir -p /opt/xxnetwork/lib - - ./run.sh - - if [ -f network.sh ]; then rm network.sh; fi - - cd .. + - ./run.sh --run ephemeralRegistration artifacts: when: always expire_in: '1 day' paths: - - ephemeralRegistration/ #modify with your package name + - results/ - bin/ + ud: #modify with your package name stage: tests image: $DOCKER_IMAGE script: - mkdir -p ~/.elixxir - echo $PWD - - cd ud #modify with your package name - - cp ../network/network.sh network.sh - rm -fr results - - ./run.sh - - if [ -f network.sh ]; then rm network.sh; fi - - cd .. + - ./run.sh --run ud artifacts: when: always expire_in: '1 day' paths: - - ud/ #modify with your package name + - results/ - bin/ + groupChat: #modify with your package name stage: tests image: $DOCKER_IMAGE script: - mkdir -p ~/.elixxir - echo $PWD - - cd groupChat #modify with your package name - - cp ../network/network.sh network.sh - rm -fr results - - ./run.sh - - if [ -f network.sh ]; then rm network.sh; fi - - cd .. + - ./run.sh --run groupChat artifacts: when: always expire_in: '1 day' paths: - - groupChat/ #modify with your package name + - results/ - bin/ + basice2e_protonet: stage: tests image: $DOCKER_IMAGE diff --git a/channelsFileTransfer/LoremIpsum.txt b/LoremIpsum.txt similarity index 100% rename from channelsFileTransfer/LoremIpsum.txt rename to LoremIpsum.txt diff --git a/README_V2.md b/README_V2.md new file mode 100644 index 0000000..57b8ca0 --- /dev/null +++ b/README_V2.md @@ -0,0 +1,111 @@ +# Integration V2 (post-cleanup) + +The integration test has been split into components and refactored to make this +repository both easier to use and more modular. It retains all the old +functionality with some helpful additions. + +## Repository Structure + +``` text +integration/ +├── run.sh # Basic integration runner +├── start.sh # More advanced runner for continuous/simultaneous testing +├── stop.sh # Cleanup for start.sh +├── tests/ # Tests directory contains individual tests which can be run by the top-level scripts +│ ├── basice2e_local # Test names correspond to the directory name +│ │ ├── run.sh # Each test must contain a run.sh script and clients.goldoutput directory +│ │ └── clients.goldoutput/ +│ ├── channels +│ └── ... +├── network/ # This network package is used across all tests +│ ├── network.sh # network and/or cleanup files should be sourced into files as always +│ ├── cleanup.sh +│ └── [network configs] +└── results/ # This is generated by running tests and is not in source control + ├── network # Local network outputs to results/network + ├── basice2e_local + │ ├── clients/ # Raw client outputs for this test + │ ├── clients-cleaned/ # Cleaned client outputs for this test + │ └── testout.txt # Raw console output for this test + ├── ... # Results contain directories of client logs for each test run + └── testreport.txt +``` + +## Running Integration Tests + +Integration tests can be run as they always have been, with some small changes. + +All testing must now run through `run.sh` in the root directory. By default, +the script will run all tests in sequence. it accepts an optional argument for +the environment (`mainnet`, `devnet`, `protonet`). + +```shell +./run.sh [mainnet|devnet|protonet] +``` + +It supports an additional named argument for running single tests or subsets as +well. + +```shell +./run.sh --run [testname] +``` + +Use `run.sh help` for more information on the usage. + +## Advanced Integration Testing + +Also included in the repo are the scripts `start.sh` and `stop.sh`. These can +be used to the same effect as the single runner, with some notable differences. + +Running `start.sh` will check for a live network in the expected location, and +will connect to it if found. This is somewhat intelligent, but not well tested yet. +It will not shut down the network when the test is finished, leaving it active +for other local testing if needed. To shut down the network, use the `stop.sh` +script. The help commands on each script contain more detailed information on +usage. + +## Adding New Tests + +The `generatePackage.py` script has been deprecated by this update. While it may +be updated in the future, adding new tests is not nearly as complicated anymore. + +A template for `run.sh` can be found in `gen/`. To create a new test, add a directory +to `tests/` with the desired test name. Copy the `run.sh` file from `gen/`, and +add a `clients.goldoutput/` directory to your new test package. You can now +add test code to `tests/{your_test_name}/run.sh`, and run it using the `--run` +argument with `run.sh` in the root directory. + +New tests must be separately added to the list in `run.sh` to be run as part of +the full suite. Additionally, a new step must be added to the `.gitlab_ci` file +for it to run as part of continuous integration. An example of this can be found +below: + +```yaml +your_test_name: + stage: tests + image: $DOCKER_IMAGE + script: + - mkdir -p ~/.elixxir + - echo $PWD + - rm -fr results + - ./run.sh --run { your_test_name_here } + artifacts: + when: always + expire_in: '1 day' + paths: + - results/ + - bin/ +``` + +## Planned Upgrades + +Leaving this section as a note for the future, some things that are out of scope +for the time being but would improve the quality of this repo. + +- Finish splitting up basice2e +- bring back generatePackage.py? (may not be needed, this is fairly easy now) +- CI testing using single network +- Suppress individual test output since this now goes to a file, add verbose flag for users who want the old behavior +- Top-level script code review + - Potential rewrite/wrapper in python? + diff --git a/basice2e/- b/basice2e/- deleted file mode 100644 index fd04e7b..0000000 --- a/basice2e/- +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)AAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADrgZ7Ugdw/BAr6aVzSIM900EqY40/W5o3YY6wA0nxEnY24HWzbZb2dJZzBKjFpByuwIrb3lCZjB7YYO5dby5dVfTO3v2zz39gYQgevQE+l7ldt1Zs+WRF+Aj8u62ne0ueiH+3LON4GKg7zexrn85M0xvUoLuhmcmlwMWkhKNFHFINj6YinnQtVW0yA/B749mjacXwFnNB/mfy87Q/sRxGTvTELegB8u4whqJe3TuTicNnclSyWtDBZs7v1THRlw+sMNVR6jf4Kz/8UPUCEWRReIrn8wGqwLragnxCN2QYmvGhY55gfdvJaPLULG38I5FKeHVALI4YFmJJmIMv+uVBY9ftYV/lX+hUrchazXeZ+MP1RSINKQkLyBhEStyHevxEpfWNltkb0fX+x+HLz1376VsOIHPVYNpXZcAsOz7B6yy0NYJudGjJfke63BbGi+ZIKdOVc4NDH0HRJnOeNlmKuy67WziPL0J2IxmNJaU2eoPjeL+64mhSnE5DulwwVpCruNJ8Wee82WJFYcr24WG/nGT/0AfKohk1+gAAAgA7UzPW3Wfs4l75kY4xsCao1A==xxc> \ No newline at end of file diff --git a/basice2e/README.md b/basice2e/README.md deleted file mode 100644 index 0884ab5..0000000 --- a/basice2e/README.md +++ /dev/null @@ -1,35 +0,0 @@ -= Basic End-to-End Integration Test (basice2e) - -This test runs several servers and clients as a smoke test against the -system. We run a multi node, multi message, multi user test of the -system over multiple rounds all over network traffic. The basic -structure is as follows: - -* 5 Nodes, BatchSize of 4 -* 5 Gateways, each connected to its own node -* User Discovery Bot -* Channel Bot -* Client sending 2 dummy messages per second, in order to fill batches - -Then, the following tests are performed: - -* 2 Clients (9 and 18) register with the system and UDB by Email - * These users look each other up on UDB - * Test is successful if the first line of gold output file matches -* The same 2 clients exchange E2E encrypted messages for 65s at a rate of 0.1msg/s - * This will result in clients sending 6 messages to each other - * It will also test that 2 rekeys on each side happen properly - * Test is successful if all the aforementioned messages are accounted for. -This is done by grep'ing the logs for sent messages, received messages, sent rekeys -and received rekeys, and comparing to gold output of 6, 6, 2, 2 -* 4 Clients are started at two separate times and send messages to channel and to each other - * 2 messages to itself - * 1 message to each of the other clients - * Test is successful if all gold output files match for client conversations: -4-5, 5-6, 6-7, 7-4 - -For now, we do nothing on assertion of crypto, we just assume -api-level compliance with sending and receiving messages. - -This test does not produce any results, but it does produce logs for each -server and client. diff --git a/basice2e/client-registrar.yaml b/basice2e/client-registrar.yaml deleted file mode 100644 index 8187c68..0000000 --- a/basice2e/client-registrar.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# ================================== -# Client Registrar Configuration -# ================================== - -# Log message level (0 = info, 1 = debug, >1 = trace) -logLevel: 0 -# Path to log file -logPath: "results/client-registrar.log" - -# Public address, used in NDF it gives to client -publicAddress: "0.0.0.0:11421" -# The listening port of this server -port: 11421 - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -# Maximum number of connections per period -userRegCapacity: 1000 -# How often the number of connections is reset -userRegLeakPeriod: "24h" - -# Database connection information -dbUsername: "cmix" -dbPassword: "" -dbName: "cmix_server" -dbAddress: "" - -# List of client codes to be added to the database (for testing) -clientRegCodes: - - "AAAA" - - "BBBB" - - "CCCC" diff --git a/basice2e/client-session-tests.sh b/basice2e/client-session-tests.sh deleted file mode 100755 index 8e5d2be..0000000 --- a/basice2e/client-session-tests.sh +++ /dev/null @@ -1,108 +0,0 @@ -# Client Session Tests: this script will run the "old" `client` binary to init session files and setup the environment -# for the "new" `client-release` binary to run tests on the old session files. - -set -e -#set -o xtrace - -# --- Define variables to use for the test & local network --- - -DEBUGLEVEL=${DEBUGLEVEL-1} -CLIENTOPTS="--password hello --ndf results/ndf.json --sendDelay 100 --waitTimeout 360 --unsafe-channel-creation -v $DEBUGLEVEL" -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -UDBOUT=results/udb-console.txt - -# --- Setup a local network --- - -rm -rf client*.log blob* rick*.bin ben*.bin -rm -rf results.bak results -mkdir results - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS - -# Start the network -source network.sh - -echo "DOWNLOADING TLS Cert..." -CMD="openssl s_client -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -# ------------------------------------------------------------------------------ -# TESTS BEGIN BELOW -# ------------------------------------------------------------------------------ - -# --- Pre-canned messaging to self --- -timeout 240s ../bin/client --password hello --ndf results/ndf.json --sendDelay 100 --waitTimeout 360 --unsafe-channel-creation -v 1 -l client9-master.log --sendCount 2 --receiveCount 2 -s blob9/blob9 --sendid 9 --destid 9 -m "Hi 9->9, with E2E Encryption" -timeout 240s ../bin/client-release --force-legacy --password hello --ndf results/ndf.json --sendDelay 100 --waitTimeout 360 --unsafe-channel-creation -v 1 -l client9-release.log --sendCount 2 --receiveCount 2 -s blob9/blob9 --sendid 9 --destid 9 -m "Hi 9->9, with E2E Encryption" - -# --- Messaging to another use, E2E --- - -# Init storage and request an E2E channel with each other -echo "SENDING E2E MESSAGES TO NEW USERS..." -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l client42-master-init.log -s blob42 --writeContact rick42-contact.bin --unsafe -m \"Hello from Rick42 to myself, without E2E Encryption\"" -eval $CLIENTCMD || true & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l client43-master-init.log -s blob43 --writeContact ben43-contact.bin --destfile rick42-contact.bin --send-auth-request --sendCount 0 --receiveCount 0" -eval $CLIENTCMD || true & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" - -echo "Waiting for contact files to be created..." -while [ ! -s ben43-contact.bin ]; do - sleep 1 -done - -# Get the user's IDs -TMPID=$(cat client42-master-init.log | grep -a "User\:" | awk -F' ' '{print $5}') -RICKID=${TMPID} -echo "RICK ID: $RICKID" -TMPID=$(cat client43-master-init.log | grep -a "User\:" | awk -F' ' '{print $5}') -BENID=${TMPID} -echo "BEN ID: $BENID" - -# Confirm channel with each other -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l client42-master-confirm.log -s blob42 --destfile ben43-contact.bin --sendCount 0 --receiveCount 0" -eval $CLIENTCMD || true & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -# Send 5 messages to each other -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l client42-master-send.log -s blob42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" -eval $CLIENTCMD || true & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l client43-master-send.log -s blob43 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\"" -eval $CLIENTCMD || true & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -# Send 5 messages to each other with new client -CLIENTCMD="timeout 360s ../bin/client-release $CLIENTOPTS -l client42-release-send.log -s blob42 --force-legacy --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" -eval $CLIENTCMD || true & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 360s ../bin/client-release $CLIENTOPTS -l client43-release-send.log -s blob43 --force-legacy --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\"" -eval $CLIENTCMD || true & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 diff --git a/basice2e/clients.net_goldoutput/client100.txt b/basice2e/clients.net_goldoutput/client100.txt deleted file mode 100644 index bc8b717..0000000 --- a/basice2e/clients.net_goldoutput/client100.txt +++ /dev/null @@ -1,66 +0,0 @@ - -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: Hello from Niamh101, with E2E Encryption -Message received: type is KeyExchangeConfirm -Message received: type is KeyExchangeTrigger -Received 0 -Received 0 -Received 20 -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption -Sent: Hello from Jake100, with E2E Encryption diff --git a/basice2e/clients.net_goldoutput/client101.txt b/basice2e/clients.net_goldoutput/client101.txt deleted file mode 100644 index c8de02f..0000000 --- a/basice2e/clients.net_goldoutput/client101.txt +++ /dev/null @@ -1,67 +0,0 @@ -Adding -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: Hello from Jake100, with E2E Encryption -Message received: type is KeyExchangeConfirm -Message received: type is KeyExchangeTrigger -Received 0 -Received 20 -Received 20 -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -Sent: Hello from Niamh101, with E2E Encryption -WARNING: unsafe channel creation enabled diff --git a/basice2e/clients.net_goldoutput/client120.txt b/basice2e/clients.net_goldoutput/client120.txt deleted file mode 100644 index f0fe55c..0000000 --- a/basice2e/clients.net_goldoutput/client120.txt +++ /dev/null @@ -1,29 +0,0 @@ - - -Message received: Hello from Client120 to myself, without E2E Encryption -Message received: Hello from Client121, with E2E Encryption -Message received: Hello from Client121, with E2E Encryption -Message received: Hello from Client121, with E2E Encryption -Message received: Hello from Client121, with E2E Encryption -Message received: Hello from Client121, with E2E Encryption -Message received: Hello from Client121, with E2E Encryption after 121 restoring backup -Message received: Hello from Client121, with E2E Encryption after 121 restoring backup -Message received: Hello from Client121, with E2E Encryption after 121 restoring backup -Message received: Hello from Client121, with E2E Encryption after 121 restoring backup -Message received: Hello from Client121, with E2E Encryption after 121 restoring backup -Received 0 -Received 0 -Received 1 -Received 5 -Received 5 -Sent: Hello from Client120 to myself, without E2E Encryption -Sent: Hello from Client120, with E2E Encryption -Sent: Hello from Client120, with E2E Encryption -Sent: Hello from Client120, with E2E Encryption -Sent: Hello from Client120, with E2E Encryption -Sent: Hello from Client120, with E2E Encryption -Sent: Hello from Client120, with E2E Encryption after 121 restoring backup -Sent: Hello from Client120, with E2E Encryption after 121 restoring backup -Sent: Hello from Client120, with E2E Encryption after 121 restoring backup -Sent: Hello from Client120, with E2E Encryption after 121 restoring backup -Sent: Hello from Client120, with E2E Encryption after 121 restoring backup diff --git a/basice2e/clients.net_goldoutput/client121.txt b/basice2e/clients.net_goldoutput/client121.txt deleted file mode 100644 index 2de032e..0000000 --- a/basice2e/clients.net_goldoutput/client121.txt +++ /dev/null @@ -1,29 +0,0 @@ -Adding -Backup update received. -Backup update received. -Message received: Hello from Client120, with E2E Encryption -Message received: Hello from Client120, with E2E Encryption -Message received: Hello from Client120, with E2E Encryption -Message received: Hello from Client120, with E2E Encryption -Message received: Hello from Client120, with E2E Encryption -Message received: Hello from Client120, with E2E Encryption after 121 restoring backup -Message received: Hello from Client120, with E2E Encryption after 121 restoring backup -Message received: Hello from Client120, with E2E Encryption after 121 restoring backup -Message received: Hello from Client120, with E2E Encryption after 121 restoring backup -Message received: Hello from Client120, with E2E Encryption after 121 restoring backup -Received 0 -Received 0 -Received 0 -Received 5 -Received 5 -Sent: Hello from Client121, with E2E Encryption -Sent: Hello from Client121, with E2E Encryption -Sent: Hello from Client121, with E2E Encryption -Sent: Hello from Client121, with E2E Encryption -Sent: Hello from Client121, with E2E Encryption -Sent: Hello from Client121, with E2E Encryption after 121 restoring backup -Sent: Hello from Client121, with E2E Encryption after 121 restoring backup -Sent: Hello from Client121, with E2E Encryption after 121 restoring backup -Sent: Hello from Client121, with E2E Encryption after 121 restoring backup -Sent: Hello from Client121, with E2E Encryption after 121 restoring backup -WARNING: unsafe channel creation enabled diff --git a/basice2e/clients.net_goldoutput/client22.txt b/basice2e/clients.net_goldoutput/client22.txt deleted file mode 100644 index e69de29..0000000 diff --git a/basice2e/clients.net_goldoutput/client23.txt b/basice2e/clients.net_goldoutput/client23.txt deleted file mode 100644 index e69de29..0000000 diff --git a/basice2e/clients.net_goldoutput/client25.txt b/basice2e/clients.net_goldoutput/client25.txt deleted file mode 100644 index 4f0e446..0000000 --- a/basice2e/clients.net_goldoutput/client25.txt +++ /dev/null @@ -1,29 +0,0 @@ - -Message received: Hello from Jonah26, with E2E Encryption -Message received: Hello from Jonah26, with E2E Encryption -Message received: Hello from Jonah26, with E2E Encryption -Message received: Hello from Jonah26, with E2E Encryption -Message received: Hello from Jonah26, with E2E Encryption -Message received: Hello from Jonah26, with E2E Encryption -Message received: Hello from Jonah26, with E2E Encryption -Message received: Hello from Jonah26, with E2E Encryption -Message received: Hello from Jonah26, with E2E Encryption -Message received: Hello from Jonah26, with E2E Encryption -Message received: Hello from Josh25 to myself, without E2E Encryption -Received 0 -Received 0 -Received 0 -Received 1 -Received 5 -Received 5 -Sent: Hello from Josh25 to myself, without E2E Encryption -Sent: Hello from Josh25, with E2E Encryption -Sent: Hello from Josh25, with E2E Encryption -Sent: Hello from Josh25, with E2E Encryption -Sent: Hello from Josh25, with E2E Encryption -Sent: Hello from Josh25, with E2E Encryption -Sent: Hello from Josh25, with E2E Encryption -Sent: Hello from Josh25, with E2E Encryption -Sent: Hello from Josh25, with E2E Encryption -Sent: Hello from Josh25, with E2E Encryption -Sent: Hello from Josh25, with E2E Encryption diff --git a/basice2e/clients.net_goldoutput/client26.txt b/basice2e/clients.net_goldoutput/client26.txt deleted file mode 100644 index 12a3e89..0000000 --- a/basice2e/clients.net_goldoutput/client26.txt +++ /dev/null @@ -1,27 +0,0 @@ -Adding -Message received: Hello from Josh25, with E2E Encryption -Message received: Hello from Josh25, with E2E Encryption -Message received: Hello from Josh25, with E2E Encryption -Message received: Hello from Josh25, with E2E Encryption -Message received: Hello from Josh25, with E2E Encryption -Message received: Hello from Josh25, with E2E Encryption -Message received: Hello from Josh25, with E2E Encryption -Message received: Hello from Josh25, with E2E Encryption -Message received: Hello from Josh25, with E2E Encryption -Message received: Hello from Josh25, with E2E Encryption -Received 0 -Received 0 -Received 0 -Received 5 -Received 5 -Sent: Hello from Jonah26, with E2E Encryption -Sent: Hello from Jonah26, with E2E Encryption -Sent: Hello from Jonah26, with E2E Encryption -Sent: Hello from Jonah26, with E2E Encryption -Sent: Hello from Jonah26, with E2E Encryption -Sent: Hello from Jonah26, with E2E Encryption -Sent: Hello from Jonah26, with E2E Encryption -Sent: Hello from Jonah26, with E2E Encryption -Sent: Hello from Jonah26, with E2E Encryption -Sent: Hello from Jonah26, with E2E Encryption -WARNING: unsafe channel creation enabled diff --git a/basice2e/clients.net_goldoutput/client33.txt b/basice2e/clients.net_goldoutput/client33.txt deleted file mode 100644 index 729c498..0000000 --- a/basice2e/clients.net_goldoutput/client33.txt +++ /dev/null @@ -1,11 +0,0 @@ -Message received: Hello from 2, without E2E Encryption -Message received: Hello from 2, without E2E Encryption -Message received: Hello from 2, without E2E Encryption -Message received: Hello from 2, without E2E Encryption -Message received: Hello from 2, without E2E Encryption -Received 5 -Sent: Hello from 1, without E2E Encryption -Sent: Hello from 1, without E2E Encryption -Sent: Hello from 1, without E2E Encryption -Sent: Hello from 1, without E2E Encryption -Sent: Hello from 1, without E2E Encryption diff --git a/basice2e/clients.net_goldoutput/client34.txt b/basice2e/clients.net_goldoutput/client34.txt deleted file mode 100644 index aa50193..0000000 --- a/basice2e/clients.net_goldoutput/client34.txt +++ /dev/null @@ -1,11 +0,0 @@ -Message received: Hello from 1, without E2E Encryption -Message received: Hello from 1, without E2E Encryption -Message received: Hello from 1, without E2E Encryption -Message received: Hello from 1, without E2E Encryption -Message received: Hello from 1, without E2E Encryption -Received 5 -Sent: Hello from 2, without E2E Encryption -Sent: Hello from 2, without E2E Encryption -Sent: Hello from 2, without E2E Encryption -Sent: Hello from 2, without E2E Encryption -Sent: Hello from 2, without E2E Encryption diff --git a/basice2e/clients.net_goldoutput/client42.txt b/basice2e/clients.net_goldoutput/client42.txt deleted file mode 100644 index 573cfdc..0000000 --- a/basice2e/clients.net_goldoutput/client42.txt +++ /dev/null @@ -1,75 +0,0 @@ - - -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Ben43, with E2E Encryption -Message received: Hello from Rick42 to myself, without E2E Encryption -Message received: Waiting on renegotiation -Message received: Waiting on renegotiation -Message received: Waiting on renegotiation -Message received: Waiting on renegotiation -Message received: Waiting on renegotiation -Message received: Waiting on renegotiation -Message received: Waiting on renegotiation -Message received: Waiting on renegotiation -Message received: Waiting on renegotiation -Message received: Waiting on renegotiation -Received 0 -Received 0 -Received 0 -Received 1 -Received 10 -Received 5 -Received 5 -Received 5 -Received 5 -Resetting -Sent: Hello from Rick42 to myself, without E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Hello from Rick42, with E2E Encryption -Sent: Waiting on renegotiation -Sent: Waiting on renegotiation -Sent: Waiting on renegotiation -Sent: Waiting on renegotiation -Sent: Waiting on renegotiation -Sent: Waiting on renegotiation -Sent: Waiting on renegotiation -Sent: Waiting on renegotiation -Sent: Waiting on renegotiation -Sent: Waiting on renegotiation -WARNING: unsafe channel creation enabled diff --git a/basice2e/clients.net_goldoutput/client43.txt b/basice2e/clients.net_goldoutput/client43.txt deleted file mode 100644 index 4e0d539..0000000 --- a/basice2e/clients.net_goldoutput/client43.txt +++ /dev/null @@ -1,72 +0,0 @@ - -Adding -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Hello from Rick42, with E2E Encryption -Message received: Waiting on switching renegotiation -Message received: Waiting on switching renegotiation -Message received: Waiting on switching renegotiation -Message received: Waiting on switching renegotiation -Message received: Waiting on switching renegotiation -Message received: Waiting on switching renegotiation -Message received: Waiting on switching renegotiation -Message received: Waiting on switching renegotiation -Message received: Waiting on switching renegotiation -Message received: Waiting on switching renegotiation -Received 0 -Received 0 -Received 10 -Received 5 -Received 5 -Received 5 -Received 5 -Resetting -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Hello from Ben43, with E2E Encryption -Sent: Waiting on switching renegotiation -Sent: Waiting on switching renegotiation -Sent: Waiting on switching renegotiation -Sent: Waiting on switching renegotiation -Sent: Waiting on switching renegotiation -Sent: Waiting on switching renegotiation -Sent: Waiting on switching renegotiation -Sent: Waiting on switching renegotiation -Sent: Waiting on switching renegotiation -Sent: Waiting on switching renegotiation -WARNING: unsafe channel creation enabled -WARNING: unsafe channel creation enabled diff --git a/basice2e/clients.net_goldoutput/client44.txt b/basice2e/clients.net_goldoutput/client44.txt deleted file mode 100644 index 9c8a179..0000000 --- a/basice2e/clients.net_goldoutput/client44.txt +++ /dev/null @@ -1,5 +0,0 @@ - -Message received: Hello from David44 to myself, without E2E Encryption -Received 0 -Received 1 -Sent: Hello from David44 to myself, without E2E Encryption diff --git a/basice2e/clients.net_goldoutput/client46.txt b/basice2e/clients.net_goldoutput/client46.txt deleted file mode 100644 index 7117098..0000000 --- a/basice2e/clients.net_goldoutput/client46.txt +++ /dev/null @@ -1,4 +0,0 @@ -Adding -Received 0 -Received 0 -WARNING: unsafe channel creation enabled diff --git a/basice2e/clients.net_goldoutput/client85.txt b/basice2e/clients.net_goldoutput/client85.txt deleted file mode 100644 index bb2505b..0000000 --- a/basice2e/clients.net_goldoutput/client85.txt +++ /dev/null @@ -1,14 +0,0 @@ -Adding -Message received: Hello Jono from Sydney, with E2E Encryption -Message received: Hello Jono from Sydney, with E2E Encryption -Message received: Hello Jono from Sydney, with E2E Encryption -Message received: Hello Jono from Sydney, with E2E Encryption -Message received: Hello Jono from Sydney, with E2E Encryption -Received 0 -Received 5 -Sent: Hello Sydney from Jono, with E2E Encryption -Sent: Hello Sydney from Jono, with E2E Encryption -Sent: Hello Sydney from Jono, with E2E Encryption -Sent: Hello Sydney from Jono, with E2E Encryption -Sent: Hello Sydney from Jono, with E2E Encryption -WARNING: unsafe channel creation enabled diff --git a/basice2e/clients.net_goldoutput/client86.txt b/basice2e/clients.net_goldoutput/client86.txt deleted file mode 100644 index 64530c5..0000000 --- a/basice2e/clients.net_goldoutput/client86.txt +++ /dev/null @@ -1,14 +0,0 @@ -Adding -Message received: Hello Sydney from Jono, with E2E Encryption -Message received: Hello Sydney from Jono, with E2E Encryption -Message received: Hello Sydney from Jono, with E2E Encryption -Message received: Hello Sydney from Jono, with E2E Encryption -Message received: Hello Sydney from Jono, with E2E Encryption -Received 0 -Received 5 -Sent: Hello Jono from Sydney, with E2E Encryption -Sent: Hello Jono from Sydney, with E2E Encryption -Sent: Hello Jono from Sydney, with E2E Encryption -Sent: Hello Jono from Sydney, with E2E Encryption -Sent: Hello Jono from Sydney, with E2E Encryption -WARNING: unsafe channel creation enabled diff --git a/basice2e/crust.sh b/basice2e/crust.sh deleted file mode 100755 index e2bb257..0000000 --- a/basice2e/crust.sh +++ /dev/null @@ -1,183 +0,0 @@ -#!/bin/bash - -# This file contains logic to run clients with the specific goal of putting -# backups testing backups on Crust's architecture. These clients will then -# recover these backups and ensure the recovered file matches the originally -# backed up file. - -# NOTE: This is verbose on purpose. -################################################################################ -## Initial Set Up & Clean Up of Past Runs -################################################################################ - -set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir - -if [ $# -gt 1 ] -then - echo "usage: $0 [gatewayip:port]" - exit -fi - - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -UDBOUT=results/udb-console.txt -CLIENTOUT=results/clients -CLIENTCLEAN=results/clients-cleaned - -CLIENTOPTS="--password hello --ndf results/ndf.json --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" -CLIENTUDOPTS="--password hello --ndf results/ndf.json -v $DEBUGLEVEL" -CLIENTALTUDOPTS="--alternateUd --altUdCert crustUd.crt --altUdContactFile crustUdContact.bin --altUdAddress 18.198.117.203:11420" - -# FIXME | As it stands, this needs to be incremented every run. This is so that -# FIXME | the client is registered w/ UD used for testing with a unique username. -# FIXME | Ideally there would be a mechanism to make this repeatable (ie reuse -# FIXME | the username), and the (commented out) removeUser function attempted -# FIXME | to do that by removing the user from UD at the end of every run. -# FIXME | This is accomplished by trap (Bash's equivalent of defer). However, -# FIXME | the function never successfully removes the user. There should be a way -# FIXME | to fix this, but incrementation is left until this is resolved. -# FIXME | Alternative solutions include registering only if a blob file does not -# FIXME | already exist for the client. -CLIENTID=352 -ACCOUNTNAME=crustIntegrationTest$CLIENTID -echo "CLIENTID - $CLIENTID" -echo "ACCOUNTNAME - $ACCOUNTNAME" -echo "Note that these values must be incremented each run (see the FIXME)" - - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - -################################################################################ -## Network Set Up -################################################################################ - -# removeUser will remove the user from the UD -removeUser() { - CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS $CLIENTALTUDOPTS -l $CLIENTOUT/client$CLIENTID.log -s blob$CLIENTID --remove $ACCOUNTNAME" - eval $CLIENTCMD >> $CLIENTOUT/client$CLIENTID.txt & - PIDVAL=$! - echo "$CLIENTCMD -- $PIDVAL" - wait $PIDVAL - -} - - -# Ensure removeUser is called whenever this script closes, on success or failure -#trap removeUser EXIT -#trap removeUser INT - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -if [ "$NETWORKENTRYPOINT" == "localhost:8440" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "DOWNLOADING TLS Cert..." -CMD="openssl s_client -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi - - -#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 -#export GRPC_GO_LOG_SEVERITY_LEVEL=info - -############################################################################### -# Test Crust -############################################################################### - -echo "TESTING CRUST..." - -# Register username with UD -CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS $CLIENTALTUDOPTS -l $CLIENTOUT/client$CLIENTID.log -s blob$CLIENTID --register $ACCOUNTNAME" -eval $CLIENTCMD >> $CLIENTOUT/client$CLIENTID.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -# Upload file to Crust -CLIENTCMD="timeout 240s ../bin/client crust $CLIENTUDOPTS $CLIENTALTUDOPTS -l $CLIENTOUT/client$CLIENTID.log -s blob$CLIENTID --upload --file LoremIpsum.txt" -eval $CLIENTCMD >> $CLIENTOUT/client$CLIENTID.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -# Recover file from Crust -CLIENTCMD="timeout 240s ../bin/client crust $CLIENTUDOPTS $CLIENTALTUDOPTS -l $CLIENTOUT/client$CLIENTID.log -s blob$CLIENTID --recover --file LoremIpsum.txt" -eval $CLIENTCMD >> $CLIENTOUT/client$CLIENTID.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -############################################################################### -# Close Local Network -############################################################################### - -if [ "$NETWORKENTRYPOINT" == "localhost:8440" ] -then - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "Failed to serve port" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt -fi \ No newline at end of file diff --git a/basice2e/crustUd.crt b/basice2e/crustUd.crt deleted file mode 100644 index 9900bcd..0000000 --- a/basice2e/crustUd.crt +++ /dev/null @@ -1,33 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFqTCCA5GgAwIBAgIUEVshfaLgjzuVfLlyk0mTsXIkVewwDQYJKoZIhvcNAQEL -BQAwgYAxCzAJBgNVBAYTAktZMRQwEgYDVQQHDAtHZW9yZ2UgVG93bjETMBEGA1UE -CgwKeHggbmV0d29yazEPMA0GA1UECwwGRGV2T3BzMRMwEQYDVQQDDAp4eC5uZXR3 -b3JrMSAwHgYJKoZIhvcNAQkBFhFhZG1pbnNAeHgubmV0d29yazAeFw0yMTA1MDcx -NTExNTVaFw0zMTA1MDUxNTExNTVaMIGAMQswCQYDVQQGEwJLWTEUMBIGA1UEBwwL -R2VvcmdlIFRvd24xEzARBgNVBAoMCnh4IG5ldHdvcmsxDzANBgNVBAsMBkRldk9w -czETMBEGA1UEAwwKeHgubmV0d29yazEgMB4GCSqGSIb3DQEJARYRYWRtaW5zQHh4 -Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC1dYoVYmYA -L4TaKC9g3cTM8LqTD7Ofdo4LKkkluqPKadX6rZyrvO90LtOtcH/1yxipTOnaKF0J -9/kTrxgTroKgIrHuzHOE7w87hcV4zPveYX+4nc8OBQRkVh0slIfPGUWQMSAx0ojv -Aqstkrk8SapcSJK0AJi2wHephJhSnmnKbq56NSD4VwGbT9O8YAqsrU0FzGxTcers -QILgQY3BdcnzJL3VRjzMaLT3oCbXS2FPD6Z46JVs/jCc+fg7TT7N1VJwsNJ0w7gR -nV3iB5XG/9Em/khQ2Ne2mPRoh4xaXPFeAmXYhiREFI2t4LrgeHwySuRhsRLolYA+ -95nSZ1FCuPabV+jv2UURLN581VzLjgOA8Ad60P1yKfyP6N2BcR/99xD/Y+pBvsn5 -wgSVbPTxq15M3WehPLVvoie66pg25uLo+EdyvkzFIBjdy8oNW5qKB6IhrqM5OKsp -xvdh/nQ/6bikIZxmdJqhTs0slhD6NlY+RnHNg/9xyDU/aoU/tn06cL9xlhVA88A/ -I1Tz5JJdF6G05O/MaTe5FaCJJly6+uY3R6O9f4eKdeuwVdvLHjKvFHir78djG5wq -xYieGaiUSxy6kr0b283pVNxWlWVPUxlRQpr9EWB9cfKzjuMie83xdCGfJOgfiw1q -KOirdiO3Y/goSsndolKrARWRO5Af4P4f/wIDAQABoxkwFzAVBgNVHREEDjAMggp4 -eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQAIUMML1m+NXFF2qnXrkbJUrr0Y -kMejzFkSrx0PypqXThDUwdCdkYZkNzcfTB/jvNMn6PfU7uR5OYqTgKjHyGxG7ZZs -RhxL21jTUYq9H45aMRYJzOZ/jOag2QbrV+46YsbCMJoZhD9da2qVOLNPHyG1pYfY -HzlObq+uy23iNQSL9dNSw9PbvPY8UVMqkY9dXEqFtOuivLoacUU6+ZiOnp/Cbed8 -E+oIhP7U3Zlnl1WMyMM94ltdVOqpzyiaNuqLE1S7ngN1qukiu63B50JH7YCxiwuC -IrcyRErwrCPFdpjxsgJViH3cQG3Y07Eof2KJRYoyJ1NF9UgXfTpZ3P7lDSEtDre2 -YLKZbAPJRYwnyrPmw/Gs1PNIf02C+UglgqhtcpvTLQ+PxJp0u58JJfKqUDqzOAYl -OtVJJ71coADrz9ON1W9TsJ154sHIQVF/wjLic9mUOnn0zsWuk2ClcGJp67UF8ZSe -eWbnQipc/rxcsh9KF/n+lG7thmEaJ10tntr0X5vYR4e1FjIlfc2wk46yH7+pIl/3 -R9quX/3zRxxNKNugkz+Jp+WeL6oP2ozzh4Nr9H1rdAsgkj89t2RKteXp4XZ8Pp1i -uXO9ulyHkAvQxyehoFk44Q0Z2AEkSDbNCtQ5yRKTKoeeL04vbAvn7L0XWQ7jDJje -xHGnyrYJGhiR8Sp20w== ------END CERTIFICATE----- diff --git a/basice2e/crustUdContact.bin b/basice2e/crustUdContact.bin deleted file mode 100644 index 923dbd2..0000000 --- a/basice2e/crustUdContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)LF2ccT+sdqh0AIKlFFeDOJdnxzbQQYhGStgxhOXmijIDkAZiB9kZo+Dl3bRSbBi5pXZ82rOu2IQXz9+5sspChvoccZqgC/dXGhlesmiNy/EbKxWtptTF4tcNyQxtnmCXg1p/HwKey4G2XDekTw86lq6Lpmj72jozvRWlQisqvWz/5deiPaeFGKDKC0OrrDFnIib7WnKqdYt4XyTKdmObnmbvdCbliZq0zBl7J40qKy5FypYXGlZjStIm0R1qtD4XHMZMsrMJEGxdM55zJdSzknXbR8MNahUrGMyUOTivXLHzojYLht0gFQifKMVWhrDjUoVQV43KOLPmdBwY/2Kc5KvVloDeuDXYY0i7tD63gNIp9JA3gJQUJymDdwqbS13riT1DMHHkdTzKEyGdHS+v2l7AVSlJBiTKuyM00FBNuXhhIcFR7ONFCf8cRPOPPBx3Q6iHNsvsca3KPNhwOJBgaQvHSkjIMsudiR954QbwG9rbi2vxVobIgWYMl5j6vlBS/9rfbE/uLdTEQZfNsLKDCIVCCI4I1bYZxZrDLPrfXTrN6W0sCLE7a/kRBQAAAgA7+LwJqiv9O1ogLnS4TYkSEg==xxc> \ No newline at end of file diff --git a/basice2e/e2eReport.py b/basice2e/e2eReport.py deleted file mode 100755 index 0588576..0000000 --- a/basice2e/e2eReport.py +++ /dev/null @@ -1,147 +0,0 @@ -#!/usr/bin/env python3 - -# This script is used for building reports on message sending for E2E integration tests -import re -import glob -import os -import logging as log -import datetime -import statistics - -resultsDir = "./results/clients" - - -def err(s): - """ - Helper for printing errors and exiting - - :param s: Error string to print - """ - log.error(s) - exit(1) - - -def find_files(): - """Obtains list of files to search.""" - if not os.path.isdir(resultsDir): - err("Directory {} does not exist!".format(resultsDir)) - return glob.glob('{}/client*.log'.format(resultsDir)) - - -def main(): - log.basicConfig(format='[%(levelname)s] %(asctime)s: %(message)s', - level=log.DEBUG, datefmt='%d-%b-%y %H:%M:%S') - log_files = find_files() - - udbLog = "./results/udb-console.txt" - if os.path.exists(udbLog): - log_files.append(udbLog) - - messages_sent = dict() - messages_received = dict() - rounds_sent = dict() - - # Scan each log file - for path in log_files: - log.info("Scanning {}".format(path)) - with open(path, 'r', errors='ignore') as file: - while True: - line = file.readline() - if not line: - break - else: - if "Successfully sent to EphID" in line: - # Capture message sending - sent_msg = re.findall('msgDigest: (.{20})\)', line) - if len(sent_msg) == 0: - continue - sent_message = sent_msg[0] - log.debug("Located sent message: {}".format(sent_message)) - - - # Capture message timestamp - sent_ts = re.findall('INFO (.{19}\.{0,1}\d{0,6})', line) - if len(sent_ts) == 0: - continue - sent_timestamp_str = sent_ts[0] - try: - sent_timestamp = datetime.datetime.strptime(sent_timestamp_str, '%Y/%m/%d %H:%M:%S.%f') - except ValueError: - sent_timestamp = datetime.datetime.strptime(sent_timestamp_str, '%Y/%m/%d %H:%M:%S') - log.debug("Located sent timestamp: {}".format(sent_timestamp)) - messages_sent[sent_message] = {"sender": os.path.basename(path)} - messages_sent[sent_message]["sent"] = sent_timestamp - - # Capture rounds messages were sent in - sent_round = re.findall('\) in round ([0-9]+)', line)[0] - log.debug("Located sent round: {}".format(sent_round)) - messages_sent[sent_message]["round"] = sent_round - if sent_round not in rounds_sent: - rounds_sent[sent_round] = False - - elif "Received message of" in line or "Received AuthRequest from" in line or "Received AuthConfirm from" in line: - # Capture message receiving - received_message = re.findall('msgDigest: (.{20})', line)[0] - log.debug("Located received message: {}".format(received_message)) - - # Capture message timestamp - receive_ts = re.findall('INFO (.{19}\.{0,1}\d{0,6})', line) - if len(receive_ts) == 0: - continue - received_timestamp_str = receive_ts[0] - try: - received_timestamp = datetime.datetime.strptime(received_timestamp_str, - '%Y/%m/%d %H:%M:%S.%f') - except ValueError: - received_timestamp = datetime.datetime.strptime(received_timestamp_str, '%Y/%m/%d %H:%M:%S') - log.debug("Located received timestamp: {}".format(received_timestamp)) - messages_received[received_message] = {"receiver": os.path.basename(path)} - messages_received[received_message]["received"] = received_timestamp - - elif "Round(s)" in line: - # Capture round success - successful_rounds = re.findall('Round\(s\) ([0-9]+) successful', line) - for successful_round in successful_rounds: - log.debug("Located successful round: {}".format(successful_round)) - rounds_sent[successful_round] = True - - # Print results - num_successful = 0 # Keep track of how many messages were received successfully - total_latency = datetime.timedelta() # Keep track of the total message latencies to calculate a mean - latencies = [] # Keep track of each message's latency in order to calculate a median - for msgDigest, senderDict in messages_sent.items(): - if msgDigest in messages_received: - num_successful += 1 - time_sent = messages_sent[msgDigest]["sent"] - time_received = messages_received[msgDigest]["received"] - message_latency = time_received - time_sent - latencies.append(message_latency) - total_latency += message_latency - log.info("Message {} sent by {} on round {} was received after {}".format(msgDigest, - senderDict["sender"], - senderDict["round"], - message_latency)) - log.info("\tSent: {}, Received: {}".format(time_sent, time_received)) - else: - log.error("Message {} sent by {} on round {} was NOT received".format(msgDigest, - senderDict["sender"], - senderDict["round"])) - for round_id, was_successful in rounds_sent.items(): - if was_successful: - log.debug("Round {} was successful".format(round_id)) - else: - log.warning("Round {} was NOT confirmed successful, messages may have been dropped".format(round_id)) - - log.info("{}/{} messages received successfully!".format(num_successful, len(messages_sent))) - log.info("\tMean: {}, Median: {}".format(total_latency / num_successful, statistics.median(latencies))) - - -if __name__ == "__main__": - main() - -# INFO 2021/05/07 15:25:14 Received message of type None from ouQD89J4YdmlzcAkdjjgVa49SANsi1JL5JLVjrWjZtED, msgDigest: inDu2/zmGD+vtCMVHXdg -# INFO 2021/05/19 15:29:09 Received 2 messages in Round 65253 for -7 (AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD) -# INFO 2021/05/07 15:25:03 Sending to EphID -15 (ouQD89J4YdmlzcAkdjjgVa49SANsi1JL5JLVjrWjZtED) on round 797, (msgDigest: YTuZd9p8759GBMNz8Dw7, ecrMsgDigest: JshXEJ4WTBsbRFWQDBYq) via gateway sAtfNaRd1jePhfRrcDgZgHHAAmhZ/F0jDbD4JgAfkMsB -# INFO 2021/05/07 15:25:04 Successfully sent to EphID -15 (source: ouQD89J4YdmlzcAkdjjgVa49SANsi1JL5JLVjrWjZtED) in round 797 (msgDigest: YTuZd9p8759GBMNz8Dw7) -# INFO 2021/05/07 15:25:04 Result of sending message "Hello from Rick42, with E2E Encryption" to "ouQD89J4YdmlzcAkdjjgVa49SANsi1JL5JLVjrWjZtED": -# INFO 2021/05/07 15:25:04 Round(s) 795 successful diff --git a/basice2e/gateway-1.yaml b/basice2e/gateway-1.yaml deleted file mode 100644 index 7f8256f..0000000 --- a/basice2e/gateway-1.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2019 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -# Output log file -log: "results/gateways/gateway-1.log" - -# Log message level -logLevel: 1 - -# The public IP address and port of the node associated with this gateway -cmixAddress: "127.0.0.1:50000" - -# Port for Gateway to listen on. Gateway must be the only listener on this port. -# Required field. -port: 8440 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# The number of seconds a message should remain in the globals before being -# deleted from the user's message queue -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gateway-1-idf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/basice2e/gateway-2.yaml b/basice2e/gateway-2.yaml deleted file mode 100644 index 68de67f..0000000 --- a/basice2e/gateway-2.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2019 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -# Output log file -log: "results/gateways/gateway-2.log" - -# Log message level -logLevel: 1 - -# The public IP address and port of the node associated with this gateway -cmixAddress: "127.0.0.1:50001" - -# Port for Gateway to listen on. Gateway must be the only listener on this port. -# Required field. -port: 8441 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# The number of seconds a message should remain in the globals before being -# deleted from the user's message queue -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gateway-2-idf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/basice2e/gateway-3.yaml b/basice2e/gateway-3.yaml deleted file mode 100644 index 8a45339..0000000 --- a/basice2e/gateway-3.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2019 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -# Output log file -log: "results/gateways/gateway-3.log" - -# Log message level -logLevel: 1 - -# The public IP address and port of the node associated with this gateway -cmixAddress: "127.0.0.1:50002" - -# Port for Gateway to listen on. Gateway must be the only listener on this port. -# Required field. -port: 8442 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# The number of seconds a message should remain in the globals before being -# deleted from the user's message queue -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gateway-3-idf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/basice2e/gateway-4.yaml b/basice2e/gateway-4.yaml deleted file mode 100644 index be08d86..0000000 --- a/basice2e/gateway-4.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2019 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -# Output log file -log: "results/gateways/gateway-4.log" - -# Log message level -logLevel: 1 - -# The public IP address and port of the node associated with this gateway -cmixAddress: "127.0.0.1:50003" - -# Port for Gateway to listen on. Gateway must be the only listener on this port. -# Required field. -port: 8443 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# The number of seconds a message should remain in the globals before being -# deleted from the user's message queue -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gateway-4-idf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/basice2e/gateway-5.yaml b/basice2e/gateway-5.yaml deleted file mode 100644 index 3b5a0c7..0000000 --- a/basice2e/gateway-5.yaml +++ /dev/null @@ -1,47 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2019 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -# Output log file -log: "results/gateways/gateway-5.log" - -# Log message level -logLevel: 1 - -# The public IP address and port of the node associated with this gateway -cmixAddress: "127.0.0.1:50004" - -# Port for Gateway to listen on. Gateway must be the only listener on this port. -# Required field. -port: 8444 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# The number of seconds a message should remain in the globals before being -# deleted from the user's message queue -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gateway-5-idf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - -devMode: true - -minRegisteredNodes: 0 - -# === END YAML diff --git a/basice2e/ndf.json b/basice2e/ndf.json deleted file mode 100644 index 9fe66fa..0000000 --- a/basice2e/ndf.json +++ /dev/null @@ -1 +0,0 @@ -{"Timestamp":"2021-11-15T21:37:23.92273269Z","Gateways":[{"Id":"5LNIqTUctBWuWmAEB0ombdLl6gdMACBmWvJUWcSIxwgB","Address":"37.97.220.129:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFyTCCA7GgAwIBAgIUOJE5K9HrjPk7zHdu6cpgIcg1vmMwDQYJKoZIhvcNAQEL\nBQAwgZAxCzAJBgNVBAYTAk5MMRIwEAYDVQQIDAlGbGV2b2xhbmQxDzANBgNVBAcM\nBkFsbWVyZTESMBAGA1UECgwJeHhuZXR3b3JrMRIwEAYDVQQLDAl0ZXN0Tm9kZXMx\nEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5l\ndHdvcmswHhcNMjExMTE2MTE1NDA3WhcNMjMxMTE2MTE1NDA3WjCBkDELMAkGA1UE\nBhMCTkwxEjAQBgNVBAgMCUZsZXZvbGFuZDEPMA0GA1UEBwwGQWxtZXJlMRIwEAYD\nVQQKDAl4eG5ldHdvcmsxEjAQBgNVBAsMCXRlc3ROb2RlczETMBEGA1UEAwwKeHgu\nbmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJ\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMh+RDEEHDVwrdUeQtqjD087BNk1h/LQ\n2ck6iDvF0qRKbkWOtEwuoGnQ+mxkJmbGiPtJa9TbEFbQDL3zqeG5MUpdAdQKPPsK\n0DWNBPXswyNVxc4HePK3B6X5XRoVcZDFlR3W5d/d8c+Cdl/R5ZcD4U7peCTR5p89\nHdkb7RyZF8DQBgsWHlCMwIKzMWOLTu9+lCW1Dj+EBzMPfjR/Ufb7cvdWsQ0mpYV7\n1gMnS4tFrcXArb1rwTT+bt7dFyPgkY4aLd2Jf+IwY97OFuIhBmdZ7BQV2NfPFG2n\nOEKJNHz2/BV8y1nuTPYRqn9xuLX2p8H8GWBZo9mvZJlE2DiI2NZaePg3JHLkrv9F\nynSXulF4OINyT28HAXRwJDT7uBIx3uB5HXGMNlEDsOuCyfkzl/R3vdd3mbSyG76u\nBUWqmgIHK6OSeN+Bpbnx3ZlZZHJ81rPIK/ZNX6biDHlgA8WET/kYY0IAnmcF3q4A\nIiAjZcEhbZzD/rPRFKjh8LEmUdeCCx3CbOsz3mwxF/fha3VwKUnbspeziTEDf/3p\nYug2wBSyFeKe2qUjzKsMT3wB9CjmnQPEhUShsTPWAcZWJM1W7fnuhpFTWeGXSD2G\nrxjhhufeJXcdURvsJwEVQumkiPm9StVgtwTzHaOtWN0rbjdd/XSFnNTSkfLIjcuB\ng8bFejsVYWUBAgMBAAGjGTAXMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZI\nhvcNAQELBQADggIBAHl/T8getjhlUvxmqe2F6wWGdd9sOEVQ+gQAy4+r7QRDr91l\nqepEWFhfaVgaZe8X2Ou1GvyMUkGwkPJ3ObSoCl5RwC3t2CEfYEaHcEeBuQMXTy8Y\nNUrkxJIUA9pVuB+lVjjflmDVRnpEwZKIlf9+ii2lHz6qDCeuOg2QDD/5RyJOGNfx\n0KVvbOZsTSZtqTi2+xqNpcQdJucOJN2QkZ/b+h30LqI3jdr1fQz9BRjQ35GFqioR\nRv2aIWZ9LMJCSEtZyaogETJEabMPKx1viXcvoS9QEfkj4m62Pb1M9YSMlD9BPjJp\nY2Salwac5wavMzPe1UOcT1t8Py+8TQJztiwIkVQHpLSzclsChfpuf7gwSFk3B6gC\nhugHCm/ZTYNY/J3iuiAwoM/ktv7oNTR9m9diFA/4SBZjhnLvqHPECFSpBBois1Pn\nNFWBMCuPcRR27ZU15bABLwjBCnXP2k+P/MScWCA4RbHWE1yXwGz3FHDW0FmAJBno\nZqe+cM1IgZLciqNq96iURFiQFUvsCtgmzgPhYhJRpMoQkwB985fgv7LGuUGslgL/\nEHGY99HahVSYv/VO5QPfNsxJiYPQ8I8yeZX86iTL+xNy6fDKyqGtu8LNe9GbtT+1\nY8FO0tzNc/0rRYhi5IUoZ8Jzn6ILV/0fx8zxlNXzXgdvVkK8VBzAGxKZLKn8\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"g198YdnVWpWWbU+RnGIAdkEsufGDfOyJcmsrFPppjLYB","Address":"108.249.110.153:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUHOowAka9cHNp66Uoyg5kWErmOwcwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwNDE1MzBaFw0yMzExMTYwNDE1MzBaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQC/eFuUFVq2+c7E5P4mlkOwIEx9lZGjJ7JV9djaiHDRqkUJD7Cq\nQVgUxtUZN9KgSJ4OEYZFvLICebRucMDOLeADiSm4iRvBisUGRzSZZsacH5zJrGx5\nL+r81UIWnTirubm+KXNOAY0cwW2Mlw6NwH9h0hUwWG54FitS+i9wGrej7HR4NI3Q\nxf9iJw/GC5GIHSuGxkWejdzRuDkB2nfgrW0csRtFImGUZkOid7XLdClExrT0Eyog\nD7oYQTbzFqqIJWV9E7d5jk36xsVGDmpdIbLZ6eHix5LXu2Rjo79Wl2ytB7WaOcgJ\nzRdkxmrUfnv3ZIV2bvL4pOy9KX5w6EWGNo6oyvx5qHQ4rUrKFNu0qV6szC74Ao5V\nUVaafu525zqBPUlGBLGZ+QrgusSgKka3Wdm6i0TUdAZ+eI0h5qRRhwtCittK1mON\nbQFKxqynPx7UthEz0+/ADG46xAjf1K+ONfAtG+uHrXV0a6v1dTgfd1EvCCH/NEEv\nGFsRrBs4oEUOSs3oC++kUTHZ9m6yJQXeum21+P6Bvgc0nxRBXiV35xT3HHQmYj+V\n7nk7dtH42EOnmn7D1R+QuOug6YL0IGQd7q4niC7QnPVu99PpgfysD5A3h3Ym5RKf\n4zQWwGX2fDngiEaSEH2Lj6exqiS/ASdk30WlWshu/iun3JAlRm4JDf9pXQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQA9\nyUgpByxfN2jETViZYJnEuUTncx2oJmtY3i0O3MNF5XrAfusn5lptogDyMJ2v7VpB\niMzLTaEWah1AwK0cKjjm3Cm6Vk9aKO5S9GYkLnDXpksnQARY9AG13cNQZEPTd33I\nJ9ahpafSjm4WgQR1VDATpReeFx4CVoP4ZtrXM6GGcWZBpl9oScMQffrYy4FhIYUZ\nQEEhM/rcIpcKqNFmYkKHVbE7GWMAhTaPSuoIGZfAouEAMi9OPg8nKruW4075+naQ\nhQmlbQtBHJ5UHYPIER8KRDgUfPI6OZkyMElAV2E2PexBuVorWvdh4SVZFe01ZnCu\ngiOby5XK/ZRx4mBAXWXlriu/7G3r9TfrWyLEQTFAIKpGoYJYROf0kgtCzoRU53tI\n/z8JvN0TkExDmR090QEf8LHJGINKnyjuzJe7S2Mb7MR6KhnJw0FzZPI+QWyFkkfF\nXq3IPyoBau+V6Pe5tbvktxDx2kLEANUtZtu+j/eUWvcNZPOBCPJ+0PR/3Q4cEH5Z\nsf2ahnmTPER1BmWIWzcPWO4LU7u6r3Y43K9XGA9q/xoJSfQZBHlzejMIVdooZ21Y\nMNSLHFsd3LOoYDeQVq7dR1Ofdk0j2jN+ynkFid73C3+bHAe/bRSI+wN3UPfPIhh5\nPnRp/e3JAcFHhCJLOJk7VNHQQHxiB3GrCv4+5ds+kg==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"JTcyB77WzyT7dn+3Bx+d3CrVDYfX8nyMpS4zuRMq2t8B","Address":"88.198.2.51:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUBMKV6vCXahTIR18+fxuEcE+E5qUwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAklFMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTUyMzM3MDFaFw0yMzExMTUyMzM3MDFaMIGJMQswCQYDVQQGEwJJRTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQClajmxtYbJUUDJkZRpP3rd1Op/sS+H1/hg4qFcViOXZJz6lG9I\nSJrgfu82oZEd9CcpMubKC7GfBf2SDC5cW4YPOzvEF1Vjj2c8BjLNZ57Vj/+3KQpn\ndpjUwUKPmtq9/VryKvQFiuxl0dW/OL0QQeQ/heNgPeq5keLAZr4GCIOPhJMB5hzm\nGvor4QwQqVqWunoUgN9KFf8oPc6RvGGRbyllyRg23P6HvGIZ6yjmy8YHsQCYInz7\ncYyvgCXLZbpNsyFfTqQJ0UWt5iS+awzvIsILS7ikZ984ClU7AV+Xp6CfIAYPIVz2\nVhcLAGIbqErXScLq1tI/IiVXvfv0QhhLepXgJGPNTE77/o52bS3UTZxNlztyjOm7\nLBAZr+b6Uc7jCpYiX+yyUOc56NAllOQZBqwpgbwA/9Px32rHRVkWAHSqdD/gcMpa\nr99oPifBBCblOdWx4O3/l6Za0MhhOXB0+w87g5vIvODTp+qIUOIrASzonsh7V+0N\ntHV8sQFnOtYc0Kre7lBRiAcyRnuxH6kdAs/vNszBTFiT97UKLdWsnJ+DmioI7Q2v\n5hWt1kdk76aQkznSlc2sVGzDlHZpC7IohHtENqcvxxAPZwjBU/OwzxBi2bwNlhuA\nDoxrMpmcLUWM3fM/2y/fD2VfKfMDWDr376/+iQEaTY39x4NglnqHlbSRRQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQBR\n0qZCOsrGFp5iOEj7sf8SiuKtQOrnG904Rr5/j7TylPRuTZ8jZq4I7lV/zdD0m1zj\nkl47M8nCUMdfQbJhe0XlSultc2CMfMShl5MnRtw4jVZta2Xuv52Nz1KMFieNIWL2\ngPrpMTI7daIoMXZVY8mT7pdR5RAc4UJpOw6lHrT+zfgUtp4n+iQ2oBAICEK5Mt24\nmoyZld8ek9pgETBvXtcv5oJ0e+7d+chR75EaDY/9Amd17rdq6+7RWB5qs3Cp3Vdw\nYf0zVoyGbci02Fbkjqe4cvO0zBzCc/6DjRrBgrc4cm7hehbvkI3/Ew5NKZzwuhk9\nxv8w30tyMG6zzSLDX3KrDZblKSrWxV8QgH7CpHBS2iIkl3ywoGE8VU7Op24Jr26z\nGDE8KzkwfjkeG3QnDviCY3hSS+C+0VgpUiVuf2z9DyTG5oac7jisQwJD69/545os\n0DaFOTLCJVWgTSIQUBUuVZSZEmfp7Ho5IgN+zUcN+OJdbqzOTgKzLfoc2uQkSv3+\nQLPxsc7hs/m2rpb+N0QxLifGE8TAWHtBaufXxTq3CXSFwIRZOF28p1pI9CbQe2xU\neelfIWb4eUI6PEhCHv1OkxKairqwsbKAe9EOyYaG9MdaNk7ETrc3U0JBG6VIeHjt\nHhG9OuQvUhjvqUGsIZOHJnGZ41JvPF6cvHisFz1s9A==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"MC5H5Y7K32sFLxlOneYs/9CCZL6ASIAgKt8G0jGKZdQB","Address":"167.86.91.237:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUID32YK7+9/VWBWbh1MkL18CSVngwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAlVBMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwNjM1MTZaFw0yMzExMTYwNjM1MTZaMIGJMQswCQYDVQQGEwJVQTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQCtTRJZcC7kA6R2qMpItOnmme0ERzaC/Z6PF6kMDGwHpAJhbIAP\ntOyVSKt5Hvh09F0JJmCceGV1xoMkZPzA3P4lB2/QQtq0Ldi4dVOAIdliOQwrcTQA\nE+OYwcO3KbO6TNfba28o5sJzwHFQtWFQqDpWBN/rxmF42VVHS7Jg/qwAVmNUnJm3\nxW36KarQpxgD9JTkEdC9bxHGahhEtNRrXs+/Bx7x//AKbFc14vjjiBeSh0+WQ8uO\nwsIV5uCdWTabhu5aa0/vVTEWupjACa73CpiG9byXWIY1a0bUq8O6pfnDKyl+Fu/x\nrXPt6Of/QMceBRCiiEI0xQwimBDoyxN8nQzWRNDaVD+4qehkJr+iI3y4Gn0uWgiy\nLpL2qfxuCE1fxQ46VToGu/bypp8faZBNJYPmeFpuPf5QaOXfeRoTWtDPVKKv2M1d\n44TMNGSuZ4W0p2mP8JR7Fipguin0T0SalWPlQkd83NPEeqdJInGY+Yg7oug6sTZp\nYgiNcsuzDrZ8zYr8h6kKy0q52Ppm/X/UOWuyQKI0m/lnajsBOcxx2g72zF9YJrhy\n77pRgG07tMKTnV1LzDzuMvWJRPBiW+c1l7op6c3cQbBczygonUFTYn9j+yzIJHVB\nXgc8jEq4aJ3oO3g117FgU1uHydKLGWaGb251+SZzyPEcxOTuD9vpYg0ZpwIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCA\n1Mzp2dsbsiGvAG/Hyd6YeZkOiIB28yBv9+V0h47FQeY+Ufl4JN4IdrnEPRXG690V\ne8pY1RtcmjblZySUSr4ra3uLM/fsJwmz3y9rG/kEojNZDioY+0onp/jnFxx0Z5Np\ntnHe9vGE3oJ1wWKVIlfiigf6j2aRxnSdW190HMNMgksfiLBSFmx1rMk9FptDfDCJ\nqGXDVAk72f/IrdJ1pZhAZJ7+3PDx07ZDM7vD7AD+BDR/v+KJ0SImMS7+vKuoOkwv\n8xh7rpnGQ21z9qFaenZ8VoyDgNeUz+gbI+bLp5vVtJ6gpKbQv9AbkIqPf9f9eMZ+\nZ8V0K6TLFBUUtcDebCjfHI/iawO/IZQU9ySoAFj2BcixINopWcZ6wxibh12jOMe+\njn4w9Dj2iDMghZYLz7Y0V6VmsE8dt2Ik5WOt/l2+tIMKsCmyD3flQpisOiw7XYkw\ndG5MPzwe2H/LYVAMa9XzwGc6urPnYrBxgkRjU5jPytyHrBx3yIpLF83HFDz8lDLe\nohKTnK5SmUv2urj9w2QVwOjeJ9gJ6+hDPMYo7GXE59J7QaGAX+0SRAf0Qfh1GvFJ\nq7Abh6hYyPv1OdG0rurZNeAFO5xqgnogwVEmotKTACUx3XerJzD/FacQEeNYx8ek\n/+vAV85slKkmrcbnxSBT+6tkj4aFUDzY1x5223p/VA==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"NetR/HxbGHCev8tQYwv+uZGM4otKtxA2LNrLkCQ4uJAB","Address":"162.55.131.110:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"SiJPMEIG1gvpRAIdX72eIdM4didFSN7ETYrz5eDP5cAB","Address":"65.21.221.236:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFnzCCA4egAwIBAgIUOsCZm8o9N04rQEXYW7wiTO1+OHwwDQYJKoZIhvcNAQEL\nBQAwfDELMAkGA1UEBhMCUlUxDDAKBgNVBAgMA01TSzEPMA0GA1UEBwwGTW9zY293\nMQ4wDAYDVQQKDAV4eEJheTELMAkGA1UECwwCbjIxEzARBgNVBAMMCnh4Lm5ldHdv\ncmsxHDAaBgkqhkiG9w0BCQEWDWFkbWluQHNydi5raW0wHhcNMjExMTE2MDEzODU4\nWhcNMjMxMTE2MDEzODU4WjB8MQswCQYDVQQGEwJSVTEMMAoGA1UECAwDTVNLMQ8w\nDQYDVQQHDAZNb3Njb3cxDjAMBgNVBAoMBXh4QmF5MQswCQYDVQQLDAJuMjETMBEG\nA1UEAwwKeHgubmV0d29yazEcMBoGCSqGSIb3DQEJARYNYWRtaW5Ac3J2LmtpbTCC\nAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKqaBMUNbSQGWXtFZ1GYbQJX\nW6MNwSa7/TB396KecoAkamMkecjmHsOJI4gHRVafxNxKFvE5/tUGJhSh8dcTM03V\nafK1H4zuFn/NYpzXZBQJNrNTybeCG1pZm/bfMBhOt6DpuAcTRyLLD8OK1NGPKPPQ\nHvwnxj3nhIWptMAOks5FnknsQMOnbwVL+2L1mpB7yMQ4qzFyBIks6Q3+3QkgVmq6\nduESAPXQFGKRTdxD+UI/aYUi/y0kdtCnt2a4Di2Wm7bB9m1riWMcEE1Ll92jftob\nntPDumgD1mCX/kLJBzns4iaa86aHWUMQJW7a/o85YGKPW5BH4tMVtuqcLDNOWL0N\n6URNSAyG1NZMiryqf5cXKvQKpb3dKtmc8w+cqy7V42f0GCFf+oNqFlfE2HcCYMdb\nqgMxN5kUtTbtOZ1S0rqO3XxLiEKDUUiC6T6vsmlX7DPr1dxzhh2obD9n5MAtYxDO\n8+iDy11000Y1FBSWqXvpLGbGJHTvXCE6QabaHfLRhZWMmf5afd+iXz6xlCvtKXOj\n1tNlL9Q7Qe/lFMkj+34UodIzK3UWnOrRECSP9RHle8+KnI5E6EnP2m5IpKTC3+PD\nqgHh53WHKT3T2BeCNefEk7TNHwygbsim08ODY8PPGtuD/Uyl2ca5up42dOWToyOd\nXPuTStdkdCq4PYu+mhbbAgMBAAGjGTAXMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmsw\nDQYJKoZIhvcNAQELBQADggIBAGWgJzz5JzmCnU2hMmAMnYqjfcVw80bV5H3dxCSe\n0C5uG5a1URETanTXlofmDoZcdols1Sy+lR9hfi4xETdzwYfHCXxOqLZ90bECynFe\nJj+4mWo5G4B2B2QtbhQadMX25J3dLj86j+IfZW74LrbXm/3OwTAlgArtm3Zwiwnb\nGKXcHUzdXrYuCRaoaNa+pPN8HARZF/8j/Kv+9g3RN8+8Rp98JyP8JW+QkqEdnL+x\n+2UGHSPtTveOyxUFIEDvX85sgBdxr0F3E6FEyCgegiVKtd3RZCnkdIrJ3QranYo3\nRqipIekcEKYyLLbsXY2cpi5hyn7rrNEkx6M7bEYMW6iZsQ0AoQnWstxfxNze1/BM\n1xMW5fqrTxl7oFZyBa6zkD52jlXlaiApypckhRAXc1krdLwAym/vSTGMQI3UqFXQ\n9RkMQY7CHAf1zHqxQxeD3YPhvUJtfdWRVDBAunXEpusECxLrCKd4KQp8uT81fmLj\nDggn5I6fs+D2Wp0eD9QMfxCaOBHQ7Y4EQC8LKASDPxN43x2zyjO7w+h/91ibO2iE\nEIHbb/8JdZTYM7FwpDzPc3BvQoizdMz0ydEc92dI1dUnKOPh0jNakmjPCD4gPurv\niwv1I5GA2BVot6kZZTVT1emPUhFTgD2cFl43ALBTk7QtH8gZWQ7UUQBijKLZkpbx\npB3w\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"7meXffGqlOk14Lxx0PcEFBoCz+8lHSFS8BfkJvQpShcB","Address":"103.195.101.143:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFsTCCA5mgAwIBAgIUU5XUmQd9+yTH+vnbJhs9kRyajcYwDQYJKoZIhvcNAQEL\nBQAwgYQxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJGTDEOMAwGA1UEBwwFTWlhbWkx\nEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjEx\nMTE2MDAwNjMxWhcNMjMxMTE2MDAwNjMxWjCBhDELMAkGA1UEBhMCVVMxCzAJBgNV\nBAgMAkZMMQ4wDAYDVQQHDAVNaWFtaTESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYD\nVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQ\nYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nALHeIgfqUicclls1KUC/YL9RVgVeqC/oBTZmuWrqcc8m4uOmnoezwqiFuYcWMi2/\nCEmbyeraLcFRA7f4LDjWi6LWsYivLR8dkx9abWIQSEU9Xj8LAAsrvP+0dBW6d8wd\njycCn3mTLdSmIln7BeE4jXLtCpeP1gH1pzJ7LKGtaHZjqMuzT+mjtreqe+NBW0th\naUuyfpwS21KXiJ8DCJpoZTGRoGPQ8fjNRZbr/kDI8puIoLaNvs/vwUBHpbolSHCg\nYiBPbKYh08DDawxK4NQ+lnr7kHKmVWM4pajomr7kfxcgoA8b/w6AqR0xIQhAVC+f\nA64HUc9C/ZBEMgOTCVv//L38claTJfXIDG3Ij/n7M7Wsv9tKZDab4Fk1YKfdv+rA\n/ZTHKEXbwtpb3QyOX7KK/VxXywWtHrd7nSYo0gEddWFilydcDw3O1vYU+5SWqJ2L\n/DsLzimY3g5h67OEaNYL9BNJ/QM8eGl/H2ZDGrSjBTdvzP9ZPhSwIn2CIDrTAHIE\nbmfxZItvChZUZ3hVwdz39WelCp+dtZh7/K25e2p+AxAG+lKQ65Bvud5TzCOKRcTV\nkowkkSri3LhZUSw6wu5LF+fYHbfhR0pJ3yNx6ON1lcTwXjk/dpQW8ElAblWDfkWj\nJ2Z8U8wvlughRLOD1sAWy3gv81gOAxuVvNLovAPBScRHAgMBAAGjGTAXMBUGA1Ud\nEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAKmgQWMXX+Zo32hc\njfHU/FXbnq57+/tpRviLJxEKC87smEMMSpWhFZs7gqo8Fg0Msz3Jfn7g9oPLVkgp\nuMbIYl5E93O297N2+fpvRrZED4YL3eQn7tVCljDoIsR7g3ZIU86UoQmWT62bOlbu\nCEaiMgVgPdSiERA9HThtMzFA2LqZxF8UOuj+yEiMini8YJG3kZ7baKWc1RF8AmsL\n7yBmmljw3y1BGILzTkFyBlZ1yzOYjA0dull3ol+ePb5gIhlmXQr/zcWw5c+ykCal\nw4Zna1zmWaH8w9rPpYmuL61NbWAVzY3z9K2V0p2U40LP30v2AU8bw5u9bRnvZyFn\n641dH6+z1ri3n73F84uxRL8a15kUWr/DrjDs9xgbbQHfSTNsPLV1FRxejEo6oFnE\nAf+U+mXiHBw7nytbQ+mjV/Vh4QL/Usta6S+P911+Y9c8oRzQHt9YQmdRDs8xa1pu\n8EXro2Ncw7UWmZMuHRQlClxuCudtzk1maV9ybW0CHruEF+qd68RFLNjkcytLffoR\nZEJJVvVzlXLKGtCokWsobDkaJPoRW3YVrXOJrGf+eb6UxHEeJiCRZzEYvE55JWf4\nc3QmF/+f1E3vSedUgoK7q990uFexJOwSKhgM/DybXMH00tXxv4UcyAm5jptujE6c\ntWdH0To3VYM/njaeWVI/6Zb5s2NN\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"YrMCuSzzo42CRw/0+InBCyfB5tMy+moQcvTAceGBy5kB","Address":"181.43.194.251:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtTCCA52gAwIBAgIUftam4pjoXIjIqMXbMt0s0YfzH8UwDQYJKoZIhvcNAQEL\nBQAwgYYxCzAJBgNVBAYTAkNMMQowCAYDVQQIDAEgMREwDwYDVQQHDAhTYW50aWFn\nbzESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwK\neHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAeFw0y\nMTExMTYwMzE0MDlaFw0yMzExMTYwMzE0MDlaMIGGMQswCQYDVQQGEwJDTDEKMAgG\nA1UECAwBIDERMA8GA1UEBwwIU2FudGlhZ28xEjAQBgNVBAoMCXh4bmV0d29yazEO\nMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0B\nCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\nAoICAQCVR5GxDWkVl/OLwNLJByYwPP0Z3OS/uBHdo4q9QRJcFimCgGYycYpmlV0h\njb5jyaXzls4SR1JTFOhuoomtXi/612qPxQW87FNHj+kKQnkXXBRVslxR3397LxUq\nkXCr8jKzi3bKVkjx41Wu15mMgtg6L/HNFE/KnpkL4knFvxlncVbGucMBC3ISz7t/\n+nPqtTgoZB5NyP1juG61eUrxTSOFmlpf5VRpOKOrXB0umYOCPoMijmRRiubDjr5z\nE4uH613v6SVgYUpFMmfLe0bu9VA5zSejQILToMtKBfJefmohBHAufuQZMwrrY4No\nJEasVQkG+pSOmeP08lCim9fxySBDnYThLGSfK1FZchJatWlBEJau851qIrAcNpUs\nfBKjcG8QW6/REcSZUmPTCDxxqPhwL87Tly1QJxEBMmp8U1g3yemNN8DCqNbbL17i\n8Qy6sV2SAE/hIQtxGoL4GYRg8MJra2Np5Rgr1NCokBoscRyK1bsBb6MDG9bVQy+p\npuByEmYQa50IMHUNy3hrwG7OZvccTpDOETeowsVb8+FDzDedfvbHnSokJpcRMaJG\np4lNHbFuBxS8MYDplKi7qd/dr+UUPfYMhEOTxoubYTYC7Zc7MLot2KWjxmoKGm0C\nM4fEvT/HtrT63riB/yGPksOU0L2Rilhw5vSklnZh36EIookAvwIDAQABoxkwFzAV\nBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQAqxQrMMWrT\nlsCq+4zdU8P+ViyxBdc+1Ey5G8h5bG57lB813pJP60tWgTCI+YZn5KqLjyyJSA9V\n36/kQxODEGRsU/+zhVDnsBo8zHVp3Uh04G6NwCRQhlS4wuf5S/cuY3DItFAMamku\nAXe+ei+ivaHSfJxy0kVx5lGbvdDJ4Dc+ya8sZZBv2UXHjSJ0A9s8aJe4i1zlJZMr\nsvQBlEbePx1KqF+4HZRivb9Z0iaC/yomToOFMZ08O3z0NUtvGrOdOG2BpBlKuG1R\n5BjJUNVdP9L9ZvAjvXy0jCzZoWCRtoM625DJbdCu9ABnZA6SR7HJ3oMFWSWa32N4\n4U40AO4fDf0lD+Owmr/EO8BJf+4D1yHpaC4p/MEghgvTk7byP1gBtACuFfeFWZ0T\nKgQo8MUKh6i9MXXQFOOgeRgGEiOLAhp4np2trgAupvakhe8yNtVanqC/a56yrjrb\nB4K+IrrevU76brQ73zLOXnEZMVqufghRw26FZoPBGVoZSSkOFWvcMzOqrwnGFoEr\nrcJJclYTtUKEUHktLbISw908SzOb+HsJMwt2mkvlvhvycKRBfr+sTectfgDPJ/C7\nuKVHtGkB+dHSiMjm5vx2YbL8iCAKTudDk+LUQL6u+iNEvktU0C3WD3BJNclkeFrR\nulM91wqfZ8evIK6hksVWiCJ0VqrWb9Jchg==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"cT7GKZsAo8KWNmOb2ouF476nIMH74PbihkuaQzcXOCsB","Address":"46.4.50.57:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFrTCCA5WgAwIBAgIUTVBZDFilG8qY+V6BX+F2vIytu4gwDQYJKoZIhvcNAQEL\nBQAwgYIxCzAJBgNVBAYTAlJVMQowCAYDVQQIDAEgMQ4wDAYDVQQHDAVUb21zazES\nMBAGA1UECgwJeHhuZXR3b3JrMQ0wCwYDVQQLDARHZW1zMRMwEQYDVQQDDAp4eC5u\nZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3JrMB4XDTIxMTEx\nNjA0NTIzMVoXDTIzMTExNjA0NTIzMVowgYIxCzAJBgNVBAYTAlJVMQowCAYDVQQI\nDAEgMQ4wDAYDVQQHDAVUb21zazESMBAGA1UECgwJeHhuZXR3b3JrMQ0wCwYDVQQL\nDARHZW1zMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1p\nbkB4eC5uZXR3b3JrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzt91\n5Kn5dDa4+WwBEzivMnjQahigdXy0CiBtB5/7nKA9EfR5ZUZAvOhn8yftCvKCHwwA\n/BpldPOhR7pxXTiMGvvHdRfptsWfxEW45hw+aLjiQs1gnPL8AKBcNWE0V6f4DDwV\nT4zYHax/8AsXMc4xDsr8/sfEJIJYhRjv2j/GfVRtFjXmsk5F/mWsz9L2JzRvhxvC\nMj+j7PWeLO0ZA0uaWqpfJrcsFcmlNb0GQ6Fh3Xpzr+NZK/0ZIYkg1Gk6G1+IelNJ\nmfO5UbLip1dq4Qw4RnikD5J2RhyEzwad4/c9thGjH0MCAnd2XDcsXPjqMlkPhZVA\npuu6juhpgOxhmPutn2W45dwixLa8Z4aL64j5Ed1HKc7nIHMRCbSOI7N9k+B5799o\n1Ew6HYnEJdgp45HEZFH+Niq4DvOsxAUCHUFqcP0w0V4sWFIiHP04LT7IgTwjL0xW\nu8XDMmgkId/gTDTzXxZLXEXeA2x3QNeHorWBXNk7efsCzfVsvEuPUjoevxwOuRXg\naPFxs9K58sJv0vzsOmSzJhsnxNB5v7TuDjO9jxCm5oMKMihsso37o9XeD7o8yHQx\narNmm9Jkz4bZCPF+6OwmOsSVxt+xoGT3xZ+T1M0gEDtzXaSPHEg2AohqZ5xzLzwu\nOxbahmheBpaN6/jpYD5mhxf6WJ8H1LJlCQgqFQ0CAwEAAaMZMBcwFQYDVR0RBA4w\nDIIKeHgubmV0d29yazANBgkqhkiG9w0BAQsFAAOCAgEAhZ55CaFCuDllXvTbOIa1\nlEofY5VLp2drXfzFpvaxfyWjLas2lJ0viWm+K47V+RWBbiK1HSMZnTdKLaBbD8jq\n40rTV+5T/BI9iJQELNZAzTloiavhFhsEvwVfpVjPt+W0o890KCn7w2UZR1t2XkbQ\n4xfSjflWU7xxwOginHz4sfTk473BvxJbG8lEypbx7+YzrrHaMNVbKyOnPWPSRSww\n/z2cvSJYSIKdcij9BFo3bL/L/tpQLz88Zqd3kF0W2TaUofRHvt7pybCJw9+HpmBL\nlovcODWLSg2EqGWFkzVuSbiDywswwB8qM3OkNoTaZkZYx6Fs75bPjqoDsUHsn74c\nXNHagLL2MI4vxWJhsxzmvib84amNmuPp8ehJ9RQbHWn+xS+2XPYHZCGMsZELlytN\nMvu1V5ttRpCa7WusddxWvHGKZVs+b0ri9PRpKieVrUM8GlWpSJgXIN9xF1rbqbfm\nXv4Glw0IGFrDMdxah3J/nWyreBDN1mvjkeOmohlrZXaVXdqn7KQPVjKkEzwQedBl\nUUVrf6KnmOIyIKCj5HwMrW5NuxPPlcp/7heMOPtN0UROFhsTpjXkmBQRJM1pNmLY\nqsnMBch4fOJtfqC5ilwfQveP+37z3R1pBRT+7tVjF5Yfv2Jyw42j3Ps6jhVK4SCh\njHEj9d1W3g6G4PjbD7K8kDY=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"iQDAmGMcyhutV2tAt+YhZ1HDGi5+1kpDpbEFYDyMu1gB","Address":"213.136.70.8:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUHyumV1NkWloNKzFEmZLLi9EenFYwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwOTQzNDFaFw0yMzExMTYwOTQzNDFaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDCM/i16ogrklBBluuqrv9iX4XgZe1jXaapgB98dkAY8j+UuUG5\n0GNZwy3n8jkbaJS1r2PXOSghSbr0Q9o5BY8zX1hBt17lQtr3qa9jssexl81R4nGf\nDvbhc0Q0zHt64gtejSpLVYnf49g1uZrnEUnjBLaQuQANe4bvMJ4uinaR8u7p8AiF\nkV4BQF8fzzQwN2l1MU4yVjH/W4lOjZBMxvNsEyyda53zmkimfaL1I/qIO7V/5aCK\nsHw6KntBKcTkyCV5C8XIvXo2ypxH7k0PKfZea8u4ZT0Ezr2LZoJwZA31hmgSYky0\nAYIYmse2C1BXn0p6grDETA+aKqzafYbijSDBPfXHmlBj6oPfVhDie0zfsAQRoTbp\nwLYlAu5iYhtjc9Crp1MqZF4POg+KA/MvgiGqAInaAIkTAnmELAPmuIBsFzNqT+uz\nsyY+j1tii6E/CqDbfPCoeZB8CLxpmypCKCWsItt3WzdQgtfJghMY/8u4BY7GesUB\nC8SSuqdQDykqJnSVc6T/5q4M2gFdC4dkL2jbDaWbvebH//3MbC+/kazuRkK0LA2q\nJz6+ov4ASBjgbyelEkFeAlysPywwVOAWxS6a7476LEfPdMAYj6MPLhD5xQE54CsT\nqAf5885QGJGzpnL163XX+NMk5eAnPeqtzrGm3Jo1aameJFsiWnSMkhNzXwIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCJ\nNnX8KB7Yx0FmOjtZf/raFoQYXydGM/PepTKAgIKTsRnABrRiXqcRM7wuCWrcvQLn\n6PK9+cXAeRAFaZFWjwTVVtihkS+I5MPmNiafuqtA6ZxgokBEQBx+b6yrMzWKVEmS\nj+eLXnjNeIwlsqLZebY8sA6FYoU50qOvlZZz/YW87xwZetBjZKuiKbLGUxzfHilm\nRnTo0sGiCV+H3dEhyPU/OLmVASFCNKIuFJJ3r9MlYOS7G97yHe52i2Q149YpyJbh\nZLBdJRoIpDEs+kj54F7GJR55SrjDoIfu6KhMBfLjbb4FSc5Sfk6QrD9hRsmTpMeg\njXfUlTUPcsJKFcDDw/ansqpF0rDErixKkm4RAUy3q28csaIEdcZxeQ12IlgawwCW\noiEkV3gI7zXdOP/6pB0Q5ehiU8OtQd0p/WGVMIR/Dff/xmJsrYhZT1IIlVMmH4//\nafoF4O8iPQum2UR/W1XAh+9Gubj745KZCr9zWBewrYXACC5+Jqex6uZgoCQVQ5dg\nSBVP9N4l14HjCHsbSIqiVRagAhJt0SZHZ4Qaq+sGH21t6pb3ORZCjM+gIPhqSeRK\nep8IygnZkYTojH4UGFdLgxTVFfrrvJFe7mgvbi9fg9vzkiwOOy6d+11QbcXMzwrX\nZl/A/QxS1c9SBcMqVCmPhE8lj945se/HVaypXKC0ow==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"fP+Lh3ng8mU/ZwqeQtuDg0tjnNwl99CxcYAZi+lOlFQB","Address":"95.217.152.85:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUaKwLzI0WXxCXar0VmXu5GL9P2o4wDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAlVBMQ4wDAYDVQQIDAVLb3p5bjEUMBIGA1UEBwwLS2ll\ndiByZWdpb24xDDAKBgNVBAoMA0FseDEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MTMxMzA1WhcNMjMxMTE2MTMxMzA1WjCBhzELMAkGA1UEBhMCVUExDjAM\nBgNVBAgMBUtvenluMRQwEgYDVQQHDAtLaWV2IHJlZ2lvbjEMMAoGA1UECgwDQWx4\nMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBAOdFFwlB8bOqfvbv6Iv0Y8cfT/biaBbZkrkT+YTJwhxnmWTNE0Fc/Mp7\nglsBa49c+XtH9uJuNVv4bfRWtKUgPTKP9Zx07XGjcpBykZ3ZBVMsDUM4p1Z77sXC\neRTqtIW8B8ZN/AjWAzamT8XH8RABAyhf4SjmRd3anF0K3ZNJXZ7Eh1gFx4p9ovVV\noaBbMFCBCDhQH+a5GDfNHf8XzcSfGS+EUuRhmAJWvbzr3ykidVqmNP6JV9tmP7Vw\nvL9SfObPd6KcrqR0uH3e7fV8JOGTWEvGABkEQasDZHBv0IpUCGZcrETb7WWveO87\nGqSdFlKIycYRrYRjA9DR1sP01IkUtRTqjDNsFMTw6TCBvQU1MWDckp8fw3a0DPh2\neHqHpBWkbW6UsMyTDcmqEpNjJRBkIVUJ5r7+3fNVkcwi66z1K01eGJ0T2GY41azz\n88405Uc6BPrw0L91T62gzgYz2wNzysXiuNTWtsbmbopB+lQ8wGW6vpJZ4Od+rt8W\nMnSAKMLmmt0Z3rM3PIvC7rHPJauj5BVA9uABMk7/YgvX8Vrcabsjkkl9X+NDrhf2\nSijKYk+q/yIYF49WK/59CW6tufpMvYtDOF0lpjyaxGRKt8vVXENfw39yKeXur8Tw\nuhdE+wFE1MX1O145vysCIg4GXTaumAlWKyOINCBVEzO4YQVkFhZhAgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBADxWB3YK\nlFWNxDb98kf60ims4SA40rsMPh9mH1c3vcxAd+vo8vCBXmW8uKGhAnlV1HfxaRjF\npQQXfvTYTE8+5JULY/Pd9bP8OVxx8AIGBgqtoNKM0D38nv6TGxoXjEhDRjH8vAG0\naElSIFjWQfiSgmclDXOuGyx11uj34tCN8F5DwB83kcbFGa7ps7sfMDpaRbfs9467\njUO35R93BvxHUtHc/xgyXa0Ag/lVkGNPpSyXGqqjPAFhBxRPMvbC24kPcZt2mAcx\nseNeCQK/ILyZ1aP9BYsPomgI995nI4QkJkS0WHUs9FPzs1Qw7vOR6bM/ES0dkLJ2\nvWsM6uiFTj7yZQN+nX1bHNLAgUyFzQzLZQQHD3PeYxBLyoWnLVdoyn3Gvb4mUdka\nu8YJBxRwW3TgGlUgIP2wKyk1wgOeJ9DbpWEUImgalXEy82QZ2MSf5s0sAmK8cqm+\n9Lgb/G6i0LvAxRCLC1tvd6mzMrM30PjhwyjXlRK5BvEUMRU+pT32hFLR1JGyKUMr\nLoFVce79C4ppHizdbZZSZSMGPOopMg44+FII0+u1w5Ttvi4M79Q6ax7FeayAVxcT\nklOm2IZdPfUEkpeQoyAdgfN8nHrATw0gpNcY6p9A0m9A9boy/sebDyWxBSPnflh4\nESH5U+MmoMkJeU6MXXHTcrjNHtlZ//T0w1TB\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"i7R1OUCAqa9PI0AReIFAME07ZLdgBbIFM28yxpR5qZcB","Address":"nodochile.myddns.me:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUHMYiJ+six8F+plEIfCjsWebo/dwwDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAkNMMQswCQYDVQQIDAJSTTERMA8GA1UEBwwIU2FudGlh\nZ28xEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MDI1ODQ0WhcNMjMxMTE2MDI1ODQ0WjCBhzELMAkGA1UEBhMCQ0wxCzAJ\nBgNVBAgMAlJNMREwDwYDVQQHDAhTYW50aWFnbzESMBAGA1UECgwJeHhuZXR3b3Jr\nMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBANxrfD7GAepgq7rLbVD/tWtVNFWmuW7ec1Od/vA8iu/DsJzLyAtWDy33\nFuYdwHVinYj0s3xjP2MDeDd/EarYhlc60n41VObML0i95zGTBM6yPno+MW0gJXBJ\nFqadx5dzRliA8lBrlKqQ9TRIGfebc+vTCh3YWXUykwc0RULzrNKuK6lhsqdsHnTo\nhyNSPiqm7pHl7COEOoKPmn/f0To6GIATtI/oyEpFAYuQ4nD2vplUAMBzg9osHHAw\nofgTwX66bT4TEO8Vi+eJfD8nzdL1j/l5QeUzgkWnXcOrS2Ubb6U+dej4V4iX9npi\nm/1PzrhhdYKm9X3e1kBe4QRbXDfghBRLZYfy9BfACFnUPzZpiE2ne/Z16dwFgGjj\n9WcDGPgkhhaFeEjRAqVG3KysrL7Jq+DzEKaiJiC5WUdQyU54H1trUu06Uv/G9A3R\nUvPgUOTrHSAaRWwkKXu08VsFhjzBfsavlssVPs4cz1dvMm+BdAouLw6VQb5EbqIE\n541b/SCsd0AkWL3Akvw0lYKmO3+urrDHhDbgPTWDAQsxiJDLPusEwV03P18iE6SX\nR56tucI2HOm9PSHN5alVOvMLrc4pVbvgOOGVLSGdEGLrR1mBYkReze3IMTYewUyL\n1xXgOjIMMklkJ9mV+Hvn1Qm+lXxlGjKg3KCXSEnNUaw2Yeg6WeJpAgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAFwSgFzV\nAAlulM+9GYQiWoEImd50Dh1fND+DiPXLNcN85bXUVXCow6w7JJqRkfq70Hgp+eBa\n+GBdWB5s84E1ZurgKu9t4DMfH+HvtGS2klycLHVCa8A01Ni56q/BSrNO5typ2UnJ\netoK8Id9lNrCIScHA+7gmSPiWpSp8PsN8YGYCbQA7ch4Dxa/q0QeYgeAJIpZh2jf\nA1e4gWr7XSR692AD9jMcT+QpWm/NbJzrv3Qy0tC4sy7fPr9g1Xdkp0Q3FYy8Ilon\nFWdccjlnG65jQUG1DemQplHo1B3XPAVRkVM4gtqWLOwcOXfXE0Kk+eHCGo9H1S76\nIUgfNSINMMsejejhkDWRWCN/aWLAbQIbDlprE74EAEDrf2K3dHIJX84SHRciS8zy\ngiNZVNEtO5n4BpXDktoOeccoatI5MI+zZsfqgxPkHQbgvsvXhjgA+s1joPgK2Umf\n+Suf9xDdFVRVRQTnVK2LrT4ht7lvqGxYsDo5OD3lwz0Fa63IxQuTAi8g+nphPBa+\n0JWF0qvfxwb7ukdQguv+oBwv4kc4NMyMDzKAcMou1GDLeUOQ+VYhgeMb57JyNIOh\nCDwJ/KtcPsFcokrNedn8TJl4puk1Sc45WoOCHmKSS7+4+TeKSxEsm2bZfAUBYZM0\nWc80DxkwXDFI9Tnzdka6XV4OzWuhGYGAuynR\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"GJxILj6ivVSmHI5TO9m6RsLii/UHJtRVBSXI6x/dIhgB","Address":"159.148.31.232:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuTCCA6GgAwIBAgIUVrvc5w7qDLJ8XnN7h95SkoDuIe4wDQYJKoZIhvcNAQEL\nBQAwgYgxCzAJBgNVBAYTAkxWMQ0wCwYDVQQIDARSaWdhMQ0wCwYDVQQHDARSaWdh\nMREwDwYDVQQKDAhTcGFydGtsZTEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxIzAhBgkqhkiG9w0BCQEWFGRhcnRhZWl6MjdAZ21haWwuY29tMB4X\nDTIxMTExNjAyMTkzMloXDTIzMTExNjAyMTkzMlowgYgxCzAJBgNVBAYTAkxWMQ0w\nCwYDVQQIDARSaWdhMQ0wCwYDVQQHDARSaWdhMREwDwYDVQQKDAhTcGFydGtsZTEO\nMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxIzAhBgkqhkiG9w0B\nCQEWFGRhcnRhZWl6MjdAZ21haWwuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A\nMIICCgKCAgEAx96U1zwr3Pr8iRT+YQFOsRKMYFkcc2MqWTwc2jkmCrIOippKJk75\nVDctgKZGJx7oXPgmwpTayZBNzR3f5WllGTGsS9sGDOKRZnkPUmJvQxYEphy2PxYY\nhSM039kN1RZS/+JP6zGzAk901tCuT2H3f+sjOQMP7pDozWkUJ8x9BWWZeig27SMs\ntknhLqkzXY9EVJnC507kTvJTo/lTvnI6bpQmKyZkTqCFGxuinQ1rAD/7hSoQqQve\n67vHPJy3r7aF/Vd7uc4ZI8mFTGBRRcIJwhQatnisHaCOU3tTKb3WL11koUEwk9qD\na21XnSO31jXaOScyHFtJgYOdZC9HzfAFIth6t9xR4zURRTVlauK2OkI/N/T21unP\nLC81UiObP5ieAoUmkDT61RV9SYM05OCGk8gX6rrXE36QcRgdLLSYTWb4s+cxkNep\nWnYAbYTtweIEVXLnK5WTf+OzrX0KnPHLQSab9fSt97Sxy/7OJ2GttasCaZIaJ2JX\nvbSTByZUMFKrJ4Rc7kJd49JyPEDiOPO+JRGaIuzhZ8LIpb8YkTf75OR3BKVHbH6k\nmzY9N49pl1SWdwiOE2yDBaW/qGhx3HPkxtPlKhv068xBp7RR2nDHjIlUekQE7mfp\nK3qH0VK5I6Tiaa5/7m+FRp8pA+fbV70KThhPyG+L07UX77vJWhgcNtsCAwEAAaMZ\nMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkqhkiG9w0BAQsFAAOCAgEAuWhi\n98tRG/qL3z2vRkXiUy6bUU4RuDZmIeicgzzq0sH4gFbmahKyP75kE/qqDJwm/11K\nBA4udtsYohmel0p1CE2vgBV8f/XnlYju0k3C/F0s6CFJ3IY6MWI57+fuj3HhvCaP\n/YJeNpaTC9vEovgc49BYOFdfg5j7hcpw4vvvt8LOp5D2Yvl1pO4OmF0btO+YlUf3\n3VJ8/uREGpH/65XaOBBPLROB0WcwyX/HHUHifixuiX31JpgG/JCf6cJ6+qlps5Kw\nK3/Jdv4mJ3ZkiZ3MB+bWLaZXd/3vi/z8FQ4JTcITPAUO0oNrhO+/CvISR1RhIOrY\nZX/Vz/p1TgmmtjzAIzjwLuBrCoDDE92JLGSiI2T/yi7CvFw99i+yuaQmp13Wiq3Z\nODh4Z+cFDKju/Dzt6zLsoNas9Hztu6mGS0ZfxR9AQhb5A9Vqw/TxeY0aeBmCEdZ1\nhxqkn5AXMly4kdoKP9QTJvhMuhisKpBbmSRdDAUmRIdKouwYtqpW6lF3di1P9jVl\nMJ2X0SJzM0lm/JizGphcxTsOdvniVSs4g6cXNDP9OwiPpZRrw4pLG4PsAc3b0CGY\neXpbPaWfBqBpKrLn1xkEh1gO9vD+oYKznTrJmjK5/RiphZ3ST8/JA4ibXFzXtvXh\nrnV2UuBSFBrnQdpjuOmiYCN3CG6z9q4eBuqUV8Y=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"9a4a0xOF1jI7LnB/TgVSAgvS1bfJs/RmLNkAJ7ayhIcB","Address":"101.98.209.195:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuTCCA6GgAwIBAgIUR63hBeiss7UKTewwYP3m0MivQT4wDQYJKoZIhvcNAQEL\nBQAwgYgxCzAJBgNVBAYTAk5aMQwwCgYDVQQIDANBS0wxETAPBgNVBAcMCEF1Y2ts\nYW5kMRIwEAYDVQQKDAl4eG5ldHdvcmsxDjAMBgNVBAsMBW5vZGVzMRMwEQYDVQQD\nDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3JrMB4X\nDTIxMTExNjA0MzE1NloXDTIzMTExNjA0MzE1NlowgYgxCzAJBgNVBAYTAk5aMQww\nCgYDVQQIDANBS0wxETAPBgNVBAcMCEF1Y2tsYW5kMRIwEAYDVQQKDAl4eG5ldHdv\ncmsxDjAMBgNVBAsMBW5vZGVzMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZI\nhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3JrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A\nMIICCgKCAgEA1ITd2TXe5d7pqeWwFsrg/glJnsFoEAvj67d7WgXoU8F7u+LzLUWm\n+ve6aIRTgVyBznzf3cnq11QZ+G/Pf5asO/gFTrzBvvFEksxQKpSqJ4vdkvoNyhsy\n+ejOJFjiwB63zdYYJfkdw7KmrbdnMc+tmHNUfyFAebayUMdDNwFJpgMYl2xgkGa/\nl6AAARhgHzw1dm6XLXpbnXZpeI7027QuF2num8EKpDSzTJ+XHfG0WtVmk7UIZGZB\njOwNN7cN3zQQS0s+/J38LFV/788M6J5r3FrtuaPlZ1W40hY6uLr0kGt23RZZXnW/\nCioiSRGZbXv+1LtRsG0+zW27hJdQXB/6kdbt2H6G+WlhlwekpMbmhDTO7nqgfd8W\n67P30obtTC06f7apaJq6C6IObSE+OG+yxGsST0iafZnOfo3kdf3S983FA2BrJiZ+\nY6cP05cxZ3nxj/o0B48BQk4lmuUvzKsRtvgCoWxPoNAu80TM/rzWoPqnWUmf8hdy\nqiANJxTR1emyoXxTrUrukzqnZowV9y9hOChrmHtwuVFkHWI8OiCOvyBWXtDOwuo3\n8zgLBgLFKpf3kNkKH+E7UKVjjUbdeeCQ0/SrxN9Nx7ZTwfA/f6UKCxwXJFqfNjZ2\n8oUDuDsffgeE8xESDi3QxpGfTYNBg0k7Xniy92DCYL1QqQLyPV1ja1cCAwEAAaMZ\nMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkqhkiG9w0BAQsFAAOCAgEAx+rN\ndTwupstGawFv/Tdd2aYB/JIhaV685dNhMa2vXfiJO8YbIEkAAlYpxXeRNjohOD7y\n7TsauM6QeHdVy/PZadTOP8dfAVITEQQn6yCPhLju37vnbGrf+aoH9led+Ckic0pk\nG54f2ts/ZsjRJxfufEARswXP1AnTMxIOn+7kG5CIAeXqt03WMja0GXJWy130ZWMe\nAJ9M/eNC1IGVg9R/s1uvl7+KFO/f/IihuXSwDZVX0ubH8vmL28YjU2eG9Tg4IWFG\nlZcJxMdhW9K4vjb5zMPtefkWzM/rieAZOtqrOWKP4FB0QH18o294siMgnCeJOxTk\nUHaQaxUvva3DOTsVl+/4tCSIy00m0yeA9gCANlGonxbyIoZJg6WcufzNK0tE76Gg\nU83xDeWWBXuBXrolcnPpyy9zhF/VLvPq5WqCzIcuiiJvqMPQaq4dMZbHAayGbk0q\niRWFhgoW82RvDjq36R3U0fIzOCBFgDe478L0WZ1Ec53bQIIZV8XSmME6H+V1AOei\nq6852/IUoYUC03AWF+/KPm1ThLyM3zsvWMQEONR3SzbXkIMmuHwfrJQj55tPyNRJ\nBiqgq5ps1rt7tBP+paKKMn3olSaUuA32NhgttuNN5pIULjmNoxWfCCsLrYoGcnYe\n9SbyJ0mqTIg30QxJYpWKPJOXgmNyQ8oTbF0odzw=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"VWa7ryiRC5cvXc5kA9120tqrGAlb8TvPfpAWnh4y2V8B","Address":"209.145.54.119:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUctYq1ucGvaKOyNV0PfeO3FpKDi0wDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwMjQyMTdaFw0yMzExMTYwMjQyMTdaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQCt86mwP1OnYZC7iWZcAL5UyVzHd9YPa0aZ0FRghNbLXoGMOXKK\nyLnv6HmzeqVT9ZzNpuIrcnFF87R4gDaTbMoOa1MLMq9zgAvg4Q4FaU5yMVcXu8G9\n4iZ/ygxR+AtOtkLxPd/8pUGZWSu/S1m4e3cYalPVfU/2cW9hIxkegSPBxS2tAVyS\nSmQZn+3FtPHaSEHMSyqxJV/Ue2BMPgtb5I2YF5XYVBZQd9aJuwGATt8H2wKqQg8P\nrqNHGz8RLx3S4jxsUMohnhZP0piAp4SXJYilYqg8KfC1XQv/VdKIUGXuA8jdf7SQ\ni/43QIbWEDl/3k+0BxScNC7KkNfLKzmLOYNR5TOZpSmjj3Lrf+ln5wxBziKZvp9V\nRHCDkeES6fPO7FZvp5jXPcFj0ro0paZ5yrchGK4LV30CdMSnMoE6zLGJRCJJS9ef\nUn0a+WSZ+ql2CmbkyD8wiGJhtSkeFxvzUilTh1WvtrFW21IVRh9uZNLYKlUG2h07\nc7TotMiWvd8W5wvRaSzxaAKeIiDH0cQCHR0x1hgdx3163bQvjVVaVuPfj9/BeFuQ\nkvNQXpfrl9pNFxcvm1vC1hDa2KMk7JUP6AdPXrW3N+ZYVBmbJpOUct38aRKxsWXv\nbYS114LzcDbsa8Xa2f9h6N9e0FZvdjv8vSiiE+tr1/fv2mGkEsq/GcPWIwIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCc\nSDtQhkQ+swx2UsEN522X8vXiHBQ+bzRW3fFMeLD/xw/vPpnWryBl+6qkCkyVgHyJ\n/VTu7GKtC8YgJ+3b2QTMgYjqFFzg96S53p+e0mIn4tS40zvYxfdFkV2sFb9wpDQO\nQlAV6azSgLapEY8pFhu5s7xTk8z+3OM6QkUryCqfedNSFypsAR0dUNI9/V1VXbGo\nSbulXiEh2NmBBVwN0jzxTVMF6dVF0QeLtDHx1NGd/837kg2zpL2jq50Vh8Q8Z4Oy\nWYo7bncc8nAJ5+skz61Rou80ATWUEvatFhQ9eruxezDx2rGkeTfkXWNa19+hNZxN\nAWXoho4LkiGsumyDdB1BzPS+YgOgY8CHo0KH0uEOC2Eamysu2k5OjZTiFiz1knRi\n4VCkixaax46vp4SQESOjE9IbH/argcqeJwlhg2UUcWGMVVeGzkv5ZGBCPL7enFrv\nbleOw2AJuVc0GqjnQHj770pHsGaRmgP/1Fef+fR6hOTqmoP8LD5TYz7JeGb8L7lQ\nFieG2w7CXirzhzIhi9gUxJSQtqCY7sBK02fXR3wUwAiH1SyGofCYYaXuzNOi5m0G\n23J16hgnGOF4QVy+1yJ/6M8qVpERaCvPKDndh98scUOUtpqrVYbNbkI0z6vy+4g+\niBswDlOUWmRzDiHiWscVGiPkTU/f+xdVDEIbeDTIig==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"clvv9REWUSIy5O0x7N9ipWP+XMNrs/934xwj27puCNQB","Address":"136.144.189.230:26700","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUTddQ/+LM7wSoRyKixpmLJoXSM6gwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYxMzQwNTlaFw0yMzExMTYxMzQwNTlaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDG7Ad10bxv3arKL65qlvb3cC6NsVJgOXGqLKksFcggOwpvNozE\nU3ymWTMusSYp11W7/5nvegsyxaGZRqbUP2sGJy7wnH2EhElwwJgNNXf6ZsKmPat9\nls5pMKrB2cifzmTylT8glw0jK/62S/3uhd5tizFGZL8n9Xis8yQ8fCVRMovK9EhQ\nM8C/4UcHLhgQyFQMHy2czG5315dsuJqFcmhBZdL6BQzQqcwDgOstClyQepsLkVn7\nFDDKeh/1xrm/STe9oLnWzB4qOZIkMo6WBmL+SMLWPqAMdU1Tb+OtnOecOLmpLqzE\nEAFKXxfMFEbmfaJoe0T41kyUl4sSbG7ggf6wJEQ/x/FUKdG7Vuv+SIf6UavBn9AT\nh6OUATYBUdZQbkfncTlYGf+cr/G7dNZxsiOWvU8oizpqkYs7SlFkhOjZFHncECgh\nlBuVQfrH3Nn30U8nwHYGyulmNV2l6wVlVVl8yATrbsarHfafdZ/r9QX6iXJCJnbk\nj0ne3DeP5hIALal9JOG5sw+8PJAO3/JTLfHRF+6wdMjqtClPm4U3rI7UeJmSDMrG\nWw2gR2n5PzzXfaB0dSCS7TONXVjerFYlmcFxBLFunjJfKlAgg1XCuPNEoLI8ThsF\nkN5fjq7+gtQ25Jsps88v/JibqMpy9HpHYqOjSbEvAjdYG7/vawYQBKb2tQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQAW\n8vwXzB+D94wBE+ato5ral/dCOV7987IX4aLxErzzOYN2ALN+AAPhR6LksiqUERvE\nnDPz1m12tPAwTlFTjwxNa8yfHQQuOG4h9NuEAq72Iesbn206y59Sj+XfPJOfHzbW\nB9Y/w7XoqDNL1obSDLUvZWGsle4xbdMXt3Owswt3I052a7ybZkMrUQdxXK9vIE3P\n+KBIO0UEfq3CJf7ipZyn8tCmUxw01B4osJpl7EAEXfU2160JLGMrf5rEyCpvWwIp\nrDthkNqVNizKILOR90Z/eGE7cVWDfwtkYBR8yBaux9F+CRlP+kj91FWVC7Rjocnu\nro+cf+90/z1wHrqEZFTna8Cq2oeRf6/YgycLvtnVn9R6o0tAfhX+rQQL4waSgP7R\nkQg+dscxjUCAWQQr2SfWrl34+0xPAibmB+5XWXdE7e29krwNF2dUGJRjxTg0xOA4\nDe5ESQXyT8ZuWqDZXdLYh1YYvh6UjBPIpF4FCf9FlWYv/4N5K6aWw4O6WgmCq8kn\nbceCPWxUCqiCjdW1omGPaCOEe8nieZuoFzmDkmYRkDAQLPCCOOXAYQGyd2GpMumR\nKizCFRUp1Qxk4JR9xdkuF9eIBL6L/W+2AuSOcxSicZyNQRYKtahHWGFp6QCF4F6g\n5rfc9JBTd/dDHYAI25qIWu1X74yaYtAamrwvPG22Vw==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"ShyYLZ/JsZBHtrFmR/o7QbZp5rtwj4aQNfqeD9voP+EB","Address":"5.9.43.132:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIURSuL3xrlGIPTsundFCiG40/3XhowDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwNDA5NDRaFw0yMzExMTYwNDA5NDRaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDHdbYReGwU3neKQeMJAPf5FdLUFvHmnzOuW6BZdfK2QjcT9l23\n1IpeVqb0hsLcQL2iXy2y7irVHqdRu5hlcHE6xZK0AWU8O2NhpD+jadXrVXT1gogA\nFciNViRQmvjjTJKllpoU+bs+Iw4gil0s0Ov4EeYZsJTE8Ww7xZWhGyEQApmclQRn\n9eciGPwk+BS+1Gt0WQpnUp7GsLK23QPnETbE53NXxPIg8fUYjewI2C4K737xokd/\nCEN3iAmwrRY+t4kUcYn1aMuMasLWgXhGaMH/ruqpEjVaV/qdNooeF6Id3c7PQA6J\nnGjKyC4KnZSu98qpzCUGgB1cp5h0KATQyaugpRR462vxx9SsCo42WhBRlEHv0YjN\nmzWNPgjvS6HtVgTpNu+qLVXHyl+isZv8Zd0pVoQueaVdRNFxmQKVkaHl65D9vmiu\nv0xvZ8GPyLhuiMCig6SyhBN7GRL/NuQtYw0mj8y09VYE4aqnH184wOlcGuN1IAgm\nqD0J07JFANqflQMuOGjqaIcSLu6SjgusK3uUblpqffh/IrKTMonA50ZGFwWwJZac\n+d7Q2InWm2/0U3WLGFBSkjB45sHZHsIZEWyIGjSNjGzh6aLNv3SoodGJutcZFiO7\nqd8QH+cYQAnBF+t0iMJp8050HPvM9e55HH0uEhBOCELJ+vy7OjTYDZNohQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQBd\nLglx3X77cPeEHOlwzkHWxmkQNgRNOJWa8hA+Bm0YRhn9Os93epi0tWvuJrpVaRrw\nmoFp28zDB18Ppe3M1iOsxzn/f968U4LdHsf1arauyn0LwddMBhautDxcDD4TZqre\nT8I3iEf0rhBx1h5mMLSuqN/lVw+Pdxlsl4Z7g13KuRaW+kuTDnICpkGM8j7RG8ef\ny8cRdEb5aEM5T01B98sxJuwqU5p/nGcesc5LffyBEiJYxqE5DPXU0n75NDnaOya6\nL1JjrY18+aNv/k6NrmntJPJ3EdYA8bEtUeIuIZoe4MpSFSIqB6Qz6I6hwFkFHAYV\nxDrdJKxH5d1DYTsxzO9vYQTIJWVjBHuBu5rRjQm8isitxwTyeSKRkZqgYV8OF8j6\n9GVUr2zgcjGgNE8hQW+R1S1gYTQ+q8OOHCKKHASVC0Bi02D7EJQlApkITEK10TGs\nFIKnWadHtGW74/ncY9N0ZCjN9SFrf9MsHUmDNiyjYwTNy0z+wFSyLi1fTEL1CoRq\nzQsb28jVc8p9H2z9wpyA4YStl7efYtQMoADnDNcEVjEJRsqlvbPWOt5Rv7SWOsEa\nRdytxqGniI/QyKRIUDFX9kK9McG4J/7R9/44Y9+mRfyXiBaSDklPBkS3LB/eoABQ\nosa35H53VIbAU16UKMAabArUdqDZW+vWJS5ieIaaaw==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"p3gxx3NhA31meRws/FFO/Gqt+q8tv8RWCMChw3wqjCMB","Address":"149.210.192.112:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"xX/KPE4W4riDVdPJi5LFnwTrVS/5jpWuhUcv8SMeM6UB","Address":"65.21.76.35:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUQ8uCc7EYacb1DCc52Uf/0uVX2sYwDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQwwCgYDVQQLDAN4MGQxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MDE1NjUwWhcNMjMxMTE2MDE1NjUwWjCBhzELMAkGA1UEBhMCS1kxCjAI\nBgNVBAgMASAxFDASBgNVBAcMC0dlb3JnZSBUb3duMRIwEAYDVQQKDAl4eG5ldHdv\ncmsxDDAKBgNVBAsMA3gwZDETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBAMuYtj3bgoB1JqFePwGSD3V4agSlQnnjAiJEk5C3Pm1zG2dFdxDTLKBC\nstmRpL4Ij00ihmwUF+OdNfk3LXMBLjldNj0pkG7DMuRPGoWMU3scaApTEj4fIRn8\nKsXOD2dG+CzHNh413kBJpeJhtbrDgp6QABWSwhoBAzoabWa/cDVV0bvIjejrHTBR\njhOcpOXlwIBybOidXgIUpjpGD34ll0zVKdEeBwAo5LnfPHxYUYCgLAPGFo9pWgje\nnqrl/3iqKCHkRcLH7pHNYoE/rys6XTVY6JhqRFpTxGCZ7YFeiKP9D1rk2yYGfmWH\n44dFcS6Lx79O/6xJ+4ZlG5Ed3NkUq4aYq5S7RqQhjS6r8wqpXrfeP1PJ6JNMWeCi\nPMRHfQKPQGSeTiyIgminucsR9Ckhi4F88oTK7ol70wKWH+HerV5tulbnsHRSc5L0\n361tUvxoSRFa1ZTgpcyBa2b4wa+H8Q+s+p6Hsl/AuOmiZ0KOzhh5NoBUI1RD3K7d\nJTgISZ/ABMKq+jmkKF7SPY7i1g6sUR55ji0h5w7sbpQUWobOuk2UVxEuHXTkMuiP\n4l72FADzJRUuzFpP+UxfIl6zTkflbgRZgULKHWjgAnMgseSsd1Y/zmAWBetyRTWp\nV00R4h2FTnDqx/xRSunlw0jubfDra4pztarZS0t3tdxyyUvMzFqjAgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAFQ0AOlp\nfZCj62KTPLplSOLzS2ELpMyDASV3sVsu6B+5qLVCeA/EpBNXBR0XG4gmbtNoIhCl\njkB7GFE9KomU4N8gppxQK8VtWeh3V+VAMX9qrtH+LfVS4ueZ705JfAILK2nZ6lMB\nbwXuUukDk4X58aRhFxsQAduLABHrhwyjzap3o1WT5DBN3Sa6QCmaiv5f7CugLiIw\n2KjlBEKI/09b7qchCtfVBIQDIqjA1OQ4/1/BeLgx8p93IOzjRFnPky88PEV6B6fY\n0u5CxTpu2LBoP6wF5j4btPhdthg7km3gW69jQ01fdwq6inazvg5hwjnvCH0XH27W\n5YxNmQ5TRO9xF6ULnEbMvABX6Kwxg6Q7XOdz1Cyng6tMjG1oajZnyzu4nog5h3Yl\n/W20VliNorfX/F5swc4PUKjXs2P3taT44d6cFWlDw7z/JWnwsLOHXr4EGUaOWqG3\nKTEg1ozgPyF5RJPBosaDdRtptN7N7uIixS3Mb9oAPAr0HdpNlFV3fFk48aA1fT6c\n+DJ6f7UniseBuWpWUOwvCZ+g+RBwrVZZYFkITTYDRBGvnNxFHPb45wHYDeEP6oU5\nadbCLk5QDxSsv9fgcRtkxfWVGmtOLeZwo8x8jKaayF2Mn1eRnva7NRHrgopgUk6v\nQvralqs63bAbAVe76W+BwCqDJ3HVu/gGgZ5a\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"s7fX6tfzPtzUBIxloUAmKaxIX5ZG8qmrDg5E/2y8J9UB","Address":"135.181.213.94:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFsTCCA5mgAwIBAgIUbqQMAbs35w27/CyHQ3jPFhCBBG8wDQYJKoZIhvcNAQEL\nBQAwgYQxCzAJBgNVBAYTAlJVMQowCAYDVQQIDAEgMQ8wDQYDVQQHDAZNb3Njb3cx\nEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjEx\nMTE2MDI1NjE5WhcNMjMxMTE2MDI1NjE5WjCBhDELMAkGA1UEBhMCUlUxCjAIBgNV\nBAgMASAxDzANBgNVBAcMBk1vc2NvdzESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYD\nVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQ\nYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nAMpNZ88vaWWV+jaT05PmDPoyTh1rfQ6hget3XjiOdQZwT4Y64QOorMkl89Lhzyjj\nfJUxMgXP5E+pHz9nhDuFt+V4bEC8VameVR+pavFuaQmMem52G8JCbsVLo3DCP+14\noaL1SK2VJiVNjqNKmbgaCg8YjC9lOKD72mZG/SGCngbyoiofAh+lMYV7ddzpyW7F\nQ6Xr0Afrgy1+gNo2peRq6D7O7OA0DfnshpfYG0Cc4+IX8gxjpbO1pB6FBOPw61EE\nVTptYeg3++Wr/ZIMPg23ttvP3hbGVUVQUkUGeZr+TbZKeTQSfYc42aq4S6RTJ4az\nZDkzdjJJ6DSkgpwp19tM3695XW/dTeCaqXn0CB576aurZpd0GPfc84AhP+xUQ09+\nsLGqz7+0ylxLoN1gQvqrOQL7zjW9ybsuPFYtbFh/5JxdqWyvuToKdCJQyVT+EQf8\n2q2gj3pI+fP1E+J2/XFOHA7NtqovpFJpe7EJbyuaZrruJR4zRO9YCCeBgAPWMPZL\nlZ2jeDqyoJvvnXfVuW5EBFQR4Z2vvUBBmTxeJ3AQQX2ZEH42IzqBVPRXfj4fmiey\nU141b5TTgQMVqoQ1lx6Pcsibun6QHfJY9iiWtCKt04sKysK0el7n03jZyQcz2A1I\nl5JiHvzo3HS8YD5Yl3onmuHJf0lAwN3miV5hw3vfB0LzAgMBAAGjGTAXMBUGA1Ud\nEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAD6dl4bGGUcHmIqV\nFzc4gS05zJ2PyX7YUCP/KDvMPAZUtfGHUETWqJiGzb8HPc57gn3rnduztFc5OzJO\n5YkE6fh+8+RUuOs4MIPBU2M+Un9bJUK/BZLdGZ0q8u2fwL1Tlb2xFjsU8pgfWwuS\nfVCorcy4pY/ke0DqtPWPYtivyUwCjAFaeDVlfEpVKLaksfjbc+cmSLQYj7BnyoNB\nCnV6NWIfvsxmbrRqzj00icBsIlWlAC0JWrpwTpuisGaP2aEkLHDv9JOooBfB5N3j\n1yZzDfrQ2UzACrWwVCPY3OPTSK6i/hZPTFg61zuGCbdWRVQrJUvdPhed+rY3NKXD\nhv51eO694vqK3obNNoFqa1XRJa17Y/kERCkYdK4uyIBT7R2BFrdG0ev8kAAK5XR/\nl63xL8zTHuWAXUe5azi+pX+oat4RywSSP9FrLm5p1atdvaJPbWxqTbcztKruG493\nmGkRAkMv4Kof4grr6vV7ZTGgl8ROimPXeDSl6Okx2oOuCDnOR/AveVNJwj2gOQ7d\nD6BQV1krfZqpzkkK0Zp2N9B4yhSTRW4bHZf2HC4fk+RLy4/0TGJHm+Ox2dU0/sql\nBTNOf4G9drG0vOAHJa0F1l499Yb4YjjdqeIdjIrC0GrKxs9N5DOkUE05qjYGiFo2\njo93PvG5CR+muvs/f7PslltrbDeL\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"E0yJ0MEev4Qa/0fMk+3CiTOjfJTvw/XAPchxNL2GcfYB","Address":"195.201.171.211:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"M0VJIFfUjgZooWHx5znmdq4V0vICZ37t07wkIF5+GosB","Address":"109.98.108.250:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"Sl1Opwv2RcQ4oiqeLsC+CaOgP0ZTGv758Rp3VmSvNhcB","Address":"34.64.205.50:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"qAMQhyRP5dKU6pzza+2mkrqmXn6YOSR95FO2ghGQ1P0B","Address":"65.21.143.248:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"CCwGLF7sijVOAVTFAFJwf3p/vESvmV/UexDzvkDmxNoB","Address":"88.119.195.16:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"e+hUNYejnU/isNCcOS0p97PH0VfcTqfisFdCPFkdKv8B","Address":"78.47.148.163:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIF7DCCA9SgAwIBAgIUTADhc5nWvDJxe5DsVxVaIWfYI9YwDQYJKoZIhvcNAQEL\nBQAwgZ0xCzAJBgNVBAYTAklFMQowCAYDVQQIDAEgMQ8wDQYDVQQHDAZEdWJsaW4x\nGTAXBgNVBAoMEHNwZWN0cnVtX3N0YWtpbmcxDjAMBgNVBAsMBW5vZGVzMRwwGgYD\nVQQDDBNzcGVjdHJ1bXN0YWtpbmcubmV0MSgwJgYJKoZIhvcNAQkBFhlhZG1pbkBz\ncGVjdHJ1bXN0YWtpbmcubmV0MB4XDTIxMTExNjAwMDMwOFoXDTIzMTExNjAwMDMw\nOFowgZ0xCzAJBgNVBAYTAklFMQowCAYDVQQIDAEgMQ8wDQYDVQQHDAZEdWJsaW4x\nGTAXBgNVBAoMEHNwZWN0cnVtX3N0YWtpbmcxDjAMBgNVBAsMBW5vZGVzMRwwGgYD\nVQQDDBNzcGVjdHJ1bXN0YWtpbmcubmV0MSgwJgYJKoZIhvcNAQkBFhlhZG1pbkBz\ncGVjdHJ1bXN0YWtpbmcubmV0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEA81fWTR5lCsWDl02EknDroyHjC54ncVKVEn0O9V34FyOtVkEQWQSnaJGiWymh\nOFUe62EPB6zIkxMFYFT8IvaIqLpasLvvPPhy6EvnsOY712a6KbytKv4VgAbvJEAS\nL9XRpUhud/MAal/lOGfjTKGnYmHREPvTJi1Z0s/SUKGNNohNvTV4+KABA3SBfy3q\nXnMs3loYup7CuEp+jbCcp8fHqh8aPv4t7zBFyTXXYu7I1amCZSmxirr1n32SIO1w\n88WjVSfOtwVqWv6mxEXt9G0fO8KuKc2I1kS+uMJW5Y8qL1B914tW4W0jJ2yn6ofB\nZRBqQHQzHaDmyL/2v9MljpdL8Fpk7Qv/vjzd8kZ/EJivmGq5G77w1aGj1MpDJFMk\nDMI/n6p0pE7OFZC55879MVuDUcrycj8zHmm3N7seopWJ6dZKbBSwOpNZxJherviV\nExVZ61gJyPSo4gOcdNcDxRrfUj7qdiYQ0Y/cArnX1+KKSIcPI+ybL9Z61PULSepv\n+SBQKpkYRQUODG7+nxqQ+Tc+P48/S29ZpIIR8QN1OdiSFJVm8IoWONxsIA7w9L1S\nK9bgjqOKFhRYV3Gyi+FFlx48wCBVcg88znChCZ7gJwdwa/ecnd7Jd4hbmb7dHhWY\noFqWE5iLk3zL94azHcxSSGGKFPFjJFNBBMm9Mri1sS+MGVcCAwEAAaMiMCAwHgYD\nVR0RBBcwFYITc3BlY3RydW1zdGFraW5nLm5ldDANBgkqhkiG9w0BAQsFAAOCAgEA\n5ZdNpxYIezRE1YbSfNhdTyWKJYdKHIJ9YhI6/ntxWVee1KOWUXif2saoZ62zR6ju\nBPfh9aVp73ZuQi0OEVjknfc8Uw2KInGFq0XHEUABBe+aXQErIEiA3nk7lKHpqGDb\nmQVuKpWeohHsVDXbiOvC07YKDIhlmmMD0fLOqI/dVVYXUFjxNs7NtVUpXu15rQGs\n/3DyNNSmrfE7zHOfzhq+JA6BLq/8g/lMKy8GwPv2wRWNri0bN+9dniGTT9l1kIDr\n5VZ3rYoQKBD03IK1FUBxjFCkNMkRe5XIq+qnFs/MOI7eBFC1E3gbTseoJb/nV33A\nwe/YaSqkNllHicyEyRMbAz1vR9g6CPEEAh/Srzx3fg8ICDLcFHBjD49zQy6b7H4K\nyMALY4X9plr1qrajDOFsvRvmtWfe/CYLoafxKAXU8PKYh1L0JoJJFls04fTdclhr\nqgdHvR9DqhDnJeesBjZUSeOtXlmeHqUTs/iXUlVxauwx4sVb94tdx2TNXW3cSUNM\nwN9fizTKxGIRH9h9a0NB3D8FG8Vn1L9u3e8ETwm/JA4/8FRk2YWetl+UMc3fHi42\nDHT0Vp7fjYWSE5ky82/WDGgi8Vyr/H9pw9uUGLs1p8Pl1LUkGw0xkbeDQ5ocjgaX\nThgoXI5KNABEsn0BViBIXI7Z0NF19d2S+2RPLP9Ar1I=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"nBB08cV8T5O2VSL06mj8KDooje4RFL2SRrh46MVDiuYB","Address":"88.198.2.52:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"Od9TLAVziyLaN56ozcMwY8nMwwWXGmB3yTHCBsfItUwB","Address":"194.163.168.152:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"BegvB65xxvJXk+MCDSwKmhkyTpY/Nea1lIPasg/jBMoB","Address":"65.108.15.190:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUT/RSJnFP/NyLVTZJ1xNZFbF4rKkwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwODM4NDlaFw0yMzExMTYwODM4NDlaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDgwvNiwit9nRcsm1PpJyf5ixTkByBhik4Qgv52wls53gdjSiOp\nvftuXX26qv50Kxex2VE/5OLiIXCTWSHDpB3STMFjtaH5mEHDYGFP5t1FEVDDZ2cf\n/DkRhjiwAptHYjkNBbUZrSQcWxN1gee6Q4ehJHrlsW2X9AQkOhjfyYnoLRFL38El\nOwjsXdgkP1c98yxyeLvbC6LngUb5yWWyvGkmACKYpVs4YHdTRXQskDtBdP+7Nju8\n490tuzCuDvInuXdWjXaX/oT8r7C+T8RQmdz6/WTKXaUqyid2roN69saYrePwQL/F\n5rI9jwhUkkvDInjVnHMTdsAhDiuywF+cZyMkhtjR3lIUeDdQu5ZhEf6Yubv7+QVM\nOOk4IOkcWXL3tToeScglAGYUmu+43T3tzA7rVA3WM/CN6JU8WDCtInT2t4iiKuFw\nFfRBwATDYrHHQaJaSZGYaDFncV2sruvoZXzh4i87OeDMRHUoh6BCGJv9Wyf0Qu/i\nQgKgRXeQWExKsRfgCqLx2A1aZlhyEnUGHi2B0q8Ledzb6GqzwRgaKYQagExcwdRs\ntt6V62loQhLjv5FR9dzlbaaAv/AGPcM18zAEW5hL189HC8Hd/lXY5CFBA7VtZLdL\nTBmPRced7Z8FmZGUtqRcQx32+n9Tc0shEEHxWKAke7vD/nZzUeE+sFynawIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCd\nDzC2JxDsB5Xxe8M7OGF5oO/ETBq59gggF8MwDEAOmwDotQRkBfB3C/9hLeDhlrv7\nzvroXd14qGRjMwHimrL4nyBzFXWuSijj4l4OkY5OduCLppETZrLbNCI5x01vL2IH\nUZSY9IuRpDvyhVwOvRW/y+qOTx2LK96NQrPaI07c5pqCRzKmIwfaCrWMtMMHL1rK\ncVwlv4dZR6YPjWSb9KEW7vUtutDWClwafhU2rjOlgmCGA4XR1UOHYSenuGlcofzu\nMrZSy9+THFBVsLXF+xUaPjtRFoDnGJQbk4ZWyz4QGeI0t2NfUyI9Ucc4iXFZoXmg\nUHe45CrOClZD1OpI0WLuUAw6Icfhf+OrvNSbvf/YAB0E67aGHQ66vsfIslLuTzqx\nNM0ruHxv+2XQ8kNOWytXi9CgJ3Mr3eXrnLUWWnJybzElh7XjdPao9GjOpXDGjRxK\nTNN4SE476xvpgfKBFakKRO8ieyHSrOMQu79vEq5sACUyLA1C+dgsHmbrPbljl5Jh\nI3mnoQ8zeYakrE4+f80okrL6vOGCMP+nJrFXd+f7rY30Doqu7Uqg7ljujbSOYV8y\nLgn66VwCgMFYqJktok8v5P7jvdLrdsIqEgvifxcB8rk5l3MtoLDK4ebvGobHyC/2\nsRAmBmwx8BZxr1LWExZFFIocuAk3iIxYHQWRaWglFg==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"XAp9kEuho4xT5oCUfJenTqq4u4N/c55UToshIvvaQygB","Address":"31.202.122.131:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFxzCCA6+gAwIBAgIUdBoKavs3ZDCUEFGh55oiWCimI/4wDQYJKoZIhvcNAQEL\nBQAwgYwxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJLSDEQMA4GA1UEBwwHS2hhcmtp\ndjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczEZMBcGA1UEAwwQ\nU3Rha2VTZXJ2aWNlLmNvbTEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29y\nazAeFw0yMTExMTYwMzU3NDBaFw0yMzExMTYwMzU3NDBaMIGMMQswCQYDVQQGEwJV\nQTELMAkGA1UECAwCS0gxEDAOBgNVBAcMB0toYXJraXYxEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxGTAXBgNVBAMMEFN0YWtlU2VydmljZS5jb20x\nHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEB\nAQUAA4ICDwAwggIKAoICAQDh9o6RZovEy3iTzlWzRBZnYjLet7QvL4CDZPQKAq9W\nGJdpKrEXKlDyL/SfEdYL2uMHXF+uqWCJqahuTUPKDVD6ec2/7Rd5gQen4EM4enNv\nRyNFEg/wSJIkTAVUf3B4F2ZTKgaf09FgZBLCwJdKpTheDgzmk7hfEuaPPGeMg1Ca\nHXbbMVmwbnVcNZkCxAS1JO0yaH5ad88fMGU8qk+AJQ6JfghGJCm2+3FPClVmBg5s\nj6hpDanwd3ZcZcl+pSd7JE1INS5xE9YB21tCiC4FjpGCfzLBFezZXm7Sg/g2vbhP\n6rAz76JA0IrcrCMRDM7yyVulv9t128nRT8Ok7aZexKqPGeAfFd+o5KyIHI449vv5\nfkaG7gAmAy2nTmlkW8QS8hwdahSncJn4pjEJAHBVk6C8WZRooxh9etwxcYjBu2LH\npWCAwK3VQ+StBZyX6HGj2kU+950UCOgV/cK7TMnGBQ3eRqq7sex/Yxif3UpEKFAx\nbdMDpga5B6QLS+me9sGN3GPyrTWT2C9xHjFYVJ4fX5wmqijarsIOKwIzsKRQaqbr\ntA3ZgmPT2fxlX9YWSVIx7OfhT+K4o8MuQJCnOTmIQ3MxSHO/flV134V6cUnoPZgq\ngiXXaryW5xZZ2hxwxkV27lLrMDqXUXrF/iBpv61/DISUCsaZ1Nj08MuOzEcEXFZK\ngwIDAQABox8wHTAbBgNVHREEFDASghBTdGFrZVNlcnZpY2UuY29tMA0GCSqGSIb3\nDQEBCwUAA4ICAQBNvX1hyE7kxvbr9x2wScGWYuu3ILeHKirAjHJjb35WMdbftzAo\n5lVr3lzMfF9NhZQpfePF93eEEP39GSsV542zdMBXS9Y9e8/l5+GDET19iZ2b9FI9\nhivdObNXj/Gd2Uz56UPZlqv6v92Pv1YpTNfs9bDUhGmm8mE5rl/vTOYZqVMWYS5v\nJnI+9eWgd8w6E9zvfcLAq2PImLYNZtejR9Bhpfh6U932M7xDgxvUl0HUTnJv2OFP\nvSj8NTdLLJB7ZDXlMWVotcqa9TSvH44lYyLfcK2sZK4OCo4TxNHUVPz0RMFm848X\nkN1ZTapMeviH73aX9PtEnpP0nYMy9S96S2x0VoAjjpbavOiUf3YozdFz9DXCjEj5\n1AVgjU/c3A6Eftei+7NOwz/sPXtMpKD400FiiXcoY7TMMPL35pvnIoQLseDeAcEZ\nkDBFmiHP/E/o2QxumpTGcre7WdIvKhxOII2qzPitWNgTrhWz+3Wuv3Y1RfLwqcz2\nS/j3ntYFgnX2WjHBxhnt1N1R2XLhM3KIDH9pD8hxTBg+FLBgmzGxigl0Vo+9qFIT\n8CJ6x9E2Ik/N/o+WgEfxCkmtVmFD91oNzGM4vpM4o239a/sw9VG4QTundSX+4Eou\nM2HIQbPSlmWnq1TqEyfnLLS6PmQfT3oJsUJfKzrGaQPb2Ihl8i6P54zBDQ==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"zB+sEmXNq6kp4gf4BpDVfVIOgtae3M/oJbcqdhPhXDAB","Address":"194.163.170.125:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"OixI8HuzHnrU5G2PZP0Jc/ABySSD7pPmnIMMtQ6QGUIB","Address":"176.9.5.114:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUZAcKQnX6JHQDffZICxBupQ1M8FIwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwMDMyMThaFw0yMzExMTYwMDMyMThaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQCeQb+WlVRuG9rtjg/iZ8ctHYLf5xRMeP3Euhlme0m9/mEbUre/\nJnhna4m0L9ma6pn5CjeiolULsRG7eJCfVpJYHXUOVmBf2K7Wiw46LqXLdJo6CWYa\nCVYuDD1i+PBEzCzoWpqH1H5sQVBJIJ1ZhYG9sVlnnI3u5QCZyILbnbTrRr14y/7n\na2Da1PSaiTxlfA1WoLnjZfrEFctrh1u3MnNa9HecL0nImMbSPFVi2vsejq+p+5Oy\nMKpOHKFKHT6W29LllKMSVyVCIMCy58ja+Vd3pjbABailVU8UtndRmVpVZREnCkzM\nkRdzQg1d3wLeOPi6tqFUhMq1FqE5Jodo0YwJJpscyI/z895k8n8N2gEB//dkp8gl\nbRwoW3D614W9KEsfwsAF8YXF6Ccj5CNUjlyVtnk19MPeHAmxxFLYX9n5x8ypZXU/\nEBb/biNhRud8OCR0K65fS+k4IpSdP0lX3SZcAr/otydhoS8AunX4Ao2ffGMFAfOQ\n5X0E2zkCvEGGeeTkH9a8kpc9qKMm0duWTScsMxcvkETywpnmuuvH/8dHCb/kBUtV\nli13oLu0OkGSOddU6CQMFO1MtH+Dtd9+0HbtwEN4deM1k/OXIjrToyRyjEBq8KUD\nrX+ysah/wG5u3nooPrc4+sL1SKSN366Odz1ZWJID5lDs6G0AdK8jGBgxhQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQB4\n7D39Utti/vNVLsTIE19SCjq7CvJSTdhSpVaG6ak079EPGIItefuf50aIk72u/dV3\n5pB7+aZZMguekNewLyh8BLlwlkccSvNEprVdzSfTv9e75dM+aNVzIsS4rzFRwj4Z\nk0QlT/7ubKSn+bn+G1N/1wxCWjIZHouHh1CUeWA76vLMUudw6PvhR4tyO3rJgBGE\nEs0TaxTbgC3G86RoKxL0C1hrJ3aCFCNrvtxE/e01Ew4LLBHkaDYKXt9cOjqt5iYH\nWsDEdVoXoQZR56WRD/w+nqtDYSlBjJbwhjF7t3EOrwmXsKx5fgpTaUpcv2fzXuiV\nmrfqYxyV91QQVzXHbQdWPGDHhPZ6ZtJFWUF4eu6Et/4gEpP6u2YejzK0d+GK6QJn\npcU68zde5INAXpdrI+YyGkRQIGGI41hCNuF0Z/9QhQCrrriIlIZWw61SB5xN8KT6\nhpQrMCqrGY8HB0j3dhJ8eeCHwLACLTe1r+sOhrHtfC/jzkt/SVbsA+odB6jlraBf\nyFfjCZ8f81fVRR+6BjaIYLoz9UbRDLmVDuWnH7utr7DIZrR8XjwpZrkoQltSdxHu\n27ymDkBHn+fnp9cfg2+TNy7mKbaqOebwPIjfq103cZCiELFG/IVjukbUzZNRe2IX\n87oqthZ2aQGgt7Bkiasms85cnhbnzIL+TE3+6lGRlg==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"eDMjCf1Xtt6Y/OZfB6Luph/HCxdpGEPPQnAU1Ss/mJUB","Address":"164.77.88.248:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFrzCCA5egAwIBAgIULVr3Ovq/Dow7ymwlVaERfIXsDRYwDQYJKoZIhvcNAQEL\nBQAwgYMxCzAJBgNVBAYTAkNMMQswCQYDVQQIDAJSTTENMAsGA1UEBwwEU1RHTzES\nMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgu\nbmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAeFw0yMTEx\nMTYwMjU2MTFaFw0yMzExMTYwMjU2MTFaMIGDMQswCQYDVQQGEwJDTDELMAkGA1UE\nCAwCUk0xDTALBgNVBAcMBFNUR08xEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UE\nCwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFk\nbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCr\nRxYc8UXtm52v2qCqGHGLIZ59EfREj0ligRauBusMPD+JzdGVvPDITX+PW44GHDIJ\n9JSI30DmFsoXoufGTTf6fq7XRlAftirK5YturAXbqOTLnIjFbWq0NxX7RNixaBPj\nvKs7PY2GTd6iMmn6q9m9JkHOOxiEnBuJv6xkmZJe9yRfEvMitmxtd1VxsodN+6B9\nC1XYZZnqycvBCJRN3Noylll7IeN8R4PKPr+B6euelvcRQ9zfF99Vuj7jbuzxuKsz\nLyzraGfUzLs0xSH3eU3rbmBbqBAf+9AB152KMcuPj4ZMC5sXAdJcXx2Ires4YsIx\nttqceu17fh9/7Dyx0+CaeKg5VEtlX1etRso/lnHwhd5QiygTF9SMzhOIjmWf0w4A\nOmzq51EIbEidQYa3kZf6zxWLAm6EB7qHFyvli9WsTRXK0S6PA2E4BF6TyQ0DiKMt\n7xxqdvJ/Wnx2QG7nE8y0fX0j8HtyL1x4Qg2vnFmhTUoCuk09cfcmctc8y+1P324N\n0qw/EH2pPiW70UB9SnvbWiQNrvuByha1Jc+vEkHpfv+CzSajtt1eRcf/rMlQ7GrP\ngeUKlKjo26vFxTTKiA55SyAhyUN8+UBdSK+lCgu5+ufKnYIyKcYPVU3Xb94JwsWT\n+g/Q2ziBkO7mF2lbwn3u4pjTZbAUB2sHwdusmlpeJwIDAQABoxkwFzAVBgNVHREE\nDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCL41yPoHPYLxwj0tEG\ndm7hxG0kiwfaWPJfjFQ3Knyt4lkPyNESLHbNpFwgynII1CfHsF7wX4gy/xJHWG5o\n++vdEnMfNtp2OSbvXyS2i7PAvi3oZnKrApFTQqMTE2cO6ywXtxSwBB6hnz5PzD0T\np4qgAn3r0XN/UB1YKkL8z5/JULK7pcYiDK2FG69OJqoQROFt5BLN7UY+KD2SioPN\niKktr+nzzPPgU2TnAZxQ89zB951puL/max6MUVFHm8I9RvYfxyQPfX90rS7quUPm\n8NA3tzU0AKFZbd20Jk6eKlLvd5D0iZ6YZu7B3AUGZKvQQXjNVbZ6F9q1RX0S/hlV\nnu2acrL2E5gZAUgwIhXxkgdaXLTfgO56magpQjXF+FOFOIB4gYWblUG4WoqchG25\nT4GbYrN9/l8l3NCHnoFY6M8Ja4ij2A9b9ocMJ7VV4xe3QA1IPhy/86J3myxHVuqv\nF3GlBkWVJ2chEdSArHmaFhDfK5qQA1zPZBWA3ZkPxaSUC5/dsvduEcTP5Q+fKAZv\nNmpwWEbSpF8mqKbZNBu2JrqxcYqp+JmQRJz3oaS+k0nOa8mNEnwgvG+1X489rmow\ne7Y/LjCth1uDy59t+f8ISyrkp/zPFgPMFAxfOiv5hB5XMjuDR7jWClmuXh6KfwxR\nw6Hvx1O0zXYHXfv0QNh4ab1MwA==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"/Zp5+pd4cWilGbMNd+72QORqtcmm/YiMZLya9oGx9ocB","Address":"194.163.177.56:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"+++IurRHgqUbOP/Be2P3JU6nMZzj6C0RIe7g+rvzbLYB","Address":"157.90.182.119:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"1cPQMKNhO1JxRHPw2jyjKSR578GgEl9rPwANSWViTP4B","Address":"91.230.111.8:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUNDCHLoDkkkgiFtQMplk7YLqJME0wDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwNzA4MDlaFw0yMzExMTYwNzA4MDlaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDPDF/uoxL3cvLvouerTnD1kLu80fqBa/ul5mIQ/cpad6HioKrP\nyV2r2LaWn3vrLOtqgUa+B3QEl9Tb5a+9uN0O8AbLEpCuCZ0Ie4pVUyoy92xgFKAD\nnYSA35M37PcgP5NDBprKSQLIRB3j6Ng6+HSxeAVmfKiuJcgxlYFwf4hWZmD/VARA\nRcXq7zOD7MXp8Q9KcHLiMblszPt4KozCLlU/w8eJYmMUEzg9KiKcLHfGVxXpcjVa\ncLILNkmUJxsuEzwOtjStK/v0AoT5XVnUDmqnZ+NzYVozh/roAK94VdOtAl8YQ0BS\nVIVIU8qc7OYNZby4B/FWFBBqAsCJfEjVU6fVoLPgN8ixN+Sr0SDWr49HaGXxc6H7\nKi/pPTYYFefmjj8LvTSQLCueNk6JWu6J4naUUjkhQgFFHnFwJSlOG0WO64kFkVsi\n8jeKE8xE+AMOSxXKl0bRSg6AfmAmeqhBjOVu6szyqXTtdohNLBpvlDV2cmaOwdn5\nXct0ycoAzl0NFAkFVmaaO6GDwVSOzTKoNIrZgj3pyjplnk+Szz82j7GnGgSS3Izz\ndBD0r9ElZDd4O5OylXs1h3E6tRuQ73rjQUuYFbBpBj7LqdvfxV5XeoFnEw3i4DkP\nJTlPAwDKQVbEVSYhcqC3k92ig+n8Xtv4Ifw0a+7rsyQ25f2ZqP0uvQ7+7wIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQBy\nHIHp+7X31GF1tO7iDGrMCxlX3BW4jn2ZRjPoVGzEvRzC0xZITavgEi0TGJbA+2Mr\ns+xphI7fFSR/dC766TfgS/LMRRtbRWHQMPkUG1+Rdw6QJaP64tBntq8HfkkwiaVt\ns1lkANI7Mf2gNsLY8UoeK9XMUu95PuphaLb/PPNJCnZBBh83GCIDKcde+rgt8o68\n/X7HY7aBkdP3rJ/jvn80S1Bd3+CIsLDzhmz1cseztng5a6P922JTJE6k0HDFgK4r\ntSl1/LqjCZXoFPWFh/+Lbl/A58PprhNnj3bu6XD4gs0NPB8ryu98vW7m/hM3NeSj\nax4WDuHLu1qHvQKIEu9pTbXDhzzbetNlUaxr1FVQ7rP+/1tQru+M0UYF3Jdxj8eh\n61pmJ1jgJD/1rBsPVlzXuBjO9gaFrxTEkL0LqZDqHR7OxvVGFtnWX1MmA0Mo+Fx9\n3u3Le3UmBmDxK9br/aBLi3/V5fUt6f2qtqJ9Oz+lJNqm2wBl70u14C2bWNn+vxGr\niBQFoyMPn6amvepV+GwfdhHM4pz1NseZnk00TMway3uymngYmx3NgSJPdrqeNk2W\nVRCfForHWLCsamOkVzUfs3iIytmaA/PtxrL2zBkVxTs0a8Uw2W+6ZfE6nFIJDKGb\nUpcCYexlO8MAMm9vZPKCjUJPKMZ7rzQFkolbFyosIA==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"x/hyId+Upll2nc42iyLeln02MB9l1Y9HT23PQXl83xwB","Address":"151.115.50.172:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"OtVGv5lsk54jYjmXdm8izPOk3eoqUIYNSBbq5RVtLFoB","Address":"88.99.10.85:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"PdsTTi7fNQfih5vPzANk05vxoDU0YNbCnhgJKckKuE4B","Address":"46.150.9.25:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtTCCA52gAwIBAgIUCsNCLFNsBodNi066/62JyoRq4MIwDQYJKoZIhvcNAQEL\nBQAwgYYxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJLSDEQMA4GA1UEBwwHS2hhcmtv\ndjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwK\neHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAeFw0y\nMTExMTYwNDAxNDRaFw0yMzExMTYwNDAxNDRaMIGGMQswCQYDVQQGEwJVQTELMAkG\nA1UECAwCS0gxEDAOBgNVBAcMB0toYXJrb3YxEjAQBgNVBAoMCXh4bmV0d29yazEO\nMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0B\nCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\nAoICAQDTYDIgJ2P9SYKsKkmyjo4TgsOV+uqWYNO/P1aE92RXEAgDLsl/+88mPk+t\n/GLub7J2gkgSKaL5AlAZVR9tA5bd0zQEY2xriaJMFWLxz/Mow3FilzYNm5A5vJhu\n8VH9tPqo5Rc2apr2tT13p5yHw0oJtfOxNxt3UsWeEq8NaZFd5jyCDl0ksT+oOBkU\ndal8fh1+BT8h98XYUTxML+Zw13hmcF5Hywn78yHevsu0Zu49UftvPzVb/IiDGQ1u\nCCqA+BZrOxauW/pwh7aur5VPc7Q9xswbRDZULN6xdi4J3f34An4VcwEsAVRsOZHh\ntDpQt3B0oxeLUM3q9TKaZc5bigqzwWd0JXt1++MBd1wC+OZ8bmOuC76XUq4e149b\n2TzZyhpdLYjaOsPSeLxiKBEEiRq+gD4zHftixNWWij7Et7R6btIQbE5BpKXjURP5\npP883snqH5/HqxUOZpwojQ0vXUaHfsztFbH3h0BqBtt3FfHSkCussxsscc248vpp\niLjpal6M9jtOXZq9bJRxoQamL+z95Bp6dh3Nx6tzADEMSmw9LW3eqXOgDAlk5qhW\nyrLQaxUz9NZ1PE3paGLUVXdmkRoUmUFq0T2SqqCdYCearhRJT+pRK+xOnkqMuhWK\nNCtUANoX9Usxnv4RiDabAO5LcCk8qR0uENekMCAEFqYAJ87+nQIDAQABoxkwFzAV\nBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQB/8oGONvHC\nQ5ZmbN9+zDvvKfYAxfQvHuqoTdcBSI4nPPWk0T5UnjElRVE8PnbyWhG1NENM6PVV\n4Aen5/CC9mSKI1WryM+l3WVawtkEtWHUmd9eS6SC5R02ky9nImIe1sKRVm2AbyL4\nHRkoMR2c2ryKSXVJwZePszXg0qjJ8v6dnJ2DR5HykOIUI+Ei1u60S8TfP3lowN7n\nPOWiK4qg39Tf0+hCB/yuRDtsX6qqsk0eDodv81VtIXtRIPqrOmgt0q4xUrzbZOkC\nPmXEDxt6JADfqQnNQM9twkpNqKfeXXYr/t4bsUSV44LDWYxQ3T/YEZzy0ohON61N\nyTPao/OKUKtR4tnTfoh+AD8+m2vHFS5TcJKOWCEMAhNpnLVf/SklajIGs1brmpfS\nN2XaFDSt9SEE21GedYbThsV91Ev+MFhxZYs7iyyOgePo6CQV77t4IXSM3N4/3tMg\nMLpc7hKk4UaOgBbfJASqr18qABfo0V94LsuFs1UxD3/xLMPqKv+bVLjyMdy3bkPb\n/W0DcIdX00SxQ7nn2/GyaX3MR0FQM9qN6kxMlE4mP0Vr2JlKsUnIeW0DPg5xEs/7\n9qd9N1e7np3lCwvhguaqnCjoGnpmkCjzlyVPSR2SbW3VXum6lixMmDY3DTCbwIcD\nDDmmuPplWSullmpUhndIvaOrFKa0zmia/w==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"XjeiKjr7MGfBnDeaetLGipT3UDh1g/fjOFltJDhfeIsB","Address":"161.97.173.206:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUUjAXmNxyY8VDiQenymVnU9F2yYAwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwMjAxMTlaFw0yMzExMTYwMjAxMTlaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDJl3hmMDd97vUY63Veui/vcMjXRQij6uQo1H3D7V48ioATbTZa\nMrHV3j5O3hCo78O88bZsFBVqkraqSB3NnNwiWVZHnXR5fxB4wB3moqu7OskbR99A\nZ58tXfeQnNzr4gcsInF12X6x87kU13dNzQd5JOICT6xDDxsH4gQ/5EeJH0BCR43S\n2u2G6P1+4d10gDKfhkhcCiumzBrxZ8EwCdkl4muDDj/DEx8zKFf0Vi3f8qmuISwI\n9Xkpz/hrRbHMVJKMwa37VN5hHlH+WhpcdPZBvXcUdJg9zrx4/7obq3pEBbb2feFF\nq+3ERBjd2kUyHWRyU7VZH8c7ew19J5VMQs9K9qxAoxxqjtF9l0+M+Iim14Q9R5wi\nlLxwrzb9OzEPuj9zUpi8mgayp4A9zNcoXFZaV2WshfJbNSgFPpriblv4o00fbJov\nsb0wy4IWKZ6MegYxYYgbnx+VacRihBL8KIq38z00A7GPAB/8b6wnfibqaLzLazb7\nTKWmqk9kCJNIrXk0Iat8UlCEeK74lA+5axgvGlpNMYxlTtu1v2QvRPU3HpcB72fF\n/zVObhJ49hVDy77VoKRoH9aIBFchPxpMUpBfYV2yY2YIbsME5WmWPqmEtX3wGBxw\nkuqdKiD2raABSPPLNo0VWimofq1TYUC4pJnUVw7Ek/2PTGHmH+HKr4otiQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCQ\nngPhqqfcvLZL4K0+NIdWwMfEYPyBo7288WucGT0wanivlRZBUBU+1Nw3A1b/8Age\nw15TpO/mcP9F69MVacDq7GmnRt4H6iSx0QFm+k9gAN7IutUTotXxtY/OaAvcpKyd\nNNrsTUP1yz8TdxUxm/kaa7m/YglY3tveBAbyxqb8OJIQXAdJUmxyWmKXWqN4PS/Y\nir5V9WwfTUcn5BvTyli79MTcvAdfnFOiP9ADc4fwTqZbzlAbj9p3jpJ99Ssjf+Va\nR9btINocztcOpGIgYK7Hyx+oiJaa4ZkpXbKiZbts7M+y2QNwn2Uguz7GcNizbnpN\nX1nryXWEkcIaeRiQj+HyOhNbJ6fp7Wg0h5UAjEmakUrPquJHGdhCzcXu4EW/WXIo\nekTz4YDEVEim+HOH17tN1WOEslyf7UDwK6swr9FSANH6ZVoJbEcf1lUWKp5+1P5P\nq5PIYrqAp5PcYzAytIi05y7HeaIQATeiFcTbn4d8LZenYsyAFCccXb7HcefJ8JZp\n0TT68joO9u0Vgp4afFKQr9PntUBKCXW9lPcUcLSh+eLhtav3rg+cI2ifU/r+uCJK\nuw4l8l3qPa3zUbgyqnyzMEyueFIStRuOS/l+kPYdlw6enz4ljiGXGGT7KdNKc639\nypNZpE3IZj7i3zXvB1ejmTh3HmF+XfUP/2qfIEI+LQ==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"rN2Le9+pADz6GHTedHjsqGIK2wDcimb4wBswcJ/1PqIB","Address":"65.21.234.163:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"EcfsEZf0BchntdI+KQKkM+BQJ+uYK+XS44Dh09d6b64B","Address":"85.206.25.76:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUBMUt3Gew2JX0IeJ6UTt5OgVn+38wDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwMjU0NDdaFw0yMzExMTYwMjU0NDdaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDXGIOJxhLBPKSJ7Iq0uzEYAHBWTHPVkMlvI3SYXxw4ZycDavFV\n76aoK40t3g8y2kIxdskK9gB4TUAEDrEEIzk0qqnJyQbSIaFzasXcUjsJS4K2J9Nh\nI6IrQxVXq7H1xCnBMd5BeZzziQblg++/+YKulHxw2wNrGGHAYmG44hLaW4aL1Sz1\nSnVoRqYOlYRIvUjDM2fbscbnkID4bytrwaHzHFSzX2XwGeXkrukVjrQEN36QVY5T\nC1mW3RMd1Fik+5NLJ1Np8wlsSG5lr13iJagW9m0H/MkKGLmVOPvOSoiExwMmtPk1\npvuXfzj3OrTgnlRCux24oaHoF3PoQXgWdQ84a1RG97opaU19vE9/8KZbxoTeyznf\nA0hyNiBVnl23QrXzOwxDz6ivhqa9CfXYdnRqY5NF1lqfVJ7OGsULnpAO1Ay80Gf1\nut+Pq37Qox7pl1zkq7+mrV7z+gEadkMY5AOOYnXj6/h779YvCBTHR4fIrQAb4rz1\nmDr48ZPCO50RToMdIwCxv4UotRGX1PK3g7oOMtJVuubT/h2B5CuKp05WWmXaO+9b\nPgR50U+woMpscyUcHBFMFTNkIWaXJa0cQoMaSNUM6FVJYkgYEWzufWCM1pa9+vHX\nedT6MJD00wc5w1UPcAieGYmkaM1aZbjDoxbV+zMJK6es7pofzburTDl+/wIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQAe\npRXp1GkP7l5GU+qzSsBJn9ilA5S5FzZbDOHL0E6Tu9kQFuZm4U2Mx8LPpG0VM6q4\nawC4CKHRehrwDYdaUEu0AJhAqtHQZyaRttas1GylINcLYZz6ye7mY7YqZsQa4gTT\nKQCJl4xti5HYojLemMNqpu2pc/HoXreHPXS3srf3yMTUzPTbbJWtuFTaD+jyr+E+\nHH9hwfU2VKJhfznzUpoxrF+c6nmRNHjL9i3XODxCqIuwglMW2QPapdd9s3a+9e87\nq/jDMUobtSeJ5yuT2kN6vDpHSsS4WBkMBFgLNS6adG+ZVWEFp2oBESfO3z/n44pU\natMDsZbrP7o4Xhr8K3XZjkayKaf8PqydIk186YDhVO7I6lg3/kS13i9ajBMSia7k\nkNgJDl4MyY68HuwU/EeeNaof74NTzZ8WTfHtIVcF+eYUbFr7V33lX2TLugYmCUOZ\nPwxDIMoC7CN4CeTbjEBgcG8twHY7wBJ83lTdrEf41poxWxFx0/bx7/oLJMx5p309\n493NWHZxYG6Cdwnr3NZpT4q/Zqknq+jnqAP4X2hxv4DpHzOZFIHyahAh4lnq59HI\nbr+i3RS9IOGw82IFUQPeTgHMXYI3Zcmm7XXA7cvgLuhk0fnG6L9weJvDkWNnRlzB\n+poxIh0W3XfwpHMZAq6m0GrS/oa3ktIMR4k8gMTlhw==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"2CI30f7DrjSxzUmSoJG1JjLiHSFyUOvxaXg5moVVN48B","Address":"5.189.176.210:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUPaFrLi8aOodBZ3zcl5Ga4SEJXVswDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYxNDI4MzdaFw0yMzExMTYxNDI4MzdaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQD78PQehMJnDqe1aRdHXX7+JNbh1R+0JD7lFVVM6HxDXbGqBTdf\n5gF1/9R5lyv2H32JXWHZ3uzPRpujApX5NSWXcAGCIcaMI0GfisWxVfogOjS+QTbn\nrGwW9m3dxImhK7gtJ3DUiJ+ToF3+wpgEjnAZtMECS55+CKhsyPaKPWg54GDSe5IZ\noo9hFsLYEP4I00jDDJPLUqooLXWggMOvUSWBG1e2N2HaN3UkqNIEd72gAp90mQnu\nCBWaKunsvQhP5DwzhUk1h+5B7tVtQajz7VcG1bYo+TeJzK2EHmMvgFUK6S4ZDqAS\nAor809yVBshQS1B+OhOTPAzVwRx25V6mWfMhqEB9sg0Rox2jKlkLwH20u+ijlcUo\nrwcpmnFOFSyo/xKt1ZoGm0GMGZNOi63hBPWPNBZIoHU0KM1ITHVAVFY8Xi0lg1cu\nrUz8vsVScdODXBzQ5EQKxkA77vhIFa76lNcsvs7HW/zeETFRap1CaHoATU/zNqPF\n/Cmz5KyVEdsowmb7WRwSdysMZw/Dq3bAXS7KUaQHrb4UMaDTx/Rj2px3SSB7y9+N\nzgXxYiCKcXM7RqZhitvDRpyOpCcai7L/u+chb66o2nuDm/kkwpH32Pa5OuVHYIU2\nM/c/7UdeYVgKwpxbLGrRw9MyIDu/MRhPyg9X7WaHxct0UjCqLUlevCECywIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQBl\nDcsWES8GT6UGleesF7M+iisglHmob/U7SmdouaSOnDRVYk+o7vQ2P5cU5HJKEEbR\n5YO/Bb5K5TThOZ7W3usg9SZSnZOPMG5WOAshJaDWKDc+UdXvBTdqkM072Bu6700X\nMhVrtsXISEYG58vgl2NSasOcfsxk0nmi60o9bJGBRF02641Iki8T4AMoVedXhtgm\nRW78QMcUtnbLjSbuU1spIWrbX98u57yC6uUaEcTO+wFxU4Wd1ZbACPMT89Vx8A+/\nreFD5djln9lGmH3He3dIP1lepILgIb+df6Hm+G/Vn+KsFO47dETPaHPxuWmpsGOI\nigm6i4oGSIX2D76h524leA1GRyX7ORS1aD5p/ooRzSMLHnRw8ee7NG+CvBH9WBS6\n4rTCm7rpiB/FZ2/Zc7DPXUEb2c+RmVZLO9/Q5caNjppQz7uAu+FE7T9pLMen4iOe\nJNH57eHuja9HVJlsdS+kaSVe6F/kg2xqCId2sUPhXu/wLmsBCVz/MRRnJm3rFasT\nMMwJfOIe+9MUCXr3ptVxYVaazHb+3YBgxuQPFBTPx7RzXH9DMxYTUbJ/FfvNstoU\nPG6jeC+miZGTbUPTe5mdbNNzW98QeVFp+JXdP9Zb9x8roTl2tZn3seKSVu1zHPOE\nt8qJZbuztozDaRJiqAmOAB/q+4MhhTBhFpZFT4fchQ==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"rb5khGCbytwOfrH9sk2Ey5Ba5gxjvQ8wheDdls/s0doB","Address":"94.130.52.243:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFrzCCA5egAwIBAgIUMXdA25GGqevj2o3byisrwWfimtQwDQYJKoZIhvcNAQEL\nBQAwgYMxCzAJBgNVBAYTAlJVMQowCAYDVQQIDAEgMQ4wDAYDVQQHDAVLYXphbjES\nMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgu\nbmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAeFw0yMTEx\nMTYwMjA3MzhaFw0yMzExMTYwMjA3MzhaMIGDMQswCQYDVQQGEwJSVTEKMAgGA1UE\nCAwBIDEOMAwGA1UEBwwFS2F6YW4xEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UE\nCwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFk\nbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDk\nJN8FQpArVWK5C0QEzX59tC9kfS8WShuvZ5/9mbmhyMn/4B+luQ7dk2pVX0117ZLw\n0XfqJfAN63r6o2cGfOOltXD0c/nno7yBivv3YI+72CDF20M5NdU/pFIymjyGLLho\neybss3ojQmwY5ayxcohsoiJlHLH7mzSqeRFh1+mCZivUDKWDaAA28+azHDrHSgo4\nyOVcs4a8mjOEEYtXPtIAB3XtBxJ7B/El6JQGs5dzgS81S4ZU841Bdrvjo60/GdMB\nrlegzQtnANdwj457RqQU2FogNnze9wgY+Eb/IZBsB68Ykh/DMx4zjnTH3XQe+F52\nq9+wbtt4sBq/2FS8XUSF1cE1SiQnMBYVWhjmgYTsFaG2jbRONHhdqt1kXP+Xy80e\np6/Z9b8HiDyBqtEBRfuBZ991KDAdL+eKwveK6J9KWmpEdu+03BVUUXs8xBfO9hoD\nm9xUyG8bEyNP86xixz/AFdpYsmrpvxo0DPt55eXszpAPHtLquELL754nK1fYQc23\n6o0UdY48t62YklSq2w9OcHgpMN5D2ijYN6++o/hd2ke8LUMhOK2R/bNx0lGvrVQe\n46Rijld1qvSAxjEupk+hYIGBxszuIVwDhuY/DWSSLQlyrHCxzcdgh+ioVw5KPI0j\nvjIOUPMHRmwHvVfB7NcyAq33CxeCiZiyjLFwX+XIBwIDAQABoxkwFzAVBgNVHREE\nDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQDClBDmEDG9376Fo1vb\n0qp5EsRGMhbXMraY39qRKNWrGAjZLr+pCVNrkW1vob3r4ro1ZRPi7U8ve4OvaOOu\n/jM3aC9Nsyu7HbgG+4rY29ZgcN/IsI7HqwpeQfMg+M//pmzG1B/RoWonzbKUl4Ny\nDwUUnfSaxnkCqZlHnt1zksntVnNGo0+SeJenCuMuuHBJBapzhavyTjekt8G4MBdU\n1WSjBMa1mQBKLv1JJKUOOdrnfy7n74RG+sMl7IgxNL0T/s9XWltvqMeNDaN80vez\nZ9QaijuNHOuy2Keme2RNyPhKxa4QrA6JOEGzdbcV46hpoyfdW26c9D3dyf6kgFYW\n1e8QZs1wNtfLd2foC4Bj3MJTAAAYnz8gEeCNJC2SvrtrUXZTGgnxC70fCJzZV8Hk\nKrPmVOgPWhMZeY1aW61Ner2glX/udA9/CJeFtrwUMaZqVfb9Wxgyq9tbxgdzCAZj\n//YQVespBa9jfnkIMEJvf0woEfrg371WbaiROoRxqFFU6pcdRFtB1IKEnvO2ZCYX\nO2cGbbXu4zm9mPFryJMje2VNsTtqwMbBHrOThMXVwuHt+37uF/R428dLR4d/p1/o\nsmKBSipTq+PitR+l0Vg6l16BEVQj8oURXUknUjakn6vDYP6VQFazx3S1pXWiJC8+\nXiyWEJ6R7cE8kTy99+b+vret5w==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"YWx8EODpDZphxqNmmMvFqUJ30sYJyPaVXqZ1khomVEAB","Address":"65.108.41.173:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"0T72Aw+MvYbn/oGcxK86/yg8pZllHBvsJuULgMaSlYAB","Address":"144.91.99.106:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"IzU5v25wsVHEdOw/UvUPiFYEj3EX/7ElgsIDN/GFDU8B","Address":"136.144.251.115:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIF1zCCA7+gAwIBAgIUJF6Wf9pBr9UQQmdOwAFjMw/IjhUwDQYJKoZIhvcNAQEL\nBQAwgZcxCzAJBgNVBAYTAk5MMRYwFAYDVQQIDA1Ob29yZC1Ib2xsYW5kMRIwEAYD\nVQQHDAlFbmtodWl6ZW4xEjAQBgNVBAoMCXh4bmV0d29yazESMBAGA1UECwwJdGVz\ndE5vZGVzMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1p\nbkB4eC5uZXR3b3JrMB4XDTIxMTExNjEzNTUxNloXDTIzMTExNjEzNTUxNlowgZcx\nCzAJBgNVBAYTAk5MMRYwFAYDVQQIDA1Ob29yZC1Ib2xsYW5kMRIwEAYDVQQHDAlF\nbmtodWl6ZW4xEjAQBgNVBAoMCXh4bmV0d29yazESMBAGA1UECwwJdGVzdE5vZGVz\nMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5u\nZXR3b3JrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtTYbAtDI4Od/\nbU7ha1F2plfb5UNw6/GhAXEo0Xic4/KXDUfk1YdHpQLl+CCttpT+6TDAmw2RthWD\n/AWZY90ZSo8Zd6IWxOeQCVzF2x5i6sszM2er/hgKvGrTUfw0JbMN6AmUrFqLdlio\nYlP26MK4VEcHuy8YZzHK2zVNHi89/dUqg876VQYDrzEy5SZWVCNJ3CBKhkSQNjQq\n25R13JlJ/PNMsOCh1rrDjVQj15H3bdCXkIWcM9RQBECc6QPlJnRzkT6ia/48NI1A\nb14yVZd31EQEHIPF4Kv0EVa3mI4V5NTFrpewlVE3Jt2sowpqJizQ94N3TnFeWYHa\nLq7F6++B6/0xikQIpxZ+XS0ATmAxFSSTF2fV9nKHpXQ7+1wQuPBhIAgw3TEqKqyw\nhP9/N6Pj4Tq4lt+0iUFyX8KSy783NJof9jUwsfpL+t73mwHD7X4Tbd7hJd3COlbl\n+rcSEkS2GYOdet0b5WVtwHkTPzfLkb/aCgKOgNs+veQPmD2aNw8eaw0LusiGFGI4\nodgFvOeImdD0QuV/z3oWSY9JadzkDQTGk25vE3OjM81wTiHMBQDiBmuzQGPtaq5F\nwYEPA8wZvyo+HarNL/McK7ffnXn/i0+6IBo8P2cbV2N2DhKiBbUNwy3cKCv2OsdN\nh3MXu1GvS2c7IJusNK4hmJk0QEMhrNcCAwEAAaMZMBcwFQYDVR0RBA4wDIIKeHgu\nbmV0d29yazANBgkqhkiG9w0BAQsFAAOCAgEADGrNBxJtesnDEN8Zbj9lZabneThr\n+VrUQICQRfOFsCnrjdM9DbbP4M0Rz2FNTLnfejLKSkwIjR6DFZ4Es58k7nTSOtp1\nW/h599RCjFVPITH20C3swsbU3E0KYTpQuMoCym99qwQyhF0e6zslyYEoW7gELk2M\n8SbV6b1Lk4lGrgwyV31R6kwm9IewRnNkSXRdMmDj07t06zbwLu+sckLJT5hUfAEg\ncjfseE02KoWLNjcvAck7a85WD+FCjc8sr4JVH8vCSH0G97mInlRVq+cflLhzX6BD\n5YrUAcNukxQ1nxL89ow1OaYArjGjPZn4SpFQE1FxDAps31BGsuW3BngTmKYdufJR\nApJ9J2lkGpXjmNiJLMv9XOQF9oPB1bAKfzY9PV+202sLF4dlCp4HjP659jphAV6T\nHGygTZyY/5PzZDD7HbXn8YYLYvU7fbTN3o4sF3ppe+0dLgdG4JYvZx7JETv2qNXa\nC26ZcqN8Kcot3SUdEo5bHetoYwj/F5VtxzjG6yV3Zn0NftNi8NUZZ3L9OgTify3X\nDOqTo4nYEhHvvIa9plEGyKR+vcdVyKhnqMa8RcjW4K9NXQHyC9Sl5Q6ucb3/hX3g\n3/lxwFuY7CgHP4TXDFapqyDGqJ/gab7fdQ891KR644KOiPE6q550Jr+htfwEnRh7\nUv1tVScVfuEsML8=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"l9PYy6r9w7uzI+sWKcmDJ5Lv55H3hG4vJnFYWejjIlYB","Address":"194.233.77.127:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtDCCA5ygAwIBAgIUFFAa1H1beB0IzIm9hJUlpLDKlfowDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAlNHMRIwEAYDVQQIDAlTaW5nYXBvcmUxEjAQBgNVBAcM\nCVNpbmdhcG9yZTEPMA0GA1UECgwGeHhhc2lhMQ8wDQYDVQQLDAZ4eGFzaWExEDAO\nBgNVBAMMB3h4LmFzaWExHDAaBgkqhkiG9w0BCQEWDWFkbWluQHh4LmFzaWEwHhcN\nMjExMTE2MDE0MjIzWhcNMjMxMTE2MDE0MjIzWjCBhzELMAkGA1UEBhMCU0cxEjAQ\nBgNVBAgMCVNpbmdhcG9yZTESMBAGA1UEBwwJU2luZ2Fwb3JlMQ8wDQYDVQQKDAZ4\neGFzaWExDzANBgNVBAsMBnh4YXNpYTEQMA4GA1UEAwwHeHguYXNpYTEcMBoGCSqG\nSIb3DQEJARYNYWRtaW5AeHguYXNpYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBAL4u0wHS+ZtU3R0aReGFfl3l4/Lg/brM5+LM4VzQ4hLLMoyYfvEP4XhC\nH+ke0eCxZdWkPFYziTlqUK+AMTxy0YUoSDyYL8s9BrTOYyrX0J+6RDaM6Z91XIca\n+JbQmrrym2FkWQ/qx3LdA3DN5wEVCMLx/YU6ExObiGbJEab3rw3J1YNiRzd7y6vM\nTUnlKhf50jErDPKPYp0bGCphAOpEVOyEOzmHsMBRlPRUS+WG630ayxRfFNi5J2HZ\naLI7rbz0YVZpeHPq+veQ2ml873b9JRJ2QCF1L+CutrkzgHiFKoAE5GM1wP9pay8u\nJv5Z+02WcOZutu7c9HqARcWCRcLHbRQjcjeXKc4TEe9y0WcoJ3l1lsmt20A4yTl6\nCxV9L8lF8UqCDXWz/7LyiYkQuGl0/LJFfLCxGBKpzOECsvyPXYhn9/EAW7BNj/h0\nzNTATQSKc3Cfe2N3MI5ei5Ll8qQB1vdrF5m85hr2ue4boFU4JUtat0qSztkk5Kc0\n6Een+DUenpBN4Zhl/nO+Rea8SMvDHikiYbObVIbtL1K+ZDxKcCW7toY9L3hz+4kt\nO34BdbHJ7gHO9xjmAaGkBeTBgYYlsttLwGjqMCtoy9Oid9lNGQ6sqpkpvAJ1udwE\niqxwsDNc/DUei60JeLp8JCea2qR95DIppApAdEYu4gvPxea9bdTPAgMBAAGjFjAU\nMBIGA1UdEQQLMAmCB3h4LmFzaWEwDQYJKoZIhvcNAQELBQADggIBAIDctzCi0jV9\nb8rkKS7HKf3KdnxcBxDjwdoIKXUgWMwxtboyRFYOjtn5bgGgWWs1HcxLUilxVErd\nTf4gPpUipXT+RBNOsdsMtJKXdVJptcHRdlmWRG7ZXiuTYv22mxpYV0gu2fl6hfNw\nP2bJ+XB4rK0lTSY5BVhpBI6CmjRKf5KkWYKES+k7/83Jl5pKbPIvbbMtHF7Bri6t\ngQfsWGw0MOwwC1V4rQaI7RYlV8w1JUFq1I8kmu9xmtsONKr2KSNL2vh8UvAxCJDE\n7hhneLCIfvrZEbHm2C55ooOGGyj7Wv5JYVz4Hu4f2eznD05JX022+8+6A6SLjOy5\nS+4omawcEQEefDaOsuojewk6DMbAvdxF8cSZmDtApJrmIF+99MPFJd/cMHz0QQAU\nQfRcVTQdsk+ahF/ph/8Rp4pFjlkaVZpzBeQ+8uJOD68Yma8vzUmtnn0LI2pPOs7S\n4iWNTtULEFWRYhcaiJFbj1aOSH/o1Mnn3eTzBHl0xRqZx6Jb3LTF7F9gFbFqZInF\nGvEsbUUNDigcT6w4EI5eburQukictA32enFMAkWxeljki5UbMheHAHnxyQxRmuGJ\nIBBu2880ICcb/hkVSuPHABtu9N05Q6ZqZ9FkzdmoNwz6xKVNsPKHxDZWwrgOmA4E\n96BMk/AOSqcp3QbeSTM39azOldryPLRA\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"ogYkw4EJsTdDpMJ2+pEnt4AetjjnBhVscS2kYLw3Gu4B","Address":"54.79.206.112:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFsTCCA5mgAwIBAgIUOfdk7pb1fJpbOkGhrO/1Buwid4EwDQYJKoZIhvcNAQEL\nBQAwgYQxCzAJBgNVBAYTAkFVMQswCQYDVQQIDAJXQTEOMAwGA1UEBwwFUGVydGgx\nEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjEx\nMTE2MDIwODE0WhcNMjMxMTE2MDIwODE0WjCBhDELMAkGA1UEBhMCQVUxCzAJBgNV\nBAgMAldBMQ4wDAYDVQQHDAVQZXJ0aDESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYD\nVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQ\nYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nAM5mwP93zBRtN4jBy3FwhZtqqiRXIXrhDsnj8SoQsJrAVzgVXUwvsSGY+aWOYZ57\njEcrjivKp6zs8HH/0d6dknpXAy+AQcJ3Ll0wz1r6uA6ayVIqTqnCY0Vl30XubaxH\n5wx0XGjeYN5X4ZX+1f7EtwMdlqo9iKUoa6nVXm2LCX8Mm/C8iv10ZEmjG6qXQaQc\nADaDq7AOJiT/q2JT649hTN5hLS3OL3mhlvFa4cyo1jwtgW/N+WTIdiHDrM5rYN4Y\nfJWcE5c2NqBjGyxzl9bK3y37fY8R2x71CNqLFYpZqXBi8G3ekMNffDJPVEjg1xhY\nz2oIL51ad9hgJ7EOcEzvogPD7IFzTPUFoNrKWdqkd3SW0ObKJrgv1DKUMr8Bx5Ez\nst5VmKoQeJTKXWbjajnfX9lElrZNd+GyVRXc13t6RhXx+KxI50kxipSpPdYHtwqw\nQV9LUthXs+sdJ/D+yU6z95YTZykLAnggjvWitYAn9M/CUrPFHxy8ggbL2vf1B5Re\ntfLWsQhjVPCYg3VrICzLw2q6xBBmxit9tm8bAZET5uk+Iqj9DKBM/omRaIi1AAbN\nZ01FStzMg1WRhT9/zoLXeDfxOMj4JNjJMSb/7bYw0K7WH7u2wb3YguFcQW8V7LKF\nesUWmShjWpAWCqGN2YGlDdiWEwsNR7z6Gvig09X88G7xAgMBAAGjGTAXMBUGA1Ud\nEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAATloLp/fO3PcxgM\nnCK/lhYlp/xA9GYu+7MemScdNnSsl5JAd2jdYLzuml7cl8neWB3Q3TAl3niGuuYh\nYu3Kb2fEeoCHbnW3wq9Bxnz3pt3SnqgfjXKtBTwyUnmVoKzLM58XgBVLn+NVkfwM\ntqTmVZiNOumEqa35O1U4wGa0Mn1h+bJ7iD02UIpWpcgX9DbAoUUvaobQH6nTytkv\ngKsgcPVBF1VSZprqp5hq1hDsSNiMhaO/UZwpw6V3qG20M2Jxi9t6fla+GdKvn85E\ndKccy/phbGPWBKAHoPzWYYCSz1eqzEsW2qztE4WDfDHK7mhp6SLQwMKDo5TWakqq\nDTpf6aMz0ubX9/Et9rnKUJgVym1jmHjDj3eL35gHR4bBPp9jdGK9l3ViBHKlqTdI\nYsQh9OqMZqazjwMWDos8X9dj9CwO+kBrQqZbBB8c5GTaqG9nRERGBivE8JDBoPpj\n6vc9TZbA0aAVYGzRcwgqSKzO9ZuJ62kiweW6TWaCY215LtPPIqRUV0m1k9GFRgmu\nm3l4OFKzUSiba222nq9smjF2NhOIM4w91VU4l1p23l9MjGvT0tk/tSBoJfZfBPCo\nTOwMBvSb5C/bxgddBKgFeaP2iFSr4sv0/JoDKNvp9MZ4tyhXNWhLDHz8E4M/Oezq\n67Qwc6rSU6gvQ1FazDF5t0ra1nia\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"PxUlC9xgEmH5Orwyc8v4aFEWlVUh1VKaprEW0qL6kVcB","Address":"159.148.31.238:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFszCCA5ugAwIBAgIUAKMoK03chwYB3Uv80pBjv3OW7egwDQYJKoZIhvcNAQEL\nBQAwgYUxCzAJBgNVBAYTAkxWMQ0wCwYDVQQIDARSaWdhMQ0wCwYDVQQHDARSaWdh\nMREwDwYDVQQKDAhFaXplbnRhbDEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCmFk\nb3JpZC54eXoxIDAeBgkqhkiG9w0BCQEWEWFkb3JpZEBhZG9yaWQueHl6MB4XDTIx\nMTExNjAyMTc1NVoXDTIzMTExNjAyMTc1NVowgYUxCzAJBgNVBAYTAkxWMQ0wCwYD\nVQQIDARSaWdhMQ0wCwYDVQQHDARSaWdhMREwDwYDVQQKDAhFaXplbnRhbDEOMAwG\nA1UECwwFbm9kZXMxEzARBgNVBAMMCmFkb3JpZC54eXoxIDAeBgkqhkiG9w0BCQEW\nEWFkb3JpZEBhZG9yaWQueHl6MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAr+fcFxRW2Z/1atS+NEP5fBxr91hbxnZiNDINrbxfF3krTIBPB/v33YrpaC5U\nOVXfv280cqrRCTk4+3NtKlDaSQ2tGMlkEIGwkz6/VSTbLWZQPUM3qRqZKRlUkFAy\nM5wtNUxkFLO/miscq7LdssP5rB/6M2rBeduFrMFDE0f6CS9TT1UpdV/OROkciEzL\ncN8xrR/VQt7n4g62J847mKX21J5sK/tF7vHBlKoiQTDKPD+8B1fpZrvUye8KKbm3\njuUXw2VY0Mez1+3Lh7vHutlf056fjh3z32kLVbcIYUlg1N4bPJunX0S2MMPBAyxu\nBP2S4jvzCApYCvtlqJ0w5aQ37WvG5L/HfETYqi+csvZ7qkgI609sWo7XGgD+PVAM\ngg81VYu8MbqM4y40rGoHvTIUcY0WjAGw5GF1J25xljuUAjMl1GiUrcrO8xcpkUNh\ngL4PzNud98fpk6hngjikpsBObqdCPkvB1tOzUvNjDA3xlpkXGlloTHxyDH9tK8Km\nuzpHhpOxpqOZlDI3dJjlSaoTM0nWuKQRrCojXKlANp4k+tFcjQTpZr+jfW+Uu+r6\n6ewO7ndz0ucvKBj9/iUX0prumyg+LRoCfo07mFQZehB1Nnp88L9/bGNQoMvpZnO5\nhR9doZv1Z/3fYDm7bKPi8BwE+ftoZGpErcb0Oo91dedSyOcCAwEAAaMZMBcwFQYD\nVR0RBA4wDIIKYWRvcmlkLnh5ejANBgkqhkiG9w0BAQsFAAOCAgEAcRoFIJmGHdIK\ni+//y/BewUHobdtHUM6Xwci7ojxRzA/OSKoJS+hJDXFy4z2Ey+IiXRyeX/03/gmH\nKKYoiYFa5HOqQn0zKowzhvOJxHbQla0Vii06qDi/9EETU3Cv4OvBG29DvmGZOZpz\nxCrjjukQ9YdQS573qRHba8oueWs+joPWIex5d3KoI6tYgJrdJVKNeG1Tqg37DPjD\nr74T+VegO36JOlneoUJC9V9fY27kiF6T2xYK56QJ8aGB7U4WXOOXgS+yPhsnbegM\ny1Pl/11SLrHx9gxajeqJG3ep97HhnTx2EqcpPHEMWLobSKUn+9uqw0DMLdq9gyFO\n/mNFzPXLWl/hQ1uHo4BoZPEdeOnC1lh9XXcE63kWUhPDMOvLgTHFzpDQtfe92KPt\nMVtn/6L3U0dg0pnzRWink1hMOU9ImmNWfmJfj0VGbJQ1wIRlr+6vpidPsyjCwG59\nE+JBybBqEM7CeLLNripyRnYJjRi1NaxsoK0uDn1syGY5qupmi8hS0lQ2dOil5KH3\nE6L4hX6cD6P78ToiiPl/PSS4adFZWkiqTj1IDyLP+w6404jW7N0wJYjkTmtvEZuC\n/+xtMdLAeDXVwRJddgDW3mXuIgAKbVG4okLTvUdZAgQR96tLUVxq10YNLTTkqeAM\nnHrmDSGzQ0F2BTu4oOVOMaqI+YHm7W0=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"ycs2oxobUWJh9svLuV4xWAcDQ78d1K/d4rPwXmLvIlUB","Address":"37.97.169.197:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFyzCCA7OgAwIBAgIUJ+kC5QCxUk/I0dQ4p/VBcK+H2XEwDQYJKoZIhvcNAQEL\nBQAwgZExCzAJBgNVBAYTAk5MMRIwEAYDVQQIDAlGbGV2b2xhbmQxETAPBgNVBAcM\nCExlbHlzdGFkMRIwEAYDVQQKDAl4eG5ldHdvcmsxETAPBgNVBAsMCHRlc3ROb2Rl\nMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5u\nZXR3b3JrMB4XDTIxMTExNjA5MzQ1MloXDTIzMTExNjA5MzQ1MlowgZExCzAJBgNV\nBAYTAk5MMRIwEAYDVQQIDAlGbGV2b2xhbmQxETAPBgNVBAcMCExlbHlzdGFkMRIw\nEAYDVQQKDAl4eG5ldHdvcmsxETAPBgNVBAsMCHRlc3ROb2RlMRMwEQYDVQQDDAp4\neC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3JrMIICIjAN\nBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAywnzVhAmTDPaViDIUGjWVXiVdLyi\nq3nOif8sq0cutUi94Vto/4ERwUO0Fz/apQ6DVfRQ8kQcJF9lzR7mLbOZ5KEUVc67\nY8XIZlQ8ivaF6//BsFSlYyBWLahOw6odzvBvHl4PZLwT+KxDJumAyOUY/lOPCeVJ\n/YGmsnjlLX5Qd5JehVmNm5qO/+WsmafLA39SHryshLB1mdcdb2zr/uAaTUBIQss0\nJVOBq1g3flEOD9QVEFjTRcTpiUCJgUZV87a1XwTq/y6ykcI+Z7/kmjZHPBHmtVjV\nqa4Mkb9VjYSYlHnoX0J7s27pvqx2jpCFiq9JcTnQlN9cFBilPOFBOccHTmupvmF7\nPEMTfKgQG7cs5RFGQIHWWRuPEHy/c2AXYhuTya6b98J10yQEDTcXktxIOwKaUHth\noFDTxfw1lKEBKljvXJHZ4Wjq6TSnMts8Q6qW361ln9pF8Rnj0o8FDZOG0QzSZVhJ\nam3P5sxLM2lWCzFbhHRlQRNWHg4UKbXGb1J0U+FojYehUnVxHormPFIRvQ50P7vg\nWogQT204WX+d8cLac27Ove0XioFsl9/7tzYgnZB3aEhEh0CGAdV+10f5kdL3HUvI\nzItSPa9MtAsqCpnChJ4W/AUoMXK5KBWSMukRvKfpnXDLePBacTT6XgtgQotCF3gd\npVFriQZ+GXna2VUCAwEAAaMZMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkq\nhkiG9w0BAQsFAAOCAgEAjMjL98RAcM1Dxm9U7tLk8990uRuhB8rUQOlauFb6dn/z\n/atszp1QGfQ4Udfx9ZsHWm4mTpWsgsUx8FF+oiTVMvna90GZHkf2VDN0VcLYUCqx\nsww19fK35/m01fqduccIJRaotnF5krlH3u9Jhe/2FoZxo6WLaSrXtaodJJTXFJ6e\nl11mVJvjQF8zV8/RlKtLmKcO8SdtRMnlQkPjX1iM946FT2nHKdqUvCn6qRWOlw7H\nXhenWQ4+JGnaZ/Qg4+SHj4ORMZeV2ZiPf+Hfb/AmnmNDgXWALCVVXa1zkDZn8MV7\ncncbQUm2vjQESUu2yWEFKZ38fyHTEEeDFpXi2ty1JWn6zL5q/Im3MneDyV1Fsa9P\nRH+QS3wfT0cm9Eb+kpfqUe4eJtUAdHdBGI1mDgLpfGVCwCJGvA/1mgH+0gPQWFdp\n9a3XQkGMDB4HNZIUCMbwM4kRP1UU6y3JvkUWh0Ok8DHrFMsPlhgTtMvNrAarm7YD\nAmEkOTrcmktuBrf6pXd3QEo3EFsFUiqRuTvrMHxzH8w3chp0xda44U0daj7dprpU\n7ErYEfCtGkP/ehqcX27PNuqc6glXON6AqjAI7xLj2dz3Uduo9w/jsw9CjhFP03DB\nwqcTVbAYGxE03w8GmLWqmxfQtivZ+9aR+UFiHvKHGBk5uez0Xn8eFyLB+39Y6QU=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"QJDaS9usPbBp8ZTuh5tkN4wgtPtFBXNA73ghVJtk/9wB","Address":"103.107.182.192:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUJSNa4pwpWVATxFar/OIf6aresCowDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAlZOMQwwCgYDVQQIDANETkExEDAOBgNVBAcMB0RhIE5h\nbmcxEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MDQyMDI2WhcNMjMxMTE2MDQyMDI2WjCBhzELMAkGA1UEBhMCVk4xDDAK\nBgNVBAgMA0ROQTEQMA4GA1UEBwwHRGEgTmFuZzESMBAGA1UECgwJeHhuZXR3b3Jr\nMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBALFx+fX1WNAJ/34ih0lY+HEeWWUpR5K1uJIZHSwlDQhRs8BY4SoEtqKZ\nu7QLcxjt+cSIZabADiZ7NIEAAsfHX9x92/cKJn9qnuT4IhWEmAWY/rGaDQnfbB6/\nACqPH/T+YGp7ucnqnxyVR7TsSU4P80rmb2oB/50ppwg/gQI2CoWAA8XggxUyAIjR\nnjLdG58PU0pmQMDEzon3DDwR2jQZL9YgvEXxlcjRajLLh0Y2DXl1yoe3YdeAHJhm\nhFsDAP/lUBZRQt4P4yD2jzRbwKJfMj4MV6+OhnbEescksA6RUDyZXTPd6UR1E/jp\nRydJs6/zAiZknYYPo23cDtf9toAwkBoNVCob6zLkR6VCymJP9UgPfbjSxan5xsNe\n7DuPUEpVbqn/95bgaCU82xeHgLlIAfZFNg7EFWrO55DQZzzv+4sw957OjZ+K+nE4\nmGLM3qqVS86IBiOXrFx5L5ibn7a9HnGFbOjQ6fGnoEK/oeL/H1V7U6kGp/JmxP3Y\ny61L9KlYFiWykLR/dQNYMF32MUb/2/uUhFn5OL0ldDao5ozx+QOk+cubeodsno2P\njaAAP0l4SGAmLadSeahMNWds3rRTAX69C+HemMSZ0Gti5f7qgP+/jbCgm0iFQ6ZQ\nYMpo/qNU6qYvwTPGNecd8nK0r2CWp/RjEe6IydDq7CBaJztXmdmVAgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAGZR67cB\nlMLCsrms48WIDU6Ugo3JydaS4STmKxAnw11DLffQv8ZbHJxBzOPbwkMX8bT4fRjJ\nNIMTNqJo8X9WmmzdXCdluukP5vu0AYa0XGOWUEE9MPolKk0x0krUSGQp27M7M0RJ\nwd9fzLoIhD7hFEeUYrL435P7L+4PtB+Q7kmwiHKGNnZHe4NDebzhmSb1i1Vb7avA\nsTBi/o4vDevP4nH7VJE/mOIzYdzl83URYSPiEgoBRMyZk6xHHHeicVt1i1BWlWbm\nsL+36FV7YAxF2SlXnr4dwrmQVaLHIgIkJQlMo6WjWld3G9rARKKV0vnOM5xl+3iX\nzQDL3ImY7upKoM+JJ8M7jSuU0BV1oLiIEiaRyocO7y3+wR7Ec7MRm+9Rdw/C++Md\nq/RWlB2KqULqjmACP5OYLnz31TIOygBan2685jAj/iGDSPClGBoUnhqmEuVE7yBX\nwTI8p7lVtRyurxXs6tpSnwTQV6SGfq4Sjm06bhAV3JDpcSO8rdwV2xcX2y2BrBiG\nAI0NkcjNZ4IGObDxmlLRDcBAlQA51bWBZ5qMFZMWKq3W6YbotSJD1umYyXxayFrC\nnaAdb/Fl/vejEsKazI/zCyISPt46V5wZt8RpbA78i+dJ4TVsoCmW44rQ7jbAAKVV\ncRzUvhqsQkPb+A7S68Os7SpchDL3amCsBmV5\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"zboT3RqwunlrbpMLv9d/GFLB+WRa68dSnA5Rkh1qMVYB","Address":"65.108.42.168:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"aAMco5Oa86trfFIrI3iJhkCIKkrhDJKU4StM8XFXXkQB","Address":"144.126.151.224:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUEwb5BBDl0pTBe0ueXsa8FKxJsf0wDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAkNBMQwwCgYDVQQIDANPbnQxEDAOBgNVBAcMB1Rvcm9u\ndG8xEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MTMwMzM1WhcNMjMxMTE2MTMwMzM1WjCBhzELMAkGA1UEBhMCQ0ExDDAK\nBgNVBAgMA09udDEQMA4GA1UEBwwHVG9yb250bzESMBAGA1UECgwJeHhuZXR3b3Jr\nMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBAMB/30Oy0TTKA0YuqxYB4A/G4dxcR/hmwp9GJJv8vvwABu/QV1w79Qt9\nZFBh0rxbJSv0/F+yo1OUukQda3zTyYH+Tmt35MvgrvuWsbQ1sAPoE2y01oU0IGW1\naWhpJI4VAvXZYvfFAHqjmxg7HuwLvpJnIqAIOZkougUoccq1EtuJwMWLe1XDoCPo\nArScISNvvyzlYSk/ayalDwGU1/C94tTglTGi3sfBOTYIGwEfcIcj1CaLPkbEZppP\nV6YSY0kY3U1SiU7KTUtmHsaDQ6uBcAmoxpztFgTxEq8Z67vOMNjtpQ0pjkW1uQ+f\nLZvPzpvAb4lL9L0cztWHklu0laQCD2HHgoX80eS2DJ+84q+/fJJQx40bLM/jb6uF\nh+HQuDX7j+jAfBY7HlrGhtLjFXRp4jZ4JT2BROi0S7PXhwIV294MndhOoXzDkLNv\nNOozL6AS8UZzWYGUhYvNfpRsFQtJK3V47m2huzwluDECWVMw55JRovM1YHrWywsc\nIz7yhiXXHaaFvcvchSaqml63Fj2yYng6FGAGVTepykLmX4RUrhwJ9Idf1kKjCfyX\nMRMVtsudo718PSutG1XJSbhJMUgSS+Q3UznUwWyi+tdfIwLBCZZFG3uWbaLURINa\ntlpC52jB+EMB81ouY9XxYvrC8cbU2tLeUsOWVJbozS/QLwH+0+wTAgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAKo2bp+D\nCBceUoEzaIulcfu07k9J94k6oNF1ncrgo1oJ3pQN35/SyN0MnBBvhQbrkHImdOic\nZOq2CYSlsntHzVn2StlL2jHP+S09nh0SUo/aLY1hyhgnI9n5S0r9cfmWqvvJ////\nbZpYKLtP4+aoAkt37SuhP4G29FDJWEnh6uxVKWebCN5FLgG6e5HtzCluWv/yfPJw\n7udolyOLGT9KEApn4+soc4r9Ns1G86LhBhTP+s+tEZBSRCSR35NV8oC+US2dd04M\n4MJXcSrXMrox3yQtAOtx0rVsWXzxDEnRA2qPS4WP0XnMOe5/idcG7lcBwqp9zUYr\nHdyqQopxnZOYapKhWJ4fvyUc3yoWuEtxnWm0yNCiwBqIsr76VacbdauolC7+5ZFe\nCTVP5dK1plNqnQB0G2yEZ/yWap6xmF7P1Fo5FJJwo3lOqHAUzo0VFW6UgY1fEB32\nHinzewwgI77PNoOE5ceJDotyHJchbsH9Y1OCr2gOnsxMGCZr5KVVLGJ1uvt2JTen\nx3wBEeFf++FYGWtKpiV3UQd4yGGOqKKnxXx0dJv21WhK1ecn+0IGHpmzXvk9RaYe\nWSYFvwJpjwIzohK5uRok8y/2ErdlqlkjS5ZAbJqX4PiKx3PFYJMaT5LX+NkaGGkp\nDAwS7UJ3Pwq200LcFzqMyEqN3cPmhiXhLdWg\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"oaBFFGFBxkmt/4mz0Q6xaJ5Ysa6qNcXK72F9ZES/Dq8B","Address":"185.218.125.248:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFwzCCA6ugAwIBAgIUWSWymYGdtkkhPAn3WAjcdWMyUewwDQYJKoZIhvcNAQEL\nBQAwgY0xCzAJBgNVBAYTAlVLMQowCAYDVQQIDAEgMRYwFAYDVQQHDA1TdGFmZm9y\nZHNoaXJlMRIwEAYDVQQKDAl4eG5ldHdvcmsxDjAMBgNVBAsMBW5vZGVzMRMwEQYD\nVQQDDAp4eC5uZXR3b3JrMSEwHwYJKoZIhvcNAQkBFhJzdGV2ZUB4eG5ldHdvcmsu\ndWswHhcNMjExMTE2MDA0MzQ5WhcNMjMxMTE2MDA0MzQ5WjCBjTELMAkGA1UEBhMC\nVUsxCjAIBgNVBAgMASAxFjAUBgNVBAcMDVN0YWZmb3Jkc2hpcmUxEjAQBgNVBAoM\nCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsx\nITAfBgkqhkiG9w0BCQEWEnN0ZXZlQHh4bmV0d29yay51azCCAiIwDQYJKoZIhvcN\nAQEBBQADggIPADCCAgoCggIBAMBKMzdR4gZ9TQbMCSAm45HAESEHLyB3ei3d6bqe\nLbKJlCWjD4E2lnOOINhiU2i7ohX0UvlSIpMP8kAPo8sDZY4rT7Dk67xDBzl0ggq6\n9QbLBMn1a0uf0F315JBxxazIRB2ccPZDPK16bIgU2fqw+Pz8gC2If1I822hmH7Ys\nz+W7/DmnXKx3TycmDp201+kk19XWn9qdZLcNP2qUCiLc44qdan4KJhuIGetog8v9\nEi3wCWiBVng0Qe4d71oLuA9c44MC2ulzUzR1jqNj2K5BL5U3vPFcW5f04NBVSOPG\nZZxHWMCW5ygmEp8olLGy2BomwdKmkaJkX8Mz4JsPVmYUmw8qD460wgKAzKnz8oJ5\n1FLh+iAbeINXguaEMR2QkKHm0OL4uiG2T72JBE4sxeeCONRYB1wbaLofIbsqVGFK\nFkUpUBHx0ae0IdxsK7OuTnqA4ZLR0BxadTjj/9af6H7ihZT0V3sZP/IfV9s8IhOX\nV7rDb+oRztzggfXGXb9vxLEn4o6Qx19znt6OTXRxyndp5aFQCCgiNqokLRW8aHRq\ny1cC/t4K92vdNz5uNik3ikSQEaRG8g8yFkhoGQFly0U/RCtGHgCA5oBIQ63cxrN8\nsECNf6fTPXlDe1RsL4LU4L8+isGEx1umhZucaPSKjkM8u6K8USIXNeAYyGRiQJKx\nbvtlAgMBAAGjGTAXMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQEL\nBQADggIBAHJmcNJ2Kai7juthv4qdslsorSllnEVZ3k+Pabix749QBTYchcO4TIMG\nQbCcWCOIkdiD9hlHFS5C38Gn5NEZFOJaHF6eX+51Q1cZsQDljdQ3RgA7T9AyR3FJ\nCPQhESNo/s6wbq42AMkcDh/VPWyY6WbQBR4vkw+k5KpMf0QHdAVgPDOlusUdmGNo\n1wmO0dL95aaA7V7DSywZmBBQidRtmTdc1HxUBimvgiAAjHwbZQU5nG2ucece4foA\nhQ/k6y35yzuLAAfoqwNw7zqGCeEU81FzE05yArJYGCqu3qwsMv3kFaaMJ+yyiOWq\nsRfS52Wah0YBMnQ6JIJeqhgLPPjnV04dlxLbOThWa1Fv8uvH6I/Z2Ae6Z+mJ8lKF\nOEalnrr6CfQbhqeRzQxc6OAa0BD/SHDoH/N52g0ctd67TxjpTdfxtgiBcOaFSiGe\nEnmLpa6YWnVWmYe6QHeWZr63ac5V4bR2qT439IqoaeWc6aH69XW6gtEhvkLpjofx\nXM+MdPGVgoP9bwIEK7LvBXlKsxFnpFL9VU9TUJ8VacdzqDuOuCp+GqVKeA2Giy0x\nDuUeJwQ+iPOQrBcgb2bB7J1m0AOmionwmdWYoPmlyBqsvjS9bod7ZNKpK3nQvNiy\nQm9J4PWJsRHtUVVQe/Lb6QZv8uITI3e4lZv9286eh5X8HCYvKI3b\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"LCvG+R/XrwlqxkAbQUQHn7TYeVXQfY91hNe/c3k1znUB","Address":"80.64.211.104:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuTCCA6GgAwIBAgIUJ5giR6cPvnJ+eF3KD6NcHZqhiHMwDQYJKoZIhvcNAQEL\nBQAwgYgxCzAJBgNVBAYTAk1UMQowCAYDVQQIDAEgMQswCQYDVQQHDAJNVDESMBAG\nA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0\nd29yazEnMCUGCSqGSIb3DQEJARYYc3Rha2luZ0BzaW1wbHktdmMuY29tLm10MB4X\nDTIxMTExNjEyMTgwNFoXDTIzMTExNjEyMTgwNFowgYgxCzAJBgNVBAYTAk1UMQow\nCAYDVQQIDAEgMQswCQYDVQQHDAJNVDESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYD\nVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEnMCUGCSqGSIb3DQEJARYY\nc3Rha2luZ0BzaW1wbHktdmMuY29tLm10MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A\nMIICCgKCAgEAzJ7m37Cwgkpld+unt9A7dmLWXM2nba6DCUfzTv0pO5IVYqjCBE2e\nogtcFYbKQcZn+NJBkU0XZhl64OgwOo6rEjPw1czgn5vR3OuQOBgPUQdjMaaosUJA\nSmhnJUZLODKFYPlOVEYrEmRtCHshiPBrKFPUp01FpynskbE3wYziwTVE3vpWFg6r\nYzz5v9FbnTMcARnenCidHl9gD+gMSmac4yZsDoa5BBqzIjcIJT2kPPdEFGhPZqBV\n+lcceSKWNl0TE30bJMUl6tv6tDVdC2xjQddViB0xsGz8Z4P0lYs6Gzt3ZjB8ILxt\n6ejaL3EkpWfmvwyDzRJbhg70Fmfn0aV2XoC+FyPk9p6HbO3ak93G8+egzrf1IUU9\nj6YBvreRLhXAR2IN5lbRl4r+cnpmMlZQDy5DMszs2cB4UKOG9wtfpdwg96xzEf9v\nyIT7Z5z4JemCqOflTZS9k9iV6yVYpNmwqzOF61lf24ReM4x3/q3oIEcyn36Ayaks\nklfIKGLFFfcWiJsT75sfVtmvOyLxybz8JY7QQgV4GjYJV0GTduxlSQsKbBONl0Qj\nS4HBQU4UU2squ1v3vBm2IRVMJJ+694pT3jWYFN0lpOSltUerksyubQXMrlD0Bggi\n9qpiAKCwhSs5TS2jyAITZsIX93EM/KAuIoVEgsZMzJToXvz37kGVaA0CAwEAAaMZ\nMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkqhkiG9w0BAQsFAAOCAgEAplSZ\nEBfhW/F2nwaCIBPOpZSeHAU2n3UBdCJWTJ2vAAVQtKGttpmiJUk2lYmn2yMfgoSf\n2B/hvScFTzghDGIc5/odjTT67KhucmUEe404D6B5MxqKfn3iBTKDi6/RkqOedLdM\nwKvndeYV5RjE6+XmzlZEd+n7Vd8jfPoZu2oec2l1n0qkxpQj/59euh+a5HebsrXU\nlvGteTeLdllZZMeG7WQxu850r8mTP34QghcgN8KA8YCz0yh/RKTWEpqK1Cbdeyzz\nbb+97lavXk9yhaijU/pMZp7N7FPZ1SwCdfRksLAQ7sW7Sc9Uyf2mxwPwJNITR7um\nDn0cf8eCKnAsVZYXJjCtXxOju04uXdxCJgnmYJgNHEY2x4+ZPO8xTrtoCabp69HV\nt/BK+4jLKjoGWX0Zw/UkirjiYjfKnhAbJEBY7k244wrfrFc/6f4jn1wAYj5wTsei\nqR+KJS5uwznrwVJn5s4iP/CC2ulwYOvYDzvV3d7t3+FZ7jogNJB2k1U1QJiMUmsT\nfML9SYm1rhNSh85TaxaZKqVNCWzIil+VOcgVcnyrqPmApmoHfBwSiK9nFJ+fzI3B\nfYO8+DU1CBvYu80CpY8GepSnidBb3JcU2vLCUBmkCwtbeuOn3fHKxlLwnS5fC+wK\nmfxnzro+Tl2jbEY4513FNtXUJniOF8AB1Km/248=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"oKNm8Uo2X9a0uoVdx9HzIUx2CKCdIrbE3xxrW9w6rsgB","Address":"173.212.217.93:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFsTCCA5mgAwIBAgIURNG9Pnx59zk1LzRGJU7SPawD2lAwDQYJKoZIhvcNAQEL\nBQAwgYQxCzAJBgNVBAYTAlJVMQwwCgYDVQQIDANOU0sxDDAKBgNVBAcMA05TSzES\nMBAGA1UECgwJeHhuZXR3b3JrMQ8wDQYDVQQLDAZuZXh4dXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjEx\nMTE2MDIzMDA5WhcNMjMxMTE2MDIzMDA5WjCBhDELMAkGA1UEBhMCUlUxDDAKBgNV\nBAgMA05TSzEMMAoGA1UEBwwDTlNLMRIwEAYDVQQKDAl4eG5ldHdvcmsxDzANBgNV\nBAsMBm5leHh1czETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQ\nYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nAMHb5pHRVlKbHIMQqnHeUbPy2w3LUztqn5yfgOYgXw0+Zy5W85fktXMYAlFWjs2E\nYLDFfydbz8HCXBsl5NIoqDnGJru83vOvAjT6IDtmeZ8GD884AwfM/cRPC9kRuelw\ndHvyg5yTdZANCHCqsom5bHwSgpTCBucT8Tm3eRmCBSW/d4qiakZeisXgr/nBmRq3\nhBA/odneVq8yleLWS/EnHVbh/1It0MFZXgiM830DYXdBLVj5hjBeCyUyby89ihmO\nxFrjgbsmjQ1xrvIdwzL88gOqLNHOcxvjmwHD76dR1cg8gCi/HetBIu0hfi9fCFd+\nnwiwD2vTastDp30ObpAy7rAHyUqYu0pbppVtm3DajKbq0Su6tVghfuryVHqCMm0w\nyFziYferqt0SthxfKHBd0MmHOIeuO7bWMoUkQn4dKFehKqasTbEaFPlBE3tjEIu9\nPYSdnqhhH4ACG9bxNBR0+A12MB0fiPVU5V5JYCSH+UGPDRz0v0TdHyy7aamSnu3t\nUcXidlOm26ddgsm+su+i1MKG+u5GUGi2Sfh97QMj9qaTv/F6bidp/eO486fW3cPU\n4bQTamtsWtia6PHSV2OBds0b4jTLxVF/Khijd1AuxzFrRG14QNOlPEwv462jSuwc\nWZjambColmI8aB2y3qRBBd8RPfoMqhA/hokAMeJykRm5AgMBAAGjGTAXMBUGA1Ud\nEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAHO2S830uDpgii+X\nddnjl+effhgvjdjjjr/Zogtn8P5K0KqxiCRHgncqgqLG6xFevvnNdY9xwtviwgzr\nYjULj6hzeBjcHO2Xy/mqijiCq+C/+IgHGBRVUe+9KkrQKh/wiw90oTKhhXieCDmJ\nwoCPGDCO+1BSS8YFZTJvfVMbEMFgv6RavTOoAd3kqa2+Wl82EOWfGii4r6kRv8cy\nF5z+a0CM8IDsHqvADuUMhui8+znBlxD0hl1IJIhqJ7yXd1c2qV5ZZmRx3dk+WIgc\n9oy1T8ywZb/geIUCRGNLeFaJJrIq03ZVqn0oAjPyLMp6sgw5cZNWc105k+HyKxsS\nbNLk1sdS8oEMlLYMXYBt+8q4ECYSioFdXEqIC0zb719vm2QbhWAw/RuVWINJirAt\nsjLQTpTTAW0Ws3RXm4A3eRLQunOwWN8Q7BeRn5Gynz8ZqgUsSQvdcUhVypBPFQD0\nuiYQAj0p+ylzwT1vFJdUMVPqlwUtQVS0CApep88DSP+7r8fNt04t6e9lbem07BW7\nktfIe3r/DWN/IDrsW+0JpqBWr6hyCvXNs+X7w41PatpM1EEnNCynUaYlNjUn9ucG\nkn+P5wpDFRwOUrn0dOumYFtYrSwAs9pMg8WQrSRMI5xCOwJs6Veui/v//7Vkjs3U\nz+oSj0Z2v4iDYUdZYMw5aJQNC0VY\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"ZqwqpHZLn6rmnQz8fkzZGKP0+rXA9pHZNiAeyaPcep8B","Address":"212.38.189.73:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUGJx27+DHot3tKUSgzGGr14xjEaowDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTUyMzQ3MDdaFw0yMzExMTUyMzQ3MDdaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDVCBxM/NwemgjniErprKlSK5PixCasB/Wp3yonozZ4Oq6CWf5N\neBbSpjqELCpwOReIfehbXzTJaaN2pwmcP1HimW4lyS6xEqKhfScw+N5iuuig/pSP\nGVPsjcYCM+gWhV+x1PTTtTdXi4Ga6DzB6lNM5xmIuLXiyLFrMjmki4/fsQa2+7Ok\nilTh9SPINu+7xSnWY7E79yqC/PJUJGmHqDk4y7klJ2Y5f9424cUH3baDt4ta0Bxh\n386mA5A086SUJzno/WWdQg14pxYrNTNaK3NJ1nAdpW4cjFzlH7UntsStJ8LJB6F4\nO1bTjoljsObytJqWFFIspzqMKih7y54qeiV7VWGQAXVxiD5AeBUpw/43mVFZz+eH\n/YSMEQoIlR6w9BdVCmXa/6MwCzK0sRtReRBcEkR7uuEJacKsYi0+CSfr1MwM9kxK\nCrdfAGg7RqGlMH0Pe2DJn0qtDvAyVFkgLAofnQgPHYs8aaJVkZtfHSgVo0G0fWzd\ne3AK/KGtcCIu6YwvMj0k9biId6Li+Xue/Sa8h03fzXeYi6W7A+UfI6ybGN/CwKD3\n49LL1Vg22pBx244yPTHLfNBd+OMLohQaGe6fpCNreLJVObcp5lGQGoKPDz5md/O/\nkI5WGwEGvT5DdfIgdIbZyTTQxau3RWc6j7p5H58S2jtY1IQqfG/C16Nn/QIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCx\nw2CJGiqfiAcLBxlKw1/K9ah+UgBQeuNwhPPAA4g3vorA+FI4izbGFepCNjCNadnG\nQXPS/ie7Qn31HU/MTj/3U7zClT2CJ2QsIMHAOeGYci/eaAg5SoeCZv3bIIN5brsu\nAsVM6aFrt1V0bhWnRbwmNOlB4PnDPfTV2BC4B9I6U052vB5xb3Vc38aqZSCP2X/L\niJaGKt9M3MSDjS4ZFVrX0R+uMc/nKwhcijnn8yboKisQn2Dym8IX3YaEmXKUsvEw\nY4AK1AFtsG4OzFC08r/w5FhiOAbuJB5EEy3WXdjIn6gP85XB2cOz5sp+iRqGh5zi\nz2ki2BIzs8RCj9kM77BvmkDIs7eZlia6bPSA2cijtC571dnFiFe04JlSVTYTAde8\nTOkKBXb1mwQF9IFfyZUxugc1y8poDdhsjXD9NZe89zreI4thsT6xhB5wJQi2tDE0\nO1eESPW1yAoFbW5VWUP3VLoU2dWg3MPDN2/fLX6FXX5kZhx2LTIFuLmkgmCSYisW\n2OCabRRA9wqvnTYkBvBeDF6XYseH4P2huAVhrIUfQQ5M1wQrDAiN7Vut+btQW/td\n/I2/cZ85PDnl/4jdJPKq9y83bi8gyhnq3UMiGQ5Bc6Kmj3a6mSn7bbquDTXOVzF/\nBMjsyIC4smITqbmWtVN469u0eLaSEs9DTWvNPX6FiQ==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"eE+oHiLKUD2sVIpRTC0raY0YfFzvVssewcgRf0ZxKtMB","Address":"85.90.222.209:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtTCCA52gAwIBAgIUPTV1W/RAJmSXx7YOiBWdnkJvaIwwDQYJKoZIhvcNAQEL\nBQAwgYYxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJLSDEQMA4GA1UEBwwHS2hhcmtp\ndjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwK\neHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAeFw0y\nMTExMTYwMzQ5MTFaFw0yMzExMTYwMzQ5MTFaMIGGMQswCQYDVQQGEwJVQTELMAkG\nA1UECAwCS0gxEDAOBgNVBAcMB0toYXJraXYxEjAQBgNVBAoMCXh4bmV0d29yazEO\nMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0B\nCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\nAoICAQDPA5DnRAjDojs7n8shZ1ZtCoHVwTRk1r7RNdHEtdrlOedP/ZSm8TGWTtDw\n842jKDYWuo9Q/gZWh62aNMgPGkd1ixyJx60ycxKKYoGNkxBAwqSMtdPeZ33Yxlhw\nmyS6JDQwDF/bJQhQHMoVZrDcvjDamtq/Bpl2gBxWSfXDcm1DiUNxJRzCZWLdpHwX\nriQTe843yVLjG6iVg1xF+QqIrqdUiEcp0HZMW7GnV7ylMwcdCC1cPE/oGNSTdNio\nVpdjloTO2Z0O1hZrqWDvWlKFXJmqWKpjRmq+AytYSAMOGkNiJ6gt+n8VqhnDyW7c\nEHNn+s7ci7YVRZaP+9SahRcTZxSIvYUpbRwyx6AmLBDheBZ85gSj3QB0cn+numsP\nFXKYhRJLijEu89wiwpQ0ypFl5ZUyRP4ng6jlVAlv+o5mipuXKD9gDTLb6m6ny4Z6\nY0Ybjel/6viygW3WRibHCouZ5KY9BTIw81YhWDqZyWjp4LHG1PChBRIclm7zA/2U\nPpULxssKDIJ+pZ4EJkORereNGDCp/tvHs9n579XDhrHmuhHrWIJO1KF6QPIdvA0t\nBefKNRa1mZuoN5rhBDNmUTPhiIB/gqnoidXiSj+SJWK5r1KDWgacbDESHGgmy55S\nnmzEEcUMO7kNJjBhVjmimgKxi3o+dDIskJgy76APkQGq41ElPwIDAQABoxkwFzAV\nBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQBaRdkPhm5D\nSSJ6LnQE3R5UFcu5L73SpLKuA51ToNM4MCYNtyREK5xd8YaCvL466GKci2lgW+IJ\nZjKXlPhPjCCUdN3WcljLkJRUrRxRW2/RLfUK1wPhMWGASsfbgXhAJwEsoImAqbxP\n+ITUb+Zsc9TPNvArpEygc+09yCNQBER0sH7VfuLZIMXQsDQDl91IJgpsKZX2oSYm\nZ3KatLNARigVF7tdtEimBpOIsUs4O8dqiPZR6/MfXbrW7jFyTUb5OpLf5kA1/ReW\nKAKfAMw/GfOPIC3TpR9W22kpDR+W2OucR8RCBMJOb4GdUHmAadZoOdWU6QPV0RN0\ngRfhS03Ef7YWaJoUjz6CxZnnqyqGvTNMCcxGQC7f4avHP54peI1XEsBq/M513QsN\ncx4+30Lsw2WiqEM5H99uVc0FuApQG+K0nOeEd0vMgjg3c1g1hAtM9wb7sOYr/W85\nJB8txXyWlwUK4Jz92yrrw7UyScn9ukgXp1LZVPaGCMTIY1zMx/IQE8346NW/I5uy\nf07Fewao3NDjaBpMYEg6808pO3w0vzfEaoe7+ZH5KYH4eI4JCFDL5/sREA+yct37\nhWbTsVJwLclmqK0R2sx1BblybRA1To2SB4yN3of3EqqlxPrTGTyuiERRuAuvh08G\nZ8169V+ZamRtr8o6gKpKvx/kUkn6xwoPqQ==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"CbbUZQAwfg7uSVebxdMLS76YQatTG9YZXp0OjmOpT8MB","Address":"95.217.207.236:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIF1DCCA7ygAwIBAgIUZLsHLtV5HS52oVZnT+Yz3qO1ZuIwDQYJKoZIhvcNAQEL\nBQAwgZIxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLaWV2MQ0wCwYDVQQHDARLaWV2\nMRIwEAYDVQQKDAl3ZWIzNGV2ZXIxDjAMBgNVBAsMBW5vZGVzMRowGAYDVQQDDBF3\nZWIzNGV2ZXIubmV0d29yazElMCMGCSqGSIb3DQEJARYWbmlraXRseXNlbmtvQGdt\nYWlsLmNvbTAeFw0yMTExMTYwOTMzMDBaFw0yMzExMTYwOTMzMDBaMIGSMQswCQYD\nVQQGEwJVQTENMAsGA1UECAwES2lldjENMAsGA1UEBwwES2lldjESMBAGA1UECgwJ\nd2ViMzRldmVyMQ4wDAYDVQQLDAVub2RlczEaMBgGA1UEAwwRd2ViMzRldmVyLm5l\ndHdvcmsxJTAjBgkqhkiG9w0BCQEWFm5pa2l0bHlzZW5rb0BnbWFpbC5jb20wggIi\nMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDIbtt0DA6WIwxISIQKN3ozmuvm\n5C3Wnv4JtJsl2Rg6j+UxK0Jr75QGqWSSGN/hAnCrHHsg7pvAXzZf8D71IrDK1cOB\nC3rla5Jxz2pjTS0Yfvr/v8zrKPbCYwT9ls1Qa1NhZa3LWBGhxUd3YcJ78s1wwK7s\nPvHPWk1fsFOw7uk89DBPQ6PB5/Shc9KZVBK4Mf4rDo8Q4C72fttFPiWbMa0t9Ixa\nbxAgGYkkw0eJfHdS1RFyXPxtKCDCMPMvgTeYU6Tems2QIQVPY+iZV8Pl8CNRPfqH\ntikPqCQVuHRUvt/l89vFLx18nCOvcVCcOMSb9UeTf9PGOyr/VHRYpB3mo6n/vJqc\npo4th2tf4Lq3XfX1D54LLg9KItFWsx8sXVzf0cJwf2hY097dPkFpwdd5Ovdl4MH0\n5O+n+3iqve/Zs8SGLpmbTJf9oaZSbRI2tVJETGMZ8vNEShKhS6h6TdU9H1E0zHCp\nhZjFntcGSL6pZ/+aV+4O1HUfvSw8YgyUT3ComRSy9B4Ecaco6r78Yh6Bjdlo7Dmi\nJ+Y0RGgrJQZc0mqp8db6WWgiSCdqrKFTHMUZ71bUp4rRaKMvIxTCZ5WPMGp+9fSz\nyc9e3IH3IL51hqvKq5VAGvlUjkRp0a3mJ81Zq0iofghS6WKH78a6dwAybjDQpQaV\nhHRCUfSXXY2Zom6pvQIDAQABoyAwHjAcBgNVHREEFTATghF3ZWIzNGV2ZXIubmV0\nd29yazANBgkqhkiG9w0BAQsFAAOCAgEAgcGae/1xu6zTaEasLEJb98IC5uH/wLcm\nnvEkOjlUuTK6KjGFNPVxPd03yDknkzc9A0UJywrW3GrHxZONxhmx5rF0ltkr/0+W\nlYqs+c2IMjB3dJijPME+qWVv1r04vgQUl80c089levM+4Keun70cK284LSWsDm1W\nhrrB7yQqPNm4dtF7kf23NSr9r751OLYICeBZPTQ1/WRAqDwzBoSRsVlEDjYu86rI\nXCGUceLc+6soXQe5ECYEf0r3R1rpUbv5HWGqcq1/ovst4hBTWwCLRT7HSVs5X+O9\naiJ0UlDTk9/XkeYbBW039kk7WFxMDGUUNye0Qx0k8fnaIFA2rUx1rCmaLj8zY8i6\npeVs/4ITyfUJGfDYZXpuvTHE52O/7HMMRc56Y829G2R1gt1bwDcNqHgGr5ABtfWC\nhAmBwnynNw/GRw9lmNbXKZIcICc1jiv5LxyyqNDnO35UdhD7aOaWjC0NhsgmTMDm\nZl185e8c798a76JNgW/kIhmw9Fvhhgq5liuZYKoWKRH9j8b8xD/rz7pKdF0Ie83v\nlQTp8nX0pm7UWPY97R+/kzWUIP5Jrl3ns5LLEz6V0FLNvihhEw6/mh6fl1a9+f22\ncja2vlLiUahwSetDJ9YwzJp0eGRri47BwHTEpsm0iSA63YAqq0tQaHgIJx8fqDLb\n4nNDYKBaxF4=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"fzUe8u7r6HrXPXGmnXkK6bBnywa06t6EXReudHEckssB","Address":"135.181.212.170:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIF0TCCA7mgAwIBAgIUVnv35LLZOBPrADfFqFBZmAWICz0wDQYJKoZIhvcNAQEL\nBQAwgZQxCzAJBgNVBAYTAlJVMREwDwYDVQQIDAhCdXJ5YXRpYTERMA8GA1UEBwwI\nVWxhbi1VZGUxEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzAR\nBgNVBAMMCnh4Lm5ldHdvcmsxJjAkBgkqhkiG9w0BCQEWF2xpbmFwb2tlcjMwMTJA\nZ21haWwuY29tMB4XDTIxMTExNjA5MzkyMloXDTIzMTExNjA5MzkyMlowgZQxCzAJ\nBgNVBAYTAlJVMREwDwYDVQQIDAhCdXJ5YXRpYTERMA8GA1UEBwwIVWxhbi1VZGUx\nEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxJjAkBgkqhkiG9w0BCQEWF2xpbmFwb2tlcjMwMTJAZ21haWwuY29t\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvwliy+f7rvC4HHwVOI8i\nEeYQglPADgZVimRSUWOnmROdCWM27aOHjf1n4E+TuzEKO9TkdN38nSwnqvcgfoTM\n0GhKTBnw3qUNhXadq0gRF61PwR1MoNsdQAFU234Gi3NeqsnLPKU1Nrx/M4eSy3ox\nED2oodUdzX88szYkZ8x2I5Gw6gzmZ18DNCtWp/r+GQyYIV8sLrTwGddBVxNWEkCv\n1URGGsmJYn85Ody0xVwU/eprByuJ6AsWRVVoQPtA5T9qjd1CKShFruUmz4OWAWTZ\nOhce/SDGlO+R+kR7Nz/iqgZHkvvx4Mghjv/H/yj0e9HJUsK3PG4i7mNAH6ndyRcC\nLFewfBiisf89XCqk2c030+G+5RKJaolRk7uDUisucfmFK31hYa2wZrBQoGtfe8QH\nnXsrAhJj0YRa9C3RSASO18lkQwSD2CvDHxwD6BFSWG6HP/cswHACj9TXjDkpuHJH\n2aZmubmQzLgkDvIxzRg65o/wlNZe0OUIpQVvBDbR/8XesngrEd/18dtGhIiA2ihu\nk0E3l0PmDf0E5TrRlbanBJZK42m2KRrkD/NgKspjomwgBLnzLGb6UISMFJSY6Rpm\n2DB4X+C0VHU8o0M6YR+WwBxRkEF4afDhcwRkNpVtDfC3ciOJ0CKcdgFT5/TbcxNp\n+2+csi6vB4v95gDMzgNnRdsCAwEAAaMZMBcwFQYDVR0RBA4wDIIKeHgubmV0d29y\nazANBgkqhkiG9w0BAQsFAAOCAgEAiGFBtJGpJXHBWGvFZPrHEpsb3EtNZ9x3fCKn\nWRFm2TPnagmT8d+Q6azIeUkbfL5ViYoAKcvjaKM7kXbui7bT+65LNJPC1uxcMT6V\n10lP/56ZRo0NNH79bmERz7uKZW4BTibmrvdMuP9E9Mbu7C12c5Ttev6p3BOoeia/\nhRj0WZSW3nEbSRC3injk5MiECVdcKw02Tg/SV2++9lPZil6cTNctvdgrUgbfOCx2\nIClUAwPb/xkJFSzpBSTz+fT7pWY/09nuEHDUvtxVLU4TIXOX8Pyf+D9dhGZNUGeX\nwrP1XiKesyTg748mwKBsSAashpiftstysdtPSiDoFwwyv2873KT5f4x3F27tFaaP\nSm5PUsK6cxNkj63s3EiL19PCfYMd0PS0VLegl4o3QzLsjpVRibw4f4VCSVz1u/1W\n6vV1xX9zj8rGU1GkBudLWmTKJH5LJebc0MilP38ig5JxbV1MfgXTAgPEKh0jnpCD\n15Zip/LMkWh6VrRX96vFFcD35C9Uncb6eVRN/sr3asRZAKUkXphqZ403U0WRZT2L\nn3zv5DQ+4BHldc7bV/1r0SF7MyWWawB39A6BVR6B9DXkcw11q9qFtPlawqusPaSc\nJOxDufAgk2rlb4i0abAPVXXwx0yXl3NET9bzx2mvq5nc7fNlIIun71FdDEkUMhgJ\nRKZzVkc=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"5ppZM9fEvGNx2jDhF2ea8wTQYF7r3rfXWjwHiJ9yNGMB","Address":"95.217.42.107:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUbFERUVGKwcvuAtVD3iEvpmiJXXYwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwODU4MzhaFw0yMzExMTYwODU4MzhaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQC5CSdNkHO6rq+YfjVzVlybmfG99/2enOP8tKPWUNEKVf3gbw+j\n9cXUXeG9wT5YQkYJl8tEJOQv0ShNinQbYdnSvfXwLNL7N/Mjk5fwqNUgUdwYh5Nl\naDYBbEmp1IZRbR8nYN88DoCOrbVK+urGMFwq1nNKItF3YnzglilKBGWI2M1pfbTH\nXXZOGeOkgd2dFCDAXQu7ds7PXdZRPqnZCPeJzKiq6RSqn3A329UxqEjQkpMIGnSO\nCUMbvI4/chPBt0acBMK6xNWhmir3lZ7Jv2RMpmCVZ5vlPaBX2sMAPkJZtQ5LatVj\nTiI2GVjCnjccE9HVpeyRXmBp+YaK6G/C26O+EE2ILTwRinJBd74kJEaABDWzOsh0\nmm2J2/Iou6t+ubKdYn4Vxquuypk5pY4zHxdfwSV9b0Qa09MBVzLg5eT89y8g38hq\nCx+8zWxvYpXuYOo2sMON67+LBIkNSoetga9lT4jgXA+LTep6xhSNUt3HzDBdxFGJ\nX3WscmGlIAUb9K5gaBXQPDVNV1vvN6RWXG24uqth3faOA8mbXHjldr2M9Fp6g7ea\nvcgW9D+qC6+AzN82DbJPZh3Y8UuHriNxmjbIdpdsTi384U892EtzHIbcdMyiHOa7\nU6aDOSF86a/ni4xT9zXKoAvdoB7XN73lo+oTM05GZROT9kEwUPDUeyaeJQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQA9\ny7bhDKCJSLHuEL90p0R0jPu1dZD67x9hixVt4JXXugWnlGuWWFOTIB6pjlV0buPM\ncSCcM1ERT9fdlr0cM5k0QI0wwbTjGZXIvWDc1fcMWh2ANMmzO/iKI1OTqjsuCg5h\n7MJrkEQZftGdT5tFpxQgtyV5ieaSkoM92WB1rnjUKJyfla81tSbxnsHhyYMcsTQv\npLNE18rtbXMYTpgDRmjjlQETFaHTafQz28ni6lwV9Qo37YR/QE3d8swywjwHquj4\n9gMB1QPT++7wd9BO9jN7oczbDFPOjMpXqwIUZnMnHRpEe18pon/i+l4m0CgG9JXf\n1fa9Q+DcgFBStGp0t5Qp9hgmWdpQL3tJBxsCgEZJ9HGIGPSUP7Y73YOZ2sxxM96o\npbIsMBXH+wEDnUY7/8DU7kP/QIqgO3Byd9C9DN1FPyKSzJqFn/jcLK2C4kilfgnP\nS2UVSyxyUWOkErgOv7mrlB1+iVjMltAjoZBd60pllArf57WYVoKDTKl/Ew9cQm5w\nIuqnfkvdzAVFAULmNRZ6RIsDteDT19JqUjDMn3hgtBCiVI9rxk/I5Z2cI2SoBwY3\nvZ2aoC0G+C6H6niwh6j033ksfnDuo/Hxjh/fuxHFAzliO9sCWU7E/Xg5M/OaOiQK\n+1MK/qvpdzwX/DrMtH6GjwyDkLd8/VKYd+A/dacNoA==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"pYkx33Z18nGH1CWSYC6bPrqLVT2BQy36uKh9+hrrJHAB","Address":"37.97.224.110:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIF1zCCA7+gAwIBAgIUKUx3BCixn0mRx43NG1J90vjE3yUwDQYJKoZIhvcNAQEL\nBQAwgZcxCzAJBgNVBAYTAk5MMRYwFAYDVQQIDA1Ob29yZC1Ib2xsYW5kMRIwEAYD\nVQQHDAlaYW50dm9vcnQxEjAQBgNVBAoMCXh4bmV0d29yazESMBAGA1UECwwJdGVz\ndE5vZGVzMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1p\nbkB4eC5uZXR3b3JrMB4XDTIxMTExNjE0Mjg0NFoXDTIzMTExNjE0Mjg0NFowgZcx\nCzAJBgNVBAYTAk5MMRYwFAYDVQQIDA1Ob29yZC1Ib2xsYW5kMRIwEAYDVQQHDAla\nYW50dm9vcnQxEjAQBgNVBAoMCXh4bmV0d29yazESMBAGA1UECwwJdGVzdE5vZGVz\nMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5u\nZXR3b3JrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuTzCd53hs/BX\nt7ppq4qd5DWbQtPn/c/E3lw7TGgwB+vJyAAywNpklad9SAbekdBw0GEwS1CKheia\nlmCdGcuD8iP84kUDklrOk2uBf3kl2aA6X16ntA+onl2e61RMIsetz6Dlk04ELtPh\nbcevtYR7TSIltjn6OUFxp3M0/cgmaR11/J1Jrt2xHUxxxJVWse8x3Vwi93IXrd/X\nYqWziGKG2Q44mpe1exqh6yWyA2lJ1TSw4NEsq/F8hJz4/C+B+Tux5UxBpN2vxVdo\ncwT3TB1uiMkl03IB6ZlvlbVlIzEdWu0RMdwuOqM3o87rzhPyIIDrKY71CadIv+2+\nFUUjSQ/t3XVuEZj1YbCtS7CerB1fLC3k5u0aKOpFcxpl8+a6Um6gdA+Wx2MxQCAF\nSvsfgZCgeJY+lhs3Yr3rJ1jNJWFf+kGoOTb3XlnD7Xa0y0xS4nuI3M8S0QVgKgf2\nlM927mOwhex++sPpVdoJdA30OyayQEQkpJeIpxp3SnWNqmNXeoTrFN/INEzdzVCi\nKmu1/z93IdD4nbGrPGqKi+70H1OwFH9vpcgUId+mlPOGHePsyFI3KZ0yXefLhPhC\nJdq+hfHVYmjBI7g7O2vUqHwcmKD4N9TkzLPz5MhkrVXDak1BVzEjsmz9YcvYGc+7\n9sqiIhO/VruJ/jsawLrJZ1l8Ppf5WDECAwEAAaMZMBcwFQYDVR0RBA4wDIIKeHgu\nbmV0d29yazANBgkqhkiG9w0BAQsFAAOCAgEAJg/zjSmtBNm5AX/6rCykpGlNlh+n\nDdovMCHgN8yWjdHqEKqnNDmsXBtn7SH7ChytcH4AmjiOsq6Lxwe1fDIT1jIDU5uS\ndffc89VN75GsEvAuzb4BHFYLLW6wsRTbQVil39PrYrPI/QCmD1vS/txZQzRnlNYE\nc8nJ6CRVumaOkOmbFeA36C5OQGMEw9sMn72QxYFxCxk/tX5FLfWIo6NTOs4jMeMa\nS8ANc9HGB5Z/fQ08hzma5Fb9yA/Bf93zVmfoR7hEWBaHkAW6bkIfQcx7J8F7CYT0\nqNk1TyKjA/IPRvS68sFk1NsgJRMjLs0sZIaV+gNj/tQVCVP07Xiwpm00sfHBL3B1\nRYrHozaf/eebCbRmb7KILht4v/hRl3DgLjr7HRcHxS9Qr0ZjdBTZ0cRgKyAY3ioW\n74BU6NRhROytt7CuPt6WrRiVd98td3hPV67STQzwHF9eqpnro8Tp2Ljsq7s1O/91\nkMi5VQV7oUBMcC7FDgFJug2nkQ7k5ExO7PzUETg9X4vi7333nJCa/uUxolOZDaMd\nQc1bVRYx06ZfOV60nol2CTTzACU2GdDUYdNBR0D1GMGcpoVT6yzxZ5G8ms1bLBuc\nJgQuoYl34/brNEX5bn858zBZOXEu2oCNT6WY2valkg2ZOLA9etKgTmcoBfNN3o7D\nKwvbkER2BobQDKQ=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"6TRnY7k2B8oO9oVkqltYWQHxbzuo5NflpvV1xsmNZmQB","Address":"188.240.52.205:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFxTCCA62gAwIBAgIUcaYulmRA+xHWcqRAjH4erc0xqkAwDQYJKoZIhvcNAQEL\nBQAwgY4xCzAJBgNVBAYTAlVLMRAwDgYDVQQIDAdGYWxraXJrMQ8wDQYDVQQHDAZC\nb25lc3MxEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNV\nBAMMCnh4Lm5ldHdvcmsxIzAhBgkqhkiG9w0BCQEWFGthbmVtYW4xQGhvdG1haWwu\nY29tMB4XDTIxMTExNjAwMTQ1OFoXDTIzMTExNjAwMTQ1OFowgY4xCzAJBgNVBAYT\nAlVLMRAwDgYDVQQIDAdGYWxraXJrMQ8wDQYDVQQHDAZCb25lc3MxEjAQBgNVBAoM\nCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsx\nIzAhBgkqhkiG9w0BCQEWFGthbmVtYW4xQGhvdG1haWwuY29tMIICIjANBgkqhkiG\n9w0BAQEFAAOCAg8AMIICCgKCAgEAzv1q4NcmwJOGKsW3rPbFuV4JytB6Mfacm0hG\nT1SongX+ih4uqLm5Z6fcIOO8LraXVdEAW32V/bf3zzVLUh4eeUCE6unTKUklToi/\nahvFdb3ktHa0pmd4pHDfgrj7iwwA2LVSgjlVhmMnFWq9SDHKeNus4evOpezNUK0B\nG9FhsSRhWpOp5V0GlY+w9SXcF7jgyiXQ8vamCC5OZL8DvJ1ioU6uNVn+JnMdz7cH\nsDKX/cLWadIJUp0Wkda9Cpbh2oVfeS6UTXjbewwliVJrOdena92aXJYDYMYUB+tW\n7bAacCcO2rtBH9PFbpGF0kQNx7WAFoZl0cD4Th8B+VwR5bLNTaQ2Qafq8UsAlYHa\ne9NGx1dBix18FRkyDxEbze+zqAFWBP+tOkcZbBuiRRKUHQ5CnxvrAw2eqZmDUn4K\n5exvVK1rsdyOb/KI8kUISc+cWBXEUIv++p068wn3UfSDVggq4Tz8nzFFvRhxXX2O\nFKnKSvFJse2t7JEi1l7qYlpZ3zIPXckqZeCp1HsCbgzWg4FLlhjPt2lJGEXs4YL/\nilf9vAPwEWR26xm4Wx6Q21lUv/J8UXAipB81mNkz8thhjH974w7wbuhoyOM8huvm\np1Oz4CLTAuFSkM7AnEa+gSvhRfaF5dPAe2IB4YYqPkvh2bGcBfVw6xyQgWJu+fb0\n5G1D78cCAwEAAaMZMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkqhkiG9w0B\nAQsFAAOCAgEAd5tJlDXQkl/hPdX6r9BM3oDG936G23JblxSy6RersT11Eh1xPKzE\nqqkBvH5WtaIVo7g2GeHc1aUpKhQ0DYAb7GpfJSnEi1uT9G8Pv1o4nq80As+ZCpaf\nsoOpQMNvq5U7QlqZufAGisTy4SroPNXsy1b0uHIg34BT4OK5GfranhN4FhR1rEba\nYl0xReKTjF/GqYFyXi7zOREQecjKldeKM80GaKR9GpCjiRFF6qLLVQXq356H3tj1\nIN1vzOIURc6KWrHDA7Je3mV29UIMVBIiyeBXO9CdOFLiglM6bzqeU8hCN+mHxAmH\nVFCxOHQ1/eahm8W+vnlRz4X1PU8rm/x2c6Q/GGgfq3dth7pFrfoiiBB6aMP9Xu7i\ndBcIEV9DdxWoUsFocF8fddZCSECNTRm5cD1DlUT/QqjqJn3VEGItD4inOIMsIg/T\nbQBG9ow/PzkQtqmz0AUxXj8sLvbJ5yXepqIX29AJudW/HAgiBXr76v9agU/7r/uR\nvMagbR0vSES1ZvniMaHDfu8In8Kqry7dBwXHNoW+kbwVnXxDNTuHu6VGZ9dmcid1\nQKKqZyMcko2wjxNIH1DnusbG40ThrM+9A4Ei+l8nw+Iajb+sVymwWbjAI/yYQFmO\nEQVoWvRq5qN88Rpc7vD4M2KnNFS5NvpCxxaKIuGQXvUNVYgbABHV4iA=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"tf+JdHpigIGeB66OUImFFKjV8qr0LaHK8FZ1pOXdb8kB","Address":"154.0.174.158:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"fkhmqjNGEf63+FWgt/HKpu2UDaUki5bV/IEQK+LX0VcB","Address":"23.88.104.166:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\nVI4v\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"Alex/edIDyGLrZ/pE7gM/2KfUbdQsr/Cfy4FEmGsCKUB","Address":"15.161.170.171:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFsTCCA5mgAwIBAgIUXOSv8h4EZ8uJMdoa0oJ9qSPlqUAwDQYJKoZIhvcNAQEL\nBQAwgYQxCzAJBgNVBAYTAklUMQswCQYDVQQIDAJNSTEOMAwGA1UEBwwFTWlsYW4x\nEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjEw\nODEwMDU1OTQ5WhcNMjMwODEwMDU1OTQ5WjCBhDELMAkGA1UEBhMCSVQxCzAJBgNV\nBAgMAk1JMQ4wDAYDVQQHDAVNaWxhbjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYD\nVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQ\nYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nAJjfqmUIF4aWaiPQBTg7SrZU/HPrMVAf2ixBsyh/wt4DxvE12cRNbWF3R19lljDa\nwfN+wr9n+e41IwyH8p9jwv9LrMPJADbA93YPofO6LDpbCrXMMyaVcl8DKeUENiWG\nZr3MRAGfmW2kqweyj69cedeq7v4IN5urLyQtkk9p7HAN0MHKAuRkrnqi5549H71h\nyxytMOrn3VquIkH7Z+PWyiZiyZjD9SeJPob5rxQL8rnZrvGAmoKwmDk/GdxaGKI/\nyXRGY0RngoDumuFE3G31Oe+/61J2AtBMF4vE0TI/4rQ660S9vUMrWTgsuULrXI21\nd780wmTB0eYT3CDuKXHByEXutTOpcLFEhlMrJZD2f3tv4F+vsPOYjkfXndPHYJQ6\nj+xkvJrSEmHRP8Xsh+uvIPG/0tmsT4cTXh8JGyXHmZ7eYfrNYVeUhHtRoAIkXnvS\nLE20E0GK9k/HKvMZam9f/svvx6KLzoO/n/bUNCvKZ9tiZ1Ntyeg/Lk0WkUsDSqSd\naz/9W8S73N5UwDAWl6Zvy6yljE8TZhL0SU5OzjsHxbBl2wCZGfomkbrGMNkZpHmH\n4nunYN1tzbb4tqMO2Ik8IjbCI9Jiy87OcSNx03c9rU2vnhsu0gHywxKanN+t0OSK\nPVugTGMiGPtv6ot0ntKDs2zQmPo4jbNcoryDqj9oOfwlAgMBAAGjGTAXMBUGA1Ud\nEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAA4k/UKJMY3sk7oD\nZqE8CT6oUtZqc8AiqnoCne5EXr/qPR9l5eTiRLaXFEJp450x1CUG70Jxfz7d1tys\n9Pn+4veXo+x8aGDEDsg5v7X15hpwYLpnUG83h9Bro4vYYHmTFtuS9FrFrHYqyxZS\nnbf+Gw21owflA9fkpfUPX7KoZ1hqc4tmyyNcL8ul3kvAAeXOfC4ehb9gWYG9yEFY\nGbwkGRp3BqyeT/o3vcxenoFeaiMg7uFCr8wuOT3TS1NUxJU7P4lKGTXPenG7XlNH\nG0OdTMrNINORvgQPe1MbEDrEFFM06ZmKNfFP1QBR6lyWzgdbmPOVLf/hyhSr/btK\nsRqIiXAF2m2V/xr/Z9eTq5icVfXwT8czbdcKO5G9NHAoRnmqLzKQkuZ5UkA1iI4+\n5TEL86oBBbK3Q7PfuLnsnWzFlbYdsq2jh7gThA+XBxsJuZ4CM6cfCxDSiqJvp+/X\naEk48bjdU1BwreFC8WFl+90O802fai9wEpybO+/t52TxlRnWPgF9mpBsHSSqhSnV\nozET9jluHek0eHBw5CAejTUbgTieM0tLNIVa9j1g7qetXOFUq3z95QWHo4AeVHTl\nwlhsNKPfW9gWH8eG428XPOPuUzHnpIy+H7SWEuOsirMhWqHFgK3ckRGvNKIniIRs\nHJs2nHN6tgjVY73blm8o3d8Muaun\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"QadfVl9NqhPuedaac7pEpa/CQ3hB1BlSnCbAL8NHQ1EB","Address":"65.108.3.162:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUD5r+W9E0nARs4Z80TeJEc++a6SEwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwMjQxMTlaFw0yMzExMTYwMjQxMTlaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDTOth6xXc2mEfmJqkm9LYJkfpbLfYKxx/YoaAvsvcohevHDy18\nqNrfedGzaDLQEgP8gD47wWWe6rjGyNC0j/M70K31m7ayKMIG5/OiXWcDpoMJAWQd\nG6DzDsqyclG2QTWG3u7QTwKaHhQNvdP8PcQp5E1wK/OpjQjCfGXq0wq9JF3sxc0U\nFJCefiun1tRcKyQqq6GzI5qehn0kPczM3ErJFnaXpU2hAWDbDS4p8u/8w4/fZ5/N\nxisFawH1l42NQdRJ5Ty0hre3k4ZEVfwQpcoQv1fbKUM7xfBPwhnewpeWHMzw4Qgi\neOy1sMYWJuBxuScfHjNu5wXpj1Eie+6IlE8IgNZ2kzmRJ0I8VRPDCQun8/SAvf5+\nj22OLbs3MQAzSa8SiEJQGlchXl/IMyhd1aePlQkI5LCQVbnIgu96TGCXauz1yNPS\nZTuhuflO3Utmf9Mp+YN0m2pA9ZnuNHzs1sFmyPtSmIO8Ejso044EHoyd9Vbt4pRR\nJ1Om+Ni/sZOqAZAv/tgkXarn5xiYNPL8ZfZKX9PIb1SI34AoUCWv7GpVDVYXx/KM\nFwiEEf/o0MnxEx8C6pKyE76BxV5l1fuu+JYWH/bP509a18T/JupWKFwmejw5DIZa\nBcRnGEGGJFtTPskZVuXoFbQoreW9dLsZarxQBkOC1smY9hylP/H4VbTNpwIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQBY\nm4GYUYLA/lcJmuRUZMwfrO73G8yaOLrlxFBaLAV3M3xTfa2w4rm96XsjYsuxFBEm\nyL8l94MDKJgv9UpiyDc1K4zUa6RGVLQ6XzlhyH5d9sLcwBopQEETuR8EmeYuoMyv\nXdolz/7pWlRSZiELu1o3my4jCwNHYPzPdYfwIwzfDimbYjgr17HdyqlpsXFPp1mP\nXMFzBrfhNGvDWUpNDgaD1PncViHppjpuEWoKeuMo0pNCtZcwQ53A+QKKGbRNNeRE\nar/urEowkbC7fHj8Xs0nN0LE4Qkowoir03OGJflOkBY9mHo+SnsgOWh/vX4JWbYB\nN8KekRQ+htCrKCJoVoxtv7uDajm/FdpRP+cVts7lDH9MObj/4+BbMTqk3tCxoYzd\npPzjq9A8NwBhIrXnGzIdQLsPTeYQHl73KCN9i+CgFfWQb39PFpd7lxS+JD/+J7dh\nyK5fJ4RKFMjBme1OTVgXnLos1Z54XS9NVwWc1BG7TKIO5AYuKrp+xfn2EEfTBt6e\n+L38MkEstFEC699BJkzaZBDn8QdIgFK49pXtsJ1sBrR29cachEOPhP4nTZJEPvUD\nDKCBRvq2pgxmYYRwDQTcS7MzmPKszdmWdiCfFcQ1B2AYych8IY44MwAeL+DNLJLN\nJ1MYthqTfSqHVqLQuubuW1Wlan5e2dEe5/Bu6XcO6A==\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"kgGYMH8rxprBOvOvGAZI2chj5xJI71CqIM34DpCII10B","Address":"66.94.98.248:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"JILIuG/HIaJMH4vx7HEv52Eth3TNBq1g9F8ywAcu9vcB","Address":"144.126.149.131:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUAWxtetkwnwYRw8Y4dJvzbOoS+W0wDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAkNBMQwwCgYDVQQIDANPbnQxEDAOBgNVBAcMB1Rvcm9u\ndG8xEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MDMwMDI1WhcNMjMxMTE2MDMwMDI1WjCBhzELMAkGA1UEBhMCQ0ExDDAK\nBgNVBAgMA09udDEQMA4GA1UEBwwHVG9yb250bzESMBAGA1UECgwJeHhuZXR3b3Jr\nMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBAMM/Izl/bIIU350M8Tm/pYjplr07zJCqxqNu5zzs7vOuInzBziOFJFaU\nLp/ffflfeJ+g/fvgHz48/2ixG8uKgBWx/3yeKjH28p4we9utIHrEQFSy3bFiKThM\n5jr3IsgWt67P9Z/mcFDb+lK+4OrpTIiE4PsE1ExtVgOhzE1/uQmlBOLWK6uE8PHZ\nTCv/mQjwUKCyNr70D9hGPWmD68OOex29qhqmYLQF78DqHxrk9MqfxlM1sZ+ABrM5\nNtqumPqY/n6dyFb74UFzp1HSyDukLLiBlVGfN/FEO/EHSFX+j87AiMez1qDaKLoV\n5V8u7Icv91bF1IktBLP+C5xxMny8Epf1e9cPcPI5Ooep5idEb6lGcsnxdKB/KlsL\n6BZGYOrxnQU+flCWHDJEkMWyHJhMileVkanlwYyN1uVlvvNrS7bDR+2RaBgLtTF1\nl2SGuntwRQ3VCV9wz7GwiK8fPQhDFG5n25/ceDB7a/z/NU0YSQtYV2SKZoavOdrT\nsYZTir5Xxu886AK11FcCXCJFTN+pAYg55BmPLSZGKCQSkwrAMgzXMKeMyNn/R8a9\nvbxJ/mWKjN7BVGkcFTHA3VOZxrgnjVRbtBcUlEF2LD0d93MrXiR9DNVYb3ppkLOa\n1tkS6PppCCuB+gJqHtloRPGvwtC0mSgA9P68NZJc5g2vS7NGt15FAgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAIVEmrQ0\nCjYW3l7sA8zPFZlMQQdk5zK792dI69/mdzz2tr/kyKj8BDAm+gX34hApvFTKraN/\nOMP7oW1K6J0RwrvBj46AUI9u/QGWG6smTuCe/SJd+AtwBOF3Hd5R17qyOdka2kCH\nYXMb4xeP99wlQU1frsE/WH/kQ4Tku0vOC20ZZVASP5FZ3BiFKBlM7U+3DE/W4Plo\ndTfbmCWkeN0cBm9mWo20EPO9JdskYmwlMosa9LfFWtB5uQWpw1zSqqqRm2Euoh5M\n4+4Sbbvbd8+uVfbQnVUQSVGK/v/Yst04yO8fcR7X/lpDAMeCxEE2UAzVPCHjbvHq\n/k0Xvm+po23TVUcVymouji6b9ck0hNXteq3Er/XJNVvBBnNIXyvhr/V76xQaIJim\nEcFDcGUPaUTtqA/+dk3IzxJjlJGvtht6dd5+Yh1E+/uaao61AXXGYnk7Xor9kICJ\nTtdQAi3/BCODUfFlcG1gXkW4pGAuxdFxiyAS4GKr7QXUw417Y0diqzPEbMz5ZzPY\nZ+PQ8HyX8Ol0N/YDORPVu/Tqm/HhgP04DEL5TYEll7SmVdVVrsKHKsg4LptbMUyB\nBUhIOp1JoAKVeW3ZN/G4tC5bBbkC2N3U+i42wBFR83NQinEWvseY/jA+Az9OLRqk\nZ8Cv2xem6mwUE2CjPclzqQZgZb6MSdFCMDjF\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"BDi/A89I8ciqoNu/iyptEkK7JScOHlZiO0frd44iMeYB","Address":"66.94.98.17:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"2z+0FC0QEilZJV3gMEZDrQUqcG6pOkwQDbrb+XQ7jecB","Address":"66.94.100.200:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFvzCCA6egAwIBAgIUWa7Uh4Sg0+N6bwyPCnysdyryo74wDQYJKoZIhvcNAQEL\nBQAwgYsxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJQ2xhcmVt\nb250MRIwEAYDVQQKDAl4eG5ldHdvcmsxETAPBgNVBAsMCHRlc3ROb2RlMRMwEQYD\nVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3Jr\nMB4XDTIxMTExNjA0NDYxOVoXDTIzMTExNjA0NDYxOVowgYsxCzAJBgNVBAYTAlVT\nMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJQ2xhcmVtb250MRIwEAYDVQQKDAl4eG5l\ndHdvcmsxETAPBgNVBAsMCHRlc3ROb2RlMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8w\nHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3JrMIICIjANBgkqhkiG9w0BAQEF\nAAOCAg8AMIICCgKCAgEA4O9U8Rwsp/mzLlkKnvOtQl8r74KU5PuKLUoB6Wd+s8Q2\nLCNOVc+a/WrMTv7CSVZg6Mkttq4cqbpc0ox+trW3PsNKcZp42uA17jkhP1v0iAhh\ndhvsBSYKtIsY3otopEbmPLjyB6UDNKoskgEhl56adi7hh9oepeUSkL0v0L39Afry\ny2JaHiftQ6iXHTVlP/5li/fJzXpT0zFdAPoe01Vby4BljVwpZJXjB4C5iqQk3v2S\nkCwnBZKMgRIrNYzpZijj3SPDlx7scHqOT6O4pK+odUpsCZn7xI3c15sbQJVNKppZ\nYpob7Y0OCCHu57LNAHOWmiWpTGh4qH9zY2gK8fM+5CbETgTC3nE7Tnth6Atfcm+h\nV2b0HFvQu3T0+CnZtSjz8mTzVh+NaJt1jAjt0PyxRyn8iyQeMMlAoDHtFmFWUGX5\nCstgYjiOltXkjHrwgzSMTNtM4IZxl7L2E3cdstjNGtkbovujiQFYrL2OrGxp4nYQ\nMm29/zcrzsxJ6ZNPsORm7G8akYm9LcbJWRDTZzw14L9Y0B9DdJfDa32uepnMXBcn\nH0Bvi5Jig2o5S6xW35s/NEKS/J0warXkUxAlmKjY57ITxdzOfSBbrqd02eLbM3KL\nREO51rpShvYzNr6sLvqIqiE1GpIVoNR7VT8svwLLEu6Je7jUUcG/MjfBqYTmKO0C\nAwEAAaMZMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkqhkiG9w0BAQsFAAOC\nAgEAkO9v4Vaig35iBXRThnrQop2qqiBvaoqX1eGvbKgQ8sYKE4gqKZmUVDDIQopE\nBnbc5pmQZaZI8o7Dw8cYKzKVKTcJQA/j9RLup4iV9J4BdTmuJUgjxOOJfnUnEkGs\neCdDRXA2WaDlQL+q9E78mrRktetvQ/J1KV3GS59xpqcXkRRckZ5hqgbBfcG7Q1pQ\nhmTlQHM8dym7023SgnSAZDWSlpm21VC8dFIo9Qnbw2RGHbTZu71ClsRZfoMN+ZDA\nQc5pW26xlaLttun1HdLAojwC1higUaotVc+tZlqJnmjwZylVoiXgoEVmnI3ZpUi8\nPd1OaagYGhCK+qN0wkYXPaSXetkgtBklh/kRstGHaGq4ZcgW49yyKYikmzIEro1m\nI3UzPCOiu6dObKHEneZOAGwdSpVN5sdNdCiDJ2HrVALwdGdKROneVZRWhMgCl9Se\n9a6bFCZgwLgUdIukWObH2i3MUFx2urxHJ/J1j68Nk1VFQ4cYNqHRgADCIIXBwsRS\nDJCG/9QxDjVHQ1IledQz6H/vlsGq3HVWOXLb7SYLRHg6GPO2ZYLDNIjG1HoQ4naJ\nlCMwz6CBbiXuo9gneRJS/1o5WXHjnsCDn2xuNRs1n0Mz1X1vGEN+pfcn1L0MmQ8q\nuRxJkjtw83vtoqYU1Qtp7KmUIrZsCpAB850ULtPWfPKbTaE=\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"Qmv5xxz4UnAtBBIgCQB+kRNVxrpVF3iGaXws+9P6vM8B","Address":"66.94.100.194:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"QTvkXe6Y/AkX9mVAErVR6ctahtGfAnwNRtqCiGyDhJ4B","Address":"144.126.149.30:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"},{"Id":"T6pg9GlWAoltFX4oBJ3rZSEa06o1NMIvqD/VbHCyy7wB","Address":"xerxesgw.caius.ovh:22840","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFqzCCA5OgAwIBAgIUVQ4LgxPj96SvRcoo13LW/giHnvIwDQYJKoZIhvcNAQEL\nBQAwgYExCzAJBgNVBAYTAkNIMQ8wDQYDVQQIDAZWYWxhaXMxDTALBgNVBAcMBFNp\nb24xDzANBgNVBAoMBlhlclhlczELMAkGA1UECwwCWFgxEzARBgNVBAMMCnh4Lm5l\ndHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjExMTE2\nMDAwNzIyWhcNMjMxMTE2MDAwNzIyWjCBgTELMAkGA1UEBhMCQ0gxDzANBgNVBAgM\nBlZhbGFpczENMAsGA1UEBwwEU2lvbjEPMA0GA1UECgwGWGVyWGVzMQswCQYDVQQL\nDAJYWDETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5A\neHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMjPv2I5\n3VG8EygUZ74SQqwFF2CTCR3C0rlenYTvmJCBfTKOfKTTbEGEKru3kPQ62UB2AcFt\npHA1ZtE5yqKIm/xiUtdnGdSRzJZfNRM+dzSIkx6BUeMx8UrfsQ0vJH1fY+XHmrgF\nLz9x5F7XLx04UdcCmk/qD18+KRW5xvKnEWha7l4JB8Qs939IvP+a2pLpdbLXB112\n5JVOAN9DG8bDoL3ALD0aVLYPs3Zk5sFW/cxn4wrNRvnja5Na+ZWUY4ePATzdqMyg\nJ0LZAyzAK4V90GgTrtSwBRhdgey6GCkEz5WJYFxxkcobwmH8oG64+rAHN8jfYAVF\nmbc0rx1o3qRDbh+vJ8odtF4yyJUrM76DUyerb2esHHo5Kcpo+FELVzm8IFXtQiAI\n75/ZuftjXeSgiss9jBuudfWNI8Neh1kZmcGuzQVM5RnGe9vpeFxyVlP9QRF27UwU\nX046T0COomjTZ5hy6qMFB8HChsUoH5HSPxnFwZwRB70Vm2LDPiodfR6U8x6JDT8R\nyZjfCfEc6XYASBHdohsjiEu6SS6kjr+BZOP4I+crxuWHgfRhQZ1ilUbTCQn5ip4a\nQFsnATXlcIFHRNz3RZv1xCQzdvu1XEJxcFSXZNCPsIx4hk36atrRyUrZSwZmAEuv\nK0HqXtQDc9GKF3cFR/enrelTEBmjcOH2ivuHAgMBAAGjGTAXMBUGA1UdEQQOMAyC\nCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAMezyEiR8gJdCzaqJX5Rglwf\n0rWOd45Qvx9+DqyVC3/YVn7ZQUFxhqt7bm5RzIHaoUKX3NYFQGO/1CMvY1VXhUC3\nmb1szE98OMUaruZKtOr92OoC+f2QLjajcEDEr4ndMIQBUxWsrZAQhTOddtiBb4fi\nE6slp+1cBJ5z2DYSRQBhpxQMJmDZDuRXP3WxuyDkf8t+clyjPHzWDeqjhLJzpkIQ\nFrID0fq25FN4qzD9AOlnt3i6JbSHD/DGXyYtvPVi9b8Kd4VamETexA9PKoH90wqD\nKo2wZjNDKttCXJvPeMsF21BsdkpoWQa7jhCQRdXGfSSqIlukwfRoooBIAFUh+QHX\nh0N/daAW1goOF6TPjq/QqS+8csr98PpWzk6uaWhd901Zs2fetTxWkRPsf46kjQfh\n5PTKVpJVlFuhH7Ge39zoaEwXjdV/HY32AMPbGaUXtVmGMDlpeLzM+tKNSmHhsoJU\n2nGgFdYbEw2GryrpKDaM3oKSOyxToUJfuO1T01Z+HyplBHxxx1ERgdpdiYUjSmQS\n39lb4yemvYX4o2sZu/Tsp7tERE3OGSz2TtOtK01F8Qkit7HmYesZJIo1XS2uBfgD\nb2Ieb8o3jKn6lrTTvzF+6FjvvgwDpcuWTM5Hm/Geg0dXV/7MyRp8MMQq4OnVjT6n\nRPvWqcnS3ca3/4jirMp5\n-----END CERTIFICATE-----\n","Bin":"NorthAmerica"}],"Nodes":[{"Id":"5LNIqTUctBWuWmAEB0ombdLl6gdMACBmWvJUWcSIxwgC","Address":"217.67.241.191:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"g198YdnVWpWWbU+RnGIAdkEsufGDfOyJcmsrFPppjLYC","Address":"108.249.110.153:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"JTcyB77WzyT7dn+3Bx+d3CrVDYfX8nyMpS4zuRMq2t8C","Address":"93.107.156.53:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUfpNDSUwCAMeVleqVyADZPfmpiC0wDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAklFMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTUyMzM3MDFaFw0yMzExMTUyMzM3MDFaMIGJMQswCQYDVQQGEwJJRTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDaGOCllBJmBcpBF3QnlfDTHbHrzFwSzT+qEk81v/imSNASIE+u\nDvSSd7d89680JCpnGa+FP7tIa5iVBx19T53JAcTEFY2wpawCJCut+tYHM5uJHAZ9\n/SCAII99uRGrYztcxYLZRvHpRvddArpXvVsMrMPAaC9t7MG1183Mx8XJjz5gYva8\nAflpWppDYhfpOOXuvG6Tio2SfPJSbji6+yONKhVoLE6AEzE1ABkp5bMHcz5OCCMj\nCBiD1YnuXS4/vlqHXAox3IZhJqAWIlRf4qg2RwzlI0/iq+NcQbzYxQWXnM8kl339\nbAYJ9RcbrCmHWi1OgnVBhHbT460Y0eP3T2kL29HOhGwRKbbqSsVvsOfSuEuYkb6y\njwCB2PzL3K1pyuynfQrURj/zWexTG0Fw8cevI6tnMOSlK3NHkdWj+V8zz0Iv2hJL\n88c4FNA44IGzuWmawa1TM0dQvHsxdqd2FL/lF/jnx4bzCXAY/7MDishJPQGsS+tT\nx8v63L8rBM8ASnA81Gfc78JBhGLd5bO2Zto3Xy6cz8di/iRnjoXojoqz4vuKHnEH\nW9ITNzo1qG+O4xqhR6U5tbPYaO+CW36lTSFWlkGN3xnfHzw2rGI9NWrI1mOH1P7b\nLnafLyoZoEcZqRpm94vxbrmYftWFCIOfqCcLtqHbhdLlzELW0RSdDzzH+QIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCM\nI3BbfHRWYxXVcSWMi8aMIk6brs/HHAbsdR8eKDpn5EA7bycDcNF2KB2nK06YpXEt\nVhpiMH1N2cYbz/kt6Z1EfM0bM80zKbsLr4gV2K4k1bOEUmo798YfJ6SxeuiBU7YI\nnm/1XgPYMw5kthwjo9ie6yeiT4c/j/IjKHp8yJr2vDZGozr1+U2Tnz+ISYMPWYZg\nrM1wLxUyJO6GlgtCc1CV1WCrnHBMu54NnxwP5f+EAfBFj5YrFzWyky0L0hdsMppT\n/vxqL8LN8d6Jd8j6piNY+MnoKU00rumF4gPA+97UTSZPctzFmaQckNMfxVvGND+y\nL/vGdcPjTnRicmljCpgC4E6q1iyt3RXPOps14X5wGo85brSoIjD/0adF3gucBUOl\nK7Gx5WLWnGXLEMeH+zx986WvSVDmgYlYUQ29lHwrBwkVCIKt4yATFfzNEToKfAK/\nc9ilYkHFJ5E30DZZ/IP+T1XPo7r9fLUJIotpnSZqUrEF836XGMLRT8P5yNQoqF20\nrC2MztfeWLqCU3SIy8VZqJ5/tFEsUuru2t2ysZZY5qJJmLQR8cNQyFT8YCWemxm2\nrv5SGVQBuDLBtDsBr7qcPNENkvf3srRA9JtuOQVYTmR60AI7Vv4XXyQUwD5j0CGR\nDE10Z5ZJZoduE4xE11n5E5HtTGTxmMkMmKRmRMlLeg==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"MC5H5Y7K32sFLxlOneYs/9CCZL6ASIAgKt8G0jGKZdQC","Address":"195.138.85.182:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUHoBBtpJGhfhOY1URfV3LE2z/ZP8wDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAlVBMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwNjM1MTZaFw0yMzExMTYwNjM1MTZaMIGJMQswCQYDVQQGEwJVQTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDXkqI1ccCrRcgHfu8OPgt/j1HqyBzifYNKDUOspWTYzsvsJ3OE\n/78klvls9hvQCgX0SScbwiMlWX9gfmTsorG/Z29vReP9CAGNFBVIU8cw+zJ8UA8O\n82hQc6u9r4uNWCYhLEI01eUC5CkuxfYqBxEDb9+syTAIhU3h2mvTsHyiT5yp3OQt\nRil67SGvg4zrcw1Xufi41R/PZCI/KR93kgEhhYEe1Xxl9J4c5y9ZEYqNbMfB2xK/\nYnTqqkN7yPXjSiuTATHFpN6sFG8nJdo9VqO08wudijRmjdG3r/zI1gVAIBkrJBVx\nHHuqugr6YRlonD9YUCTCuToS/bwMotEaYij0XQvoM2cevAFgldb2JEtoFQaAZdZm\nBhnurYe4Pwuj3bm9db/K557qazPG94wVgLA2EtjHrz4qqI6bB6j57B5dY4LvKcjA\nowbtem/mFc9YjIgM1OTUTM+M9osvC6SF1z2fTxiFFh7TDzERe7x+PRKNznMuV5dS\nzHBG0E2595shJa97awn7FGfWgmAI/35jM7C5KSa7Gz/CK6BECt0FWEPiwn3hnkIX\nudha4R38O3nqVUFn8kwCgWi3ONaELwIf4ffBY0+JSxBpKaSGlg75XyCA67S27o0w\njeuyThwhUd1dQrsWXz64gtXRL6GBHLUSXlkdCer7BJwkQp2JiTcCWZ4u8wIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQBU\n6t0n1Zz2XQrXJ8OS+eUocaBePZ4xVSXPqHFSrwu7G/47/G033CpyzFn8xD3aicCq\nAsGhi9eA/GxRpEi8ZBC6HfUGNMhf4235rkCAFihTjM4ELpaqITQ1LNRhjYKXYtY7\nVkc3GNpWtJObIpFnaiGX+litnO9x0Asqa3gnaeX4GDReSWc03Pb03OqugTRW0rZM\ndh3d4KZ7neRa+P+4zybD1qaVg21viUlm4RUJJvb1rTXfS291GhxBDfVRd7x/XXsc\nTavYmusyA7vmONXXo7F0xxN+QTApCGi1CXe0zAXfOEKFafxh9Tan6FYut9Rjx6YK\nmhuACJr23B5RNIw4ATwcVk/MfLKemOArj1PKZhQh7p9NTv+XsZLy4HdHr1cG8fXm\noxhDF90Me7lvgXiiGBIjrAbKH/XQbwizMiiGjJXxAsFhK3NwDOgC7y1Qu+PA25s5\n3Wj3WiUwzuibfotDTvJme29u2dozS4DPY4KI0hskyXlFLWYlLg5uOCHhPhBf6BuB\nB/EKXBOpa+XbWPhdiZshdp+RcCawkXeLlA03lFC0T3BTihT7Swxl1Rh/rmCcwM7+\nb8Gn/9lTxpVGnXJJIMeKqSBKOR5oQ0qfzhilcBeIEfULpOELGhwxED+ivvlOuk6c\niiUynLL2TIf18g2esGNo7klG/CQ+po5josCIW+cqiQ==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"NetR/HxbGHCev8tQYwv+uZGM4otKtxA2LNrLkCQ4uJAC","Address":"143.233.226.113:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"SiJPMEIG1gvpRAIdX72eIdM4didFSN7ETYrz5eDP5cAC","Address":"31.192.105.58:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFnzCCA4egAwIBAgIUTMA82n9HxTu/OuLaxGQJ+oOMQekwDQYJKoZIhvcNAQEL\nBQAwfDELMAkGA1UEBhMCUlUxDDAKBgNVBAgMA01TSzEPMA0GA1UEBwwGTW9zY293\nMQ4wDAYDVQQKDAV4eEJheTELMAkGA1UECwwCbjIxEzARBgNVBAMMCnh4Lm5ldHdv\ncmsxHDAaBgkqhkiG9w0BCQEWDWFkbWluQHNydi5raW0wHhcNMjExMTE2MDEzODU4\nWhcNMjMxMTE2MDEzODU4WjB8MQswCQYDVQQGEwJSVTEMMAoGA1UECAwDTVNLMQ8w\nDQYDVQQHDAZNb3Njb3cxDjAMBgNVBAoMBXh4QmF5MQswCQYDVQQLDAJuMjETMBEG\nA1UEAwwKeHgubmV0d29yazEcMBoGCSqGSIb3DQEJARYNYWRtaW5Ac3J2LmtpbTCC\nAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMRLc1z1xZFgCAnRYryPTPKb\nCoaIL0AfFUQVcuxWeTEFgMF/5HTxGab8TaWmLVjEuEbVL0XafPOj5lMWWVqGrgq5\nWDALjYIU0lIz/kWZPLcT+Qe0fKJB/cbD6+Lbovdr8TNq25TLFKnJTkwRDov/oB3o\nG6b7NB/JMsyHXsLUAXHNrvad4+pKXqwKo5s9l1OjPrxh6Y9/3mvOrIRxvLKd8x/f\nmGbhKmYcojNjXrHnF6hO/rX3MeP1C5HpeF/M7nY41h5RZwK4yYQcnmUWHgYmBJQ6\n9qMb68NeOPehG7P2LjTOkoDyMlB3RYAxziWEFKyBBk4zCcfxSstMzYQwDF49wmeF\ndqZWL81X9QQLMR45FXcJtJBN17CzTFvc/jFF+MLZR+3FszRnrDXI9xCtz3iBGs9y\nJQzllcksvQQ6ZUxo0dARz87nOC/Dii3Qmv+OqxRpwJsK0kQGlv/sEemDNyBSEo8W\nIlfnYWKpJ6/Cv5sHTb5SIQqdm3ZsxYQV75yWP5NCHTZoDQamxxOTm53+Ngme/LxR\nDXynTs4jrOtv9B9LarOvxbiQEzVL+pf+jaXlQJJAhd6bf0dmbRnaufcGGOImnSjv\nWvBjFY0ii+0VDSmXblYLZaekja9gN9GU+PBKI/9QwZx6Dizk4g3rDs+Go4tcUv5Y\nD1kykC3orwuM//xaiutXAgMBAAGjGTAXMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmsw\nDQYJKoZIhvcNAQELBQADggIBAC4IknqWGi3gQNNnDSzmhZWi8ZoVyjhPi0YwPTxx\n0jIIBcChdHYK/4/djcTIYyNXV0oULmwTIqYupp38z4M58aYP7Rv+FguaE7TbifaM\nke+vBBJm1DLrTiSjHEzC9Aor8JOuwIUQ3qDCZbBTVgkq2DjxlWiqMccnIEN1gw2+\nALQYsRD2Q1Ay8hSEMJnw3MpzTfI7LMdJ2pD4y+vUdQhH8eJzKfTcXW8hhS0YtpS6\nO1x5e0w+EqeHnsBKnWboOFVMga84UkQRG9OWKoSrfTYquQjqyaA5/9eHtRL5Jym9\nkzxOSuD++pIMygP2fAKfmkzse3PpN3dGtNoUX+RFXQ4LfMnGpgghKoJwlidK65Sr\n8mMXey867yybeaxt88UaHR7OlQ7K3ReXRiex7onR4IPdr3pql0SaiEiQ7SbTjGg8\nYoFm2P79aZ3Y5aUkaSD9DFr2PNwzvd4OF9kcPa8RmnamltYx99FDJua8UVeaVUvA\nVDIrZu4km84x2eVC37dzccLyTZukFK7H7vD13VRVJLMZmT2xOKwsWbaPJCd2VKNd\nwllAXZ+2UH/oMlBQY5bqvBRZtkYSzRo6kfjz7lY3xuaMRsfJha3huDP3bUTYdE2Y\noIJGorCH1zzap67Mfy1udLNcdpqTNn2MmUlu1J8h2z952wb1QAQWAiRq5qpdq+Up\nugl5\n-----END CERTIFICATE-----\n","Status":0},{"Id":"7meXffGqlOk14Lxx0PcEFBoCz+8lHSFS8BfkJvQpShcC","Address":"209.222.97.185:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFsTCCA5mgAwIBAgIUAnVVLR3hUYdc3OSDeXYdDE5pvhEwDQYJKoZIhvcNAQEL\nBQAwgYQxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJGTDEOMAwGA1UEBwwFTWlhbWkx\nEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjEx\nMTE2MDAwNjMxWhcNMjMxMTE2MDAwNjMxWjCBhDELMAkGA1UEBhMCVVMxCzAJBgNV\nBAgMAkZMMQ4wDAYDVQQHDAVNaWFtaTESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYD\nVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQ\nYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nAJ4FSgjLGCFrUqMMusiVrh4yDgXt/kQ1QV3vHfVqXJAqWJbDz8GtThje4ovzcP87\nlAGTRCc0IrRnX9Ibzl8oTiNFYf9V/SuwbbUmo0s/6Yb7Zgj2JjjgpXEKuPMyKD9V\naF8ETnmCrVogHZFy95Zi7x+WP0RKVw19LveELTLa9pQAG9XibxItFKnZbsuUm9fR\nvghcvTUpQkaA4magQZapOCknYhiT6W3E0ufwBM41RdPfdS0COuElvNvIZrrI3Umf\nhVUxZuJZMiedaSKBgkG/reo4CeJ20RkRl3VT/YERNzBDLHWvkx7Aic8rmEH8kPLt\nO4/mriAEEJzv5JJXHm4FxEWhPLDqjrnbKMSVrxMnEbZ3ym7xHMlWTU+uSbPDpk/e\nwVkubtWIENHMKROGQgjLPQ3WhV2mSJwMMDtuR5eqBbJFrcGEIaNDhH9+RjruRJsb\nJ9vhfA8/mBVOUVePjn7K+zsU4/8388ld66U6eibUdV4utj1Cy1dtStFRztnE+GBN\ne8xnQa89RkKROagkFNrofR2tnidd1G+cLcsHA730/A1LW9Gx+lGxA8tRGCljlbVD\nCU5OGHjshi0OtBlPT6yR7/5savjOO4GlGcFHD4Q9CmlqxcS8qVklzCMI+yz0eUEC\n0lG6rruAF1wxxF0AZ0f1qTtITBIaVSIbcn/SQNzcv4xpAgMBAAGjGTAXMBUGA1Ud\nEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAEzszlLwGOljdFiT\nICLaHGYB5YUlWlaehQ3QEsZHExlrZAlbtCZ0RTsNM2kvp7k/rnrBvKMkwatBC55J\nC/qxjdERguxVvc/4Xlj00VY8q6q6RyfkCCYdbtFuWbeH8TuVSnV7bjfx33rXjFZD\nevP2v+bbvxYKRdfbHEniJUcB5bM2QEn5pCdX6/tz9qoxK9CSfFfw1XWJ17LkAJz9\nmUeIpcpyKnqPSEXcVmzjl6OD1tKYUz8xR1oXheEmGkEZPLUcDsd+AdE8Ctj/XJZA\nfEpwcQDklvpyI/nkwmo69yPcwMLbBq3nJaTF5/l9LQDf/SexGYPhDMmqFVqUkmEQ\nw01q7xJxTs7L33vsqWrBbOudTPbH/Ly0NnJ+qH0CPvvCDKul/VRMOrlJvOnTnc9Q\nBHMui1v+GXJRr0IEJr7LybdpkOVqkVb3FD1dWIUQM+tlXVDJjjCV7q+gdkkOEyO3\nRcahuWTwF/CKR3Vec7nbz1dXDurRoPxAZUYrkqYXeYhNc3fBJ9jwYqyU53Roo/xp\nRoQHkw/rU1FmbTN9KBb4shGNsEelFPR7vqNe/2ZwQW0BK8wrZj5rZ2H+8eOPjRYj\nyNL1BtYo5IiSs6WBp9mKWLet/WVpYtVCGPckDk2gu9V9fBc6pPieRM28uGH2gzcX\nhIotrRZ8JVTcoELdETjnZA4NtIce\n-----END CERTIFICATE-----\n","Status":0},{"Id":"YrMCuSzzo42CRw/0+InBCyfB5tMy+moQcvTAceGBy5kC","Address":"181.43.194.251:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtTCCA52gAwIBAgIUX8s8KrlRV9Sd6nYh/AsotocJ+PcwDQYJKoZIhvcNAQEL\nBQAwgYYxCzAJBgNVBAYTAkNMMQowCAYDVQQIDAEgMREwDwYDVQQHDAhTYW50aWFn\nbzESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwK\neHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAeFw0y\nMTExMTYwMzE0MDhaFw0yMzExMTYwMzE0MDhaMIGGMQswCQYDVQQGEwJDTDEKMAgG\nA1UECAwBIDERMA8GA1UEBwwIU2FudGlhZ28xEjAQBgNVBAoMCXh4bmV0d29yazEO\nMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0B\nCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\nAoICAQCfGZeYFFF4U8lCGv7NpovkwbCpwL81RSSCVq58est3+iqmenQp/QpP5Dvi\ny0Mbmw9kehFugMu46IVo4ejE/y7NXQxYOIdjqX/ZoosE0whsl9+vA78kFu1XScLP\na/oq7I2FapeaMwQUY7sjcpNKTlP0YQ7wsFti5ncgoIEpZGaZmy6l9BRV+syeYlcV\nFybPXa5TPNKeyQOgokcLlo2NkXY3qVI+W8MpARqeaqh2Bwr2+zdGW7MC7wESEX3u\nvW0xUDmrg+waPeGoZ3A0TxVGWRUPWk/47hwxyS7kiZ59kODsv4XzSKyKuXgCf8eL\nYYUMNOyAFOzjyRw1WiDjnjU8n+7jB8AoK3aG3QXoZ+pCmiF7eHFCgpXw+guJguvF\nCOmTFkm4n8WltnENdSJrTmeBQRBj/28+tR+noXWAmaxXrzXa/st/orDfY7wkDwAO\ninnUvjypSTVBJj6Ei854II3hgym9u9lr0eCDNHx0qjknPTL0PfcVmIP9vdAi907J\nMHU4yHpdL7H4YL0rDWA57YemR2H4R6SH1/30KoHCaKS9NquCKqdZytFp9PzQgJRI\nn2YoCmRs3r4n030RSKHK7TaNMbCytn7XWwIAXUsm6/vrhfHIrl4us8GVLmqfUNaD\nkYH54SClYAGQX68CXYpmhfTWTTE9wOtgV0b/PsPV5wUS+EkzQwIDAQABoxkwFzAV\nBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQApHig8qco7\nKb/tp+rXTQP5CXgzAy8Ub3WImLFC1ppFeYtiivCz7iR52jeY23lbe1FqyTIhpO2f\nXeDNXbM1opVraKJo9f8gDflBaa0nSvksD+LIPDqCACZoq2Vojqgm48LWaX3ObDUF\nfu0CE2q4shaMK5xCOqMeziHE8ZJZ4aOYWKtUfYkk9LH2jhvhKKziJpg/eHbimYeK\nbEdrC2uTZsUC8I8DN4sqrXP7jDvgV6rZ9aQUT/XVi1z6a2VTlbYpvWPttLTvVUWS\n3T0cAKwejq9iHvjK9bsFXt6P83YgAfz0JEYPeFi8D3ok/m6NBtQuNJI34aHM00qz\nzezHACa9DIiWLX+hBuU77IQyt/FKroz56tYrc0k76aV6ZdYPY/nl2LBOhABOMiBO\nncbRUyr3i/0YlQl4xu61mzpoDp8wi/0K5w5Q7uzveEOwF1Lfi33uAB71R84FXdsY\nWJnLSGIXi2ekZmzyz2vGI2Tm99OAvncWbEZGDFltehhLnkwJaLJ5V+L5gphujlPw\nYqUVUYjNlc2GGmaXnUqxbbUMgUcbyWc/Zou//eeNLe/+ubgubixKCwFlvX5+9632\nxb2RSYovKRpQqkhwC6Tl7Qiub1yo9y+HER+KcIMQPfnQAc//EZVKEXwHq9RMDsXl\nQjMp9qAs04ryhW94YJVeNZAAMCYAD+0sNw==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"cT7GKZsAo8KWNmOb2ouF476nIMH74PbihkuaQzcXOCsC","Address":"90.188.91.204:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFrTCCA5WgAwIBAgIUMqyG/1qGTBI4Ng2Z7QKOoOOEyp8wDQYJKoZIhvcNAQEL\nBQAwgYIxCzAJBgNVBAYTAlJVMQowCAYDVQQIDAEgMQ4wDAYDVQQHDAVUb21zazES\nMBAGA1UECgwJeHhuZXR3b3JrMQ0wCwYDVQQLDARHZW1zMRMwEQYDVQQDDAp4eC5u\nZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3JrMB4XDTIxMTEx\nNjA0NTIzMFoXDTIzMTExNjA0NTIzMFowgYIxCzAJBgNVBAYTAlJVMQowCAYDVQQI\nDAEgMQ4wDAYDVQQHDAVUb21zazESMBAGA1UECgwJeHhuZXR3b3JrMQ0wCwYDVQQL\nDARHZW1zMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1p\nbkB4eC5uZXR3b3JrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxdxS\nPzRQDn9mpVWLBOlRk2lg4E+VdOkHJdmOistnbSb7Nl5jnI7tcYQSmm112L1x8GVW\nxru1qq6CUy6JX/EljltL17TJL92LEKEqvFexr9ayolWoq2zIbKVXDIB4u3XHGGAI\ncCTCnxowU9tNvKWGFFAbuv14CmLsjtHzWwUPWafCnkuFg5Q6lCQ4PHub4xqtSM28\ndxG3lZVyYpHkHOKAX33vrD9LQrOpeOxIv1bZSJYI4YdvwAPROAj+UhXt7oxOk+F+\nRTebcfFK4yhi3wUCOIEBlJgjMwf7L0noNju16L0JVnyE5kuiO+ajkvPamdjNqswY\nlG2eUkKdoqyEKXppL731PEAA5C9yHnBcpaCy4SX9WG+eEsXib65AzcGnIHVcsJb/\nLS1xGyxOyH5tWe9hLFo/wtbHAwelNisgYoRy8tup8iMlE7Eh4rCJR45BhkhCE1eE\nf6vv4EXF62D5H0rPS7ZY5qQeLCSh3s2lKuPxaUaxadbOujlf2UVP8Fd+wjMxNLLq\nF1BKwwdmi6NpceF17q1SXwXHDk1dcovNRHiVJo/c69qBkCakUm8mmX/hNY/wiH+c\nk7Apjzj3P17kcSqhHpOojXKkwqVsnpYvnspVocqpvOSzuNZU3rRPkys6Lxj5S1B6\n893wdK7l5gFyIi5cQshRNgHb6VHYZrff/UVZ6+UCAwEAAaMZMBcwFQYDVR0RBA4w\nDIIKeHgubmV0d29yazANBgkqhkiG9w0BAQsFAAOCAgEAE/Qa68+UWTHAjibWzq/2\nzl+HSiky8Yon/ARVurYy8DwrJ5U5Brh8jFzOADB86WfgzJy5uIlLjtW2aVD585BJ\nPYzT3UJBc3IzD69NbljPj2Uq019si4tPSYiyYmCN8VVkzqwYrWfX8o656GVDxr2x\nuRNfZxSX99H5ospjlU0FwjoQBYfUwF473cdDFxe2lPMaJJbG+DtV36N+fJIi8Zja\nZ6tbcmAVOVUezR0fiT0ZTvT0/JVxhRN1ltus64xqx2j1VliAWj79FM/xON58PMqY\n/O5PoKhTQFM6MMMDJf1T4FcIVeZaQiTX1dLJTBkGJ1i3x6K7IRQ+2C4K6hd5AhwY\nmUJDvYhWsGjnBA+YPpWDoxusFA7jmufYWiyE3up6suA8tDkTJxlbjfzpgWCqxg28\nV7ayN+rZr/GfkVpAw41ZPccIk3A4BfxDnXeQRLbYHTL153MxjVzNMx3iUgNRWWiC\nZeojD9sHSzVzAtL13OUkLq7zSyKuXPYUbruVv7Q3dxlTcyXBjJa+dVNFqEbsIW8o\nmKIaFmU0Rw87TgIP3rbhDIfC+8B/ZpI2ue5yHtwMNigLt/Ah+8QnQQw9tdgUwmwH\nLf3iV8j52fhomSV3OwL0mLJ9tG6wAJFnaErWgLwJ8UfRytqHM4TSLHK+GsDlgd7T\nzIhQ4nJ5AFyKhRU+LBjrz90=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"iQDAmGMcyhutV2tAt+YhZ1HDGi5+1kpDpbEFYDyMu1gC","Address":"83.33.4.169:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUVWtDtyUVWmHOEiDX/FoZLKS1BDkwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwOTQzNDFaFw0yMzExMTYwOTQzNDFaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDEtZXMpdhwxjzlvMVI0T0so5PUOe/1KEFJn0ipFtM6A+lcUsrV\nOc4HMFiT9ahZc2doqc7fKAvfIAXXEtfP6FoxU+6epw33siqudpYoyGFmcaNa0iH9\nFyNH6jnlYH/VO/8gwQdFpQN2lmXhExXvk1eGEgpeFlv9RgrGLyFZJqJ3WFRi4H/C\n/g9+dxvOOfHxpnENUZ4TIiGwgsk515p6RBNRIMmGssGdehA/fi079ivmYjChApZ6\nox1bcp4hWkh6IW46YmXgLJ4drjTCF1i7sNhduX60YBDfTsgY8SDdbI2wewYz6dUL\nfvk+tyMli7aVT/cBfIRzPQPSd1n91pemJhVJjabAAsVZveu8s+5+JrrZb12xHXip\nH+EM1t2oYojseZu8/5LTY13xGNeP/tNqFpXo8d1bLA+TmOI0P1xoydS3VEBHP7Ux\nPtBraK09GfZwt0OBLL5Iu01GH9LCN6IO/kBUNnXaeb7rrD9t69HQBBk58RXJ4U5y\nKqeydKBbMJ/fggu5lRwUPCf1wbkPsAOwZ8AFa8bUDNBNj3tj6/Fu3ZfxT/5/Lcrq\nU59VVPuu9FLxHaToIbfUxLrlZgZb8VxDmxhs1P5kZ6kY0sxBi8m2vhE+FQDeGez0\nAlRpRc/oCaxN1Wi4oN+ciLW3VTC4mib1WDZeSaaCNknpjZQ0D1PVs2oczwIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQC8\ndJ1ME4bnJHNeI1Lisc7S1s3Fldp2TVOTPjPqoaUyKjvwReAh2zv7lo267xWIDT4F\nbNo2rs4oopCOZrF0rIaNDUk2TNd+uz5iMrHC8Kb4K0W4xN5NJwsYItiyxPA7tTcK\ni+awaNNpMiyVoeXfOEZLGJN11oW+UA6aUNIGq5x+/6SQ5DuY34NSAXtyKUO/nhEm\nCm93A81tica7VsiNDkGTIzmr7uonvAJwxAj4BEVqvJIWyXgRWFJntrITy9eSnISU\n2Y4ACEP9k1sMB9BCRhSgOmlLVWIwY8OYyV0KX/eW0drkp0JTMd2yB4DRvufwFT84\nXl9d6NnLvrf+vtLu/enAHSf6xsvFo/bT0snA7E9ce3e9UtwMUggPbT0HDjM+BOHA\n2RoFZBsH/9VmE+bYq5Cku/06+jiF1hNvmfjD2Bd7d59F6Dd+nh2l1muKzhxUlFxm\nvT974/mmogOo18Hf/0xKadoAQ7IGA8vjWXvNwtu1RPt5UxbuMEa2s0JdUb7adz00\nJXPqz6QChndHWbm27bPXvqm4StZUhiaS4oSeo7DLA9c/AMepwGZdf7bOiI7g1YYB\nUMtbxUADKojBgd5kzDp4d3LPgyQgG19RmwsviceUgx+5BiXItmQ91NRRlOoxdyV/\nw3raw8/MxDUwkwHPon+JvQ9DlAbBajhU8FiSz+W58w==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"fP+Lh3ng8mU/ZwqeQtuDg0tjnNwl99CxcYAZi+lOlFQC","Address":"91.241.178.180:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUT8U3EDShPANKj6v0MK0nmRzM4M0wDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAlVBMQ4wDAYDVQQIDAVLb3p5bjEUMBIGA1UEBwwLS2ll\ndiByZWdpb24xDDAKBgNVBAoMA0FseDEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MTMxMzA1WhcNMjMxMTE2MTMxMzA1WjCBhzELMAkGA1UEBhMCVUExDjAM\nBgNVBAgMBUtvenluMRQwEgYDVQQHDAtLaWV2IHJlZ2lvbjEMMAoGA1UECgwDQWx4\nMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBAKVVenS7dPJWa2A+nKLgzml5ejzP4JlBxxWyAIl9Mo56V8XCvePQ2/in\nvJZa3kiADCUmHQbPxGQ0pYHaNgjl2NSZxcSzo1+CmOZjHw+wDCbsDqOZLxRV6dqq\n/nFLuFqYwXdaBnI6CvKUGUlPzsF9Liv1v3/027YIZIPqaOQciJzCxvm6MjNTZSmY\nLz9KM7dccQcMoY5cmqr6FRrq0goybayIe1Rrw3I0/5VrB8rr39I6lS9pCWW3/aO1\n3cFqb+IEfY7i5EXugYfIINiOeC6UIQB+ttuiKyHahICvVY9RcdAaHbDINNMQzjiE\n+2/4J6Ar/piDWwT2OkdJMrrl4XwrirbKL6usdipxZx6vGjVS6AMGg3iHwc8XV0Au\nWVRW8zNHJEqw3pCxJFyyEb+4O0aXFIdWBDn9myEfJhCePjhSdOb0A/PqZ6fqgsG0\n1er/ha4DNib+QEyzkzyxw0U9qZDJ1v+lzr/A3Ba7NdMIsqCp/Hb9jy/5KgNTEcEo\nibxZQY+jJ1Z1YzFGYVOo2yXlOBQtaJESewhjPEZcb10yOM5Z7oBBWA8tDStxymUL\nt58w/HlrhNDgG8FVozT585/oIxd0KgA4P8wb5K+AVLq8qfk/d45tlcl9BaSEj28K\nRnxnTNlkn8bUuioG4WtGVk3KyVaiF/TLMffIATh3nv25oQVnHZONAgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAJ1IcUVF\nDAJgATdeSFcE6LBqMLO2aUUz0nK3+IsQahm1BPYanchbNwWouz3xqLRFTvYLQcnF\n5WaqR+TO+DdLz8qOerLkmdBs+tkMJLsJJes9ZkvTpbEoIrhktFskEeDrndPiLC5w\nqKnDIHU1EuTdbYQwtEMnEGwd6una9x5Ky0OdATxYUlwwCyerhYokAAR/hKQYq93P\n7f+ZCqHmsrO7bmj6KVE+dOi0MVOI2j8g6qsp1EYmsKtda5wFKRMa9Ca6Sko6jMZc\nsvNoVakGJLkbxQmwyvC5WCLdEtcux3OQUWxtBZdbogal7gAgBXo2OvUB6kseSuyo\nWCjX6GK/f2MsUqP+pCc+rYhVgxOBzEQnfeQ7X2led5mYM6jK6MdCHkTHR5qHn5/3\nSRdp0me4jyP7R7GOiw/SlnnwnzxP3ISPp/Fa86XVEZmGjUQoMGnKFBjPH+Hoa5QU\nHuKhmhQ8RlWg9WYF6nKyo2qrTzJ4JWHNWxRKXvrsvnI3AKtAtJvtyI7+2dgYi4on\nkoNQfnVjRXoATFf9hpNLIIfMoPjfEU1GuotPQ5yZ253Pupp8oHi4i27UxESwBztT\nKfrTxkFBE6gvIcTmFFk+Szr+3ZQkdj7PzMZ3UxbC9N0rclgiPt5OC3/TqufZOBwh\nU26h9T9eOORqSZFsDOXbg/8m0aOesGrbzQOh\n-----END CERTIFICATE-----\n","Status":0},{"Id":"i7R1OUCAqa9PI0AReIFAME07ZLdgBbIFM28yxpR5qZcC","Address":"nodochile.myddns.me:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUcwxxgyvTRYt98rDmDZnI/Ag0sQcwDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAkNMMQswCQYDVQQIDAJSTTERMA8GA1UEBwwIU2FudGlh\nZ28xEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MDI1ODQzWhcNMjMxMTE2MDI1ODQzWjCBhzELMAkGA1UEBhMCQ0wxCzAJ\nBgNVBAgMAlJNMREwDwYDVQQHDAhTYW50aWFnbzESMBAGA1UECgwJeHhuZXR3b3Jr\nMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBALeZNRBrCzswminuK7ljwllnBG9Fz9BwQ/2Z9r2hd/MVKpAv/NV3LEqw\nw9d2CREuOnyyY7paDrBMIOHot7yZ+RkFfSuQMrD8dBgL5bX9CZJoy0u/aMJjBV4/\nDEEjFee/SUqi9RPrZTHL3q73UzcPvDWVtPsXGHskRRJkfgg4ggVxA5WBEOTPtePY\nbxSEBId0o/eXz6D8KA0/9sSPa91u3II4q2jSBQx2TFWU5OJ68QmsRksT4Lguv8Vf\nXjxq1us+g72g01bMSbR4BnmzWrtSh33zXPLyrrfeMrLt+UxUXRTrTFzz5sJENmO7\nY1ao8A6DdP1M5IrLAORwPGoJkHVXirxdHuS4Sx+4U5l2yFNYVcCR47FptohWq+Vi\nuzdnFJBcGzWptbRkZSnc2o40JNMtbKg00AWwcSGDLeo7w3uhOPX/4udRvsKXYZP2\nVw15NrQGCV4jD+fCN5UN+f05uhRFtkCtZBFdu5vj1jGhjpNjuMK9+ebewTypLAtm\nNJPlB1AVnDWD0K/4I7AH31aG0XS7Z4Xu8KredbFGuaj7j2fDWMDV8BFc3bBb7I9T\nOZ5iZOqgjz47OfhBBGHW9thH7e10c0F0bkky8yqg2gA6Se26kFyjZOoJOiADmPX6\nuhXCl2Bewe7mfaVF7iJ616GvNp0GLy+3O/inMwVCUnuECXI1PNr5AgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAA9gUFg0\nS+qxRvAdrx9W635OY22Lutz7uQrc+POYvojEoTpgsOStaJ1wUtLbhtjzabN0eSIF\nOmXN0l3Ugb2b/abRrKbzQTdaUugbbNAZ3zPbSLQD5tBENFCaBNldftNxUIop1Qr2\nytodBxadpONAfyO/34P4Q60YJAbL5tkzA14n2eQRCvwdmeIghpjeYJnqLqhbTcZ3\n1wLXm/yKNdDciGeMdNqHptwUdKkFVN/Ao+C8ZyMVovoqUsHcJNlZOwpDQgJiKOar\nr59sGhWWtVw0F1at7+TvLDzgFwtsnLoXOnswaM0h/411gbYVGPtML9reTVp1wFuz\nN1j4FkzziBWxpsFXAmyhEe380L6AAQs2dN/ZdzMCdRUolMbUNY1fXqm+48zORu/Z\nIg4pOtxDoEuQlYqfKDNTDvSiZ3JMde7KOo+FptXofAPeqr4QdPRUQv2cPk27bDCb\naS/hULsJRRhPbExxKQCAIg6UGZ8g6hL5IVClBxn02OqnJ13qEshJh+dUW7IKajcc\nvPqbJKy0HmlRyzjwSw6cfk3pWNmc3WgApU3444L927t4Wpxjj+4R/1UQ8RJX2I+R\nVTUogV8bpGo5xq/GcG475zO6CS/dcHkZRfgq2Ruv1I82uEUpyICSZYJbJ0b5sy4c\nidzjn+1Oxn12wdf0I2H/iSTHohT4dQshDzlU\n-----END CERTIFICATE-----\n","Status":0},{"Id":"GJxILj6ivVSmHI5TO9m6RsLii/UHJtRVBSXI6x/dIhgC","Address":"89.201.4.237:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuTCCA6GgAwIBAgIURrTSHTwDhIEHGDXvyaDvgBzxOBMwDQYJKoZIhvcNAQEL\nBQAwgYgxCzAJBgNVBAYTAkxWMQ0wCwYDVQQIDARSaWdhMQ0wCwYDVQQHDARSaWdh\nMREwDwYDVQQKDAhTcGFydGtsZTEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxIzAhBgkqhkiG9w0BCQEWFGRhcnRhZWl6MjdAZ21haWwuY29tMB4X\nDTIxMTExNjAyMTkzMloXDTIzMTExNjAyMTkzMlowgYgxCzAJBgNVBAYTAkxWMQ0w\nCwYDVQQIDARSaWdhMQ0wCwYDVQQHDARSaWdhMREwDwYDVQQKDAhTcGFydGtsZTEO\nMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxIzAhBgkqhkiG9w0B\nCQEWFGRhcnRhZWl6MjdAZ21haWwuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A\nMIICCgKCAgEA0UMSA+9lNlVHCi/U2T+0ui9oMl5tdu7UOZK2MZ2AqZKF3Kx5KFeA\nhJ5xtO22oO1pKEzwqmEUMzK9hjguEHJImmvY2hx7Sj6AVbhw0swrvJNfRViiaNZ+\nA2wO69gDA4zavTBow6N7U7NDFXh80DaCYrp/lEdnxhn03oxwuJyKigJjiIW6bTcd\nDAEKlnNjmtfBVWuvRzdgt/x8Myj9kOs9/WsxFYKoYHOmsrjTqL76p41UeEB89GFc\njtbCIaMARXBVYsVxfLTd+k4dveBw02KjHzdK6uQeC504zmFoUx1MpVcJS4Z2Ritw\nKNkRJzOSQNMsPuGuBTvz2wZvc1p0kIE6sHNDbvIY0vOTCqb0UL82C+q/qTvsy0cX\nDvEZF1TxsS23oYJjVsvGx1h2yIokWrAC3A2aU8VIIq6bWnxMuQnPdGVBoLBMW/1x\nVwXmLc/KD/yOjzUSV3ExyZmUL7Buom5W2ogsHYxoY7gQbN4Ib0tqmBX5btaOGdG0\npUUe8cw326AbAlDEi7jCw8tAdyOKyBEHDfQBDJMKWvcMH1NsHi76+b2NZs/HUJ9z\naRY7OXZ1stT1fB6/q3dO96cYrR5/GFralcA7KCeXld4aT8rrU1anAI2ojTAgvgVT\n8T64WmGJ37x2Ild3LjFlQlmjzlTwK8ru5/5D/z7NB6ZOapuDx2Ow900CAwEAAaMZ\nMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkqhkiG9w0BAQsFAAOCAgEAW/MQ\nW8FoFht7TlSOydcvMZmYYCcLdwb41A+0JMWOelrUnvprueUx3P0B7pwB6fdj3wK6\ne0KxNUWy00jjuvbdCyFiHxim7dQWzlM3LAsuNK4kt0QBwQgg995pW7TxH+iiKALs\nUNdWxsDXm1SsJ6LTzYhZzmjNa2M9xJSVP1sFT+Ii3l4wqpGpahN02iflxQSRr8O/\n8xf2QDqGV07nkXn3c+GWgB1BBvzUh6J5n8/Pd84m1r82E+QvDSVoSr8dKobRt6Rv\nwtJBE57McWCNa7/SzFGTsXJw8dtwT3X6bM0gf9w1gHvCkyY2Zx9V/gDJ/WgPV4Ql\nql6nIXFLcg6UdgCjxy74BPaLtadafA6bxFmqLwz6aXdT2VHJ0brwKifdg3JuoW/J\n+z8CRfPdWiE+rcbUfoh2xg42W4wq48EoL6lMPbDR4Ds/4aLFmx8NXQ4bXEtezfMR\ngay7Rit68WyNi+BnwH6t7NovHZuAbL+HyI1amkqU6Y75bvzsPuKwOZZLzhxVomkf\n4AJfWbwkhHEeHO0gLaOyoX/1L4LuZX2tOUIDhhn3+RArd7ZIFZbxZS6lTBP59sn8\nzDrRJqxDAoHlWse+yYfASlH+QvfMCCUOTHG2jkd0GL+olALZ/7ZNCmeWaje41UNa\nyQjFW3afvAH8HqtS4z4TE5qr3H21Uv8tTROKCRk=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"9a4a0xOF1jI7LnB/TgVSAgvS1bfJs/RmLNkAJ7ayhIcC","Address":"101.98.209.195:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuTCCA6GgAwIBAgIUYSZps19WU5d8ei2jCYKGz8ZguaIwDQYJKoZIhvcNAQEL\nBQAwgYgxCzAJBgNVBAYTAk5aMQwwCgYDVQQIDANBS0wxETAPBgNVBAcMCEF1Y2ts\nYW5kMRIwEAYDVQQKDAl4eG5ldHdvcmsxDjAMBgNVBAsMBW5vZGVzMRMwEQYDVQQD\nDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3JrMB4X\nDTIxMTExNjA0MzE1NVoXDTIzMTExNjA0MzE1NVowgYgxCzAJBgNVBAYTAk5aMQww\nCgYDVQQIDANBS0wxETAPBgNVBAcMCEF1Y2tsYW5kMRIwEAYDVQQKDAl4eG5ldHdv\ncmsxDjAMBgNVBAsMBW5vZGVzMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZI\nhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3JrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A\nMIICCgKCAgEAwhFppfT1ftTB2ebJdw9Tw2NkKdGPrj5If6rflFDu4K5iUFpwQj0j\nk+xxlkhoNmAqvNqnZZdRpXDwg20jiOtvI9IxSumw9t8tR0z3u00ig8S4lexoQ8ct\n2Tr8xH1g+6F5WAdsT1rVnht/JNlIOm7u8nYvoNAY2uZ/MeOj9Do+osNafutpLQBK\nVvr+LyA/h53RmzZH9PWHLFjAdnl2Ps2colIsA1k9pvXJX8owGHjD+oOx7bpo094/\nLbNCSgdxLIGV0Scm8PxRyvdLS3tVdwTEEGhfF0QdiJAJDjZBgrQ4oBy4nMJueHzr\nt7r6MijFLguU9m+4yMkeWRnb2W0xWF/TOFXAjZ7v/huxq4nUXuys8GGMBNXyjaDa\n+ErWBxwcUoVOtuJraQauU8g+cwb2E9cyx23oScfWUxM4NGpFagmaqRNhO8Ybk95J\n8EfPpTWUQzAX//q4pXnL3UMnTqePssZG8IGMmS4phxF/FGMHekNn/WrdXsc1+U2n\nG6rfQib80FO7lEJ+HS7GPVF1bTdddbAtWT6tc2GG2Z6wc7CnDptvPW2abqm4ZLGj\nFBdZWVo8Bk7XfOKcADh7OW3vGeUPNjRJzVdMJkbB1JIXAHkjZ63migYRWg/6RRzj\nbo3VJcPnazlnjlKkhgrL4T9iNNBaMWX8pumHnpXPeezXExHdlz8oqT0CAwEAAaMZ\nMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkqhkiG9w0BAQsFAAOCAgEAd6qj\nP1CXcsL4lQ9hfusv1UueltieDDuwRgxabWi/gGPGiYo5jGS8DBgk5AgAoNSOcEAh\n0Jt+C9E1U73vva36hgz1WvERBbjKf2vC51pDbWcRvNeZ+cNZ2WAvxZTBl7YKrDn9\nq30k0HaHXvB31fVHQ6fUX3D4kLpVdjfci9tolPG1raQpNxF45idW2KKsCgFjAGIO\nKmjFEJLMSeA3ycfZPs6jrF/W3Z5h3qRuh6vCurrzPktAxYEFEkOo+rtVWZSrWg7c\nWUNnzUoVozE6gBxnK2u4g/40VzRV4K4JupVLcvYVmTpATvpoIoqsywcnxI9Oqogc\noFPX5ujKslWQuAjT6Yl/bpfrfhVaw1QUEccOtY/Gnf3cm71rJ8prpdRKwSvTsPog\n4fchb0CxjVt4P71rVN7Wd5iIRSrgcrnhfGbrGcrP9FCYDYqzMeuFQ85tOAPYYFwy\nJwa5zbSjsDtEX3kIrP5moaHznPSzQ9j1dSOGwXTJc8T+IgU7v1/M3QkHxiiNfpwp\nMLFIYYaCNhM/WYBj6aBKFAB9YGl+r/cpoOnYHyz20SXv3BpG4yKbkuJ2svXeHOna\nWz/JSiGGoq3OmpJRUEb4ekVU7c6dkD7R+AAEKmiJ2f+OsAn8J/ePxm3C93QAXc2T\nCw6LrvvBUCkbJaY0q7Ic9YmAB6t7gNPjv/BR6N4=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"VWa7ryiRC5cvXc5kA9120tqrGAlb8TvPfpAWnh4y2V8C","Address":"185.105.7.208:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUQP0mI2EDLynkaZE1JJzzjeDnGsswDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwMjQyMTZaFw0yMzExMTYwMjQyMTZaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDJTDVC8SJN8l1/Tsnv8+ukRQAazBmLNJ4/boTrqfHpKsSqRTN1\nJHlrksgQBFcWBkvFejsmGwMiSFecpS5t2KtgPv8RIGFhTggHz4W6GoAfmaJ5uROz\nJo/aD/uU+lyalEd/U+2+bdATNWYSs530IXHjzye5q7Qvtw5w2zdzW9WncHjcTf1h\nLnsWKPWgo+doHVqNSAMP1z7uN/rZ+ZVo2GqbVq9ITRegfZIU76y8xssE24KPjO6m\n4wdEv78nuUWVFHCZRZis+eJWuvzUAEgphHAy5JQFk9bMImYsveb0zvwsWxuse7Zz\nMlnMc5FdHUp24XDl/M9xXF7zSMr+291E7J0mTkmAujf9TA9otJN9HhM5VKBzXx3N\nWieJgr7vdl2tvm9xqAmUT1gsr8TFxylC4gttO6ectgUJ/uNPGH38KH8P2KPr4e8m\nwT3MAus0BT5dhOrc3feTLaXXEAue+HCfSuIHjBW3DBxOuxnVrvW4txFhqI5GpWyn\ndnWWFl3ebDB0j7X/3BH7mFrwb6VOn8r71NMy1l9r63jpSgoooD5+c7eYkmbi6eGp\nXsP/TAIP4upBM1yH7nr2CkjIzDzJKOS3i8LYEGQEMYaz/iLnnhfNpKPPbmxPEpvL\nXq3GOOglAmSqGvX8xdKglb1q+Oxi9a51Rn4u/lyNHFSF3toV1QYo8BgTgQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCE\nwfj1dra/dk5xupuja7iCwKIN6e5McvVs07H0y26EtPeoAU/0gFUd7uemVEfRgf2F\nJBi+JLpwUxLd7N2izabbPtUmkkOUN/mFH8FjzJ3xR+v68fThV7zkTWY6lPjA4Eeh\nB6qfTI1njHwbKndUSzHEehMZbsWCBKNe0NtSTdgjhmq0xixdX5UZ4op59T2a30BA\n9u7W5RIX3yLG3CoZaV7O4lkzv4CTK6j6iCoeHTwUAgaKg66qTQm24JTh/Tb4QDEJ\ncCeZ78hgFbjBZk1I9y42zmaEO49ImEEnKkuzpbbKsga6ejO1Mo2SvwmAzHO7KENv\ngK/OtWHacuIHOBuW2H2bo2cbFJt6AgHnvd6LEENDCMyneZ2WAogIsxCQZejC6SK5\nAY03uhHk2CsSEGSrwzeR9pQAMcrq4/QR60dUaoK6/oz3ZQ0pwyeF0ZBwWBKNUNYz\nXnnGOILumaC7VzfZNob2H1/GHslGy/IdjwqAkUW811BqUoLrMs8MKqUfMVAWj2FU\n8PEY8nd4eGxShh7MBMZYUdn+EHvZbJ7vva6027jc1cnvbt9O93xENIUFWOJEwcO6\nu1dr2XZxoghgogFjdKSjYL469fjgtaE3UthMy+49AOE13CGxn19A6yA7XfIurqxl\nt4toMEeyvjKVrMheoqNToLC1F28Le7fp2HHCAt0Vrw==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"clvv9REWUSIy5O0x7N9ipWP+XMNrs/934xwj27puCNQC","Address":"62.251.104.103:11170","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"ShyYLZ/JsZBHtrFmR/o7QbZp5rtwj4aQNfqeD9voP+EC","Address":"88.223.109.127:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUNpepthggo0d18flI3vbKy8mHHkowDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwNDA5NDRaFw0yMzExMTYwNDA5NDRaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQCzo6Hk8i6klOHTqgkiR4cVSnL4qpPSgF/qKVNRLwn9e99WqX9O\nx6TAJwtt4EZ2SVYJHkhhHxp/VlFlQD1/9RoKSH+LQVbOCT1FsBUoNHucphdpYP1O\nPUPDAxQqDWuBsYVSYNmFijluoTaPrNYj73KCoVPLWWyNX0ww3L2llUO3Wd3LTu6a\nq0+dHK5/EEviSS7Y9gEVfKTP9SjA0Jky66P5pDyh7cjraiq0CE/vtJIeI+nNxvuO\n47yfrPf+1Kp24oVG6nBuG7lqM71VYRrN5ma/VSwUJXzi33u7HAHnRfE8MwWs9Gwc\n5hvCiECmAsqXHAUqGlF3Xiz10X5k95JJTLTabD96r/oSZ1yIIVNTps7InR6bQFvM\njDexBZvZM+EUA2fOqQAEY6A0GeQccUVUL/0Knkgj8wIHJv20Eonl3DZ9r27YLja2\n0bd21D5+XRvCSOLpB/9j9+1rMQXo9vXuctN37unkPAui4UU2P/t7BgiFrWe+F+ym\n1yCYL5+ld4bhzpy5YC8fLsjsJcTIhI4LLCIJMTyMaplnhMMozRhPlcYplt0ZCbH/\n6DaXt3YyycgitlYDnR8sXdn+bXP5G8zaxpMIZqK+Ap80UgoJdTKj6gb/NAXpruVV\nwSC0Om7o6xFfyUoYJBCfcoiGVeFRLQ+jtmFUPq40xFDkeFG235pSiC+nvwIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCQ\nXmbugZOZ/51Ze1uJthTR6qcznzwI5Ydf8yh8sOWgNuwxFn7fJ5VssC6nE8qAX0x6\nnCISRSmi03i4kDhNupIuBaSJp8gRd1FpWg1AcFAFQA6VYcI8fDLg2R4aOEO14SOS\n1Wx1/2ZuHLs6pFbKIeZH9k+at26OWW7w7EN9n0CyyUuM88KxadH77rdttD9G+BvZ\nywMOj1PTfN2pjZutSSDXxMiUP3LcjmNZVDL0dqvZ6I4bGgQD7cowMU6u28/Fqrfv\n2rgN+FhFsfh9yLs7TvqGoEg62EqCT51jcHRDH3FF7z0OhnQi8ZcQQHWhMdrHrzXM\n0WWouzJJ8pXlbsrL09gRqgX1mQj+h3ZRA+/CBLsO6quy1hS0kz3J13x+6UKS7Hhz\n3WXPZjm65PYqP5oucJ1xpQSSKXatnUbEjdd48yErHQDOtmR1nkfEc9j569HtaHNj\nmNGBaBHsGDLsokhGYmbCSghlV4twTI0cTzvggaShn1BeNHGl3ED6THsYCjpaCyqX\nqqv2Vi/v1bFvMQqtL3Jr3Tj6csZKAxeeynXsbmfNnF++oPVysP1vHBHWJYFiFNb9\nCftk+yiQpz2VgleoQ/WF74kyXHXJ/hrlNLvidevjMjXZaDaG4eeUKCN6wAn4FfK3\nwPwBckKyjthiWwWKqFYEpCQX0EK6S4W9YjRBG2XXbg==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"p3gxx3NhA31meRws/FFO/Gqt+q8tv8RWCMChw3wqjCMC","Address":"217.171.230.78:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFyTCCA7GgAwIBAgIUEGgfokE1MBG2WnJovmvNtcbY9SswDQYJKoZIhvcNAQEL\nBQAwgZAxCzAJBgNVBAYTAk5MMRIwEAYDVQQIDAlGbGV2b2xhbmQxDzANBgNVBAcM\nBkFsbWVyZTESMBAGA1UECgwJeHhuZXR3b3JrMRIwEAYDVQQLDAl0ZXN0Tm9kZXMx\nEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5l\ndHdvcmswHhcNMjExMTE2MTMwNTI4WhcNMjMxMTE2MTMwNTI4WjCBkDELMAkGA1UE\nBhMCTkwxEjAQBgNVBAgMCUZsZXZvbGFuZDEPMA0GA1UEBwwGQWxtZXJlMRIwEAYD\nVQQKDAl4eG5ldHdvcmsxEjAQBgNVBAsMCXRlc3ROb2RlczETMBEGA1UEAwwKeHgu\nbmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJ\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPEsAKrxBEh0jCGeJ/KjqWuK6ca9+tsL\nO3VxJ0Qip2CHlUA9Gm2WlIs/594tT9JAMuratYy+TrTPX+xwyJ8c9MKMhfBa2Q1f\nHhJH0xIDf0dJT5GMwNtTmBfahpJVFJQ2g224+PRgCa55nX8tqAG2eWK0LbSChmgj\nrWUKExLPcxW2nTx/wdzvCD3ZPujohI5fnRGk88LOGpAmGGdV6xrKj2NGkkz1Zy0D\ne+l2TJFrt/4wymWzTH5zYGWtGeQxB77QLpteq8j+4F+H89anXVV4MTI1C7LY+Xfj\nzHY7VlCBpUHL+YL/MRAGyht20xjRh4kEftLrly/xTo8zloGivsMp2Twx2GBJXxWM\nsLHThEVcTM69k3HqeORzsG9RzHaxj4DobTZbC5ztUgFRA/yasHzNbGhwmXCvJlDR\nLljToT25VqlTPIxtLyv3h8sboxNv94qwBKzW4kwaiIs8AXcU57WFgN3BsBN8LdLt\nfHmrwfI2GpKKLcI+2+hBQSj49cNznzMb4osjEMT6oLUHxPXJRFCZ7DYqhACB9dVl\np81VmsXNoZKFabN3v2k4dqTtqfmMftAnEMOrRFhI0EG9H8o2VNC8s5q/gTTs4T9P\nZRjyS15JxOdf8jccvbatorZfA730JUEq8RHS22dEti/jREeoUwqk6/GeLlL5z89t\nprHaPJZGagS7AgMBAAGjGTAXMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZI\nhvcNAQELBQADggIBAHRcJSNRB/8P7b0OKPqCaRswXN7hBHntdAGS090ZHb3x91cc\nn01tqJ5Cq5R0rQzj6FJPmWkAv0aTT0DTSHjVu2yP9jGm4gvhkRDbIpeyOTRdB4Qq\n7CZayf/xkUdciz2QxyFTi0LySilNCyB0NsM2BlAmm90BxJDstodj/IwB45od3OAP\nfS9VSB+eo7MFn7mPEUzIP6UghqPpBddv24v5Hbu+Z72tz0nZPrbYkESrzgIX0PsI\n0TrXQJE3uwJ3FgB1DvmF6M/6/r8jtxpgOYj9rHztrFaG6aDH/DUnAOmF3NEp8UnS\nwtX1ePMYHez27scF9XzpiIL8Af+fH3w/scDn9IMNw6h8sizDpqS+IiZ26eXeoD5N\nbmUB0RqDLdPPWLcvR7s1mmMnvpjnEZCj60LPCKnDK9MODW4LcvOnfwUJ/QhBQcDE\nwJm+7fFxnD9yECA4ldoJsSgXqVlSW7T27eAJN9PBtnehqPuBB4aa7oLZi/tFKiLK\nNr/pLnzh6pxVb1u4hIJWbRJJozVj9Xx8xUSQ+HlbJ1WM3yzeo3qM/tyKLjMFgGWD\naeNvkfUvegHRPMbQO+Yq5ymr2E2IqHVweQa/uFKYrRiQiSXLMETlRRwu9PsPBeWn\nK0jRwYh5mU8eOGrRMxIQsGnasAUzsvUPN0TteYpQ/1dV4IjPB85Wns7cBVYU\n-----END CERTIFICATE-----\n","Status":0},{"Id":"xX/KPE4W4riDVdPJi5LFnwTrVS/5jpWuhUcv8SMeM6UC","Address":"91.211.104.210:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUS8Jj/2IYa2tIJSG//Sxu8gibDpwwDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQwwCgYDVQQLDAN4MGQxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MDE1NjUwWhcNMjMxMTE2MDE1NjUwWjCBhzELMAkGA1UEBhMCS1kxCjAI\nBgNVBAgMASAxFDASBgNVBAcMC0dlb3JnZSBUb3duMRIwEAYDVQQKDAl4eG5ldHdv\ncmsxDDAKBgNVBAsMA3gwZDETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBAKz5ZIlaY7EblgNz2TfpLpemeQ2ZXIi54zAj6+NBJy0bF0cKcpIHXtxP\nsj+akYGF/cBA2wWpXonU+Kqe3YifN+QZ/uLxSuEsBLengDDN+sOI+pno8Ae4cy/V\njhJtaX8eCTZevBT7hcEb9Wr2s7H3kEsd2qro3S0g/+Jc1j5QPB6xqzw1srrGLFxj\nZs6NBOVHt9NeswfTGre+AnHxZ9Gc5ewDQ/g+HoexDUNo7Bz8UohIfx044b1nJDxq\nSe8gMvMpd3+mBqzd5kQ3/eTGSpIXE4bvcsOR8N+CFTDVTLkJLPDqMruh18O2yfW8\njKrrmM8N6mEUd9gAA3bMo/trz4oQrFm6pam3w8i0Ee9cRJENGVynTrPwLlWKwerN\neGgvAeWtVP9S9Kl9PGfhTuD0yQKGkXPtP++OJu4Hb9GnJHCP7pJJZ9Cz/vuOZTck\n8buUDV/V0p0bRLrV7eopXm6Zb1OaFtPTXu467ho0t4ChVCGU5ocDlZseOvR1lmwK\nSd2t1Nv9PnU6i7c1PeRckH5bGTHlzp5b3YrfCbh04+319qpxRe8tTpi3pAQC97lP\n/3NWi6w3/XPLB5BAyFfi8hhpaHOQZLwaxTdlxbtoOPQLgJLXqPoMK7vo3tkhHoKu\n+WG3b0HxJjchie8o572WZiilKLhzzN86ztgv16OWdh5N0UCrWzdVAgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAAqLE/g5\nqBjNKDZusiSKnaLwzie91LdQeaJCk5ZYRYhCZO3fvmeDco/nlYKN1ZNf5WE0vWcl\nk9XK2k763hNf4EnSKgy0rzlMoIvFdVnqn5eHfJDmFV+ofQEPUfkJe4T+zywc00Oz\n+2rDFzf8auvZTlyEkZsh59G8I1ii2Gyk8plarEoSO/5KfuhoaFoYYjzvPT1J6d6P\nlz9lHu+IzXizihzMSocpm1ZMC0VdZEsrZzpJY0njTO7bz9PaILp+09E9Z/tPmUUh\nb3L+8hPXA7a9uXrY5jzpsCBm4o4xzq+cQUsysTGZEKi0j2yfvRKAz3G0KtxMnVV9\nl4v8fgc1JMsxvj+yYZODTVOaUof4eprH6nq6w3iMfalEYr19YHkHpUNVlpq8zKtB\nlCGixdWFkHuQcjRemhRyosPQhdVUezVxtwMCRnZiN5Nw6/4LR+K+8klcdSZ7gmFx\nSgwD9WDRz3UL0NdL5zmjWp7mOnUKYfuEfXYZnDA6hj7Uxm3UskY+FYl4lj5tIo4p\ncc6laJv0USjF2K5bHpsQFe4ufyR1ZIQfwZVHb6KRg5MexhPP93GI4YTFt2T0P/xY\nEQTGCoXeVBqH9RiX0f3OvUKEQlHbxPjSJjkZqao5RUnQnJqvMco6GL30uhFZQaEn\nzx4LyQMV3sYrQvoiqxPoLljVmMZwDSD9voqH\n-----END CERTIFICATE-----\n","Status":0},{"Id":"s7fX6tfzPtzUBIxloUAmKaxIX5ZG8qmrDg5E/2y8J9UC","Address":"95.165.9.86:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFsTCCA5mgAwIBAgIUVPK7XWAriR8AOMZwEpytaLK6oLowDQYJKoZIhvcNAQEL\nBQAwgYQxCzAJBgNVBAYTAlJVMQowCAYDVQQIDAEgMQ8wDQYDVQQHDAZNb3Njb3cx\nEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjEx\nMTE2MDI1NjE4WhcNMjMxMTE2MDI1NjE4WjCBhDELMAkGA1UEBhMCUlUxCjAIBgNV\nBAgMASAxDzANBgNVBAcMBk1vc2NvdzESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYD\nVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQ\nYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nAMpaezxmbsVc1iZxttfVMRYMUsOhSgXv+lJIEyaqMi5cD9LzO+lCW/M/wtek17P2\nds5UzBq3cyPHcx8D5rznS2eVcLXgpU5E6Mc65GV+PyLCNrWBE9RF/Oz6oWUCRIJP\nRgkrChvNQgTTsgbs6L1bK6b71MHaEs/tmft6B70g+383vATdcTpU7Xi9g5dx7doq\nAftERlAmZyddNYOy155Fv0YIXVTEv/BVcRzJjuuXt8Tx4R8mz2S95v//Eryic1Nt\noTZ2Wbp/KFPsoTEbhiQB80WFwmYWpHPql5eeo/9zgI5jR+hHdEU6teRZq45ZrHHV\nS/gMgBm3wMDEA4bK4SfVobslVEQBsmJyelyQSrACXF1zUvbtShM/MyRpErRq2IU6\nBCBtTlcmyTJabh/Z6MZBL+2tLMwk5gepg+xBFz5koI2LL+dDERKhdJRpS787YLgN\nT2RT0QbcNLfZ+2EYp+2V7X8DdWPvH8jBd/tvRAVasY2OEvVYWmevn7hTMx5ToGqV\nUagygG1ar3tQprj4IrWJw4xH4lEfv4YSCaFkd5EE3iX2snz4aDlTRdRS0GjuJcRE\nIj+s5TyprpZM7/GzkK+KqGYUkkf7d/PkMTc445opow+iDXPA+YkO7aCiwOPfWjh4\nOPRvf4GDn7tdRdrhbihRmsoE+9chxLM3BuXIBGZH/aHRAgMBAAGjGTAXMBUGA1Ud\nEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAFxKSy6cMj2/7SH0\nsNKLwhveQ4QVuQWJt2DOE3an7t1uk/e6JaVShU8iXEmfe/NNTyqqhgrklA9wI9Wy\ndjdGhs9H7WcXscPTLNTICWc2vyYPGGe3Th5dQ7o0mL1mOjMYsFZQXVHY3/fjy08T\n6JBG1+NhPrDSDXP94AbJhuD2r1iRhRHpk9Kpb+C6wE7wcGNMQXBkygkO19EpwTgT\nxhterU7MOlPYWLBrT8/93RgZcTjXAbk2Pqb99JW2d9FhkikAOxtXJNRMLtMtpkYF\nfM24/odwIq6gLPAwzw4j+aL1O/riWnaz/wZ68rS9/VCTTiyUYiZga5VDgITAPuvD\nKMHQAoKOB347kXrczqKJaurCEkr8oJwfDv8QjVaXrvgHr2abcF9uu5eFnHIinn4K\nqLxsusf0qFoYZEb9qZErIvPtheTb83GTkRBEymlGXFkzm2Ab60wpwlrxY4IenzZT\nylpISLiIEBUu0Ge2Mn5e12djQ4hYcUDhvHQFjCeXzcvFptmmqFvDSBWIwlqXyGxe\nIiSu0IH/1rI4pxjtWX8TY8zvF6Dy/xSSDCCRoCIY9Y9bznxXaU+2qOD3h5LJc9YQ\nkECE14URtkjlRv/2uqNSR1Eq/WtdJ2fqadplcpf5Bz1DQfk/N/DYKaZMOjwb5tiy\nK5v4iLL8S6frHSSCYxNKQMaq077g\n-----END CERTIFICATE-----\n","Status":0},{"Id":"E0yJ0MEev4Qa/0fMk+3CiTOjfJTvw/XAPchxNL2GcfYC","Address":"178.16.39.203:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"M0VJIFfUjgZooWHx5znmdq4V0vICZ37t07wkIF5+GosC","Address":"109.98.108.250:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"Sl1Opwv2RcQ4oiqeLsC+CaOgP0ZTGv758Rp3VmSvNhcC","Address":"34.64.205.50:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"qAMQhyRP5dKU6pzza+2mkrqmXn6YOSR95FO2ghGQ1P0C","Address":"95.165.154.226:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"CCwGLF7sijVOAVTFAFJwf3p/vESvmV/UexDzvkDmxNoC","Address":"88.119.195.16:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"e+hUNYejnU/isNCcOS0p97PH0VfcTqfisFdCPFkdKv8C","Address":"93.107.154.131:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIF7DCCA9SgAwIBAgIUZckq/Yi1TEuA8HpdpUb2GGTmW9IwDQYJKoZIhvcNAQEL\nBQAwgZ0xCzAJBgNVBAYTAklFMQowCAYDVQQIDAEgMQ8wDQYDVQQHDAZEdWJsaW4x\nGTAXBgNVBAoMEHNwZWN0cnVtX3N0YWtpbmcxDjAMBgNVBAsMBW5vZGVzMRwwGgYD\nVQQDDBNzcGVjdHJ1bXN0YWtpbmcubmV0MSgwJgYJKoZIhvcNAQkBFhlhZG1pbkBz\ncGVjdHJ1bXN0YWtpbmcubmV0MB4XDTIxMTExNjAwMDMwOFoXDTIzMTExNjAwMDMw\nOFowgZ0xCzAJBgNVBAYTAklFMQowCAYDVQQIDAEgMQ8wDQYDVQQHDAZEdWJsaW4x\nGTAXBgNVBAoMEHNwZWN0cnVtX3N0YWtpbmcxDjAMBgNVBAsMBW5vZGVzMRwwGgYD\nVQQDDBNzcGVjdHJ1bXN0YWtpbmcubmV0MSgwJgYJKoZIhvcNAQkBFhlhZG1pbkBz\ncGVjdHJ1bXN0YWtpbmcubmV0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEA7DX90AJSCefcq5ASAK4QOri1wrv4EEMiegRwlG+tcsVsGfpfHtssiby4f90t\nLsC8ryyiWT1QRyQk/1366Cg5Qff5vt+npzLItWrUQOLGqmivkoWLu8E2Z4QyXuNa\nDhhcGjulIKCu0th4SCTqJs3r3aXbCYgHE3SR9i/dJ408m30RekgRRtYATcHV51U1\nUeoHoji4JDbt/hxI0XcJelvv5nO8keOGkQ3aPUiJrRnMwuWnvfZu2YT1Hv5RByJo\nL0pOJ80qxkQvzkn5u0PtFc5tVhJHv5g2kajxj/i4dpSFrk0CA3mH2oGq3g7BJvb6\nxOw21MDFHxsngOzQfMwlG0ayRnG91pkqzsif58oypdOShvyRCjR0bRCtNnSzTZVh\ni7xtWmXAu61HSeFeMZZDA6i7IhhsGlXrSKKrOSUtuOGcKGnSdZU4gbvGkTyouwwN\nD049/DOAnERAy8rG/zYsfwuvZzmSgvm6dcuP4+w/Yt+tja7PuzWAUijSYzYkMdNz\nKmYEneF0j9AmA0FSyv8wllTsOPyQTFeDUBB2IYPlOufX7T0IjqXGf2diiSfOeFii\nd91pPGTYHiWkzt75UYzXorGsGRAx4iu72d5DdcfA7bgcp5NUvzA2fdstwmNWPRHL\nSQoDJRM3diDchtirAhdTV9I2q4dKiJ/NKqNXhc11eydVM1cCAwEAAaMiMCAwHgYD\nVR0RBBcwFYITc3BlY3RydW1zdGFraW5nLm5ldDANBgkqhkiG9w0BAQsFAAOCAgEA\nXGPYSLGLBRCIGGtpRDqB7sPa8jOBwCLF5UQHMkzexs08+Iw5O2KkuLOgXNdzKdyt\ntbxCNVUAxd059138BDM2LZfAolDsVVlIW6U45xMlXwXqVK0eTsQpL99FG7uB9zHN\nUKAoDR8R8nZ3uHLhA2pSmr7/b3eoztT+P4JwahmCoCizTx2BY1XOw8rqRk2BLTJb\nRSTRrv3PtoNPaaJpzuQj2QTXPCcC13OcDvYNHhsPiYW1l7ybv8LOdETAU9rL94ad\nW/i4iPkP9VVKjQUJQFWjbiS8CQf8kEq76YCh8DdyMEu4AI6jE1pN9OhO4o2lIWGf\nd714VuqsUuPpIDQttnSNuhK3AW7afw6zEPMRFlo6276/zmzKgYOUFS8F8ZAFRxrb\nNC+cdlWSoF5nHc9b6EAF1kBh0sgXGb6eb/Xab2AsXU/+PVwD482g02MZx4Co8IeV\nt2PKwymICaTxC/lqLh6O87IFB1W9JohpJPZE2gsTK09mNKzra6FoTMuB7O+a4bdC\nUKDpZ6wTAkDw2kFoar2qP3EniqHNO7CscdBIcF/sx2XPO9qpGFeMEE21Bxn7zUBj\nh4xeZxV4sRK14W3JiTz+aOf4jij1/KgItaS10rAoy+VTClqE0TWcxCWNnfCGkpbA\nGXmQBsSfqbYyG+U0WYxvLoe20R2wP1J3Pn5sV4hBXog=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"nBB08cV8T5O2VSL06mj8KDooje4RFL2SRrh46MVDiuYC","Address":"176.61.65.67:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"Od9TLAVziyLaN56ozcMwY8nMwwWXGmB3yTHCBsfItUwC","Address":"gadirnode.ddns.net:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"BegvB65xxvJXk+MCDSwKmhkyTpY/Nea1lIPasg/jBMoC","Address":"5.8.39.25:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"XAp9kEuho4xT5oCUfJenTqq4u4N/c55UToshIvvaQygC","Address":"31.202.123.219:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFxzCCA6+gAwIBAgIURDf030QkiDuxEwyeMwksZXDqpOswDQYJKoZIhvcNAQEL\nBQAwgYwxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJLSDEQMA4GA1UEBwwHS2hhcmtp\ndjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczEZMBcGA1UEAwwQ\nU3Rha2VTZXJ2aWNlLmNvbTEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29y\nazAeFw0yMTExMTYwMzU3NDBaFw0yMzExMTYwMzU3NDBaMIGMMQswCQYDVQQGEwJV\nQTELMAkGA1UECAwCS0gxEDAOBgNVBAcMB0toYXJraXYxEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxGTAXBgNVBAMMEFN0YWtlU2VydmljZS5jb20x\nHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEB\nAQUAA4ICDwAwggIKAoICAQC5O1aBAhxCfP5/c+Vj3r09iTma7mxRYRYhSVvLEAKq\nT6VUAcXSKl9LyyCn4RWpuWib6zM2bMCdVXZ+Sq0ZhMeKPpgDRNahqQGTsuUFwr2n\ne0InPE7f4K2/3fO1e5eDh6lqLa5jCNrhElNph8xurZB//Z9MIBn5OZVILgQNwg7L\nIYix2C1OeOeNu3EtvTc+NH9M4jVKYILW4TDF8yOIjF3wljNk5l0kJaP8MK370V0j\nEtb7ixQCGetInuMLhvaKYgiYcVeuNUNXywSXILugq8qSTLt2KiMmjacCP2P/1J0Z\nSB8aU5l/+cRE/ckb1FzDblRMfnO+1ZAcK/3/ghDzAFWQIII+k8UiC/JBatKRmDBS\nC5hZYl6qWoxsbU8VbSNwDBEA39ZCt6mQj32TbVTQ0o3LA9CZB7vaTTyiqiPmhLnT\nCcDEcJaAQY03kAMFlhO6PqmStbOXxVHtYOus5Y0U8uHbFt1eT+a4/IN3h9YdTjDL\nAaAiErSZfSjde08MBSYlRQ1I1vgUNXQWza+JygkFU1a0RTS9iZeDj4mrlxNf8Kor\nMeXXQ+xPVmYBB3i/iAweXcJS9mcMGA43v0+bYBvT0SiyjtxFH7wUpFQ3rZeY1x75\nTomW0BH8xMHV1rDxDQaheqcP7coVJpHz1MG1bt/aQie/SJAz+t3kSPhDSi/m7kM1\njwIDAQABox8wHTAbBgNVHREEFDASghBTdGFrZVNlcnZpY2UuY29tMA0GCSqGSIb3\nDQEBCwUAA4ICAQC22NmuHHq3J88p8TWdgJbzStPv44v+I+wgGy5ZFN6pM6MUCjJF\ne/97wHhMnhArSwNaI6OM/1bBHJ7MXpjXqEuAaXVGm8EHtHToJ17zfW6NRX1smxGC\nxVLxXQqfZcbHlMDj7z+olYtTlgLI+EIBVK8sQTNW2c/Dta1SVg11AwV7Fxkdvh6x\nwnRupgAce6c05lVZQT1N/Hme0Yco1UFEube4gOzj/x5lUIEvZOveABklEaGPOdEI\n3O2J2o0tMvykLRFIAPK4vJB1cd9dfYW7w6cho8PJClkK3ZWBORTLyjSxXtJTt4rY\nUD1BI3Le8YnuaIYGthLQ3T7NDLSHaBCMVlEKv05bToKutBeCvBlsGAoqYs4z5VYL\nkzMQQAk5n2L4i3p/0CYsE8jLxQVL7u7a0jwzzUENwZq0WRs+GDHv2GauLDKVeDXC\nVSZQasdVVu+A6WE3Ah1TSIjal5zRn64SmhHe5uyv7gsaibNRRpHUCMqB+8eenzsL\njGyzT2nTp/glCskghkRzAN30rT5l4TcDau1YDn2LjgdZ6IQ7v3wYg9/WPOfMjRla\nLnXQqFUZ/mtxO6ZZFXFyZcVaRjvCeMibM1DFIDQFsCZhE6J2zeYc1cnz5/UKovXa\nC67Ewgish5WaW3UahvH0cGLkpfJ8+4YZf77P2Me4bW3wSdJFgzgDh3jt7g==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"zB+sEmXNq6kp4gf4BpDVfVIOgtae3M/oJbcqdhPhXDAC","Address":"80.31.235.162:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"OixI8HuzHnrU5G2PZP0Jc/ABySSD7pPmnIMMtQ6QGUIC","Address":"94.253.14.12:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"eDMjCf1Xtt6Y/OZfB6Luph/HCxdpGEPPQnAU1Ss/mJUC","Address":"benleiva.hopto.org:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFrjCCA5agAwIBAgITPhPnr1VcEoC0r8Y0jgzwqS/u8TANBgkqhkiG9w0BAQsF\nADCBgzELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMQ0wCwYDVQQHDARTVEdPMRIw\nEAYDVQQKDAl4eG5ldHdvcmsxDjAMBgNVBAsMBW5vZGVzMRMwEQYDVQQDDAp4eC5u\nZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5uZXR3b3JrMB4XDTIxMTEx\nNjAyNTYxMVoXDTIzMTExNjAyNTYxMVowgYMxCzAJBgNVBAYTAkNMMQswCQYDVQQI\nDAJSTTENMAsGA1UEBwwEU1RHTzESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQL\nDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRt\naW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMIV\nsWqo+RmiEEGGrMvstwC86iU7LWvd3Eyd05nMJi99fbG1SYdkX/ku9DAcd3HXiM9v\np7owuR2iqpd91voK5zpAsCXJxzF1MezjJls/liICtitpyVd+ubq/CQYtDbNWoe9s\nXSlxwr/gJy+LfRmXkunSOzd3nY2DXmOUWUkQ2Wfieezsku7KwiGXd1Quzsc1x2H1\nsLKy8p2ObRl4JCUvnVNwc77VCsR5TqZa14MhG5e/Pku9qCkP326K5JD7f1v7hj1E\nRfKwL+0AsfVXxYMWpQ1E5z047z9bma+d0bXJEldu7z2JKdnE4pjJIiwJLs7Z86Wq\njh645T12bq1w4ss8RVSurkc0paZMa9hWMrT9UdJFsVsvXJU2K5C8SfYS5xVfQxtX\nOzIT97a1QVz5gzKjJlG/cwlCR/rnEyRqJdb7Kqduyim68YUDGmRJNLzAKaSXSGqV\n6rCkYCIFQZ8pPBlVfN19cF4MNzKu/KE0mrVe8T13t9vKkq/C5Ls7ib+i1cippQMQ\naxtQvWH1vATL7o5n0VTk89vJlis6dM/XBKTiyqzgMPqz7Coktah7ydh4CYk1YLiB\nm4zM3gGhlRe5010I0h13yV7E5rHoLxOzNya4kPalOJiakNmzSCEi5abJY3c7wb/f\nKdxm8xDuqRkdnxYBCww/DFQkOfNG0Cal1K19qeMpAgMBAAGjGTAXMBUGA1UdEQQO\nMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAD4odmLgMFm3O+VMIGN5\nwr/M1LM/EGyrdhyrigfsrFVjwGznaB5NZtP4h+03M2PrMC7t4vQS29mfybSSnVsj\nRSaTDVj2JvGINROLl4vFhZf80QjvLeOV9fO/dur7uJnnYXr64d2BXYkCpZD6xthC\nOIDDXU4b6WdxlWTau8AC3nkfxDlm1UaqHghyUa3vZsF56bkcjvWR5Ctjjcm9rATe\nE+zWrXjSdRMxgZJPMMOIswqXDM5r7QxdZrrZuNhgxo3d4akB9ELQHTRAKTNyqe0h\ngx/GZ6hY4z20RixD8tNpGcQyjSRVIpyC3j2SqmKNXCGiZr6K1ucEnTE3JAdF/4Ph\nI/8yLGUAkHXMzugzDmEzuqMTCQIorYFsb78ovqJHLkXPQq4f9h2feF5p+P+BO0/9\n17h386T3vtFCbWqBcLF81XxOJ2W2/5tWBP3Xla/pdjwIrf8wAklANwoYoH+oDnG3\nLUTqpxnZtwdH+7HJ1tqo4r/abaV04Jh3MmiG0IdfMjF6ybhMGsGN4O8RtXs6E8c7\nwJuHj2DdAeJlfBczv03/BNuEGe1GXvz2dKf9pcyXtQc8wdyRhdTuFv2zzZD/SSaU\n7ZTULPH7rhGrxSae8+cz0bpY+MT+PWfg7b6ksOCdj7fvXkAopF+Iq350RSjDx3p0\npA5nouVPz9VuFlj2SL0jY8Bh\n-----END CERTIFICATE-----\n","Status":0},{"Id":"/Zp5+pd4cWilGbMNd+72QORqtcmm/YiMZLya9oGx9ocC","Address":"82.215.85.209:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUT6z2jGnhP14d0X2pBESNB8i9FYgwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwODE5MjhaFw0yMzExMTYwODE5MjhaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDHiWZkFq/EGWIf9u8SnIllQofVVL4pTrGCHrx9gJPScyNW+meT\nE6J8fjwBVEB/kjvJwfsFEWtNWeGYbhB2XJswS/SgEhjDLB+3X8hTlYQezaBQyeuC\nMEZLIdAgchdW/tyackZ5cmRPGy/9QijKIVgSyFU8BXz4M/nlLY/tol/6fd51XdHD\nk+LZY0UooFRVMJLGJBM2X3oOPLgUKvuvzSFdIjVLC6CjTHIlTl8ltVQAxCiuVFE8\np/XMVavyRco7GWxeSefZtVNrhllo1nRCR/x34JuuKwRYoz5pTLI6v88AsgxzqwA/\nJqNfWYuF4TGHlycJM8xPgKPXBFXzxowvN70U8CEX9GygP6oTZaGYaCAb27/Zfai1\nCU/pG9J/U91ALyko3CbB9CPQM/CMUMwlvN11flEjyV45LKIs0Dh4KKqpa68E/w5m\nYXm562OfMjR0obupQ2H5NyC7vcd2r1K5mW+AI0fM/svkmUhslfNP0YagDQZZMFGy\nk00zlAjO6I/S2rJ+acg3n5vu1cHZEKGqX2VVaik+JhqMlB+FB6u3nG9H0Q2I9BJ5\nwPRo9F4RlDMlaiRgVjh2Vs1LAveihHLPaZ41HCjJ5m8iQAc+2yPlnmzsyhS70e2g\n1qJLoNeQxACX2jo831QhviWm0OwP30xZBkhl/fBfKm8iuG1u7ODla/3vpQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCH\nvjZgQuAb/Q4axlzz/Z1FJf0m6bbpn63/RB+n/eR2BstYOlTs257XP1JCNSOqEIrJ\nc++JRbw61m/ptAC1WlzVgkaao/vYqyxEcsm6PLTBbA3NEfmIgGkESiElmKWr9EzD\nRTb1Nf6LKn44JnqbPRwyetDfCjwOj/UYSGrml4s1zrL5FLBbqufBhYmqjqvTl2EP\nsV9cpnCNGqERF4k5jGXOa3JkMcysZoxCoCarZDeOFCpr3xgVNYhahqnnqgyLXILi\nDg2iXWDH2P9Br8/do1K47eBNp+BXP7CbM1eaQ3oBAyp3rwJcpvlaN7tENRt/1W5d\nqXyhcDIsh2sJrrEzImOUcmjB6FpDpYuPKDhn9Dw6Eef7WfdqXpg/1/sz4d451XgH\nbcsiESn5IBZwy5f8rebjGILSQct0dy2zkCZk8qAVixcKPI/WkB3AIm9agKcUkCGX\nR2RdCOUPXYc1zUkANtvivGh2hPq43llScpxt5NKYZ2TFjg6xszouYivAaiKOhkWi\n+y7uIjwv7E3RPCPcobxVLEcz3V/AZjEarFDyW6pr8ZiXyQamUwZ8EhOdBVIe6KBE\n5GncFtHfVExu15/kou6rZe1Oh87kM+GKoPbv6lyD2FY6She/cpDdrS6FSDxJridO\nduTBYqL42aPO2B1OrpUaKcFV/6fY9OJF+TIiUxDXhw==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"+++IurRHgqUbOP/Be2P3JU6nMZzj6C0RIe7g+rvzbLYC","Address":"46.188.59.42:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"1cPQMKNhO1JxRHPw2jyjKSR578GgEl9rPwANSWViTP4C","Address":"213.10.138.128:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUew7sfEO7VtpeBH5xZI+LEYXSGLkwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwNzA4MDlaFw0yMzExMTYwNzA4MDlaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDfT0j6QI8M5nnetXmKYgPRvjvbC4j8IAgOIWlGSvTWFv1fLVuO\njJR1xMyM9p+VmMHwti2NdkDb4CN7W6TjPVxX+uaLlfg3o0BcJNxUpTw7tWmGloio\n6M2TfMdexiWrxqZF9DrYncb4/YX96nfPQcBlBXhaiTadXQTWzmTPVlXGLLAhStzu\nNLtOKlSrXuZbOVSGjUU0ho/IrU5KsjQ4bgQRs/pGGCvHhgt0FHRtLGaA1b+m27N1\nhHStcORM410wIo8u+hX/0xebiyGfTReUvMUf3eAyS4qLrrzyXAFYZsJOPbCzFqmj\nSunCIaAwMUArCHhHTSzbGYiC+/2rJa1nAtc630RHaqnrZuY62PIlgrikVsUkb8Ys\nrFtHpP/JW4U6gnIiNdbVWUqfhTSg6YlLqn+0yfLhZ5NOnyuco8WYk+Xmzl77fe5x\n+zNpGjuF8bfCIBQHE2ueXPbkP2/5d/Z5x1kFHgjkNgeOzsmIdXW52o4XRdUenL4O\nPBcE0CKQNG3ai4WdHBXcOSre0WCJYSEbCae9pwflXgjvURCmQ6fWvoEQaaNCLXkK\nW0M6d910U+Q/Lx4bL5XqsKJCiwz3iv7Hpu0DQ5LV+c9q30JuuF15MOsbnSjmh5Wn\nL3JqCsGQjVPCmF2rjP3YhI2cDAXiM1/yMVbRvT5GFBOomQpOeAU9SiuJUQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQBY\nnvt29IIBUd8ultuf3gnoAgo5c8rzOyso1SeXd700XqHZo60nl1vjRgxsV0h01kBA\n8EDZ9GrvRvR5ovo6FipoC0/v7V8+/fvcB7wd9eDkIqMDH8hJGCNvPSA+9zOsQpgS\niB34/SfT/M69xTMfRQf7fnyL3N//TgXCwuP+VaSLiDa07PP7OBJHLylPbAsXt2ZV\ncIFiMvHRiEuFt0AbJO0PuZ4FbdijJQDzFqDvSpc0kfy7iqyqo5bESem3X3MnuOtK\n6hspfZ2YsAW3D2wIA67wXrdHqjsmnKB8pN9eJ+NYQullvFbdnkQ1NxwxOVZHxsOe\nfWU99XVBRRI5eH0eykyrnme66uNEM9clomhEuSR6IS9HzwOpWhHuLIem0DG4bmYQ\nxu6zuVGeu37Um+xU7WH83XLZcjyZ0zubX/FQmLv87r6AcnFndPdnVwB4nDzSx46W\n957C7ZPUAzIL21lClLXOe49Wt42jk3JDKUxk1C4ST4e2fm3tBrkE7RIvEIhKYqL0\nt5s3iL1RBiaRzKzXCwu3VqpGpxBKMGrmtISMfT2HCXcD5oZHd8Qx3OkA65oPBlBM\niBiRK5+J5fuqK5ysYEi2FvXy1dnaxMFC16c1oX258OERhiRMyBs5zDy8R7I6qIDd\nTNxxiO2zscsYLyPtmrOveYXrRL/41lMWw4gs9iQaRQ==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"x/hyId+Upll2nc42iyLeln02MB9l1Y9HT23PQXl83xwC","Address":"178.250.38.132:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"OtVGv5lsk54jYjmXdm8izPOk3eoqUIYNSBbq5RVtLFoC","Address":"88.223.109.170:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUTJi6/hO2vgOeorf5uE0WEV6xZVIwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwNjAwNDhaFw0yMzExMTYwNjAwNDhaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQCsuE5Xbg4Sxy8ghxUdzGp9kfsPAiLyIh0pGCi6nPUaawFE+1oC\nEtkoyyKiIY6el0NazRmOIpxo0At5+4/eZJ51GVgIEHE/qa8DWqmwXWIJpDtLSnF1\n2ek2czSA62kEuHQdAoP6gnOuEjl0OTRh30tyxPx4ple8acM58C629KRbW5/BGuvW\nRHf9bEk0WuBky7gueCOPwdRPu46m25KggDl+pbYb6vc5zyacPuyhyH/N6A0ru+Ms\nAl1iLS72r0SWModY631jl4NuMiElXi/hioCgZl/eqOJP6ErzJ6NuFCSd9jQHvVLH\nS7nTfTNglaRq1GCZ8KTVy+L+G2ImklyWw9m1VuknEES2M5T+sO+Ox1X+qOlkGrVu\nV6AZrlRg6xokq6uDGAhZDpYRTEbr+8OlaC0s+Hfr3iP61evET8ArFesY2hfX3Y3y\n/dl4Z+tBAaUbE2zx7slIxpassdEQpn0g4JoB/aSKCkvwXezb1643RmLcGr4Q0sI2\nTTy1q+h4fY3qQ/BQACSuXqIs0jLUFuP9bj/r+BW1ygMhCXkj1j4uQ3vddQ7ztdmx\nsyAihl4QCpdSRgR1xPYr0+nf2f0zcyfQqx1ivg989LjRqvRTCTnDJvBSv3OZ1i4X\ngn+CSeftxqrjtuibZoA8P7zTUVQJRrArIg7CKPVr9tGFodwnl7GfyGTIgQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQAD\n12WRfoUCzMKUOIOqttVs+ylFwlZWBPVIZLuj4z8WRXEgkX0Zk2Mq2gLg9gM/DtnT\nbJ52JDaOo6VIr2gwmwZpw6z0GUKKi/7FproCtswMSvIqG6VmidZCkl6bAKKAYb4h\nwYNWryqEmOXP4HcRhvmsST/CVOXR5bUXcdiCzw5hhl9QnwAe60bJ2jLyL9BYoMfG\naRz+tnP78CBHS5rVNdwkpdZfaeaIDumwMV7FcKHBe9/if8QFLeTMwkEQgmIr5vwJ\n18XKkJLKscuAC17oYK6rs0+Bsrk1P3jEDc/Fpz62zgdOprlRaPZzvSmNzNFx2mI6\nbw7BOxloh0yWcODo9WYISkOJK2o2tBmO7fWH3kssualcT0D+/jpBjBLSsMUKyWdO\nusg83AGKVF75TO3dzhWZkN9vHcoxTSkSl8nl8gwOwYbnDdYOQyoO7ULinM42/xzL\nhZLcVrfjlG/ZUYZXJ3yK7HMKpOoueAYr3Ixle3TP2TizFFMuzTHhFd5uMviIR0Hw\nOQl22HdDDpL5uqU4eNs/wdPa8vtpJsnrX/gy6QOG3Y9uPt+lygFJu9jYhN3NJpWv\nqEukvAuPMGZfJn3CxB2NSN9zayI1SUEVtLJW4w1AWcS9y/+JPsKAP2SpOsrRbUmC\naJupVOhr76nI1BEka6NC2Fgj1mbh/3Xn1Dmyy5Y6Jg==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"PdsTTi7fNQfih5vPzANk05vxoDU0YNbCnhgJKckKuE4C","Address":"31.202.123.194:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtTCCA52gAwIBAgIUTzGXD+Qynp34JuCFEefr1WhLuKswDQYJKoZIhvcNAQEL\nBQAwgYYxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJLSDEQMA4GA1UEBwwHS2hhcmtv\ndjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwK\neHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAeFw0y\nMTExMTYwNDAxNDRaFw0yMzExMTYwNDAxNDRaMIGGMQswCQYDVQQGEwJVQTELMAkG\nA1UECAwCS0gxEDAOBgNVBAcMB0toYXJrb3YxEjAQBgNVBAoMCXh4bmV0d29yazEO\nMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0B\nCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\nAoICAQCdTZnVRH/rlBn85Xc2ap9t/HHo1/o8HYbweTrkdC8uWMbcDliyDtNpSRnZ\naJ1LwDrE5oGbrBCVIPJDEZzHPOSgggjrHjcdDuVtjlNc3TvXNI5PoRk/Q93h1gPY\nH9H1cN/hB/QyzpragzR7o/n2rcigfAWXPxVbv7vXNZoC77Xs8k/qKJ3pCnp89O4S\n5XP1tFY+/YdeI3FDT9zfv01O1aEF/h3V7+yLk7EUaI8nJpMRCbW+LQkWFyvPhM2M\nh+0VguGTmbjw7tHVldbZERK+XfgkBVz86PZiObJjTRtmQRM11N//h2YNTz9h/tr6\nqFga4sdDwysEpy0I3tFK0h2SfqR6CW7U/LzV2miKTng1a4lPlkR3XcPhigWEgjRW\np91D+WKAuPcA31zJqGsIX8/wd6E9/jXPwOOCM7GWZleSm319Asr+xbWc+Q/2zDaY\nytz9GlJxi+bBKyRaQgMTkirj9U2467/sKTvSEBk+lXLhZByaXw1eiNKgusNTottK\n4kEX1+SENrxHJY95kv/zkSN4wKWlRhPbtB6kflM2NoySt3NaSt2O32idIN+gJZVl\nzFgjaa404NRBrYgbE5puI5pI6WJsllMmoKO0jBBCaXAJEGohWBh2t/AUbB405Wzd\nKEzPhu39OWZ5+qIai9HEQbxfmwsWraoKOp9YtXlTD4mAoIYAQQIDAQABoxkwFzAV\nBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQBNDL/eP5L/\nsCNUs92SwqGPhQgkjBi0clfQrAMzpZ/Won+NoADXPQVDjmMNw6zwqRicCiNmUlH8\nY2nt73MnV+XXRMYu0qSpLYlWSNR0K0bYMbTH9BwT/kftReRBVAneBIndqOTfwVuq\nQ0YhhA7fJQzAXCNp292BTNVOkzKR/AIwKQeXwbv/XZPP5qdw9/mot41Z8Q7LuBHb\nTEY4hmuNZXcmMqF/fQwjmZ1PUdb3YnXGIDHq2ONMS1FeRJ6bHwxOD5AWtUdKqKUi\n9+v2LopaGyVAptEvklK6lJ+8BlJw9r7b1wUUxA2aPVxRHM+1irusrTbjF2oWSyuQ\n7CiKXgH4rVRNekJsVvJFSqcQMl2ENYVE6bfWlgVr3M7xZMwudK686WeNhy2veCQ9\n8FGokry1F+9cTIEpO7jyrLfXL2jdU3GfG987jnWsnFI4XkX8f6G8sMxWCMfqUXEL\n9gnT+yoK+WA9SGMQmA0MlgEGck8A9vtde4VQRPe89IFt0DRxAbYL8zMFPeL1bUBp\neWLaROmkTtZvgcu+UJoMpAXvTcbELtP6Y/YQdhXgEEkcpH9GHS9hK1o0xngoVg0Q\nM+WLAAz4w1n6LohdQcUcoH2EXzn0mzDLuo6+qI1MqM4AldGKU/h8YksYw0CFqW0c\n5hYCOyi7ODkdzSKyVNTidfbbtx0em86uig==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"XjeiKjr7MGfBnDeaetLGipT3UDh1g/fjOFltJDhfeIsC","Address":"gades.ddns.net:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"rN2Le9+pADz6GHTedHjsqGIK2wDcimb4wBswcJ/1PqIC","Address":"81.29.141.40:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"EcfsEZf0BchntdI+KQKkM+BQJ+uYK+XS44Dh09d6b64C","Address":"85.206.25.76:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUOXieJ92IyH5Q+3RkSFl5vu10kokwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwMjU0NDdaFw0yMzExMTYwMjU0NDdaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQClk2E7SqsgTjPyecqjKKQzXpDsb62gfq+gV5ofL7QHfbgAZaHt\n4ohxOAuCLUp6T/c/ij+YBqnqPTFTEySzQXg9Mu/VoDOS0tXEGh/Y5LEZAX2aGAAA\nk4WgTWYtKEKJmXS+wpQPfCJYvtPac25xdqNKwIrAT7ec17aSLeBljM9xKvGlYOlf\nE82IGUKKA+gnDpI916eMyAh4XEXVDpVM1OrC6a0u6uCovP5VYD2E1cAvJv1xi10l\n8Q+AeqBgUFIsTrDqDslNlw65DtrMAdif/1uFaoyYG8nHEB4o38/wXgHLhGHB/N/d\n7lg88dVKqSfMSgLvb9I6ahRKw2A/5T9XJ0B8tquYPhj4MdJ+J1cQvBGkO8LfwhCy\n8Tyw0M6HvFJAkl+1caVxGx4M9IAlw9q17ZMgzvv+vCmONRqM4IJZeTG2x23lrzBz\nBmzCfbTjW5yuY6f/sMI+qM2P6VBJmH7QMM7H6t3js64wf5Yvy7Ro9piVdDiJZ5Zk\ny+bgBmtOOY5AiEZqjIA7GzzoE1ZyJzKApi08+H2tdIdkJN4QhgasdwG9ulZLioCp\n3MeLIrkC5YRGWGjxTW9FR/LTie8zC6iVaJYmHSdwwBbf9FZ0K1iOK+nyKKT40gDb\nbkQOTs/Jcg5d9FVO57KYWpqwJObk0jL//g86pPOETSVQm+shUZP81XKXjQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCi\nD1mYIbpj6yt7SEBqGQaY1v0LHs+T8ipHoBiP2UaaHKIog8t1AIIuX5b5APrtVR7O\nJ9MMmXT9zVleWd6zxSKhcoel02PhUwIsgpUV6R2C1IHZwu19ebiIb484y7H7oCaS\nEyfLdorsyTeCOQYkrEB4GX6J+pBmy1EYIY5uuRGdWPUfAebXRbcMqw1ug4xK4Wda\n8S8w2KDgyyQUfCziQrEGyNBhuCtoqcv+KlVKFtxkzIMtIRaAARrsk9iIyqP+7dOV\nvzVJJpi6/6CFSlh2hLqz3NDgrT0z8qAs2lcUJ8Pvbw6q7Jub8fVpQZi8B/hQv0xA\nplti85qmoqag9vLlpjIKdBhQuCUKf2L3lPZ3M5Vw4aOQd5Sp9yDyuR6zojCJzFND\nvkwbPOLqPf3iLdB6w3uNzAMYjuV7jfclADrqhMZk7GLUjhzsMtH9LvfWrxmH/4xT\nvgFyQKNFEiHgAxIDRCkHLq9zhURo2msU/gqoSGEliD0zkyDQ6Smh52txLGf9nb/j\nAcHiGOxRSjU5TYse3SGQlvoZG8mHIUtFF9F1R0FKdFahsG4p7+CxsHkYsRr6aDNp\npcJLEil72VOc4W6kHQmraj1aORGeXdvJ+L2DmTBKSBOhgyjSSFJhBhsVBCfQRodQ\npbdoU4GRe9owQxB0e3k9vRtoUFpHQzqSpqZqSkyDAw==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"2CI30f7DrjSxzUmSoJG1JjLiHSFyUOvxaXg5moVVN48C","Address":"82.65.223.126:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUHNm8ycnzPTIlfa8TBUOEAXH842wwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYxNDI4MzdaFw0yMzExMTYxNDI4MzdaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDes3Zt0LGbFDYcEbNi8AjDrfXqAlWevsyHxTykmBFUExo6LtXB\nYikSBWCXmyB2jWv0NCnRrl3QraBj0qQnVt45VerVZ+X3ZWhNs0y80w7R355Y8bCy\nY6JGMrv5rQd75X3Ptp31HRA8R9bELL/IFPZQKhaFFtMnny+551dJXDSPF+yXwxyY\nCLpGpbUtZ/KNRk9/R/BLvM1bUmmdhQXRIZ7KIiC9LDgcVxcgqN6/P4S2vLkK2pkx\nhA9L20etz0FQEupOBkDVkO0gv4hGcrfmk8qVfdNBmXlKv5qyFVxiC565ZHw9zdYS\nDB221Ns87s97TiAb3vt/Zn4+Mr1G+bO/dj354GQ6J3QC6UKNWGC5sjbvvFRASUsR\nWHCbsNbmiPBJ6u1eyjEa/O+KrXvNLRgVb9AnpkNMXmj/xRT/2zDZaOMTd8mDPF/h\nbAObh0VhSaUnXTqlDTMgQ4IwK2Z+eUKGaeUBx2iYL89dOgJzEm1C0QsCyGaKzx7r\nwpjSlOVZMmdmy/h87Gl556NBme1Tx6S559tsJStFUmRzFJtilPywpd3HOMqKbGQQ\nG8gbama8E9Lk35UVhhngAuRxOah9gemRmXuw/Pfa50pSTXTGrBAGtS/2CELKpdTu\nT+W9Tjbm06mZD1hY06MnLCdM2pHdbM2Xjkyafx0bQ/alJbIbrK/nz+UaiQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQBn\n40+vSNgc5/TWvlP8U1tOofl1duQqOSXYr6DoLPvVD35VAcprnZi2InLdRwZBiCWG\n9oImjcgcjZqcpgYObE4SxKPwN5s+xBZUfhHQPmywgAhZPqelH8Hr57vK4f/zAauv\nu2YIRFYqmvk9H7e6kdV0RodRrLE3mU3kJCejumh9KK/Qj7mP/4tV6QP6NJR68dZ+\nR/P/VO+3Ks6fZV0ZI1tpXKmS63PbgnX2VTpSLImO6qRJp7chocZ4Z2cSHiZsSj89\n5vTJ8S5guHiUF3DNq+THRCr1RiPpHnTh5/YGBsdQiUf4LPWGNfpR1w7+RK35/eRE\n371SShIqCfltOQhBgaZ4WmJ9c/sBGgL7x0H+/PgC1geB9F6AKEVR0w9XYM3OliKu\nN3D4U73VaH2MIRfs0ZOVddU0IZh0a9NUP6p9xdIk7QsXab08dWz+vC6eTk7PyTjb\nNT7HRZGBnMN6AbUnYewk0BebAIlnXWwkQWzi/F5XQQ9KC+X2UBpNyaC+uqbVIjiE\noHiSF/fuCS9GhSXkO5j9+gQ5oxkc+Ax7rOViAdlfaDl3w/bpk7UFtna1sNNoGqC6\nBCYL1e0uY2MvyL1FU0xpnyT7o/q7KO/FalMmW6U03M3UuKMHlnz3f9RYb/I1Kwku\nGWM/e/fd45gSRrTr/93ufTfdvn2qk0j/zAZcgYzKkA==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"rb5khGCbytwOfrH9sk2Ey5Ba5gxjvQ8wheDdls/s0doC","Address":"92.255.206.153:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFrzCCA5egAwIBAgIUKZ0yMcoAgwsK503VKVJviJKFsGIwDQYJKoZIhvcNAQEL\nBQAwgYMxCzAJBgNVBAYTAlJVMQowCAYDVQQIDAEgMQ4wDAYDVQQHDAVLYXphbjES\nMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgu\nbmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAeFw0yMTEx\nMTYwMjA3MzdaFw0yMzExMTYwMjA3MzdaMIGDMQswCQYDVQQGEwJSVTEKMAgGA1UE\nCAwBIDEOMAwGA1UEBwwFS2F6YW4xEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UE\nCwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFk\nbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDo\nP32iqBw15jsNUW/RCQOgKNW4DdLhxKH46phwu1Ah5+wlHFjQI/w9wKUnuoNjOQwR\nrw1GyDBsAerAJi2uTBZt2XACHXC2o+ta3VvD/JEvqGDB/MFvtxmvv9KQWWYW/N2E\n3yCBX3R7aU+OKbiRTbBPXceKJsCyT0n2pZrMO3eiA38vdwPRAnwz9uNmPkUfPqii\nJjT7adsM4pU2t6b/ZojZjCFXjhPBojdDYuoYzJGCIE4gqFZWOtTYTskkrKa8s1nU\n7sasekCbwWPKVTjY1TF2UAieq8ESMISMGl94zdsO7NpF2VCeJ8a4sbzfr78gtMLN\nbb6CngNoBpJs1bZjKCRq3joi4xNPrhY1W30lXFpyd0wFNAy1h3eak9EMHz5t/Ref\n00x/MfxrhXQ7OoMvV27xaPM1EeyclUQf/3L9hw2iwaEP82gVf2/EeCUCUJjyyc0H\nlgWCkgE2hsSwMy8ma8KUiAGPjAo0Wi6RSrcvAYQZboDSq/snO9OZT1xQhC/sika3\nk3PRpCBYb89x6s6s2b2RleE1vHd3HW7o27UIZgvvXKInMpxwWnRrIuvy7dfqbTn4\nBm9ZqLNTXXZiGj34UPJp4KeawhLdqmvQ5k/SAUDNiQtzbqFxV95mwVS9tj2zWsRq\nQM+FBHGhZP8XZN+2dsgUafjD6A2OXml87COpEi5xBwIDAQABoxkwFzAVBgNVHREE\nDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQAFwkyGShSajNnsVkXs\n1gX1J+GGhNCicyR4ce70j28dfKd0ApCT/O/hKesiTHBfdISIc4938SNgAauit6dJ\nNVnSuXEqwefN/HRx7RB0xXUd8OhzOusmHLZ4cVfE99hGCMlicvn5pA4uJ2M3RVvp\nidSSVhuNgQ9ucPBClrfCEoWDSZ6RnGGRnPNsS9bneL0Nti9JUDxFRB/KjHui9qkx\nw3U10WdLcUcpsnZuFo8ggWtgUTa9BeFICRAQ4vME0KqIxG9k6nRnLhXKgBZeECWF\nz2gy6Zw5ONl/a4gV6Jqxm8WXzUi1R58DJUhQOxVvwpGp3JrAcPMcMkRe/JB1a6Qx\nAIjj+fnw2wIsMxB/g4SiPqnrLCF9I1YsDOC9r6czataXg2v5ThsbPXznAviJ9xmq\nU63pyYQoPaeR8rPtoEEgGq9Wxx11w0djkHa/G6iXUi+e48DlzRkTtRI0MJh+Vj/K\nv+gzq714WUx2CbUUodhcGjqJzpz5CE+dcX9A6atTu66jMZ8BofOLiKBNhuibNzKv\nZpBVuU7hyQXZo98ZuOKQSLbuNl2YkUmsdBitxBNfcaMFFaGtBof++kgCMFx9U6FX\nOGfaEj5omxKfcjnHKBB+zH3qsdXyGR3RClIAXf4QT1R7uEtMMuVrJSL4A9K3ObTc\nCAEgu3ajGDNs5tRBVlKimDzDpg==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"YWx8EODpDZphxqNmmMvFqUJ30sYJyPaVXqZ1khomVEAC","Address":"185.230.90.71:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFyzCCA7OgAwIBAgIUB6iXmEXbYGl3/mC1l54rUBPuKD8wDQYJKoZIhvcNAQEL\nBQAwgZExCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLaWV2MRAwDgYDVQQHDAdCb3lh\ncmthMRIwEAYDVQQKDAlEZW1vbktpbmcxFjAUBgNVBAsMDU5vZGVPcGVyYXRvcnMx\nEzARBgNVBAMMCnh4Lm5ldHdvcmsxIDAeBgkqhkiG9w0BCQEWEVB5eHkyOTJAZ21h\naWwuY29tMB4XDTIxMTExNjEzMTAyOFoXDTIzMTExNjEzMTAyOFowgZExCzAJBgNV\nBAYTAlVBMQ0wCwYDVQQIDARLaWV2MRAwDgYDVQQHDAdCb3lhcmthMRIwEAYDVQQK\nDAlEZW1vbktpbmcxFjAUBgNVBAsMDU5vZGVPcGVyYXRvcnMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxIDAeBgkqhkiG9w0BCQEWEVB5eHkyOTJAZ21haWwuY29tMIICIjAN\nBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAs39IIK5m+FFWtYkg5pvtEf8TP/Qe\nAZ6VvysFYw8Gu9tfbJyzbpSHyg4CfnLwvde4/yZQ2NwFad7dAUUg5KoMKbtpb381\nVxcty2GsP3T3DxdGO4WzkJiPJ+tJEBPF58KIgU93g7X3HpV/CB+pHkTwqzAYWbCM\nmLVFcE3y79PZpL2vmpEBsXdID4I+52j4gyWnD4ENJwZdOQwMIj10mZ5A+Asa4zUH\nQsYroDELyEin5nQEVn2UQSaPvG6dtzh8EC+xq+bsE7lYo+cMbQ0koluVS1ePNFuz\nzt8aabext0Hxdsr8iQNbfxL0whCBvm1Pi4AkgbrKUumBqmb3mxOOM9E6qfT0Rrt/\nxpiCn2qLpVOwO9ucUolrXAb0LLBR04j4z2B9jBzQUtVWq4eCvA3MN3bKZzHyWF7d\nbyc0veB/EvdL7uktHCx32H0VrPXnG/4Tz39E0v3CedxqmY12hxiUpCl1d9PZUgoM\nqyODYoC/kbKdcrH916CibuZNciZnjlvA3xCHqcgG1Ut74s0Sk/vS8qeUwO30qTNa\n6DrcGrCtYVRxAf1roGp5EGDh14D+YLXuDag7VVVvNaUnvDz8CmISoL+b/dWUm1h7\nUUv0pfJXg0DLEh+GE9LY88qsM7M7uQqYtO9VXl0eKB7bYgptXApv/pYKzJ4PkucU\n/Ruzv9E40ucv4u0CAwEAAaMZMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkq\nhkiG9w0BAQsFAAOCAgEAhQtO7pFnTN+g0gUfLAH6CfG6tZpWhG/xKvE+J2LuLPN4\nmSbIV9AT6f4KKnRDrWm48rg2vUpgEJJEoiJM8eS4sVWjmjt0LdbphxyL0Qec1nYz\nV3vCE9E0gwzE1AY/ORQPeg4f8M0SNfzxHSq5qbuuWmkrPDWpGMfjsCdX/4Ys0nEK\nQN8QGM4/Z6DUAcwNbW93KF6D2KnvpzmTBIkxq+4akAgMItQdNAlsPnhErv1QGHd2\nvmlq1mFRrRvRMONngTsuAZjydpwUox/o8+NgnhV6NQsWELVIa1Q8z2TMP8mNxox9\nRYVPqOrxURH+iXyuWSElKpRfFUQAzO8uiWrNgeNKL+hESu9YTXWJV0O6tT4Dq/My\nqu6//Ljlk+igyqFMaMzA/VEz2fNv/8iEsd2rcUm3mtfOVq+PozIWBUufvL32dJB/\nyDLbe4U/SYWXGWGf/WHYEK6Oxw2ETvbOSnzZthGq+jjNlVERfgi1P36nmlGyDDNl\nCZKJdDL864lW90/ESd1D0TDNhWgRKUiTinrLlwhAgwSpbKHRO0rbF0a67zOeX2nJ\nJv1LglfsrRDoqAJ3JeyHj49xLfbVLzWFo5WMhbRFfhrZYLrRAtFAofkhILh8wj3q\nfNp7MvINIG7VWIDk0fgyTl7Pzo9CfYGXUfUvd7Q/U59Jb2WaheZLWwY8bmqymAA=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"0T72Aw+MvYbn/oGcxK86/yg8pZllHBvsJuULgMaSlYAC","Address":"78.29.34.254:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"IzU5v25wsVHEdOw/UvUPiFYEj3EX/7ElgsIDN/GFDU8C","Address":"88.159.77.30:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIF1zCCA7+gAwIBAgIUKt++dOawRx7xNkl+bLPiRzLGOKQwDQYJKoZIhvcNAQEL\nBQAwgZcxCzAJBgNVBAYTAk5MMRYwFAYDVQQIDA1Ob29yZC1Ib2xsYW5kMRIwEAYD\nVQQHDAlFbmtodWl6ZW4xEjAQBgNVBAoMCXh4bmV0d29yazESMBAGA1UECwwJdGVz\ndE5vZGVzMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1p\nbkB4eC5uZXR3b3JrMB4XDTIxMTExNjEzNTUxNVoXDTIzMTExNjEzNTUxNVowgZcx\nCzAJBgNVBAYTAk5MMRYwFAYDVQQIDA1Ob29yZC1Ib2xsYW5kMRIwEAYDVQQHDAlF\nbmtodWl6ZW4xEjAQBgNVBAoMCXh4bmV0d29yazESMBAGA1UECwwJdGVzdE5vZGVz\nMRMwEQYDVQQDDAp4eC5uZXR3b3JrMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB4eC5u\nZXR3b3JrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAunISW1ZxW/mz\nl11HZrt2YumpXKFVL3vdtnpHeIWHb41gJpvstfURrTew3fOMjE47N1toT2QsRQT1\nlXM5VtNwohSZzvjXqa88OcQ8Ezzsc/iFxGjp9DJn0cYxOXSMTQkOda8hwGD2glXl\n3ZzuHJl3uxeUdYfolxfZyH3qDpoRR3iOOrn8jQAJrDwL3tkd3GzBqwL4HfZpM6Jm\nqn+QdVc1Q10MI7FzWnBMYizx6UieDgCVhWFlZvjGXxB3Xo8nS3KQrk4rKTdFQeW2\nBIDya5qrmXFOkDgBLoXqvP/TWTtVmMb++u8RV6xZvfEo+VwH/QWCh7tTrI/k0CA1\nOHP4ZnSAsWArzzkrjql+2eOG885kML+r2ErF/RvAcrPtJSUClWcuPB1G3QXVKgGI\nWitn4r4C400cgs31RZ6dJJRYJHUEDyJWvsoL0A3J83BpdP7+6O8uU3deDOX/yask\nx6f3ZgfC81Xe1k1oXVbBPj1ThbCyE5FGobAkBTMw2ejvr4MuMzqLK7dblRKCheR8\nMEx0hShZ8DheLJtRfiDEjTWpGXGU9EqiRkQwji/zfFVFzNdadHQCFYD9N34FHNta\nOflRSRiv1OesE+xMToo1l/omb0TUsSAddsXDFl5U+AgueimGg2Up0UTg+2E6MbJg\nbZYH9eR5DLOIcT2oVLwbO+qUfPu0sVsCAwEAAaMZMBcwFQYDVR0RBA4wDIIKeHgu\nbmV0d29yazANBgkqhkiG9w0BAQsFAAOCAgEASadULfwdtLqoy7N1iE/U/Shsi09L\n3RnjH7HY/RQlwSV+7uEdH/5iwAmH+DK8mTu1yLA74EDGDC7XpA1gOAh8FR/k/uUn\ntKnupPnF7QemmzCO60d4OoMsG5oRUm8hkd8U2jkIWI1haGeBYrF+EDVew+FTPv0Z\nFcXXTkVmiOvyyu4l0ewzZ2hWPWvNDfowqvyfTsvUaranRTkonfjsaMNe60z9Ed/L\n1BnCzQDu+0p+orqp1GmxE+aQAeKq1tqPOHfG5G6puRUgT7obBGMegCcB4jbx7z0N\n+PFirnzyixMmsH2dIJZBEWDCvHwjJUr54JuCu4TrRG0NhG+Mf/iiHr9fqZnJ/vDM\nydbmy3r2Lf60Qlts4r2q0mEFxnNrEJyxuetrA7DUtV5R1gyldsee4TzuRHY/ieos\nXXIMORmt8HAiBwYFmCsBP2anVMi9ddYVq0V3ZmWdwPrvIPspfjvd4tcyuLL8fsU4\n9F3yvW/OBdQtOx8RHUvbHU0XTSmA8/wTk6+lenRi8hJfh0pcK44a6w0Z5KSunKO+\n5unZXNvWEYeUME4lFCjs+DyHt3JBMUD3GvUQ6BffzfHKejPDL51f3tLk1dp0h/I2\n8C+gHjFDB6ngK3mK2O+IxFefOxLw6A0dUvbrrEQ4i2NHrla8FKaCYToJA/CeXnkm\nBLn3HweGNNBY0+k=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"l9PYy6r9w7uzI+sWKcmDJ5Lv55H3hG4vJnFYWejjIlYC","Address":"132.147.123.104:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtDCCA5ygAwIBAgIUHSz8J1Qseqac06MBtwPHnzWSSIswDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAlNHMRIwEAYDVQQIDAlTaW5nYXBvcmUxEjAQBgNVBAcM\nCVNpbmdhcG9yZTEPMA0GA1UECgwGeHhhc2lhMQ8wDQYDVQQLDAZ4eGFzaWExEDAO\nBgNVBAMMB3h4LmFzaWExHDAaBgkqhkiG9w0BCQEWDWFkbWluQHh4LmFzaWEwHhcN\nMjExMTE2MDE0MjIzWhcNMjMxMTE2MDE0MjIzWjCBhzELMAkGA1UEBhMCU0cxEjAQ\nBgNVBAgMCVNpbmdhcG9yZTESMBAGA1UEBwwJU2luZ2Fwb3JlMQ8wDQYDVQQKDAZ4\neGFzaWExDzANBgNVBAsMBnh4YXNpYTEQMA4GA1UEAwwHeHguYXNpYTEcMBoGCSqG\nSIb3DQEJARYNYWRtaW5AeHguYXNpYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBAMR6BcWmvaYqPPosydxkgccnkvAL5TMsM2S6fykY1pqQPJJJIcjRG/BE\nYzlsA18iZOY/hD2kBChJFpwCv0ApNoMAYrbPu9Am8FDjAARtBbm56PQVsWz4MgFo\nAqhRuEP90AUXGd33wKW0Zk5p1YU2+23QwHTe4KCCvODs33+k3+nRyB7McfmkLRGN\nguhNQbEAV03rnVuTI9xEpAiMsaoW6hD+Z52ToyXlsh87yb895RAUs3RE8dpWgoji\nlIikfYjXaPbFKnnTHjgPRnBU120FLTOtiTqqY3F4kQI3gOaj9PzdJRXjYdPBKSxG\n56tFV789Nk4TXnCFDrAyuKIOKJQzw8OekkY5U3VAAY2z/sC9eowc9KzREQBeCD52\ng29v94FpAN+n3mmhF75KzdnSVT4HkDtRC4QgStlFh3PUchYbUgPIpIk/cpxFaFrJ\nwvpQR4TbJugos0sfmZDAkR19Qz/8npMImS2O2yeVPnA5jeEHRzUGxi6yB6nWshmW\n7Uu1m2RLN2ifIxEC4OeK9f4PhzKc/Vm1rkaAyXaB9V2gs4b9CpqPws3Xgp2RNfgq\nGAreya+hX5YMQ8iiHYacsciVzqvVj2ald/2oFAAitRCO/0mRSq/2JZXxoANITQ/Q\nDS51BcbY7RHzmXyE/wJcl2GDV7nd2gU1Wf25Q5CphAF2iZqitR5lAgMBAAGjFjAU\nMBIGA1UdEQQLMAmCB3h4LmFzaWEwDQYJKoZIhvcNAQELBQADggIBAAQZxxX2e1oX\nNsjnM6o81H+0GMEV17SoDR0shMwz/138TqdVF2LYk5JPeOtU9GNyPewmj4gUHbwm\nKCRCROYFF4gft+eqhf0Z/xIg7IZKIR7aUlUizdgxt0Fh84Dep2dLUkETrN3Z3BP+\n+VhcKHjNyneDTX7aH7GYMTza9otZYXo+mSm4EoIVMbFBj7IR4Rd6KT3ptAh3RhyS\nymvzfmBVsFIaHXCkwDObzy01vVj3NaTz61xEyOZ7/2HrfRU5VUQYmcF19Jsv8Aby\n4HyCWBeE8mrbYc9zLDkJ42Jobiqh5vPZlMYydl2SGqBN+naG+BbNT8ZZ5P8MOse+\nUFJFrBg2HBQgfjqHaVfiD9zUOegTBN8HU7i55HejKZgMqKH0wb5iOp0waX/IjF7E\nGPKE7uOCk6H2LUEV4Yn9E3mn6jekNmtzsppwcQMGoqnHVko4ooTpjVuiJisknqTp\nEycMbVLcHQazLBbtSqvJcU80I2Nq2mUERdnJYIWd/L2jO+Gh9UOkhB+2Cqej2pKR\n97yXxiFeOVtDncJk1GYQN6Rii/Fhnx0g9RV8lRojUTxtfftkXiVpEY1qNw/jmAr1\n1iti7H9snV4oWEjkRJTSvzRHlM5wC9zxXSWPT9IS1FsY99o6HDTyef+XdrkmS61l\n4AC1PRjqTAWgFWLzDmc7K+J45u4BSjET\n-----END CERTIFICATE-----\n","Status":0},{"Id":"ogYkw4EJsTdDpMJ2+pEnt4AetjjnBhVscS2kYLw3Gu4C","Address":"180.150.125.93:12420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFsTCCA5mgAwIBAgIUVzaDhGyDfyz2idkX2imAZFj3pxYwDQYJKoZIhvcNAQEL\nBQAwgYQxCzAJBgNVBAYTAkFVMQswCQYDVQQIDAJXQTEOMAwGA1UEBwwFUGVydGgx\nEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjEx\nMTE2MDIwODE0WhcNMjMxMTE2MDIwODE0WjCBhDELMAkGA1UEBhMCQVUxCzAJBgNV\nBAgMAldBMQ4wDAYDVQQHDAVQZXJ0aDESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYD\nVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQ\nYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nAKp3JoiJl+lgnCQ8AhOJ20+3xk5IAC98jq/AoawM25tcyKADd+YmICrGcEBWaSRB\nmTWdlmYEhkvrQYSYb0lKPDOCx7qTR8wtRoA6PdYtXYm3sjA/eIysv+9EaHgaBy0p\njnOfy01BPoQCYCYhOYsGBLTUtYobtpm89zOSaSGmIFaKxoeaPFexfYHv4p6/TU7P\n+BGf+9zKApk/xgpl892wzWkx0AxWcGdN902IN6BIBzuSI2+y1iGFActQqbJb13KF\nBITUiL9WuRZ9AIg58tbUpbKaw4yXPMdgqPoNj/5vm5kQJYdzWHUXG7UlqOPNUwjI\nwYg4njHjqIyHF2tpUaUIf6vGAe5A5wDa1djMSOPveiJo2Ls67VCM6XTa2PXfyrmz\nyDNVZUtiHeoRm2SPDSAFwYVCMW04AZ7CqMpNPKYMyJCFMAXx96C0MYnuYBESpAGP\nNshYyuUgEsfE9BXNjlXS3NJv/uF1LmSocUgLzu0fBQdU8+K+k9NKPZBGsX09gh0i\nI/nAZPhJfJzk9oX0hz9I2vE9USITjUpes81MCh54HKuYA+zyZpb5qaT6uXV2kEIZ\n0lIoOmFHapOeO8M2EyuCsRUUz/PT4MZp/3CvganC/KMk4079AEetVrTRDXt92mUB\nq6zZO3kD0cf4dSW3/SPjjZvoLfLOBccKhteAXN2VdthlAgMBAAGjGTAXMBUGA1Ud\nEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAFeSJEI4a06hLc9L\n1NO0vXv/PDZCYr5dWTTV8FSUW+CSFUeOQEAKAwymy2zEETt/aUjGmRNNqfo52h3Q\nSYuha9Rprybdo0zCrcfRE42bXtHxjxdpn5iW2cZ/Amj7xg+S7xpWzfeLHM6VNmUa\nNxmtGzjPErMM12ECz3182vkil/DgGvJyE/KsASH8dPihQFC+Z+LDdTCev2o1fDDX\n1ClC0PfIy70JUct74ezlj5dC0FPxuALQwZ6zLD3M+7YlefAMpzrNwkDqTkdaZZAF\nhJaQ2yaolj9tbhVzpTJPLmbEerocXiZSP8SDaHMD5e4kvU3g2G8t9dffkuQHvB+v\nzCtuiWjjMz3A7Yndfju9EZzrSrgLYpPWIX7eqGgezLV4IXLTaFOMPzd2NCbx1IFa\n7dD6dJ3DntgjvFkJCDUzNNvYxrwVC+coQ+xZXJT26rSrOQTqCGhL+U52ad9G8zeq\n28yN7omOKufZtjY1m8T6WV/U74JyCVpKh4oTma7tAJu5pLdsXmwE18/P10Rm06Xv\nuIIMTXlWwKlsuBAyzsyGjXPKqJnTizCf4f8G2tXjurt1yauMo5xvZYi7I09c9FWi\naaEEi0evzS8FUIEh8HEM/7EM/uCiZ1R4Oe0BSaHlp4gq04/7XpcsOTFJzW0BQ1tE\nHiPq/3DXPrpR+b4mcu0Q+QahmmQ6\n-----END CERTIFICATE-----\n","Status":0},{"Id":"PxUlC9xgEmH5Orwyc8v4aFEWlVUh1VKaprEW0qL6kVcC","Address":"176.106.59.120:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFszCCA5ugAwIBAgIUWD/9Sg16ktx7gwNkJCZfY1hwjVMwDQYJKoZIhvcNAQEL\nBQAwgYUxCzAJBgNVBAYTAkxWMQ0wCwYDVQQIDARSaWdhMQ0wCwYDVQQHDARSaWdh\nMREwDwYDVQQKDAhFaXplbnRhbDEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCmFk\nb3JpZC54eXoxIDAeBgkqhkiG9w0BCQEWEWFkb3JpZEBhZG9yaWQueHl6MB4XDTIx\nMTExNjAyMTc1NVoXDTIzMTExNjAyMTc1NVowgYUxCzAJBgNVBAYTAkxWMQ0wCwYD\nVQQIDARSaWdhMQ0wCwYDVQQHDARSaWdhMREwDwYDVQQKDAhFaXplbnRhbDEOMAwG\nA1UECwwFbm9kZXMxEzARBgNVBAMMCmFkb3JpZC54eXoxIDAeBgkqhkiG9w0BCQEW\nEWFkb3JpZEBhZG9yaWQueHl6MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEA1XYHtxdKj6f84K8D4g6h4Csq0H++3T//T++BYzFbMZUF1a7RY9EQ91ATRqOz\n0NxfRKFO8yRBuWSl6ycF4wSPA44mLiPfBrFk5W52G3S4mesTFvjr5NIi/Sel6+wm\nSi6ww/8ZxALQlP53G59ha2g6IcomN7wlNnqUwYLbY5zEGEpj52sXuztd7Km/BsBF\nE3zHLghT55c17BWhXerp7D4CFFszS2I9gABY1l7fMof0Bbq3Nlujqg0sefdtkTs5\ngcsgb59+BSVYL9rlIT7hR4/h4LntP+4aQyXnQr2rJsuBhwHwbbRv/U3xIWZ8Sgup\nc19CH2wkkMR2YNq59RVUVVSa+Gn4D/UR8BZu6CBHhCdKt3xWgFQjzicQBQ/JzrXH\n8ewckFuhg6S3AtpahXkBpXsKiSabWny5FnCW5ln757WqHpYnw8R0ZLNQSmYRWmv0\n1AtBdRtSEiaiJknmLGZf5yNtTEjrVzdqKOYp6LAiYM0BdpHJVdTqBquwznw+lX7t\nnaqzUY99xllgKjrw7EtOXZ3dqQrz0bFkzWKf/fETOi1NHX77WZR/eml+tsl1ypl2\nRwx8qYMkGYpqyNMOFR+7fQJT55gVzmjdaI/R6M4EHGLB+yNP8tf1PrFks9Zb58Xe\nboNF3sYWXGCBz4vOPu9WXE+but6OetmtxnI6Ae8RkciDlskCAwEAAaMZMBcwFQYD\nVR0RBA4wDIIKYWRvcmlkLnh5ejANBgkqhkiG9w0BAQsFAAOCAgEAjSsXFmeJDC0V\n7qrvJz0iWd5lttW5hsy6UaBLpiCmjDPilXwfdsGXBys+XmnnmBbGLnak9v0v0gpm\nafTymFQaoevpWOXQJwdfFu50Dr2n/+Lh/lddw68vzi7suEILOmkbsvZnISX/4aTc\nq0Acm1/JRN0PanEZM3wUK2lW+G7Xf8TzMMDs6Si1Ksevz/PFeOKjl+gV58vC/9Q0\nQ/69h0i/+fq213d0/YSxZs6+hTanJwfFwVFNNzfWLX6cyR58s4kLlmescoffKHyz\nKzz7OR++XYRM4Y/Mh3Eb0vQr9Vpl4TsRxogpJRIgb+n4sRi0Wyb+0vs54pmG/bHD\ncAIGyMkPKzhjluwXByP6duG5wurYbTFq4mbl+GkkrhtDgw3RAzri+fwgkaQOXX11\n5g+CmTCNOfZswRPakK9PRKxFKxOD9L9HMeZkWlH4w+wnFaP9pOam6daX/VpOp89u\nWZMltwyaXTtGuuq/gBn7bsQmo6aYuDg2HJYShtnrNuVb1x7yE5NuL4RHXI9Us9+x\nmoFXXrDmxZ0+dWZpiW4i+al9mhkbD0v66+46M5PnRPgLSmVmZ6PEWYGy4xQear7U\nw3sG1jffgTdb/3uaFRkwjVjujgpM0VjE9ZFH8bv8HVsxJlQgZc4t4HH8xWzFV63Z\nj7XxbrvSmuI2UUXf8WecW6tkk+Mgln8=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"ycs2oxobUWJh9svLuV4xWAcDQ78d1K/d4rPwXmLvIlUC","Address":"37.152.11.232:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"QJDaS9usPbBp8ZTuh5tkN4wgtPtFBXNA73ghVJtk/9wC","Address":"42.116.78.172:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUM3wqOT1dARF8mi8u/xDTO/rIgPQwDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAlZOMQwwCgYDVQQIDANETkExEDAOBgNVBAcMB0RhIE5h\nbmcxEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MDQyMDI1WhcNMjMxMTE2MDQyMDI1WjCBhzELMAkGA1UEBhMCVk4xDDAK\nBgNVBAgMA0ROQTEQMA4GA1UEBwwHRGEgTmFuZzESMBAGA1UECgwJeHhuZXR3b3Jr\nMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBAM1WdXqRqrW8anTVRlbqPEMGe99wrEmNINLd5a+MHc6H6hgZyvMfYgdj\nwdVsBUenCISUIvzIS9h7/obc9IUewIbfU4Pmg2gdtABWKRHjQgrBMYUiNs+KFS7O\n6gkneM6RtqlNkhVbwKSqX0pTYfV6feZCF7ajMfViUuxRAebYCd5eYkuTcWsCEqPL\nFmEzQrs3C0m8mgWuWP8CQ1bs8XciCcpTAURpv+S5STbvbFpLvH8oMHs+jqcCdVMs\npnYL2VMHT2Ncp2LaIhDkasp0CLhdQUjqRl3mMTR72bqgf4CjfjKRoCl37S9ED9no\nnvuihniqv4Nj0tJOkajvpzqTZjfTVQvoI9Q7jfC4efR9YG2SH6s3gxk0u3r4maSs\n9K+dkTWH/D9E8FxyhbtYtEmf8ozz/aabtMsnC5ExB1v4h/ZsmF1oUl4nWn4nu0fL\nEBRVjUiph0SOwMEYrBIMgSpVZZPbUKew7uLzy8sxCEO0ETvAbDthntn37JSbQhbx\nq+bCvOKVG76rkBKjBXBmJs/g7HQJERYzoKQCs+RKhs4QRDyIpmKQrjOCmS86wumM\noZiPuumoVzlJlvzeDsv20OwHAn8dvh3f/1d3Qtf8BIPxVufyh8pR+GB9QBIok+r/\nm7K+1m0sTBDUHSYvusbUZA4aYYUAKvEoZ6meyPTElSPRr6d2jnq7AgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAGjnbECr\n2XeBwoimCdc+1crVT+Djyu3cNwjlE/37S2L6zcpYVreaVHqrjjJ2OHGVvoL1NN3u\nWqWKDdDNzAD5DbLHg06e+1BTVxAs3HNyjPTuoSqPv3a6B9VcPVEcTNwn+fXfFjJG\nBm9jdIuFvphZja7fBWaM0tdxDks4TrRrPSFKIDUtEFE+EVrt0ND541hKFznMTx+Z\n2H3BbRLTRVQkgsRoy+Epknq78j4rJqM+GAyB2xpgHTg3YifjXHSv2rhMdEy4DOju\n8cT+x7X9UsMOfL4OPxOG9bV/Y1tFisCT1l8d3j6WFX4ElS478PrCAATASyqMSpOo\nZTJqU7iQPNe2oXinru+Hd+uQn7fEZzzBT+Fz0Cf3UUen94I4owDGeeaW/rfagnt7\n4HHw+ZpGsUk2BCl2czgCQre5uqpG9nNMWruEHjeQHDgpkrRka2/G5plMpeZ1NvkS\nkyN9LCy3OxbMTiAqjFb2ZhJS3NmRVg4inv4uBNnS+mswASQXj4u0ALlMkCVWzmbu\nBcQCPMvWwiu9HApaO28jSM0kVhdJDsrY1vMuwovULJNyXI9z2BPGkhc0J2vG77OM\nqw2i1MhvktkwoeSpCpOx2pgh6nQb8dVnfbJdzy1l2YscEQzmJC/x3T9ImkjEAKN3\nDpNLxxbaSAjNe96OhauCmbmJpa2kL9X0/yom\n-----END CERTIFICATE-----\n","Status":0},{"Id":"zboT3RqwunlrbpMLv9d/GFLB+WRa68dSnA5Rkh1qMVYC","Address":"95.161.47.26:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"aAMco5Oa86trfFIrI3iJhkCIKkrhDJKU4StM8XFXXkQC","Address":"gruntgirl.dyndns-ip.com:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUQyiOCa+1qZIqQ9ofrcQnrxcL2MkwDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAkNBMQwwCgYDVQQIDANPbnQxEDAOBgNVBAcMB1Rvcm9u\ndG8xEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MTMwMzM0WhcNMjMxMTE2MTMwMzM0WjCBhzELMAkGA1UEBhMCQ0ExDDAK\nBgNVBAgMA09udDEQMA4GA1UEBwwHVG9yb250bzESMBAGA1UECgwJeHhuZXR3b3Jr\nMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBAOQ9BHVIwv1f0R8UnMqf7sRSny1vah61pFT7X+ufYHkulqDWhlm/eeR5\nKLY+Wd3ZfSQe/iYkY17V32Rz5pWtLeQOXn8oeoVm6isMYJlOE3I53qgGg/ahIaJr\nI46mmkhmUNYL/HWfeXf67EE2WTvHr1NjiHOr44kAOKR35JZPaEl3vEPTBKikyCW4\n3KGpnJ4nPHiWXdI3NKNd47YOR1CaLJfWQQyiO9b56C1TsLoS9AcsxfA5dcO6srQt\nKPU9VGU72QUOv+41A1/WmsrRdv3K6MogEy/Z64gx9N2Xq05H5HaylleWBS7hHJAp\nxrPFOKemEMWVXg3197KYwoa9c752vtCcWWZYIwFAWho6p0Q5POKJ/aNtTGn1CY+d\n3MlAMuCr1TKYv240MVyF37Pnuxh61Bu+qPUBRijY1au9h0uRx3oeso5C/48F97KO\nC3xcUZtkRtm/Cx0XB3VTcY197uQqHmqsYpLj7NmSax/wZHlS1oB0G+O6v0h+6KgO\nodeoII59FZpCDPab7I+Dyf/iyy3AG1Qf7vBVZK2IzvJGK0DW9cpu3eI/eVv8zrdV\n2NKNJMN/B1NHHDbuVSMz8nWekBByeMxuvIYKSl2QqKi10I6in1tuPQK9ghCR4cfR\ng0VNaF5EWCckwufORgnL0KOGg2mfPbUf1710phmxfnfKSltXZmAvAgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAAZTEMNZ\nrc3TW5cv+HkggZY+TNYj2+xRgGUkxXpetBeb0VS/ZQG8BJjiHclTBkGNG30oD9iC\n39eUBgnQc5wGKZQR4LkioanWiuLNznBfzudWq6QHEfl7EMSOuIlXDvCSC3ZP0TRy\n/BeMStQOpL8+VIxf001ZJ3KeyU9Jk/VcCrVg9+tgUiX5wGS4V1ZyGljvft2qPIRA\ne5MpAAI5TY2GXJBTaK3Tu2VaV3HT+7vk3tVOQw4AMdEXfBbWyNW1aQq0J7uHZBRJ\nZfO6aNnhC6sB+ggSkdJbC9HqQmAZGgVj/t7FlDVlA+FlsAoHkD7BWUfIC1v7cUk9\nS+1/NHDCVu9m88EZAOMzdDrGOqeRI4NOGjuO1LK4fKKYcsbfr3R6aNvbYNMLfGOQ\n3bUS7fCAQXiTCi1Oe++4i36c6lDti7qz23fdxP3I2wP8zmqH6weh0meTryLufg0a\no4+HV0MQjlm/WC8cZ07bTT4Bn4bKWqQgkuviPP7YThvhBx0cdPI7+GqlF1if2j/8\nZ5G8cGZudhH7MGOrr8sTbXyeqRzgtw81saZHwLk5MPzrTTGdsY5u8VzTT3Hr+R/+\nLbxekSJck5EPPVjSXDHzBNxCgAcL6lKRjIfFbGUryu2JEJMc2tZjtNnsM0TnQFLA\nqK2oZSl/NYIfPpIPVM5LoLRQSR78tSR14Pa/\n-----END CERTIFICATE-----\n","Status":0},{"Id":"oaBFFGFBxkmt/4mz0Q6xaJ5Ysa6qNcXK72F9ZES/Dq8C","Address":"xxcmix.servebeer.com:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"LCvG+R/XrwlqxkAbQUQHn7TYeVXQfY91hNe/c3k1znUC","Address":"80.64.211.97:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuTCCA6GgAwIBAgIUUT3RAqFEG6YQy7jUEIz6Rs5M3/4wDQYJKoZIhvcNAQEL\nBQAwgYgxCzAJBgNVBAYTAk1UMQowCAYDVQQIDAEgMQswCQYDVQQHDAJNVDESMBAG\nA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0\nd29yazEnMCUGCSqGSIb3DQEJARYYc3Rha2luZ0BzaW1wbHktdmMuY29tLm10MB4X\nDTIxMTExNjEyMTgwNFoXDTIzMTExNjEyMTgwNFowgYgxCzAJBgNVBAYTAk1UMQow\nCAYDVQQIDAEgMQswCQYDVQQHDAJNVDESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYD\nVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEnMCUGCSqGSIb3DQEJARYY\nc3Rha2luZ0BzaW1wbHktdmMuY29tLm10MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A\nMIICCgKCAgEArNm4PgnySD3oWWVNGi7uthxlLEjHubYx+JKMhd5eQLUlgBvLgGAn\nrUHA2HDbQgVwceW/Xjb/8fm4pK6xBI5KACIZzdhk6dk/Z/wFCHDFb46sV8VxCn4v\nHGkTfrLnPCWqaI2CsFQcTcog7TevIbTXA91193u+ULt6lcaL8iB3LAME7Bb0f73z\nob4x6v92gMVaclncQdCSfSZ/dTEEOfmQ1AuLezlr/ZjUJ9lOLfx/eSPdF2jkGQvz\nzIYVsiDGvCrgJGQHhoBkocPMvKUW/0606ovOKNN87c7N2uPiAgrxMo8d5b7b995i\nSY4W7JOujMzmUGAqotFiYh46/obSUp8iAo4qtzXRkGNqxoQWf4ie2QmIbmoduLAv\nC1s9zeZGMfBuPQbWyV7ANFdATmTV1r5xeJTY8AecM33bESVSr5WIRiKfO65s4IPu\nFNDmNm94Jr79AMU6Wq4mq4ncpyiW3UTt1zM9R00CTta+Epter5Z9M6mv9eidPowA\nbOiRBcn44WDdQewZwm8jFGohXbTjoaLuZ3SxnjDQoCHay7Uzfx96ft+48fjivIAO\ndnfHQed0M921UZVp1Rh8u+ogB5MTYdxarUCYbThZPwmtwDXetKmawsR59cylwOcH\nCodAxEvXFFVj88bvsqFKgDjbPzJnDXjvEd2pk+HMPkCZmvjJiswDWR8CAwEAAaMZ\nMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkqhkiG9w0BAQsFAAOCAgEAlhVg\nzrAZmcUwXz8GX9KcTuUSr2Wk0VzEhvlC9Pw3v6dTdlEkJChvR8JyKGzsNY5jp29o\nHCzWJLU1csFV82iwHGdkCi51mo3R64SfVEvJxZj4bul5lHuBNdQ1j4BRFhNXvkYD\n+nL6zKQt7FeubnnAmPupwmUY/hRHdmJ27he71TIVjuVTIFvzNa/MNJJ7BjM+VhYn\n+xmnyQ1HrbNoS5sGlRfige0+DchdYskOeM4PqgZPOH9R9J0r0pAknnPe+4hN43YH\nYBWcSUpvKPWOk2HXIB5PR8dkqAoDBY3EwSAQ0xK12Y8/hPYTys2qD+OdpAlksay5\nXxnvKRjsyoJ8QcKNw2qnvptte/cSjB1ZGRvx7i7vZjs24Q8mz6qngev5ULVgLUMZ\nkb3hgADre+vlL3o5z3kWqzLh5AgKJdBuu1ACsjSJMUcwY0RCqJPaSgc90CX4hgea\nwUxAZGJKs+ZU5CDJ84OdT9TMceAxTIf8ChwDWgklJ7YdMizDtY0w8nlMqorzLo7R\ntsHyaiMFy7jLKnLbh3rmWAq75CA/ckhr1ZEaEIW2vw0WG6F5zfoPtUbKg37hxvUM\noPenQ1LxwbXYtQosXbU9Dvf8Qqm9dUiins2wGi3dBRnu5T5bHXyXOH+FsPxk9T0Q\nbzsr0UqLMbngjXwlrZbhWnTz302SDrp81OiF03A=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"oKNm8Uo2X9a0uoVdx9HzIUx2CKCdIrbE3xxrW9w6rsgC","Address":"87.103.252.14:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFsTCCA5mgAwIBAgIUIy09KoJ27s+7Px2q87bFshH/+yYwDQYJKoZIhvcNAQEL\nBQAwgYQxCzAJBgNVBAYTAlJVMQwwCgYDVQQIDANOU0sxDDAKBgNVBAcMA05TSzES\nMBAGA1UECgwJeHhuZXR3b3JrMQ8wDQYDVQQLDAZuZXh4dXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjEx\nMTE2MDIzMDA3WhcNMjMxMTE2MDIzMDA3WjCBhDELMAkGA1UEBhMCUlUxDDAKBgNV\nBAgMA05TSzEMMAoGA1UEBwwDTlNLMRIwEAYDVQQKDAl4eG5ldHdvcmsxDzANBgNV\nBAsMBm5leHh1czETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQ\nYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nAKXKviBBcDlcRGDzZBOCHvbd4izcWxoZG9/2qJ/ZitSe47M6RSToGWGROwfsiHqr\nnk30xNp/gjP1Jkq3a+vsFH3hV1O4W5BJHV62gUKn46wsQTZhXqzHi1xzXeZ8dH4K\n9PQjm3neUv1I65LLDCCN+zC9Av8LEFDIWut8BfQCyEVOQgkSLim2ency+ffkxbvg\ntpY4fwNt7Ezhhf+Z2CIAY/v3xt37ZNnEj8rzNqd2ZpxO0zTioC/u2kttLWomc6YF\nKudVFmvD2uSdSnNVVvj+FwXh4WmWgML8j9D682v47cuUXTSt9JKK5ssVc4vj9R5O\n8MLRtWlX898NYalN0SwFJr+JNMVujm2rf6WR1w+LFzv7ot941KCwQjBs8klXks/s\nCq8JYgtDyNHJAaQ/6Jw0n45lPPwGM3tUe2bmTlN9yhMkVdnEwIl2GODEljUNw4h9\nZUyOtngI0l/dk2ZQlmdP9Snc/S/k86mOiWWfHJLAXChPGyeDMwtcZLDEt0NvweHJ\nWRkkjQbmGcuOzKLX/ickkbVYcPJu+jR+u4gFXyIg4Uysqa/rbFPkAFv6zsMBUU51\nb8zZox1m6yr/XD9tbgYkF64EFwir7txSCsfQIxmIzRpEjDkAehDPaIGpKJqMtm2t\n3qe0ESnsBlHkj0M2959HZgo17n+ca+WxL2h21MMAhM7TAgMBAAGjGTAXMBUGA1Ud\nEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAAjtk+1bzk0nJKkS\n5fd2z5lNlhPp6IIcQm4CG779iZkkiaCxBFOy6SHb3I70p77hZMt59LbKWcuq1v2R\nD+ZRTZuBJIoFV75nutRfl/pV0XXHq4FcbluZPAYQg4mFFYH3TT/7jomjf1PKlv8E\nRUZ2uJQMzqN9qBtL3DHoejzjRypUg137HFKburVQDITLWdw/UEOMrulP1P2dvvjh\nG0ERQGVbJb8rcSWiew4s8IdywO4UL670J6nzcOeoJZN2jRPm4oRlvFtRhYqOuZAZ\nSPFC4pDkkRATDIf3xlG86IZkgHI6WZ5L+DH20AlQbkMikEtK3zj2lweFIiFPyHFB\nXlDNJhnCl0Fqur32NLRO8a6os+nn4mBLG4Siv+2kMMBEGJff3owdZf7rXSmmLATO\nbxxcHzkikeRceb4kZCifYYXrfGymX0sTf1a3Z+645Vlk4loLQGotbk307XCgsOSS\nwo3kE19RP4hJh/OZGHVFAhTT8EYHmGQV82M5A/6+bC8kI0FR0LDSbOIYZCo0ZGFU\n09SFAysU7l4j/IeIM0KWMXTU38cdhBr5DszWLHAzppylerEofx5skmWpHd293G+K\n7/Nd4HImIwfTv+HKnzUBKtIMh0TCaRhQkwkKpeBguOtkeBMq/MGCCgC75nAhLl0/\n46rnEDbviBeMcB75jqmrd6isQDXN\n-----END CERTIFICATE-----\n","Status":0},{"Id":"ZqwqpHZLn6rmnQz8fkzZGKP0+rXA9pHZNiAeyaPcep8C","Address":"185.152.3.247:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUVs9lQSVYEstmBUyu6KqD7sfMdWIwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTUyMzQ3MDZaFw0yMzExMTUyMzQ3MDZaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDGtiePS2RzWAoAKwYrem2wVq+UTi5QvHHWRQ7/PTpkqxnj+nVA\n72MNNqHPqHkURyzbv7wvbU1T7zW1lXsKhFQtOe3ef77ZCweLAIRnSOp0BOZf/cRv\nOCPDiQ3wYMzwwn91oc56xiJv7xW8Yzspy+tqzF3Buj73+k7juUAjvC70BV4a9MHa\nOpXEHZcSMXkM5SbxoMAf/BgROvY6WULAQGPRMsIxej+P5WkarcH5hgJ51oXhO/xK\nHxnd8bkx4nQkOc76c9hXKGr1imByN62AgxoZL5WXisdS4z6/MoU+JODZUDTBizU5\noZ709J4bJAMp9PQTSDKi82OLHapEAbGzBLsul0Hngw8M9mg23BODhKTQJ0kHRAWe\nFOxnb0ZVgzmi6+HRHCp+NiiPtk7+cw4sTuYj/gR86kpTbBmM3av+AdIn8NvPE0PO\nWR1QV44bp8yIDidsrDGgX4NCeLipUSjYNsIoPDJTxsHje4IdPJK6pZb6ixvHAS3H\nrn08pqpgCLbU+BIKr+8o+IufZyFKQHkkWfCuUYh6ScJGS8zPAyf4RsAWPf9jnNCJ\nfa6h5wbJ2gsyeJZVI79JIkhJK6eJbT/3sfZho3IIuP/3FSw38kLadrjRK4QhOPDe\nK9J4oCHLcNmFs4GZiSO4tbP6PeBctqT2XPFu1feky0JxIJO0detva15lCwIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCu\nlDd1XEW+PIyjL7PMVDlzT5/CfvBJ7Mu74DKRCn2ofOVvAeN6yViYbErAiJ9drzdX\nu+uJK4sWEn1CiT1vVukzwjOSSrMFZykJmazarPpSr3g1GqsOcjC19Xq+UxGTR3E7\njEZ3QCA0FVeU5Nq9c5AhvO4JBocaZPAMm265OWitv61aEnLTQ36MwnbyRX8bhGaZ\npIk6vdA6i++XKsmLBHVzZjEgVS2WLCOL9/bWpNAEVKJo4Ec8+WdaojqZW6exsUF8\nJtGogvikTunV6UG4NoJw+sI1gO3tJvLG5sQ1TjVL90FeXtHY2O5KoSYIjEu5TugD\nD6Y/MO5Sf4gl6WbMv1xY0mYAmovmVW6OAVQamgKGv0kIu2X9zSDaYPIkfJPiNaJc\nUv2SPYEh8mGQFBW/ttb6cHhcL784RihKRqP+JNgvj6id/+4htRtXPYvYUx6+bdtQ\n4f+at9EZ5pnfsqnEt6zJDq4gY9vao7ahznhtOErPYhHiO3QHXW4+Jly6iJW+9rvr\nmBm3+ZzPE70DOnCpjtiEKstLPytlpc065UK4jA1uNu0AhtYuRzM9mVvAtda0o+Da\n3wpKLwwxXFyarnEMKvjnUvxAMejzaxV/iVwTBaA2OhI1TxPK29n4eAa/gw7D29D9\nc5Zlwi5V8MDP0vl0TTU2rdYDZpY8VxzyrDfbabgw2Q==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"eE+oHiLKUD2sVIpRTC0raY0YfFzvVssewcgRf0ZxKtMC","Address":"31.202.122.152:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtTCCA52gAwIBAgIUGQJ+GkswlJOscg0kF1m5YeVBLkEwDQYJKoZIhvcNAQEL\nBQAwgYYxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJLSDEQMA4GA1UEBwwHS2hhcmtp\ndjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwK\neHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAeFw0y\nMTExMTYwMzQ5MTFaFw0yMzExMTYwMzQ5MTFaMIGGMQswCQYDVQQGEwJVQTELMAkG\nA1UECAwCS0gxEDAOBgNVBAcMB0toYXJraXYxEjAQBgNVBAoMCXh4bmV0d29yazEO\nMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0B\nCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\nAoICAQC5W+YFUaZWAit4vqtYydeYGzA0wIZ5Z4jHPoL0PBOM5yFG2e8NcL1O70L7\nSKPubKNkM1JrKkWv3XaZ9YqfKpbJeGY0a+ekL8GBfQ2w3ykXj5TXHZguVaOi5bE3\nj6C6xpKSxcgsafnQiUa+5HzckMTuBW+tEOptDHJ4keVzdOyb9CAqI+DjY2f3BNjI\nONxW2eEp0zqfeUw+C1AE7Zkxog8wRKBex8GYF+iBS0jtom/rfhuao7Fj3Pm6PCkt\nPGmAxOlARzcVMIpUQkCMkEGBYSfLLPpK1OVFjsP+lPimt5/1+Tx6IiSdaY7mX689\nEM3nK4u+T9/sncQYxWu5qyvKpW3bmdygCW1yfd4NWoarQ7RwR3TI13ItwlqSUNB2\nvyhiT1C+LwSOYVAU3bLTpo/p6wg6DYA4dWzugjeEwDuVljN4nhroDwmt67FEj4Zk\nN6J5NH7Vvsuu3qisKPio+UlOud8y1l8rmUX9Qk0OQr/U82BK0ZNI5ZMhZBIGnrZR\n/wwwfZjh+VRLRLQKGvqOb0VoHpBMrw7DacfWDozLwILZGmisWwrgSgKmbkRiYR6X\nbCNtqjOLnoFV+aT7Lmu+8rAGhhSFlUxRZJFyTgD0zKf+0HRbdOrvkL+PP4crzK3j\n7/S9/G2/s5FbQRdsG7YuQKui/3ceSshdnLD1SihOjr/oZBM1rwIDAQABoxkwFzAV\nBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQAaGjTcfsVX\nU03G1Ulr+bDZPyMaV25ROONlfZnVqrrx6oz4aXURh4KNnzf2V9sV2WzdcxCwZqyB\ntKhSkW69QJEToSRfTvLx+zV+dGPVgthsU7Db3TF7QJXeoq+pBzF29BedtOTtXujr\n1zTgXrkmCRh03NsnVJ75v2rSVT6VgAi4DsHW5PgWFiXj8mUA3zmFVfW3wQSsBlan\n2nEsAcaIYp8B/lzOctwQAmY+vGP5Bjavf3axCJ2/OQbUFbqmxrPbZG4umcV6LhwF\nQSqLsG+3WmKx2ESE2aFLAIQHmHREUqCT9JMZ6EC2YdQIYKJuqln7at0DWkjyFht7\nFrGQUIxG831uu2Fz8h0amh9RbeCAOmlIOozhqlCvDzYlglw6Ps0YOXCWNqEs7HyP\nZzraPs0TsG37G/7y0EF4TLAYCZaR/liWPtH7uSEAM/iCbLOyY0vi6kYP/U2/xrLt\nLEjvgZntqrxA9Ofzp2o5NxBt/4CSgVKZjUBsG3FT0pZRNh3Gs3Zadl3n+JK+i5ds\nW0rJQeSyhlp87ziTi6JzsNe86sPhDimQqKmiqL4GPYoKekayvQuBhie0dtbPjtWS\nFE8uSiwEk+gzTkGghDztxETMoBlAVq6OYBx0mtKB4JmJ2RJPyd7CqB1bc66FUHkW\nDePx00oSa97/FI+xAIw5xK7yv9Z/ow1eSA==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"CbbUZQAwfg7uSVebxdMLS76YQatTG9YZXp0OjmOpT8MC","Address":"159.224.141.40:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIF1DCCA7ygAwIBAgIUcqCa1l2ghcxh+RJw03SOsN6IuyAwDQYJKoZIhvcNAQEL\nBQAwgZIxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLaWV2MQ0wCwYDVQQHDARLaWV2\nMRIwEAYDVQQKDAl3ZWIzNGV2ZXIxDjAMBgNVBAsMBW5vZGVzMRowGAYDVQQDDBF3\nZWIzNGV2ZXIubmV0d29yazElMCMGCSqGSIb3DQEJARYWbmlraXRseXNlbmtvQGdt\nYWlsLmNvbTAeFw0yMTExMTYwOTMyNTlaFw0yMzExMTYwOTMyNTlaMIGSMQswCQYD\nVQQGEwJVQTENMAsGA1UECAwES2lldjENMAsGA1UEBwwES2lldjESMBAGA1UECgwJ\nd2ViMzRldmVyMQ4wDAYDVQQLDAVub2RlczEaMBgGA1UEAwwRd2ViMzRldmVyLm5l\ndHdvcmsxJTAjBgkqhkiG9w0BCQEWFm5pa2l0bHlzZW5rb0BnbWFpbC5jb20wggIi\nMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC5G1VX92eL1IIo5MVOmHxuQ+Gx\nTRUtIzc0Rt/wYVBKxoYi8eVfU52PwyVwpeyL67Nk1Gk7enrJEVb47zsC3R18Ktg0\nfErvYUL1zm5j9NwoQOgPd1ipp2o5FoldRCLmT+pZkt3GEEz4Pg2MzVi8FlXiqAJw\n2dRIeU7OXMxuB/AER8kYOyq9eFexB+T5x/j31JmhU2dKWLucH7//Sr46UEFjqg4j\nQ0abSJoy2EssRkzcfyo4qhM9AcgF6T07RTXaRfZah2uw5Qg/GOETjyFVpYxSyDOq\nSn42wtbJK7pTrI0HRgtAn2NK/z1Wif8WZk9bcfGrNKbQ3vMbJpu683NJ1JijwvoS\nV0ph8vWHA0g7zMckeKbrO2glseGIY/nsew/xoT5sGqEEwgLHD7COiNQ9TjIlWQ+h\nM0sXySa/uHSF76pmTE2cLfQ9uMiARiePsgLS8w+rl7fLaCgX1vg4LQVBcMRw9ouf\nDZ7jroV85r+xT4kfCKPCRwjNfzOoXt9m2kZz4aPz8rx9THSjAf1I32rwl8JWbfMv\nnKPwER5cy6K0DGPaA2HF818tUj6lkefa2PdSq16rn7nq7l/NtCHaDR2x406ocosP\nNkaHOdjLP/Cu73T44usdg0vTIysj40NBY5frFz4N9fgJ5cVdL5NcEk7TS8FqJ4K3\nNUDFzLHJE30wjLCl9wIDAQABoyAwHjAcBgNVHREEFTATghF3ZWIzNGV2ZXIubmV0\nd29yazANBgkqhkiG9w0BAQsFAAOCAgEAs/guP8qvQpnsE7WsfgY9nzYPe6KMVzuU\nPTjNFhKt6t72stVFsAvvWaPJ+mEl/3IbR9yd+ql+fwjK3zsDozI+Aiahit/JRG1/\nQGj2QqIkpG8ImXsh5JcrSqC2Y7PrUqWAYNfQvtjNcHjm8/yTWiCyE4oa8Q8hU3gG\n4/ujITlAfA2hVhOk2ij+IxKz9KCBDyAG6SH9F/nle332pbAikDIyuQIs2H/ocEzm\nT/qcKlKxBUdctClcTmsWV5XsF3b+xUb/TdZ17Zkw5iG6g6ok6QSfe73gPPh70jsb\nn/P0h2g8rctDBaxUG8sWwATYhPLDgOUb3NrfqVXbcmSB7VYekdNFUMebZWmEcwiG\nXPOH/SAB5lbXiqye4PjZfnKbTDf7JtWAuJQGLt3G0RrgZ9qp3TGtM7m7JQT9iLFd\nJgm2WoLNpVe+WW5TNa5RXoNFVU5G76c9/2+wPRdFBcT7qpeeSDty0DdVbGwwLZ9A\nCbM1bsoPj/QQJZJbUM22H5ra6bDFK32RBLIs7fzfZcI0bMnxH/XgmsDT/AN/5u02\n4NebFxSFhX0kZ/CZWxsb3ZrbNnc5jI1PLYPFhqk8eOdfTHx+u4izCbXBuFfpSewe\nr2RQk+0AHgt2MmxxCB9Zk4hwgtigOW8ECnO4ZuroG+g235ahZSkzSLtSukBVTd05\nzzAGZ0bbnLc=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"fzUe8u7r6HrXPXGmnXkK6bBnywa06t6EXReudHEckssC","Address":"109.248.175.158:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIF0TCCA7mgAwIBAgIUHk0OTVtv84KRqfSseQzuVmj06QswDQYJKoZIhvcNAQEL\nBQAwgZQxCzAJBgNVBAYTAlJVMREwDwYDVQQIDAhCdXJ5YXRpYTERMA8GA1UEBwwI\nVWxhbi1VZGUxEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzAR\nBgNVBAMMCnh4Lm5ldHdvcmsxJjAkBgkqhkiG9w0BCQEWF2xpbmFwb2tlcjMwMTJA\nZ21haWwuY29tMB4XDTIxMTExNjA5MzkyMloXDTIzMTExNjA5MzkyMlowgZQxCzAJ\nBgNVBAYTAlJVMREwDwYDVQQIDAhCdXJ5YXRpYTERMA8GA1UEBwwIVWxhbi1VZGUx\nEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxJjAkBgkqhkiG9w0BCQEWF2xpbmFwb2tlcjMwMTJAZ21haWwuY29t\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsU+azRZBDJ8aToOZxe5l\nU+UzTLEXLC91Wj6dMHaRiHVehFL4cHUjHqZKM7mUZiTV+B1nnBLdq3kb0W86jHcd\nn4YpgpDLno6M5bY0zxEb3JS43w8r1FBiFANEK35Cb5EHh1sb6+os7Z6ARnf9SREF\nlV+B8QrdzxhpRHqqO8XmucQlySO/uzcqO1WmlJSzib8W6aOBD/z6KuXDXilwUmcN\nsIic87jwyZAlJV+n5ltTQzxm+aDjaFsJIoxEkYNeSw6e47W6onfgfSsYqvPcGW4l\ntaUNR7wgDJLDN8qs8Jm7bPDPN0qLg53AXQeyobRlI5sWZjutWYIZ2gnfCH2kp0Nh\nEX7me9a3hjShp3+Qdtg55wprHzgAKqgz3b5AW2l66wgxxV+I+hSnr6AzcPm2yWJp\nGMNSzpKHyklCYxq3AX2cbxZBfrKvEjoSvY7dO7ITXxbtPUKHhHCORdfuou5DHE+/\nCnGPKMnzLzB3w9DRVuNWC+bWYf/SfVG6qrePevV1az5GsEfWAUbA8MGPnG5cjB/m\nB3HF+3WoxtXOpmIiqLPbZLN/+AIZPPUnXquqfD3Dw1TKQyzAVWUU8QN+2MyrpO79\nsutCv1DT/l3hoakYari7sK1wy8zYRfg1kiAgi/RsOzc9jdhHAgI8JtuQuco33keX\nLN/7puHjQLLkXdloh9K3qMkCAwEAAaMZMBcwFQYDVR0RBA4wDIIKeHgubmV0d29y\nazANBgkqhkiG9w0BAQsFAAOCAgEACI/sjat4wSBxoF1qWkL3JRAZ9+n3OmhiwOnv\nbfInkEPSQlO5hFI1wzgmIBd+15jc9bfsnHgl9RHRhND4JzQGXt85UJz4KviHY2Xj\n/WsN0zMGAAmha5tzL3oPdMLTiKhyuzNu7GZp+rHjZGYH/cgwcEcN35T6CggwyVXM\nvO35IoAy4nki+akpGxlf0oeDQBQfebLebsh9vnFpZCBjrrFmAMXgkuJVDB3ST2q0\nao7Ug4c3EiO5LxRQd1sv/08QSYUgWALK6kItYgotQefq+JBh7nbrwrjSrMSBOhrx\nh6662ZCLeoKXdT20/M5AGJLIoTjoicsX8OLBLkrUXr3So8lu+pVzdwKcce1Xjy0F\n2bpPFwZfBvKzU3yGYs94xWMidhJ2T/0rFqIlntsrbu2vnzjEH4LHWC/u04oPfxab\ndBayKjAM2nfggCPoL9O/Ptvk+At+wtHa89J4yS0875yL5LHLJ4nuXb7kiQd4r/2x\ncB5fQJCWot8LdrdJM1X26YNLMtRetHMieRfDBPkIY+ugXvvUrFV3MuuPwMZO5Tow\nUO3YEjx10P460bWavuuX/MVnNBkhjjDXwqa9elW11zlY3Wf1gxZFITEJjkBQyoWD\naLXtXW22xPW/yGlOUP4L2qGfLZwUM0xDP6TBhhQ5TyRwkzrqqE1V4xO2wQdiSB9M\nhDt3jHk=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"5ppZM9fEvGNx2jDhF2ea8wTQYF7r3rfXWjwHiJ9yNGMC","Address":"85.236.188.222:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUcd58G5WC8+FLHIZM7EI6XcMM/CwwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwODU4MzhaFw0yMzExMTYwODU4MzhaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDXA3BdDjvi0eGbKd9MqfiZksLDy564bA7veHhKJ+bgzES0PJR8\n2hExvn4lCfdSsqIb9g4AlhEBam524QGkyxTs9QJVwuzJ77vNl6xkjX7g84DJHc4g\nKtLLrBPmtuXHz9FjchDDzmqOH2ERgQdJJMV1J6KxyVzNi6WfTjTinsccolAPFwce\ncmf4zx7Sd29qlPbzXdBRCDREPdiEdCur02i5RWIG5UEx445c7/u5SlBJKZ8UL2di\nq2TTowsCjKcMfchxGgrEEBL4efH6MElPzVGwo3XOkKKIeSiuhMvsOeb1wOQNS+ry\nlpK58HiEJiEWf7fqPWEuccqzf/KDWb53TcR0CJPzQ+IXKzbCNSdyc/RcCh3OeQcm\n2KFOOBqSjZJQ6qd6MvvBoySFBH/6ZdTYMxsaGRvqC8jB5WsGZRlEYeTpRu/Yc3PC\n2R6BseBuoBnQ8bmMaoyA8ujJjPab/Y/BJHCmR71pWClOCmtzxm6sdlmLtr+htCpM\nPqxuJ3W/W0rlNuj+gJRSHEP7hcC+6zMQBStxzhlSooh1IGvH0ehabQBmoaurmGxf\nhEF9sEbdKWmK3A0y8tEjoLPQf1Q9MCSdrA2WxJ6EN1vl+DYoqv+uOkWkWsZoguub\nZhtuTu82n1iWH2MbSuFb3wfMjG5gLQjkT38EVytnxj9qvnNTmRqcPRrXwQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCk\ncD5cPXKPsEgOW5fFL61I6Xg6WH/USzKroDqpT/Trm9deTUhQwkf3NUTBxlMIfhqb\nQNyBpN3WI02ZS5cvmg0qt7jwdOlecQ62NYRzEFgXWD616Ddp3vC/mDeEC4dVHVH8\nyh9Nm9GrrNNU5JN+j9nyWBRBeXNoAZRkGHG7WEieJnu9hV8zmJSwtKrviDZBm8j7\nuydfY+gnxfRWKBMkDEmDP5PGM+GFdHMeEpzLRfSuddjYvDcZbhOiksCSsgQ8uHwX\nKoxj527iZCIpTH55urAz5xXRj7TS36lvKD5WNsy7zXLmmcT31fQA82wVbdG4/254\neeNq8C4nFza1wnPLzbH8Xj5Rbx+58mEDnY181B0XxWkCh2J2nFXhlxQZ+fGxHrsN\nMvW5ZcaOwzOS+kNPonsCC2uQVpgDhuWzIAY2OUNvKAgbM/gTfuF1X74u9pYi2hHU\nKvhSVwo/mqLIk4qmAidNgdF9qPO6jnUeYJSB33KXICorzWkUBnggf4B69kuddA+4\nXqDWA0F6Srod3DfYiO4D58SVBTWBLOqbafNC9GKA8dDGxmEZCZU7hPnOBF2umkgD\nmfg7LF3CP0yi9wPQaziZgI9WRf2jTHOSlOHyj5ar//7VZ4E2uhvskcSdqWJGybdD\njpnwc1poANE/XZL9ZMnmbEMGUceADRacKjkF5O8IEQ==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"pYkx33Z18nGH1CWSYC6bPrqLVT2BQy36uKh9+hrrJHAC","Address":"5.132.104.50:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\nHUEe/iSog7M0xQU=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"6TRnY7k2B8oO9oVkqltYWQHxbzuo5NflpvV1xsmNZmQC","Address":"kaneman.ddns.net:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFxTCCA62gAwIBAgIUVDOY8jNu2hEHMtBsBkwGRv3TpOMwDQYJKoZIhvcNAQEL\nBQAwgY4xCzAJBgNVBAYTAlVLMRAwDgYDVQQIDAdGYWxraXJrMQ8wDQYDVQQHDAZC\nb25lc3MxEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNV\nBAMMCnh4Lm5ldHdvcmsxIzAhBgkqhkiG9w0BCQEWFGthbmVtYW4xQGhvdG1haWwu\nY29tMB4XDTIxMTExNjAwMTQ1N1oXDTIzMTExNjAwMTQ1N1owgY4xCzAJBgNVBAYT\nAlVLMRAwDgYDVQQIDAdGYWxraXJrMQ8wDQYDVQQHDAZCb25lc3MxEjAQBgNVBAoM\nCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsx\nIzAhBgkqhkiG9w0BCQEWFGthbmVtYW4xQGhvdG1haWwuY29tMIICIjANBgkqhkiG\n9w0BAQEFAAOCAg8AMIICCgKCAgEA4Q5J4/Tr9O67B/imf+AGmtjWuYOep7PcZ8wv\nZQHqca4dcC7cfNcCw7Thrt6Iw7J9s5dolBUPBZlmg51MYVtYPqs4IEPRJFvkrNYd\nbbefHfGOzDbk+awPU3n2z9AAAWgi3abhVDHmT7Y/7Do5tgxO1/w6lnTlpKqQ60C+\nyhJmb7coy6zr6OIXnKQ0uqXJOSWyM+MglP/xNVfar8wcLAFxURoW9JjqYyKcwJVY\nyyNZ0Y1trcYZpGIo1fzagmhQFlYsI1wR4oeNnoVLM4+ZMx8hKgGu8LwrOgrqipg0\nm/OxSFHtVb/tPIS+sLZw0PSj+yduyczXFwAv9IZzWU1/RDdh3RInvTYS88LzKvuX\nnBbNEQypruwNRG4gVWIsaZWSdA9WMbzl4B0TyrtmdiACidHgxXLYudqxCigFu4uZ\ncSyo1SLf8sGeIMOKkXnl/JyG3449WirjFWSZ1WfpxJn8hUjTJLuMwKWLO0+o7u+3\n/gUNUhWNRhGRMy0QYxAC7q9KjjGDG/Uj/vZDAhXqBarAsGrie534mb5jLXSd1Owm\nm9MFpNX14A5Jhm3zrF+m8yftZt7BBl83om8v2oV9Ses8NKGuAeLgFBDm3ovwgKrl\nX8xoz9Y+BTDxxEdGMIaXUDJQnvqy4CmRAbWWEDPEmTZ26upzLppKNoT+2sZUcqMI\nrb+x8ekCAwEAAaMZMBcwFQYDVR0RBA4wDIIKeHgubmV0d29yazANBgkqhkiG9w0B\nAQsFAAOCAgEAOdcvnX/R7UL3JP9zHJqn4i0yXj5cGdtLaNH3U076/MHLN/vd2zik\n3aArIEbGy3cWf789nRCH5uR24G8cxJfKGRt6PdMa2lkqBqR+BOoUUmE28cigmYUx\nOh2K6SPg2uAWWeyL7nJ6SVWxrM1GKKlJtrQsqPZ8CqmIFSWldZZw0eyeNcmg4TUn\na6U38VDdKFmFfo9rU7OQ8i4FmaKIq2tPGzKfPSHNSx55vKcSlqCcDyykZ2RtuoML\nu6Hh2e3PtkMwVs0JuYE6ZJHZrfdC+VRDFAnjqIuTpyXtdYQi1Qf3WnGZQfuLYtr1\nlaKqZgNChj/vpzMhieL6xtUbUViekHk4KznEHb8qjP99a90YYvrDBsInRWWVY1X1\ncdl8DFjYlfzvgWViJmQzt1L2gLCgyZw8rFjaz7tEhKoViMl2p9JOkCFahemqLimx\nhndMBdpq5NmNOl8gGne7yniU2qvqPqN6B/Cqi95O13p96XLSHfWMsVV9cQ5zrbQI\nskrGTAYXi1gw0Kv0TRbxKTVav+RjiuQnMChoRRb0NCvf48HE+7/6AY1Pucd7JIpn\n2d5xXE/y+82WfoAWsQC807c9LDHfPByAu9Blap2IhOxskAW/UC8Pn7bh6WMTetu4\nl7n0INSU8V6HjapnQKEuJptjzisnzhVerJBXJQtbhwOt9Em+9ipoJrk=\n-----END CERTIFICATE-----\n","Status":0},{"Id":"tf+JdHpigIGeB66OUImFFKjV8qr0LaHK8FZ1pOXdb8kC","Address":"169.1.8.19:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"fkhmqjNGEf63+FWgt/HKpu2UDaUki5bV/IEQK+LX0VcC","Address":"sigmay-labs.com:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\nn7pc\n-----END CERTIFICATE-----\n","Status":0},{"Id":"Alex/edIDyGLrZ/pE7gM/2KfUbdQsr/Cfy4FEmGsCKUC","Address":"93.151.207.39:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFsTCCA5mgAwIBAgIUCZllfadTLs3ZW8nekR8gEAno2SQwDQYJKoZIhvcNAQEL\nBQAwgYQxCzAJBgNVBAYTAklUMQswCQYDVQQIDAJNSTEOMAwGA1UEBwwFTWlsYW4x\nEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4\nLm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjEw\nODEwMDU1OTQ5WhcNMjMwODEwMDU1OTQ5WjCBhDELMAkGA1UEBhMCSVQxCzAJBgNV\nBAgMAk1JMQ4wDAYDVQQHDAVNaWxhbjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYD\nVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQ\nYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nAKUutoKit4fnSWxUVv8FzcsxKThGJJ6rEZbqfXtYGC/eMgzwiAGiEvLCKRixKOOs\nFxmgU9xZPIM/4hmvNQWf3AklFFX9jIQFyO9Vops3hiG7x+9/LqPG9AkP4UuDKuMu\nR/SGwwQ6VJSiKrYiIxn1DHNEQ383aqrA4kgZpggJoRjCM1c8JxhUaiW6/VVmdTsu\nNEGwLbqyOMTExqdFmR3dOVuahstNDu2hJIy7IEwe8Ctdk18NDk1/NIkuBjW8yzjy\nnnqySS5k+MhNHIFMeWirGTnJeyqRzJzwxaEsN+iQ1hc1iaRRps8Q9sXC3rdEj0Nj\nGojV8JSGdljgeF5T6Kb6w2MdPe6H8y0VU8Zy868jief2lyo3yvTqwM+ERQQk7ALk\nNlxNzW3pvYB7GC6wESYp9Klm009IZs5NPMUEJwSFV4bp1PpZhU04V/2wPkzQ8pIQ\nHjTqn5diBtxUUgXZinsnTYuDoTdazTvZy0DIka31ABZzW+/SO9S8fByNzfIRZkni\nnAxVNEcnatcSsG75XGWkr13mzdJgSe1CtLwlHK07GypfPOmVo6qlJRiuILFkDwiB\nhEQlXrZj0B2NqV7yczaEj1KV/2W8bWxxcvMtwpWuQotNURU7IwSB3Z2ep6so1SlU\nrgOviYS3hEl+OeD2yaFuvhc63pDZPbPVp6ryK8GDjtC/AgMBAAGjGTAXMBUGA1Ud\nEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAA09Et/+OUudSV9i\n3XFJaE2xG1MZJ2woCTyhKZS9J+b+fO4iYylSmAILP/h1R+T4cpjJESWnSmIoy6Ku\ns6rngJZIYIgEQHH4TUmFw2gS/Ik5XT/dSA4mQTT7+5f4aCMvvoBEnEGV4uQkjZQw\nDHAOdGTuWQJ4H1ATYsyy693uHJvZlw+bHcYH2Vfcw1fvTPrlHd3eA+ef+/vyCkDO\nkAWDE1r+AFzTd2aejHCE4W3TPmXEv6l14UfMiu/UDgCzw72UKiSnZwyArsmn0MSi\nKTvyHMoMITOk4yQNHjUrCryxnEp61q6yJGINeS1wUurQuvKRF8MbqxFTYPUQLwGY\nEObKqW3Np9ueqHs9Wx+dQFrJDOSJHSok9iylw3ccSVn4KBr901jUaMFNNBkeK94F\nDGenPTBdeja+8glMB/WEUX2Lf17QgmItPkuBbY/erYm8/Szu4H3s4ZR5YkmUOipZ\nwHlUCay3MCbJGWUgMPgU/xHYWnC/iAG6CCF6/papc4rvl6+XuDKuyihSfAIlaL1m\nsCPObcuBM5bI8/GGDcyFsGgevX9FruaW/EJ+J7db03b/C+IVka5HWwJEPO4Ut35T\nKtiknoskyCZHyE5Rd1myjDcIghI4a4edxIMOgyMBRGPuo1pwrssK2vfbHcqsFC7t\nyDac38hL6FBfGIPtqkQhMV2ErDgz\n-----END CERTIFICATE-----\n","Status":0},{"Id":"QadfVl9NqhPuedaac7pEpa/CQ3hB1BlSnCbAL8NHQ1EC","Address":"37.57.87.184:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFuzCCA6OgAwIBAgIUBJe26eEMbX7nMRA981OpxApZa3MwDQYJKoZIhvcNAQEL\nBQAwgYkxCzAJBgNVBAYTAktZMQowCAYDVQQIDAEgMRQwEgYDVQQHDAtHZW9yZ2Ug\nVG93bjESMBAGA1UECgwJeHhuZXR3b3JrMQ4wDAYDVQQLDAVub2RlczETMBEGA1UE\nAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5AeHgubmV0d29yazAe\nFw0yMTExMTYwMjQxMThaFw0yMzExMTYwMjQxMThaMIGJMQswCQYDVQQGEwJLWTEK\nMAgGA1UECAwBIDEUMBIGA1UEBwwLR2VvcmdlIFRvd24xEjAQBgNVBAoMCXh4bmV0\nd29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMMCnh4Lm5ldHdvcmsxHzAdBgkq\nhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4IC\nDwAwggIKAoICAQDGXUdsmwWKGXaHMEpaPD4udFT6x091s7jzse1LAVvn0o7aJVid\nKGYZorRyh0ILmVVa7Ty8xoJcV2zLZ1HcFCltTvatEoLqK5/2Ba4HMCnmQUEPcDDF\n3Ne/09zva3tR5bBUBvC6cyRBmfuoBc2JzOlZlmypAJ98029L4hkxHPk1wUzXBzz+\nhppuawMlYyMOmlSeQHdtfYK4sMoG6PGKt2eyiVsCB+pw/YeU/ZWSWe+YZ7PrlaLx\nWzFghV/UVWXdWrXfrku3/lXovzu9eStzEfU4gTqlsnMTPCXA6Y0lYdv8vCe9SvHm\nVuAyAf08mgIzw+VYiOp+BN/X+7xgYmBUvwoJMDyA6lF7U4x5lr2kIuvh1HCfVJN/\nRdOoguK/9nkZuggok5OmygpTtY7Rt+xBsmpUtMIwoOxJoY9wOybIc0KioNw83FdZ\nHQI45ghQs4ldMP+ccp8EraJ0wGINsGyqTQdbMg7SZP8AdJFkgEVI2UfFf9Tb95z3\ntcY0BxBcA90tx25hPOdkkMPsePj7/P0HG8MM7Kuk4ixfywdW09XojYliS69bHiwI\n7m8UadSaOtiDu9R4YqSELH3jOQnlMFsvDTtT958bXA1ZIpjvwk/strqiI+MvFlUr\nvvX2fTsj/g3k2TIN4Cc6lf4AtwKv3PLbEdCLuSsRFWcAskdQ4KZ/aSF7AQIDAQAB\noxkwFzAVBgNVHREEDjAMggp4eC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQB0\ncFyxfjhpSHYuldaznQ5LH8GMKJ3eebXrVxoRsxa6VTrqje3PqVuwESiyJjok+2vU\n/ojTnBd0KYR/ZS1u26z9yV+AzcRjbphp1M3dyLnZ1TObPituyFd1rXb+od1Zi1Ps\nqd+x6/ZWdeD6gV1kUIyCUxh23j3rE6SA70Njv5oqLz+oXo5dP7e1qgM43d3kWSBh\nPM3VBJQOdBpLinigyH+ep1oy6IFdpP7lO6mavI57AoXh1cB4ddPfy8cV+AZNmNnU\n1vFdvI6vhgctiMt/8s4Yu7qx7mc9P5xaThz2VfGhZ1x1vB4CQheFboDHedZaxEll\nKqgxZfMjE17zrEqWoRkMS2+mYBUKc8MaYclVaE2++DwtNjKzHwC5z4b2MvOWgtYN\nOjT2VVp6VN6eyjCpvHq+GFhJyjh9h88mPv226XOboPf/UMszKlpxvBQgJNzXyKe3\nhELUF9ZO5Y9/TLqWG3m+JFddht8KTSldIb3chfAW814RTMsOIGZoj4LhuaTTc2tX\npMCdpu3NqhrxFoLiXtEb1kg3BKFw0rkalCTHhQ0erx0bZ31LKUJbM6QTsk/3NHO+\nRIiWOsK7HKu5rCNCQhh1FhCLMrHxSdK4nKslSHpED2/UJGPc+fqpc7RC6klUahDU\n2N7HFIFji+XBkHC9JjE+Rz4Vr8ok9Rl8ROw+f1Hz9w==\n-----END CERTIFICATE-----\n","Status":0},{"Id":"kgGYMH8rxprBOvOvGAZI2chj5xJI71CqIM34DpCII10C","Address":"ambreezy.dyndns-ip.com:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"JILIuG/HIaJMH4vx7HEv52Eth3TNBq1g9F8ywAcu9vcC","Address":"butterfly.dyndns-ip.com:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgIUPaFoLVavkGs5be8Ur5kKRi/P2/cwDQYJKoZIhvcNAQEL\nBQAwgYcxCzAJBgNVBAYTAkNBMQwwCgYDVQQIDANPbnQxEDAOBgNVBAcMB1Rvcm9u\ndG8xEjAQBgNVBAoMCXh4bmV0d29yazEOMAwGA1UECwwFbm9kZXMxEzARBgNVBAMM\nCnh4Lm5ldHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcN\nMjExMTE2MDMwMDI0WhcNMjMxMTE2MDMwMDI0WjCBhzELMAkGA1UEBhMCQ0ExDDAK\nBgNVBAgMA09udDEQMA4GA1UEBwwHVG9yb250bzESMBAGA1UECgwJeHhuZXR3b3Jr\nMQ4wDAYDVQQLDAVub2RlczETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3\nDQEJARYQYWRtaW5AeHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC\nAgoCggIBAL/ja5H/qwo+Nzjwgp+fsBiEYfDskdrQd5faEF4tDyhfJar3fMdwJVoz\nS0wQhDb+zWSATdfX339ipptOC8fDbgr+w4YTQn4g8Uo0224ZOYV5syBxlPZ1A/j1\nYqmxZ6htPTULycjsAzdWNAs23BdkflwDpzSjL6i+Gl3jvnmHANlNeqYZg8UcVIUP\nyGB3Mu6sym/X4bIT5jKwnMOpdGHeKwZcRZPnGf67hwPOjBNKfKGf0dYBnuQeaW3T\nGRdrW52GyXygkmxkamCOgCCi7ALsEs7tdqUgsQfTynR3cQO6LsTEUkdpYPRfTDF5\nodIqOskQwf3wo1+IaaVpJ7Kl1AVDs/hHCh35lzTf1TjvV0lcMQTECzvZaeTFguXC\nhHA7qovleJP6aOpO5h/LKmVQLfYgckFdrmdhtTVi04g4RGg59IbVnXUd2AOe9HcU\nMJWOpB1kf2g8d1OJVINoMl/EIcDufWg1FUsm48CbCDpc1ZhKKxB91J4XaVwRugCA\nYqxdffUgC7PeHmydZanQBpUGk0zNAVQpRDjh03AUrBuYMax4EMv4vo9nUJeV9jnJ\n4CCUxsUj9JUX40zCisZuUUAbWru19giDq7FQ4JCp5stdGT681yt5mTsS90S+Fk2F\neLsVVgXRj+k+EKPR6gMyDR4cvjV4/yp0uvJWIVa1epCOsuiDmV/RAgMBAAGjGTAX\nMBUGA1UdEQQOMAyCCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBAB20k9tY\na3Dr2sIJcKqEzJrrLqIToAL6Titid56c7iBV7H43MLfYw8gRLbv1KT4SOV9QeYdI\nBXxuqxIElZbY9hWXUCLmzyjeeUpQrRzgCuOI/FBWDFSQMhkJbbEBCMnjOkQKp7Ip\nnIXlnaSnPME3Mn8VcqYdDU0iWhH1Nn/FpqnMbiEfDo7XHbFbhxBVW39tP7Roe0Uf\nU52CjRhUeOfhBvMe5UkzmQiIOfHTeSPt9ggvjTd4tzHIFjbm/TsBZfjkpxoQfwuo\nuvYN73mhV54I5yDhl54GO+G8X7XZ7Txm+jRvIABk1+yBsqt12Eq4rk/2Wypg2hQG\nr+rY32Hn6pYL/5lO1AdAFGzWtkq6CRZOMCF8zjEjIset/zpjgaannycX+NXMD/dp\nSBypFR1HOa/uusldh5G2jMeJwOh128F5bcxD+pv7R0XkG7ncPzw1CFURQn9W3Sxq\npOoDdPd+azhzQFQm0jgqMRMr1QMjYECVwcfXo7hcvZhJ2cX/VQoeJ0xJDPxdzutx\n4KOKk1bOMBq2d4q1WKeSDrI6hiv+mUIp0XzIOeKhU7ovNHHmzo2GwWJNzDMwFMlc\nKQLDEXdCWK25riA/ZhTGdeKCoI2K5pCN9lCG6GAZzRvCYmxzJbQfGQLpzCU0Sm3C\nOdPTrlCrokw5A5pNX2TX/k2o/o/3TsOu40Gl\n-----END CERTIFICATE-----\n","Status":0},{"Id":"BDi/A89I8ciqoNu/iyptEkK7JScOHlZiO0frd44iMeYC","Address":"jcom.dyndns-ip.com:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"2z+0FC0QEilZJV3gMEZDrQUqcG6pOkwQDbrb+XQ7jecC","Address":"qubitbell.dyndns.org:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"Qmv5xxz4UnAtBBIgCQB+kRNVxrpVF3iGaXws+9P6vM8C","Address":"qubitbus.dyndns.org:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"QTvkXe6Y/AkX9mVAErVR6ctahtGfAnwNRtqCiGyDhJ4C","Address":"bulldog.dyndns-ip.com:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n","Status":0},{"Id":"T6pg9GlWAoltFX4oBJ3rZSEa06o1NMIvqD/VbHCyy7wC","Address":"xerxesnd.caius.ovh:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFqzCCA5OgAwIBAgIUZ7XCEroLe5JT9ndrORrt7hAN77MwDQYJKoZIhvcNAQEL\nBQAwgYExCzAJBgNVBAYTAkNIMQ8wDQYDVQQIDAZWYWxhaXMxDTALBgNVBAcMBFNp\nb24xDzANBgNVBAoMBlhlclhlczELMAkGA1UECwwCWFgxEzARBgNVBAMMCnh4Lm5l\ndHdvcmsxHzAdBgkqhkiG9w0BCQEWEGFkbWluQHh4Lm5ldHdvcmswHhcNMjExMTE2\nMDAwNzIyWhcNMjMxMTE2MDAwNzIyWjCBgTELMAkGA1UEBhMCQ0gxDzANBgNVBAgM\nBlZhbGFpczENMAsGA1UEBwwEU2lvbjEPMA0GA1UECgwGWGVyWGVzMQswCQYDVQQL\nDAJYWDETMBEGA1UEAwwKeHgubmV0d29yazEfMB0GCSqGSIb3DQEJARYQYWRtaW5A\neHgubmV0d29yazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALCTmC3l\n97L/ZYOqwdr3VSCDqTQbmEEjXlphIPMe/XLzUwrasAKyZXqYBTtv/kqtwCeqaQ49\nIGVs1NFEbM3BU02gI4dqTfGVElFPTauCLzUISZMm6y/5INBvl7Fbo1qvsqFAF9GA\ndHSl3sy/e7U+4zZMYTXVNj6rtYhN266sH1CKbGP3H1ltHckCrr2V0/9LnXazbIPm\nEmu9cN1+ec9BKxpMfjNMqnLk426yhDaeP4Hp05dGCKVbOoOTayxge/SAZ+Y9+PDn\noEai5leH51ydB0lVwvgxjehrH/HIL/sFMOhuyqoQlZHA3lnVl1uVSwCGp+Jy2gTO\ngk6mwKBLytf7fV4JdfFKmH/1vNnntZOMsH0bvbRCa5agYvPgx8nF1FU56NKUJn9g\nY0Es8fxyivkXVJd/jkoWRxXVBh7dRDSn1MdFxrWmLyAE0OJ2X3RO5LUckBgG18WY\n9T0h4PlCn6mc0IGtETuosGOuanG5eNiIca9C6y3CzeWujARS3wYIzpfUv8ol6AJG\nAkQf/mBRBT5i5D+204zCuKT+b9SB0PGOeESBD0RnHZMRxI+rWOxahaT3n1CP0kfX\nLQQ5hZ69dgeruXWz3fzGPlarXGY04ThRDOIqwhe5FjJGg0RUoxONZZ5/R6C9R27h\n40L05WoifNRGY5i+8p0IcksBT+GsncO7byMtAgMBAAGjGTAXMBUGA1UdEQQOMAyC\nCnh4Lm5ldHdvcmswDQYJKoZIhvcNAQELBQADggIBABehQ+oK3Jraacj1+kqPkq/N\nZRn7sweTOOK621cmN3DEzlc9MWxQvli1/mQ2J3ZcO9oAM5P7BtbMkkBC3zD9bJ/m\nK2o/qOMmjmZZxorTt6pukbnFOBZNbQxUll8NJcndSA816HmCxsy9E7SykffmUDxx\n6L69rUb5slNtjZv7DXaMww1BGTOwdaywode4QhD6XgD7YNVY7gHg2lBJv3rirASv\nHKLhLvpxKQ1rZzXKBPJQA/dIHDV4XJ33rG+jxI2+btK6oyTHcwp8vIjvfLpMZd6X\nR8ZGol6B5ntP14spaOWV6h5ZuVVc9cT0xZUMg1m4aoiNLYM2Qwx0VtUst1LYbX4y\nAT2muIrVs1uAxIc8DBG04SW+RcLrvhJ15xExapmQAoPZsDXu7KG41I6S0D7Hf7Ae\ng5HuOXb2MoJDaOTICZUcyX9vSsxcvkTy3E7rmWzEx9yohbERPU8bUpo5vri2L8qj\nY58B04uw2czLdLibbxG4YvECrKzt60hnNgxxH7eUcgs/r07s1JVR0KWSWK499liM\nX0vejzn4O9DG2t8qdf7VpRNBn6nv5ymqO51uv+ozK18m+2y+AG5vbRjulkvnwPo4\naLBVhhh0yn8+VyNLtqCUjSvup9rxD8Vj29atxbV/H2fOw9nCbsQYRi8OZRkZN828\nkxy4/8032GWjvrtvCF4i\n-----END CERTIFICATE-----\n","Status":0}],"Registration":{"Address":"scheduling.mainnet.cmix.rip:11420","ClientRegistrationAddress":"registration.mainnet.cmix.rip:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFqTCCA5GgAwIBAgIUO0qHXSeKrOMucO+Zz82Mf1Zlq4gwDQYJKoZIhvcNAQEL\nBQAwgYAxCzAJBgNVBAYTAktZMRQwEgYDVQQHDAtHZW9yZ2UgVG93bjETMBEGA1UE\nCgwKeHggbmV0d29yazEPMA0GA1UECwwGRGV2T3BzMRMwEQYDVQQDDAp4eC5uZXR3\nb3JrMSAwHgYJKoZIhvcNAQkBFhFhZG1pbnNAeHgubmV0d29yazAeFw0yMTEwMzAy\nMjI5MjZaFw0zMTEwMjgyMjI5MjZaMIGAMQswCQYDVQQGEwJLWTEUMBIGA1UEBwwL\nR2VvcmdlIFRvd24xEzARBgNVBAoMCnh4IG5ldHdvcmsxDzANBgNVBAsMBkRldk9w\nczETMBEGA1UEAwwKeHgubmV0d29yazEgMB4GCSqGSIb3DQEJARYRYWRtaW5zQHh4\nLm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQD08ixnPWwz\nFtBIEWx2SnFjBsdrSWCp9NcWXRtGWeq3ACz+ixiflj/U9U4b57aULeOAvcoC7bwU\nj5w3oYxRmXIV40QSevx1z9mNcW3xbbacQ+yCgPPhhj3/c285gVVOUzURLBTNAi9I\nEA59zAb8Vy0E6zfq4HRAhH11Q/10QgDjEXuGXra1k3IlemVsouiJGNAtKojNDE1N\nx9HnraSEiXzdnV2GDplEvMHaLd3s9vs4XsiLB3VwKyHv7EH9+LOIra6pr5BWw+kD\n2qHKGmQMOQe0a7nCirW/k9axH0WiA0XWuQu3U1WfcMEfdC/xn1vtubrdYjtzpXUy\noUEX5eHfu4OlA/zoH+trocfARDyBmTVbDy0P9imH//a6GUKDui9r3fXwEy5YPMhb\ndKaNc7QWLPHMh1n25h559z6PqxxPT6UqFFbZD2gTw1sbbpjyqhLbnYguurkxY3jZ\nztW337hROzQ1/abbg/P59JA95Pmhkl8nqqDEf0buOmvMazq3Lwg92nuZ8gsdMKXB\nxaEtTTpxhTPOqzc1/XQgScZnc+092MBDh3C2GMxzylOIdk+yF2Gyb+VWPUe29dSa\nazzxsDXzRy8y8jaOjdSUWaLa/MgS5Dg1AfHtD55bdvqYzw3NEXIVarpMlzl+Z+6w\njvuwz8GyoMSVe+YEGgvSDvlfY/z19aqneQIDAQABoxkwFzAVBgNVHREEDjAMggp4\neC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQCp0JDub2w5vZQvFREyA+utZ/+s\nXT05j1iTgIRKMa3nofDGERYJUG7FcTd373I2baS70PGx8FF1QuXhn4DNNZlW/SZt\npa1d0pAerqFrIzwOuWVDponYHQ8ayvsT7awCbwZEZE4RhooqS4LqnvtgFu/g7LuM\nzkFN8TER7HAUn3P7BujLvcgtqk2LMDz+AgBRszDp/Bw7+1EJDeG9d7hC/stXgDV/\nvpD1YDpxSmW4zjezFJqV6OdMOwo9RWVIktK3RXbFc6I5UJZ5kmzPe/I2oPPCBQvD\nG3VqFLQe5ik5rXP7SgAN1fL/7KuQna0s42hkV64Z2ymCX69G1ofpgpEFaQLaxLbj\nQOun0r8A3NyKvHRIh4K0dFcc3FSOF60Y6k769HKbOPmSDjSSg0qO9GEONBJ8BxAT\nIHcHoTAOQoqGehdzepXQSjHsPqTXv3ZFFwCCgO0toI0Qhqwo89X6R3k+i4Kaktr7\nmLiPO8s0nq1PZ1XrybKE9BCHkYH1JkUDA+M0pn4QAEx/BuM0QnGXoi1sImW3pEUG\nNP7fjkISrD48P8P/TLS45sx5pB8MNGEsRw0lBKmuOdWDmdfhOltB6JxmbhpstNZp\n6LVLK6SEOwE76xnHiisR2KyhTTiroUq73BgPFWkWhoJDPbmL1DHgnbdKwwstG8Qu\nUGb8k8vh6tzqYZAOKg==\n-----END CERTIFICATE-----\n","EllipticPubKey":"5Y8uyb0ZmPK62Z3UebnXFuTpWrcG28e0VWP7rxwKehI="},"Notification":{"Address":"3.67.101.87:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIFqTCCA5GgAwIBAgIUcVpxMv/jhQjs0KzGDVtwFfhcHjIwDQYJKoZIhvcNAQEL\nBQAwgYAxCzAJBgNVBAYTAktZMRQwEgYDVQQHDAtHZW9yZ2UgVG93bjETMBEGA1UE\nCgwKeHggbmV0d29yazEPMA0GA1UECwwGRGV2T3BzMRMwEQYDVQQDDAp4eC5uZXR3\nb3JrMSAwHgYJKoZIhvcNAQkBFhFhZG1pbnNAeHgubmV0d29yazAeFw0yMTA1MDcx\nNTExMzFaFw0zMTA1MDUxNTExMzFaMIGAMQswCQYDVQQGEwJLWTEUMBIGA1UEBwwL\nR2VvcmdlIFRvd24xEzARBgNVBAoMCnh4IG5ldHdvcmsxDzANBgNVBAsMBkRldk9w\nczETMBEGA1UEAwwKeHgubmV0d29yazEgMB4GCSqGSIb3DQEJARYRYWRtaW5zQHh4\nLm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC4HeJ+aTaE\n5oDEv4Z7ZeXlychxiI0GE6KYmBip1L3LLgodWMdnuVsbvR2dFIxvS3vbBxV3b9KF\nWfWFMCo66rHbnU9RjUBRy4ubVyT/5saRP+C5gvR45JMuiphlPyJqvy7A3QyFcCWt\nv7vzWRhOY3qyZJvdFBHmWKf+wlNjMJSjvlEiuCsC2NCReX0pr/Hxj59hF/S7si0z\n5Ya8TdGgKjf1PFDJvH6xw+EDmnRqhWxcoxpKVdUh6vOnglsP0WNhCcS9DLoOApEE\n7/k9pSsNH5U4BUOzDfkshV3Tre7wK0NUyWnK6WInUCFWYjyDaaKWRRlywriyHHkJ\nDbitXCuVPaoczmVgbb3/SAyjAJkn3T+iCt8K/vToP14Nmff+XhxMbySPeWKBXShd\nXzVJ+I9jL7LCtbJHMkkD0muy3cNQ+8rglD7C4m5YranXSWiD4pC6xIJEbvPwJ/iv\nNvB5nZJtUgRp/jr5IeMaO9Pbo+reA+XgND4YmLdeHwvcFKFKJqbxq1ObWOVVd6EO\nFBoE+JFKP0i1NiCpJZSAXQaiE9MZ5YIrGhYjB636QkPbir2Vnoa4+U7nyMA/0Fb5\nhRipOAKDESoryCbNEy7rBhWFlsxBOv5Qnc0ntSkBw4j3rEXasrpa+EpPwh8mxlyY\nHd2LlrUUNQDym2C7RwgkehG+9rtKTtR4xwIDAQABoxkwFzAVBgNVHREEDjAMggp4\neC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQBI87UWXZKoHkfJrBEkJexnj0R8\ntU6tBZwWTyMBvkR8OjQVU+5zfSsA9vR+wj36aptg/GaC0zTsWc/zOU6jDCODW1DR\nlHi9indT8dVFDGrjeb3EAYclBxqleWxGv/MBXTMizQMLXA9pjKUUx8WqKNbJIzRB\n2UTu5VSAjeTTXgqYcdjmZaXFe0+kTAkyDi469sf7nSA+9W7tLfy/f6IsVnTVUpiu\nGP/7lDH7M+dpz56uluAVwKOVHGwPBx290vnSv1JuhrCp9kGSxlalQBmTzGcjpByT\nSjg56bNtXlx/IKyryBTkHEEG1BZOA2a/VCIeoXGs2zYZPHJyRvUnh3LVVld+aSkO\nNUKfd69jzFY9/Nmy9gCIt87Xxvr+sx4YaQrrrOUO63zleCmCwEauEtN4qxIsvsGO\nAHsiOu09gy8TVv3AhOKmqyo3EC9C8DSBkYNzeqLKOO+ct1/t7VwR7hTh+XUQ4dEN\nioy175iBHb4+T1l6A6HB4A5BAThuuOiyHTqMUnNzRQ9FRiUxFaKRV5j7BG2NLNvB\nHKYB55RjPrL90kA3AwFayOJSeeD+1gNljhsmW/u6AtwNNackfehSfEyQsH+WVFe7\nIhXkceZOZ6u8U4PE0xHXqsL55hp53wDwhVTkIDsTmg4lfjLMtW/obRx1mmwsHEnV\nWhEmhL1ik6lum40NUQ==\n-----END CERTIFICATE-----\n"},"Udb":{"Id":"inefcG/ag+CLS7zhvZ4HkXvP/jEU0sP6y0hlvvM3pzUD","Cert":"-----BEGIN CERTIFICATE-----\nMIIFqTCCA5GgAwIBAgIUEVshfaLgjzuVfLlyk0mTsXIkVewwDQYJKoZIhvcNAQEL\nBQAwgYAxCzAJBgNVBAYTAktZMRQwEgYDVQQHDAtHZW9yZ2UgVG93bjETMBEGA1UE\nCgwKeHggbmV0d29yazEPMA0GA1UECwwGRGV2T3BzMRMwEQYDVQQDDAp4eC5uZXR3\nb3JrMSAwHgYJKoZIhvcNAQkBFhFhZG1pbnNAeHgubmV0d29yazAeFw0yMTA1MDcx\nNTExNTVaFw0zMTA1MDUxNTExNTVaMIGAMQswCQYDVQQGEwJLWTEUMBIGA1UEBwwL\nR2VvcmdlIFRvd24xEzARBgNVBAoMCnh4IG5ldHdvcmsxDzANBgNVBAsMBkRldk9w\nczETMBEGA1UEAwwKeHgubmV0d29yazEgMB4GCSqGSIb3DQEJARYRYWRtaW5zQHh4\nLm5ldHdvcmswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC1dYoVYmYA\nL4TaKC9g3cTM8LqTD7Ofdo4LKkkluqPKadX6rZyrvO90LtOtcH/1yxipTOnaKF0J\n9/kTrxgTroKgIrHuzHOE7w87hcV4zPveYX+4nc8OBQRkVh0slIfPGUWQMSAx0ojv\nAqstkrk8SapcSJK0AJi2wHephJhSnmnKbq56NSD4VwGbT9O8YAqsrU0FzGxTcers\nQILgQY3BdcnzJL3VRjzMaLT3oCbXS2FPD6Z46JVs/jCc+fg7TT7N1VJwsNJ0w7gR\nnV3iB5XG/9Em/khQ2Ne2mPRoh4xaXPFeAmXYhiREFI2t4LrgeHwySuRhsRLolYA+\n95nSZ1FCuPabV+jv2UURLN581VzLjgOA8Ad60P1yKfyP6N2BcR/99xD/Y+pBvsn5\nwgSVbPTxq15M3WehPLVvoie66pg25uLo+EdyvkzFIBjdy8oNW5qKB6IhrqM5OKsp\nxvdh/nQ/6bikIZxmdJqhTs0slhD6NlY+RnHNg/9xyDU/aoU/tn06cL9xlhVA88A/\nI1Tz5JJdF6G05O/MaTe5FaCJJly6+uY3R6O9f4eKdeuwVdvLHjKvFHir78djG5wq\nxYieGaiUSxy6kr0b283pVNxWlWVPUxlRQpr9EWB9cfKzjuMie83xdCGfJOgfiw1q\nKOirdiO3Y/goSsndolKrARWRO5Af4P4f/wIDAQABoxkwFzAVBgNVHREEDjAMggp4\neC5uZXR3b3JrMA0GCSqGSIb3DQEBCwUAA4ICAQAIUMML1m+NXFF2qnXrkbJUrr0Y\nkMejzFkSrx0PypqXThDUwdCdkYZkNzcfTB/jvNMn6PfU7uR5OYqTgKjHyGxG7ZZs\nRhxL21jTUYq9H45aMRYJzOZ/jOag2QbrV+46YsbCMJoZhD9da2qVOLNPHyG1pYfY\nHzlObq+uy23iNQSL9dNSw9PbvPY8UVMqkY9dXEqFtOuivLoacUU6+ZiOnp/Cbed8\nE+oIhP7U3Zlnl1WMyMM94ltdVOqpzyiaNuqLE1S7ngN1qukiu63B50JH7YCxiwuC\nIrcyRErwrCPFdpjxsgJViH3cQG3Y07Eof2KJRYoyJ1NF9UgXfTpZ3P7lDSEtDre2\nYLKZbAPJRYwnyrPmw/Gs1PNIf02C+UglgqhtcpvTLQ+PxJp0u58JJfKqUDqzOAYl\nOtVJJ71coADrz9ON1W9TsJ154sHIQVF/wjLic9mUOnn0zsWuk2ClcGJp67UF8ZSe\neWbnQipc/rxcsh9KF/n+lG7thmEaJ10tntr0X5vYR4e1FjIlfc2wk46yH7+pIl/3\nR9quX/3zRxxNKNugkz+Jp+WeL6oP2ozzh4Nr9H1rdAsgkj89t2RKteXp4XZ8Pp1i\nuXO9ulyHkAvQxyehoFk44Q0Z2AEkSDbNCtQ5yRKTKoeeL04vbAvn7L0XWQ7jDJje\nxHGnyrYJGhiR8Sp20w==\n-----END CERTIFICATE-----\n","Address":"3.67.210.176:11420","DhPubKey":"eyJWYWx1ZSI6NjgzOTY4NTk2MDQxNDkwODIxNjE3MzYzMzcxMDg4MjA3MjU3MTgzODUyODA3NDc5Njc5NjI3NTMyNjQyMzQ2NTk1NTg0MjI0NzI5MTk3MjQzMzI2OTg5NTQ5MzgxOTk2ODA2MTA3NzIwMzk2ODM4NzQ4NjE4MTc2NTI1NTY5Mzk5MzQxMzM5OTA5MjQzNzYxNzM4NDA2Njk3MzI3MDMwODg1MDAxNzc0Mjk1NDM5NjgxNzcyNTY5OTkxMDY3MTMyNjk0ODA2NjI1MjM4MDI3MTkxNDQyMDUzOTQ2MjQ4ODcwMDk4MTUyMzA4NjkzODEzOTUxMTIwNDI5NjQxMjM3MTYzODExOTc2MDUwNTY0MTI4NDQzNzg5MTYwMTc5MDg0ODg0ODkxMzA4Njk1MDIzNDAxNzY5NDI3MDk1ODY2MzQ0MzA0NTk2NjA2MzgyODA4MzgxNjk1MDYwMzMzNjIzNDMxNTE5ODIzODY3OTA2OTAzMDY4NjE1MDI0NjI1Mjc1MDk1Mzc4OTYwMTQwNDYzODQ3OTUzMzc1NDkwNzY1MTg1NTc3MDQyNDg4OTY0MTkyNDMzMTUzNTA0Mzc1MjcxODA4MDE1MDU3MjI2NzE1MjUxNTQ4NzI5NTY5MDg4MTcyNTUwMzQ4NTI2NzYyNjc2MzIxNDY0NTA3MzQxOTU2MDg2NjYzNTk4MTg5NDA2MzUzODUwMDMyMjQzMTU2NTUyNTQ2MDMyNTE5ODUzOTY3NjI0MDQyMzc5NzgwMTAxNjIxNDM1MTU0MTg1MzE0MDg1OTgxNzQ3NzI5NTAzMjMzODMwMjIxODI0NjAxMTU3NDUzNDgwOTA1OTYxMjQxNzgyMDEzODIyMzM4NjY5ODg2NTI1NTkxMzIxMDMzOTI3NTI5Njc4NDk5NzA4MzIzMzgyNDQ2MjM3MDY5MDEyOTU0MDM1NzM1ODI3ODIwNDU5NjIxNDg5NTEwNjcxNDI5OTIxOTg3MDQ3OTQyNDAxNDY2OTExOTQzODc2NDYxOTQ3MzQzODcxMDEzMDU5MzQxMDAyMTE2OTgzNjk1MDIyMjk3MTIwOTU2Mzc1MDYxNDAyOTIyMTI0MjE0NzQ2NzcwNDAwMzUzNjkyMDEyMTIyMTg4MzAyMDI3MDU0OTUwMTk0NDk3MjkzMDYzNDE2NTI1NjI2MzkwNjE0MDcyOTM5MjMwMDYzMzA0NDk2MjI2NTkyNzQ4NzQ2MTg1NDc5NzQ3MzQ4MjU4MzcyMzQ0NzU1NTgwMTMzMDkzMzU0MTIzMzQ0NzU4MCwiRmluZ2VycHJpbnQiOjE2ODAxNTQxNTExMjMzMDk4MzYzfQ=="},"E2e":{"Prime":"E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873","Small_prime":"","Generator":"2"},"Cmix":{"Prime":"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF","Small_prime":"","Generator":"2"},"AddressSpace":[{"Size":18,"Timestamp":"2021-11-15T21:28:32.825144Z"}],"ClientVersion":"3.2.0","WhitelistedIds":[],"WhitelistedIpAddresses":[],"RateLimits":{"Capacity":100,"LeakedTokens":50,"LeakDuration":3600000000000}} \ No newline at end of file diff --git a/basice2e/network.config b/basice2e/network.config deleted file mode 100644 index e724211..0000000 --- a/basice2e/network.config +++ /dev/null @@ -1,26 +0,0 @@ -localhost:8440 -# This is the network configuration file. The top line of this file, -# when not set via command line, is used to determine to which network -# the integration test will be run against. - -# Note you can also specify "release", "betanet", or "protonet" on run.sh - -# Betanet gateways -109.169.15.30:22840 -5.12.137.118:22840 -92.246.20.92:22840 -178.16.39.203:22840 -86.135.17.18:22840 - -# Release (messenger test) network gateways -34.221.74.216:11420 -52.25.9.28:11420 -54.149.122.115:11420 - - -# protonet -185.152.3.247:11420 -93.151.207.39:11420 -93.107.154.131:11420 -173.208.225.75:11421 -92.246.20.92:11420 diff --git a/basice2e/network.sh b/basice2e/network.sh deleted file mode 100755 index fa821fb..0000000 --- a/basice2e/network.sh +++ /dev/null @@ -1,109 +0,0 @@ -# This script is used to start a basic 5 node network for running clients on. It is meant to be `source`'d into a script -# which will run clients on the network, such as `client-session-tests.sh` or the main `run.sh`. -# -# You **must** source it, because otherwise the `trap finish EXIT` instruction will cause the network to stop when -# network.sh returns to your script or shell. Sourcing it will "import" the commands into your script instead, causing -# the trap instruction to stop the network when your script/shell exits. - -echo "STARTING SERVERS..." - -# Copy udbContact into place when running locally. -cp udbContact.bin results/udbContact.bin - -PERMCMD="../bin/permissioning --logLevel $DEBUGLEVEL -c permissioning.yaml " -$PERMCMD > results/permissioning-console.txt 2>&1 & -PIDVAL=$! -echo "$PERMCMD -- $PIDVAL" - - -# Run Client Registrar -CLIENT_REG_CMD="../bin/client-registrar \ --l 2 -c client-registrar.yaml" -$CLIENT_REG_CMD > results/client-registrat-console.txt 2>&1 & -PIDVAL=$! -echo "$CLIENT_REG_CMD -- $PIDVAL" - -for SERVERID in $(seq 5 -1 1) -do - IDX=$(($SERVERID - 1)) - SERVERCMD="../bin/server --logLevel $DEBUGLEVEL --config server-$SERVERID.yaml" - if [ $SERVERID -eq 5 ] && [ -n "$NSYSENABLED" ] - then - SERVERCMD="nsys profile --session-new=gputest --trace=cuda -o server-$SERVERID $SERVERCMD" - fi - $SERVERCMD > $SERVERLOGS/server-$SERVERID-console.txt 2>&1 & - PIDVAL=$! - echo "$SERVERCMD -- $PIDVAL" -done - -# Start gateways -for GWID in $(seq 5 -1 1) -do - IDX=$(($GWID - 1)) - GATEWAYCMD="../bin/gateway --logLevel $DEBUGLEVEL --config gateway-$GWID.yaml" - $GATEWAYCMD > $GATEWAYLOGS/gateway-$GWID-console.txt 2>&1 & - PIDVAL=$! - echo "$GATEWAYCMD -- $PIDVAL" -done - -jobs -p > results/serverpids - -finish() { - echo "STOPPING SERVERS AND GATEWAYS..." - if [ -n "$NSYSENABLED" ] - then - nsys stop --session=gputest - fi - # NOTE: jobs -p doesn't work in a signal handler - for job in $(cat results/serverpids) - do - echo "KILLING $job" - kill $job || true - done - - sleep 5 - - for job in $(cat results/serverpids) - do - echo "KILL -9 $job" - kill -9 $job || true - done - #tail $SERVERLOGS/* - #tail $CLIENTCLEAN/* - #diff -aruN clients.goldoutput $CLIENTCLEAN -} - -trap finish EXIT -trap finish INT - -# Sleeps can die in a fire on the sun, we wait for the servers to start running -# rounds -rm rid.txt || true -touch rid.txt -cnt=0 -echo -n "Waiting for a round to run" -while [ ! -s rid.txt ] && [ $cnt -lt 120 ]; do - sleep 1 - grep -a "RID 1 ReceiveFinishRealtime END" results/servers/server-* > rid.txt || true - cnt=$(($cnt + 1)) - echo -n "." -done - -# Start a user discovery bot server -echo "STARTING UDB..." -UDBCMD="../bin/udb --logLevel $DEBUGLEVEL --skipVerification --protoUserPath udbProto.json --config udb.yaml -l 1" -$UDBCMD >> $UDBOUT 2>&1 & -PIDVAL=$! -echo $PIDVAL >> results/serverpids -echo "$UDBCMD -- $PIDVAL" -rm rid.txt || true -while [ ! -s rid.txt ] && [ $cnt -lt 30 ]; do - sleep 1 - grep -a "Sending Poll message" results/udb-console.txt > rid.txt || true - cnt=$(($cnt + 1)) - echo -n "." -done - -echo "localhost:8440" > results/startgwserver.txt - -echo "DONE LETS DO STUFF" \ No newline at end of file diff --git a/basice2e/partialNdf b/basice2e/partialNdf deleted file mode 100644 index d9a603a..0000000 --- a/basice2e/partialNdf +++ /dev/null @@ -1 +0,0 @@ -{"Timestamp":"2020-02-26T13:36:18.640394617-08:00","Gateways":[{"Address":"localhost:8440","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIDbDCCAlSgAwIBAgIJAOUNtZneIYECMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQx\nGzAZBgNVBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJp\ncDAeFw0xOTAzMDUxODM1NDNaFw0yOTAzMDIxODM1NDNaMGgxCzAJBgNVBAYTAlVT\nMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQxGzAZBgNV\nBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJpcDCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPP0WyVkfZA/CEd2DgKpcudn0oDh\nDwsjmx8LBDWsUgQzyLrFiVigfUmUefknUH3dTJjmiJtGqLsayCnWdqWLHPJYvFfs\nWYW0IGF93UG/4N5UAWO4okC3CYgKSi4ekpfw2zgZq0gmbzTnXcHF9gfmQ7jJUKSE\ntJPSNzXq+PZeJTC9zJAb4Lj8QzH18rDM8DaL2y1ns0Y2Hu0edBFn/OqavBJKb/uA\nm3AEjqeOhC7EQUjVamWlTBPt40+B/6aFJX5BYm2JFkRsGBIyBVL46MvC02MgzTT9\nbJIJfwqmBaTruwemNgzGu7Jk03hqqS1TUEvSI6/x8bVoba3orcKkf9HsDjECAwEA\nAaMZMBcwFQYDVR0RBA4wDIIKKi5jbWl4LnJpcDANBgkqhkiG9w0BAQUFAAOCAQEA\nneUocN4AbcQAC1+b3To8u5UGdaGxhcGyZBlAoenRVdjXK3lTjsMdMWb4QctgNfIf\nU/zuUn2mxTmF/ekP0gCCgtleZr9+DYKU5hlXk8K10uKxGD6EvoiXZzlfeUuotgp2\nqvI3ysOm/hvCfyEkqhfHtbxjV7j7v7eQFPbvNaXbLa0yr4C4vMK/Z09Ui9JrZ/Z4\ncyIkxfC6/rOqAirSdIp09EGiw7GM8guHyggE4IiZrDslT8V3xIl985cbCxSxeW1R\ntgH4rdEXuVe9+31oJhmXOE9ux2jCop9tEJMgWg7HStrJ5plPbb+HmjoX3nBO04E5\n6m52PyzMNV+2N21IPppKwA==\n-----END CERTIFICATE-----\n"},{"Address":"localhost:8441","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIDbDCCAlSgAwIBAgIJAOUNtZneIYECMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQx\nGzAZBgNVBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJp\ncDAeFw0xOTAzMDUxODM1NDNaFw0yOTAzMDIxODM1NDNaMGgxCzAJBgNVBAYTAlVT\nMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQxGzAZBgNV\nBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJpcDCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPP0WyVkfZA/CEd2DgKpcudn0oDh\nDwsjmx8LBDWsUgQzyLrFiVigfUmUefknUH3dTJjmiJtGqLsayCnWdqWLHPJYvFfs\nWYW0IGF93UG/4N5UAWO4okC3CYgKSi4ekpfw2zgZq0gmbzTnXcHF9gfmQ7jJUKSE\ntJPSNzXq+PZeJTC9zJAb4Lj8QzH18rDM8DaL2y1ns0Y2Hu0edBFn/OqavBJKb/uA\nm3AEjqeOhC7EQUjVamWlTBPt40+B/6aFJX5BYm2JFkRsGBIyBVL46MvC02MgzTT9\nbJIJfwqmBaTruwemNgzGu7Jk03hqqS1TUEvSI6/x8bVoba3orcKkf9HsDjECAwEA\nAaMZMBcwFQYDVR0RBA4wDIIKKi5jbWl4LnJpcDANBgkqhkiG9w0BAQUFAAOCAQEA\nneUocN4AbcQAC1+b3To8u5UGdaGxhcGyZBlAoenRVdjXK3lTjsMdMWb4QctgNfIf\nU/zuUn2mxTmF/ekP0gCCgtleZr9+DYKU5hlXk8K10uKxGD6EvoiXZzlfeUuotgp2\nqvI3ysOm/hvCfyEkqhfHtbxjV7j7v7eQFPbvNaXbLa0yr4C4vMK/Z09Ui9JrZ/Z4\ncyIkxfC6/rOqAirSdIp09EGiw7GM8guHyggE4IiZrDslT8V3xIl985cbCxSxeW1R\ntgH4rdEXuVe9+31oJhmXOE9ux2jCop9tEJMgWg7HStrJ5plPbb+HmjoX3nBO04E5\n6m52PyzMNV+2N21IPppKwA==\n-----END CERTIFICATE-----\n"},{"Address":"localhost:8442","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIDbDCCAlSgAwIBAgIJAOUNtZneIYECMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQx\nGzAZBgNVBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJp\ncDAeFw0xOTAzMDUxODM1NDNaFw0yOTAzMDIxODM1NDNaMGgxCzAJBgNVBAYTAlVT\nMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQxGzAZBgNV\nBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJpcDCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPP0WyVkfZA/CEd2DgKpcudn0oDh\nDwsjmx8LBDWsUgQzyLrFiVigfUmUefknUH3dTJjmiJtGqLsayCnWdqWLHPJYvFfs\nWYW0IGF93UG/4N5UAWO4okC3CYgKSi4ekpfw2zgZq0gmbzTnXcHF9gfmQ7jJUKSE\ntJPSNzXq+PZeJTC9zJAb4Lj8QzH18rDM8DaL2y1ns0Y2Hu0edBFn/OqavBJKb/uA\nm3AEjqeOhC7EQUjVamWlTBPt40+B/6aFJX5BYm2JFkRsGBIyBVL46MvC02MgzTT9\nbJIJfwqmBaTruwemNgzGu7Jk03hqqS1TUEvSI6/x8bVoba3orcKkf9HsDjECAwEA\nAaMZMBcwFQYDVR0RBA4wDIIKKi5jbWl4LnJpcDANBgkqhkiG9w0BAQUFAAOCAQEA\nneUocN4AbcQAC1+b3To8u5UGdaGxhcGyZBlAoenRVdjXK3lTjsMdMWb4QctgNfIf\nU/zuUn2mxTmF/ekP0gCCgtleZr9+DYKU5hlXk8K10uKxGD6EvoiXZzlfeUuotgp2\nqvI3ysOm/hvCfyEkqhfHtbxjV7j7v7eQFPbvNaXbLa0yr4C4vMK/Z09Ui9JrZ/Z4\ncyIkxfC6/rOqAirSdIp09EGiw7GM8guHyggE4IiZrDslT8V3xIl985cbCxSxeW1R\ntgH4rdEXuVe9+31oJhmXOE9ux2jCop9tEJMgWg7HStrJ5plPbb+HmjoX3nBO04E5\n6m52PyzMNV+2N21IPppKwA==\n-----END CERTIFICATE-----\n"},{"Address":"localhost:8443","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIDbDCCAlSgAwIBAgIJAOUNtZneIYECMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQx\nGzAZBgNVBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJp\ncDAeFw0xOTAzMDUxODM1NDNaFw0yOTAzMDIxODM1NDNaMGgxCzAJBgNVBAYTAlVT\nMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQxGzAZBgNV\nBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJpcDCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPP0WyVkfZA/CEd2DgKpcudn0oDh\nDwsjmx8LBDWsUgQzyLrFiVigfUmUefknUH3dTJjmiJtGqLsayCnWdqWLHPJYvFfs\nWYW0IGF93UG/4N5UAWO4okC3CYgKSi4ekpfw2zgZq0gmbzTnXcHF9gfmQ7jJUKSE\ntJPSNzXq+PZeJTC9zJAb4Lj8QzH18rDM8DaL2y1ns0Y2Hu0edBFn/OqavBJKb/uA\nm3AEjqeOhC7EQUjVamWlTBPt40+B/6aFJX5BYm2JFkRsGBIyBVL46MvC02MgzTT9\nbJIJfwqmBaTruwemNgzGu7Jk03hqqS1TUEvSI6/x8bVoba3orcKkf9HsDjECAwEA\nAaMZMBcwFQYDVR0RBA4wDIIKKi5jbWl4LnJpcDANBgkqhkiG9w0BAQUFAAOCAQEA\nneUocN4AbcQAC1+b3To8u5UGdaGxhcGyZBlAoenRVdjXK3lTjsMdMWb4QctgNfIf\nU/zuUn2mxTmF/ekP0gCCgtleZr9+DYKU5hlXk8K10uKxGD6EvoiXZzlfeUuotgp2\nqvI3ysOm/hvCfyEkqhfHtbxjV7j7v7eQFPbvNaXbLa0yr4C4vMK/Z09Ui9JrZ/Z4\ncyIkxfC6/rOqAirSdIp09EGiw7GM8guHyggE4IiZrDslT8V3xIl985cbCxSxeW1R\ntgH4rdEXuVe9+31oJhmXOE9ux2jCop9tEJMgWg7HStrJ5plPbb+HmjoX3nBO04E5\n6m52PyzMNV+2N21IPppKwA==\n-----END CERTIFICATE-----\n"},{"Address":"localhost:8444","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIDbDCCAlSgAwIBAgIJAOUNtZneIYECMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQx\nGzAZBgNVBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJp\ncDAeFw0xOTAzMDUxODM1NDNaFw0yOTAzMDIxODM1NDNaMGgxCzAJBgNVBAYTAlVT\nMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQxGzAZBgNV\nBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJpcDCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPP0WyVkfZA/CEd2DgKpcudn0oDh\nDwsjmx8LBDWsUgQzyLrFiVigfUmUefknUH3dTJjmiJtGqLsayCnWdqWLHPJYvFfs\nWYW0IGF93UG/4N5UAWO4okC3CYgKSi4ekpfw2zgZq0gmbzTnXcHF9gfmQ7jJUKSE\ntJPSNzXq+PZeJTC9zJAb4Lj8QzH18rDM8DaL2y1ns0Y2Hu0edBFn/OqavBJKb/uA\nm3AEjqeOhC7EQUjVamWlTBPt40+B/6aFJX5BYm2JFkRsGBIyBVL46MvC02MgzTT9\nbJIJfwqmBaTruwemNgzGu7Jk03hqqS1TUEvSI6/x8bVoba3orcKkf9HsDjECAwEA\nAaMZMBcwFQYDVR0RBA4wDIIKKi5jbWl4LnJpcDANBgkqhkiG9w0BAQUFAAOCAQEA\nneUocN4AbcQAC1+b3To8u5UGdaGxhcGyZBlAoenRVdjXK3lTjsMdMWb4QctgNfIf\nU/zuUn2mxTmF/ekP0gCCgtleZr9+DYKU5hlXk8K10uKxGD6EvoiXZzlfeUuotgp2\nqvI3ysOm/hvCfyEkqhfHtbxjV7j7v7eQFPbvNaXbLa0yr4C4vMK/Z09Ui9JrZ/Z4\ncyIkxfC6/rOqAirSdIp09EGiw7GM8guHyggE4IiZrDslT8V3xIl985cbCxSxeW1R\ntgH4rdEXuVe9+31oJhmXOE9ux2jCop9tEJMgWg7HStrJ5plPbb+HmjoX3nBO04E5\n6m52PyzMNV+2N21IPppKwA==\n-----END CERTIFICATE-----\n"}],"Nodes":[{"Id":"lfU+e5CKkzbvRaLBM/0e6Z2SXy8+2fPk+bjR5OaGTQw=","Address":"","Tls_certificate":""},{"Id":"EWd4VQks3IxqC/3Y0Dw/q799+xaGpn+5qFPXG5ejrtc=","Address":"","Tls_certificate":""},{"Id":"X+IpBmWxVplY/S9Z/h8lSLvMUd1aTVNdKETp9LmD6kQ=","Address":"","Tls_certificate":""},{"Id":"qzVdXuYCGZakchcaIDHgQPqMNyU8n5nR0+/aXdPcArA=","Address":"","Tls_certificate":""},{"Id":"ynnf4kZ5OA/UcJwizZzYm+F/6M4E934M2x9sHHlB7rI=","Address":"","Tls_certificate":""}],"Registration":{"Address":":18000","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIDbDCCAlSgAwIBAgIJAOUNtZneIYECMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQx\nGzAZBgNVBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJp\ncDAeFw0xOTAzMDUxODM1NDNaFw0yOTAzMDIxODM1NDNaMGgxCzAJBgNVBAYTAlVT\nMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlDbGFyZW1vbnQxGzAZBgNV\nBAoMElByaXZhdGVncml0eSBDb3JwLjETMBEGA1UEAwwKKi5jbWl4LnJpcDCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPP0WyVkfZA/CEd2DgKpcudn0oDh\nDwsjmx8LBDWsUgQzyLrFiVigfUmUefknUH3dTJjmiJtGqLsayCnWdqWLHPJYvFfs\nWYW0IGF93UG/4N5UAWO4okC3CYgKSi4ekpfw2zgZq0gmbzTnXcHF9gfmQ7jJUKSE\ntJPSNzXq+PZeJTC9zJAb4Lj8QzH18rDM8DaL2y1ns0Y2Hu0edBFn/OqavBJKb/uA\nm3AEjqeOhC7EQUjVamWlTBPt40+B/6aFJX5BYm2JFkRsGBIyBVL46MvC02MgzTT9\nbJIJfwqmBaTruwemNgzGu7Jk03hqqS1TUEvSI6/x8bVoba3orcKkf9HsDjECAwEA\nAaMZMBcwFQYDVR0RBA4wDIIKKi5jbWl4LnJpcDANBgkqhkiG9w0BAQUFAAOCAQEA\nneUocN4AbcQAC1+b3To8u5UGdaGxhcGyZBlAoenRVdjXK3lTjsMdMWb4QctgNfIf\nU/zuUn2mxTmF/ekP0gCCgtleZr9+DYKU5hlXk8K10uKxGD6EvoiXZzlfeUuotgp2\nqvI3ysOm/hvCfyEkqhfHtbxjV7j7v7eQFPbvNaXbLa0yr4C4vMK/Z09Ui9JrZ/Z4\ncyIkxfC6/rOqAirSdIp09EGiw7GM8guHyggE4IiZrDslT8V3xIl985cbCxSxeW1R\ntgH4rdEXuVe9+31oJhmXOE9ux2jCop9tEJMgWg7HStrJ5plPbb+HmjoX3nBO04E5\n6m52PyzMNV+2N21IPppKwA==\n-----END CERTIFICATE-----\n"},"Notification":{"Address":"","Tls_certificate":""},"Udb":{"Id":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM="},"E2e":{"Prime":"E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873","Small_prime":"","Generator":"2"},"Cmix":{"Prime":"F6FAC7E480EE519354C058BF856AEBDC43AD60141BAD5573910476D030A869979A7E23F5FC006B6CE1B1D7CDA849BDE46A145F80EE97C21AA2154FA3A5CF25C75E225C6F3384D3C0C6BEF5061B87E8D583BEFDF790ECD351F6D2B645E26904DE3F8A9861CC3EAD0AA40BD7C09C1F5F655A9E7BA7986B92B73FD9A6A69F54EFC92AC7E21D15C9B85A76084D1EEFBC4781B91E231E9CE5F007BC75A8656CBD98E282671C08A5400C4E4D039DE5FD63AA89A618C5668256B12672C66082F0348B6204DD0ADE58532C967D055A5D2C34C43DF9998820B5DFC4C49C6820191CB3EC81062AA51E23CEEA9A37AB523B24C0E93B440FDC17A50B219AB0D373014C25EE8F","Small_prime":"","Generator":"B22FDF91EE6BA01BDE4969C1A986EA1F81C4A1795921403F3437D681D05E95167C2F6414CCB74AC8D6B3BA8C0E85C7E4DEB0E8B5256D37BC5C21C8BE068F5342858AFF2FC7FF2644EBED8B10271941C74C86CCD71AA6D2D98E4C8C70875044900F842998037A7DFB9BC63BAF1BC2800E73AF9615E4F5B869D4C6DE6E5F48FACE9CA594CC5D228CB7F763A0AD6BF6ED78B27F902D9ADA38A1FCD7D09E398CE377BB15A459044D3B8541DC6D8049B66AE1662682254E69FAD31CA0016251D0522EF8FE587A3F6E3AB1E5F9D8C2998874ABAB205217E95B234A7D3E69713B884918ADB57360B5DE97336C7DC2EB8A3FEFB0C4290E7A92FF5758529AC45273135427"}} \ No newline at end of file diff --git a/basice2e/permissioning.yaml b/basice2e/permissioning.yaml deleted file mode 100644 index 26985af..0000000 --- a/basice2e/permissioning.yaml +++ /dev/null @@ -1,91 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -logLevel: 1 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening pofrt of this server -port: 18000 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -minimumNodes: 5 - -minGatewayVersion: "3.0.0" -minServerVersion: "3.0.0" -minClientVersion: "4.0.0" -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - -# Public address used in NDF to give to client -registrationAddress: "0.0.0.0:11421" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -fullNdfOutputPath: "results/permissions-ndfoutput.json" -signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:18001" - -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - - -# Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 diff --git a/basice2e/regCodes.json b/basice2e/regCodes.json deleted file mode 100644 index fea6a9d..0000000 --- a/basice2e/regCodes.json +++ /dev/null @@ -1 +0,0 @@ -[{"RegCode": "qpol", "Order": "CR"},{"RegCode": "yiiq", "Order": "GB"},{"RegCode": "vydz", "Order": "SK"},{"RegCode": "gwxs", "Order": "HR"},{"RegCode": "nahv", "Order": "IQ"}, {"RegCode": "doko", "Order": "RU"}] diff --git a/basice2e/registration-commands.txt b/basice2e/registration-commands.txt deleted file mode 100644 index 3b62580..0000000 --- a/basice2e/registration-commands.txt +++ /dev/null @@ -1,2 +0,0 @@ -REGISTER EMAIL jake@elixxir.io -SEARCH EMAIL jake@elixxir.io diff --git a/basice2e/registration.json b/basice2e/registration.json deleted file mode 100644 index 0c4a121..0000000 --- a/basice2e/registration.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": 5, - "PrecomputationTimeout": 30000, - "RealtimeTimeout": 15000, - "DebugTrackRounds": true, - "BatchSize": 32, - "MinimumDelay": 1000, - "RealtimeDelay": 2000, - "Threshold": 0.3, - "NodeCleanUpInterval": 180000, - "ResourceQueueTimeout": 300000 -} diff --git a/basice2e/run.sh b/basice2e/run.sh deleted file mode 100755 index 5673641..0000000 --- a/basice2e/run.sh +++ /dev/null @@ -1,831 +0,0 @@ -#!/bin/bash - -# NOTE: This is verbose on purpose. -################################################################################ -## Initial Set Up & Clean Up of Past Runs -################################################################################ - -set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm -fr blob* || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir - -if [ $# -gt 1 ] -then - echo "usage: $0 [gatewayip:port]" - exit -fi - - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -UDBOUT=results/udb-console.txt -CLIENTCLEAN=results/clients-cleaned - -CLIENTOPTS="--password hello --ndf results/ndf.json --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" -CLIENTDMOPTS="--password hello --ndf results/ndf.json --waitTimeout 360 -v $DEBUGLEVEL" -CLIENTUDOPTS="--password hello --ndf results/ndf.json -v $DEBUGLEVEL" -CLIENTREKEYOPTS="--password hello --ndf results/ndf.json --verify-sends --waitTimeout 600 -v $DEBUGLEVEL" -CLIENTBACKUPOPTS="--password hello --ndf results/ndf.json -v $DEBUGLEVEL" - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - -################################################################################ -## Network Set Up -################################################################################ - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -if [ "$NETWORKENTRYPOINT" == "localhost:8440" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "DOWNLOADING TLS Cert..." -# -alpn h2 added to mimic grpc headers -CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi - - -#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 -#export GRPC_GO_LOG_SEVERITY_LEVEL=info - - -echo "RUNNING CLIENTS..." - -runclients() { - echo "Starting clients..." - - # Now send messages to each other - CTR=0 - for cid in $(seq 4 7) - do - # TODO: Change the recipients to send multiple messages. We can't - # run multiple clients with the same user id so we need - # updates to make that work. - # for nid in 1 2 3 4; do - for nid in 1 - do - nid=$(((($cid + 1) % 4) + 4)) - eval NICK=\${NICK${cid}} - # Send a regular message - mkdir -p blob$cid - CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client$cid$nid.log -s blob$cid/blob$cid --unsafe --sendid $cid --destid $nid --sendCount 20 --receiveCount 20 -m \"Hello, $nid\"" - eval $CLIENTCMD >> $CLIENTOUT/client$cid$nid.txt 2>&1 & - PIDVAL=$! - eval CLIENTS${CTR}=$PIDVAL - echo "$CLIENTCMD -- $PIDVAL" - CTR=$(($CTR + 1)) - done - done - - echo "WAITING FOR $CTR CLIENTS TO EXIT..." - for i in $(seq 0 $(($CTR - 1))) - do - eval echo "Waiting on \${CLIENTS${i}} ..." - eval wait \${CLIENTS${i}} - done -} - -############################################################################### -# Test Basic Client -############################################################################### - - -if [ "$NETWORKENTRYPOINT" == "localhost:8440" ] -then - - echo "RUNNING BASIC CLIENTS..." - runclients - echo "RUNNING BASIC CLIENTS (2nd time)..." - runclients - - # Send E2E messages between a single user - mkdir -p blob9 - mkdir -p blob18 - mkdir -p blob91 - echo "TEST E2E WITH PRECANNED USERS..." - CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 2 --receiveCount 2 -s blob9/blob9 --sendid 9 --destid 9 -m \"Hi 9->9, with E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 & - PIDVAL=$! - echo "$CLIENTCMD -- $PIDVAL" - wait $PIDVAL - CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 2 --receiveCount 2 -s blob9/blob9 --sendid 9 --destid 9 -m \"Hi 9->9, with E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 & - PIDVAL=$! - echo "$CLIENTCMD -- $PIDVAL" - wait $PIDVAL - CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client18.log --sendCount 2 --receiveCount 2 -s blob18/blob18 --slowPolling --sendid 18 --destid 18 -m \"Hi 18->18, with E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client18.txt 2>&1 & - PIDVAL=$! - echo "$CLIENTCMD -- $PIDVAL" - wait $PIDVAL - - - # Send E2E messages between two users - CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 3 --receiveCount 3 -s blob9/blob9 --sendid 9 --destid 18 -m \"Hi 9->18, with E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 & - PIDVAL1=$! - echo "$CLIENTCMD -- $PIDVAL" - CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client18.log --sendCount 3 --receiveCount 3 -s blob18/blob18 --sendid 18 --destid 9 -m \"Hi 18->9, with E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client18.txt 2>&1 & - PIDVAL2=$! - echo "$CLIENTCMD -- $PIDVAL" - wait $PIDVAL1 - wait $PIDVAL2 - - - # Send multiple E2E encrypted messages between users that discovered each other - echo "SENDING MESSAGES TO PRECANNED USERS AND FORCING A REKEY..." - CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client18_rekey.log --sendCount 20 --receiveCount 20 --destid 9 -s blob18/blob18 -m \"Hello, 9, with E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client18_rekey.txt 2>&1 & - PIDVAL=$! - echo "$CLIENTCMD -- $PIDVAL" - CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client9_rekey.log --sendCount 20 --receiveCount 20 --destid 18 -s blob9/blob9 -m \"Hello, 18, with E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client9_rekey.txt 2>&1 & - PIDVAL=$! - echo "$CLIENTCMD -- $PIDVAL" - wait $PIDVAL - - echo "FORCING HISTORICAL ROUNDS... (NON-E2E, PRECAN)" - CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client33.log -s blob33 --sendid 1 --destid 2 --sendCount 5 --receiveCount 5 -m \"Hello from 1, without E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client33.txt & - PIDVAL=$! - echo "$CLIENTCMD -- $PIDVAL" - CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client34.log -s blob34 --sendid 2 --destid 1 --sendCount 5 --receiveCount 5 -m \"Hello from 2, without E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client34.txt & - PIDVAL2=$! - echo "$CLIENTCMD -- $PIDVAL" - wait $PIDVAL - wait $PIDVAL2 - - echo "FORCING MESSAGE PICKUP RETRY... (NON-E2E, PRECAN)" - # Higher timeouts for this test to allow message pickup retry to function - CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry --unsafe -l $CLIENTOUT/client20.log -s blob20 --sendid 20 --destid 21 --sendCount 5 --receiveCount 5 -m \"Hello from 20, without E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client20.txt & - PIDVAL=$! - echo "$CLIENTCMD -- $PIDVAL" - CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry --unsafe -l $CLIENTOUT/client21.log -s blob21 --sendid 21 --destid 20 --sendCount 5 --receiveCount 5 -m \"Hello from 21, without E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client21.txt & - PIDVAL2=$! - echo "$CLIENTCMD -- $PIDVAL" - wait $PIDVAL - wait $PIDVAL2 - - -fi - -############################################################################### -# Test DMs -############################################################################### - -echo "SENDING DM MESSAGES TO NEW USERS" -# The goal here is to try 3 things: -# 1. Send a DM to myself -# 2. Receive a DM from someone else -# 3. Send a reply to the user who sent me a message in #2 -CLIENTCMD="timeout 360s ../bin/client $CLIENTDMOPTS -l $CLIENTOUT/client1.log -s blob1 dm -m \"Hello from Rick Prime to myself via DM\" --receiveCount 3" -eval $CLIENTCMD >> $CLIENTOUT/client1.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -# Now we scan the log for the DMToken and DMPubKey fields -sleep 1 -while [[ $(grep "DMTOKEN:" $CLIENTOUT/client1.log) == "" ]]; do - sleep 1 - echo -n "." -done -# Wait for a round or so for the self sent message to send -sleep 2 -# Now send the DM (#2) -DMTOKEN=$(grep -a DMTOKEN results/clients/client1.log | head -1 | awk '{print $5}') -DMPUBKEY=$(grep -a DMPUBKEY results/clients/client1.log | head -1 | awk '{print $5}') -echo "PubKey: $DMPUBKEY, Token: $DMTOKEN" -CLIENTCMD2="timeout 360s ../bin/client $CLIENTDMOPTS -l $CLIENTOUT/client2.log -s blob2 dm -m \"Hello from Ben Prime to Rick Prime via DM\" --dmPubkey $DMPUBKEY --dmToken $DMTOKEN --receiveCount 2" -eval $CLIENTCMD2 >> $CLIENTOUT/client2.txt & -PIDVAL2=$! -echo "$CLIENTCMD2 -- $PIDVAL2" -wait $PIDVAL -# When the first command exits, read the RECVDM fields and reply to -# the last received message (the first 2 are the self send) (#3) -RTOKEN=$(grep -a RECVDMTOKEN results/clients/client1.log | tail -1 | awk '{print $5}') -RPUBKEY=$(grep -a RECVDMPUBKEY results/clients/client1.log | tail -1 | awk '{print $5}') -CLIENTCMD="timeout 360s ../bin/client $CLIENTDMOPTS -l $CLIENTOUT/client1.log -s blob1 dm -m \"What up from Rick Prime to Ben Prime via DM\" --dmPubkey $RPUBKEY --dmToken $RTOKEN --receiveCount 1" -eval $CLIENTCMD >> $CLIENTOUT/client1.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -############################################################################### -# Test Sending E2E -############################################################################### - -# Non-precanned E2E user messaging -echo "SENDING E2E MESSAGES TO NEW USERS..." -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --writeContact $CLIENTOUT/rick42-contact.bin --unsafe -m \"Hello from Rick42 to myself, without E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client42.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --writeContact $CLIENTOUT/ben43-contact.bin --destfile $CLIENTOUT/rick42-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client43.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" - -while [ ! -s $CLIENTOUT/ben43-contact.bin ]; do - sleep 1 - echo -n "." -done - - -TMPID=$(cat $CLIENTOUT/client42.log | grep -a "User\:" | awk -F' ' '{print $5}') -RICKID=${TMPID} -echo "RICK ID: $RICKID" -TMPID=$(cat $CLIENTOUT/client43.log | grep -a "User\:" | awk -F' ' '{print $5}') -BENID=${TMPID} -echo "BEN ID: $BENID" - -# Client 42 will now wait for client 43's E2E Auth channel request and confirm -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destfile $CLIENTOUT/ben43-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" -eval $CLIENTCMD >> $CLIENTOUT/client42.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -# Test destid syntax too, note wait for 11 messages to catch the message from above ^^^ -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client42.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client43.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client42.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client43.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -############################################################################### -# Test Renegotiation -############################################################################### - -echo "TESTING RENEGOTIATION..." -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --destfile $CLIENTOUT/rick42-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client43.txt & -PIDVAL1=$! -# Unlike before, we don't accept the channel (it's already been accepted, it'll -# renegotiate), so instead we message ourselves to wait for the trigger -echo "$CLIENTCMD -- $PIDVAL1" -# Client 42 will now wait, again, for client 43's E2E Auth channel request and confirm -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destfile $CLIENTOUT/rick42-contact.bin --sendCount 10 --receiveCount 10 --unsafe -m \"Waiting on renegotiation\"" -eval $CLIENTCMD >> $CLIENTOUT/client42.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL1 -wait $PIDVAL2 -#Send a few messages -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client42.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client43.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL -wait $PIDVAL2 - -echo "SWITCHING RENEGOTIATION TEST..." -# Switch places, 42 renegotiates with 43 -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destfile $CLIENTOUT/ben43-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client42.txt & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -# Client 43 will now wait, for client 42's renegotiated E2E Auth channel request and confirm -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --destfile $CLIENTOUT/ben43-contact.bin --sendCount 10 --receiveCount 10 --unsafe -m \"Waiting on switching renegotiation\"" -eval $CLIENTCMD >> $CLIENTOUT/client43.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL1 -wait $PIDVAL2 -#Send a few more messages -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client42.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client43.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL -wait $PIDVAL2 -echo "END RENEGOTIATION" - -############################################################################### -# Test Deleting Contacts & Requests -############################################################################### - -echo "DELETING CONTACT FROM CLIENT..." -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --delete-channel --destfile $CLIENTOUT/ben43-contact.bin --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client42.txt & -echo "$CLIENTCMD -- $PIDVAL" -PIDVAL1=$! -wait $PIDVAL1 -# NOTE the command below causes the following EXPECTED error: -# panic: Could not confirm authentication channel for HTAmEeBhbLi6aFqcWsi3OZNDE/642GAchpATjhYFTHwD, waited 120 seconds. -# Note that the above is example, client IDs will vary -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client42.txt || true & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -echo "NOTE: The command above causes an EXPECTED failure to confirm authentication channel!" -wait $PIDVAL2 - -echo "DELETING REQUESTS FROM CLIENT.." -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client44.log -s blob44 --writeContact $CLIENTOUT/david44-contact.bin --unsafe -m \"Hello from David44 to myself, without E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client44.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -# NOTE: client45 is a precan user (see runclients), so we skip to 46 here. -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blob46 --writeContact $CLIENTOUT/matt46-contact.bin --destfile $CLIENTOUT/david44-contact.bin --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client46.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL2 - -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blob46 --delete-sent-requests --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client46.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL2 - -# This is tricky -- we've deleted the request without having received the -# confirmation, so now the receiver attempts to accept the channel while the -# sender (without confirmation) sends to them without an auth channel. -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client44.log -s blob44 --destfile $CLIENTOUT/matt46-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" -eval $CLIENTCMD >> $CLIENTOUT/client44.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blob46 --destfile $CLIENTOUT/david44-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from David, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client46.txt || true & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -echo "NOTE: The command above causes an EXPECTED failure to confirm authentication channel!" -wait $PIDVAL -wait $PIDVAL2 - -############################################################################### -# Test Simultaneous Auth -############################################################################### - -echo "CREATING USERS for SIMULTANEOUSAUTH TEST..." -JONOID=$(../bin/client init -s blob85 -l $CLIENTOUT/client85.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/jono85-contact.bin -v $DEBUGLEVEL) -SYDNEYID=$(../bin/client init -s blob86 -l $CLIENTOUT/client86.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/sydney86-contact.bin -v $DEBUGLEVEL) -echo "JONO ID: $JONOID" -echo "SYDNEY ID: $SYDNEYID" - -# Attempt to send an auth request at the same time. It's not guaranteed that -# one side won't send and the other won't receive before sending their request -# but this method has proven to be reasonably reliable. -echo "STARTING SIMULTANEOUSAUTH TEST..." -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client85.log -s blob85 --destfile $CLIENTOUT/sydney86-contact.bin --unsafe-channel-creation --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client85.txt & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client86.log -s blob86 --destfile $CLIENTOUT/jono85-contact.bin --unsafe-channel-creation --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client86.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL1 -wait $PIDVAL2 - -# Send a couple messages -echo "TESTING SIMULTANEOUSAUTH MESSAGE SEND..." -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client85.log -s blob85 --destfile $CLIENTOUT/sydney86-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello Sydney from Jono, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client85.txt & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client86.log -s blob86 --destfile $CLIENTOUT/jono85-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello Jono from Sydney, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client86.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL1 -wait $PIDVAL2 - -############################################################################### -# Test Rekey -############################################################################### - -echo "CREATING USERS for REKEY TEST..." -JAKEID=$(../bin/client init -s blob100 -l $CLIENTOUT/client100.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/Jake100-contact.bin -v $DEBUGLEVEL) -NIAMHID=$(../bin/client init -s blob101 -l $CLIENTOUT/client101.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/Niamh101-contact.bin -v $DEBUGLEVEL) -echo "JAKE ID: $JAKEID" -echo "NIAMH ID: $NIAMHID" - - -REKEYOPTS="--e2eMaxKeys 15 --e2eMinKeys 10 --e2eNumReKeys 5 --e2eRekeyThreshold 0.75" -# Client 101 will now send auth request -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blob101 --writeContact $CLIENTOUT/Niamh101-contact.bin --destfile $CLIENTOUT/Jake100-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client101.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -# Client 100 will now wait for client 101's E2E Auth channel request and confirm -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blob100 --destid b64:$NIAMHID --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" -eval $CLIENTCMD >> $CLIENTOUT/client100.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -echo "RUNNING REKEY TEST..." -# Test destid syntax too, note wait for 11 messages to catch the message from above ^^^ -CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blob100 --destid b64:$NIAMHID --sendCount 20 --receiveCount 20 -m \"Hello from Jake100, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client100.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blob101 --destid b64:$JAKEID --sendCount 20 --receiveCount 20 -m \"Hello from Niamh101, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client101.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -# Now we are just going to exhaust all the keys we have and see if we -# use the unconfirmed channels -CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blob100 --destid b64:$NIAMHID --sendCount 20 --receiveCount 0 -m \"Hello from Jake100, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client100.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -# And receive those messages sent to us -CLIENTCMD="timeout 600s ../bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blob101 --destid b64:$JAKEID --sendCount 0 --receiveCount 20" -eval $CLIENTCMD >> $CLIENTOUT/client101.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -############################################################################### -# Test Historical Rounds -############################################################################### - -echo "FORCING HISTORICAL ROUNDS..." -FH1ID=$(../bin/client init -s blob35 -l $CLIENTOUT/client35.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FH1-contact.bin -v $DEBUGLEVEL) -FH2ID=$(../bin/client init -s blob36 -l $CLIENTOUT/client36.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FH2-contact.bin -v $DEBUGLEVEL) -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client35.log -s blob35 --destid b64:$FH2ID --sendCount 5 --receiveCount 5 -m \"Hello from 35, without E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client35.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client36.log -s blob36 --destid b64:$FH1ID --sendCount 5 --receiveCount 5 -m \"Hello from 36, without E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client36.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -echo "FORCING MESSAGE PICKUP RETRY... " -FM1ID=$(../bin/client init -s blob22 -l $CLIENTOUT/client22.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FM1-contact.bin -v $DEBUGLEVEL) -FM2ID=$(../bin/client init -s blob23 -l $CLIENTOUT/client23.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/FM2-contact.bin -v $DEBUGLEVEL) -# Higher timeouts for this test to allow message pickup retry to function -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry -l $CLIENTOUT/client22.log -s blob22 --destid b64:$FM2ID --sendCount 5 --receiveCount 5 -m \"Hello from 22, without E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client22.txt || true & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS --forceMessagePickupRetry -l $CLIENTOUT/client23.log -s blob23 --destid b64:$FM1ID --sendCount 5 --receiveCount 5 -m \"Hello from 23, without E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client23.txt || true & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -echo "FIXME: The command above causes an UNEXPECTED failure and should be FIXED!" -wait $PIDVAL -wait $PIDVAL2 - -############################################################################### -# Test Back Up & Restore -############################################################################### - -echo "START BACKUP AND RESTORE..." -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --writeContact $CLIENTOUT/client120-contact.bin --unsafe -m \"Hello from Client120 to myself, without E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client120.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --writeContact $CLIENTOUT/client121-contact.bin --destfile $CLIENTOUT/client120-contact.bin --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client121.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" - -while [ ! -s $CLIENTOUT/client121-contact.bin ]; do - sleep 1 - echo -n "." -done - -# Client 120 will now wait for client 121's E2E Auth channel request and confirm -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" -eval $CLIENTCMD >> $CLIENTOUT/client120.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -# Send messages to each other -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client120, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client120.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --destfile $CLIENTOUT/client120-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client121, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client121.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -# Register 120 with UD -CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --register client120" -eval $CLIENTCMD >> $CLIENTOUT/client120.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -# Backup and restore 121 -CLIENTCMD="timeout 60s ../bin/client $CLIENTBACKUPOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --backupOut $CLIENTOUT/client121A.backup --backupPass hello --backupJsonOut $CLIENTOUT/client121A.backup.json --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client121.txt || true & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -echo "FIXME: The above exits uncleanly, but a backup file is created. The rest of the test fails...It should be FIXED!" -wait $PIDVAL - -rm -fr blob121 - -CLIENTCMD="timeout 60s ../bin/client $CLIENTBACKUPOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --backupIn $CLIENTOUT/client121A.backup --backupPass hello --backupJsonOut $CLIENTOUT/client121B.backup.json --backupIdList $CLIENTOUT/client121Partners.json --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client121.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --batchadd $CLIENTOUT/client121Partners.json --unsafe-channel-creation" -eval $CLIENTCMD >> $CLIENTOUT/client121.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" - -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 0 --receiveCount 0 --unsafe-channel-creation" -eval $CLIENTCMD >> $CLIENTOUT/client120.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL -wait $PIDVAL2 - -# Send messages to each other -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blob120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client120, with E2E Encryption after 121 restoring backup\" --unsafe-channel-creation" -eval $CLIENTCMD >> $CLIENTOUT/client120.txt || true & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blob121 --force-legacy --destfile $CLIENTOUT/client120-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client121, with E2E Encryption after 121 restoring backup\" --unsafe-channel-creation" -eval $CLIENTCMD >> $CLIENTOUT/client121.txt || true & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -# TODO: Add test that backs up and restore client 120. To do this, you need to be able to delete old requests - -echo "END BACKUP AND RESTORE..." - -############################################################################### -# Test Proto User -############################################################################### - -# Proto user test: client25 and client26 generate a proto user JSON file and close. -# Both clients are restarted and load from their respective proto user files and attempt to send. - -# Generate contact and proto user file for client25 -echo "TESTING PROTO USER FILE..." - -CLIENTCMD="timeout 60s ../bin/client -l $CLIENTOUT/client25.log -s blob11420 --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/josh25-contact.bin --protoUserOut $CLIENTOUT/client25Proto.json --unsafe --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client25.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -# Generate contact and proto user file for client 26 -CLIENTCMD="timeout 60s ../bin/client -l $CLIENTOUT/client26.log -s blob11421 --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/jonah26-contact.bin --protoUserOut $CLIENTOUT/client26Proto.json --unsafe --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client26.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -# Clients will now load from the protoUser file and write to session -CLIENTCMD="timeout 60s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --protoUserPath $CLIENTOUT/client25Proto.json --unsafe --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client25.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 60s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26 --protoUserPath $CLIENTOUT/client26Proto.json --unsafe --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client26.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL -wait $PIDVAL2 - -# Continue with E2E testing with session files loaded from proto -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --writeContact $CLIENTOUT/josh25-contact.bin --unsafe -m \"Hello from Josh25 to myself, without E2E Encryption\" " -eval $CLIENTCMD >> $CLIENTOUT/client25.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26 --writeContact $CLIENTOUT/jonah26-contact.bin --destfile $CLIENTOUT/josh25-contact.bin --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client26.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" - -while [ ! -s $CLIENTOUT/jonah26-contact.bin ]; do - sleep 1 - echo -n "." -done -sleep 1 - -# Print IDs to console -TMPID=$(cat $CLIENTOUT/client25.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1) -JOSHID=${TMPID} -echo "JOSH ID: $JOSHID" -TMPID=$(cat $CLIENTOUT/client26.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1) -JONAHID=${TMPID} -echo "JONAH ID: $JONAHID" - -## Client 25 will now wait for client 26's E2E Auth channel request and confirm -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destfile $CLIENTOUT/jonah26-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" -eval $CLIENTCMD >> $CLIENTOUT/client25.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -# Send E2E messages with written sessions -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destid b64:$JONAHID --sendCount 5 --receiveCount 5 -m \"Hello from Josh25, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client25.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26 --destid b64:$JOSHID --sendCount 5 --receiveCount 5 -m \"Hello from Jonah26, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client26.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destid b64:$JONAHID --sendCount 5 --receiveCount 5 -m \"Hello from Josh25, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client25.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26 --destid b64:$JOSHID --sendCount 5 --receiveCount 5 -m \"Hello from Jonah26, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client26.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." - - -cp $CLIENTOUT/*.txt $CLIENTCLEAN/ - -sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt -rm $CLIENTCLEAN/client*.txt.bak - -# sort -b -o "$CLIENTOUT/client80.txt" "$CLIENTCLEAN/client80.txt" -# sort -b -o "$CLIENTOUT/client81.txt" "$CLIENTCLEAN/client81.txt" -# sort -b -o "$CLIENTOUT/client82.txt" "$CLIENTCLEAN/client82.txt" - -for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do - sort -o tmp $CLIENTCLEAN/$C || true - cp tmp $CLIENTCLEAN/$C - # uniq tmp $CLIENTCLEAN/$C || true -done - -set -e - -GOLDOUTPUT=clients.goldoutput -if [ "$NETWORKENTRYPOINT" != "localhost:8440" ] -then - rm -fr clients.net_goldoutput || true - GOLDOUTPUT=clients.net_goldoutput - cp -r clients.goldoutput clients.net_goldoutput - # Delete the localhost only files - rm $GOLDOUTPUT/client13* || true - rm $GOLDOUTPUT/client18* || true - rm $GOLDOUTPUT/client19* || true - rm $GOLDOUTPUT/client2[01]* || true - rm $GOLDOUTPUT/client31* || true - rm $GOLDOUTPUT/client3[56]* || true - rm $GOLDOUTPUT/client45* || true - rm $GOLDOUTPUT/client56* || true - rm $GOLDOUTPUT/client67* || true - rm $GOLDOUTPUT/client74* || true - rm $GOLDOUTPUT/client9* || true -fi - - -set +x -diff -aru $GOLDOUTPUT $CLIENTCLEAN -cat $CLIENTOUT/client42.log | grep -a "Could not confirm authentication channel" > results/deleteContact.txt || true -echo "CHECKING FOR SUCCESSFUL CONTACT DELETION" -if [ -s results/deleteContact.txt ] -then - echo "CONTACT DELETION SUCCESSFUL" -else - echo "CONTACT DELETION FAILED" - [ -s results/deleteContact.txt ] -fi - -if [ "$NETWORKENTRYPOINT" == "localhost:8440" ] -then - - #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true - #diff -ruN results/client-errors.txt noerrors.txt - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - IGNORESERVE="Failed to serve " - IGNORESTART="Failed to start " - IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt - echo "Checking backup files for equality..." - # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt - diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true - # diff -aruN client120BackupDiff.txt noerrors.txt - echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!" - #diff -aruN client121BackupDiff.txt noerrors.txt -fi - -echo "NO OUTPUT ERRORS, SUCCESS!" diff --git a/basice2e/server-1.yaml b/basice2e/server-1.yaml deleted file mode 100644 index fc8b704..0000000 --- a/basice2e/server-1.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2019 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ -# registration code used for first time registration. Unique. Provided by xx network -registrationCode: "qpol" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 1 -cmix: - paths: - idf: "results/servers/nodeID-1.json" - cert: "../keys/cmix.rip.crt" - key: "../keys/cmix.rip.key" - log: "results/servers/server-1.log" - errOutput: "results/servers/server-1.err" - ipListOutput: "results/servers/iplist-1.txt" - port: 50000 - overridePublicIP: "127.0.0.1" -database: - name: "node1" - username: "cmix_server" - password: "" - address: "" -gateway: - paths: - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - cert: "../keys/cmix.rip.crt" - address: "127.0.0.1:18000" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "results/servers/server-1-metrics.log" -# === END YAML diff --git a/basice2e/server-2.yaml b/basice2e/server-2.yaml deleted file mode 100644 index 37765bc..0000000 --- a/basice2e/server-2.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2019 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ -# registration code used for first time registration. Unique. Provided by xx network -registrationCode: "yiiq" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 1 -cmix: - paths: - idf: "results/servers/nodeID-2.json" - cert: "../keys/cmix.rip.crt" - key: "../keys/cmix.rip.key" - log: "results/servers/server-2.log" - errOutput: "results/servers/server-2.err" - ipListOutput: "results/servers/iplist-2.txt" - port: 50001 - overridePublicIP: "127.0.0.1" -database: - name: "node2" - username: "cmix_server" - password: "" - address: "" -gateway: - paths: - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - cert: "../keys/cmix.rip.crt" - address: "127.0.0.1:18000" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "results/servers/server-2-metrics.log" -# === END YAML diff --git a/basice2e/server-3.yaml b/basice2e/server-3.yaml deleted file mode 100644 index f17b425..0000000 --- a/basice2e/server-3.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2019 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ -# registration code used for first time registration. Unique. Provided by xx network -registrationCode: "vydz" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 1 -cmix: - paths: - idf: "results/servers/nodeID-3.json" - cert: "../keys/cmix.rip.crt" - key: "../keys/cmix.rip.key" - log: "results/servers/server-3.log" - errOutput: "results/servers/server-3.err" - ipListOutput: "results/servers/iplist-3.txt" - port: 50002 - overridePublicIP: "127.0.0.1" -database: - name: "node3" - username: "cmix_server" - password: "" - address: "" -gateway: - paths: - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - cert: "../keys/cmix.rip.crt" - address: "127.0.0.1:18000" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "results/servers/server-3-metrics.log" -# === END YAML diff --git a/basice2e/server-4.yaml b/basice2e/server-4.yaml deleted file mode 100644 index b13f6fd..0000000 --- a/basice2e/server-4.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2019 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ -# registration code used for first time registration. Unique. Provided by xx network -registrationCode: "gwxs" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 1 -cmix: - paths: - idf: "results/servers/nodeID-4.json" - cert: "../keys/cmix.rip.crt" - key: "../keys/cmix.rip.key" - log: "results/servers/server-4.log" - errOutput: "results/servers/server-4.err" - ipListOutput: "results/servers/iplist-4.txt" - port: 50003 - overridePublicIP: "127.0.0.1" -database: - name: "node4" - username: "cmix_server" - password: "" - address: "" -gateway: - paths: - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - cert: "../keys/cmix.rip.crt" - address: "127.0.0.1:18000" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "results/servers/server-4-metrics.log" -# === END YAML diff --git a/basice2e/server-5.yaml b/basice2e/server-5.yaml deleted file mode 100644 index d820326..0000000 --- a/basice2e/server-5.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2019 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ -# registration code used for first time registration. Unique. Provided by xx network -registrationCode: "nahv" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 1 -cmix: - paths: - idf: "results/servers/nodeID-5.json" - cert: "../keys/cmix.rip.crt" - key: "../keys/cmix.rip.key" - log: "results/servers/server-5.log" - errOutput: "results/servers/server-5.err" - ipListOutput: "results/servers/iplist-5.txt" - port: 50004 - overridePublicIP: "127.0.0.1" -database: - name: "node5" - username: "cmix_server" - password: "" - address: "" -gateway: - paths: - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - cert: "../keys/cmix.rip.crt" - address: "127.0.0.1:18000" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "results/servers/server-5-metrics.log" -# === END YAML diff --git a/basice2e/tmp b/basice2e/tmp deleted file mode 100644 index 5e19513..0000000 --- a/basice2e/tmp +++ /dev/null @@ -1,7 +0,0 @@ -Received 0/0 messages -Received 3/3 messages -Received from ChannelName this message: Hello, channel, this is 500 -Received from ChannelName this message: Hello, channel, this is 501 -Received from ChannelName this message: Hello, channel, this is 502 -Successfully joined channel ChannelName -Successfully left channel ChannelName diff --git a/basice2e/ud-stress.sh b/basice2e/ud-stress.sh deleted file mode 100755 index 06ccce3..0000000 --- a/basice2e/ud-stress.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/bash - -set -e - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - -RESULTSFOLDER="udresults" -CLIENTOPTS="--password hello --ndf results/ndf.json --verify-sends --sendDelay 100 --waitTimeout 360 --unsafe-channel-creation -v $DEBUGLEVEL" -CLIENTUDOPTS="--password hello --ndf results/ndf.json -v $DEBUGLEVEL" -CLIENTOUT=$RESULTSFOLDER - -rm -fr "$RESULTSFOLDER.bak" || true -cp -ra "$RESULTSFOLDER" "$RESULTSFOLDER.bak" || true -mkdir -p "$RESULTSFOLDER" || true - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - echo "NO NETWORK SPECIFIED, USING mainnet" - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -echo "Connecting to network defined at $NETWORKENTRYPOINT" -echo $NETWORKENTRYPOINT > "$RESULTSFOLDER/startgwserver.txt" - -echo "DOWNLOADING TLS Cert..." -CMD="openssl s_client -showcerts -connect $(cat $RESULTSFOLDER/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "$RESULTSFOLDER/startgwcert.bin" -CMD="cat $RESULTSFOLDER/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "$RESULTSFOLDER/startgwcert.pem" -head "$RESULTSFOLDER/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(cat $RESULTSFOLDER/startgwserver.txt) --cert $RESULTSFOLDER/startgwcert.pem" -eval $CLIENTCMD >> $RESULTSFOLDER/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat $RESULTSFOLDER/ndf.json | jq . | head -5 - -file $RESULTSFOLDER/ndf.json - -if [ ! -s $RESULTSFOLDER/ndf.json ] -then - echo "$RESULTSFOLDER/ndf.json is empty, cannot proceed" - exit -1 -fi - -# Create session -if [ ! -s $RESULTSFOLDER/blob13 ]; then - echo "CREATING NEW CLIENT..." - CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s $CLIENTOUT/blob13 --writeContact $CLIENTOUT/client13-contact.bin --unsafe -m \"Hello from Client13 to myself, without E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client13.txt & - PIDVAL=$! - echo "$CLIENTCMD -- $PIDVAL" - wait $PIDVAL - echo "DONE!" -else - echo "REUSING EXISTING CLIENT..." - mv $RESULTSFOLDER/client13.txt $RESULTSFOLDER/client13.txt.bak - mv $RESULTSFOLDER/client13.log $RESULTSFOLDER/client13.log.bak - CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s $CLIENTOUT/blob13 --writeContact $CLIENTOUT/client13-contact.bin --unsafe -m \"Hello from Client13 to myself, without E2E Encryption\"" - eval $CLIENTCMD >> $CLIENTOUT/client13.txt & - PIDVAL=$! - echo "$CLIENTCMD -- $PIDVAL" - wait $PIDVAL - echo "DONE!" -fi - -# The following attempts to register a username, not normally needed to be tested... -# CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s $CLIENTOUT/blob13 --register josh13" -# eval $CLIENTCMD >> $CLIENTOUT/client13.txt & -# PIDVAL=$! -# echo "$CLIENTCMD -- $PIDVAL" -# wait $PIDVAL - - -# Test forever -while [ true ]; do - echo "SEARCHING..." - CLIENTCMD="time timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s $CLIENTOUT/blob13 --searchusername Jake" - eval $CLIENTCMD > $CLIENTOUT/josh31.bin & - PIDVAL1=$! - echo "$CLIENTCMD -- $PIDVAL1" - wait $PIDVAL1 - echo "SUCCESS!" -done diff --git a/basice2e/udb.yaml b/basice2e/udb.yaml deleted file mode 100644 index 14b3ed1..0000000 --- a/basice2e/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "18001" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:18000" -devMode: true \ No newline at end of file diff --git a/broadcast/- b/broadcast/- deleted file mode 100644 index 6c85dd3..0000000 --- a/broadcast/- +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)iM+XXLWaD+0URs7rIg/VuNqdZMN81u1mdsmg63WIsgEDrgZ7Ugdw/BAr6TRLgP/lKjVRl0Dl+CWyFvZo0SzyA7cbr8juCKGPQbiQGV+HnU75423wf5Tv6Sd8rQH2bz+YE+HQv+3P8G9B+NczUkL4FRRX8Vm3HusBBNdR3dFI+yiOvOCMXrYriGAglVM9kx8XDLJv129Urqief7d2tr3Nn+KyuB070K56+6Hgizu8PxdHI3beEso7c+q50kIB7gynejHLFkpGfkogBe9evTN4MOyGgiL4SMgRtwMH3g/DNnmZQyRh4KkgFB6iCj+BTtrxjJlO/wO6Spci+LmM/9qRBEPcnutGqkmvMFe6IZL7YMZNUw0EnFEYmt1aqRn0Cc/1HC1htxzUhzAyCI4xq/B0B8uBhqumk/yfY6vaacjU7yENsOnGAY8FwYBAS0gMo6LF/6Z5x+j+9CDzQiano6N2cS0Q29aWnHLIBg/d4jGT0OE2SCcit7UhnmHoxEJfscwjHLG4hUwKLhe4aeBd+kf0YXDsLiggQVjkpO+G1poTX3JSKEQR5BmCEyryDwYNApLm7upRqUrBVUPgxQAAAgA7BukWBeqDgVfuMIY+MXzdxw==xxc> \ No newline at end of file diff --git a/broadcast/betanet.txt b/broadcast/betanet.txt deleted file mode 100644 index e35ebcf..0000000 --- a/broadcast/betanet.txt +++ /dev/null @@ -1,306 +0,0 @@ -188.187.190.53:22840 -135.181.134.215:22840 -90.64.159.233:22840 -63.224.248.74:22840 -78.63.197.35:22840 -95.217.225.220:22840 -167.86.89.25:22840 -134.17.158.63:22840 -77.92.107.203:22840 -136.50.65.29:22840 -176.99.131.128:22840 -109.251.8.131:22840 -85.237.9.101:22840 -195.93.180.119:22840 -193.106.95.173:22840 -193.106.95.227:22840 -168.119.49.161:22840 -193.106.94.75:22840 -176.99.131.188:22840 -180.150.125.93:22840 -135.181.29.63:22840 -116.202.99.94:22840 -94.130.150.94:22840 -93.81.246.111:22840 -183.99.96.180:22101 -62.171.131.155:22840 -159.65.122.44:22840 -45.122.123.134:22840 -157.90.34.21:22840 -107.182.163.106:22840 -52.124.124.210:22840 -170.187.225.94:22840 -95.217.228.117:22840 -88.99.13.205:22840 -52.183.38.229:22840 -77.223.99.126:22840 -37.228.116.99:22840 -167.99.247.6:22840 -5.45.81.112:22840 -193.47.33.51:22840 -5.45.81.110:22840 -69.197.179.42:22840 -69.197.179.162:22840 -94.244.64.115:22840 -109.100.137.105:22840 -86.57.132.29:22840 -178.248.81.38:22840 -213.55.169.27:22840 -212.24.106.228:22840 -195.181.247.171:22840 -82.148.29.76:22840 -81.163.28.252:22840 -80.249.150.70:22840 -79.98.24.202:22840 -62.173.145.42:22840 -77.223.98.157:22840 -193.47.33.132:22840 -82.148.19.245:22840 -31.184.254.81:22840 -195.64.234.210:22840 -195.64.234.98:22840 -78.26.169.79:22840 -62.77.156.70:22840 -77.223.97.164:22840 -193.47.33.50:22840 -62.173.140.126:22840 -93.81.246.64:22840 -149.210.192.112:22840 -77.120.176.213:22840 -188.138.242.248:22840 -178.168.101.47:22840 -37.97.220.128:22840 -69.197.147.18:22840 -81.240.39.28:22840 -141.105.67.92:22840 -213.10.138.128:22840 -217.136.119.184:22840 -85.201.32.4:22840 -92.64.19.232:22840 -89.221.20.22:22840 -62.167.123.100:22800 -161.230.93.70:22840 -76.65.147.14:22840 -86.7.108.18:22840 -109.129.225.57:22840 -194.158.207.84:22840 -116.203.252.237:22840 -217.12.210.152:22840 -45.115.107.124:22840 -178.128.199.183:22840 -93.107.156.53:22840 -82.15.128.246:22840 -70.75.89.186:22840 -109.87.172.237:22840 -80.90.47.210:22840 -90.189.180.24:22840 -46.98.0.118:22840 -85.221.55.10:22840 -191.32.173.237:22840 -80.5.16.132:22840 -173.212.199.13:22840 -120.88.119.219:22840 -135.19.193.9:22840 -134.249.187.129:22840 -188.194.110.16:22840 -195.38.9.10:22840 -46.42.16.25:22840 -31.165.163.210:22840 -89.232.195.123:22840 -77.122.54.99:22840 -85.105.79.102:22840 -163.172.149.150:22840 -5.53.16.225:22840 -178.124.192.61:22840 -167.99.130.234:22840 -95.158.15.24:22840 -195.239.181.117:22840 -104.158.0.184:22840 -62.171.142.152:22840 -77.122.89.98:22840 -200.37.209.49:22840 -181.43.154.26:22840 -185.230.88.227:22840 -91.169.185.175:62840 -217.136.102.221:22840 -149.210.229.230:22840 -176.37.104.235:22840 -37.97.224.62:22840 -94.107.24.186:22840 -151.252.109.180:22840 -195.93.181.189:22840 -195.93.181.192:22840 -149.210.229.210:22840 -77.122.48.168:22840 -185.4.65.20:22840 -37.97.224.55:22840 -178.170.47.131:22840 -37.97.224.32:22840 -178.170.39.140:22840 -135.181.139.234:22840 -78.129.38.119:22840 -78.181.101.251:22840 -68.183.34.147:22840 -5.255.173.96:22840 -195.177.94.31:22840 -37.57.87.184:22840 -37.97.224.19:22840 -209.145.53.106:22840 -176.214.77.176:22840 -143.178.133.206:22840 -85.118.207.56:22840 -88.211.82.66:22840 -185.23.83.59:22840 -93.75.3.51:22840 -176.210.55.44:22840 -83.144.175.13:22840 -78.188.200.189:22840 -174.114.197.104:22840 -188.83.79.190:22840 -66.183.0.247:22840 -5.61.52.49:22840 -149.210.229.197:22840 -82.118.17.160:22841 -31.202.122.239:22840 -46.150.9.16:22840 -205.250.188.151:22840 -149.210.229.175:22840 -77.122.91.193:22840 -31.202.122.152:22840 -151.95.102.130:22840 -91.245.37.80:22840 -199.119.86.179:22840 -93.72.67.70:22840 -195.134.65.165:22840 -103.56.39.162:20090 -178.27.238.236:22840 -149.210.192.41:22840 -103.56.39.183:20090 -5.61.54.13:22840 -78.188.51.20:22840 -93.157.248.142:22840 -31.172.140.126:22840 -95.189.106.118:22840 -86.94.128.12:22840 -5.132.111.41:22840 -109.129.220.59:22840 -84.83.206.46:22840 -136.144.240.106:22840 -89.28.86.208:22840 -89.28.6.19:22840 -5.255.173.43:22840 -77.122.29.37:22840 -136.144.203.178:22840 -136.144.230.186:22840 -136.144.206.186:22840 -61.6.46.179:22840 -31.202.123.194:22840 -135.125.235.32:22840 -103.83.149.90:22840 -66.183.0.246:22840 -185.12.142.45:22840 -46.37.194.90:22840 -78.26.140.125:22840 -89.191.125.159:22840 -31.201.104.137:22840 -77.92.109.45:22840 -108.249.110.153:22840 -196.41.195.118:22840 -101.98.209.195:22840 -77.92.109.43:22840 -188.127.250.195:22840 -76.176.192.12:22840 -91.177.2.56:22840 -82.193.107.60:22840 -86.83.150.15:22840 -134.249.121.177:22840 -46.166.138.219:22840 -75.156.104.27:22840 -109.100.137.83:22840 -174.88.128.201:22840 -178.168.68.129:22840 -66.183.0.245:22840 -62.238.247.127:22840 -65.21.151.29:22841 -207.81.171.109:22840 -155.93.136.90:22840 -190.22.170.63:22840 -136.144.230.185:22840 -102.182.202.19:22840 -70.52.24.55:22841 -195.191.174.168:22840 -88.223.114.249:22840 -46.142.181.156:22840 -174.94.125.212:22840 -184.146.45.46:22840 -136.144.236.167:22840 -174.88.104.199:22840 -88.223.115.74:22840 -178.170.40.34:22840 -91.149.187.22:22840 -178.150.223.30:22840 -195.138.68.0:22840 -77.122.59.150:22840 -91.241.178.180:22840 -95.164.8.35:22840 -188.138.162.9:22840 -77.122.80.204:22840 -46.150.9.21:22840 -46.119.158.146:22840 -5.34.183.246:22842 -65.21.180.158:22840 -188.187.188.47:22840 -62.171.137.40:22840 -178.151.197.49:22840 -213.231.5.100:22840 -194.28.172.72:22840 -76.71.65.212:22840 -76.71.65.96:22840 -185.46.60.30:22840 -185.172.34.211:22840 -87.255.69.231:22840 -91.222.114.19:22840 -162.55.58.184:22840 -91.233.171.9:22840 -82.16.173.238:22840 -77.169.225.166:22840 -87.248.171.27:22840 -81.243.65.75:22840 -207.6.218.81:22840 -207.6.218.110:22840 -188.124.46.130:22840 -159.196.176.42:22840 -143.244.158.201:22840 -185.224.108.251:22840 -80.100.87.204:22840 -185.48.197.184:22840 -95.67.28.111:22840 -171.25.167.187:22840 -176.100.12.243:22840 -185.224.108.82:22840 -217.12.223.90:22852 -185.224.110.37:22840 -195.138.85.182:22840 -176.104.49.11:22840 -176.104.52.215:22840 -88.204.18.134:22840 -217.26.167.45:22840 -185.172.34.212:22840 -87.255.69.232:22840 -5.165.211.128:22840 -136.144.205.104:22840 -178.168.57.176:22840 -87.255.69.238:22840 -194.233.67.188:22840 -88.159.77.30:22840 -195.74.67.235:22840 -174.94.68.31:22840 -91.5.88.185:22841 -179.223.85.90:22840 -139.59.245.228:22840 -199.119.86.185:22840 -105.228.133.62:22840 -139.59.126.219:22840 -91.5.83.238:22842 -95.216.221.129:22840 -158.140.234.119:22840 diff --git a/broadcast/client-registrar.yaml b/broadcast/client-registrar.yaml deleted file mode 100644 index fdb4f5f..0000000 --- a/broadcast/client-registrar.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# ================================== -# Client Registrar Configuration -# ================================== - -# Log message level (0 = info, 1 = debug, >1 = trace) -logLevel: 0 -# Path to log file -logPath: "results/client-registrar.log" - -# Public address, used in NDF it gives to client -publicAddress: "0.0.0.0:20121" -# The listening port of this server -port: 20121 - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -# Maximum number of connections per period -userRegCapacity: 1000 -# How often the number of connections is reset -userRegLeakPeriod: "24h" - -# Database connection information -dbUsername: "cmix" -dbPassword: "" -dbName: "cmix_server" -dbAddress: "" - -# List of client codes to be added to the database (for testing) -clientRegCodes: - - "AAAA" - - "BBBB" - - "CCCC" diff --git a/broadcast/devnet.txt b/broadcast/devnet.txt deleted file mode 100644 index 922c0de..0000000 --- a/broadcast/devnet.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.125.145:11420 -35.163.143.85:11420 -34.218.59.127:11420 diff --git a/broadcast/gateway-1.yaml b/broadcast/gateway-1.yaml deleted file mode 100644 index 132f95c..0000000 --- a/broadcast/gateway-1.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-1.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10120" - -# The listening port of this gateway -Port: 1120 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-0.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/broadcast/gateway-2.yaml b/broadcast/gateway-2.yaml deleted file mode 100644 index d182c66..0000000 --- a/broadcast/gateway-2.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-2.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10121" - -# The listening port of this gateway -Port: 1121 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-1.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/broadcast/gateway-3.yaml b/broadcast/gateway-3.yaml deleted file mode 100644 index 294bfc6..0000000 --- a/broadcast/gateway-3.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-3.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10122" - -# The listening port of this gateway -Port: 1122 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-2.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/broadcast/gateway-4.yaml b/broadcast/gateway-4.yaml deleted file mode 100644 index 7667873..0000000 --- a/broadcast/gateway-4.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-4.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10123" - -# The listening port of this gateway -Port: 1123 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-3.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/broadcast/gateway-5.yaml b/broadcast/gateway-5.yaml deleted file mode 100644 index 71ed41a..0000000 --- a/broadcast/gateway-5.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-5.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10124" - -# The listening port of this gateway -Port: 1124 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-4.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/broadcast/mainnet.txt b/broadcast/mainnet.txt deleted file mode 100644 index 3fbbb1c..0000000 --- a/broadcast/mainnet.txt +++ /dev/null @@ -1,74 +0,0 @@ -"65.21.170.29:22840" -"88.198.2.52:22840" -"188.40.70.250:22840" -"185.218.125.248:22840" -"31.202.122.131:22840" -"173.249.60.80:22840" -"65.21.76.35:22840" -"195.201.171.211:22840" -"65.21.221.236:22840" -"37.97.220.130:22840" -"159.148.31.238:22840" -"nodochile.myddns.me:22840" -"94.130.10.38:22840" -"188.240.52.205:22840" -"212.38.189.73:22840" -"xerxesgw.caius.ovh:22840" -"46.4.50.57:22840" -"103.195.101.143:22840" -"49.12.45.179:22840" -"167.172.88.140:22840" -"5.189.176.210:22840" -"135.181.213.94:22840" -"213.136.70.8:22840" -"194.163.163.77:22840" -"65.21.204.13:22840" -"88.119.195.16:22840" -"88.198.2.51:22840" -"181.43.194.251:22840" -"159.148.31.232:22840" -"65.108.52.154:11098" -"138.201.37.166:22840" -"kmil.go.ro:22840" -"37.97.169.197:22840" -"144.76.65.107:22840" -"178.18.253.13:22840" -"162.55.131.110:22840" -"91.230.111.8:22840" -"109.98.108.250:22840" -"15.161.170.171:22840" -"37.97.224.110:22840" -"54.79.206.112:22840" -"144.126.149.30:22840" -"194.163.171.145:22840" -"37.97.220.129:22840" -"194.163.170.125:22840" -"65.21.143.248:22840" -"149.210.229.175:22840" -"149.210.192.112:22840" -"149.210.192.111:22840" -"65.21.234.163:22840" -"149.210.229.223:22840" -"173.249.44.133:22840" -"75.119.130.123:22840" -"194.233.77.127:22840" -"66.94.99.187:22840" -"144.91.99.106:22840" -"185.214.134.207:22840" -"95.217.207.236:22840" -"95.217.206.164:22840" -"173.212.233.67:22840" -"37.55.17.106:22840" -"65.108.3.162:22840" -"186.106.188.155:22840" -"109.237.108.117:22840" -"65.108.42.168:22840" -"65.21.234.86:22840" -"65.21.50.177:22840" -"194.163.189.115:22840" -"135.181.212.170:22840" -"23.88.104.166:22840" -"103.107.182.192:22840" -"65.108.2.254:22840" -"94.130.136.136:22840" -"162.55.100.14:22840" diff --git a/broadcast/network.config b/broadcast/network.config deleted file mode 100644 index 038a582..0000000 --- a/broadcast/network.config +++ /dev/null @@ -1,26 +0,0 @@ -localhost:1120 -# This is the network configuration file. The top line of this file, -# when not set via command line, is used to determine to which network -# the integration test will be run against. - -# Note you can also specify "release", "betanet", or "protonet" on run.sh - -# Betanet gateways -109.169.15.30:22840 -5.12.137.118:22840 -92.246.20.92:22840 -178.16.39.203:22840 -86.135.17.18:22840 - -# Release (messenger test) network gateways -34.221.74.216:11420 -52.25.9.28:11420 -54.149.122.115:11420 - - -# protonet -185.152.3.247:11420 -93.151.207.39:11420 -93.107.154.131:11420 -173.208.225.75:11421 -92.246.20.92:11420 diff --git a/broadcast/noerrors.txt b/broadcast/noerrors.txt deleted file mode 100644 index e69de29..0000000 diff --git a/broadcast/permissioning.yaml b/broadcast/permissioning.yaml deleted file mode 100644 index 32c7965..0000000 --- a/broadcast/permissioning.yaml +++ /dev/null @@ -1,96 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -loglevel: 2 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening port of this server -port: 20120 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -minimumNodes: 5 - -minGatewayVersion: "3.0.0" -minServerVersion: "3.0.0" -minClientVersion: "4.0.0" -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - - -# Public address used in NDF to give to client -registrationAddress: "0.0.0.0:20121" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -fullNdfOutputPath: "results/permissions-ndfoutput.json" -signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:30120" - -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - - -# Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 diff --git a/broadcast/regCodes.json b/broadcast/regCodes.json deleted file mode 100644 index 59ada42..0000000 --- a/broadcast/regCodes.json +++ /dev/null @@ -1 +0,0 @@ -[{"RegCode": "enkf", "Order": "CR"},{"RegCode": "ozxl", "Order": "CR"},{"RegCode": "qgby", "Order": "CR"},{"RegCode": "llhb", "Order": "CR"},{"RegCode": "umks", "Order": "CR"}] \ No newline at end of file diff --git a/broadcast/release.txt b/broadcast/release.txt deleted file mode 100644 index 4442567..0000000 --- a/broadcast/release.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.230.124:11420 -54.187.42.105:11420 -54.149.115.63:11420 diff --git a/broadcast/run.sh b/broadcast/run.sh deleted file mode 100755 index a2b429c..0000000 --- a/broadcast/run.sh +++ /dev/null @@ -1,229 +0,0 @@ -# NOTE: This is verbose on purpose. -################################################################################ -## Initial Set Up & Clean Up of Past Runs -################################################################################ - -# Copy file into folder if it does not already exist -if [ ! -f network.sh ]; then - cp ../network/network.sh . -fi - -set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm -fr blob* || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir - -if [ $# -gt 1 ] -then - echo "usage: $0 [gatewayip:port]" - exit -fi - - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -UDBOUT=results/udb-console.txt -CLIENTCLEAN=results/clients-cleaned - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - - -################################################################################ -## Network Set Up -################################################################################ - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -if [ "$NETWORKENTRYPOINT" == "localhost:1120" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "localhost:1120" > results/startgwserver.txt - -echo "DONE LETS DO STUFF" - -echo "DOWNLOADING TLS Cert..." -# -alpn h2 added to mimic grpc headers -CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi - -############################################################################### -# Test Broadcast -############################################################################### - - -echo "TESTING BROADCAST CHANNELS..." - -# New broadcast channel... -CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 1800 -l $CLIENTOUT/client130.log -s blob130 --new --channelName \"broadcast_test\" --description \"Integration test channel\" --chanPath results/integration-channel.json --keyPath results/integration-chan-key.pem --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client130.txt & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -wait $PIDVAL1 - -# Start client to listen for messages on the channel -CLIENTCMD="timeout 480s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 1800 -l $CLIENTOUT/client131.log -s blob131 --chanPath results/integration-channel.json --receiveCount 4" -eval $CLIENTCMD >> $CLIENTOUT/client131.txt & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" - -sleep 10 - -# Send symmetric broadcast to channel -CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 360 -l $CLIENTOUT/client132.log -s blob132 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --symmetric \"Hello to symmetric channel from channel client 122!\"" -eval $CLIENTCMD >> $CLIENTOUT/client132.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" - -# Send asymmetric broadcast to channel -CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 360 -l $CLIENTOUT/client133.log -s blob133 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --keyPath results/integration-chan-key.pem --asymmetric \"Hello to asymmetric channel from channel client 123!\"" -eval $CLIENTCMD >> $CLIENTOUT/client133.txt & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" - -# Send symmetric & asymmetric broadcasts to channel -CLIENTCMD="timeout 240s ../bin/client broadcast --password hello --ndf results/ndf.json --waitTimeout 360 -l $CLIENTOUT/client134.log -s blob134 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --keyPath results/integration-chan-key.pem --asymmetric \"Hello to asymmetric channel from channel client 124!\" --symmetric \"Hello to symmetric channel from channel client 124!\"" -eval $CLIENTCMD >> $CLIENTOUT/client134.txt & -PIDVAL4=$! -echo "$CLIENTCMD -- $PIDVAL4" - -wait $PIDVAL2 -wait $PIDVAL3 -wait $PIDVAL4 -wait $PIDVAL1 - -echo "BROADCAST CHANNELS FINISHED..." - -######################################################################## - -echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." - -cp $CLIENTOUT/*.txt $CLIENTCLEAN/ - -sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt -rm $CLIENTCLEAN/client*.txt.bak - -for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do - sort -o tmp $CLIENTCLEAN/$C || true - cp tmp $CLIENTCLEAN/$C - # uniq tmp $CLIENTCLEAN/$C || true -done - -GOLDOUTPUT=clients.goldoutput -if [ "$NETWORKENTRYPOINT" != "localhost:1120" ] -then - rm -fr clients.net_goldoutput || true - GOLDOUTPUT=clients.net_goldoutput - cp -r clients.goldoutput clients.net_goldoutput - # Delete the localhost only files - rm $GOLDOUTPUT/client13* || true - rm $GOLDOUTPUT/client18* || true - rm $GOLDOUTPUT/client19* || true - rm $GOLDOUTPUT/client2[01]* || true - rm $GOLDOUTPUT/client31* || true - rm $GOLDOUTPUT/client3[56]* || true - rm $GOLDOUTPUT/client45* || true - rm $GOLDOUTPUT/client56* || true - rm $GOLDOUTPUT/client67* || true - rm $GOLDOUTPUT/client74* || true - rm $GOLDOUTPUT/client9* || true -fi - - -set +x -diff -aru $GOLDOUTPUT $CLIENTCLEAN - -if [ "$NETWORKENTRYPOINT" == "localhost:1120" ] -then - - #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true - #diff -ruN results/client-errors.txt noerrors.txt - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - IGNORESERVE="Failed to serve " - IGNORESTART="Failed to start " - IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt - echo "Checking backup files for equality..." - # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt - #diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true - # diff -aruN client120BackupDiff.txt noerrors.txt - #echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!" - #diff -aruN client121BackupDiff.txt noerrors.txt -fi - -# Remove the file if it exists -if [ -f network.sh ]; then - rm network.sh -fi \ No newline at end of file diff --git a/broadcast/server-1.yaml b/broadcast/server-1.yaml deleted file mode 100644 index 896cd77..0000000 --- a/broadcast/server-1.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "enkf" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-0.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-1.log" - errOutput: "results/servers/server-1.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10120" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20120" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-1.log" -# === END YAML diff --git a/broadcast/server-2.yaml b/broadcast/server-2.yaml deleted file mode 100644 index e4e7189..0000000 --- a/broadcast/server-2.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "ozxl" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-1.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-2.log" - errOutput: "results/servers/server-2.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10121" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20120" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-2.log" -# === END YAML diff --git a/broadcast/server-3.yaml b/broadcast/server-3.yaml deleted file mode 100644 index 4672d8b..0000000 --- a/broadcast/server-3.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "qgby" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-2.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-3.log" - errOutput: "results/servers/server-3.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10122" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20120" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-3.log" -# === END YAML diff --git a/broadcast/server-4.yaml b/broadcast/server-4.yaml deleted file mode 100644 index ddf363c..0000000 --- a/broadcast/server-4.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "llhb" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-3.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-4.log" - errOutput: "results/servers/server-4.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10123" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20120" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-4.log" -# === END YAML diff --git a/broadcast/server-5.yaml b/broadcast/server-5.yaml deleted file mode 100644 index 91e72d1..0000000 --- a/broadcast/server-5.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "umks" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-4.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-5.log" - errOutput: "results/servers/server-5.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10124" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20120" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-5.log" -# === END YAML diff --git a/broadcast/tmp b/broadcast/tmp deleted file mode 100644 index f2ec006..0000000 --- a/broadcast/tmp +++ /dev/null @@ -1 +0,0 @@ -Sent symmetric broadcast message: Hello to symmetric channel from channel client 124!Sent asymmetric broadcast message: Hello to asymmetric channel from channel client 124! diff --git a/broadcast/udb.yaml b/broadcast/udb.yaml deleted file mode 100644 index dae82f8..0000000 --- a/broadcast/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "30120" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:20120" -devMode: true \ No newline at end of file diff --git a/broadcast/udbContact.bin b/broadcast/udbContact.bin deleted file mode 100644 index 10b0846..0000000 --- a/broadcast/udbContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc> \ No newline at end of file diff --git a/broadcast/udbProto.json b/broadcast/udbProto.json deleted file mode 100644 index 940cadf..0000000 --- a/broadcast/udbProto.json +++ /dev/null @@ -1 +0,0 @@ -{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}} \ No newline at end of file diff --git a/broadcast/whitelist.txt b/broadcast/whitelist.txt deleted file mode 100644 index 446eca0..0000000 --- a/broadcast/whitelist.txt +++ /dev/null @@ -1 +0,0 @@ -["0.0.0.0", "127.0.0.1"] \ No newline at end of file diff --git a/channels/betanet.txt b/channels/betanet.txt deleted file mode 100644 index e35ebcf..0000000 --- a/channels/betanet.txt +++ /dev/null @@ -1,306 +0,0 @@ -188.187.190.53:22840 -135.181.134.215:22840 -90.64.159.233:22840 -63.224.248.74:22840 -78.63.197.35:22840 -95.217.225.220:22840 -167.86.89.25:22840 -134.17.158.63:22840 -77.92.107.203:22840 -136.50.65.29:22840 -176.99.131.128:22840 -109.251.8.131:22840 -85.237.9.101:22840 -195.93.180.119:22840 -193.106.95.173:22840 -193.106.95.227:22840 -168.119.49.161:22840 -193.106.94.75:22840 -176.99.131.188:22840 -180.150.125.93:22840 -135.181.29.63:22840 -116.202.99.94:22840 -94.130.150.94:22840 -93.81.246.111:22840 -183.99.96.180:22101 -62.171.131.155:22840 -159.65.122.44:22840 -45.122.123.134:22840 -157.90.34.21:22840 -107.182.163.106:22840 -52.124.124.210:22840 -170.187.225.94:22840 -95.217.228.117:22840 -88.99.13.205:22840 -52.183.38.229:22840 -77.223.99.126:22840 -37.228.116.99:22840 -167.99.247.6:22840 -5.45.81.112:22840 -193.47.33.51:22840 -5.45.81.110:22840 -69.197.179.42:22840 -69.197.179.162:22840 -94.244.64.115:22840 -109.100.137.105:22840 -86.57.132.29:22840 -178.248.81.38:22840 -213.55.169.27:22840 -212.24.106.228:22840 -195.181.247.171:22840 -82.148.29.76:22840 -81.163.28.252:22840 -80.249.150.70:22840 -79.98.24.202:22840 -62.173.145.42:22840 -77.223.98.157:22840 -193.47.33.132:22840 -82.148.19.245:22840 -31.184.254.81:22840 -195.64.234.210:22840 -195.64.234.98:22840 -78.26.169.79:22840 -62.77.156.70:22840 -77.223.97.164:22840 -193.47.33.50:22840 -62.173.140.126:22840 -93.81.246.64:22840 -149.210.192.112:22840 -77.120.176.213:22840 -188.138.242.248:22840 -178.168.101.47:22840 -37.97.220.128:22840 -69.197.147.18:22840 -81.240.39.28:22840 -141.105.67.92:22840 -213.10.138.128:22840 -217.136.119.184:22840 -85.201.32.4:22840 -92.64.19.232:22840 -89.221.20.22:22840 -62.167.123.100:22800 -161.230.93.70:22840 -76.65.147.14:22840 -86.7.108.18:22840 -109.129.225.57:22840 -194.158.207.84:22840 -116.203.252.237:22840 -217.12.210.152:22840 -45.115.107.124:22840 -178.128.199.183:22840 -93.107.156.53:22840 -82.15.128.246:22840 -70.75.89.186:22840 -109.87.172.237:22840 -80.90.47.210:22840 -90.189.180.24:22840 -46.98.0.118:22840 -85.221.55.10:22840 -191.32.173.237:22840 -80.5.16.132:22840 -173.212.199.13:22840 -120.88.119.219:22840 -135.19.193.9:22840 -134.249.187.129:22840 -188.194.110.16:22840 -195.38.9.10:22840 -46.42.16.25:22840 -31.165.163.210:22840 -89.232.195.123:22840 -77.122.54.99:22840 -85.105.79.102:22840 -163.172.149.150:22840 -5.53.16.225:22840 -178.124.192.61:22840 -167.99.130.234:22840 -95.158.15.24:22840 -195.239.181.117:22840 -104.158.0.184:22840 -62.171.142.152:22840 -77.122.89.98:22840 -200.37.209.49:22840 -181.43.154.26:22840 -185.230.88.227:22840 -91.169.185.175:62840 -217.136.102.221:22840 -149.210.229.230:22840 -176.37.104.235:22840 -37.97.224.62:22840 -94.107.24.186:22840 -151.252.109.180:22840 -195.93.181.189:22840 -195.93.181.192:22840 -149.210.229.210:22840 -77.122.48.168:22840 -185.4.65.20:22840 -37.97.224.55:22840 -178.170.47.131:22840 -37.97.224.32:22840 -178.170.39.140:22840 -135.181.139.234:22840 -78.129.38.119:22840 -78.181.101.251:22840 -68.183.34.147:22840 -5.255.173.96:22840 -195.177.94.31:22840 -37.57.87.184:22840 -37.97.224.19:22840 -209.145.53.106:22840 -176.214.77.176:22840 -143.178.133.206:22840 -85.118.207.56:22840 -88.211.82.66:22840 -185.23.83.59:22840 -93.75.3.51:22840 -176.210.55.44:22840 -83.144.175.13:22840 -78.188.200.189:22840 -174.114.197.104:22840 -188.83.79.190:22840 -66.183.0.247:22840 -5.61.52.49:22840 -149.210.229.197:22840 -82.118.17.160:22841 -31.202.122.239:22840 -46.150.9.16:22840 -205.250.188.151:22840 -149.210.229.175:22840 -77.122.91.193:22840 -31.202.122.152:22840 -151.95.102.130:22840 -91.245.37.80:22840 -199.119.86.179:22840 -93.72.67.70:22840 -195.134.65.165:22840 -103.56.39.162:20090 -178.27.238.236:22840 -149.210.192.41:22840 -103.56.39.183:20090 -5.61.54.13:22840 -78.188.51.20:22840 -93.157.248.142:22840 -31.172.140.126:22840 -95.189.106.118:22840 -86.94.128.12:22840 -5.132.111.41:22840 -109.129.220.59:22840 -84.83.206.46:22840 -136.144.240.106:22840 -89.28.86.208:22840 -89.28.6.19:22840 -5.255.173.43:22840 -77.122.29.37:22840 -136.144.203.178:22840 -136.144.230.186:22840 -136.144.206.186:22840 -61.6.46.179:22840 -31.202.123.194:22840 -135.125.235.32:22840 -103.83.149.90:22840 -66.183.0.246:22840 -185.12.142.45:22840 -46.37.194.90:22840 -78.26.140.125:22840 -89.191.125.159:22840 -31.201.104.137:22840 -77.92.109.45:22840 -108.249.110.153:22840 -196.41.195.118:22840 -101.98.209.195:22840 -77.92.109.43:22840 -188.127.250.195:22840 -76.176.192.12:22840 -91.177.2.56:22840 -82.193.107.60:22840 -86.83.150.15:22840 -134.249.121.177:22840 -46.166.138.219:22840 -75.156.104.27:22840 -109.100.137.83:22840 -174.88.128.201:22840 -178.168.68.129:22840 -66.183.0.245:22840 -62.238.247.127:22840 -65.21.151.29:22841 -207.81.171.109:22840 -155.93.136.90:22840 -190.22.170.63:22840 -136.144.230.185:22840 -102.182.202.19:22840 -70.52.24.55:22841 -195.191.174.168:22840 -88.223.114.249:22840 -46.142.181.156:22840 -174.94.125.212:22840 -184.146.45.46:22840 -136.144.236.167:22840 -174.88.104.199:22840 -88.223.115.74:22840 -178.170.40.34:22840 -91.149.187.22:22840 -178.150.223.30:22840 -195.138.68.0:22840 -77.122.59.150:22840 -91.241.178.180:22840 -95.164.8.35:22840 -188.138.162.9:22840 -77.122.80.204:22840 -46.150.9.21:22840 -46.119.158.146:22840 -5.34.183.246:22842 -65.21.180.158:22840 -188.187.188.47:22840 -62.171.137.40:22840 -178.151.197.49:22840 -213.231.5.100:22840 -194.28.172.72:22840 -76.71.65.212:22840 -76.71.65.96:22840 -185.46.60.30:22840 -185.172.34.211:22840 -87.255.69.231:22840 -91.222.114.19:22840 -162.55.58.184:22840 -91.233.171.9:22840 -82.16.173.238:22840 -77.169.225.166:22840 -87.248.171.27:22840 -81.243.65.75:22840 -207.6.218.81:22840 -207.6.218.110:22840 -188.124.46.130:22840 -159.196.176.42:22840 -143.244.158.201:22840 -185.224.108.251:22840 -80.100.87.204:22840 -185.48.197.184:22840 -95.67.28.111:22840 -171.25.167.187:22840 -176.100.12.243:22840 -185.224.108.82:22840 -217.12.223.90:22852 -185.224.110.37:22840 -195.138.85.182:22840 -176.104.49.11:22840 -176.104.52.215:22840 -88.204.18.134:22840 -217.26.167.45:22840 -185.172.34.212:22840 -87.255.69.232:22840 -5.165.211.128:22840 -136.144.205.104:22840 -178.168.57.176:22840 -87.255.69.238:22840 -194.233.67.188:22840 -88.159.77.30:22840 -195.74.67.235:22840 -174.94.68.31:22840 -91.5.88.185:22841 -179.223.85.90:22840 -139.59.245.228:22840 -199.119.86.185:22840 -105.228.133.62:22840 -139.59.126.219:22840 -91.5.83.238:22842 -95.216.221.129:22840 -158.140.234.119:22840 diff --git a/channels/client-registrar.yaml b/channels/client-registrar.yaml deleted file mode 100644 index 3ab9c33..0000000 --- a/channels/client-registrar.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# ================================== -# Client Registrar Configuration -# ================================== - -# Log message level (0 = info, 1 = debug, >1 = trace) -logLevel: 0 -# Path to log file -logPath: "results/client-registrar.log" - -# Public address, used in NDF it gives to client -publicAddress: "0.0.0.0:20061" -# The listening port of this server -port: 20061 - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -# Maximum number of connections per period -userRegCapacity: 1000 -# How often the number of connections is reset -userRegLeakPeriod: "24h" - -# Database connection information -dbUsername: "cmix" -dbPassword: "" -dbName: "cmix_server" -dbAddress: "" - -# List of client codes to be added to the database (for testing) -clientRegCodes: - - "AAAA" - - "BBBB" - - "CCCC" diff --git a/channels/devnet.txt b/channels/devnet.txt deleted file mode 100644 index 922c0de..0000000 --- a/channels/devnet.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.125.145:11420 -35.163.143.85:11420 -34.218.59.127:11420 diff --git a/channels/gateway-4.yaml b/channels/gateway-4.yaml deleted file mode 100644 index f07b197..0000000 --- a/channels/gateway-4.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-4.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10063" - -# The listening port of this gateway -Port: 1063 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-3.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/channels/gateway-5.yaml b/channels/gateway-5.yaml deleted file mode 100644 index ca8a401..0000000 --- a/channels/gateway-5.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-5.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10064" - -# The listening port of this gateway -Port: 1064 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-4.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/channels/mainnet.txt b/channels/mainnet.txt deleted file mode 100644 index 3fbbb1c..0000000 --- a/channels/mainnet.txt +++ /dev/null @@ -1,74 +0,0 @@ -"65.21.170.29:22840" -"88.198.2.52:22840" -"188.40.70.250:22840" -"185.218.125.248:22840" -"31.202.122.131:22840" -"173.249.60.80:22840" -"65.21.76.35:22840" -"195.201.171.211:22840" -"65.21.221.236:22840" -"37.97.220.130:22840" -"159.148.31.238:22840" -"nodochile.myddns.me:22840" -"94.130.10.38:22840" -"188.240.52.205:22840" -"212.38.189.73:22840" -"xerxesgw.caius.ovh:22840" -"46.4.50.57:22840" -"103.195.101.143:22840" -"49.12.45.179:22840" -"167.172.88.140:22840" -"5.189.176.210:22840" -"135.181.213.94:22840" -"213.136.70.8:22840" -"194.163.163.77:22840" -"65.21.204.13:22840" -"88.119.195.16:22840" -"88.198.2.51:22840" -"181.43.194.251:22840" -"159.148.31.232:22840" -"65.108.52.154:11098" -"138.201.37.166:22840" -"kmil.go.ro:22840" -"37.97.169.197:22840" -"144.76.65.107:22840" -"178.18.253.13:22840" -"162.55.131.110:22840" -"91.230.111.8:22840" -"109.98.108.250:22840" -"15.161.170.171:22840" -"37.97.224.110:22840" -"54.79.206.112:22840" -"144.126.149.30:22840" -"194.163.171.145:22840" -"37.97.220.129:22840" -"194.163.170.125:22840" -"65.21.143.248:22840" -"149.210.229.175:22840" -"149.210.192.112:22840" -"149.210.192.111:22840" -"65.21.234.163:22840" -"149.210.229.223:22840" -"173.249.44.133:22840" -"75.119.130.123:22840" -"194.233.77.127:22840" -"66.94.99.187:22840" -"144.91.99.106:22840" -"185.214.134.207:22840" -"95.217.207.236:22840" -"95.217.206.164:22840" -"173.212.233.67:22840" -"37.55.17.106:22840" -"65.108.3.162:22840" -"186.106.188.155:22840" -"109.237.108.117:22840" -"65.108.42.168:22840" -"65.21.234.86:22840" -"65.21.50.177:22840" -"194.163.189.115:22840" -"135.181.212.170:22840" -"23.88.104.166:22840" -"103.107.182.192:22840" -"65.108.2.254:22840" -"94.130.136.136:22840" -"162.55.100.14:22840" diff --git a/channels/noerrors.txt b/channels/noerrors.txt deleted file mode 100644 index e69de29..0000000 diff --git a/channels/permissioning.yaml b/channels/permissioning.yaml deleted file mode 100644 index fdc37d1..0000000 --- a/channels/permissioning.yaml +++ /dev/null @@ -1,96 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -loglevel: 2 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening port of this server -port: 20060 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -minimumNodes: 5 - -minGatewayVersion: "3.0.0" -minServerVersion: "3.0.0" -minClientVersion: "4.0.0" -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - - -# Public address used in NDF to give to client -registrationAddress: "0.0.0.0:20061" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -fullNdfOutputPath: "results/permissions-ndfoutput.json" -signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:30060" - -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - - -# Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 diff --git a/channels/registration.json b/channels/registration.json deleted file mode 100644 index f400c7e..0000000 --- a/channels/registration.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": 5, - "PrecomputationTimeout": 30000, - "RealtimeTimeout": 15000, - "DebugTrackRounds": true, - "BatchSize": 32, - "MinimumDelay": 1000, - "RealtimeDelay": 2000, - "Threshold": 0.3, - "NodeCleanUpInterval": 180000, - "ResourceQueueTimeout": 300000 -} \ No newline at end of file diff --git a/channels/release.txt b/channels/release.txt deleted file mode 100644 index 4442567..0000000 --- a/channels/release.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.230.124:11420 -54.187.42.105:11420 -54.149.115.63:11420 diff --git a/channels/run.sh b/channels/run.sh deleted file mode 100755 index 1eb47e8..0000000 --- a/channels/run.sh +++ /dev/null @@ -1,243 +0,0 @@ - -# NOTE: This is verbose on purpose. -################################################################################ -## Initial Set Up & Clean Up of Past Runs -################################################################################ - -# Copy file into folder if it does not already exist -if [ ! -f network.sh ]; then - cp ../network/network.sh . -fi - - -set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm -fr blob* || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir - -if [ $# -gt 1 ] -then - echo "usage: $0 [gatewayip:port]" - exit -fi - - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -UDBOUT=results/udb-console.txt -CLIENTCLEAN=results/clients-cleaned - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - - -################################################################################ -## Network Set Up -################################################################################ - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -if [ "$NETWORKENTRYPOINT" == "localhost:1060" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "localhost:1060" > results/startgwserver.txt - -echo "DONE LETS DO STUFF" - -echo "DOWNLOADING TLS Cert..." -# -alpn h2 added to mimic grpc headers -CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi - -############################################################################### -# Test Channels -############################################################################### - -echo "TESTING CHANNELS..." - -CLIENTOPTS="--password hello --ndf results/ndf.json --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" - -# Initialize creator of channel (will use default channel file path in CLI) -CLIENTCMD="timeout 300s ../bin/client channels -s blob500 $CLIENTOPTS -l $CLIENTOUT/client500.log --receiveCount 0 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel500.id --newChannel" -eval $CLIENTCMD > $CLIENTOUT/client500.txt 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" - -wait $PIDVAL - -# Have client which created channel send message to channel -CLIENTCMD="timeout 300s ../bin/client channels -s blob500 -l $CLIENTOUT/client500.log $CLIENTOPTS --receiveCount 3 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel500.id --sendToChannel --message \"Hello, channel, this is 500\"" -eval $CLIENTCMD >> $CLIENTOUT/client500.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" - -# Initialize client which will join channel (will use default channel file path in CLI) -CLIENTCMD="timeout 300s ../bin/client channels -s blob501 -l $CLIENTOUT/client501.log $CLIENTOPTS --receiveCount 3 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel501.id --joinChannel --sendToChannel --message \"Hello, channel, this is 501\"" -eval $CLIENTCMD > $CLIENTOUT/client501.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" - -# Initialize another client which will join channel (will use default channel file path in CLI) -CLIENTCMD="timeout 420s ../bin/client channels -s blob502 -l $CLIENTOUT/client502.log $CLIENTOPTS --receiveCount 3 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel502.id --joinChannel --sendToChannel --message \"Hello, channel, this is 502\"" -eval $CLIENTCMD > $CLIENTOUT/client502.txt 2>&1 & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" - -wait $PIDVAL1 -wait $PIDVAL2 -wait $PIDVAL3 - -# All clients will leave the channel -CLIENTCMD="timeout 300s ../bin/client channels -s blob500 -l $CLIENTOUT/client500.log $CLIENTOPTS --receiveCount 0 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel500.id --leaveChannel" -eval $CLIENTCMD >> $CLIENTOUT/client500.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" - -CLIENTCMD="timeout 300s ../bin/client channels -s blob501 -l $CLIENTOUT/client501.log $CLIENTOPTS --receiveCount 0 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel501.id --leaveChannel" -eval $CLIENTCMD >> $CLIENTOUT/client501.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" - -# Initialize another client which will join channel (will use default channel file path in CLI) -CLIENTCMD="timeout 300s ../bin/client channels -s blob502 -l $CLIENTOUT/client502.log $CLIENTOPTS --receiveCount 0 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel502.id --leaveChannel" -eval $CLIENTCMD >> $CLIENTOUT/client502.txt 2>&1 & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" -sleep 20 -wait $PIDVAL3 -wait $PIDVAL2 -wait $PIDVAL1 - - -echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." - -cp $CLIENTOUT/*.txt $CLIENTCLEAN/ - -sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt -rm $CLIENTCLEAN/client*.txt.bak - -for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do - sort -o tmp $CLIENTCLEAN/$C || true - cp tmp $CLIENTCLEAN/$C - # uniq tmp $CLIENTCLEAN/$C || true -done - -GOLDOUTPUT=clients.goldoutput -if [ "$NETWORKENTRYPOINT" != "localhost:1060" ] -then - rm -fr clients.net_goldoutput || true - GOLDOUTPUT=clients.net_goldoutput - cp -r clients.goldoutput clients.net_goldoutput - # Delete the localhost only files - rm $GOLDOUTPUT/client13* || true - rm $GOLDOUTPUT/client18* || true - rm $GOLDOUTPUT/client19* || true - rm $GOLDOUTPUT/client2[01]* || true - rm $GOLDOUTPUT/client31* || true - rm $GOLDOUTPUT/client3[56]* || true - rm $GOLDOUTPUT/client45* || true - rm $GOLDOUTPUT/client56* || true - rm $GOLDOUTPUT/client67* || true - rm $GOLDOUTPUT/client74* || true - rm $GOLDOUTPUT/client9* || true -fi - - -set +x -diff -aru $GOLDOUTPUT $CLIENTCLEAN - -if [ "$NETWORKENTRYPOINT" == "localhost:1060" ] -then - - #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true - #diff -ruN results/client-errors.txt noerrors.txt - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - IGNORESERVE="Failed to serve " - IGNORESTART="Failed to start " - IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt - echo "Checking backup files for equality..." - # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt - #diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true - # diff -aruN client120BackupDiff.txt noerrors.txt - #echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!" - #diff -aruN client121BackupDiff.txt noerrors.txt -fi - - -# Remove the file if it exists -if [ -f network.sh ]; then - rm network.sh -fi \ No newline at end of file diff --git a/channels/tmp b/channels/tmp deleted file mode 100644 index 5e19513..0000000 --- a/channels/tmp +++ /dev/null @@ -1,7 +0,0 @@ -Received 0/0 messages -Received 3/3 messages -Received from ChannelName this message: Hello, channel, this is 500 -Received from ChannelName this message: Hello, channel, this is 501 -Received from ChannelName this message: Hello, channel, this is 502 -Successfully joined channel ChannelName -Successfully left channel ChannelName diff --git a/channels/udb.yaml b/channels/udb.yaml deleted file mode 100644 index 6e4e019..0000000 --- a/channels/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "30060" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:20060" -devMode: true \ No newline at end of file diff --git a/channels/udbContact.bin b/channels/udbContact.bin deleted file mode 100644 index 10b0846..0000000 --- a/channels/udbContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc> \ No newline at end of file diff --git a/channels/udbProto.json b/channels/udbProto.json deleted file mode 100644 index 940cadf..0000000 --- a/channels/udbProto.json +++ /dev/null @@ -1 +0,0 @@ -{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}} \ No newline at end of file diff --git a/channels/whitelist.txt b/channels/whitelist.txt deleted file mode 100644 index 446eca0..0000000 --- a/channels/whitelist.txt +++ /dev/null @@ -1 +0,0 @@ -["0.0.0.0", "127.0.0.1"] \ No newline at end of file diff --git a/channelsFileTransfer/betanet.txt b/channelsFileTransfer/betanet.txt deleted file mode 100644 index e35ebcf..0000000 --- a/channelsFileTransfer/betanet.txt +++ /dev/null @@ -1,306 +0,0 @@ -188.187.190.53:22840 -135.181.134.215:22840 -90.64.159.233:22840 -63.224.248.74:22840 -78.63.197.35:22840 -95.217.225.220:22840 -167.86.89.25:22840 -134.17.158.63:22840 -77.92.107.203:22840 -136.50.65.29:22840 -176.99.131.128:22840 -109.251.8.131:22840 -85.237.9.101:22840 -195.93.180.119:22840 -193.106.95.173:22840 -193.106.95.227:22840 -168.119.49.161:22840 -193.106.94.75:22840 -176.99.131.188:22840 -180.150.125.93:22840 -135.181.29.63:22840 -116.202.99.94:22840 -94.130.150.94:22840 -93.81.246.111:22840 -183.99.96.180:22101 -62.171.131.155:22840 -159.65.122.44:22840 -45.122.123.134:22840 -157.90.34.21:22840 -107.182.163.106:22840 -52.124.124.210:22840 -170.187.225.94:22840 -95.217.228.117:22840 -88.99.13.205:22840 -52.183.38.229:22840 -77.223.99.126:22840 -37.228.116.99:22840 -167.99.247.6:22840 -5.45.81.112:22840 -193.47.33.51:22840 -5.45.81.110:22840 -69.197.179.42:22840 -69.197.179.162:22840 -94.244.64.115:22840 -109.100.137.105:22840 -86.57.132.29:22840 -178.248.81.38:22840 -213.55.169.27:22840 -212.24.106.228:22840 -195.181.247.171:22840 -82.148.29.76:22840 -81.163.28.252:22840 -80.249.150.70:22840 -79.98.24.202:22840 -62.173.145.42:22840 -77.223.98.157:22840 -193.47.33.132:22840 -82.148.19.245:22840 -31.184.254.81:22840 -195.64.234.210:22840 -195.64.234.98:22840 -78.26.169.79:22840 -62.77.156.70:22840 -77.223.97.164:22840 -193.47.33.50:22840 -62.173.140.126:22840 -93.81.246.64:22840 -149.210.192.112:22840 -77.120.176.213:22840 -188.138.242.248:22840 -178.168.101.47:22840 -37.97.220.128:22840 -69.197.147.18:22840 -81.240.39.28:22840 -141.105.67.92:22840 -213.10.138.128:22840 -217.136.119.184:22840 -85.201.32.4:22840 -92.64.19.232:22840 -89.221.20.22:22840 -62.167.123.100:22800 -161.230.93.70:22840 -76.65.147.14:22840 -86.7.108.18:22840 -109.129.225.57:22840 -194.158.207.84:22840 -116.203.252.237:22840 -217.12.210.152:22840 -45.115.107.124:22840 -178.128.199.183:22840 -93.107.156.53:22840 -82.15.128.246:22840 -70.75.89.186:22840 -109.87.172.237:22840 -80.90.47.210:22840 -90.189.180.24:22840 -46.98.0.118:22840 -85.221.55.10:22840 -191.32.173.237:22840 -80.5.16.132:22840 -173.212.199.13:22840 -120.88.119.219:22840 -135.19.193.9:22840 -134.249.187.129:22840 -188.194.110.16:22840 -195.38.9.10:22840 -46.42.16.25:22840 -31.165.163.210:22840 -89.232.195.123:22840 -77.122.54.99:22840 -85.105.79.102:22840 -163.172.149.150:22840 -5.53.16.225:22840 -178.124.192.61:22840 -167.99.130.234:22840 -95.158.15.24:22840 -195.239.181.117:22840 -104.158.0.184:22840 -62.171.142.152:22840 -77.122.89.98:22840 -200.37.209.49:22840 -181.43.154.26:22840 -185.230.88.227:22840 -91.169.185.175:62840 -217.136.102.221:22840 -149.210.229.230:22840 -176.37.104.235:22840 -37.97.224.62:22840 -94.107.24.186:22840 -151.252.109.180:22840 -195.93.181.189:22840 -195.93.181.192:22840 -149.210.229.210:22840 -77.122.48.168:22840 -185.4.65.20:22840 -37.97.224.55:22840 -178.170.47.131:22840 -37.97.224.32:22840 -178.170.39.140:22840 -135.181.139.234:22840 -78.129.38.119:22840 -78.181.101.251:22840 -68.183.34.147:22840 -5.255.173.96:22840 -195.177.94.31:22840 -37.57.87.184:22840 -37.97.224.19:22840 -209.145.53.106:22840 -176.214.77.176:22840 -143.178.133.206:22840 -85.118.207.56:22840 -88.211.82.66:22840 -185.23.83.59:22840 -93.75.3.51:22840 -176.210.55.44:22840 -83.144.175.13:22840 -78.188.200.189:22840 -174.114.197.104:22840 -188.83.79.190:22840 -66.183.0.247:22840 -5.61.52.49:22840 -149.210.229.197:22840 -82.118.17.160:22841 -31.202.122.239:22840 -46.150.9.16:22840 -205.250.188.151:22840 -149.210.229.175:22840 -77.122.91.193:22840 -31.202.122.152:22840 -151.95.102.130:22840 -91.245.37.80:22840 -199.119.86.179:22840 -93.72.67.70:22840 -195.134.65.165:22840 -103.56.39.162:20090 -178.27.238.236:22840 -149.210.192.41:22840 -103.56.39.183:20090 -5.61.54.13:22840 -78.188.51.20:22840 -93.157.248.142:22840 -31.172.140.126:22840 -95.189.106.118:22840 -86.94.128.12:22840 -5.132.111.41:22840 -109.129.220.59:22840 -84.83.206.46:22840 -136.144.240.106:22840 -89.28.86.208:22840 -89.28.6.19:22840 -5.255.173.43:22840 -77.122.29.37:22840 -136.144.203.178:22840 -136.144.230.186:22840 -136.144.206.186:22840 -61.6.46.179:22840 -31.202.123.194:22840 -135.125.235.32:22840 -103.83.149.90:22840 -66.183.0.246:22840 -185.12.142.45:22840 -46.37.194.90:22840 -78.26.140.125:22840 -89.191.125.159:22840 -31.201.104.137:22840 -77.92.109.45:22840 -108.249.110.153:22840 -196.41.195.118:22840 -101.98.209.195:22840 -77.92.109.43:22840 -188.127.250.195:22840 -76.176.192.12:22840 -91.177.2.56:22840 -82.193.107.60:22840 -86.83.150.15:22840 -134.249.121.177:22840 -46.166.138.219:22840 -75.156.104.27:22840 -109.100.137.83:22840 -174.88.128.201:22840 -178.168.68.129:22840 -66.183.0.245:22840 -62.238.247.127:22840 -65.21.151.29:22841 -207.81.171.109:22840 -155.93.136.90:22840 -190.22.170.63:22840 -136.144.230.185:22840 -102.182.202.19:22840 -70.52.24.55:22841 -195.191.174.168:22840 -88.223.114.249:22840 -46.142.181.156:22840 -174.94.125.212:22840 -184.146.45.46:22840 -136.144.236.167:22840 -174.88.104.199:22840 -88.223.115.74:22840 -178.170.40.34:22840 -91.149.187.22:22840 -178.150.223.30:22840 -195.138.68.0:22840 -77.122.59.150:22840 -91.241.178.180:22840 -95.164.8.35:22840 -188.138.162.9:22840 -77.122.80.204:22840 -46.150.9.21:22840 -46.119.158.146:22840 -5.34.183.246:22842 -65.21.180.158:22840 -188.187.188.47:22840 -62.171.137.40:22840 -178.151.197.49:22840 -213.231.5.100:22840 -194.28.172.72:22840 -76.71.65.212:22840 -76.71.65.96:22840 -185.46.60.30:22840 -185.172.34.211:22840 -87.255.69.231:22840 -91.222.114.19:22840 -162.55.58.184:22840 -91.233.171.9:22840 -82.16.173.238:22840 -77.169.225.166:22840 -87.248.171.27:22840 -81.243.65.75:22840 -207.6.218.81:22840 -207.6.218.110:22840 -188.124.46.130:22840 -159.196.176.42:22840 -143.244.158.201:22840 -185.224.108.251:22840 -80.100.87.204:22840 -185.48.197.184:22840 -95.67.28.111:22840 -171.25.167.187:22840 -176.100.12.243:22840 -185.224.108.82:22840 -217.12.223.90:22852 -185.224.110.37:22840 -195.138.85.182:22840 -176.104.49.11:22840 -176.104.52.215:22840 -88.204.18.134:22840 -217.26.167.45:22840 -185.172.34.212:22840 -87.255.69.232:22840 -5.165.211.128:22840 -136.144.205.104:22840 -178.168.57.176:22840 -87.255.69.238:22840 -194.233.67.188:22840 -88.159.77.30:22840 -195.74.67.235:22840 -174.94.68.31:22840 -91.5.88.185:22841 -179.223.85.90:22840 -139.59.245.228:22840 -199.119.86.185:22840 -105.228.133.62:22840 -139.59.126.219:22840 -91.5.83.238:22842 -95.216.221.129:22840 -158.140.234.119:22840 diff --git a/channelsFileTransfer/client-registrar.yaml b/channelsFileTransfer/client-registrar.yaml deleted file mode 100644 index a4e5f0c..0000000 --- a/channelsFileTransfer/client-registrar.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# ================================== -# Client Registrar Configuration -# ================================== - -# Log message level (0 = info, 1 = debug, >1 = trace) -logLevel: 0 -# Path to log file -logPath: "results/client-registrar.log" - -# Public address, used in NDF it gives to client -publicAddress: "0.0.0.0:20091" -# The listening port of this server -port: 20091 - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -# Maximum number of connections per period -userRegCapacity: 1000 -# How often the number of connections is reset -userRegLeakPeriod: "24h" - -# Database connection information -dbUsername: "cmix" -dbPassword: "" -dbName: "cmix_server" -dbAddress: "" - -# List of client codes to be added to the database (for testing) -clientRegCodes: - - "AAAA" - - "BBBB" - - "CCCC" diff --git a/channelsFileTransfer/devnet.txt b/channelsFileTransfer/devnet.txt deleted file mode 100644 index 922c0de..0000000 --- a/channelsFileTransfer/devnet.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.125.145:11420 -35.163.143.85:11420 -34.218.59.127:11420 diff --git a/channelsFileTransfer/gateway-1.yaml b/channelsFileTransfer/gateway-1.yaml deleted file mode 100644 index 018e374..0000000 --- a/channelsFileTransfer/gateway-1.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-1.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10090" - -# The listening port of this gateway -Port: 1080 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-0.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/channelsFileTransfer/gateway-2.yaml b/channelsFileTransfer/gateway-2.yaml deleted file mode 100644 index e011701..0000000 --- a/channelsFileTransfer/gateway-2.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-2.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10091" - -# The listening port of this gateway -Port: 1091 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-1.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/channelsFileTransfer/gateway-3.yaml b/channelsFileTransfer/gateway-3.yaml deleted file mode 100644 index 325b3c8..0000000 --- a/channelsFileTransfer/gateway-3.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-3.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10092" - -# The listening port of this gateway -Port: 1092 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-2.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/channelsFileTransfer/gateway-4.yaml b/channelsFileTransfer/gateway-4.yaml deleted file mode 100644 index 71d8f56..0000000 --- a/channelsFileTransfer/gateway-4.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-4.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10093" - -# The listening port of this gateway -Port: 1093 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-3.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/channelsFileTransfer/gateway-5.yaml b/channelsFileTransfer/gateway-5.yaml deleted file mode 100644 index 32e884d..0000000 --- a/channelsFileTransfer/gateway-5.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-5.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10094" - -# The listening port of this gateway -Port: 1094 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-4.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/channelsFileTransfer/mainnet.txt b/channelsFileTransfer/mainnet.txt deleted file mode 100644 index 3fbbb1c..0000000 --- a/channelsFileTransfer/mainnet.txt +++ /dev/null @@ -1,74 +0,0 @@ -"65.21.170.29:22840" -"88.198.2.52:22840" -"188.40.70.250:22840" -"185.218.125.248:22840" -"31.202.122.131:22840" -"173.249.60.80:22840" -"65.21.76.35:22840" -"195.201.171.211:22840" -"65.21.221.236:22840" -"37.97.220.130:22840" -"159.148.31.238:22840" -"nodochile.myddns.me:22840" -"94.130.10.38:22840" -"188.240.52.205:22840" -"212.38.189.73:22840" -"xerxesgw.caius.ovh:22840" -"46.4.50.57:22840" -"103.195.101.143:22840" -"49.12.45.179:22840" -"167.172.88.140:22840" -"5.189.176.210:22840" -"135.181.213.94:22840" -"213.136.70.8:22840" -"194.163.163.77:22840" -"65.21.204.13:22840" -"88.119.195.16:22840" -"88.198.2.51:22840" -"181.43.194.251:22840" -"159.148.31.232:22840" -"65.108.52.154:11098" -"138.201.37.166:22840" -"kmil.go.ro:22840" -"37.97.169.197:22840" -"144.76.65.107:22840" -"178.18.253.13:22840" -"162.55.131.110:22840" -"91.230.111.8:22840" -"109.98.108.250:22840" -"15.161.170.171:22840" -"37.97.224.110:22840" -"54.79.206.112:22840" -"144.126.149.30:22840" -"194.163.171.145:22840" -"37.97.220.129:22840" -"194.163.170.125:22840" -"65.21.143.248:22840" -"149.210.229.175:22840" -"149.210.192.112:22840" -"149.210.192.111:22840" -"65.21.234.163:22840" -"149.210.229.223:22840" -"173.249.44.133:22840" -"75.119.130.123:22840" -"194.233.77.127:22840" -"66.94.99.187:22840" -"144.91.99.106:22840" -"185.214.134.207:22840" -"95.217.207.236:22840" -"95.217.206.164:22840" -"173.212.233.67:22840" -"37.55.17.106:22840" -"65.108.3.162:22840" -"186.106.188.155:22840" -"109.237.108.117:22840" -"65.108.42.168:22840" -"65.21.234.86:22840" -"65.21.50.177:22840" -"194.163.189.115:22840" -"135.181.212.170:22840" -"23.88.104.166:22840" -"103.107.182.192:22840" -"65.108.2.254:22840" -"94.130.136.136:22840" -"162.55.100.14:22840" diff --git a/channelsFileTransfer/network.config b/channelsFileTransfer/network.config deleted file mode 100644 index ad5b9d1..0000000 --- a/channelsFileTransfer/network.config +++ /dev/null @@ -1,26 +0,0 @@ -localhost:1080 -# This is the network configuration file. The top line of this file, -# when not set via command line, is used to determine to which network -# the integration test will be run against. - -# Note you can also specify "release", "betanet", or "protonet" on run.sh - -# Betanet gateways -109.169.15.30:22840 -5.12.137.118:22840 -92.246.20.92:22840 -178.16.39.203:22840 -86.135.17.18:22840 - -# Release (messenger test) network gateways -34.221.74.216:11420 -52.25.9.28:11420 -54.149.122.115:11420 - - -# protonet -185.152.3.247:11420 -93.151.207.39:11420 -93.107.154.131:11420 -173.208.225.75:11421 -92.246.20.92:11420 diff --git a/channelsFileTransfer/noerrors.txt b/channelsFileTransfer/noerrors.txt deleted file mode 100644 index e69de29..0000000 diff --git a/channelsFileTransfer/permissioning.yaml b/channelsFileTransfer/permissioning.yaml deleted file mode 100644 index 92e2d24..0000000 --- a/channelsFileTransfer/permissioning.yaml +++ /dev/null @@ -1,96 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -loglevel: 2 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening port of this server -port: 20090 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -minimumNodes: 5 - -minGatewayVersion: "3.0.0" -minServerVersion: "3.0.0" -minClientVersion: "4.0.0" -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - - -# Public address used in NDF to give to client -registrationAddress: "0.0.0.0:20091" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -fullNdfOutputPath: "results/permissions-ndfoutput.json" -signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:30090" - -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - - -# Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 diff --git a/channelsFileTransfer/regCodes.json b/channelsFileTransfer/regCodes.json deleted file mode 100644 index 466f591..0000000 --- a/channelsFileTransfer/regCodes.json +++ /dev/null @@ -1 +0,0 @@ -[{"RegCode": "bzkf", "Order": "CR"},{"RegCode": "bjvk", "Order": "CR"},{"RegCode": "ujwq", "Order": "CR"},{"RegCode": "fcpr", "Order": "CR"},{"RegCode": "eguv", "Order": "CR"}] \ No newline at end of file diff --git a/channelsFileTransfer/registration.json b/channelsFileTransfer/registration.json deleted file mode 100644 index f400c7e..0000000 --- a/channelsFileTransfer/registration.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": 5, - "PrecomputationTimeout": 30000, - "RealtimeTimeout": 15000, - "DebugTrackRounds": true, - "BatchSize": 32, - "MinimumDelay": 1000, - "RealtimeDelay": 2000, - "Threshold": 0.3, - "NodeCleanUpInterval": 180000, - "ResourceQueueTimeout": 300000 -} \ No newline at end of file diff --git a/channelsFileTransfer/release.txt b/channelsFileTransfer/release.txt deleted file mode 100644 index 4442567..0000000 --- a/channelsFileTransfer/release.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.230.124:11420 -54.187.42.105:11420 -54.149.115.63:11420 diff --git a/channelsFileTransfer/run.sh b/channelsFileTransfer/run.sh deleted file mode 100755 index 46af858..0000000 --- a/channelsFileTransfer/run.sh +++ /dev/null @@ -1,211 +0,0 @@ -# NOTE: This is verbose on purpose. -################################################################################ -## Initial Set Up & Clean Up of Past Runs -################################################################################ - -# Copy file into folder if it does not already exist -if [ ! -f network.sh ]; then - cp ../network/network.sh . -fi - -set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm -fr blob* || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir - -if [ $# -gt 1 ] -then - echo "usage: $0 [gatewayip:port]" - exit -fi - - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -UDBOUT=results/udb-console.txt -CLIENTCLEAN=results/clients-cleaned - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - - -################################################################################ -## Network Set Up -################################################################################ - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -if [ "$NETWORKENTRYPOINT" == "localhost:1080" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "localhost:1080" > results/startgwserver.txt - -echo "DONE LETS DO STUFF" - -echo "DOWNLOADING TLS Cert..." -# -alpn h2 added to mimic grpc headers -CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi - - -############################################################################### -# Test Channels File Transfer -############################################################################### - -echo "TESTING CHANNELS FILE TRANSFER..." - -CLIENTOPTS="--password hello --ndf results/ndf.json --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" - -# Initialize creator of channel and file sender -CLIENTCMD="timeout 300s ../bin/client channelsFileTransfer -s blob0 $CLIENTOPTS -l $CLIENTOUT/client0.log --ftChannelPath $CLIENTOUT/channel.chan --ftChannelIdentityPath $CLIENTOUT/channel0.id --ftNewChannel --ftChannelName MyFileTransferChannel --ftSendToChannel --file LoremIpsum.txt --ftFilePreviewString \"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\" --ftMaxThroughput 700 --ftRetry 0 --ftOutput $CLIENTOUT/channel0_download.txt" -eval $CLIENTCMD > $CLIENTOUT/client0.txt 2>&1 & -PIDVAL0=$! -echo "$CLIENTCMD -- $PIDVAL0" - -# Wait for the channel info file to be created -while [ ! -s $CLIENTOUT/channel.chan ]; do - sleep 1 - echo -n "." -done -echo - -# Initialize three clients to join the channel and receive the file -CLIENTCMD="timeout 300s ../bin/client channelsFileTransfer -s blob1 -l $CLIENTOUT/client1.log $CLIENTOPTS --ftChannelPath $CLIENTOUT/channel.chan --ftChannelIdentityPath $CLIENTOUT/channel1.id --ftJoinChannel --ftOutput $CLIENTOUT/channel1_download.txt" -eval $CLIENTCMD > $CLIENTOUT/client1.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="timeout 300s ../bin/client channelsFileTransfer -s blob2 -l $CLIENTOUT/client2.log $CLIENTOPTS --ftChannelPath $CLIENTOUT/channel.chan --ftChannelIdentityPath $CLIENTOUT/channel2.id --ftJoinChannel --ftOutput $CLIENTOUT/channel2_download.txt" -eval $CLIENTCMD > $CLIENTOUT/client2.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -CLIENTCMD="timeout 300s ../bin/client channelsFileTransfer -s blob3 -l $CLIENTOUT/client3.log $CLIENTOPTS --ftChannelPath $CLIENTOUT/channel.chan --ftChannelIdentityPath $CLIENTOUT/channel3.id --ftJoinChannel --ftOutput $CLIENTOUT/channel3_download.txt" -eval $CLIENTCMD > $CLIENTOUT/client3.txt 2>&1 & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" - -wait $PIDVAL0 -wait $PIDVAL1 -wait $PIDVAL2 -wait $PIDVAL3 - -echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." - -cp $CLIENTOUT/*.txt $CLIENTCLEAN/ - -sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt -rm $CLIENTCLEAN/client*.txt.bak - -for C in $(ls -1 $CLIENTCLEAN | grep -v _download.txt); do - sort -o tmp $CLIENTCLEAN/$C || true - cp tmp $CLIENTCLEAN/$C -done - -GOLDOUTPUT=clients.goldoutput -if [ "$NETWORKENTRYPOINT" != "localhost:1080" ] -then - rm -fr clients.net_goldoutput || true - GOLDOUTPUT=clients.net_goldoutput - cp -r clients.goldoutput clients.net_goldoutput - # Delete the localhost only files - rm $GOLDOUTPUT/client13* || true - rm $GOLDOUTPUT/client18* || true - rm $GOLDOUTPUT/client19* || true - rm $GOLDOUTPUT/client2[01]* || true - rm $GOLDOUTPUT/client31* || true - rm $GOLDOUTPUT/client3[56]* || true - rm $GOLDOUTPUT/client45* || true - rm $GOLDOUTPUT/client56* || true - rm $GOLDOUTPUT/client67* || true - rm $GOLDOUTPUT/client74* || true - rm $GOLDOUTPUT/client9* || true -fi - - -set +x -diff -aru $GOLDOUTPUT $CLIENTCLEAN - -if [ "$NETWORKENTRYPOINT" == "localhost:1080" ] -then - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - IGNORESERVE="Failed to serve " - IGNORESTART="Failed to start " - IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt -fi - -# Remove the file if it exists -if [ -f network.sh ]; then - rm network.sh -fi \ No newline at end of file diff --git a/channelsFileTransfer/server-1.yaml b/channelsFileTransfer/server-1.yaml deleted file mode 100644 index 09455b2..0000000 --- a/channelsFileTransfer/server-1.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "bzkf" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-0.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-1.log" - errOutput: "results/servers/server-1.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10090" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-1.log" -# === END YAML diff --git a/channelsFileTransfer/server-2.yaml b/channelsFileTransfer/server-2.yaml deleted file mode 100644 index 5b56e36..0000000 --- a/channelsFileTransfer/server-2.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "bjvk" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-1.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-2.log" - errOutput: "results/servers/server-2.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10091" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-2.log" -# === END YAML diff --git a/channelsFileTransfer/server-3.yaml b/channelsFileTransfer/server-3.yaml deleted file mode 100644 index 7ae9486..0000000 --- a/channelsFileTransfer/server-3.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "ujwq" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-2.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-3.log" - errOutput: "results/servers/server-3.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10092" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-3.log" -# === END YAML diff --git a/channelsFileTransfer/server-4.yaml b/channelsFileTransfer/server-4.yaml deleted file mode 100644 index 77a11cb..0000000 --- a/channelsFileTransfer/server-4.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "fcpr" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-3.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-4.log" - errOutput: "results/servers/server-4.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10093" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-4.log" -# === END YAML diff --git a/channelsFileTransfer/server-5.yaml b/channelsFileTransfer/server-5.yaml deleted file mode 100644 index cd329ad..0000000 --- a/channelsFileTransfer/server-5.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "eguv" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-4.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-5.log" - errOutput: "results/servers/server-5.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10094" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-5.log" -# === END YAML diff --git a/channelsFileTransfer/udb.yaml b/channelsFileTransfer/udb.yaml deleted file mode 100644 index ec1a4e3..0000000 --- a/channelsFileTransfer/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "30090" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:20090" -devMode: true \ No newline at end of file diff --git a/channelsFileTransfer/udbContact.bin b/channelsFileTransfer/udbContact.bin deleted file mode 100644 index 10b0846..0000000 --- a/channelsFileTransfer/udbContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc> \ No newline at end of file diff --git a/channelsFileTransfer/udbProto.json b/channelsFileTransfer/udbProto.json deleted file mode 100644 index 940cadf..0000000 --- a/channelsFileTransfer/udbProto.json +++ /dev/null @@ -1 +0,0 @@ -{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}} \ No newline at end of file diff --git a/channelsFileTransfer/whitelist.txt b/channelsFileTransfer/whitelist.txt deleted file mode 100644 index 446eca0..0000000 --- a/channelsFileTransfer/whitelist.txt +++ /dev/null @@ -1 +0,0 @@ -["0.0.0.0", "127.0.0.1"] \ No newline at end of file diff --git a/connect/betanet.txt b/connect/betanet.txt deleted file mode 100644 index e35ebcf..0000000 --- a/connect/betanet.txt +++ /dev/null @@ -1,306 +0,0 @@ -188.187.190.53:22840 -135.181.134.215:22840 -90.64.159.233:22840 -63.224.248.74:22840 -78.63.197.35:22840 -95.217.225.220:22840 -167.86.89.25:22840 -134.17.158.63:22840 -77.92.107.203:22840 -136.50.65.29:22840 -176.99.131.128:22840 -109.251.8.131:22840 -85.237.9.101:22840 -195.93.180.119:22840 -193.106.95.173:22840 -193.106.95.227:22840 -168.119.49.161:22840 -193.106.94.75:22840 -176.99.131.188:22840 -180.150.125.93:22840 -135.181.29.63:22840 -116.202.99.94:22840 -94.130.150.94:22840 -93.81.246.111:22840 -183.99.96.180:22101 -62.171.131.155:22840 -159.65.122.44:22840 -45.122.123.134:22840 -157.90.34.21:22840 -107.182.163.106:22840 -52.124.124.210:22840 -170.187.225.94:22840 -95.217.228.117:22840 -88.99.13.205:22840 -52.183.38.229:22840 -77.223.99.126:22840 -37.228.116.99:22840 -167.99.247.6:22840 -5.45.81.112:22840 -193.47.33.51:22840 -5.45.81.110:22840 -69.197.179.42:22840 -69.197.179.162:22840 -94.244.64.115:22840 -109.100.137.105:22840 -86.57.132.29:22840 -178.248.81.38:22840 -213.55.169.27:22840 -212.24.106.228:22840 -195.181.247.171:22840 -82.148.29.76:22840 -81.163.28.252:22840 -80.249.150.70:22840 -79.98.24.202:22840 -62.173.145.42:22840 -77.223.98.157:22840 -193.47.33.132:22840 -82.148.19.245:22840 -31.184.254.81:22840 -195.64.234.210:22840 -195.64.234.98:22840 -78.26.169.79:22840 -62.77.156.70:22840 -77.223.97.164:22840 -193.47.33.50:22840 -62.173.140.126:22840 -93.81.246.64:22840 -149.210.192.112:22840 -77.120.176.213:22840 -188.138.242.248:22840 -178.168.101.47:22840 -37.97.220.128:22840 -69.197.147.18:22840 -81.240.39.28:22840 -141.105.67.92:22840 -213.10.138.128:22840 -217.136.119.184:22840 -85.201.32.4:22840 -92.64.19.232:22840 -89.221.20.22:22840 -62.167.123.100:22800 -161.230.93.70:22840 -76.65.147.14:22840 -86.7.108.18:22840 -109.129.225.57:22840 -194.158.207.84:22840 -116.203.252.237:22840 -217.12.210.152:22840 -45.115.107.124:22840 -178.128.199.183:22840 -93.107.156.53:22840 -82.15.128.246:22840 -70.75.89.186:22840 -109.87.172.237:22840 -80.90.47.210:22840 -90.189.180.24:22840 -46.98.0.118:22840 -85.221.55.10:22840 -191.32.173.237:22840 -80.5.16.132:22840 -173.212.199.13:22840 -120.88.119.219:22840 -135.19.193.9:22840 -134.249.187.129:22840 -188.194.110.16:22840 -195.38.9.10:22840 -46.42.16.25:22840 -31.165.163.210:22840 -89.232.195.123:22840 -77.122.54.99:22840 -85.105.79.102:22840 -163.172.149.150:22840 -5.53.16.225:22840 -178.124.192.61:22840 -167.99.130.234:22840 -95.158.15.24:22840 -195.239.181.117:22840 -104.158.0.184:22840 -62.171.142.152:22840 -77.122.89.98:22840 -200.37.209.49:22840 -181.43.154.26:22840 -185.230.88.227:22840 -91.169.185.175:62840 -217.136.102.221:22840 -149.210.229.230:22840 -176.37.104.235:22840 -37.97.224.62:22840 -94.107.24.186:22840 -151.252.109.180:22840 -195.93.181.189:22840 -195.93.181.192:22840 -149.210.229.210:22840 -77.122.48.168:22840 -185.4.65.20:22840 -37.97.224.55:22840 -178.170.47.131:22840 -37.97.224.32:22840 -178.170.39.140:22840 -135.181.139.234:22840 -78.129.38.119:22840 -78.181.101.251:22840 -68.183.34.147:22840 -5.255.173.96:22840 -195.177.94.31:22840 -37.57.87.184:22840 -37.97.224.19:22840 -209.145.53.106:22840 -176.214.77.176:22840 -143.178.133.206:22840 -85.118.207.56:22840 -88.211.82.66:22840 -185.23.83.59:22840 -93.75.3.51:22840 -176.210.55.44:22840 -83.144.175.13:22840 -78.188.200.189:22840 -174.114.197.104:22840 -188.83.79.190:22840 -66.183.0.247:22840 -5.61.52.49:22840 -149.210.229.197:22840 -82.118.17.160:22841 -31.202.122.239:22840 -46.150.9.16:22840 -205.250.188.151:22840 -149.210.229.175:22840 -77.122.91.193:22840 -31.202.122.152:22840 -151.95.102.130:22840 -91.245.37.80:22840 -199.119.86.179:22840 -93.72.67.70:22840 -195.134.65.165:22840 -103.56.39.162:20090 -178.27.238.236:22840 -149.210.192.41:22840 -103.56.39.183:20090 -5.61.54.13:22840 -78.188.51.20:22840 -93.157.248.142:22840 -31.172.140.126:22840 -95.189.106.118:22840 -86.94.128.12:22840 -5.132.111.41:22840 -109.129.220.59:22840 -84.83.206.46:22840 -136.144.240.106:22840 -89.28.86.208:22840 -89.28.6.19:22840 -5.255.173.43:22840 -77.122.29.37:22840 -136.144.203.178:22840 -136.144.230.186:22840 -136.144.206.186:22840 -61.6.46.179:22840 -31.202.123.194:22840 -135.125.235.32:22840 -103.83.149.90:22840 -66.183.0.246:22840 -185.12.142.45:22840 -46.37.194.90:22840 -78.26.140.125:22840 -89.191.125.159:22840 -31.201.104.137:22840 -77.92.109.45:22840 -108.249.110.153:22840 -196.41.195.118:22840 -101.98.209.195:22840 -77.92.109.43:22840 -188.127.250.195:22840 -76.176.192.12:22840 -91.177.2.56:22840 -82.193.107.60:22840 -86.83.150.15:22840 -134.249.121.177:22840 -46.166.138.219:22840 -75.156.104.27:22840 -109.100.137.83:22840 -174.88.128.201:22840 -178.168.68.129:22840 -66.183.0.245:22840 -62.238.247.127:22840 -65.21.151.29:22841 -207.81.171.109:22840 -155.93.136.90:22840 -190.22.170.63:22840 -136.144.230.185:22840 -102.182.202.19:22840 -70.52.24.55:22841 -195.191.174.168:22840 -88.223.114.249:22840 -46.142.181.156:22840 -174.94.125.212:22840 -184.146.45.46:22840 -136.144.236.167:22840 -174.88.104.199:22840 -88.223.115.74:22840 -178.170.40.34:22840 -91.149.187.22:22840 -178.150.223.30:22840 -195.138.68.0:22840 -77.122.59.150:22840 -91.241.178.180:22840 -95.164.8.35:22840 -188.138.162.9:22840 -77.122.80.204:22840 -46.150.9.21:22840 -46.119.158.146:22840 -5.34.183.246:22842 -65.21.180.158:22840 -188.187.188.47:22840 -62.171.137.40:22840 -178.151.197.49:22840 -213.231.5.100:22840 -194.28.172.72:22840 -76.71.65.212:22840 -76.71.65.96:22840 -185.46.60.30:22840 -185.172.34.211:22840 -87.255.69.231:22840 -91.222.114.19:22840 -162.55.58.184:22840 -91.233.171.9:22840 -82.16.173.238:22840 -77.169.225.166:22840 -87.248.171.27:22840 -81.243.65.75:22840 -207.6.218.81:22840 -207.6.218.110:22840 -188.124.46.130:22840 -159.196.176.42:22840 -143.244.158.201:22840 -185.224.108.251:22840 -80.100.87.204:22840 -185.48.197.184:22840 -95.67.28.111:22840 -171.25.167.187:22840 -176.100.12.243:22840 -185.224.108.82:22840 -217.12.223.90:22852 -185.224.110.37:22840 -195.138.85.182:22840 -176.104.49.11:22840 -176.104.52.215:22840 -88.204.18.134:22840 -217.26.167.45:22840 -185.172.34.212:22840 -87.255.69.232:22840 -5.165.211.128:22840 -136.144.205.104:22840 -178.168.57.176:22840 -87.255.69.238:22840 -194.233.67.188:22840 -88.159.77.30:22840 -195.74.67.235:22840 -174.94.68.31:22840 -91.5.88.185:22841 -179.223.85.90:22840 -139.59.245.228:22840 -199.119.86.185:22840 -105.228.133.62:22840 -139.59.126.219:22840 -91.5.83.238:22842 -95.216.221.129:22840 -158.140.234.119:22840 diff --git a/connect/client-registrar.yaml b/connect/client-registrar.yaml deleted file mode 100644 index 399c6da..0000000 --- a/connect/client-registrar.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# ================================== -# Client Registrar Configuration -# ================================== - -# Log message level (0 = info, 1 = debug, >1 = trace) -logLevel: 0 -# Path to log file -logPath: "results/client-registrar.log" - -# Public address, used in NDF it gives to client -publicAddress: "0.0.0.0:20081" -# The listening port of this server -port: 20081 - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -# Maximum number of connections per period -userRegCapacity: 1000 -# How often the number of connections is reset -userRegLeakPeriod: "24h" - -# Database connection information -dbUsername: "cmix" -dbPassword: "" -dbName: "cmix_server" -dbAddress: "" - -# List of client codes to be added to the database (for testing) -clientRegCodes: - - "AAAA" - - "BBBB" - - "CCCC" diff --git a/connect/devnet.txt b/connect/devnet.txt deleted file mode 100644 index 922c0de..0000000 --- a/connect/devnet.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.125.145:11420 -35.163.143.85:11420 -34.218.59.127:11420 diff --git a/connect/gateway-1.yaml b/connect/gateway-1.yaml deleted file mode 100644 index 1e271c4..0000000 --- a/connect/gateway-1.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-1.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10080" - -# The listening port of this gateway -Port: 1080 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-0.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/connect/gateway-2.yaml b/connect/gateway-2.yaml deleted file mode 100644 index ddf82fa..0000000 --- a/connect/gateway-2.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-2.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10081" - -# The listening port of this gateway -Port: 1081 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-1.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/connect/gateway-3.yaml b/connect/gateway-3.yaml deleted file mode 100644 index ae3d58e..0000000 --- a/connect/gateway-3.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-3.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10082" - -# The listening port of this gateway -Port: 1082 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-2.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/connect/gateway-4.yaml b/connect/gateway-4.yaml deleted file mode 100644 index 18defe4..0000000 --- a/connect/gateway-4.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-4.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10083" - -# The listening port of this gateway -Port: 1083 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-3.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/connect/gateway-5.yaml b/connect/gateway-5.yaml deleted file mode 100644 index 272d3c0..0000000 --- a/connect/gateway-5.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-5.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10084" - -# The listening port of this gateway -Port: 1084 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-4.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/connect/mainnet.txt b/connect/mainnet.txt deleted file mode 100644 index 3fbbb1c..0000000 --- a/connect/mainnet.txt +++ /dev/null @@ -1,74 +0,0 @@ -"65.21.170.29:22840" -"88.198.2.52:22840" -"188.40.70.250:22840" -"185.218.125.248:22840" -"31.202.122.131:22840" -"173.249.60.80:22840" -"65.21.76.35:22840" -"195.201.171.211:22840" -"65.21.221.236:22840" -"37.97.220.130:22840" -"159.148.31.238:22840" -"nodochile.myddns.me:22840" -"94.130.10.38:22840" -"188.240.52.205:22840" -"212.38.189.73:22840" -"xerxesgw.caius.ovh:22840" -"46.4.50.57:22840" -"103.195.101.143:22840" -"49.12.45.179:22840" -"167.172.88.140:22840" -"5.189.176.210:22840" -"135.181.213.94:22840" -"213.136.70.8:22840" -"194.163.163.77:22840" -"65.21.204.13:22840" -"88.119.195.16:22840" -"88.198.2.51:22840" -"181.43.194.251:22840" -"159.148.31.232:22840" -"65.108.52.154:11098" -"138.201.37.166:22840" -"kmil.go.ro:22840" -"37.97.169.197:22840" -"144.76.65.107:22840" -"178.18.253.13:22840" -"162.55.131.110:22840" -"91.230.111.8:22840" -"109.98.108.250:22840" -"15.161.170.171:22840" -"37.97.224.110:22840" -"54.79.206.112:22840" -"144.126.149.30:22840" -"194.163.171.145:22840" -"37.97.220.129:22840" -"194.163.170.125:22840" -"65.21.143.248:22840" -"149.210.229.175:22840" -"149.210.192.112:22840" -"149.210.192.111:22840" -"65.21.234.163:22840" -"149.210.229.223:22840" -"173.249.44.133:22840" -"75.119.130.123:22840" -"194.233.77.127:22840" -"66.94.99.187:22840" -"144.91.99.106:22840" -"185.214.134.207:22840" -"95.217.207.236:22840" -"95.217.206.164:22840" -"173.212.233.67:22840" -"37.55.17.106:22840" -"65.108.3.162:22840" -"186.106.188.155:22840" -"109.237.108.117:22840" -"65.108.42.168:22840" -"65.21.234.86:22840" -"65.21.50.177:22840" -"194.163.189.115:22840" -"135.181.212.170:22840" -"23.88.104.166:22840" -"103.107.182.192:22840" -"65.108.2.254:22840" -"94.130.136.136:22840" -"162.55.100.14:22840" diff --git a/connect/network.config b/connect/network.config deleted file mode 100644 index ad5b9d1..0000000 --- a/connect/network.config +++ /dev/null @@ -1,26 +0,0 @@ -localhost:1080 -# This is the network configuration file. The top line of this file, -# when not set via command line, is used to determine to which network -# the integration test will be run against. - -# Note you can also specify "release", "betanet", or "protonet" on run.sh - -# Betanet gateways -109.169.15.30:22840 -5.12.137.118:22840 -92.246.20.92:22840 -178.16.39.203:22840 -86.135.17.18:22840 - -# Release (messenger test) network gateways -34.221.74.216:11420 -52.25.9.28:11420 -54.149.122.115:11420 - - -# protonet -185.152.3.247:11420 -93.151.207.39:11420 -93.107.154.131:11420 -173.208.225.75:11421 -92.246.20.92:11420 diff --git a/connect/network.sh b/connect/network.sh deleted file mode 100755 index 2a7b2cc..0000000 --- a/connect/network.sh +++ /dev/null @@ -1,110 +0,0 @@ -# This script is used to start a basic 5 node network for running clients on. It is meant to be `source`'d into a script -# which will run clients on the network, such as `client-session-tests.sh` or the main `run.sh`. -# -# You **must** source it, because otherwise the `trap finish EXIT` instruction will cause the network to stop when -# network.sh returns to your script or shell. Sourcing it will "import" the commands into your script instead, causing -# the trap instruction to stop the network when your script/shell exits. - -echo "STARTING SERVERS..." - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -UDBOUT=results/udb-console.txt - -# Copy udbContact into place when running locally. -cp udbContact.bin results/udbContact.bin - -PERMCMD="../bin/permissioning --logLevel $DEBUGLEVEL -c permissioning.yaml " -$PERMCMD > results/permissioning-console.txt 2>&1 & -PIDVAL=$! -echo "$PERMCMD -- $PIDVAL" - - -# Run Client Registrar -CLIENT_REG_CMD="../bin/client-registrar \ --l 2 -c client-registrar.yaml" -$CLIENT_REG_CMD > results/client-registrat-console.txt 2>&1 & -PIDVAL=$! -echo "$CLIENT_REG_CMD -- $PIDVAL" - -for SERVERID in $(seq 5 -1 1) -do - IDX=$(($SERVERID - 1)) - SERVERCMD="../bin/server --logLevel $DEBUGLEVEL --config server-$SERVERID.yaml" - if [ $SERVERID -eq 5 ] && [ -n "$NSYSENABLED" ] - then - SERVERCMD="nsys profile --session-new=gputest --trace=cuda -o server-$SERVERID $SERVERCMD" - fi - $SERVERCMD > $SERVERLOGS/server-$SERVERID-console.txt 2>&1 & - PIDVAL=$! - echo "$SERVERCMD -- $PIDVAL" -done - -# Start gateways -for GWID in $(seq 5 -1 1) -do - IDX=$(($GWID - 1)) - GATEWAYCMD="../bin/gateway --logLevel $DEBUGLEVEL --config gateway-$GWID.yaml" - $GATEWAYCMD > $GATEWAYLOGS/gateway-$GWID-console.txt 2>&1 & - PIDVAL=$! - echo "$GATEWAYCMD -- $PIDVAL" -done - -jobs -p > results/serverpids - -finish() { - echo "STOPPING SERVERS AND GATEWAYS..." - if [ -n "$NSYSENABLED" ] - then - nsys stop --session=gputest - fi - # NOTE: jobs -p doesn't work in a signal handler - for job in $(cat results/serverpids) - do - echo "KILLING $job" - kill $job || true - done - - sleep 5 - - for job in $(cat results/serverpids) - do - echo "KILL -9 $job" - kill -9 $job || true - done - #tail $SERVERLOGS/* - #tail $CLIENTCLEAN/* - #diff -aruN clients.goldoutput $CLIENTCLEAN -} - -trap finish EXIT -trap finish INT - -# Sleeps can die in a fire on the sun, we wait for the servers to start running -# rounds -rm rid.txt || true -touch rid.txt -cnt=0 -echo -n "Waiting for a round to run" -while [ ! -s rid.txt ] && [ $cnt -lt 120 ]; do - sleep 1 - grep -a "RID 1 ReceiveFinishRealtime END" results/servers/server-* > rid.txt || true - cnt=$(($cnt + 1)) - echo -n "." -done - -# Start a user discovery bot server -echo "STARTING UDB..." -UDBCMD="../bin/udb --logLevel $DEBUGLEVEL --skipVerification --protoUserPath udbProto.json --config udb.yaml -l 1" -$UDBCMD >> $UDBOUT 2>&1 & -PIDVAL=$! -echo $PIDVAL >> results/serverpids -echo "$UDBCMD -- $PIDVAL" -rm rid.txt || true -while [ ! -s rid.txt ] && [ $cnt -lt 30 ]; do - sleep 1 - grep -a "Sending Poll message" results/udb-console.txt > rid.txt || true - cnt=$(($cnt + 1)) - echo -n "." -done - diff --git a/connect/noerrors.txt b/connect/noerrors.txt deleted file mode 100644 index e69de29..0000000 diff --git a/connect/permissioning.yaml b/connect/permissioning.yaml deleted file mode 100644 index 8cd4175..0000000 --- a/connect/permissioning.yaml +++ /dev/null @@ -1,96 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -loglevel: 2 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening port of this server -port: 20080 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -minimumNodes: 5 - -minGatewayVersion: "3.0.0" -minServerVersion: "3.0.0" -minClientVersion: "4.0.0" -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - - -# Public address used in NDF to give to client -registrationAddress: "0.0.0.0:20081" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -fullNdfOutputPath: "results/permissions-ndfoutput.json" -signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:30080" - -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - - -# Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 diff --git a/connect/regCodes.json b/connect/regCodes.json deleted file mode 100644 index d3cf3a6..0000000 --- a/connect/regCodes.json +++ /dev/null @@ -1 +0,0 @@ -[{"RegCode": "rzws", "Order": "CR"},{"RegCode": "toqn", "Order": "CR"},{"RegCode": "mebh", "Order": "CR"},{"RegCode": "eqii", "Order": "CR"},{"RegCode": "zdcf", "Order": "CR"}] \ No newline at end of file diff --git a/connect/registration.json b/connect/registration.json deleted file mode 100644 index f400c7e..0000000 --- a/connect/registration.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": 5, - "PrecomputationTimeout": 30000, - "RealtimeTimeout": 15000, - "DebugTrackRounds": true, - "BatchSize": 32, - "MinimumDelay": 1000, - "RealtimeDelay": 2000, - "Threshold": 0.3, - "NodeCleanUpInterval": 180000, - "ResourceQueueTimeout": 300000 -} \ No newline at end of file diff --git a/connect/release.txt b/connect/release.txt deleted file mode 100644 index 4442567..0000000 --- a/connect/release.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.230.124:11420 -54.187.42.105:11420 -54.149.115.63:11420 diff --git a/connect/run.sh b/connect/run.sh deleted file mode 100755 index fc08f54..0000000 --- a/connect/run.sh +++ /dev/null @@ -1,267 +0,0 @@ -# NOTE: This is verbose on purpose. -################################################################################ -## Initial Set Up & Clean Up of Past Runs -################################################################################ - -# Copy file into folder if it does not already exist -if [ ! -f network.sh ]; then - cp ../network/network.sh . -fi - -set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm -fr blob* || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir - -if [ $# -gt 1 ] -then - echo "usage: $0 [gatewayip:port]" - exit -fi - - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -UDBOUT=results/udb-console.txt -CLIENTCLEAN=results/clients-cleaned - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - - -################################################################################ -## Network Set Up -################################################################################ - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -if [ "$NETWORKENTRYPOINT" == "localhost:1080" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "localhost:1080" > results/startgwserver.txt - -echo "DONE LETS DO STUFF" - -echo "DOWNLOADING TLS Cert..." -# -alpn h2 added to mimic grpc headers -CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi - -######################################################################## -# Test ephemeral connections -############################################################################### - -CONNECTIONOPTS="--password hello --waitTimeout 360 --ndf results/ndf.json -v $DEBUGLEVEL" - - -echo "TESTING EPEHMERAL CONNECTIONS..." -# Initiate server -CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob200 $CONNECTIONOPTS --writeContact $CLIENTOUT/client200-server.bin -l $CLIENTOUT/client200.log --startServer --serverTimeout 1m30s" -eval $CLIENTCMD > $CLIENTOUT/client200.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -echo "Sleeping to ensure connection server instantiation" -sleep 5 - -# Initiate client and send message to server -CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob201 --connect $CLIENTOUT/client200-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client201.log -m \"Hello 200 from 201, using connections\" --receiveCount 0" -eval $CLIENTCMD > $CLIENTOUT/client201.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL2 -wait $PIDVAL1 -echo "EPHEMERAL CONNECTION TESTS FINISHED" - -############################################################################### -# Test ephemeral authenticated connections -############################################################################### -echo "TESTING EPHEMERAL AUTHENTICATED CONNECTIONS..." -# Initiate server -CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob202 --authenticated $CONNECTIONOPTS --writeContact $CLIENTOUT/client202-server.bin -l $CLIENTOUT/client202.log --startServer --serverTimeout 1m30s" -eval $CLIENTCMD > $CLIENTOUT/client202.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -echo "Sleeping to ensure connection server instantiation" -sleep 5 - -# Initiate client and send message to server -CLIENTCMD="timeout 240s ../bin/client connection --ephemeral -s blob203 --authenticated --connect $CLIENTOUT/client202-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client203.log -m \"Hello 202 from 203, using connections\" --receiveCount 0" -eval $CLIENTCMD > $CLIENTOUT/client203.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL2 -wait $PIDVAL1 -echo "EPHEMERAL AUTHENTICATED CONNECTION TESTS FINISHED" - -############################################################################### -# Test non-ephemeral authenticated connections -############################################################################### - -echo "TESTING NON-EPHEMERAL CONNECTIONS" -# Initiate server -CLIENTCMD="timeout 240s ../bin/client connection -s blob204 $CONNECTIONOPTS --writeContact $CLIENTOUT/client204-server.bin -l $CLIENTOUT/client204.log --startServer --serverTimeout 1m30s" -eval $CLIENTCMD > $CLIENTOUT/client204.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -echo "Sleeping to ensure connection server instantiation" -sleep 5 - -# Initiate client and send message to server -CLIENTCMD="timeout 240s ../bin/client connection -s blob205 --connect $CLIENTOUT/client204-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client205.log -m \"Hello 204 from 205, using connections\" --receiveCount 0" -eval $CLIENTCMD > $CLIENTOUT/client205.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL2 -wait $PIDVAL1 -echo "NON-EPHEMERAL CONNECTION TEST FINISHED." - -echo "TESTING EPHEMERAL AUTHENTICATED CONNECTIONS..." -# Initiate server -CLIENTCMD="timeout 240s ../bin/client connection -s blob206 --authenticated $CONNECTIONOPTS --writeContact $CLIENTOUT/client206-server.bin -l $CLIENTOUT/client206.log --startServer --serverTimeout 1m30s" -eval $CLIENTCMD > $CLIENTOUT/client206.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -echo "Sleeping to ensure connection server instantiation" -sleep 5 - -# Initiate client and send message to server -CLIENTCMD="timeout 240s ../bin/client connection -s blob207 --authenticated --connect $CLIENTOUT/client206-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client207.log -m \"Hello 206 from 207, using connections\" --receiveCount 0" -eval $CLIENTCMD > $CLIENTOUT/client207.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL2 -wait $PIDVAL1 -echo "Non-Ephemeral Test Complete." -######################################################################## - -echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." - -cp $CLIENTOUT/*.txt $CLIENTCLEAN/ - -sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt -rm $CLIENTCLEAN/client*.txt.bak - -for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do - sort -o tmp $CLIENTCLEAN/$C || true - cp tmp $CLIENTCLEAN/$C - # uniq tmp $CLIENTCLEAN/$C || true -done - -GOLDOUTPUT=clients.goldoutput -if [ "$NETWORKENTRYPOINT" != "localhost:1080" ] -then - rm -fr clients.net_goldoutput || true - GOLDOUTPUT=clients.net_goldoutput - cp -r clients.goldoutput clients.net_goldoutput - # Delete the localhost only files - rm $GOLDOUTPUT/client13* || true - rm $GOLDOUTPUT/client18* || true - rm $GOLDOUTPUT/client19* || true - rm $GOLDOUTPUT/client2[01]* || true - rm $GOLDOUTPUT/client31* || true - rm $GOLDOUTPUT/client3[56]* || true - rm $GOLDOUTPUT/client45* || true - rm $GOLDOUTPUT/client56* || true - rm $GOLDOUTPUT/client67* || true - rm $GOLDOUTPUT/client74* || true - rm $GOLDOUTPUT/client9* || true -fi - - -set +x -diff -aru $GOLDOUTPUT $CLIENTCLEAN - -if [ "$NETWORKENTRYPOINT" == "localhost:1080" ] -then - - #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true - #diff -ruN results/client-errors.txt noerrors.txt - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - IGNORESERVE="Failed to serve " - IGNORESTART="Failed to start " - IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt - echo "Checking backup files for equality..." - # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt - #diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true - # diff -aruN client120BackupDiff.txt noerrors.txt - #echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!" - #diff -aruN client121BackupDiff.txt noerrors.txt -fi - -# Remove the file if it exists -if [ -f network.sh ]; then - rm network.sh -fi \ No newline at end of file diff --git a/connect/server-1.yaml b/connect/server-1.yaml deleted file mode 100644 index b240fe2..0000000 --- a/connect/server-1.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "rzws" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-0.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-1.log" - errOutput: "results/servers/server-1.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10080" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20080" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-1.log" -# === END YAML diff --git a/connect/server-2.yaml b/connect/server-2.yaml deleted file mode 100644 index b1d1504..0000000 --- a/connect/server-2.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "toqn" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-1.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-2.log" - errOutput: "results/servers/server-2.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10081" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20080" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-2.log" -# === END YAML diff --git a/connect/server-3.yaml b/connect/server-3.yaml deleted file mode 100644 index 9badf24..0000000 --- a/connect/server-3.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "mebh" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-2.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-3.log" - errOutput: "results/servers/server-3.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10082" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20080" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-3.log" -# === END YAML diff --git a/connect/server-4.yaml b/connect/server-4.yaml deleted file mode 100644 index d6f0739..0000000 --- a/connect/server-4.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "eqii" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-3.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-4.log" - errOutput: "results/servers/server-4.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10083" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20080" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-4.log" -# === END YAML diff --git a/connect/server-5.yaml b/connect/server-5.yaml deleted file mode 100644 index 5e0faaf..0000000 --- a/connect/server-5.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "zdcf" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-4.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-5.log" - errOutput: "results/servers/server-5.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10084" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20080" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-5.log" -# === END YAML diff --git a/connect/udb.yaml b/connect/udb.yaml deleted file mode 100644 index d96cbb8..0000000 --- a/connect/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "30080" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:20080" -devMode: true \ No newline at end of file diff --git a/connect/udbContact.bin b/connect/udbContact.bin deleted file mode 100644 index 10b0846..0000000 --- a/connect/udbContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc> \ No newline at end of file diff --git a/connect/udbProto.json b/connect/udbProto.json deleted file mode 100644 index 940cadf..0000000 --- a/connect/udbProto.json +++ /dev/null @@ -1 +0,0 @@ -{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}} \ No newline at end of file diff --git a/connect/whitelist.txt b/connect/whitelist.txt deleted file mode 100644 index 446eca0..0000000 --- a/connect/whitelist.txt +++ /dev/null @@ -1 +0,0 @@ -["0.0.0.0", "127.0.0.1"] \ No newline at end of file diff --git a/ephemeralRegistration/betanet.txt b/ephemeralRegistration/betanet.txt deleted file mode 100644 index e35ebcf..0000000 --- a/ephemeralRegistration/betanet.txt +++ /dev/null @@ -1,306 +0,0 @@ -188.187.190.53:22840 -135.181.134.215:22840 -90.64.159.233:22840 -63.224.248.74:22840 -78.63.197.35:22840 -95.217.225.220:22840 -167.86.89.25:22840 -134.17.158.63:22840 -77.92.107.203:22840 -136.50.65.29:22840 -176.99.131.128:22840 -109.251.8.131:22840 -85.237.9.101:22840 -195.93.180.119:22840 -193.106.95.173:22840 -193.106.95.227:22840 -168.119.49.161:22840 -193.106.94.75:22840 -176.99.131.188:22840 -180.150.125.93:22840 -135.181.29.63:22840 -116.202.99.94:22840 -94.130.150.94:22840 -93.81.246.111:22840 -183.99.96.180:22101 -62.171.131.155:22840 -159.65.122.44:22840 -45.122.123.134:22840 -157.90.34.21:22840 -107.182.163.106:22840 -52.124.124.210:22840 -170.187.225.94:22840 -95.217.228.117:22840 -88.99.13.205:22840 -52.183.38.229:22840 -77.223.99.126:22840 -37.228.116.99:22840 -167.99.247.6:22840 -5.45.81.112:22840 -193.47.33.51:22840 -5.45.81.110:22840 -69.197.179.42:22840 -69.197.179.162:22840 -94.244.64.115:22840 -109.100.137.105:22840 -86.57.132.29:22840 -178.248.81.38:22840 -213.55.169.27:22840 -212.24.106.228:22840 -195.181.247.171:22840 -82.148.29.76:22840 -81.163.28.252:22840 -80.249.150.70:22840 -79.98.24.202:22840 -62.173.145.42:22840 -77.223.98.157:22840 -193.47.33.132:22840 -82.148.19.245:22840 -31.184.254.81:22840 -195.64.234.210:22840 -195.64.234.98:22840 -78.26.169.79:22840 -62.77.156.70:22840 -77.223.97.164:22840 -193.47.33.50:22840 -62.173.140.126:22840 -93.81.246.64:22840 -149.210.192.112:22840 -77.120.176.213:22840 -188.138.242.248:22840 -178.168.101.47:22840 -37.97.220.128:22840 -69.197.147.18:22840 -81.240.39.28:22840 -141.105.67.92:22840 -213.10.138.128:22840 -217.136.119.184:22840 -85.201.32.4:22840 -92.64.19.232:22840 -89.221.20.22:22840 -62.167.123.100:22800 -161.230.93.70:22840 -76.65.147.14:22840 -86.7.108.18:22840 -109.129.225.57:22840 -194.158.207.84:22840 -116.203.252.237:22840 -217.12.210.152:22840 -45.115.107.124:22840 -178.128.199.183:22840 -93.107.156.53:22840 -82.15.128.246:22840 -70.75.89.186:22840 -109.87.172.237:22840 -80.90.47.210:22840 -90.189.180.24:22840 -46.98.0.118:22840 -85.221.55.10:22840 -191.32.173.237:22840 -80.5.16.132:22840 -173.212.199.13:22840 -120.88.119.219:22840 -135.19.193.9:22840 -134.249.187.129:22840 -188.194.110.16:22840 -195.38.9.10:22840 -46.42.16.25:22840 -31.165.163.210:22840 -89.232.195.123:22840 -77.122.54.99:22840 -85.105.79.102:22840 -163.172.149.150:22840 -5.53.16.225:22840 -178.124.192.61:22840 -167.99.130.234:22840 -95.158.15.24:22840 -195.239.181.117:22840 -104.158.0.184:22840 -62.171.142.152:22840 -77.122.89.98:22840 -200.37.209.49:22840 -181.43.154.26:22840 -185.230.88.227:22840 -91.169.185.175:62840 -217.136.102.221:22840 -149.210.229.230:22840 -176.37.104.235:22840 -37.97.224.62:22840 -94.107.24.186:22840 -151.252.109.180:22840 -195.93.181.189:22840 -195.93.181.192:22840 -149.210.229.210:22840 -77.122.48.168:22840 -185.4.65.20:22840 -37.97.224.55:22840 -178.170.47.131:22840 -37.97.224.32:22840 -178.170.39.140:22840 -135.181.139.234:22840 -78.129.38.119:22840 -78.181.101.251:22840 -68.183.34.147:22840 -5.255.173.96:22840 -195.177.94.31:22840 -37.57.87.184:22840 -37.97.224.19:22840 -209.145.53.106:22840 -176.214.77.176:22840 -143.178.133.206:22840 -85.118.207.56:22840 -88.211.82.66:22840 -185.23.83.59:22840 -93.75.3.51:22840 -176.210.55.44:22840 -83.144.175.13:22840 -78.188.200.189:22840 -174.114.197.104:22840 -188.83.79.190:22840 -66.183.0.247:22840 -5.61.52.49:22840 -149.210.229.197:22840 -82.118.17.160:22841 -31.202.122.239:22840 -46.150.9.16:22840 -205.250.188.151:22840 -149.210.229.175:22840 -77.122.91.193:22840 -31.202.122.152:22840 -151.95.102.130:22840 -91.245.37.80:22840 -199.119.86.179:22840 -93.72.67.70:22840 -195.134.65.165:22840 -103.56.39.162:20090 -178.27.238.236:22840 -149.210.192.41:22840 -103.56.39.183:20090 -5.61.54.13:22840 -78.188.51.20:22840 -93.157.248.142:22840 -31.172.140.126:22840 -95.189.106.118:22840 -86.94.128.12:22840 -5.132.111.41:22840 -109.129.220.59:22840 -84.83.206.46:22840 -136.144.240.106:22840 -89.28.86.208:22840 -89.28.6.19:22840 -5.255.173.43:22840 -77.122.29.37:22840 -136.144.203.178:22840 -136.144.230.186:22840 -136.144.206.186:22840 -61.6.46.179:22840 -31.202.123.194:22840 -135.125.235.32:22840 -103.83.149.90:22840 -66.183.0.246:22840 -185.12.142.45:22840 -46.37.194.90:22840 -78.26.140.125:22840 -89.191.125.159:22840 -31.201.104.137:22840 -77.92.109.45:22840 -108.249.110.153:22840 -196.41.195.118:22840 -101.98.209.195:22840 -77.92.109.43:22840 -188.127.250.195:22840 -76.176.192.12:22840 -91.177.2.56:22840 -82.193.107.60:22840 -86.83.150.15:22840 -134.249.121.177:22840 -46.166.138.219:22840 -75.156.104.27:22840 -109.100.137.83:22840 -174.88.128.201:22840 -178.168.68.129:22840 -66.183.0.245:22840 -62.238.247.127:22840 -65.21.151.29:22841 -207.81.171.109:22840 -155.93.136.90:22840 -190.22.170.63:22840 -136.144.230.185:22840 -102.182.202.19:22840 -70.52.24.55:22841 -195.191.174.168:22840 -88.223.114.249:22840 -46.142.181.156:22840 -174.94.125.212:22840 -184.146.45.46:22840 -136.144.236.167:22840 -174.88.104.199:22840 -88.223.115.74:22840 -178.170.40.34:22840 -91.149.187.22:22840 -178.150.223.30:22840 -195.138.68.0:22840 -77.122.59.150:22840 -91.241.178.180:22840 -95.164.8.35:22840 -188.138.162.9:22840 -77.122.80.204:22840 -46.150.9.21:22840 -46.119.158.146:22840 -5.34.183.246:22842 -65.21.180.158:22840 -188.187.188.47:22840 -62.171.137.40:22840 -178.151.197.49:22840 -213.231.5.100:22840 -194.28.172.72:22840 -76.71.65.212:22840 -76.71.65.96:22840 -185.46.60.30:22840 -185.172.34.211:22840 -87.255.69.231:22840 -91.222.114.19:22840 -162.55.58.184:22840 -91.233.171.9:22840 -82.16.173.238:22840 -77.169.225.166:22840 -87.248.171.27:22840 -81.243.65.75:22840 -207.6.218.81:22840 -207.6.218.110:22840 -188.124.46.130:22840 -159.196.176.42:22840 -143.244.158.201:22840 -185.224.108.251:22840 -80.100.87.204:22840 -185.48.197.184:22840 -95.67.28.111:22840 -171.25.167.187:22840 -176.100.12.243:22840 -185.224.108.82:22840 -217.12.223.90:22852 -185.224.110.37:22840 -195.138.85.182:22840 -176.104.49.11:22840 -176.104.52.215:22840 -88.204.18.134:22840 -217.26.167.45:22840 -185.172.34.212:22840 -87.255.69.232:22840 -5.165.211.128:22840 -136.144.205.104:22840 -178.168.57.176:22840 -87.255.69.238:22840 -194.233.67.188:22840 -88.159.77.30:22840 -195.74.67.235:22840 -174.94.68.31:22840 -91.5.88.185:22841 -179.223.85.90:22840 -139.59.245.228:22840 -199.119.86.185:22840 -105.228.133.62:22840 -139.59.126.219:22840 -91.5.83.238:22842 -95.216.221.129:22840 -158.140.234.119:22840 diff --git a/ephemeralRegistration/client-registrar.yaml b/ephemeralRegistration/client-registrar.yaml deleted file mode 100644 index acd7347..0000000 --- a/ephemeralRegistration/client-registrar.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# ================================== -# Client Registrar Configuration -# ================================== - -# Log message level (0 = info, 1 = debug, >1 = trace) -logLevel: 0 -# Path to log file -logPath: "results/client-registrar.log" - -# Public address, used in NDF it gives to client -publicAddress: "0.0.0.0:20071" -# The listening port of this server -port: 20071 - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -# Maximum number of connections per period -userRegCapacity: 1000 -# How often the number of connections is reset -userRegLeakPeriod: "24h" - -# Database connection information -dbUsername: "cmix" -dbPassword: "" -dbName: "cmix_server" -dbAddress: "" - -# List of client codes to be added to the database (for testing) -clientRegCodes: - - "AAAA" - - "BBBB" - - "CCCC" diff --git a/ephemeralRegistration/devnet.txt b/ephemeralRegistration/devnet.txt deleted file mode 100644 index 922c0de..0000000 --- a/ephemeralRegistration/devnet.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.125.145:11420 -35.163.143.85:11420 -34.218.59.127:11420 diff --git a/ephemeralRegistration/gateway-1.yaml b/ephemeralRegistration/gateway-1.yaml deleted file mode 100644 index db43a76..0000000 --- a/ephemeralRegistration/gateway-1.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-1.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10070" - -# The listening port of this gateway -Port: 1070 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-0.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/ephemeralRegistration/gateway-2.yaml b/ephemeralRegistration/gateway-2.yaml deleted file mode 100644 index cf99776..0000000 --- a/ephemeralRegistration/gateway-2.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-2.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10071" - -# The listening port of this gateway -Port: 1071 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-1.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/ephemeralRegistration/gateway-3.yaml b/ephemeralRegistration/gateway-3.yaml deleted file mode 100644 index dd1df93..0000000 --- a/ephemeralRegistration/gateway-3.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-3.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10072" - -# The listening port of this gateway -Port: 1072 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-2.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/ephemeralRegistration/gateway-4.yaml b/ephemeralRegistration/gateway-4.yaml deleted file mode 100644 index faf4abb..0000000 --- a/ephemeralRegistration/gateway-4.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-4.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10073" - -# The listening port of this gateway -Port: 1073 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-3.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/ephemeralRegistration/gateway-5.yaml b/ephemeralRegistration/gateway-5.yaml deleted file mode 100644 index 4e62aa9..0000000 --- a/ephemeralRegistration/gateway-5.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-5.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10074" - -# The listening port of this gateway -Port: 1074 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-4.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/ephemeralRegistration/mainnet.txt b/ephemeralRegistration/mainnet.txt deleted file mode 100644 index 3fbbb1c..0000000 --- a/ephemeralRegistration/mainnet.txt +++ /dev/null @@ -1,74 +0,0 @@ -"65.21.170.29:22840" -"88.198.2.52:22840" -"188.40.70.250:22840" -"185.218.125.248:22840" -"31.202.122.131:22840" -"173.249.60.80:22840" -"65.21.76.35:22840" -"195.201.171.211:22840" -"65.21.221.236:22840" -"37.97.220.130:22840" -"159.148.31.238:22840" -"nodochile.myddns.me:22840" -"94.130.10.38:22840" -"188.240.52.205:22840" -"212.38.189.73:22840" -"xerxesgw.caius.ovh:22840" -"46.4.50.57:22840" -"103.195.101.143:22840" -"49.12.45.179:22840" -"167.172.88.140:22840" -"5.189.176.210:22840" -"135.181.213.94:22840" -"213.136.70.8:22840" -"194.163.163.77:22840" -"65.21.204.13:22840" -"88.119.195.16:22840" -"88.198.2.51:22840" -"181.43.194.251:22840" -"159.148.31.232:22840" -"65.108.52.154:11098" -"138.201.37.166:22840" -"kmil.go.ro:22840" -"37.97.169.197:22840" -"144.76.65.107:22840" -"178.18.253.13:22840" -"162.55.131.110:22840" -"91.230.111.8:22840" -"109.98.108.250:22840" -"15.161.170.171:22840" -"37.97.224.110:22840" -"54.79.206.112:22840" -"144.126.149.30:22840" -"194.163.171.145:22840" -"37.97.220.129:22840" -"194.163.170.125:22840" -"65.21.143.248:22840" -"149.210.229.175:22840" -"149.210.192.112:22840" -"149.210.192.111:22840" -"65.21.234.163:22840" -"149.210.229.223:22840" -"173.249.44.133:22840" -"75.119.130.123:22840" -"194.233.77.127:22840" -"66.94.99.187:22840" -"144.91.99.106:22840" -"185.214.134.207:22840" -"95.217.207.236:22840" -"95.217.206.164:22840" -"173.212.233.67:22840" -"37.55.17.106:22840" -"65.108.3.162:22840" -"186.106.188.155:22840" -"109.237.108.117:22840" -"65.108.42.168:22840" -"65.21.234.86:22840" -"65.21.50.177:22840" -"194.163.189.115:22840" -"135.181.212.170:22840" -"23.88.104.166:22840" -"103.107.182.192:22840" -"65.108.2.254:22840" -"94.130.136.136:22840" -"162.55.100.14:22840" diff --git a/ephemeralRegistration/network.config b/ephemeralRegistration/network.config deleted file mode 100644 index 7350a66..0000000 --- a/ephemeralRegistration/network.config +++ /dev/null @@ -1,26 +0,0 @@ -localhost:1070 -# This is the network configuration file. The top line of this file, -# when not set via command line, is used to determine to which network -# the integration test will be run against. - -# Note you can also specify "release", "betanet", or "protonet" on run.sh - -# Betanet gateways -109.169.15.30:22840 -5.12.137.118:22840 -92.246.20.92:22840 -178.16.39.203:22840 -86.135.17.18:22840 - -# Release (messenger test) network gateways -34.221.74.216:11420 -52.25.9.28:11420 -54.149.122.115:11420 - - -# protonet -185.152.3.247:11420 -93.151.207.39:11420 -93.107.154.131:11420 -173.208.225.75:11421 -92.246.20.92:11420 diff --git a/ephemeralRegistration/noerrors.txt b/ephemeralRegistration/noerrors.txt deleted file mode 100644 index e69de29..0000000 diff --git a/ephemeralRegistration/permissioning.yaml b/ephemeralRegistration/permissioning.yaml deleted file mode 100644 index f8d85cc..0000000 --- a/ephemeralRegistration/permissioning.yaml +++ /dev/null @@ -1,96 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -loglevel: 2 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening port of this server -port: 20070 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -minimumNodes: 5 - -minGatewayVersion: "3.0.0" -minServerVersion: "3.0.0" -minClientVersion: "4.0.0" -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - - -# Public address used in NDF to give to client -registrationAddress: "0.0.0.0:20071" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -fullNdfOutputPath: "results/permissions-ndfoutput.json" -signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:30070" - -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - - -# Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 diff --git a/ephemeralRegistration/regCodes.json b/ephemeralRegistration/regCodes.json deleted file mode 100644 index 9bafc3a..0000000 --- a/ephemeralRegistration/regCodes.json +++ /dev/null @@ -1 +0,0 @@ -[{"RegCode": "utzn", "Order": "CR"},{"RegCode": "ukcv", "Order": "CR"},{"RegCode": "lznz", "Order": "CR"},{"RegCode": "aovi", "Order": "CR"},{"RegCode": "kibu", "Order": "CR"}] \ No newline at end of file diff --git a/ephemeralRegistration/registration.json b/ephemeralRegistration/registration.json deleted file mode 100644 index f400c7e..0000000 --- a/ephemeralRegistration/registration.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": 5, - "PrecomputationTimeout": 30000, - "RealtimeTimeout": 15000, - "DebugTrackRounds": true, - "BatchSize": 32, - "MinimumDelay": 1000, - "RealtimeDelay": 2000, - "Threshold": 0.3, - "NodeCleanUpInterval": 180000, - "ResourceQueueTimeout": 300000 -} \ No newline at end of file diff --git a/ephemeralRegistration/release.txt b/ephemeralRegistration/release.txt deleted file mode 100644 index 4442567..0000000 --- a/ephemeralRegistration/release.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.230.124:11420 -54.187.42.105:11420 -54.149.115.63:11420 diff --git a/ephemeralRegistration/run.sh b/ephemeralRegistration/run.sh deleted file mode 100755 index da0dc2b..0000000 --- a/ephemeralRegistration/run.sh +++ /dev/null @@ -1,241 +0,0 @@ -# NOTE: This is verbose on purpose. -################################################################################ -## Initial Set Up & Clean Up of Past Runs -################################################################################ - -# Copy file into folder if it does not already exist -if [ ! -f network.sh ]; then - cp ../network/network.sh . -fi - -set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm -fr blob* || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir - -if [ $# -gt 1 ] -then - echo "usage: $0 [gatewayip:port]" - exit -fi - - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -UDBOUT=results/udb-console.txt -CLIENTCLEAN=results/clients-cleaned - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - - -################################################################################ -## Network Set Up -################################################################################ - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -if [ "$NETWORKENTRYPOINT" == "localhost:1070" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "localhost:1070" > results/startgwserver.txt - -echo "DONE LETS DO STUFF" - -echo "DOWNLOADING TLS Cert..." -# -alpn h2 added to mimic grpc headers -CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi - -######################################################################## -# Insert client tests here -############################################################################### -# Test Ephemeral Registration (e2e test without registering with nodes) -############################################################################### - -echo "TESTING E2E WITH EPHEMERAL REGISTRATION" -CLIENTCMD="timeout 360s ../bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client601.log -s blob601 --writeContact $CLIENTOUT/rick601-contact.bin --unsafe -m \"Hello from Rick601 to myself, without E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client601.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -CLIENTCMD="timeout 360s ../bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client602.log -s blob602 --writeContact $CLIENTOUT/ben602-contact.bin --destfile $CLIENTOUT/rick601-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client602.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" - -while [ ! -s $CLIENTOUT/ben602-contact.bin ]; do - sleep 1 - echo -n "." -done - - -TMPID=$(cat $CLIENTOUT/client601.log | grep -a "User\:" | awk -F' ' '{print $5}') -RICKID=${TMPID} -echo "RICK ID: $RICKID" -TMPID=$(cat $CLIENTOUT/client602.log | grep -a "User\:" | awk -F' ' '{print $5}') -BENID=${TMPID} -echo "BEN ID: $BENID" - -# Client 601 will now wait for client 602's E2E Auth channel request and confirm -CLIENTCMD="timeout 360s ../bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client601.log -s blob601 --destfile $CLIENTOUT/ben602-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" -eval $CLIENTCMD >> $CLIENTOUT/client601.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -# Test destid syntax too, note wait for 11 messages to catch the message from above ^^^ -CLIENTCMD="timeout 360s ../bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client601.log -s blob601 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick601, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client601.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 360s ../bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client602.log -s blob602 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben602, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client602.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 -CLIENTCMD="timeout 360s ../bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client601.log -s blob601 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick601, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client601.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 360s ../bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client602.log -s blob602 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben602, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client602.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 -######################################################################## - -echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." - -cp $CLIENTOUT/*.txt $CLIENTCLEAN/ - -sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt -rm $CLIENTCLEAN/client*.txt.bak - -for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do - sort -o tmp $CLIENTCLEAN/$C || true - cp tmp $CLIENTCLEAN/$C - # uniq tmp $CLIENTCLEAN/$C || true -done - -GOLDOUTPUT=clients.goldoutput -if [ "$NETWORKENTRYPOINT" != "localhost:1070" ] -then - rm -fr clients.net_goldoutput || true - GOLDOUTPUT=clients.net_goldoutput - cp -r clients.goldoutput clients.net_goldoutput - # Delete the localhost only files - rm $GOLDOUTPUT/client13* || true - rm $GOLDOUTPUT/client18* || true - rm $GOLDOUTPUT/client19* || true - rm $GOLDOUTPUT/client2[01]* || true - rm $GOLDOUTPUT/client31* || true - rm $GOLDOUTPUT/client3[56]* || true - rm $GOLDOUTPUT/client45* || true - rm $GOLDOUTPUT/client56* || true - rm $GOLDOUTPUT/client67* || true - rm $GOLDOUTPUT/client74* || true - rm $GOLDOUTPUT/client9* || true -fi - - -set +x -diff -aru $GOLDOUTPUT $CLIENTCLEAN - -if [ "$NETWORKENTRYPOINT" == "localhost:1070" ] -then - - #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true - #diff -ruN results/client-errors.txt noerrors.txt - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - IGNORESERVE="Failed to serve " - IGNORESTART="Failed to start " - IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt - echo "Checking backup files for equality..." - # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt - #diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true - # diff -aruN client120BackupDiff.txt noerrors.txt - #echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!" - #diff -aruN client121BackupDiff.txt noerrors.txt -fi - -# Remove the file if it exists -if [ -f network.sh ]; then - rm network.sh -fi \ No newline at end of file diff --git a/ephemeralRegistration/server-1.yaml b/ephemeralRegistration/server-1.yaml deleted file mode 100644 index 37e9147..0000000 --- a/ephemeralRegistration/server-1.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "utzn" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-0.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-1.log" - errOutput: "results/servers/server-1.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10070" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20070" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-1.log" -# === END YAML diff --git a/ephemeralRegistration/server-2.yaml b/ephemeralRegistration/server-2.yaml deleted file mode 100644 index fa7d975..0000000 --- a/ephemeralRegistration/server-2.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "ukcv" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-1.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-2.log" - errOutput: "results/servers/server-2.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10071" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20070" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-2.log" -# === END YAML diff --git a/ephemeralRegistration/server-3.yaml b/ephemeralRegistration/server-3.yaml deleted file mode 100644 index fc1deb7..0000000 --- a/ephemeralRegistration/server-3.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "lznz" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-2.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-3.log" - errOutput: "results/servers/server-3.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10072" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20070" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-3.log" -# === END YAML diff --git a/ephemeralRegistration/server-4.yaml b/ephemeralRegistration/server-4.yaml deleted file mode 100644 index 5cedab3..0000000 --- a/ephemeralRegistration/server-4.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "aovi" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-3.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-4.log" - errOutput: "results/servers/server-4.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10073" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20070" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-4.log" -# === END YAML diff --git a/ephemeralRegistration/server-5.yaml b/ephemeralRegistration/server-5.yaml deleted file mode 100644 index 0932c8f..0000000 --- a/ephemeralRegistration/server-5.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "kibu" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-4.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-5.log" - errOutput: "results/servers/server-5.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10074" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20070" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-5.log" -# === END YAML diff --git a/ephemeralRegistration/udb.yaml b/ephemeralRegistration/udb.yaml deleted file mode 100644 index e3a8f2b..0000000 --- a/ephemeralRegistration/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "30070" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:20070" -devMode: true \ No newline at end of file diff --git a/ephemeralRegistration/udbContact.bin b/ephemeralRegistration/udbContact.bin deleted file mode 100644 index 10b0846..0000000 --- a/ephemeralRegistration/udbContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc> \ No newline at end of file diff --git a/ephemeralRegistration/udbProto.json b/ephemeralRegistration/udbProto.json deleted file mode 100644 index 940cadf..0000000 --- a/ephemeralRegistration/udbProto.json +++ /dev/null @@ -1 +0,0 @@ -{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}} \ No newline at end of file diff --git a/ephemeralRegistration/whitelist.txt b/ephemeralRegistration/whitelist.txt deleted file mode 100644 index 446eca0..0000000 --- a/ephemeralRegistration/whitelist.txt +++ /dev/null @@ -1 +0,0 @@ -["0.0.0.0", "127.0.0.1"] \ No newline at end of file diff --git a/fileTransfer/- b/fileTransfer/- deleted file mode 100644 index 9c958a1..0000000 --- a/fileTransfer/- +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)mg4pyfJRRA9X8hD0bSHTqDhsa8B/pmpfJLD6BOCBWwMDrgZ7Ugdw/BAr6ZoQX7ppnKpe/46oXLbDNkmZkg49QtwAOTGmRN+QDdAhMVZ51X8QtLPqflJ2lCJAfZAsPGsx5Wds3vscP8B6lT3ykj44/Clk81lPly4940pm3EI3mGK1f9LwzNFgoQsp75enL3+ZWQgLL+YZRVOCtg63tuS3gWm80oaQ/iPPtyv47NI5LaObJ4RkY6JoEUR6TMN/gO8BZpE0rVgE6Yf5rKRaB0rZP7Hkg5RaAanQub9UnGNVPnAGZrbNN8HWlJykiH6mcRsoo+lcZMwLUjU80+yQYYHv61L87syvZjOg3R0i1osxC+SVwiTdByRt8hwCCuAV3aTR9awhnvMTxiTdIdts51hTfa83z+zdYMfhdu/R/LzHW4DfZo/FaU74dtQtt7I7txQUQ+4eTuYIb8DUolZTjwl138G5kvCblaJ1xBkRj8sC1Bv5UH3GXqacDbcG+hRYP+7JolNbKrM4Y5Z6XDwsX3+VICEq8//LyTnRCPyy+rt9oZiyVlAdFTdzq7lS7ZDdLgvEiSgbhxoNtwv6DQAAAgA7l61rfkZLdu5O1B3vvDAqTg==xxc> \ No newline at end of file diff --git a/fileTransfer/LoremIpsum.txt b/fileTransfer/LoremIpsum.txt deleted file mode 100644 index 3ef1e15..0000000 --- a/fileTransfer/LoremIpsum.txt +++ /dev/null @@ -1,333 +0,0 @@ -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut at efficitur urna, et ultrices leo. Sed lacinia vestibulum tortor eu convallis. Proin imperdiet accumsan magna, sed volutpat tortor consectetur at. Mauris sed dolor sed sapien porta consectetur in eu sem. Maecenas vestibulum varius erat, eget porta eros vehicula mattis. Phasellus tempor odio at tortor maximus convallis. Nullam ut lorem laoreet, tincidunt ex sollicitudin, aliquam urna. Mauris vel enim consequat, sodales nibh quis, sollicitudin ipsum. Quisque lacinia, sapien a tempor eleifend, dolor nibh posuere neque, sit amet tempus dolor ante non nunc. Proin tempor blandit mollis. Mauris nunc sem, egestas eget velit ut, luctus molestie ipsum. Pellentesque sed eleifend dolor. Nullam pulvinar dignissim ante, eget luctus quam hendrerit vel. Proin ornare non tortor vitae rhoncus. Etiam tellus sem, condimentum id bibendum sed, blandit ac lorem. Maecenas gravida, neque quis blandit ultrices, nisl elit pretium nulla, ac volutpat massa odio sed arcu. - -Etiam at nibh dui. Vestibulum eget odio vestibulum sapien volutpat facilisis. Phasellus tempor risus in nisi viverra, ut porta est dictum. Aliquam in urna gravida, pulvinar sem ac, luctus erat. Fusce posuere id mauris non placerat. Quisque porttitor sagittis sapien nec scelerisque. Aenean sed mi nec ante tincidunt maximus. Etiam accumsan, dui eget varius mattis, ex quam efficitur est, id ornare nulla orci id mi. Mauris vulputate tincidunt nunc, et tempor augue sollicitudin eget. - -Sed vitae commodo neque, euismod finibus libero. Integer eget condimentum elit, id volutpat odio. Donec convallis magna lacus, varius volutpat augue lacinia a. Proin venenatis ex et ullamcorper faucibus. Nulla scelerisque, mauris id molestie hendrerit, magna justo faucibus lacus, quis convallis nulla lorem nec nisi. Nunc dictum nisi a molestie efficitur. Etiam vel nibh sit amet nibh finibus gravida eget id tellus. Donec elementum blandit molestie. Donec fringilla sapien ut neque bibendum, at ultrices dui molestie. Sed lobortis auctor justo at tincidunt. In vitae velit augue. Vestibulum pharetra ex quam, in vehicula urna ullamcorper sit amet. Phasellus at rhoncus diam, nec interdum ligula. Pellentesque eget risus dictum, ultrices velit at, fermentum justo. Nulla orci ex, tempor vitae velit eu, gravida pellentesque dolor. - -Aenean auctor at lorem in auctor. Sed at mi non quam aliquam aliquet vitae eu erat. Sed eu orci ac elit scelerisque rhoncus eget at orci. Donec a imperdiet ipsum. Phasellus efficitur lobortis mauris, et scelerisque diam consectetur sit amet. Nunc nunc lectus, accumsan vel eleifend vel, tempor vitae sapien. Nunc dictum tempus turpis non blandit. Sed condimentum pretium velit ac sodales. In accumsan leo vel sem commodo, eget hendrerit risus interdum. Nullam quis malesuada purus, non euismod turpis. In augue lorem, convallis quis urna vel, euismod tincidunt nunc. Ut eget luctus lacus, in commodo diam. - -Aenean ut ante sed ex ornare maximus quis venenatis urna. Fusce commodo fermentum velit nec varius. Etiam vitae odio vel nisl condimentum fringilla. Donec in risus tincidunt ex placerat vestibulum. Donec hendrerit tellus convallis malesuada vulputate. Aenean condimentum metus id est mollis viverra. Quisque at auctor turpis. Aenean est metus, laoreet eu justo a, consequat suscipit nibh. Etiam mattis massa in sem sollicitudin, non blandit dolor pharetra. Vivamus pretium nunc ut lacus interdum, ut feugiat lectus blandit. Vestibulum sit amet scelerisque lectus. Nam ut lorem mattis urna semper rutrum. - -Maecenas imperdiet libero et metus porta maximus. Duis lobortis porttitor sem, ut dictum urna consequat vitae. Sed consectetur est at arcu fringilla scelerisque. Nulla finibus libero eu nibh vulputate euismod. Praesent volutpat nisi eget elit dignissim, ac imperdiet nisi mollis. Integer a venenatis neque. Fusce leo leo, auctor sit amet auctor in, elementum quis magna. - -Donec efficitur ullamcorper ex eget pretium. Suspendisse pharetra sagittis neque, eget laoreet sem maximus et. Etiam sit amet mi ut purus ornare molestie a nec diam. Sed eleifend dui at orci sollicitudin bibendum. Mauris non leo eu est consequat porttitor consectetur vel massa. Nullam pretium molestie leo in hendrerit. Etiam dapibus ante tellus, quis hendrerit turpis feugiat vitae. Maecenas id lorem quis nibh tincidunt accumsan sed sed nisi. Duis non faucibus odio. Fusce porta enim vitae ex ultrices, non euismod nibh posuere. - -Suspendisse luctus orci blandit, tempor ipsum in, molestie erat. Fusce commodo sed sapien quis interdum. Etiam sollicitudin ipsum a ipsum tempus, a vestibulum ligula hendrerit. Integer eget nisl a arcu hendrerit sollicitudin. Fusce a purus ornare, sollicitudin ante in, gravida elit. Vestibulum ut tortor volutpat, sodales enim eget, aliquam risus. Pellentesque efficitur nec sem id molestie. Mauris molestie, risus sit amet dignissim dictum, turpis ante vehicula tellus, in eleifend risus metus in mi. Aenean interdum ac metus ac porttitor. Vivamus nec blandit arcu. Maecenas fringilla varius metus, sed viverra diam facilisis a. - -Curabitur placerat cursus sem, in laoreet elit mollis in. Nam convallis aliquam placerat. Sed quis efficitur est. Proin id massa quam. Fusce nec porttitor quam. Nunc ac massa imperdiet, pretium nibh quis, maximus nisi. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec pretium purus id viverra fringilla. Cras congue facilisis orci et ullamcorper. In ac turpis arcu. Praesent convallis in ligula vitae suscipit. - -Etiam et egestas ipsum, ac lacinia erat. Nunc in metus sit amet lectus ultricies viverra in sed elit. Ut euismod urna eget nisl faucibus, accumsan vestibulum dolor suscipit. Aenean a volutpat ipsum. Nulla pharetra enim eu lorem vestibulum malesuada. Nulla facilisi. In congue at odio vel imperdiet. Fusce in elit in nibh dapibus rutrum. Donec consequat mauris a sem viverra egestas. Suspendisse sollicitudin dapibus finibus. Nullam tempus et lacus sed feugiat. Suspendisse aliquet, sem a fringilla elementum, ante lorem elementum odio, quis sollicitudin magna nibh sed libero. Maecenas convallis congue neque, ut molestie nibh porttitor ac. Vestibulum quis justo sed ipsum tempus viverra. Quisque mauris erat, varius a ipsum eu, porta molestie odio. Morbi mauris ante, sagittis eget nibh vel, volutpat faucibus nunc. - -Donec id neque feugiat, tristique neque et, luctus nibh. Duis vel lacus eu nisl dignissim sagittis sed sed lacus. Praesent luctus eleifend aliquet. Sed tempus facilisis lorem, sit amet tristique metus suscipit ac. Vestibulum id sapien ac erat luctus fermentum venenatis sit amet erat. Maecenas posuere finibus mi. Phasellus facilisis efficitur turpis sed auctor. Nullam lobortis ornare velit ac scelerisque. Vestibulum facilisis, odio ac finibus viverra, leo leo sodales arcu, sed ornare ex ligula vel lacus. Nullam odio orci, pulvinar eu urna in, tristique ornare augue. - -Vivamus scelerisque egestas justo, at dignissim erat elementum id. Etiam vel suscipit erat. Nulla accumsan ex sem, id pharetra eros tincidunt sodales. Nullam enim augue, interdum ut est ac, faucibus semper justo. Aliquam ut iaculis magna. Sed magna turpis, pretium nec lobortis vel, facilisis vitae mauris. Donec tincidunt eros in mauris maximus porta id vehicula mi. Integer ut orci lobortis turpis vehicula viverra. Vestibulum at blandit nunc, ac pretium quam. Morbi ac metus placerat, congue lorem nec, pharetra neque. - -Sed vestibulum nibh ex, fringilla lobortis libero sodales sed. Aenean vehicula nibh tellus, egestas eleifend diam sollicitudin non. Fusce ut sollicitudin leo. Nam tempor dictum erat sit amet vestibulum. Pellentesque ornare mattis ex, nec malesuada elit sollicitudin vitae. Nulla nec semper enim, venenatis ornare orci. Aliquam urna purus, ornare eu ipsum vitae, consectetur faucibus elit. Nulla vestibulum semper ligula, id rhoncus tortor accumsan nec. Vestibulum non ante sed urna efficitur imperdiet vitae quis felis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque rutrum quam sit amet nisl facilisis, quis maximus ante bibendum. - -Integer vel tortor nec est sodales posuere ut ac ipsum. Curabitur id odio nisl. Sed id augue iaculis, viverra risus nec, bibendum nunc. Cras ex risus, semper ac lorem nec, mattis dictum purus. Aenean semper et lacus at condimentum. Fusce nisl dolor, facilisis nec velit at, tempus pharetra mauris. Nam ac magna urna. Nulla convallis libero sed ex eleifend, ac molestie magna rhoncus. - -Donec blandit aliquam metus molestie suscipit. Cras et malesuada urna, non facilisis turpis. Donec non orci at leo aliquet porttitor vel non turpis. Nam consequat libero quam, non egestas ipsum eleifend quis. Mauris laoreet tellus enim, ac porta sapien condimentum quis. Nunc non sagittis orci. Aenean leo nibh, feugiat in turpis eget, hendrerit faucibus ligula. Morbi et massa nulla. Curabitur ac tempus nibh. Quisque commodo imperdiet viverra. Quisque sit amet condimentum mauris. - -Aliquam vel velit sed turpis consectetur eleifend quis et quam. Integer sed magna vel nisl consectetur lacinia vitae et ante. Duis consequat nulla ac leo auctor, ac euismod ipsum semper. Aliquam libero neque, imperdiet et nisi fringilla, vehicula elementum leo. Phasellus facilisis felis nec sagittis sodales. Donec ac consectetur odio. Aliquam eu aliquam lacus. Aliquam dictum eleifend risus, hendrerit eleifend nibh feugiat at. Aenean id tristique justo. Maecenas vel nibh quis massa aliquam convallis in eget mauris. - -Vestibulum nec fringilla neque, sit amet pellentesque dolor. Aenean a dolor enim. Morbi urna orci, mollis in viverra vel, volutpat vitae magna. Aenean sodales nec nisi ultrices condimentum. Quisque in turpis lobortis purus elementum maximus lacinia et nibh. Donec sed tortor eu nibh bibendum convallis in quis massa. Integer efficitur ultricies odio vel commodo. - -Quisque fermentum odio sit amet nunc tempus, vel porta nunc lobortis. Nam pellentesque elit non leo interdum, blandit eleifend purus suscipit. Nullam porta est non enim vulputate, ut molestie tortor ullamcorper. Donec fermentum, lectus suscipit commodo aliquet, tellus lacus rutrum ante, quis condimentum risus nisi id risus. Ut dapibus hendrerit odio non aliquet. Integer neque odio, dictum ac efficitur sit amet, facilisis a lacus. Nulla placerat erat et tortor placerat, vel posuere felis dignissim. Morbi non scelerisque ipsum. Aliquam hendrerit vestibulum metus vel pellentesque. Nunc fringilla turpis sodales nisi vestibulum faucibus. Quisque vehicula est arcu, tempus eleifend lorem scelerisque vitae. - -Nullam vehicula tortor vel purus hendrerit convallis. Cras sagittis metus ex, sit amet sollicitudin lectus vulputate quis. Integer sem odio, lobortis et pretium non, pharetra ut lorem. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque aliquam aliquet lorem, faucibus venenatis diam viverra in. Nullam pulvinar, nisi vel elementum venenatis, lacus risus convallis neque, ac eleifend lorem enim ac turpis. Pellentesque tellus quam, dictum eu nisl non, cursus pellentesque justo. - -Cras pharetra lorem sed magna vulputate, eget iaculis elit molestie. Morbi a est finibus, condimentum nunc at, feugiat magna. Curabitur turpis turpis, placerat sed risus vitae, porta volutpat elit. Phasellus id neque diam. Maecenas eu metus a urna iaculis egestas eget at elit. Nunc vehicula molestie dapibus. In auctor sapien eget mi tempus, eu tempor massa egestas. Pellentesque metus sem, pharetra non urna ac, convallis hendrerit massa. Mauris nunc velit, maximus sit amet est sit amet, gravida ultrices elit. Vivamus ut luctus nisl. Nam et ultrices ipsum. Maecenas eget blandit mi. Curabitur eu lorem nec est vehicula sodales. - -Vestibulum hendrerit sed est vitae egestas. Nam molestie, augue non consequat efficitur, elit purus commodo orci, et pharetra ante risus eget augue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas a nulla enim. Ut accumsan sodales ultrices. Quisque gravida, leo rhoncus placerat egestas, eros felis posuere diam, ut eleifend orci nisl vitae lorem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam sit amet urna venenatis, pulvinar nisi eget, tristique nisi. Nam nec purus hendrerit, congue augue et, facilisis diam. Donec aliquet eleifend mauris. Vivamus eu libero rhoncus, scelerisque metus at, hendrerit quam. Cras vulputate, magna eget pretium accumsan, tortor nunc molestie quam, at vulputate turpis velit eget arcu. Etiam tristique sollicitudin est, in condimentum diam faucibus vitae. - -Curabitur id lorem elementum diam sollicitudin gravida a sit amet ipsum. Pellentesque tortor ligula, auctor at ultricies non, pulvinar et risus. Ut vitae cursus metus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed quis tortor feugiat, fermentum nunc at, sodales massa. Donec efficitur euismod diam non sodales. In eu augue quis enim elementum auctor. In hac habitasse platea dictumst. Cras in libero nec urna tempor venenatis vitae a diam. Nam vulputate nisl nulla, ut porttitor elit euismod non. Praesent eget tempus lacus, vel ullamcorper nulla. Quisque ut risus nibh. Nam rhoncus commodo consectetur. Sed ultrices sapien id lectus imperdiet, sed tincidunt est dapibus. - -Integer posuere mattis ipsum congue ullamcorper. Nunc ac vulputate magna. Ut bibendum scelerisque lectus. Nullam laoreet porta nunc, in viverra dolor blandit eu. Ut semper id urna quis bibendum. Vivamus sed felis nec sapien faucibus volutpat sed et nisi. Morbi faucibus venenatis imperdiet. Mauris semper ex ac blandit scelerisque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. - -Suspendisse vitae lectus diam. Nulla vel lectus non magna congue pharetra eget nec augue. Morbi elementum, nisl ut vestibulum varius, quam sapien convallis magna, tempus maximus nunc est vel purus. In molestie ligula sed placerat sagittis. In rutrum, felis volutpat pulvinar pharetra, arcu odio egestas augue, ut dapibus leo libero nec urna. Curabitur tortor sapien, aliquam id suscipit et, feugiat a leo. Sed mollis imperdiet tellus, ac placerat felis tristique sed. Fusce pulvinar est felis, sed rutrum neque sollicitudin sit amet. Donec tincidunt elit vel felis sagittis, sit amet vestibulum enim pellentesque. Nam accumsan rhoncus tellus vitae auctor. - -Praesent mattis risus eget dui finibus lobortis. Suspendisse auctor commodo viverra. Quisque a ante ante. Proin magna mi, efficitur vitae arcu vel, vehicula viverra lacus. Nulla rhoncus aliquet tortor eget iaculis. Vestibulum ac mollis risus. Curabitur non rhoncus neque. Donec non ipsum quis lectus fermentum convallis ac quis risus. - -Pellentesque aliquam diam diam, in tempus nisi rhoncus sed. Praesent ultricies nisl justo, sit amet suscipit lectus pharetra quis. Praesent non diam in dolor vulputate molestie ut vel nulla. Cras vel congue neque, in ultricies metus. Aliquam ultricies quam eget placerat accumsan. Aenean sodales cursus semper. Donec justo ex, euismod et mollis at, congue a arcu. - -In at sapien pulvinar, scelerisque felis sit amet, hendrerit diam. Aliquam pellentesque est vel augue dignissim, quis ornare sapien tincidunt. Nullam porta tincidunt tempus. Morbi eget arcu sed mauris tincidunt malesuada. Vivamus eleifend tortor in diam vulputate, non convallis nisi sodales. Vestibulum id arcu quis nisl maximus semper. Nunc quis dui vitae lectus dapibus luctus. Mauris mattis convallis mi, ut fringilla velit pulvinar non. - -Nam auctor ligula id dignissim pretium. Aliquam id ultricies massa. Suspendisse ullamcorper nec enim non egestas. Sed tristique, est eu cursus elementum, mauris nisi consectetur nulla, dapibus ultricies tortor mi ut augue. Sed vitae velit luctus, viverra velit a, malesuada eros. Mauris efficitur tortor quam, sed sodales velit suscipit varius. Integer varius nisi sit amet pharetra consequat. Fusce a fringilla felis, vel porta risus. Maecenas nibh magna, euismod quis tellus nec, faucibus mattis erat. Nulla facilisi. Cras maximus tempor dolor, a tristique diam consectetur in. Nam semper sapien tincidunt justo ornare vehicula. Suspendisse sit amet egestas lacus, ac bibendum urna. - -Integer sed est id tortor molestie placerat. Pellentesque vehicula risus eget massa lacinia hendrerit. Sed ut elit quis diam posuere bibendum in et ligula. Donec lobortis lacus eget aliquet maximus. Nullam risus massa, imperdiet eu urna ut, luctus fringilla tortor. Ut imperdiet nibh metus. Sed vitae purus nisl. - -Nunc sed magna arcu. Proin ornare lectus at semper hendrerit. Donec mi nunc, mattis in nibh a, facilisis ornare arcu. Curabitur in pretium turpis. Donec vulputate turpis sem, quis consectetur felis euismod a. Nullam sapien libero, dictum a odio a, pretium accumsan mauris. Nunc et velit varius, gravida metus non, mollis dui. Praesent nec dictum lorem, id bibendum nisi. In hac habitasse platea dictumst. Curabitur in imperdiet eros. Quisque vitae turpis lorem. In hac habitasse platea dictumst. Aliquam lobortis felis sit amet metus maximus, sit amet vulputate lorem ornare. In non ultrices eros. - -Praesent tellus nisl, feugiat ut rhoncus at, euismod ac ipsum. Donec vitae felis consectetur dolor ultricies scelerisque et at mauris. Donec justo lorem, euismod non velit ac, malesuada tempus sem. Pellentesque nunc sem, pharetra sed fermentum non, dignissim at nunc. Sed placerat dignissim dolor vitae malesuada. Maecenas in orci in arcu dictum facilisis eget et dui. Sed sed elit sed augue cursus rhoncus gravida sit amet mauris. In vel tempor lectus. Vestibulum congue, quam et feugiat placerat, tortor urna elementum magna, et laoreet neque orci id felis. Aliquam scelerisque nisi eget nisl dignissim, id luctus dolor tempus. Etiam ornare, magna vel dictum faucibus, ante lacus interdum sem, non malesuada urna felis quis dolor. Donec faucibus sagittis elementum. Fusce id risus eu nulla ornare tincidunt iaculis id erat. - -Suspendisse potenti. Nunc tristique nulla ac elementum ornare. Quisque finibus vitae erat at molestie. Maecenas consectetur mollis odio eu luctus. Phasellus id velit et nunc euismod varius vel vel dolor. Duis tempus nisi eu risus laoreet porta. Sed tempor eget neque eget pharetra. Duis non massa ac sem vulputate congue. Aliquam sodales sapien nisi, ut egestas orci ornare volutpat. Ut dui libero, viverra vel turpis vitae, molestie auctor justo. Pellentesque lacinia arcu vitae nunc auctor, nec elementum lorem malesuada. Interdum et malesuada fames ac ante ipsum primis in faucibus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Integer at aliquet diam. Duis sit amet orci nec urna convallis ultrices at nec nunc. - -Quisque rutrum eros vel ipsum tincidunt, quis pulvinar mi tincidunt. Quisque eget condimentum diam. Fusce porttitor maximus dolor et suscipit. In turpis tellus, semper hendrerit elit at, elementum fringilla nisl. Curabitur a maximus nunc. Ut dictum dignissim lectus, et convallis eros volutpat non. Sed tempor orci risus, nec fringilla nisl dictum quis. Nunc id sagittis ipsum. - -Fusce sollicitudin suscipit risus, tincidunt fermentum odio cursus eget. Proin tempus, felis et dignissim gravida, quam libero condimentum ligula, eget commodo libero sapien eget magna. Quisque feugiat purus mi, in facilisis augue euismod non. In euismod pharetra enim, non tristique purus dictum ac. Maecenas sed diam tincidunt, mollis neque a, imperdiet est. Sed eu orci non nulla mollis consequat et quis metus. Fusce odio metus, tincidunt ac velit sit amet, tempor posuere tortor. Vestibulum ornare, quam non vulputate feugiat, diam nibh finibus augue, at pharetra lectus nibh quis metus. Nam dignissim quis tellus eget aliquet. Proin iaculis sit amet ex eu vehicula. Etiam vehicula sollicitudin laoreet. Praesent venenatis luctus est. Suspendisse potenti. Donec luctus molestie mollis. Vestibulum quis tortor ut mauris porta gravida sed sit amet felis. Aliquam in ex condimentum, volutpat eros scelerisque, accumsan orci. - -Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Maecenas vitae viverra sapien. Suspendisse vel accumsan libero, ac rutrum purus. Aliquam in risus sed metus sollicitudin convallis eget in purus. Phasellus sagittis vestibulum magna, quis scelerisque augue malesuada vel. Quisque felis leo, vulputate laoreet enim lacinia, gravida viverra urna. Aliquam faucibus vestibulum maximus. Praesent scelerisque velit quis pellentesque varius. Ut consectetur ut risus a bibendum. In mollis sapien vitae ipsum volutpat, sit amet mattis nibh dictum. Curabitur eros ipsum, tincidunt et mauris id, maximus mattis sem. Mauris quis elit laoreet, porttitor nulla sit amet, feugiat tortor. Cras nec enim pulvinar, tincidunt lorem molestie, ornare arcu. Cras imperdiet quis ante vitae hendrerit. Sed tincidunt dignissim viverra. - -Aenean varius turpis dui, id efficitur lorem placerat sit amet. In hac habitasse platea dictumst. Integer quis pulvinar massa. Proin efficitur, ipsum eget vulputate lobortis, nibh ipsum faucibus magna, non luctus lorem nulla sed magna. Vestibulum scelerisque sed tortor eu aliquet. Curabitur et leo ac tellus pretium egestas. Cras blandit neque dui, eget dictum leo porttitor sed. Sed ultricies commodo tortor, a molestie ante scelerisque vitae. Duis faucibus quis magna nec lacinia. Morbi congue justo id dui ultricies condimentum. Pellentesque maximus faucibus gravida. Mauris vestibulum non libero sit amet fringilla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras id lorem condimentum, sodales dui id, blandit dolor. Sed elit mauris, aliquet nec enim vitae, sollicitudin pretium dui. Cras lacus sapien, maximus in libero et, elementum fermentum nunc. - -Vestibulum gravida cursus nisi sed congue. Nam velit lorem, porttitor id pharetra finibus, malesuada eget dui. Vestibulum at est ultrices, venenatis nulla sed, suscipit risus. Maecenas posuere pretium odio nec accumsan. Aliquam dui dui, laoreet sed felis non, dignissim hendrerit ante. Etiam id commodo ante. Aenean bibendum enim aliquet fringilla dictum. Morbi eu feugiat risus. - -Praesent gravida a ante non placerat. Mauris ultricies ullamcorper justo id viverra. Aenean semper metus eu nisl euismod suscipit. Proin erat quam, viverra ut metus eget, imperdiet accumsan nunc. Curabitur non enim a odio maximus pulvinar ac et elit. In auctor ex a malesuada malesuada. Nullam dapibus quam neque, a lacinia magna tempor eget. Nam pellentesque, nisl eget gravida porta, felis magna lacinia ipsum, eu lacinia felis dui non libero. Phasellus ut convallis urna. Curabitur convallis sem vel tortor lobortis molestie. Nunc vel fringilla mi. Donec eget libero ultricies, euismod nibh non, gravida mauris. Praesent malesuada, lectus at sollicitudin interdum, mi lacus aliquam metus, non gravida tortor velit ac justo. Suspendisse auctor tellus sapien, at eleifend erat mollis et. - -Sed a dictum quam. Sed accumsan libero vel feugiat vulputate. Cras mattis massa nec velit rhoncus luctus. Sed ornare, augue vel ornare lobortis, purus nulla interdum ipsum, a semper massa enim quis nunc. Nunc tempor efficitur odio, vel consequat dui fringilla ac. Quisque at quam sed lacus rhoncus sollicitudin. Nunc dolor libero, dictum a ornare id, euismod ac lectus. Quisque a hendrerit lectus. Nam ut diam eu neque viverra porttitor. Proin vitae accumsan eros, ut iaculis lorem. Nulla libero odio, mollis sed venenatis et, imperdiet ut ligula. - -Aliquam dignissim erat erat, vel imperdiet arcu sagittis id. In in dolor orci. Aliquam congue fermentum dui tristique viverra. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur a turpis in dolor consequat pulvinar. Pellentesque sed posuere nisl. Etiam pellentesque euismod sem. Quisque vitae nibh urna. Phasellus elementum arcu urna, ac scelerisque leo iaculis non. Etiam laoreet, nunc a consectetur rhoncus, nunc tortor feugiat nibh, vitae volutpat metus mauris in est. Pellentesque at neque eu arcu faucibus auctor nec vitae urna. Suspendisse semper tristique nisl id interdum. - -Integer dui libero, auctor id elementum a, convallis eu est. Praesent auctor sodales faucibus. Aenean faucibus euismod orci, vestibulum pharetra magna consectetur vel. Praesent a enim vel nisi aliquam tristique ut id metus. Donec at purus dui. Sed a aliquam velit, non viverra ex. Ut molestie interdum urna vel facilisis. Nunc iaculis aliquet turpis eu luctus. Vestibulum mollis diam vel ante finibus, a efficitur est tempus. Nulla auctor cursus sagittis. Nullam id odio vitae orci tristique eleifend. - -Ut iaculis turpis at sollicitudin accumsan. Cras eleifend nisl sed porta euismod. Nullam non nisi turpis. Cras feugiat justo nec augue pretium fermentum. Nunc malesuada at nulla a interdum. Proin ullamcorper commodo ligula ac rutrum. Praesent eros augue, venenatis vitae enim sit amet, ultricies eleifend risus. Nunc bibendum, leo ac consequat porttitor, diam ante posuere turpis, ut mattis odio justo consectetur justo. Phasellus ex dolor, aliquam et malesuada vitae, porttitor sed tellus. - -Praesent vitae lorem efficitur, consequat enim ut, laoreet nisi. Aliquam volutpat, nisl vel lobortis dapibus, risus justo lacinia justo, viverra lacinia justo lorem egestas nibh. Suspendisse pellentesque justo sed interdum sagittis. Maecenas vel ultricies magna. Duis feugiat vel arcu ac placerat. In tincidunt a orci at feugiat. Maecenas gravida tincidunt nibh eu convallis. Quisque pulvinar rutrum cursus. - -Proin nec maximus tortor. Morbi pellentesque magna vitae risus scelerisque elementum. Nulla fringilla neque at arcu malesuada rutrum. Fusce nisi magna, elementum fringilla elit ut, lacinia varius purus. In accumsan justo ex, vitae suscipit velit finibus cursus. Morbi sed suscipit orci. Fusce nulla erat, fermentum vel aliquam vitae, eleifend et elit. Maecenas id elit a ligula vestibulum blandit ut at eros. Etiam ac bibendum massa, sagittis viverra dolor. Maecenas sed sapien nec elit fringilla molestie a vel purus. In in semper odio, quis consectetur dolor. In sed metus a nisi tincidunt posuere nec eget erat. - -Maecenas non auctor sem. Nullam in turpis sagittis, fermentum neque finibus, fermentum justo. Sed id nisl mattis, commodo felis in, dapibus turpis. Nullam in elit in nunc aliquam laoreet vel vitae magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt tempus imperdiet. Nulla est est, mollis imperdiet varius nec, porta in nulla. Vestibulum volutpat euismod nisi vel laoreet. - -Cras congue egestas sodales. Nam commodo malesuada est nec volutpat. Ut gravida, turpis ac congue molestie, sapien augue molestie nulla, quis lacinia sapien dui eu nunc. Aliquam eleifend, leo et finibus pharetra, ante sapien congue purus, quis euismod urna nulla et metus. Donec vulputate hendrerit tortor quis mollis. Vestibulum et condimentum purus, vel aliquam lacus. Ut id congue sapien. Pellentesque ante lectus, hendrerit sit amet luctus quis, feugiat dignissim leo. Aenean aliquam imperdiet cursus. Praesent vulputate turpis ullamcorper felis tincidunt tincidunt. Duis quis augue vitae nibh finibus sagittis. Sed sollicitudin scelerisque tellus, ut interdum diam sollicitudin bibendum. Vestibulum iaculis fermentum sem sit amet tempus. Suspendisse lobortis eleifend fermentum. - -Etiam consectetur est sit amet nisl aliquet, eget fermentum tellus rhoncus. Quisque vulputate sit amet mauris eget lacinia. Fusce ac eros tellus. Suspendisse et tellus felis. Praesent ultricies nunc lorem, sed sodales orci viverra eu. Vestibulum maximus nibh et turpis efficitur, in tempus ipsum efficitur. Vivamus finibus lorem nec malesuada egestas. Praesent in nibh sagittis, volutpat risus et, commodo est. Suspendisse facilisis eu augue nec tincidunt. Fusce quis nisl tempus, tincidunt lacus nec, dapibus purus. - -Vivamus et ante eu ante sodales elementum sed id urna. In tincidunt vel tortor sed feugiat. Praesent iaculis diam eget pellentesque ornare. Praesent aliquet convallis odio sit amet suscipit. Morbi et nisi nulla. Nunc vestibulum risus a faucibus efficitur. Pellentesque commodo odio eu leo vestibulum, id iaculis risus sagittis. Cras a ipsum posuere, rhoncus eros in, euismod nulla. Nam semper, mi id tempor sodales, diam sem blandit odio, eget posuere tellus nisi nec tortor. Etiam nec tortor congue, sodales ante ac, malesuada elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce fringilla eros sit amet orci vestibulum aliquam. Suspendisse fermentum malesuada est, sit amet condimentum ante volutpat nec. Integer sit amet magna molestie, feugiat odio a, condimentum lectus. - -Nullam odio ligula, mollis eu massa ac, maximus interdum velit. Vestibulum vulputate a justo ac efficitur. Quisque ex est, pretium id velit nec, malesuada posuere arcu. Sed congue lacus nec velit vehicula, a egestas erat mattis. Nunc eget leo a metus rhoncus mollis. Maecenas at elit nec est condimentum suscipit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis nisi mauris, consequat varius mollis at, porta ac dolor. Mauris vitae euismod lorem, ut dapibus turpis. Vivamus sit amet iaculis turpis. Nulla molestie feugiat urna in pharetra. - -Nam ac elit vulputate magna venenatis pharetra ac eu elit. Donec sed eros id lacus molestie rutrum. Sed iaculis mauris nunc, non fringilla ante semper eu. Maecenas in auctor eros. Vestibulum eu enim lorem. Etiam tristique dui id justo blandit dignissim. Aenean quis faucibus eros. Quisque vel dolor lectus. Etiam lacus enim, laoreet varius dolor ut, sollicitudin imperdiet lacus. - -Quisque vel nibh sollicitudin urna pellentesque euismod sed sed lorem. Suspendisse in condimentum ipsum, eu convallis ipsum. Nunc faucibus condimentum ante efficitur imperdiet. Donec tempor egestas efficitur. Morbi et aliquam nisl, quis iaculis elit. Fusce eu elit et sapien auctor ullamcorper. Curabitur sem orci, pharetra vitae facilisis non, scelerisque et mi. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut molestie eu velit id ultricies. Maecenas vehicula id tortor sit amet faucibus. Duis porta enim nec vestibulum posuere. Aenean blandit fringilla lacus accumsan pellentesque. Integer ut ante elementum, imperdiet metus sit amet, consequat orci. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce eget libero non arcu luctus pulvinar. Vestibulum condimentum tellus nec enim bibendum aliquam. Nulla non placerat massa. Donec vestibulum nibh at rutrum mollis. Aliquam erat volutpat. Vivamus metus est, rhoncus a efficitur id, blandit id dolor. - -Nunc rutrum lacus ut pharetra feugiat. Sed volutpat semper metus sit amet placerat. Phasellus efficitur porta venenatis. Quisque imperdiet metus nunc, nec porttitor turpis iaculis ut. Sed at orci eget eros lacinia volutpat. Etiam sagittis euismod diam quis ullamcorper. Nulla facilisi. Praesent faucibus neque vel tortor pharetra, ac tincidunt nunc rutrum. Phasellus aliquam nulla in augue rhoncus, a lacinia tellus pretium. - -Praesent in mauris lectus. Aliquam molestie nulla vitae nulla consectetur convallis. Sed eu molestie velit, vitae venenatis elit. Quisque eget ultricies mauris, at euismod risus. Sed gravida velit ut risus tempor suscipit. Maecenas metus nisi, pellentesque in ornare et, fermentum et lectus. Interdum et malesuada fames ac ante ipsum primis in faucibus. - -Quisque in mi congue, molestie massa a, fermentum tellus. Integer vitae tortor iaculis, tincidunt magna et, egestas ligula. Sed feugiat metus id erat faucibus, ac bibendum enim sollicitudin. Cras hendrerit massa sapien, et consequat tellus accumsan lacinia. Nam pharetra, ipsum ut vestibulum fringilla, sapien eros finibus leo, eget suscipit nibh arcu aliquam quam. Quisque sollicitudin id est eu rutrum. Nunc vitae tincidunt nisi, euismod viverra enim. Maecenas mattis sapien at felis hendrerit dignissim. - -Quisque eu urna nulla. Integer at eros fermentum est mattis rutrum at nec massa. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ut hendrerit nunc. Vestibulum est velit, rhoncus quis nisi sed, lobortis aliquet metus. Nunc faucibus egestas magna sit amet ornare. Maecenas eu justo mi. Proin tincidunt sem vel metus efficitur, sit amet malesuada augue cursus. - -Vestibulum viverra augue ut lorem accumsan, nec lacinia ligula accumsan. Maecenas viverra mauris dolor, vitae molestie mi accumsan nec. Ut nec sagittis nisl, fringilla viverra magna. Cras condimentum ultrices sollicitudin. Morbi tempor, massa ut iaculis posuere, arcu erat luctus massa, vitae pulvinar nulla ex nec nulla. Mauris vitae scelerisque ipsum. Nullam tincidunt consequat augue, quis aliquam nulla. Integer non arcu erat. Etiam scelerisque sodales vestibulum. Sed luctus arcu eu leo consectetur, at porta arcu elementum. - -Morbi in eleifend neque. Quisque a blandit libero, dignissim porta tortor. Sed nunc metus, aliquam a elit et, sagittis dictum arcu. Vestibulum lacinia nisi quis luctus ultricies. Fusce erat eros, euismod sit amet luctus vel, tempor a nunc. Aliquam nec nulla id est molestie tincidunt ac sit amet arcu. Donec molestie laoreet sapien, sit amet vulputate turpis facilisis at. Nullam eget nisi vel nibh elementum euismod non tempus leo. Nulla suscipit consectetur ante, nec fringilla lectus porta ac. Proin nec odio in lacus suscipit lacinia et sagittis ante. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed rhoncus lacinia porttitor. Pellentesque sapien ipsum, sagittis posuere arcu ut, laoreet gravida elit. Aenean eu tortor sit amet massa tincidunt facilisis. Aenean congue eget orci vitae vestibulum. - -Nunc tempus augue rhoncus condimentum vehicula. Sed in dui sit amet arcu varius pellentesque quis cursus nisl. Proin faucibus erat id egestas suscipit. Nam accumsan in tellus nec elementum. Phasellus nunc orci, mattis nec sollicitudin ultrices, feugiat eu lectus. Morbi ullamcorper rutrum sapien non rhoncus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque orci sapien, fringilla et dictum sit amet, tristique vel arcu. Maecenas tempus porttitor mattis. Cras eget faucibus enim. - -Mauris ornare mattis tortor. Duis convallis a ipsum id cursus. Aenean viverra, eros pellentesque ullamcorper posuere, orci ligula luctus odio, vel rutrum ex lectus eu erat. Etiam mollis nulla orci, fringilla gravida mauris viverra eu. Sed et orci non purus ultricies elementum. Cras at lectus hendrerit, fringilla lacus nec, feugiat sem. Morbi in metus felis. Etiam tempor bibendum ex eu venenatis. - -Cras ac nibh condimentum, lacinia sem ut, pretium felis. Sed congue, mi at accumsan semper, felis lorem vestibulum nisl, ac commodo lorem eros at mi. Curabitur condimentum nunc justo. Nulla efficitur venenatis nibh sed finibus. Integer iaculis volutpat mi dictum bibendum. Nullam tempus id ante euismod placerat. In placerat auctor lacus ac molestie. Aenean ultricies egestas imperdiet. - -Ut interdum cursus accumsan. Aliquam a mi ligula. Nunc blandit, metus in pellentesque aliquet, velit libero aliquam quam, nec egestas est turpis at ante. Quisque et magna eget massa gravida suscipit. Ut in lectus a massa eleifend sagittis rhoncus faucibus lectus. Maecenas sit amet elit vel tellus varius feugiat ac ut diam. Ut iaculis non ante in molestie. Integer pulvinar vulputate velit, ornare dignissim sapien laoreet ut. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. - -Aliquam finibus tristique laoreet. Pellentesque et diam tincidunt orci hendrerit euismod. Phasellus viverra orci vitae interdum imperdiet. Phasellus gravida auctor nisi, vitae rhoncus est dignissim eget. Phasellus eu facilisis eros, vitae iaculis quam. In condimentum velit non iaculis porta. Proin ipsum ex, egestas nec molestie sit amet, vehicula sed ante. Proin eget eros at nibh sollicitudin luctus a id magna. Nam eget turpis finibus, tempor libero nec, auctor velit. Nunc neque magna, dictum vel semper nec, facilisis eu lectus. Maecenas maximus tortor eget ex dictum, sit amet lacinia quam tincidunt. Nulla ultrices, nunc ac porta feugiat, diam dolor aliquet sapien, sit amet dignissim purus ante in ipsum. Maecenas eget fringilla urna. Etiam posuere porttitor interdum. Vestibulum quam magna, finibus et urna auctor, pulvinar viverra mauris. Fusce sollicitudin ante erat. - -Maecenas pretium facilisis magna, at porttitor turpis egestas non. Morbi in suscipit felis. Duis eget vehicula velit, posuere sodales lorem. Curabitur elementum a lectus non ornare. Donec vel eros scelerisque ipsum iaculis accumsan. Phasellus tincidunt tincidunt lobortis. Vestibulum maximus risus tellus, eu faucibus urna tincidunt quis. Fusce dignissim lectus vel enim ultricies, in efficitur purus semper. Etiam sit amet velit pulvinar, hendrerit erat et, maximus eros. - -Maecenas iaculis convallis consectetur. Duis ante nulla, commodo sit amet diam sed, tempus mattis risus. Maecenas volutpat leo leo, in mollis eros mollis quis. Aenean sagittis, neque id mattis varius, tortor leo cursus ligula, a ultricies justo turpis ut libero. Ut sit amet nibh et erat pellentesque rhoncus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rhoncus ligula nec iaculis faucibus. Curabitur tincidunt eu diam eget ultrices. - -Vestibulum quis nisl nec lacus commodo efficitur eu eleifend turpis. Etiam pretium id nisl a vehicula. Praesent elementum malesuada nisl. In condimentum interdum faucibus. In sed mauris vestibulum dui ultricies congue. Ut posuere mattis ante, in blandit mauris suscipit quis. Pellentesque ligula turpis, tincidunt a laoreet vel, consectetur in est. Nulla gravida ligula vel lectus faucibus accumsan. Praesent rhoncus eros arcu, id ultrices ipsum maximus ac. Mauris tincidunt cursus erat nec vulputate. Nulla tristique imperdiet eros vitae lobortis. Nullam a urna et sem condimentum blandit sed ut nulla. - -Maecenas auctor sodales facilisis. Pellentesque facilisis augue a odio varius suscipit. Etiam malesuada justo vel leo dignissim tincidunt. Sed magna metus, sagittis at diam gravida, dictum iaculis sem. Aliquam erat volutpat. Maecenas euismod egestas tortor non sollicitudin. Nulla quis odio tincidunt, auctor est sed, pretium turpis. Quisque aliquet semper magna, sit amet gravida enim luctus at. - -Nulla orci risus, ultrices a nunc et, dictum tincidunt lectus. Aliquam erat volutpat. Mauris at justo feugiat, efficitur lectus id, facilisis turpis. Sed ornare sodales fermentum. Suspendisse interdum tellus ac auctor sagittis. In auctor convallis metus non elementum. Mauris id dolor aliquam, euismod sapien id, tristique mi. Duis ac eleifend lectus. Etiam odio turpis, molestie vitae posuere vel, feugiat ac lorem. Fusce tempus ligula non hendrerit maximus. Nulla facilisi. Ut pretium turpis eget eros fringilla, vel aliquam mi pulvinar. - -Donec rhoncus augue ac viverra lacinia. Aliquam suscipit risus id sem varius, eget aliquet justo varius. Phasellus molestie, neque vitae semper posuere, est risus blandit ligula, id lacinia lectus orci id lectus. Cras vitae massa sit amet sapien pulvinar sollicitudin facilisis sed leo. Donec risus nulla, finibus id nulla quis, ornare sollicitudin neque. Curabitur id sapien vehicula, tempor velit sit amet, auctor augue. Nunc venenatis urna quis ante mollis bibendum. - -Pellentesque in varius massa. Donec non odio ultricies purus hendrerit fermentum. Aliquam quis elit vitae risus porttitor efficitur in vel sapien. Vestibulum sed urna sed lorem convallis bibendum nec non eros. Nullam molestie accumsan tincidunt. Aenean interdum sapien quis sapien dictum porttitor. Ut sit amet mollis magna, sed finibus urna. Etiam porta congue nunc eu aliquam. In congue mollis tincidunt. Nunc id metus ultricies, aliquam risus vel, sollicitudin dui. In nec felis consectetur, gravida dolor eu, consectetur lorem. Ut hendrerit, velit vitae malesuada placerat, felis metus vehicula odio, in iaculis ex tortor id metus. Donec mattis elit a est sollicitudin, in lacinia nisi gravida. Nullam ornare, tellus eget pharetra mollis, purus nisl condimentum sapien, vel ultricies enim libero ac ex. Fusce sed ligula a arcu lacinia tempor sit amet et magna. Maecenas fermentum nec diam in ornare. - -Cras pellentesque facilisis accumsan. Curabitur vehicula volutpat diam, vel tincidunt felis cursus sed. In malesuada leo et porta pulvinar. Integer at ultrices nunc, a tincidunt metus. Vivamus eu tellus vel lectus volutpat fringilla. Donec ut egestas est. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce non hendrerit turpis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam in ipsum quis ipsum hendrerit egestas. Donec vitae lectus malesuada, consequat enim et, lobortis velit. Vestibulum nec augue ex. Nullam ut porta lacus. Morbi pellentesque gravida purus, a interdum felis. Nulla lacus libero, euismod quis posuere in, congue pretium ipsum. Aliquam at suscipit nisi. - -Sed et venenatis purus, at maximus dolor. Fusce varius eget turpis ac sodales. Nullam sed mauris quis diam hendrerit dapibus consectetur eget dolor. Suspendisse maximus ac velit quis condimentum. Praesent ac mattis mauris. Morbi aliquet dignissim sem, sed mattis enim vestibulum vitae. Morbi sed dui in sapien elementum ullamcorper. Proin feugiat viverra ipsum et commodo. Nam pellentesque turpis nec condimentum aliquam. - -Praesent luctus elit sit amet est fermentum, nec egestas lectus scelerisque. Proin ornare mi eu turpis sodales, at vestibulum magna placerat. Suspendisse potenti. Nulla vel elit semper, blandit nunc vel, ullamcorper turpis. Morbi eu posuere sapien, ac iaculis tellus. Etiam tincidunt nunc vitae cursus faucibus. Phasellus rhoncus sollicitudin metus, id lobortis mi iaculis nec. Donec elementum venenatis purus at commodo. Aenean egestas facilisis metus, quis posuere nisi fringilla aliquam. Fusce ac porta nibh. Aliquam hendrerit lectus magna, at auctor felis viverra a. Integer elementum posuere nunc a fringilla. - -Nunc metus lectus, molestie nec tincidunt at, facilisis id enim. Aenean nulla quam, convallis non lectus vehicula, dignissim interdum velit. Ut vestibulum finibus mauris. Vivamus sed euismod elit, ut pulvinar dolor. Suspendisse dictum viverra pharetra. Curabitur non erat finibus orci sodales pulvinar. Sed at consectetur quam, ut commodo lacus. Suspendisse mollis convallis lorem, nec venenatis nunc lacinia a. Proin in est dui. Nunc nec lacus lectus. Aenean faucibus dui ornare magna varius fermentum. Aenean eu justo pulvinar libero rhoncus sollicitudin at et nunc. Integer sit amet mauris hendrerit, fringilla magna quis, tincidunt nunc. Fusce sit amet aliquam leo, pretium fermentum nisl. Vestibulum hendrerit tempus suscipit. - -Pellentesque et augue varius, aliquam justo vel, sagittis erat. Suspendisse tincidunt maximus velit, porttitor interdum ligula elementum vel. Nunc a dictum lectus, gravida tristique magna. Quisque id risus arcu. Vestibulum porta in mi sed finibus. Nam tristique in mauris nec gravida. Vivamus arcu sem, fringilla ac purus eget, vestibulum posuere arcu. Integer aliquet elit a est scelerisque pharetra vel sit amet augue. Sed quis finibus nunc, non ornare felis. Suspendisse potenti. Maecenas sollicitudin eros urna, vel bibendum mi sollicitudin facilisis. Nam elementum ligula non augue accumsan, ut laoreet tellus ultricies. Nunc in pellentesque quam. Proin eu varius lectus. Donec gravida massa non rhoncus dignissim. Sed est sapien, vestibulum ac egestas nec, posuere id metus. - -Phasellus quis interdum felis. Pellentesque ac elementum lacus. Proin posuere tempor ante, et consectetur nulla convallis ut. Etiam porta sem orci, eget convallis risus hendrerit in. Mauris gravida libero id tincidunt lacinia. Donec tempus ultrices ipsum, vitae finibus velit. Sed consectetur dictum velit, in consequat dolor fermentum eget. Pellentesque porttitor tellus velit, quis dignissim purus imperdiet et. Phasellus leo lectus, mollis nec ultricies ut, placerat ut quam. Integer imperdiet mauris sed magna gravida accumsan. Nulla congue turpis at urna tincidunt, at tempus urna condimentum. Praesent ac nibh lectus. Pellentesque id odio at purus tincidunt mollis nec id massa. Nulla eget venenatis erat, ornare lobortis nulla. Fusce rhoncus metus turpis, at mattis magna blandit sed. Aliquam sed mattis massa, ut bibendum nisl. - -Mauris commodo vulputate nulla at sodales. Vivamus sagittis viverra ex, in scelerisque dui commodo in. Maecenas eget ante euismod, tristique tortor at, placerat turpis. Fusce hendrerit, orci et hendrerit tristique, turpis tortor hendrerit elit, vel dictum eros nisl vitae enim. Nullam et lacus velit. Donec rutrum tortor risus, eu volutpat lorem placerat tempor. Etiam rhoncus lorem quis turpis gravida placerat. Nam at magna efficitur, interdum mauris vel, tristique odio. Phasellus augue nisl, fermentum luctus sapien non, rhoncus convallis dui. Aenean nibh tellus, congue ut nulla eu, luctus lacinia est. Sed vel augue tellus. Ut congue sit amet risus ut consequat. Vestibulum id magna sed augue condimentum porttitor. In nec leo ac justo condimentum dignissim. Nullam eu gravida ipsum. - -Proin iaculis imperdiet nisl. Vestibulum at lectus bibendum ipsum mattis viverra. Suspendisse facilisis non nulla non dignissim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce scelerisque turpis ante, tincidunt laoreet risus pharetra in. Nam nisi est, hendrerit in tincidunt sit amet, accumsan placerat odio. Vivamus nec egestas ligula. Nam sit amet dignissim nulla, sit amet lobortis ex. - -Etiam ac tellus lectus. Cras egestas urna id ornare vestibulum. Donec ut magna id velit finibus sagittis eget at nibh. Pellentesque tempus tempor justo, sit amet rutrum massa convallis eu. Ut lacus quam, sollicitudin vel consectetur vel, cursus eu velit. Sed aliquam ex a est lacinia pretium. Sed volutpat dui at iaculis accumsan. Nam feugiat libero a ante consectetur, nec maximus metus venenatis. - -Fusce in nunc lorem. Aliquam vel tincidunt nisl. Duis sed laoreet dui. Nam eu dapibus lacus. Nulla odio lectus, ornare sit amet leo sed, laoreet tempus massa. Curabitur venenatis ipsum vel turpis lacinia, sed euismod diam commodo. Etiam ac turpis cursus, auctor lectus eu, sodales ex. Ut eget dolor aliquet mauris maximus volutpat vitae ut lorem. Sed vulputate arcu ex, a porttitor risus porttitor vel. Duis sed accumsan purus. - -Pellentesque nisi est, scelerisque eu magna in, venenatis dapibus elit. Morbi porttitor, lectus dapibus dapibus sodales, mauris eros tristique metus, vitae porta tellus quam eu arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam fringilla nibh sed fermentum vestibulum. Aliquam quis mollis elit. Etiam lobortis purus sed nunc pulvinar malesuada. Morbi varius mattis velit efficitur convallis. - -Pellentesque facilisis ante id metus porta, et tincidunt quam tristique. Proin non sem vel eros venenatis tempor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus sollicitudin non risus at mollis. Cras leo orci, tempus eget felis a, efficitur tincidunt massa. In quis augue tristique, condimentum nulla eget, vulputate sem. Sed purus neque, ultricies eu turpis facilisis, dignissim bibendum eros. Vivamus congue accumsan dui. Sed congue dolor ut nisl mattis laoreet eu eu purus. Mauris vehicula, quam vel feugiat imperdiet, libero nibh commodo mi, at ullamcorper nulla enim sed leo. In eget ante sit amet metus luctus vulputate non sed dolor. In sapien odio, egestas sit amet sapien quis, congue mattis ante. Quisque tempus ligula ut eleifend facilisis. Vivamus ornare suscipit laoreet. Nulla vitae placerat massa, interdum sollicitudin augue. - -Suspendisse potenti. Morbi sed scelerisque diam. Suspendisse vitae tortor arcu. Nullam a ligula condimentum, sollicitudin arcu et, fringilla elit. Vivamus dignissim gravida ornare. Etiam scelerisque ligula at est porta, in dignissim sem hendrerit. In ut mollis urna. Sed blandit purus at volutpat scelerisque. Nullam vel finibus odio. In eu neque eu ante pretium posuere. Nullam vitae accumsan neque. Nam nec elit dolor. Ut sit amet urna eros. Maecenas efficitur dui id tempor porta. Pellentesque et quam felis. - -Proin aliquet sem nec ipsum porta, eu tempus velit vestibulum. Nulla sed ligula sed metus sollicitudin porttitor. Fusce non posuere lacus. Phasellus luctus, eros quis rhoncus ultricies, arcu tellus rutrum tellus, eu vulputate orci ante vitae lorem. Maecenas porttitor mauris purus, ut eleifend metus sollicitudin sit amet. Curabitur ultricies erat id libero egestas, ut ullamcorper eros vehicula. Vestibulum lorem nibh, aliquam ut tincidunt elementum, tempor quis sem. Donec vehicula tempor eleifend. In hac habitasse platea dictumst. Nunc ut sem elementum, aliquam dolor sit amet, eleifend enim. In elementum viverra mi, eget pulvinar lorem fermentum non. Nam ac ligula vel dolor convallis pellentesque. In sed lectus sed arcu consequat finibus vel et ante. In iaculis id tellus in congue. Donec imperdiet lorem quis erat maximus, vitae molestie ex accumsan. Donec pharetra, orci ac rutrum pretium, nunc mauris vestibulum magna, sagittis consequat risus orci ut felis. - -Sed id metus eget odio suscipit efficitur id eget ligula. Phasellus massa metus, varius et metus quis, porta lobortis turpis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In in augue semper, consequat nunc at, tristique eros. Nullam vitae consectetur neque. Duis dignissim urna metus, vitae condimentum erat eleifend ac. In pellentesque nunc sed convallis sagittis. Integer venenatis, felis a mollis tristique, diam neque laoreet orci, ac varius diam ligula pulvinar augue. Nullam dapibus libero id est sollicitudin, non efficitur dui sollicitudin. Mauris sem diam, feugiat non ante elementum, eleifend lobortis urna. Nullam pharetra tristique diam in aliquam. Donec finibus sit amet lectus non auctor. - -Ut nibh tortor, sagittis ut sem eget, ultricies auctor enim. Cras malesuada ligula velit, sit amet consequat mauris interdum eget. Curabitur fermentum tristique magna facilisis ultricies. Sed quis porta arcu. Ut in nunc id velit egestas consectetur. Nulla fermentum porta nisi, vitae dapibus risus consectetur faucibus. Mauris quis magna aliquam libero dictum porta. Mauris sed iaculis turpis, non auctor turpis. Sed eget lorem ex. Sed pulvinar, mi ut rhoncus dapibus, est lorem maximus orci, ac tempor justo erat vel purus. Proin euismod turpis eu ex blandit semper. Nulla suscipit molestie ex sed auctor. In facilisis nisi convallis nulla rutrum bibendum. In aliquet leo eget quam auctor, at eleifend felis commodo. - -Vivamus at elit scelerisque, tristique mi non, ornare nisl. Integer posuere orci diam, sit amet malesuada nisl vestibulum ut. Sed convallis urna id arcu luctus, faucibus interdum urna varius. In hac habitasse platea dictumst. Mauris laoreet mauris vel nisi ultrices facilisis. Suspendisse mattis purus eu dui lobortis bibendum. Fusce cursus risus tellus, non fermentum lectus tristique sed. Curabitur ullamcorper tincidunt tortor vel blandit. Quisque at ligula ut sapien convallis tincidunt eu vitae dolor. Etiam consectetur lacinia sollicitudin. Sed sagittis dolor vel nulla congue mollis. In ut felis gravida, luctus massa sed, venenatis ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc facilisis lobortis dapibus. - -In a velit nibh. Nam mollis nunc sed faucibus eleifend. Sed maximus malesuada ultrices. Donec mattis finibus nunc, eu viverra massa egestas non. Donec arcu velit, sagittis et tempor mollis, malesuada in mi. Duis rhoncus suscipit lorem ac lobortis. Vestibulum malesuada nibh at nulla ornare, at pulvinar magna tincidunt. Ut tellus risus, commodo vitae fringilla nec, semper quis nulla. Suspendisse euismod eros vel leo commodo, ac sollicitudin velit porta. Donec non dolor blandit, tempor magna eu, suscipit risus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec libero nisl, auctor in rhoncus sed, viverra a arcu. Etiam diam ex, luctus non ultrices quis, viverra ut quam. Mauris lobortis suscipit quam, malesuada pretium nibh ultrices non. Suspendisse molestie, risus sit amet venenatis semper, justo justo tempor tortor, vel iaculis ligula dui sed erat. - -Donec odio ligula, aliquam id mollis eget, tincidunt nec arcu. Duis aliquam elementum facilisis. Vivamus lobortis fermentum egestas. Etiam ac orci sit amet dui dignissim condimentum. Maecenas magna arcu, mollis eget nisl a, vestibulum finibus lacus. Praesent et metus risus. Morbi semper neque vel erat fermentum, commodo posuere sem porta. Proin sit amet ipsum at lectus vestibulum luctus. Nullam convallis nulla ac pretium facilisis. Nunc porttitor convallis mi nec vestibulum. Phasellus vehicula vestibulum ornare. Curabitur commodo sapien quis vulputate egestas. Suspendisse potenti. Vestibulum quis mattis nisi. - -Maecenas mattis ex eget placerat aliquet. Pellentesque est nibh, ultrices eu laoreet in, interdum vitae nunc. Suspendisse sit amet metus hendrerit, fringilla quam at, mollis arcu. Nullam tempus metus volutpat felis fermentum, et accumsan nisl placerat. Maecenas pharetra feugiat eros sit amet consectetur. Donec vehicula tincidunt massa eu sagittis. Integer massa nisl, luctus quis nisi et, molestie cursus turpis. Aliquam congue ipsum eget turpis vehicula, commodo eleifend neque placerat. Nam vel consequat urna. In pellentesque lobortis tempus. Pellentesque pharetra, purus in pretium convallis, turpis orci maximus tortor, eu malesuada ex elit sit amet lorem. - -Curabitur sit amet aliquet quam, non aliquet tellus. Pellentesque nec ipsum dolor. Aliquam blandit gravida dolor vitae porta. Integer enim purus, scelerisque id molestie sed, accumsan vel nulla. Aenean vel ultricies urna. Nam consequat ipsum tempor mi placerat, id pretium dolor cursus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; - -Sed venenatis dui mauris, pellentesque varius magna malesuada blandit. Etiam sed tempor ipsum, id tincidunt nisl. Sed a felis mi. Nulla orci metus, auctor ac malesuada lobortis, facilisis vel nisl. Pellentesque at scelerisque est. Nulla vel mi ut magna commodo lobortis in ut diam. Etiam a lacus dui. Integer ut turpis arcu. In hac habitasse platea dictumst. Quisque porta neque at velit eleifend consequat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aliquam erat volutpat. Nam pretium turpis a sem placerat, non mollis diam dictum. Sed at nulla purus. - -Sed auctor neque nec consectetur sollicitudin. Donec aliquam arcu id diam commodo posuere. Nulla nec accumsan ante, at fringilla ligula. Sed nisi libero, iaculis ut convallis nec, ultrices ac ex. Mauris aliquam mi nec ultricies porttitor. Mauris malesuada odio ut hendrerit tempus. Aliquam non aliquam dui. Nam mi mauris, volutpat in ligula vel, blandit iaculis lectus. - -Integer vel maximus massa, sit amet mollis nibh. Proin at aliquet sapien. Nullam a turpis id libero facilisis dignissim. Sed convallis nulla vitae turpis consectetur, eu pharetra libero posuere. Interdum et malesuada fames ac ante ipsum primis in faucibus. Morbi venenatis massa id massa commodo suscipit. Cras magna lorem, porta eget velit at, vehicula semper velit. Maecenas cursus libero sit amet eleifend tempus. Suspendisse sed odio nisi. Suspendisse pulvinar felis semper magna hendrerit, ac posuere neque ullamcorper. Vivamus aliquam, elit id vulputate convallis, dolor lectus tempor nisi, id dapibus nulla eros in dui. Pellentesque ante libero, eleifend ac consequat vel, sodales in enim. Proin gravida sapien in nulla cursus, sagittis faucibus quam aliquam. Phasellus sit amet diam molestie, luctus urna eget, convallis elit. Nunc interdum erat fringilla, finibus neque quis, scelerisque justo. Donec interdum id risus at pharetra. - -Cras finibus magna turpis, sollicitudin viverra felis bibendum sagittis. Cras blandit facilisis euismod. Curabitur finibus enim gravida erat faucibus rhoncus. Aenean tempor elit vel sem ornare viverra. Ut at tortor nisl. Aenean in quam enim. Mauris pulvinar augue at nunc commodo, eget efficitur turpis laoreet. In vel fermentum nisi, eget porttitor diam. Mauris placerat eu ligula eu cursus. Curabitur ac tincidunt dolor, eu molestie est. Quisque ullamcorper vehicula faucibus. Phasellus euismod, arcu a scelerisque tempor, massa lectus ultricies velit, at mattis mauris mauris ultricies arcu. Proin condimentum ultrices nisl a rutrum. Proin bibendum sem quis accumsan fermentum. - -Integer sit amet velit sed urna rutrum molestie id non nunc. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus ac ornare dolor. Quisque ante massa, tincidunt eget iaculis sit amet, dapibus vitae arcu. Fusce sagittis leo eu varius egestas. Nam a ex non tellus vestibulum consequat sit amet ac est. Donec mi purus, varius non finibus sit amet, maximus ut mauris. Etiam a sapien lacinia, faucibus massa non, tempus libero. Aliquam ac lorem id purus vehicula consectetur quis non metus. - -Nam id imperdiet nulla, eu luctus sem. Nunc non risus vel quam dapibus porta. Aliquam laoreet dictum tristique. Curabitur et varius leo. Nulla hendrerit sem at tellus sodales, in porta nisl cursus. In et tincidunt tellus, vel commodo nulla. Etiam mattis dolor vestibulum libero aliquet, eget accumsan mi iaculis. Aenean in lacus congue, iaculis ipsum eu, condimentum ligula. Cras lorem leo, eleifend eget risus at, efficitur malesuada turpis. - -Suspendisse potenti. Pellentesque laoreet neque quis molestie finibus. Mauris id sapien in dui efficitur feugiat ut efficitur justo. Mauris quis faucibus ante. Suspendisse interdum sodales purus, sed semper ante venenatis vel. Aliquam rutrum, magna ut faucibus molestie, tortor ante iaculis nisi, in sollicitudin tellus arcu nec ex. Donec eu accumsan orci. - -Integer elementum metus rhoncus hendrerit molestie. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Mauris efficitur ultricies orci eget vulputate. Etiam pharetra sem lacus, eu convallis lacus fringilla vitae. Nunc accumsan volutpat tincidunt. Nam non mauris pretium urna iaculis venenatis. Aenean tempor tortor a urna eleifend maximus. Donec ornare dui non ornare bibendum. Phasellus suscipit posuere lacus ac vestibulum. Pellentesque sit amet eleifend quam, fermentum pharetra diam. Vestibulum in porta sapien. Aenean in rhoncus dui. Quisque euismod, metus non luctus vulputate, sem diam maximus lorem, porttitor volutpat est justo sed sapien. Etiam maximus eros eu elit cursus elementum. - -Nunc ut aliquet dolor. Nam nunc nibh, consequat non mollis eget, dignissim a sapien. Aenean luctus suscipit massa id pharetra. Vestibulum eget velit vitae lectus porttitor blandit vitae eget odio. Pellentesque ullamcorper finibus massa at pretium. Nunc nec sapien at lacus vehicula dictum sed quis elit. In vitae sem urna. Sed porttitor sodales ante, ut varius justo blandit eu. - -Proin faucibus tempus velit, nec bibendum mauris bibendum vitae. Sed auctor, massa feugiat tristique iaculis, massa dolor accumsan eros, feugiat blandit odio diam ut purus. In at magna semper, mollis risus et, viverra lectus. Ut diam nibh, ultrices id tellus eget, venenatis auctor orci. Praesent eget semper orci. Proin vel nisl leo. Nulla sit amet mi quis eros feugiat rutrum sed vel dolor. Ut ullamcorper ultrices est vel tincidunt. Mauris a tortor nec nibh egestas interdum et quis lectus. Etiam vitae rhoncus tellus. Quisque facilisis odio at justo tempus consectetur. - -Duis vitae diam nec odio pulvinar eleifend. Suspendisse convallis lacus sit amet nunc elementum sodales. Integer commodo accumsan lacinia. Aliquam dapibus dolor dolor, a laoreet augue finibus et. Integer faucibus sapien ac interdum lobortis. Vestibulum blandit varius eleifend. Nunc id lobortis ipsum. Nunc porttitor et risus quis interdum. Integer ante lectus, cursus et urna tincidunt, fringilla varius arcu. In bibendum quis turpis efficitur laoreet. Etiam sollicitudin dictum diam, euismod luctus ante varius sed. Cras vel hendrerit risus. Morbi et leo fermentum, tincidunt ligula ultrices, tempus arcu. Quisque non arcu at mauris luctus tempus eu vitae erat. Morbi ut est ac orci vulputate tincidunt id ac lorem. - -Mauris et sodales tellus. Curabitur metus orci, fermentum sed est in, porttitor fermentum mauris. Aliquam mollis elit nulla, in varius lectus tempus eget. Sed lacinia tempus lacus, sed pulvinar nulla congue a. In a congue est, vitae egestas nisi. Aenean interdum, leo ac fermentum suscipit, sapien dui luctus diam, non iaculis massa felis id ligula. Sed euismod placerat nunc quis tempor. Sed eu leo luctus, pretium elit vitae, laoreet dolor. Mauris aliquet ac lectus malesuada sagittis. Suspendisse placerat tincidunt nisi, id semper urna consequat at. Suspendisse sollicitudin eu augue sit amet faucibus. Ut vitae justo sagittis, euismod tortor vitae, ullamcorper dolor. Suspendisse ultricies at enim ac congue. Curabitur auctor neque lectus, nec condimentum sem eleifend et. - -Nullam id sem in risus vulputate facilisis. Sed iaculis ante sit amet iaculis luctus. Suspendisse ut aliquet sapien, eget hendrerit nisi. Ut malesuada velit dui, a egestas odio dapibus a. Phasellus rutrum sit amet dui vulputate ultrices. Maecenas iaculis ex eu tortor lacinia, consequat maximus mi tempus. Vestibulum neque odio, accumsan eu ornare ut, elementum sed lacus. Nulla ipsum leo, consectetur in ullamcorper sit amet, volutpat sit amet nulla. - -Praesent tincidunt, justo et venenatis mattis, enim ex lobortis elit, ut tristique dui eros eu urna. Suspendisse sodales tellus quam, nec hendrerit sem mollis vel. Duis nunc nulla, mollis eu nisl et, sagittis volutpat sem. Fusce dolor turpis, dapibus quis sollicitudin in, semper vitae felis. Fusce id ante velit. Praesent ac ornare velit. Proin non erat quis neque accumsan iaculis. Donec faucibus orci at malesuada finibus. Nam venenatis tempus venenatis. - -Aenean vel risus ultricies, tempor augue id, pretium diam. Aenean at nunc orci. Cras sit amet tortor eget arcu efficitur vulputate. Phasellus sed quam diam. Proin enim felis, luctus nec orci a, porta blandit tellus. Nulla ac erat suscipit, sagittis enim rutrum, scelerisque mi. Nullam vestibulum luctus lectus at cursus. Morbi ut orci lorem. - -Sed est justo, placerat id rhoncus eget, finibus vitae lectus. Aliquam ultricies porta nulla, eget aliquet ligula placerat a. Nulla suscipit laoreet elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc a arcu id nisi tincidunt ultrices vitae pharetra nisl. Quisque facilisis at dui vel dignissim. Etiam imperdiet in libero non venenatis. Vivamus consectetur lectus non ultricies laoreet. Aenean vel laoreet lectus, et laoreet tellus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam ex arcu, consequat eu diam non, tristique faucibus purus. Duis nisi elit, bibendum quis lacinia ac, fermentum a lorem. Suspendisse molestie nulla sed velit accumsan lobortis. Aliquam erat volutpat. In pharetra ultricies urna aliquet congue. - -Quisque ante metus, maximus et dui eget, sollicitudin accumsan risus. Ut malesuada neque et ex facilisis, sed egestas augue pellentesque. Suspendisse potenti. Nunc sapien libero, maximus vitae purus eu, lobortis sagittis diam. Aliquam ultricies vehicula lorem, sit amet vehicula dolor venenatis vitae. Phasellus consequat nisi ut quam tincidunt, eu bibendum nisi bibendum. Vivamus a interdum sapien. Vestibulum interdum pharetra molestie. Sed facilisis dui non velit malesuada, semper rhoncus sapien volutpat. Etiam arcu nisl, dignissim sit amet purus non, tempus finibus orci. Pellentesque viverra faucibus enim, eget dignissim justo accumsan ac. Quisque pellentesque orci nisl, in vestibulum massa auctor a. - -Pellentesque condimentum odio in turpis mattis, ac blandit dui commodo. Sed consectetur purus sit amet quam dapibus placerat nec ut orci. Maecenas mollis ex in mi commodo sodales. Sed est enim, consequat dapibus convallis quis, iaculis non dolor. Donec sagittis fermentum velit ut convallis. Nunc accumsan mi vel enim consequat commodo. Nunc varius id massa nec consequat. Donec purus sem, pellentesque gravida mollis ac, convallis a tellus. Praesent convallis massa lacus, eget pellentesque neque sodales nec. Sed ut velit diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Suspendisse lacus erat, mattis eu tellus sit amet, vehicula bibendum mi. Nam aliquam, nisi dapibus condimentum congue, ante mauris bibendum turpis, a consequat risus arcu eget felis. Aenean dictum, nisi in facilisis sollicitudin, felis diam convallis magna, eu pulvinar nisl odio quis massa. Suspendisse imperdiet tincidunt tortor, sit amet dignissim augue eleifend a. Vivamus consequat mauris vel tellus ullamcorper, in mattis ex auctor. - -Donec eros nunc, maximus non faucibus id, malesuada nec dui. Mauris rutrum accumsan nisi, volutpat tristique justo vulputate posuere. Vestibulum iaculis neque ut sapien sagittis, et volutpat erat finibus. Maecenas volutpat varius orci, ac lobortis justo fermentum vel. Ut nec tortor non erat sagittis dignissim at sed nunc. Sed porttitor dapibus velit a pretium. Proin id placerat magna, fringilla volutpat diam. Cras non ipsum non est porttitor fringilla eget sit amet turpis. Vestibulum vel pharetra nulla. Praesent ultricies mi urna, eget aliquam augue feugiat eu. Aenean efficitur ex ut luctus facilisis. Fusce leo odio, suscipit eget est eget, pretium posuere mauris. Fusce vulputate est sed felis mattis, at sollicitudin magna consequat. Aliquam erat volutpat. Mauris tincidunt tristique diam id tincidunt. Aenean sagittis dictum risus. - -Nunc vehicula mattis justo at placerat. Duis ultrices metus urna, et mollis erat blandit non. Pellentesque tincidunt vitae mi eget placerat. Nullam at condimentum arcu. Vestibulum sit amet orci et metus fringilla pretium ac ut magna. Suspendisse vitae accumsan orci. Donec convallis nunc odio, tincidunt volutpat tellus placerat ac. Phasellus sed bibendum eros, a auctor quam. - -Etiam sagittis accumsan sem ut interdum. Nullam eleifend eget felis in convallis. Donec sagittis enim interdum, suscipit metus ut, cursus orci. Integer vitae dapibus enim. Integer venenatis ligula ut lacus pretium, a pharetra massa posuere. Vivamus eu volutpat ipsum. Mauris tempus volutpat aliquet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ac odio bibendum, dictum neque sed, sollicitudin nulla. - -Quisque vulputate at ligula ut placerat. Morbi mollis ante id felis tempus consequat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Maecenas eleifend odio a lectus sagittis, nec tristique ante egestas. Ut tempor, libero vel mattis interdum, risus quam condimentum turpis, nec viverra massa arcu ut turpis. Duis pharetra vehicula ligula, rhoncus commodo elit rutrum non. Nullam leo nisi, semper quis risus et, faucibus viverra odio. - -Quisque luctus nec arcu ut aliquam. Phasellus commodo ligula ut aliquet accumsan. Cras ac erat ac purus varius convallis. Vivamus nec gravida ipsum. Fusce euismod, massa ut cursus laoreet, eros urna semper odio, sed cursus turpis massa non lectus. Proin ac nisl lobortis, placerat elit in, placerat turpis. Nulla sollicitudin dolor ut sagittis consequat. Aenean augue felis, condimentum nec fermentum at, condimentum non nulla. Quisque et dignissim sapien, ac tincidunt elit. Nunc aliquet lacus id quam placerat suscipit. Mauris rutrum facilisis ipsum, at tristique mi. Sed iaculis eros sem, ut eleifend arcu hendrerit et. Sed euismod dignissim diam interdum ultrices. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed lobortis massa vel ultricies feugiat. Aenean non lobortis erat. - -Aenean commodo euismod massa vitae accumsan. Vivamus ac tristique mauris. Nunc hendrerit sapien a dictum scelerisque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Quisque sit amet eleifend nulla, vel posuere lorem. Phasellus eu porta metus. Pellentesque eget sollicitudin dui, sed commodo magna. Integer tincidunt, diam vitae dapibus tincidunt, diam lorem rutrum erat, ut consequat ex metus sed leo. - -Suspendisse odio metus, suscipit at congue at, consectetur auctor justo. Integer vel rutrum lacus. Quisque a ullamcorper ligula, nec placerat arcu. Ut hendrerit orci sit amet leo pellentesque iaculis. Integer neque erat, dapibus vel pharetra ut, sagittis id diam. Duis eget ex felis. Donec eget odio in sem hendrerit varius. Sed malesuada euismod erat. Sed bibendum malesuada lacus at euismod. Ut ornare pretium imperdiet. Maecenas ut orci id massa lobortis pulvinar vitae et neque. Nullam iaculis dictum sagittis. Vivamus vel finibus libero, eget congue ligula. Etiam faucibus orci felis, eu accumsan enim sollicitudin at. Donec accumsan libero at pharetra malesuada. - -Nullam luctus, metus eu varius dignissim, lectus neque aliquet massa, nec pellentesque ligula ligula vel leo. Cras rutrum eleifend viverra. Sed lobortis eget erat tincidunt imperdiet. Nullam ac fringilla urna. Fusce pretium, lorem ac mollis semper, sem felis ornare odio, eget feugiat dolor orci ut dui. Curabitur ac odio mollis, convallis ex eget, hendrerit nulla. Nunc vel turpis nisl. Ut neque urna, fermentum interdum est non, lobortis luctus elit. Phasellus bibendum malesuada gravida. Phasellus lacinia scelerisque erat sit amet iaculis. Nulla in ultricies lectus. - -Praesent blandit ante congue urna eleifend porta. Nulla sagittis urna quis molestie viverra. Praesent in lorem porttitor, vestibulum orci hendrerit, faucibus enim. Donec sapien enim, porta at sapien eget, condimentum mattis dui. Aliquam rhoncus dui elit, non laoreet ex condimentum ut. Nam arcu sem, suscipit quis diam vel, pharetra bibendum ligula. Duis vel ipsum gravida libero iaculis feugiat. Aliquam congue augue mi, gravida dignissim ipsum commodo id. - -Suspendisse vel tincidunt odio. Donec quis hendrerit felis, sed sagittis mi. Cras ultricies justo et ligula dignissim, ac porta nisi maximus. Suspendisse vitae facilisis sapien, ut consequat lacus. Morbi dapibus in diam in tempus. Curabitur viverra leo libero, et molestie lacus interdum eu. Donec ut odio sit amet nisl viverra fermentum eget eget sem. Donec id ante consectetur, porta velit a, consectetur mauris. Donec imperdiet dolor turpis, at maximus purus volutpat ac. Ut hendrerit eros sit amet mi porttitor, nec ultrices purus posuere. Etiam elementum mauris ligula, nec viverra neque luctus quis. - -Donec ultrices lectus nec sollicitudin egestas. Mauris ac lacinia mauris. Proin accumsan leo et quam venenatis mattis. Pellentesque laoreet interdum feugiat. Phasellus arcu justo, blandit vel faucibus vel, maximus in sapien. Mauris semper, leo quis accumsan tristique, arcu massa tempus sapien, nec luctus turpis mi id enim. Donec egestas consectetur augue non viverra. Mauris pellentesque turpis non ante posuere, bibendum laoreet nunc semper. Aliquam accumsan semper nulla, sed tincidunt nulla pretium id. Mauris ut sapien vel felis pharetra congue. Curabitur ac euismod risus. - -Integer a lectus lorem. Phasellus a sodales odio. In consectetur bibendum ex eu blandit. Nam eu feugiat sapien, id efficitur orci. Quisque fermentum sem eget orci mattis tristique. Donec sit amet pharetra massa. Pellentesque molestie, neque a viverra dignissim, magna quam sagittis ligula, at tincidunt tellus risus quis enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent scelerisque faucibus nunc eget consequat. Fusce aliquet egestas eros quis auctor. - -Sed aliquam mauris non lacus rhoncus, id eleifend nunc ullamcorper. Nulla cursus erat non purus gravida, porta ultricies libero vestibulum. Nulla sagittis metus eleifend porttitor molestie. Suspendisse rutrum consequat ullamcorper. Ut pellentesque dolor eget gravida cursus. In posuere, ipsum nec pulvinar varius, massa odio aliquam mauris, vitae facilisis ligula orci quis augue. Pellentesque a tortor ultricies, ullamcorper libero ut, ullamcorper augue. Nullam id felis non dui viverra placerat id eu metus. Aenean ac dui condimentum, dapibus tellus non, blandit ex. Maecenas et odio vitae massa gravida consequat eu sed nunc. Nullam laoreet, nisi sed imperdiet laoreet, sapien nisl aliquam augue, vitae ornare velit ligula id neque. Ut tincidunt, lacus at porta ultricies, tellus felis fringilla dolor, tempus posuere nibh nisi eu felis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; - -Proin ac nulla turpis. Aenean pretium congue viverra. Donec vitae sem venenatis, luctus lacus non, rhoncus purus. Etiam sit amet lorem consequat, mollis nibh quis, congue neque. Sed vulputate justo quis porttitor malesuada. Nullam id ex sit amet ante aliquet tincidunt. Praesent pretium maximus orci ut cursus. - -Mauris vitae aliquam magna. Sed quis ante cursus, dapibus risus vel, tristique nisi. Fusce suscipit porta quam, vel vestibulum ligula dapibus vel. Nunc consequat eu mi at aliquam. Donec sit amet dolor nulla. Praesent gravida tellus enim, in porttitor sem scelerisque vitae. Nullam consequat, nunc eu iaculis tempor, sem augue placerat ex, sed ultrices erat nisi a tellus. Nunc tortor nisl, feugiat lobortis rutrum ut, pharetra ac nulla. Donec eu tortor eros. Proin maximus nisl sit amet velit accumsan facilisis. Praesent posuere tristique faucibus. Vivamus nec hendrerit tellus, id vulputate eros. Aliquam a lacus efficitur, consectetur ipsum eu, ullamcorper ex. Aliquam erat volutpat. - -Vivamus ultrices scelerisque elit, ac ultrices erat consequat id. Sed ac aliquet nulla. Pellentesque vel justo magna. Suspendisse dictum, sem eget ullamcorper iaculis, sapien metus tristique mauris, et dictum elit eros sit amet ex. Mauris placerat odio eu ligula egestas sagittis. Integer vel turpis lacinia tortor molestie egestas et id dui. Donec porta interdum justo, ac ornare lacus dictum at. Quisque mollis, odio sed eleifend rhoncus, purus turpis fringilla quam, ac fermentum enim ante sed massa. - -Vestibulum neque ipsum, congue vel lacus et, faucibus mattis sem. Ut venenatis, tortor non tincidunt mollis, sapien leo suscipit dolor, posuere tristique libero massa eu augue. Donec eu luctus velit. Nulla egestas, tellus sed commodo gravida, metus nibh placerat sem, nec mollis nulla nunc id lorem. Nulla facilisi. Donec ut tincidunt sapien. Quisque dapibus convallis interdum. Nulla tempor malesuada turpis non vehicula. In nec tortor ultrices, vestibulum odio non, ultrices sapien. Pellentesque mattis feugiat arcu, id tincidunt leo malesuada at. Fusce vitae pretium ante. Pellentesque eu augue non lectus efficitur rutrum. Cras vitae nisl elementum, congue est eget, faucibus quam. Donec in dapibus metus. - -In imperdiet metus eget leo rhoncus, et pharetra dui laoreet. Morbi arcu augue, eleifend a est eget, gravida suscipit risus. Ut sodales ex vel eleifend bibendum. Nam varius nisl sit amet dolor porta pulvinar. Ut mollis purus sit amet tempus vulputate. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Curabitur a lacinia velit, in feugiat elit. Sed ut vestibulum lorem. Proin fermentum elit quis venenatis placerat. Cras sit amet congue tortor. Curabitur eget sapien massa. Suspendisse in turpis arcu. - -Quisque vitae risus scelerisque, rutrum tellus et, posuere massa. Vestibulum vitae rhoncus libero, vel ultrices elit. Vivamus nec ipsum ac urna tristique sollicitudin non nec tellus. Donec bibendum dui eget ipsum laoreet, sed tincidunt tellus laoreet. Proin in rhoncus nibh. Integer vel quam id felis interdum aliquet. Nulla tempus volutpat consequat. Suspendisse nec massa malesuada, finibus est non, eleifend odio. Aliquam libero turpis, consequat vel pellentesque vitae, laoreet vitae tellus. Donec finibus diam id accumsan luctus. - -Cras at lorem ligula. Praesent tincidunt justo eu purus suscipit ornare. Morbi malesuada dui non ligula congue, ac fringilla diam commodo. Proin vel arcu non tortor tempus lacinia eget ut arcu. Sed tristique lorem et purus tristique, nec ultrices tortor lacinia. Nunc id nibh id mauris volutpat rutrum at in nisl. Cras in cursus lectus, nec fermentum dolor. Morbi at tempus tortor. Aenean pulvinar ex erat, vitae aliquet nisl finibus at. Praesent pellentesque tempor imperdiet. Aliquam eu aliquet purus. Maecenas hendrerit volutpat ultrices. Aliquam metus tellus, porttitor sit amet sem ut, bibendum ultricies urna. - -Cras accumsan lacus ac ullamcorper tincidunt. Fusce imperdiet nunc vel diam condimentum, viverra dignissim magna mollis. Aliquam rutrum gravida libero non congue. Morbi pretium, nulla ac eleifend sodales, dolor orci feugiat ipsum, ut posuere dolor augue quis mauris. Cras tincidunt enim dui, at porta orci consectetur vel. In id purus ante. Donec luctus mattis dictum. Curabitur tortor orci, accumsan finibus sodales ac, maximus eget purus. Suspendisse efficitur vitae dui ut faucibus. Integer bibendum ipsum massa, sagittis posuere sapien elementum at. Vivamus tristique at quam id congue. Maecenas eu augue vel erat varius congue at id quam. - -Sed tristique nisl elit, finibus venenatis urna facilisis id. Integer cursus interdum justo, et viverra diam interdum quis. Sed in vestibulum arcu. Pellentesque elementum ex vitae diam tincidunt bibendum. Nunc eu mi suscipit, faucibus metus sit amet, tincidunt dolor. Integer vulputate sodales luctus. In ut scelerisque sem, sed egestas eros. Etiam lobortis diam ac augue pulvinar, eu aliquam massa blandit. - -In dui magna, faucibus at purus in, sagittis dapibus diam. Cras commodo massa tortor, eu consequat libero placerat eu. Ut mauris metus, facilisis et erat sed, rhoncus maximus nisl. Sed ac aliquet nisi. Aenean in rhoncus velit. Sed mollis, nunc vitae imperdiet pharetra, arcu ex pulvinar nibh, ac rhoncus lectus enim nec erat. Donec rutrum molestie nibh et lobortis. Proin nec nibh in ex pretium ultrices non et arcu. Nam consequat tempor viverra. Fusce vitae pharetra diam, ac bibendum ex. Quisque cursus, tellus ac interdum accumsan, lectus nunc lobortis elit, id varius orci diam a metus. Etiam at mauris vitae metus ullamcorper bibendum nec sed leo. Pellentesque eu arcu varius, imperdiet ligula non, maximus tellus. Aliquam erat volutpat. - -Curabitur fringilla ligula in consectetur varius. Donec eget tortor ex. Nunc quis lacus lobortis, vulputate lorem eu, scelerisque sapien. Aliquam non pretium ante. Aenean maximus ornare eros, ut condimentum nibh pulvinar eu. Morbi venenatis sollicitudin justo, non tincidunt ligula lacinia vitae. Nam vitae quam ligula. Fusce in finibus urna, a laoreet dui. Quisque urna arcu, aliquam sed dolor quis, pellentesque convallis risus. Vestibulum faucibus maximus justo, eget gravida elit tincidunt quis. Cras in arcu dui. Aliquam eu nibh gravida, lacinia ipsum sit amet, scelerisque nisl. Integer luctus sagittis mattis. Etiam dolor sapien, dapibus at neque nec, rhoncus scelerisque odio. Pellentesque laoreet justo ac augue eleifend placerat. In vitae hendrerit ex. - -Nam sit amet dui in libero volutpat lacinia. Quisque vel luctus purus. Aenean arcu magna, luctus sed interdum vitae, elementum quis eros. Mauris aliquet diam mi, ut tincidunt magna consequat quis. Cras vitae lacus posuere urna pretium lacinia. Fusce ultricies maximus hendrerit. Donec et augue quis lectus lacinia accumsan. Nunc tortor neque, vestibulum porta bibendum id, varius quis sapien. Vestibulum et ultricies odio, id pharetra lacus. Suspendisse sollicitudin nisl nec justo fermentum, vitae volutpat lectus aliquam. Duis blandit quam at erat sodales, ut suscipit erat aliquet. Fusce faucibus dui enim, eu varius neque imperdiet id. Vestibulum dapibus neque libero, vitae viverra erat mattis id. Quisque ullamcorper diam ut porta finibus. Donec faucibus, diam quis pellentesque euismod, enim velit mattis justo, at ultricies urna enim ac leo. - -Fusce fringilla dolor sit amet ante pharetra ornare. Aliquam erat volutpat. Donec laoreet, lorem nec pulvinar ullamcorper, urna justo bibendum nunc, in laoreet nisl tortor vel justo. Donec a magna molestie, gravida tortor a, malesuada tortor. Praesent vestibulum ultricies metus, vitae fringilla tellus viverra sed. Suspendisse sed odio sit amet nibh ultricies interdum accumsan egestas ex. Fusce ac lacus arcu. Ut ultricies at justo elementum mattis. Nullam augue tortor, lacinia tempor turpis a, porta finibus neque. Donec id diam tristique arcu vestibulum fermentum vitae id tellus. Vestibulum sit amet ligula neque. Aliquam neque ante, ultricies nec diam malesuada, feugiat consequat risus. Pellentesque ac varius orci. - -Etiam nunc ex, laoreet eget eros ut, ultricies fermentum sem. Nullam venenatis diam a lectus vulputate luctus. Integer laoreet libero et tellus fermentum, ut maximus neque tristique. Ut in odio posuere, lobortis augue non, tristique orci. Quisque vel ultricies mauris, non consectetur enim. Sed dictum vitae felis vel scelerisque. Vestibulum id viverra leo. Etiam libero neque, cursus eu augue eget, fringilla luctus arcu. Donec aliquet maximus ipsum, ut faucibus velit posuere non. Praesent finibus erat nec massa cursus, ac blandit ante bibendum. Ut vel magna pretium, interdum quam non, sodales erat. - -Sed et orci nunc. Vestibulum elit sem, dapibus id dictum eu, interdum sit amet justo. Morbi interdum hendrerit tempus. Quisque id magna justo. Donec sollicitudin, nunc a efficitur hendrerit, mi neque semper nisl, sed consectetur urna justo vel velit. Nullam at sodales eros. Donec eu nunc vel dui tristique blandit ut eget enim. - -Nulla velit neque, euismod vitae lectus vel, finibus egestas magna. Ut sed justo sed erat pretium sollicitudin nec nec felis. In mattis augue ut erat mollis, in posuere purus tincidunt. Vivamus rhoncus sem at purus gravida, et vestibulum justo elementum. Aenean sit amet elit ac ligula tincidunt varius. Donec feugiat, orci vel interdum lobortis, elit magna fringilla nulla, non euismod urna dolor auctor est. Mauris laoreet sagittis ligula, et semper nisi finibus et. Donec pharetra nibh in eros iaculis aliquam. Nam malesuada ornare elit, ac semper massa molestie sed. Maecenas laoreet diam eu ipsum rutrum, ut varius enim bibendum. Donec luctus dolor eu ipsum varius, malesuada condimentum sapien tempor. - -Aenean vel rhoncus lacus, sit amet faucibus nisl. Aliquam laoreet nisl et diam eleifend molestie non vel lectus. Duis tortor augue, congue luctus malesuada sit amet, posuere mattis mauris. Aliquam quis ligula ut ipsum placerat luctus. Aliquam accumsan mauris ligula. Sed quis lacinia augue. Proin feugiat diam lectus, vel elementum libero varius non. Proin porta neque sed dolor gravida venenatis. Donec vitae euismod nibh. Morbi mattis, enim quis mattis dignissim, lacus tellus tristique nisl, in luctus leo nisl vel elit. Sed posuere justo in iaculis mattis. - -Curabitur in felis et metus blandit auctor ac in nulla. Vestibulum dictum nulla posuere augue ultrices, non gravida velit placerat. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In malesuada pharetra ante sit amet sodales. Suspendisse et tincidunt lorem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Integer viverra justo ut nisi elementum dictum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nullam dictum tincidunt venenatis. Aliquam neque urna, pellentesque vitae ultrices eget, lobortis sed augue. Etiam at ex ultricies, egestas dui sit amet, laoreet lorem. Ut nulla velit, bibendum in arcu sed, dignissim mattis odio. Suspendisse varius dictum vulputate. Sed nisl tellus, eleifend quis augue ac, malesuada elementum arcu. - -Morbi dignissim laoreet imperdiet. Vivamus tincidunt turpis quis posuere mattis. Nam mollis, elit eget lacinia auctor, lorem magna mattis elit, eget pulvinar mauris quam sed turpis. Suspendisse nibh libero, volutpat nec metus tempus, euismod lobortis sapien. Pellentesque interdum urna a leo dignissim lobortis. Suspendisse quis diam pretium, vehicula augue eget, sodales nibh. Cras dignissim lorem ac velit mollis, ac hendrerit urna varius. Fusce venenatis elit ut mauris volutpat, sed imperdiet arcu pellentesque. - -Phasellus auctor nec ex eu tempor. Quisque ut elit eget ligula euismod pretium. Quisque ac lectus et est fringilla convallis. Mauris tincidunt turpis non ullamcorper suscipit. Suspendisse consectetur lacus at lacinia iaculis. Morbi purus metus, tincidunt ac ultricies a, rhoncus varius magna. Suspendisse mattis vehicula enim at ultrices. Phasellus eu ipsum nisi. Duis dignissim massa non convallis rutrum. Sed placerat consectetur ex, quis malesuada lectus cursus a. Nulla non mi egestas, scelerisque urna vitae, pulvinar libero. Vestibulum pretium purus at odio pharetra, ut egestas nibh pretium. - -Nulla facilisi. Duis in augue eu elit accumsan imperdiet a a odio. Curabitur vitae ante in velit condimentum venenatis id vitae mi. Sed in ante fringilla, mollis metus vel, consectetur nisi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla non dolor congue neque dapibus varius. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam sit amet convallis velit. Praesent a efficitur massa, non finibus ex. Maecenas pharetra elit eget sem rhoncus, vel mollis eros pretium. Donec vehicula dolor a nulla ornare, at lacinia ex venenatis. - -Suspendisse aliquam blandit est, rutrum luctus turpis cursus vitae. Pellentesque in magna eget risus egestas rhoncus. Maecenas sed odio non ex interdum eleifend mollis convallis neque. Quisque a orci fringilla, maximus arcu id, rhoncus magna. Aenean at aliquam est. Aenean faucibus consequat tempus. Aliquam congue viverra ante, non aliquet sapien viverra ac. Etiam ullamcorper neque in metus malesuada suscipit. Curabitur quis placerat mi. - -Integer at mauris ut lacus vulputate mattis sit amet at purus. Proin arcu nisl, lacinia eu venenatis ac, mattis ut velit. Suspendisse elementum mattis mauris, in faucibus lorem. Suspendisse bibendum nulla in commodo ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus iaculis volutpat mattis. Pellentesque ut ex interdum, consequat diam egestas, blandit nisi. - -Nullam odio turpis, pretium ac ante porttitor, fringilla lacinia ante. Fusce commodo quam vel dui blandit, nec eleifend tellus aliquam. Fusce sodales efficitur urna, vitae vehicula erat lacinia eu. Praesent maximus nunc id sapien feugiat, in euismod nibh rutrum. Vivamus at volutpat libero. Praesent quis mattis mi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In hac habitasse platea dictumst. Integer quam odio, pharetra nec molestie porttitor, auctor at ligula. Fusce id turpis non tellus facilisis tincidunt. - -Morbi lorem risus, sagittis sit amet venenatis sit amet, lacinia at dui. Vestibulum volutpat, urna ac ultrices efficitur, tortor augue convallis dolor, nec commodo arcu arcu id ante. Quisque facilisis mauris in molestie tincidunt. Fusce aliquet sagittis interdum. Vivamus sit amet odio nec augue volutpat placerat non nec nibh. Nunc auctor purus eu dignissim euismod. Ut sollicitudin urna et erat placerat, vel accumsan lectus malesuada. Proin fringilla magna sit amet massa dignissim lobortis ut ac felis. Donec ornare dignissim tristique. Phasellus semper, est sit amet vestibulum suscipit, arcu est elementum nulla, in sagittis sapien ligula a sem. - -Morbi at justo molestie, gravida lacus quis, placerat est. Mauris non libero ultricies, convallis dui et, scelerisque est. Nunc iaculis, libero sed ullamcorper feugiat, eros ante lacinia ex, vel efficitur velit arcu eu metus. Quisque fermentum blandit fermentum. Vestibulum quis ante in dolor porta efficitur eu nec libero. Mauris vitae ex mattis mi fringilla pharetra. Donec eget est nec lorem pretium pretium. Fusce eget risus eros. Vivamus eu nulla et libero tincidunt malesuada at ac dolor. Donec facilisis tempus sem, in posuere orci sagittis vel. Donec pellentesque sapien mi, eu tempus enim tempor vel. Cras consequat purus sed ornare vehicula. Nunc molestie eu ex et fermentum. In vestibulum, arcu nec cursus efficitur, leo ex fringilla neque, in molestie nisl diam mattis sapien. Nunc et semper ante. - -Sed pellentesque laoreet sollicitudin. Ut sed ex eu sapien bibendum posuere. Mauris non sem dui. Fusce sit amet nulla a tortor blandit blandit. Proin venenatis ligula quis sapien viverra accumsan. Proin ac turpis a dolor rhoncus facilisis eget vel ipsum. In gravida porttitor quam, quis dignissim lacus laoreet porta. Nulla ante risus, luctus at pharetra vitae, vehicula id elit. Etiam sagittis dui vitae metus mollis, in porttitor elit fringilla. Duis dapibus dignissim faucibus. Duis elementum facilisis leo eget ornare. Cras feugiat libero at efficitur tempus. Suspendisse sit amet laoreet nunc, at faucibus tellus. Vestibulum in ipsum ac risus vehicula porta. Fusce maximus libero mattis risus aliquam condimentum. Fusce ut consectetur risus, a fermentum arcu. - -Curabitur hendrerit eu lacus non congue. Fusce ac dictum magna. Nulla elit ante, sodales sed lobortis sodales, fermentum vitae urna. Cras pharetra vel sapien dignissim ullamcorper. Phasellus auctor elementum suscipit. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec lacus odio, venenatis lobortis ullamcorper et, tempor nec augue. - -Mauris scelerisque vestibulum metus, vitae porta sem pharetra nec. Nam tempus dolor sed turpis lobortis sodales. Vestibulum nec mauris auctor velit pellentesque vestibulum tristique vel eros. Vivamus vel justo vel dui lobortis dapibus a at sapien. Maecenas ac metus nec tortor vulputate laoreet in nec augue. Aliquam tellus leo, imperdiet non dapibus a, facilisis non tellus. Suspendisse condimentum tincidunt lacus, ut scelerisque diam viverra nec. Etiam ante mauris, viverra sit amet vulputate ut, porta a ligula. Donec sit amet luctus massa. Morbi iaculis, tortor sit amet ullamcorper iaculis, mauris augue feugiat risus, eu bibendum dui tellus nec purus. In gravida sodales egestas. Sed tincidunt pellentesque tincidunt. In non neque non erat mattis iaculis. Cras et ipsum justo. Phasellus ex elit, dictum ut nulla et, consectetur auctor lectus. - -Donec vitae velit nisi. Cras lobortis a nisi eu molestie. Nunc mattis arcu id neque aliquam, quis sollicitudin lectus lobortis. Donec nec convallis purus, eget sagittis sapien. Maecenas viverra ullamcorper quam in vehicula. Pellentesque imperdiet nisl in elit varius, eu fringilla orci ullamcorper. Donec blandit ultrices volutpat. Nulla nec tempor mi, ac finibus nisl. Phasellus et urna non lorem tincidunt pulvinar nec nec ligula. Ut hendrerit volutpat diam. Morbi vel sollicitudin libero, ac molestie purus. Nulla sit amet metus ut leo molestie faucibus. Nunc porttitor, est in pulvinar vestibulum, justo nibh placerat ipsum, at interdum metus mi vitae dui. Curabitur in egestas nunc. Ut malesuada ipsum sed velit rutrum accumsan ac in quam. - -Quisque ex est, fermentum vitae placerat sit amet, porta ac nulla. Morbi accumsan tellus quis dolor cursus, in elementum sapien condimentum. In non dui ultrices, sagittis dui quis, blandit nunc. Curabitur blandit justo sed tincidunt imperdiet. Sed a odio aliquet, gravida augue non, faucibus magna. Phasellus pulvinar volutpat sem, ut bibendum nibh semper eu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur at tellus in nulla vulputate feugiat vitae id dui. Suspendisse nec velit ac arcu fringilla venenatis. Duis urna massa, eleifend sit amet venenatis in, lobortis ac odio. Aliquam blandit vitae ipsum quis tempor. Curabitur a interdum sapien, vitae tempus arcu. Maecenas condimentum, justo vel rhoncus facilisis, lectus nisl commodo massa, eget maximus odio enim sit amet libero. Morbi at erat purus. Aenean dictum diam ut lorem venenatis consectetur. Praesent sit amet dolor eget lectus mollis tempus ac sit amet diam. - -Maecenas at convallis magna, nec iaculis metus. Quisque pulvinar ultricies vehicula. Aliquam quis tortor in elit semper tincidunt. Nullam aliquet ex dapibus lorem mattis gravida. Suspendisse volutpat, nibh sit amet efficitur egestas, lorem justo convallis enim, nec efficitur nunc mauris vel nisl. Sed condimentum ac justo sit amet accumsan. Suspendisse ultricies dolor nulla, at euismod nisl semper eu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. - -Donec hendrerit, ex non tincidunt molestie, lacus mauris euismod risus, vitae suscipit sem orci et risus. Donec sollicitudin eros non ante gravida aliquam. Etiam at augue risus. Mauris vitae ante ac eros sodales ornare non in enim. Fusce consequat tortor urna. Aenean condimentum neque quis viverra interdum. Aliquam ultricies convallis ipsum, nec lacinia massa bibendum nec. Suspendisse ac ultricies diam, sit amet mollis mi. Mauris at tincidunt elit. Morbi fringilla nisl ligula, nec scelerisque magna viverra non. Aliquam aliquam porttitor eros, cursus congue eros maximus vel. - -Pellentesque mattis sapien eu scelerisque feugiat. In hendrerit rutrum sem vel convallis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed varius velit et erat lacinia ornare ut sed nibh. Nam imperdiet hendrerit urna, ultricies dapibus elit blandit sit amet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam porttitor, purus scelerisque ornare aliquam, massa nulla semper erat, sit amet cursus diam risus vitae mauris. Ut rhoncus pellentesque elementum. - -In a ipsum in dui venenatis scelerisque ut a ante. Quisque tincidunt turpis vitae arcu rhoncus, quis maximus nisl venenatis. Sed ac tortor et nibh aliquam posuere. Praesent ipsum tortor, scelerisque nec sem vitae, efficitur mollis lacus. Sed dui tellus, mattis eu turpis in, accumsan mattis elit. Donec eu nunc dolor. Ut ornare dui quis tortor hendrerit ornare. Sed finibus ornare nulla, vitae vehicula urna vestibulum at. Integer fermentum diam sit amet congue suscipit. Donec massa lectus, dignissim ut metus eu, vehicula dictum nisi. - -Phasellus ligula tortor, consequat a urna quis, interdum congue libero. Sed condimentum sapien sed gravida tristique. Suspendisse vel condimentum orci. Pellentesque pharetra hendrerit malesuada. Morbi commodo ut quam et iaculis. Ut finibus dapibus metus, ut varius orci dapibus non. Nunc efficitur efficitur ultricies. Sed laoreet quam vel volutpat laoreet. Nullam placerat suscipit neque at aliquet. Curabitur luctus nisi eget rutrum interdum. Nam lacinia turpis sed massa euismod tincidunt. Aenean odio nisi, hendrerit et lacus et, sodales mollis leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Donec posuere erat nibh, a tristique quam bibendum sed. - -Nulla vestibulum leo laoreet, mattis purus at, tempus dolor. Morbi nibh lacus, vehicula eu nibh vel, pellentesque pulvinar magna. Suspendisse urna lorem, pretium non lorem eu, maximus porttitor eros. Integer in purus consectetur, pretium massa ac, bibendum quam. Vivamus venenatis finibus feugiat. Donec ornare neque eu convallis varius. Nullam sodales, tortor id semper varius, nibh odio tincidunt mi, vitae gravida purus erat nec libero. Nam varius tincidunt maximus. Nunc quis metus a diam porta tincidunt ac quis ex. Nunc bibendum nisl tortor, interdum luctus augue suscipit et. Phasellus pretium egestas aliquam. Maecenas in libero enim. - -Duis lacinia dolor eu nunc viverra, quis blandit nunc posuere. Suspendisse ultricies ultrices tincidunt. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin imperdiet finibus dui, sed vehicula ligula semper vitae. Vestibulum elementum a ante quis vestibulum. Integer sit amet ullamcorper sapien. Cras sapien odio, commodo at consequat non, auctor volutpat ante. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas ut congue urna, eu iaculis lectus. Curabitur consequat, lectus non pharetra ultricies, massa sapien pellentesque lectus, eu laoreet elit turpis et sapien. - -Pellentesque vel vehicula arcu. Proin aliquam hendrerit turpis aliquam ultrices. Nunc pellentesque urna tempor ipsum porta faucibus. Morbi lobortis quam eget lacus tempor, tempor commodo justo molestie. Suspendisse cursus turpis diam, eget pulvinar velit dignissim ut. Donec vulputate sodales justo ac hendrerit. Donec ultricies mauris id lorem bibendum pulvinar. In sed dictum ex. Phasellus sit amet lacus eget risus scelerisque congue id vitae ex. Vestibulum pellentesque rhoncus lacus, non lobortis dui faucibus non. Cras efficitur dictum rutrum. Pellentesque euismod id felis sit amet faucibus. Maecenas tristique urna ac mi tristique, ac varius ante cursus. - -Vestibulum eu mi sed felis consequat fermentum. Duis sit amet nulla a diam maximus tristique. Sed in turpis diam. Cras sodales egestas massa. Maecenas eget dui tellus. Quisque vulputate tellus sem, non dictum nisi feugiat eget. Suspendisse interdum urna id quam facilisis tristique. Proin dolor ex, vestibulum quis dui ac, dignissim blandit dolor. Sed nec interdum ante. Nullam fermentum iaculis augue ut sodales. Mauris dapibus interdum maximus. Aliquam laoreet nisl et tellus congue, nec molestie justo hendrerit. Suspendisse eros libero, semper a nulla a, placerat convallis leo. Ut ornare turpis velit, id ultrices nulla lobortis non. - -In hac habitasse platea dictumst. Etiam condimentum, nunc vitae faucibus mattis, diam neque accumsan urna, eu tincidunt augue odio sit amet metus. Quisque at mauris eget purus ultricies ultricies vel eget ligula. Phasellus tortor urna, vestibulum eget tincidunt ut, malesuada nec ligula. Phasellus congue dignissim erat ut lacinia. Duis massa lacus, placerat quis ipsum sit amet, maximus ornare velit. Nulla commodo, urna maximus vehicula suscipit, arcu elit commodo leo, ut luctus mauris ipsum sit amet turpis. Donec ornare dignissim tincidunt. Duis efficitur tristique eros, bibendum mattis lorem auctor sit amet. Donec fermentum imperdiet venenatis. Praesent scelerisque purus in scelerisque dignissim. Nulla eu rhoncus nisl. - -Integer quis orci in nisl egestas porta vel efficitur ligula. Sed urna nibh, efficitur ac odio eget, rhoncus viverra magna. Nunc at luctus velit. Nullam laoreet, diam non semper faucibus, purus nisl sagittis mauris, in fringilla dolor sapien et massa. Duis rhoncus lectus nibh, in molestie ante consequat vitae. Fusce a enim vel justo posuere tempor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque eget mi id nulla tristique pellentesque. Aenean lacinia metus lacus, eu viverra turpis interdum at. Aliquam ut convallis mauris. Donec scelerisque ex nulla, id convallis magna vehicula auctor. Maecenas aliquam, felis dapibus convallis congue, odio nisl accumsan dui, vel molestie ex massa quis metus. Vestibulum id vulputate justo. Sed aliquet, est quis varius scelerisque, erat lorem mattis lorem, in sollicitudin risus lorem a justo. Praesent fermentum posuere turpis, vitae fermentum velit rhoncus ut. - -Quisque pellentesque urna vehicula est vestibulum blandit. Donec molestie sagittis erat, sed interdum est dignissim a. Fusce accumsan orci mauris, quis feugiat sem consequat sit amet. Nulla ultricies euismod molestie. Proin eleifend sodales diam vitae facilisis. Nullam sit amet urna tortor. Sed laoreet sapien eu quam cursus eleifend. Praesent vulputate metus turpis, quis aliquam enim semper ut. Donec dignissim libero quis magna euismod faucibus. Nulla aliquam ante id enim consectetur placerat. - -Fusce ullamcorper tellus id pulvinar dignissim. Nam sagittis luctus ipsum, non dictum urna pulvinar quis. Nunc hendrerit quam eu dui egestas, vitae semper sem vestibulum. In efficitur ligula ante, nec faucibus libero tristique ac. Suspendisse potenti. Ut vestibulum massa erat. Proin ornare mi et est varius, in fringilla mi laoreet. Sed libero nisi, gravida sed felis sit amet, bibendum semper risus. Curabitur luctus nunc vulputate elementum cursus. - -Aliquam feugiat, est sed congue fermentum, nibh dolor suscipit nunc, sed porttitor velit dui quis eros. Nam aliquet neque sed faucibus sagittis. Ut iaculis dictum odio in vestibulum. \ No newline at end of file diff --git a/fileTransfer/betanet.txt b/fileTransfer/betanet.txt deleted file mode 100644 index e35ebcf..0000000 --- a/fileTransfer/betanet.txt +++ /dev/null @@ -1,306 +0,0 @@ -188.187.190.53:22840 -135.181.134.215:22840 -90.64.159.233:22840 -63.224.248.74:22840 -78.63.197.35:22840 -95.217.225.220:22840 -167.86.89.25:22840 -134.17.158.63:22840 -77.92.107.203:22840 -136.50.65.29:22840 -176.99.131.128:22840 -109.251.8.131:22840 -85.237.9.101:22840 -195.93.180.119:22840 -193.106.95.173:22840 -193.106.95.227:22840 -168.119.49.161:22840 -193.106.94.75:22840 -176.99.131.188:22840 -180.150.125.93:22840 -135.181.29.63:22840 -116.202.99.94:22840 -94.130.150.94:22840 -93.81.246.111:22840 -183.99.96.180:22101 -62.171.131.155:22840 -159.65.122.44:22840 -45.122.123.134:22840 -157.90.34.21:22840 -107.182.163.106:22840 -52.124.124.210:22840 -170.187.225.94:22840 -95.217.228.117:22840 -88.99.13.205:22840 -52.183.38.229:22840 -77.223.99.126:22840 -37.228.116.99:22840 -167.99.247.6:22840 -5.45.81.112:22840 -193.47.33.51:22840 -5.45.81.110:22840 -69.197.179.42:22840 -69.197.179.162:22840 -94.244.64.115:22840 -109.100.137.105:22840 -86.57.132.29:22840 -178.248.81.38:22840 -213.55.169.27:22840 -212.24.106.228:22840 -195.181.247.171:22840 -82.148.29.76:22840 -81.163.28.252:22840 -80.249.150.70:22840 -79.98.24.202:22840 -62.173.145.42:22840 -77.223.98.157:22840 -193.47.33.132:22840 -82.148.19.245:22840 -31.184.254.81:22840 -195.64.234.210:22840 -195.64.234.98:22840 -78.26.169.79:22840 -62.77.156.70:22840 -77.223.97.164:22840 -193.47.33.50:22840 -62.173.140.126:22840 -93.81.246.64:22840 -149.210.192.112:22840 -77.120.176.213:22840 -188.138.242.248:22840 -178.168.101.47:22840 -37.97.220.128:22840 -69.197.147.18:22840 -81.240.39.28:22840 -141.105.67.92:22840 -213.10.138.128:22840 -217.136.119.184:22840 -85.201.32.4:22840 -92.64.19.232:22840 -89.221.20.22:22840 -62.167.123.100:22800 -161.230.93.70:22840 -76.65.147.14:22840 -86.7.108.18:22840 -109.129.225.57:22840 -194.158.207.84:22840 -116.203.252.237:22840 -217.12.210.152:22840 -45.115.107.124:22840 -178.128.199.183:22840 -93.107.156.53:22840 -82.15.128.246:22840 -70.75.89.186:22840 -109.87.172.237:22840 -80.90.47.210:22840 -90.189.180.24:22840 -46.98.0.118:22840 -85.221.55.10:22840 -191.32.173.237:22840 -80.5.16.132:22840 -173.212.199.13:22840 -120.88.119.219:22840 -135.19.193.9:22840 -134.249.187.129:22840 -188.194.110.16:22840 -195.38.9.10:22840 -46.42.16.25:22840 -31.165.163.210:22840 -89.232.195.123:22840 -77.122.54.99:22840 -85.105.79.102:22840 -163.172.149.150:22840 -5.53.16.225:22840 -178.124.192.61:22840 -167.99.130.234:22840 -95.158.15.24:22840 -195.239.181.117:22840 -104.158.0.184:22840 -62.171.142.152:22840 -77.122.89.98:22840 -200.37.209.49:22840 -181.43.154.26:22840 -185.230.88.227:22840 -91.169.185.175:62840 -217.136.102.221:22840 -149.210.229.230:22840 -176.37.104.235:22840 -37.97.224.62:22840 -94.107.24.186:22840 -151.252.109.180:22840 -195.93.181.189:22840 -195.93.181.192:22840 -149.210.229.210:22840 -77.122.48.168:22840 -185.4.65.20:22840 -37.97.224.55:22840 -178.170.47.131:22840 -37.97.224.32:22840 -178.170.39.140:22840 -135.181.139.234:22840 -78.129.38.119:22840 -78.181.101.251:22840 -68.183.34.147:22840 -5.255.173.96:22840 -195.177.94.31:22840 -37.57.87.184:22840 -37.97.224.19:22840 -209.145.53.106:22840 -176.214.77.176:22840 -143.178.133.206:22840 -85.118.207.56:22840 -88.211.82.66:22840 -185.23.83.59:22840 -93.75.3.51:22840 -176.210.55.44:22840 -83.144.175.13:22840 -78.188.200.189:22840 -174.114.197.104:22840 -188.83.79.190:22840 -66.183.0.247:22840 -5.61.52.49:22840 -149.210.229.197:22840 -82.118.17.160:22841 -31.202.122.239:22840 -46.150.9.16:22840 -205.250.188.151:22840 -149.210.229.175:22840 -77.122.91.193:22840 -31.202.122.152:22840 -151.95.102.130:22840 -91.245.37.80:22840 -199.119.86.179:22840 -93.72.67.70:22840 -195.134.65.165:22840 -103.56.39.162:20090 -178.27.238.236:22840 -149.210.192.41:22840 -103.56.39.183:20090 -5.61.54.13:22840 -78.188.51.20:22840 -93.157.248.142:22840 -31.172.140.126:22840 -95.189.106.118:22840 -86.94.128.12:22840 -5.132.111.41:22840 -109.129.220.59:22840 -84.83.206.46:22840 -136.144.240.106:22840 -89.28.86.208:22840 -89.28.6.19:22840 -5.255.173.43:22840 -77.122.29.37:22840 -136.144.203.178:22840 -136.144.230.186:22840 -136.144.206.186:22840 -61.6.46.179:22840 -31.202.123.194:22840 -135.125.235.32:22840 -103.83.149.90:22840 -66.183.0.246:22840 -185.12.142.45:22840 -46.37.194.90:22840 -78.26.140.125:22840 -89.191.125.159:22840 -31.201.104.137:22840 -77.92.109.45:22840 -108.249.110.153:22840 -196.41.195.118:22840 -101.98.209.195:22840 -77.92.109.43:22840 -188.127.250.195:22840 -76.176.192.12:22840 -91.177.2.56:22840 -82.193.107.60:22840 -86.83.150.15:22840 -134.249.121.177:22840 -46.166.138.219:22840 -75.156.104.27:22840 -109.100.137.83:22840 -174.88.128.201:22840 -178.168.68.129:22840 -66.183.0.245:22840 -62.238.247.127:22840 -65.21.151.29:22841 -207.81.171.109:22840 -155.93.136.90:22840 -190.22.170.63:22840 -136.144.230.185:22840 -102.182.202.19:22840 -70.52.24.55:22841 -195.191.174.168:22840 -88.223.114.249:22840 -46.142.181.156:22840 -174.94.125.212:22840 -184.146.45.46:22840 -136.144.236.167:22840 -174.88.104.199:22840 -88.223.115.74:22840 -178.170.40.34:22840 -91.149.187.22:22840 -178.150.223.30:22840 -195.138.68.0:22840 -77.122.59.150:22840 -91.241.178.180:22840 -95.164.8.35:22840 -188.138.162.9:22840 -77.122.80.204:22840 -46.150.9.21:22840 -46.119.158.146:22840 -5.34.183.246:22842 -65.21.180.158:22840 -188.187.188.47:22840 -62.171.137.40:22840 -178.151.197.49:22840 -213.231.5.100:22840 -194.28.172.72:22840 -76.71.65.212:22840 -76.71.65.96:22840 -185.46.60.30:22840 -185.172.34.211:22840 -87.255.69.231:22840 -91.222.114.19:22840 -162.55.58.184:22840 -91.233.171.9:22840 -82.16.173.238:22840 -77.169.225.166:22840 -87.248.171.27:22840 -81.243.65.75:22840 -207.6.218.81:22840 -207.6.218.110:22840 -188.124.46.130:22840 -159.196.176.42:22840 -143.244.158.201:22840 -185.224.108.251:22840 -80.100.87.204:22840 -185.48.197.184:22840 -95.67.28.111:22840 -171.25.167.187:22840 -176.100.12.243:22840 -185.224.108.82:22840 -217.12.223.90:22852 -185.224.110.37:22840 -195.138.85.182:22840 -176.104.49.11:22840 -176.104.52.215:22840 -88.204.18.134:22840 -217.26.167.45:22840 -185.172.34.212:22840 -87.255.69.232:22840 -5.165.211.128:22840 -136.144.205.104:22840 -178.168.57.176:22840 -87.255.69.238:22840 -194.233.67.188:22840 -88.159.77.30:22840 -195.74.67.235:22840 -174.94.68.31:22840 -91.5.88.185:22841 -179.223.85.90:22840 -139.59.245.228:22840 -199.119.86.185:22840 -105.228.133.62:22840 -139.59.126.219:22840 -91.5.83.238:22842 -95.216.221.129:22840 -158.140.234.119:22840 diff --git a/fileTransfer/clients.goldoutput/client110.txt b/fileTransfer/clients.goldoutput/client110.txt deleted file mode 100644 index 9ef4ae6..0000000 --- a/fileTransfer/clients.goldoutput/client110.txt +++ /dev/null @@ -1,336 +0,0 @@ -Received new file transfer "LoremIpsum.txt" of size 100332 bytes with preview: "Lorem ipsum dolor sit amet, consectetur adipiscing elit." -Received progress callback {completed: true, received: 109, total: 109, err: <nil>} -Completed receiving file: -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut at efficitur urna, et ultrices leo. Sed lacinia vestibulum tortor eu convallis. Proin imperdiet accumsan magna, sed volutpat tortor consectetur at. Mauris sed dolor sed sapien porta consectetur in eu sem. Maecenas vestibulum varius erat, eget porta eros vehicula mattis. Phasellus tempor odio at tortor maximus convallis. Nullam ut lorem laoreet, tincidunt ex sollicitudin, aliquam urna. Mauris vel enim consequat, sodales nibh quis, sollicitudin ipsum. Quisque lacinia, sapien a tempor eleifend, dolor nibh posuere neque, sit amet tempus dolor ante non nunc. Proin tempor blandit mollis. Mauris nunc sem, egestas eget velit ut, luctus molestie ipsum. Pellentesque sed eleifend dolor. Nullam pulvinar dignissim ante, eget luctus quam hendrerit vel. Proin ornare non tortor vitae rhoncus. Etiam tellus sem, condimentum id bibendum sed, blandit ac lorem. Maecenas gravida, neque quis blandit ultrices, nisl elit pretium nulla, ac volutpat massa odio sed arcu. - -Etiam at nibh dui. Vestibulum eget odio vestibulum sapien volutpat facilisis. Phasellus tempor risus in nisi viverra, ut porta est dictum. Aliquam in urna gravida, pulvinar sem ac, luctus erat. Fusce posuere id mauris non placerat. Quisque porttitor sagittis sapien nec scelerisque. Aenean sed mi nec ante tincidunt maximus. Etiam accumsan, dui eget varius mattis, ex quam efficitur est, id ornare nulla orci id mi. Mauris vulputate tincidunt nunc, et tempor augue sollicitudin eget. - -Sed vitae commodo neque, euismod finibus libero. Integer eget condimentum elit, id volutpat odio. Donec convallis magna lacus, varius volutpat augue lacinia a. Proin venenatis ex et ullamcorper faucibus. Nulla scelerisque, mauris id molestie hendrerit, magna justo faucibus lacus, quis convallis nulla lorem nec nisi. Nunc dictum nisi a molestie efficitur. Etiam vel nibh sit amet nibh finibus gravida eget id tellus. Donec elementum blandit molestie. Donec fringilla sapien ut neque bibendum, at ultrices dui molestie. Sed lobortis auctor justo at tincidunt. In vitae velit augue. Vestibulum pharetra ex quam, in vehicula urna ullamcorper sit amet. Phasellus at rhoncus diam, nec interdum ligula. Pellentesque eget risus dictum, ultrices velit at, fermentum justo. Nulla orci ex, tempor vitae velit eu, gravida pellentesque dolor. - -Aenean auctor at lorem in auctor. Sed at mi non quam aliquam aliquet vitae eu erat. Sed eu orci ac elit scelerisque rhoncus eget at orci. Donec a imperdiet ipsum. Phasellus efficitur lobortis mauris, et scelerisque diam consectetur sit amet. Nunc nunc lectus, accumsan vel eleifend vel, tempor vitae sapien. Nunc dictum tempus turpis non blandit. Sed condimentum pretium velit ac sodales. In accumsan leo vel sem commodo, eget hendrerit risus interdum. Nullam quis malesuada purus, non euismod turpis. In augue lorem, convallis quis urna vel, euismod tincidunt nunc. Ut eget luctus lacus, in commodo diam. - -Aenean ut ante sed ex ornare maximus quis venenatis urna. Fusce commodo fermentum velit nec varius. Etiam vitae odio vel nisl condimentum fringilla. Donec in risus tincidunt ex placerat vestibulum. Donec hendrerit tellus convallis malesuada vulputate. Aenean condimentum metus id est mollis viverra. Quisque at auctor turpis. Aenean est metus, laoreet eu justo a, consequat suscipit nibh. Etiam mattis massa in sem sollicitudin, non blandit dolor pharetra. Vivamus pretium nunc ut lacus interdum, ut feugiat lectus blandit. Vestibulum sit amet scelerisque lectus. Nam ut lorem mattis urna semper rutrum. - -Maecenas imperdiet libero et metus porta maximus. Duis lobortis porttitor sem, ut dictum urna consequat vitae. Sed consectetur est at arcu fringilla scelerisque. Nulla finibus libero eu nibh vulputate euismod. Praesent volutpat nisi eget elit dignissim, ac imperdiet nisi mollis. Integer a venenatis neque. Fusce leo leo, auctor sit amet auctor in, elementum quis magna. - -Donec efficitur ullamcorper ex eget pretium. Suspendisse pharetra sagittis neque, eget laoreet sem maximus et. Etiam sit amet mi ut purus ornare molestie a nec diam. Sed eleifend dui at orci sollicitudin bibendum. Mauris non leo eu est consequat porttitor consectetur vel massa. Nullam pretium molestie leo in hendrerit. Etiam dapibus ante tellus, quis hendrerit turpis feugiat vitae. Maecenas id lorem quis nibh tincidunt accumsan sed sed nisi. Duis non faucibus odio. Fusce porta enim vitae ex ultrices, non euismod nibh posuere. - -Suspendisse luctus orci blandit, tempor ipsum in, molestie erat. Fusce commodo sed sapien quis interdum. Etiam sollicitudin ipsum a ipsum tempus, a vestibulum ligula hendrerit. Integer eget nisl a arcu hendrerit sollicitudin. Fusce a purus ornare, sollicitudin ante in, gravida elit. Vestibulum ut tortor volutpat, sodales enim eget, aliquam risus. Pellentesque efficitur nec sem id molestie. Mauris molestie, risus sit amet dignissim dictum, turpis ante vehicula tellus, in eleifend risus metus in mi. Aenean interdum ac metus ac porttitor. Vivamus nec blandit arcu. Maecenas fringilla varius metus, sed viverra diam facilisis a. - -Curabitur placerat cursus sem, in laoreet elit mollis in. Nam convallis aliquam placerat. Sed quis efficitur est. Proin id massa quam. Fusce nec porttitor quam. Nunc ac massa imperdiet, pretium nibh quis, maximus nisi. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec pretium purus id viverra fringilla. Cras congue facilisis orci et ullamcorper. In ac turpis arcu. Praesent convallis in ligula vitae suscipit. - -Etiam et egestas ipsum, ac lacinia erat. Nunc in metus sit amet lectus ultricies viverra in sed elit. Ut euismod urna eget nisl faucibus, accumsan vestibulum dolor suscipit. Aenean a volutpat ipsum. Nulla pharetra enim eu lorem vestibulum malesuada. Nulla facilisi. In congue at odio vel imperdiet. Fusce in elit in nibh dapibus rutrum. Donec consequat mauris a sem viverra egestas. Suspendisse sollicitudin dapibus finibus. Nullam tempus et lacus sed feugiat. Suspendisse aliquet, sem a fringilla elementum, ante lorem elementum odio, quis sollicitudin magna nibh sed libero. Maecenas convallis congue neque, ut molestie nibh porttitor ac. Vestibulum quis justo sed ipsum tempus viverra. Quisque mauris erat, varius a ipsum eu, porta molestie odio. Morbi mauris ante, sagittis eget nibh vel, volutpat faucibus nunc. - -Donec id neque feugiat, tristique neque et, luctus nibh. Duis vel lacus eu nisl dignissim sagittis sed sed lacus. Praesent luctus eleifend aliquet. Sed tempus facilisis lorem, sit amet tristique metus suscipit ac. Vestibulum id sapien ac erat luctus fermentum venenatis sit amet erat. Maecenas posuere finibus mi. Phasellus facilisis efficitur turpis sed auctor. Nullam lobortis ornare velit ac scelerisque. Vestibulum facilisis, odio ac finibus viverra, leo leo sodales arcu, sed ornare ex ligula vel lacus. Nullam odio orci, pulvinar eu urna in, tristique ornare augue. - -Vivamus scelerisque egestas justo, at dignissim erat elementum id. Etiam vel suscipit erat. Nulla accumsan ex sem, id pharetra eros tincidunt sodales. Nullam enim augue, interdum ut est ac, faucibus semper justo. Aliquam ut iaculis magna. Sed magna turpis, pretium nec lobortis vel, facilisis vitae mauris. Donec tincidunt eros in mauris maximus porta id vehicula mi. Integer ut orci lobortis turpis vehicula viverra. Vestibulum at blandit nunc, ac pretium quam. Morbi ac metus placerat, congue lorem nec, pharetra neque. - -Sed vestibulum nibh ex, fringilla lobortis libero sodales sed. Aenean vehicula nibh tellus, egestas eleifend diam sollicitudin non. Fusce ut sollicitudin leo. Nam tempor dictum erat sit amet vestibulum. Pellentesque ornare mattis ex, nec malesuada elit sollicitudin vitae. Nulla nec semper enim, venenatis ornare orci. Aliquam urna purus, ornare eu ipsum vitae, consectetur faucibus elit. Nulla vestibulum semper ligula, id rhoncus tortor accumsan nec. Vestibulum non ante sed urna efficitur imperdiet vitae quis felis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque rutrum quam sit amet nisl facilisis, quis maximus ante bibendum. - -Integer vel tortor nec est sodales posuere ut ac ipsum. Curabitur id odio nisl. Sed id augue iaculis, viverra risus nec, bibendum nunc. Cras ex risus, semper ac lorem nec, mattis dictum purus. Aenean semper et lacus at condimentum. Fusce nisl dolor, facilisis nec velit at, tempus pharetra mauris. Nam ac magna urna. Nulla convallis libero sed ex eleifend, ac molestie magna rhoncus. - -Donec blandit aliquam metus molestie suscipit. Cras et malesuada urna, non facilisis turpis. Donec non orci at leo aliquet porttitor vel non turpis. Nam consequat libero quam, non egestas ipsum eleifend quis. Mauris laoreet tellus enim, ac porta sapien condimentum quis. Nunc non sagittis orci. Aenean leo nibh, feugiat in turpis eget, hendrerit faucibus ligula. Morbi et massa nulla. Curabitur ac tempus nibh. Quisque commodo imperdiet viverra. Quisque sit amet condimentum mauris. - -Aliquam vel velit sed turpis consectetur eleifend quis et quam. Integer sed magna vel nisl consectetur lacinia vitae et ante. Duis consequat nulla ac leo auctor, ac euismod ipsum semper. Aliquam libero neque, imperdiet et nisi fringilla, vehicula elementum leo. Phasellus facilisis felis nec sagittis sodales. Donec ac consectetur odio. Aliquam eu aliquam lacus. Aliquam dictum eleifend risus, hendrerit eleifend nibh feugiat at. Aenean id tristique justo. Maecenas vel nibh quis massa aliquam convallis in eget mauris. - -Vestibulum nec fringilla neque, sit amet pellentesque dolor. Aenean a dolor enim. Morbi urna orci, mollis in viverra vel, volutpat vitae magna. Aenean sodales nec nisi ultrices condimentum. Quisque in turpis lobortis purus elementum maximus lacinia et nibh. Donec sed tortor eu nibh bibendum convallis in quis massa. Integer efficitur ultricies odio vel commodo. - -Quisque fermentum odio sit amet nunc tempus, vel porta nunc lobortis. Nam pellentesque elit non leo interdum, blandit eleifend purus suscipit. Nullam porta est non enim vulputate, ut molestie tortor ullamcorper. Donec fermentum, lectus suscipit commodo aliquet, tellus lacus rutrum ante, quis condimentum risus nisi id risus. Ut dapibus hendrerit odio non aliquet. Integer neque odio, dictum ac efficitur sit amet, facilisis a lacus. Nulla placerat erat et tortor placerat, vel posuere felis dignissim. Morbi non scelerisque ipsum. Aliquam hendrerit vestibulum metus vel pellentesque. Nunc fringilla turpis sodales nisi vestibulum faucibus. Quisque vehicula est arcu, tempus eleifend lorem scelerisque vitae. - -Nullam vehicula tortor vel purus hendrerit convallis. Cras sagittis metus ex, sit amet sollicitudin lectus vulputate quis. Integer sem odio, lobortis et pretium non, pharetra ut lorem. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque aliquam aliquet lorem, faucibus venenatis diam viverra in. Nullam pulvinar, nisi vel elementum venenatis, lacus risus convallis neque, ac eleifend lorem enim ac turpis. Pellentesque tellus quam, dictum eu nisl non, cursus pellentesque justo. - -Cras pharetra lorem sed magna vulputate, eget iaculis elit molestie. Morbi a est finibus, condimentum nunc at, feugiat magna. Curabitur turpis turpis, placerat sed risus vitae, porta volutpat elit. Phasellus id neque diam. Maecenas eu metus a urna iaculis egestas eget at elit. Nunc vehicula molestie dapibus. In auctor sapien eget mi tempus, eu tempor massa egestas. Pellentesque metus sem, pharetra non urna ac, convallis hendrerit massa. Mauris nunc velit, maximus sit amet est sit amet, gravida ultrices elit. Vivamus ut luctus nisl. Nam et ultrices ipsum. Maecenas eget blandit mi. Curabitur eu lorem nec est vehicula sodales. - -Vestibulum hendrerit sed est vitae egestas. Nam molestie, augue non consequat efficitur, elit purus commodo orci, et pharetra ante risus eget augue. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas a nulla enim. Ut accumsan sodales ultrices. Quisque gravida, leo rhoncus placerat egestas, eros felis posuere diam, ut eleifend orci nisl vitae lorem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam sit amet urna venenatis, pulvinar nisi eget, tristique nisi. Nam nec purus hendrerit, congue augue et, facilisis diam. Donec aliquet eleifend mauris. Vivamus eu libero rhoncus, scelerisque metus at, hendrerit quam. Cras vulputate, magna eget pretium accumsan, tortor nunc molestie quam, at vulputate turpis velit eget arcu. Etiam tristique sollicitudin est, in condimentum diam faucibus vitae. - -Curabitur id lorem elementum diam sollicitudin gravida a sit amet ipsum. Pellentesque tortor ligula, auctor at ultricies non, pulvinar et risus. Ut vitae cursus metus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed quis tortor feugiat, fermentum nunc at, sodales massa. Donec efficitur euismod diam non sodales. In eu augue quis enim elementum auctor. In hac habitasse platea dictumst. Cras in libero nec urna tempor venenatis vitae a diam. Nam vulputate nisl nulla, ut porttitor elit euismod non. Praesent eget tempus lacus, vel ullamcorper nulla. Quisque ut risus nibh. Nam rhoncus commodo consectetur. Sed ultrices sapien id lectus imperdiet, sed tincidunt est dapibus. - -Integer posuere mattis ipsum congue ullamcorper. Nunc ac vulputate magna. Ut bibendum scelerisque lectus. Nullam laoreet porta nunc, in viverra dolor blandit eu. Ut semper id urna quis bibendum. Vivamus sed felis nec sapien faucibus volutpat sed et nisi. Morbi faucibus venenatis imperdiet. Mauris semper ex ac blandit scelerisque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. - -Suspendisse vitae lectus diam. Nulla vel lectus non magna congue pharetra eget nec augue. Morbi elementum, nisl ut vestibulum varius, quam sapien convallis magna, tempus maximus nunc est vel purus. In molestie ligula sed placerat sagittis. In rutrum, felis volutpat pulvinar pharetra, arcu odio egestas augue, ut dapibus leo libero nec urna. Curabitur tortor sapien, aliquam id suscipit et, feugiat a leo. Sed mollis imperdiet tellus, ac placerat felis tristique sed. Fusce pulvinar est felis, sed rutrum neque sollicitudin sit amet. Donec tincidunt elit vel felis sagittis, sit amet vestibulum enim pellentesque. Nam accumsan rhoncus tellus vitae auctor. - -Praesent mattis risus eget dui finibus lobortis. Suspendisse auctor commodo viverra. Quisque a ante ante. Proin magna mi, efficitur vitae arcu vel, vehicula viverra lacus. Nulla rhoncus aliquet tortor eget iaculis. Vestibulum ac mollis risus. Curabitur non rhoncus neque. Donec non ipsum quis lectus fermentum convallis ac quis risus. - -Pellentesque aliquam diam diam, in tempus nisi rhoncus sed. Praesent ultricies nisl justo, sit amet suscipit lectus pharetra quis. Praesent non diam in dolor vulputate molestie ut vel nulla. Cras vel congue neque, in ultricies metus. Aliquam ultricies quam eget placerat accumsan. Aenean sodales cursus semper. Donec justo ex, euismod et mollis at, congue a arcu. - -In at sapien pulvinar, scelerisque felis sit amet, hendrerit diam. Aliquam pellentesque est vel augue dignissim, quis ornare sapien tincidunt. Nullam porta tincidunt tempus. Morbi eget arcu sed mauris tincidunt malesuada. Vivamus eleifend tortor in diam vulputate, non convallis nisi sodales. Vestibulum id arcu quis nisl maximus semper. Nunc quis dui vitae lectus dapibus luctus. Mauris mattis convallis mi, ut fringilla velit pulvinar non. - -Nam auctor ligula id dignissim pretium. Aliquam id ultricies massa. Suspendisse ullamcorper nec enim non egestas. Sed tristique, est eu cursus elementum, mauris nisi consectetur nulla, dapibus ultricies tortor mi ut augue. Sed vitae velit luctus, viverra velit a, malesuada eros. Mauris efficitur tortor quam, sed sodales velit suscipit varius. Integer varius nisi sit amet pharetra consequat. Fusce a fringilla felis, vel porta risus. Maecenas nibh magna, euismod quis tellus nec, faucibus mattis erat. Nulla facilisi. Cras maximus tempor dolor, a tristique diam consectetur in. Nam semper sapien tincidunt justo ornare vehicula. Suspendisse sit amet egestas lacus, ac bibendum urna. - -Integer sed est id tortor molestie placerat. Pellentesque vehicula risus eget massa lacinia hendrerit. Sed ut elit quis diam posuere bibendum in et ligula. Donec lobortis lacus eget aliquet maximus. Nullam risus massa, imperdiet eu urna ut, luctus fringilla tortor. Ut imperdiet nibh metus. Sed vitae purus nisl. - -Nunc sed magna arcu. Proin ornare lectus at semper hendrerit. Donec mi nunc, mattis in nibh a, facilisis ornare arcu. Curabitur in pretium turpis. Donec vulputate turpis sem, quis consectetur felis euismod a. Nullam sapien libero, dictum a odio a, pretium accumsan mauris. Nunc et velit varius, gravida metus non, mollis dui. Praesent nec dictum lorem, id bibendum nisi. In hac habitasse platea dictumst. Curabitur in imperdiet eros. Quisque vitae turpis lorem. In hac habitasse platea dictumst. Aliquam lobortis felis sit amet metus maximus, sit amet vulputate lorem ornare. In non ultrices eros. - -Praesent tellus nisl, feugiat ut rhoncus at, euismod ac ipsum. Donec vitae felis consectetur dolor ultricies scelerisque et at mauris. Donec justo lorem, euismod non velit ac, malesuada tempus sem. Pellentesque nunc sem, pharetra sed fermentum non, dignissim at nunc. Sed placerat dignissim dolor vitae malesuada. Maecenas in orci in arcu dictum facilisis eget et dui. Sed sed elit sed augue cursus rhoncus gravida sit amet mauris. In vel tempor lectus. Vestibulum congue, quam et feugiat placerat, tortor urna elementum magna, et laoreet neque orci id felis. Aliquam scelerisque nisi eget nisl dignissim, id luctus dolor tempus. Etiam ornare, magna vel dictum faucibus, ante lacus interdum sem, non malesuada urna felis quis dolor. Donec faucibus sagittis elementum. Fusce id risus eu nulla ornare tincidunt iaculis id erat. - -Suspendisse potenti. Nunc tristique nulla ac elementum ornare. Quisque finibus vitae erat at molestie. Maecenas consectetur mollis odio eu luctus. Phasellus id velit et nunc euismod varius vel vel dolor. Duis tempus nisi eu risus laoreet porta. Sed tempor eget neque eget pharetra. Duis non massa ac sem vulputate congue. Aliquam sodales sapien nisi, ut egestas orci ornare volutpat. Ut dui libero, viverra vel turpis vitae, molestie auctor justo. Pellentesque lacinia arcu vitae nunc auctor, nec elementum lorem malesuada. Interdum et malesuada fames ac ante ipsum primis in faucibus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Integer at aliquet diam. Duis sit amet orci nec urna convallis ultrices at nec nunc. - -Quisque rutrum eros vel ipsum tincidunt, quis pulvinar mi tincidunt. Quisque eget condimentum diam. Fusce porttitor maximus dolor et suscipit. In turpis tellus, semper hendrerit elit at, elementum fringilla nisl. Curabitur a maximus nunc. Ut dictum dignissim lectus, et convallis eros volutpat non. Sed tempor orci risus, nec fringilla nisl dictum quis. Nunc id sagittis ipsum. - -Fusce sollicitudin suscipit risus, tincidunt fermentum odio cursus eget. Proin tempus, felis et dignissim gravida, quam libero condimentum ligula, eget commodo libero sapien eget magna. Quisque feugiat purus mi, in facilisis augue euismod non. In euismod pharetra enim, non tristique purus dictum ac. Maecenas sed diam tincidunt, mollis neque a, imperdiet est. Sed eu orci non nulla mollis consequat et quis metus. Fusce odio metus, tincidunt ac velit sit amet, tempor posuere tortor. Vestibulum ornare, quam non vulputate feugiat, diam nibh finibus augue, at pharetra lectus nibh quis metus. Nam dignissim quis tellus eget aliquet. Proin iaculis sit amet ex eu vehicula. Etiam vehicula sollicitudin laoreet. Praesent venenatis luctus est. Suspendisse potenti. Donec luctus molestie mollis. Vestibulum quis tortor ut mauris porta gravida sed sit amet felis. Aliquam in ex condimentum, volutpat eros scelerisque, accumsan orci. - -Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Maecenas vitae viverra sapien. Suspendisse vel accumsan libero, ac rutrum purus. Aliquam in risus sed metus sollicitudin convallis eget in purus. Phasellus sagittis vestibulum magna, quis scelerisque augue malesuada vel. Quisque felis leo, vulputate laoreet enim lacinia, gravida viverra urna. Aliquam faucibus vestibulum maximus. Praesent scelerisque velit quis pellentesque varius. Ut consectetur ut risus a bibendum. In mollis sapien vitae ipsum volutpat, sit amet mattis nibh dictum. Curabitur eros ipsum, tincidunt et mauris id, maximus mattis sem. Mauris quis elit laoreet, porttitor nulla sit amet, feugiat tortor. Cras nec enim pulvinar, tincidunt lorem molestie, ornare arcu. Cras imperdiet quis ante vitae hendrerit. Sed tincidunt dignissim viverra. - -Aenean varius turpis dui, id efficitur lorem placerat sit amet. In hac habitasse platea dictumst. Integer quis pulvinar massa. Proin efficitur, ipsum eget vulputate lobortis, nibh ipsum faucibus magna, non luctus lorem nulla sed magna. Vestibulum scelerisque sed tortor eu aliquet. Curabitur et leo ac tellus pretium egestas. Cras blandit neque dui, eget dictum leo porttitor sed. Sed ultricies commodo tortor, a molestie ante scelerisque vitae. Duis faucibus quis magna nec lacinia. Morbi congue justo id dui ultricies condimentum. Pellentesque maximus faucibus gravida. Mauris vestibulum non libero sit amet fringilla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras id lorem condimentum, sodales dui id, blandit dolor. Sed elit mauris, aliquet nec enim vitae, sollicitudin pretium dui. Cras lacus sapien, maximus in libero et, elementum fermentum nunc. - -Vestibulum gravida cursus nisi sed congue. Nam velit lorem, porttitor id pharetra finibus, malesuada eget dui. Vestibulum at est ultrices, venenatis nulla sed, suscipit risus. Maecenas posuere pretium odio nec accumsan. Aliquam dui dui, laoreet sed felis non, dignissim hendrerit ante. Etiam id commodo ante. Aenean bibendum enim aliquet fringilla dictum. Morbi eu feugiat risus. - -Praesent gravida a ante non placerat. Mauris ultricies ullamcorper justo id viverra. Aenean semper metus eu nisl euismod suscipit. Proin erat quam, viverra ut metus eget, imperdiet accumsan nunc. Curabitur non enim a odio maximus pulvinar ac et elit. In auctor ex a malesuada malesuada. Nullam dapibus quam neque, a lacinia magna tempor eget. Nam pellentesque, nisl eget gravida porta, felis magna lacinia ipsum, eu lacinia felis dui non libero. Phasellus ut convallis urna. Curabitur convallis sem vel tortor lobortis molestie. Nunc vel fringilla mi. Donec eget libero ultricies, euismod nibh non, gravida mauris. Praesent malesuada, lectus at sollicitudin interdum, mi lacus aliquam metus, non gravida tortor velit ac justo. Suspendisse auctor tellus sapien, at eleifend erat mollis et. - -Sed a dictum quam. Sed accumsan libero vel feugiat vulputate. Cras mattis massa nec velit rhoncus luctus. Sed ornare, augue vel ornare lobortis, purus nulla interdum ipsum, a semper massa enim quis nunc. Nunc tempor efficitur odio, vel consequat dui fringilla ac. Quisque at quam sed lacus rhoncus sollicitudin. Nunc dolor libero, dictum a ornare id, euismod ac lectus. Quisque a hendrerit lectus. Nam ut diam eu neque viverra porttitor. Proin vitae accumsan eros, ut iaculis lorem. Nulla libero odio, mollis sed venenatis et, imperdiet ut ligula. - -Aliquam dignissim erat erat, vel imperdiet arcu sagittis id. In in dolor orci. Aliquam congue fermentum dui tristique viverra. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur a turpis in dolor consequat pulvinar. Pellentesque sed posuere nisl. Etiam pellentesque euismod sem. Quisque vitae nibh urna. Phasellus elementum arcu urna, ac scelerisque leo iaculis non. Etiam laoreet, nunc a consectetur rhoncus, nunc tortor feugiat nibh, vitae volutpat metus mauris in est. Pellentesque at neque eu arcu faucibus auctor nec vitae urna. Suspendisse semper tristique nisl id interdum. - -Integer dui libero, auctor id elementum a, convallis eu est. Praesent auctor sodales faucibus. Aenean faucibus euismod orci, vestibulum pharetra magna consectetur vel. Praesent a enim vel nisi aliquam tristique ut id metus. Donec at purus dui. Sed a aliquam velit, non viverra ex. Ut molestie interdum urna vel facilisis. Nunc iaculis aliquet turpis eu luctus. Vestibulum mollis diam vel ante finibus, a efficitur est tempus. Nulla auctor cursus sagittis. Nullam id odio vitae orci tristique eleifend. - -Ut iaculis turpis at sollicitudin accumsan. Cras eleifend nisl sed porta euismod. Nullam non nisi turpis. Cras feugiat justo nec augue pretium fermentum. Nunc malesuada at nulla a interdum. Proin ullamcorper commodo ligula ac rutrum. Praesent eros augue, venenatis vitae enim sit amet, ultricies eleifend risus. Nunc bibendum, leo ac consequat porttitor, diam ante posuere turpis, ut mattis odio justo consectetur justo. Phasellus ex dolor, aliquam et malesuada vitae, porttitor sed tellus. - -Praesent vitae lorem efficitur, consequat enim ut, laoreet nisi. Aliquam volutpat, nisl vel lobortis dapibus, risus justo lacinia justo, viverra lacinia justo lorem egestas nibh. Suspendisse pellentesque justo sed interdum sagittis. Maecenas vel ultricies magna. Duis feugiat vel arcu ac placerat. In tincidunt a orci at feugiat. Maecenas gravida tincidunt nibh eu convallis. Quisque pulvinar rutrum cursus. - -Proin nec maximus tortor. Morbi pellentesque magna vitae risus scelerisque elementum. Nulla fringilla neque at arcu malesuada rutrum. Fusce nisi magna, elementum fringilla elit ut, lacinia varius purus. In accumsan justo ex, vitae suscipit velit finibus cursus. Morbi sed suscipit orci. Fusce nulla erat, fermentum vel aliquam vitae, eleifend et elit. Maecenas id elit a ligula vestibulum blandit ut at eros. Etiam ac bibendum massa, sagittis viverra dolor. Maecenas sed sapien nec elit fringilla molestie a vel purus. In in semper odio, quis consectetur dolor. In sed metus a nisi tincidunt posuere nec eget erat. - -Maecenas non auctor sem. Nullam in turpis sagittis, fermentum neque finibus, fermentum justo. Sed id nisl mattis, commodo felis in, dapibus turpis. Nullam in elit in nunc aliquam laoreet vel vitae magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt tempus imperdiet. Nulla est est, mollis imperdiet varius nec, porta in nulla. Vestibulum volutpat euismod nisi vel laoreet. - -Cras congue egestas sodales. Nam commodo malesuada est nec volutpat. Ut gravida, turpis ac congue molestie, sapien augue molestie nulla, quis lacinia sapien dui eu nunc. Aliquam eleifend, leo et finibus pharetra, ante sapien congue purus, quis euismod urna nulla et metus. Donec vulputate hendrerit tortor quis mollis. Vestibulum et condimentum purus, vel aliquam lacus. Ut id congue sapien. Pellentesque ante lectus, hendrerit sit amet luctus quis, feugiat dignissim leo. Aenean aliquam imperdiet cursus. Praesent vulputate turpis ullamcorper felis tincidunt tincidunt. Duis quis augue vitae nibh finibus sagittis. Sed sollicitudin scelerisque tellus, ut interdum diam sollicitudin bibendum. Vestibulum iaculis fermentum sem sit amet tempus. Suspendisse lobortis eleifend fermentum. - -Etiam consectetur est sit amet nisl aliquet, eget fermentum tellus rhoncus. Quisque vulputate sit amet mauris eget lacinia. Fusce ac eros tellus. Suspendisse et tellus felis. Praesent ultricies nunc lorem, sed sodales orci viverra eu. Vestibulum maximus nibh et turpis efficitur, in tempus ipsum efficitur. Vivamus finibus lorem nec malesuada egestas. Praesent in nibh sagittis, volutpat risus et, commodo est. Suspendisse facilisis eu augue nec tincidunt. Fusce quis nisl tempus, tincidunt lacus nec, dapibus purus. - -Vivamus et ante eu ante sodales elementum sed id urna. In tincidunt vel tortor sed feugiat. Praesent iaculis diam eget pellentesque ornare. Praesent aliquet convallis odio sit amet suscipit. Morbi et nisi nulla. Nunc vestibulum risus a faucibus efficitur. Pellentesque commodo odio eu leo vestibulum, id iaculis risus sagittis. Cras a ipsum posuere, rhoncus eros in, euismod nulla. Nam semper, mi id tempor sodales, diam sem blandit odio, eget posuere tellus nisi nec tortor. Etiam nec tortor congue, sodales ante ac, malesuada elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce fringilla eros sit amet orci vestibulum aliquam. Suspendisse fermentum malesuada est, sit amet condimentum ante volutpat nec. Integer sit amet magna molestie, feugiat odio a, condimentum lectus. - -Nullam odio ligula, mollis eu massa ac, maximus interdum velit. Vestibulum vulputate a justo ac efficitur. Quisque ex est, pretium id velit nec, malesuada posuere arcu. Sed congue lacus nec velit vehicula, a egestas erat mattis. Nunc eget leo a metus rhoncus mollis. Maecenas at elit nec est condimentum suscipit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis nisi mauris, consequat varius mollis at, porta ac dolor. Mauris vitae euismod lorem, ut dapibus turpis. Vivamus sit amet iaculis turpis. Nulla molestie feugiat urna in pharetra. - -Nam ac elit vulputate magna venenatis pharetra ac eu elit. Donec sed eros id lacus molestie rutrum. Sed iaculis mauris nunc, non fringilla ante semper eu. Maecenas in auctor eros. Vestibulum eu enim lorem. Etiam tristique dui id justo blandit dignissim. Aenean quis faucibus eros. Quisque vel dolor lectus. Etiam lacus enim, laoreet varius dolor ut, sollicitudin imperdiet lacus. - -Quisque vel nibh sollicitudin urna pellentesque euismod sed sed lorem. Suspendisse in condimentum ipsum, eu convallis ipsum. Nunc faucibus condimentum ante efficitur imperdiet. Donec tempor egestas efficitur. Morbi et aliquam nisl, quis iaculis elit. Fusce eu elit et sapien auctor ullamcorper. Curabitur sem orci, pharetra vitae facilisis non, scelerisque et mi. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut molestie eu velit id ultricies. Maecenas vehicula id tortor sit amet faucibus. Duis porta enim nec vestibulum posuere. Aenean blandit fringilla lacus accumsan pellentesque. Integer ut ante elementum, imperdiet metus sit amet, consequat orci. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce eget libero non arcu luctus pulvinar. Vestibulum condimentum tellus nec enim bibendum aliquam. Nulla non placerat massa. Donec vestibulum nibh at rutrum mollis. Aliquam erat volutpat. Vivamus metus est, rhoncus a efficitur id, blandit id dolor. - -Nunc rutrum lacus ut pharetra feugiat. Sed volutpat semper metus sit amet placerat. Phasellus efficitur porta venenatis. Quisque imperdiet metus nunc, nec porttitor turpis iaculis ut. Sed at orci eget eros lacinia volutpat. Etiam sagittis euismod diam quis ullamcorper. Nulla facilisi. Praesent faucibus neque vel tortor pharetra, ac tincidunt nunc rutrum. Phasellus aliquam nulla in augue rhoncus, a lacinia tellus pretium. - -Praesent in mauris lectus. Aliquam molestie nulla vitae nulla consectetur convallis. Sed eu molestie velit, vitae venenatis elit. Quisque eget ultricies mauris, at euismod risus. Sed gravida velit ut risus tempor suscipit. Maecenas metus nisi, pellentesque in ornare et, fermentum et lectus. Interdum et malesuada fames ac ante ipsum primis in faucibus. - -Quisque in mi congue, molestie massa a, fermentum tellus. Integer vitae tortor iaculis, tincidunt magna et, egestas ligula. Sed feugiat metus id erat faucibus, ac bibendum enim sollicitudin. Cras hendrerit massa sapien, et consequat tellus accumsan lacinia. Nam pharetra, ipsum ut vestibulum fringilla, sapien eros finibus leo, eget suscipit nibh arcu aliquam quam. Quisque sollicitudin id est eu rutrum. Nunc vitae tincidunt nisi, euismod viverra enim. Maecenas mattis sapien at felis hendrerit dignissim. - -Quisque eu urna nulla. Integer at eros fermentum est mattis rutrum at nec massa. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ut hendrerit nunc. Vestibulum est velit, rhoncus quis nisi sed, lobortis aliquet metus. Nunc faucibus egestas magna sit amet ornare. Maecenas eu justo mi. Proin tincidunt sem vel metus efficitur, sit amet malesuada augue cursus. - -Vestibulum viverra augue ut lorem accumsan, nec lacinia ligula accumsan. Maecenas viverra mauris dolor, vitae molestie mi accumsan nec. Ut nec sagittis nisl, fringilla viverra magna. Cras condimentum ultrices sollicitudin. Morbi tempor, massa ut iaculis posuere, arcu erat luctus massa, vitae pulvinar nulla ex nec nulla. Mauris vitae scelerisque ipsum. Nullam tincidunt consequat augue, quis aliquam nulla. Integer non arcu erat. Etiam scelerisque sodales vestibulum. Sed luctus arcu eu leo consectetur, at porta arcu elementum. - -Morbi in eleifend neque. Quisque a blandit libero, dignissim porta tortor. Sed nunc metus, aliquam a elit et, sagittis dictum arcu. Vestibulum lacinia nisi quis luctus ultricies. Fusce erat eros, euismod sit amet luctus vel, tempor a nunc. Aliquam nec nulla id est molestie tincidunt ac sit amet arcu. Donec molestie laoreet sapien, sit amet vulputate turpis facilisis at. Nullam eget nisi vel nibh elementum euismod non tempus leo. Nulla suscipit consectetur ante, nec fringilla lectus porta ac. Proin nec odio in lacus suscipit lacinia et sagittis ante. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed rhoncus lacinia porttitor. Pellentesque sapien ipsum, sagittis posuere arcu ut, laoreet gravida elit. Aenean eu tortor sit amet massa tincidunt facilisis. Aenean congue eget orci vitae vestibulum. - -Nunc tempus augue rhoncus condimentum vehicula. Sed in dui sit amet arcu varius pellentesque quis cursus nisl. Proin faucibus erat id egestas suscipit. Nam accumsan in tellus nec elementum. Phasellus nunc orci, mattis nec sollicitudin ultrices, feugiat eu lectus. Morbi ullamcorper rutrum sapien non rhoncus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque orci sapien, fringilla et dictum sit amet, tristique vel arcu. Maecenas tempus porttitor mattis. Cras eget faucibus enim. - -Mauris ornare mattis tortor. Duis convallis a ipsum id cursus. Aenean viverra, eros pellentesque ullamcorper posuere, orci ligula luctus odio, vel rutrum ex lectus eu erat. Etiam mollis nulla orci, fringilla gravida mauris viverra eu. Sed et orci non purus ultricies elementum. Cras at lectus hendrerit, fringilla lacus nec, feugiat sem. Morbi in metus felis. Etiam tempor bibendum ex eu venenatis. - -Cras ac nibh condimentum, lacinia sem ut, pretium felis. Sed congue, mi at accumsan semper, felis lorem vestibulum nisl, ac commodo lorem eros at mi. Curabitur condimentum nunc justo. Nulla efficitur venenatis nibh sed finibus. Integer iaculis volutpat mi dictum bibendum. Nullam tempus id ante euismod placerat. In placerat auctor lacus ac molestie. Aenean ultricies egestas imperdiet. - -Ut interdum cursus accumsan. Aliquam a mi ligula. Nunc blandit, metus in pellentesque aliquet, velit libero aliquam quam, nec egestas est turpis at ante. Quisque et magna eget massa gravida suscipit. Ut in lectus a massa eleifend sagittis rhoncus faucibus lectus. Maecenas sit amet elit vel tellus varius feugiat ac ut diam. Ut iaculis non ante in molestie. Integer pulvinar vulputate velit, ornare dignissim sapien laoreet ut. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. - -Aliquam finibus tristique laoreet. Pellentesque et diam tincidunt orci hendrerit euismod. Phasellus viverra orci vitae interdum imperdiet. Phasellus gravida auctor nisi, vitae rhoncus est dignissim eget. Phasellus eu facilisis eros, vitae iaculis quam. In condimentum velit non iaculis porta. Proin ipsum ex, egestas nec molestie sit amet, vehicula sed ante. Proin eget eros at nibh sollicitudin luctus a id magna. Nam eget turpis finibus, tempor libero nec, auctor velit. Nunc neque magna, dictum vel semper nec, facilisis eu lectus. Maecenas maximus tortor eget ex dictum, sit amet lacinia quam tincidunt. Nulla ultrices, nunc ac porta feugiat, diam dolor aliquet sapien, sit amet dignissim purus ante in ipsum. Maecenas eget fringilla urna. Etiam posuere porttitor interdum. Vestibulum quam magna, finibus et urna auctor, pulvinar viverra mauris. Fusce sollicitudin ante erat. - -Maecenas pretium facilisis magna, at porttitor turpis egestas non. Morbi in suscipit felis. Duis eget vehicula velit, posuere sodales lorem. Curabitur elementum a lectus non ornare. Donec vel eros scelerisque ipsum iaculis accumsan. Phasellus tincidunt tincidunt lobortis. Vestibulum maximus risus tellus, eu faucibus urna tincidunt quis. Fusce dignissim lectus vel enim ultricies, in efficitur purus semper. Etiam sit amet velit pulvinar, hendrerit erat et, maximus eros. - -Maecenas iaculis convallis consectetur. Duis ante nulla, commodo sit amet diam sed, tempus mattis risus. Maecenas volutpat leo leo, in mollis eros mollis quis. Aenean sagittis, neque id mattis varius, tortor leo cursus ligula, a ultricies justo turpis ut libero. Ut sit amet nibh et erat pellentesque rhoncus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rhoncus ligula nec iaculis faucibus. Curabitur tincidunt eu diam eget ultrices. - -Vestibulum quis nisl nec lacus commodo efficitur eu eleifend turpis. Etiam pretium id nisl a vehicula. Praesent elementum malesuada nisl. In condimentum interdum faucibus. In sed mauris vestibulum dui ultricies congue. Ut posuere mattis ante, in blandit mauris suscipit quis. Pellentesque ligula turpis, tincidunt a laoreet vel, consectetur in est. Nulla gravida ligula vel lectus faucibus accumsan. Praesent rhoncus eros arcu, id ultrices ipsum maximus ac. Mauris tincidunt cursus erat nec vulputate. Nulla tristique imperdiet eros vitae lobortis. Nullam a urna et sem condimentum blandit sed ut nulla. - -Maecenas auctor sodales facilisis. Pellentesque facilisis augue a odio varius suscipit. Etiam malesuada justo vel leo dignissim tincidunt. Sed magna metus, sagittis at diam gravida, dictum iaculis sem. Aliquam erat volutpat. Maecenas euismod egestas tortor non sollicitudin. Nulla quis odio tincidunt, auctor est sed, pretium turpis. Quisque aliquet semper magna, sit amet gravida enim luctus at. - -Nulla orci risus, ultrices a nunc et, dictum tincidunt lectus. Aliquam erat volutpat. Mauris at justo feugiat, efficitur lectus id, facilisis turpis. Sed ornare sodales fermentum. Suspendisse interdum tellus ac auctor sagittis. In auctor convallis metus non elementum. Mauris id dolor aliquam, euismod sapien id, tristique mi. Duis ac eleifend lectus. Etiam odio turpis, molestie vitae posuere vel, feugiat ac lorem. Fusce tempus ligula non hendrerit maximus. Nulla facilisi. Ut pretium turpis eget eros fringilla, vel aliquam mi pulvinar. - -Donec rhoncus augue ac viverra lacinia. Aliquam suscipit risus id sem varius, eget aliquet justo varius. Phasellus molestie, neque vitae semper posuere, est risus blandit ligula, id lacinia lectus orci id lectus. Cras vitae massa sit amet sapien pulvinar sollicitudin facilisis sed leo. Donec risus nulla, finibus id nulla quis, ornare sollicitudin neque. Curabitur id sapien vehicula, tempor velit sit amet, auctor augue. Nunc venenatis urna quis ante mollis bibendum. - -Pellentesque in varius massa. Donec non odio ultricies purus hendrerit fermentum. Aliquam quis elit vitae risus porttitor efficitur in vel sapien. Vestibulum sed urna sed lorem convallis bibendum nec non eros. Nullam molestie accumsan tincidunt. Aenean interdum sapien quis sapien dictum porttitor. Ut sit amet mollis magna, sed finibus urna. Etiam porta congue nunc eu aliquam. In congue mollis tincidunt. Nunc id metus ultricies, aliquam risus vel, sollicitudin dui. In nec felis consectetur, gravida dolor eu, consectetur lorem. Ut hendrerit, velit vitae malesuada placerat, felis metus vehicula odio, in iaculis ex tortor id metus. Donec mattis elit a est sollicitudin, in lacinia nisi gravida. Nullam ornare, tellus eget pharetra mollis, purus nisl condimentum sapien, vel ultricies enim libero ac ex. Fusce sed ligula a arcu lacinia tempor sit amet et magna. Maecenas fermentum nec diam in ornare. - -Cras pellentesque facilisis accumsan. Curabitur vehicula volutpat diam, vel tincidunt felis cursus sed. In malesuada leo et porta pulvinar. Integer at ultrices nunc, a tincidunt metus. Vivamus eu tellus vel lectus volutpat fringilla. Donec ut egestas est. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce non hendrerit turpis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam in ipsum quis ipsum hendrerit egestas. Donec vitae lectus malesuada, consequat enim et, lobortis velit. Vestibulum nec augue ex. Nullam ut porta lacus. Morbi pellentesque gravida purus, a interdum felis. Nulla lacus libero, euismod quis posuere in, congue pretium ipsum. Aliquam at suscipit nisi. - -Sed et venenatis purus, at maximus dolor. Fusce varius eget turpis ac sodales. Nullam sed mauris quis diam hendrerit dapibus consectetur eget dolor. Suspendisse maximus ac velit quis condimentum. Praesent ac mattis mauris. Morbi aliquet dignissim sem, sed mattis enim vestibulum vitae. Morbi sed dui in sapien elementum ullamcorper. Proin feugiat viverra ipsum et commodo. Nam pellentesque turpis nec condimentum aliquam. - -Praesent luctus elit sit amet est fermentum, nec egestas lectus scelerisque. Proin ornare mi eu turpis sodales, at vestibulum magna placerat. Suspendisse potenti. Nulla vel elit semper, blandit nunc vel, ullamcorper turpis. Morbi eu posuere sapien, ac iaculis tellus. Etiam tincidunt nunc vitae cursus faucibus. Phasellus rhoncus sollicitudin metus, id lobortis mi iaculis nec. Donec elementum venenatis purus at commodo. Aenean egestas facilisis metus, quis posuere nisi fringilla aliquam. Fusce ac porta nibh. Aliquam hendrerit lectus magna, at auctor felis viverra a. Integer elementum posuere nunc a fringilla. - -Nunc metus lectus, molestie nec tincidunt at, facilisis id enim. Aenean nulla quam, convallis non lectus vehicula, dignissim interdum velit. Ut vestibulum finibus mauris. Vivamus sed euismod elit, ut pulvinar dolor. Suspendisse dictum viverra pharetra. Curabitur non erat finibus orci sodales pulvinar. Sed at consectetur quam, ut commodo lacus. Suspendisse mollis convallis lorem, nec venenatis nunc lacinia a. Proin in est dui. Nunc nec lacus lectus. Aenean faucibus dui ornare magna varius fermentum. Aenean eu justo pulvinar libero rhoncus sollicitudin at et nunc. Integer sit amet mauris hendrerit, fringilla magna quis, tincidunt nunc. Fusce sit amet aliquam leo, pretium fermentum nisl. Vestibulum hendrerit tempus suscipit. - -Pellentesque et augue varius, aliquam justo vel, sagittis erat. Suspendisse tincidunt maximus velit, porttitor interdum ligula elementum vel. Nunc a dictum lectus, gravida tristique magna. Quisque id risus arcu. Vestibulum porta in mi sed finibus. Nam tristique in mauris nec gravida. Vivamus arcu sem, fringilla ac purus eget, vestibulum posuere arcu. Integer aliquet elit a est scelerisque pharetra vel sit amet augue. Sed quis finibus nunc, non ornare felis. Suspendisse potenti. Maecenas sollicitudin eros urna, vel bibendum mi sollicitudin facilisis. Nam elementum ligula non augue accumsan, ut laoreet tellus ultricies. Nunc in pellentesque quam. Proin eu varius lectus. Donec gravida massa non rhoncus dignissim. Sed est sapien, vestibulum ac egestas nec, posuere id metus. - -Phasellus quis interdum felis. Pellentesque ac elementum lacus. Proin posuere tempor ante, et consectetur nulla convallis ut. Etiam porta sem orci, eget convallis risus hendrerit in. Mauris gravida libero id tincidunt lacinia. Donec tempus ultrices ipsum, vitae finibus velit. Sed consectetur dictum velit, in consequat dolor fermentum eget. Pellentesque porttitor tellus velit, quis dignissim purus imperdiet et. Phasellus leo lectus, mollis nec ultricies ut, placerat ut quam. Integer imperdiet mauris sed magna gravida accumsan. Nulla congue turpis at urna tincidunt, at tempus urna condimentum. Praesent ac nibh lectus. Pellentesque id odio at purus tincidunt mollis nec id massa. Nulla eget venenatis erat, ornare lobortis nulla. Fusce rhoncus metus turpis, at mattis magna blandit sed. Aliquam sed mattis massa, ut bibendum nisl. - -Mauris commodo vulputate nulla at sodales. Vivamus sagittis viverra ex, in scelerisque dui commodo in. Maecenas eget ante euismod, tristique tortor at, placerat turpis. Fusce hendrerit, orci et hendrerit tristique, turpis tortor hendrerit elit, vel dictum eros nisl vitae enim. Nullam et lacus velit. Donec rutrum tortor risus, eu volutpat lorem placerat tempor. Etiam rhoncus lorem quis turpis gravida placerat. Nam at magna efficitur, interdum mauris vel, tristique odio. Phasellus augue nisl, fermentum luctus sapien non, rhoncus convallis dui. Aenean nibh tellus, congue ut nulla eu, luctus lacinia est. Sed vel augue tellus. Ut congue sit amet risus ut consequat. Vestibulum id magna sed augue condimentum porttitor. In nec leo ac justo condimentum dignissim. Nullam eu gravida ipsum. - -Proin iaculis imperdiet nisl. Vestibulum at lectus bibendum ipsum mattis viverra. Suspendisse facilisis non nulla non dignissim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce scelerisque turpis ante, tincidunt laoreet risus pharetra in. Nam nisi est, hendrerit in tincidunt sit amet, accumsan placerat odio. Vivamus nec egestas ligula. Nam sit amet dignissim nulla, sit amet lobortis ex. - -Etiam ac tellus lectus. Cras egestas urna id ornare vestibulum. Donec ut magna id velit finibus sagittis eget at nibh. Pellentesque tempus tempor justo, sit amet rutrum massa convallis eu. Ut lacus quam, sollicitudin vel consectetur vel, cursus eu velit. Sed aliquam ex a est lacinia pretium. Sed volutpat dui at iaculis accumsan. Nam feugiat libero a ante consectetur, nec maximus metus venenatis. - -Fusce in nunc lorem. Aliquam vel tincidunt nisl. Duis sed laoreet dui. Nam eu dapibus lacus. Nulla odio lectus, ornare sit amet leo sed, laoreet tempus massa. Curabitur venenatis ipsum vel turpis lacinia, sed euismod diam commodo. Etiam ac turpis cursus, auctor lectus eu, sodales ex. Ut eget dolor aliquet mauris maximus volutpat vitae ut lorem. Sed vulputate arcu ex, a porttitor risus porttitor vel. Duis sed accumsan purus. - -Pellentesque nisi est, scelerisque eu magna in, venenatis dapibus elit. Morbi porttitor, lectus dapibus dapibus sodales, mauris eros tristique metus, vitae porta tellus quam eu arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam fringilla nibh sed fermentum vestibulum. Aliquam quis mollis elit. Etiam lobortis purus sed nunc pulvinar malesuada. Morbi varius mattis velit efficitur convallis. - -Pellentesque facilisis ante id metus porta, et tincidunt quam tristique. Proin non sem vel eros venenatis tempor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus sollicitudin non risus at mollis. Cras leo orci, tempus eget felis a, efficitur tincidunt massa. In quis augue tristique, condimentum nulla eget, vulputate sem. Sed purus neque, ultricies eu turpis facilisis, dignissim bibendum eros. Vivamus congue accumsan dui. Sed congue dolor ut nisl mattis laoreet eu eu purus. Mauris vehicula, quam vel feugiat imperdiet, libero nibh commodo mi, at ullamcorper nulla enim sed leo. In eget ante sit amet metus luctus vulputate non sed dolor. In sapien odio, egestas sit amet sapien quis, congue mattis ante. Quisque tempus ligula ut eleifend facilisis. Vivamus ornare suscipit laoreet. Nulla vitae placerat massa, interdum sollicitudin augue. - -Suspendisse potenti. Morbi sed scelerisque diam. Suspendisse vitae tortor arcu. Nullam a ligula condimentum, sollicitudin arcu et, fringilla elit. Vivamus dignissim gravida ornare. Etiam scelerisque ligula at est porta, in dignissim sem hendrerit. In ut mollis urna. Sed blandit purus at volutpat scelerisque. Nullam vel finibus odio. In eu neque eu ante pretium posuere. Nullam vitae accumsan neque. Nam nec elit dolor. Ut sit amet urna eros. Maecenas efficitur dui id tempor porta. Pellentesque et quam felis. - -Proin aliquet sem nec ipsum porta, eu tempus velit vestibulum. Nulla sed ligula sed metus sollicitudin porttitor. Fusce non posuere lacus. Phasellus luctus, eros quis rhoncus ultricies, arcu tellus rutrum tellus, eu vulputate orci ante vitae lorem. Maecenas porttitor mauris purus, ut eleifend metus sollicitudin sit amet. Curabitur ultricies erat id libero egestas, ut ullamcorper eros vehicula. Vestibulum lorem nibh, aliquam ut tincidunt elementum, tempor quis sem. Donec vehicula tempor eleifend. In hac habitasse platea dictumst. Nunc ut sem elementum, aliquam dolor sit amet, eleifend enim. In elementum viverra mi, eget pulvinar lorem fermentum non. Nam ac ligula vel dolor convallis pellentesque. In sed lectus sed arcu consequat finibus vel et ante. In iaculis id tellus in congue. Donec imperdiet lorem quis erat maximus, vitae molestie ex accumsan. Donec pharetra, orci ac rutrum pretium, nunc mauris vestibulum magna, sagittis consequat risus orci ut felis. - -Sed id metus eget odio suscipit efficitur id eget ligula. Phasellus massa metus, varius et metus quis, porta lobortis turpis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In in augue semper, consequat nunc at, tristique eros. Nullam vitae consectetur neque. Duis dignissim urna metus, vitae condimentum erat eleifend ac. In pellentesque nunc sed convallis sagittis. Integer venenatis, felis a mollis tristique, diam neque laoreet orci, ac varius diam ligula pulvinar augue. Nullam dapibus libero id est sollicitudin, non efficitur dui sollicitudin. Mauris sem diam, feugiat non ante elementum, eleifend lobortis urna. Nullam pharetra tristique diam in aliquam. Donec finibus sit amet lectus non auctor. - -Ut nibh tortor, sagittis ut sem eget, ultricies auctor enim. Cras malesuada ligula velit, sit amet consequat mauris interdum eget. Curabitur fermentum tristique magna facilisis ultricies. Sed quis porta arcu. Ut in nunc id velit egestas consectetur. Nulla fermentum porta nisi, vitae dapibus risus consectetur faucibus. Mauris quis magna aliquam libero dictum porta. Mauris sed iaculis turpis, non auctor turpis. Sed eget lorem ex. Sed pulvinar, mi ut rhoncus dapibus, est lorem maximus orci, ac tempor justo erat vel purus. Proin euismod turpis eu ex blandit semper. Nulla suscipit molestie ex sed auctor. In facilisis nisi convallis nulla rutrum bibendum. In aliquet leo eget quam auctor, at eleifend felis commodo. - -Vivamus at elit scelerisque, tristique mi non, ornare nisl. Integer posuere orci diam, sit amet malesuada nisl vestibulum ut. Sed convallis urna id arcu luctus, faucibus interdum urna varius. In hac habitasse platea dictumst. Mauris laoreet mauris vel nisi ultrices facilisis. Suspendisse mattis purus eu dui lobortis bibendum. Fusce cursus risus tellus, non fermentum lectus tristique sed. Curabitur ullamcorper tincidunt tortor vel blandit. Quisque at ligula ut sapien convallis tincidunt eu vitae dolor. Etiam consectetur lacinia sollicitudin. Sed sagittis dolor vel nulla congue mollis. In ut felis gravida, luctus massa sed, venenatis ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc facilisis lobortis dapibus. - -In a velit nibh. Nam mollis nunc sed faucibus eleifend. Sed maximus malesuada ultrices. Donec mattis finibus nunc, eu viverra massa egestas non. Donec arcu velit, sagittis et tempor mollis, malesuada in mi. Duis rhoncus suscipit lorem ac lobortis. Vestibulum malesuada nibh at nulla ornare, at pulvinar magna tincidunt. Ut tellus risus, commodo vitae fringilla nec, semper quis nulla. Suspendisse euismod eros vel leo commodo, ac sollicitudin velit porta. Donec non dolor blandit, tempor magna eu, suscipit risus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec libero nisl, auctor in rhoncus sed, viverra a arcu. Etiam diam ex, luctus non ultrices quis, viverra ut quam. Mauris lobortis suscipit quam, malesuada pretium nibh ultrices non. Suspendisse molestie, risus sit amet venenatis semper, justo justo tempor tortor, vel iaculis ligula dui sed erat. - -Donec odio ligula, aliquam id mollis eget, tincidunt nec arcu. Duis aliquam elementum facilisis. Vivamus lobortis fermentum egestas. Etiam ac orci sit amet dui dignissim condimentum. Maecenas magna arcu, mollis eget nisl a, vestibulum finibus lacus. Praesent et metus risus. Morbi semper neque vel erat fermentum, commodo posuere sem porta. Proin sit amet ipsum at lectus vestibulum luctus. Nullam convallis nulla ac pretium facilisis. Nunc porttitor convallis mi nec vestibulum. Phasellus vehicula vestibulum ornare. Curabitur commodo sapien quis vulputate egestas. Suspendisse potenti. Vestibulum quis mattis nisi. - -Maecenas mattis ex eget placerat aliquet. Pellentesque est nibh, ultrices eu laoreet in, interdum vitae nunc. Suspendisse sit amet metus hendrerit, fringilla quam at, mollis arcu. Nullam tempus metus volutpat felis fermentum, et accumsan nisl placerat. Maecenas pharetra feugiat eros sit amet consectetur. Donec vehicula tincidunt massa eu sagittis. Integer massa nisl, luctus quis nisi et, molestie cursus turpis. Aliquam congue ipsum eget turpis vehicula, commodo eleifend neque placerat. Nam vel consequat urna. In pellentesque lobortis tempus. Pellentesque pharetra, purus in pretium convallis, turpis orci maximus tortor, eu malesuada ex elit sit amet lorem. - -Curabitur sit amet aliquet quam, non aliquet tellus. Pellentesque nec ipsum dolor. Aliquam blandit gravida dolor vitae porta. Integer enim purus, scelerisque id molestie sed, accumsan vel nulla. Aenean vel ultricies urna. Nam consequat ipsum tempor mi placerat, id pretium dolor cursus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; - -Sed venenatis dui mauris, pellentesque varius magna malesuada blandit. Etiam sed tempor ipsum, id tincidunt nisl. Sed a felis mi. Nulla orci metus, auctor ac malesuada lobortis, facilisis vel nisl. Pellentesque at scelerisque est. Nulla vel mi ut magna commodo lobortis in ut diam. Etiam a lacus dui. Integer ut turpis arcu. In hac habitasse platea dictumst. Quisque porta neque at velit eleifend consequat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aliquam erat volutpat. Nam pretium turpis a sem placerat, non mollis diam dictum. Sed at nulla purus. - -Sed auctor neque nec consectetur sollicitudin. Donec aliquam arcu id diam commodo posuere. Nulla nec accumsan ante, at fringilla ligula. Sed nisi libero, iaculis ut convallis nec, ultrices ac ex. Mauris aliquam mi nec ultricies porttitor. Mauris malesuada odio ut hendrerit tempus. Aliquam non aliquam dui. Nam mi mauris, volutpat in ligula vel, blandit iaculis lectus. - -Integer vel maximus massa, sit amet mollis nibh. Proin at aliquet sapien. Nullam a turpis id libero facilisis dignissim. Sed convallis nulla vitae turpis consectetur, eu pharetra libero posuere. Interdum et malesuada fames ac ante ipsum primis in faucibus. Morbi venenatis massa id massa commodo suscipit. Cras magna lorem, porta eget velit at, vehicula semper velit. Maecenas cursus libero sit amet eleifend tempus. Suspendisse sed odio nisi. Suspendisse pulvinar felis semper magna hendrerit, ac posuere neque ullamcorper. Vivamus aliquam, elit id vulputate convallis, dolor lectus tempor nisi, id dapibus nulla eros in dui. Pellentesque ante libero, eleifend ac consequat vel, sodales in enim. Proin gravida sapien in nulla cursus, sagittis faucibus quam aliquam. Phasellus sit amet diam molestie, luctus urna eget, convallis elit. Nunc interdum erat fringilla, finibus neque quis, scelerisque justo. Donec interdum id risus at pharetra. - -Cras finibus magna turpis, sollicitudin viverra felis bibendum sagittis. Cras blandit facilisis euismod. Curabitur finibus enim gravida erat faucibus rhoncus. Aenean tempor elit vel sem ornare viverra. Ut at tortor nisl. Aenean in quam enim. Mauris pulvinar augue at nunc commodo, eget efficitur turpis laoreet. In vel fermentum nisi, eget porttitor diam. Mauris placerat eu ligula eu cursus. Curabitur ac tincidunt dolor, eu molestie est. Quisque ullamcorper vehicula faucibus. Phasellus euismod, arcu a scelerisque tempor, massa lectus ultricies velit, at mattis mauris mauris ultricies arcu. Proin condimentum ultrices nisl a rutrum. Proin bibendum sem quis accumsan fermentum. - -Integer sit amet velit sed urna rutrum molestie id non nunc. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus ac ornare dolor. Quisque ante massa, tincidunt eget iaculis sit amet, dapibus vitae arcu. Fusce sagittis leo eu varius egestas. Nam a ex non tellus vestibulum consequat sit amet ac est. Donec mi purus, varius non finibus sit amet, maximus ut mauris. Etiam a sapien lacinia, faucibus massa non, tempus libero. Aliquam ac lorem id purus vehicula consectetur quis non metus. - -Nam id imperdiet nulla, eu luctus sem. Nunc non risus vel quam dapibus porta. Aliquam laoreet dictum tristique. Curabitur et varius leo. Nulla hendrerit sem at tellus sodales, in porta nisl cursus. In et tincidunt tellus, vel commodo nulla. Etiam mattis dolor vestibulum libero aliquet, eget accumsan mi iaculis. Aenean in lacus congue, iaculis ipsum eu, condimentum ligula. Cras lorem leo, eleifend eget risus at, efficitur malesuada turpis. - -Suspendisse potenti. Pellentesque laoreet neque quis molestie finibus. Mauris id sapien in dui efficitur feugiat ut efficitur justo. Mauris quis faucibus ante. Suspendisse interdum sodales purus, sed semper ante venenatis vel. Aliquam rutrum, magna ut faucibus molestie, tortor ante iaculis nisi, in sollicitudin tellus arcu nec ex. Donec eu accumsan orci. - -Integer elementum metus rhoncus hendrerit molestie. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Mauris efficitur ultricies orci eget vulputate. Etiam pharetra sem lacus, eu convallis lacus fringilla vitae. Nunc accumsan volutpat tincidunt. Nam non mauris pretium urna iaculis venenatis. Aenean tempor tortor a urna eleifend maximus. Donec ornare dui non ornare bibendum. Phasellus suscipit posuere lacus ac vestibulum. Pellentesque sit amet eleifend quam, fermentum pharetra diam. Vestibulum in porta sapien. Aenean in rhoncus dui. Quisque euismod, metus non luctus vulputate, sem diam maximus lorem, porttitor volutpat est justo sed sapien. Etiam maximus eros eu elit cursus elementum. - -Nunc ut aliquet dolor. Nam nunc nibh, consequat non mollis eget, dignissim a sapien. Aenean luctus suscipit massa id pharetra. Vestibulum eget velit vitae lectus porttitor blandit vitae eget odio. Pellentesque ullamcorper finibus massa at pretium. Nunc nec sapien at lacus vehicula dictum sed quis elit. In vitae sem urna. Sed porttitor sodales ante, ut varius justo blandit eu. - -Proin faucibus tempus velit, nec bibendum mauris bibendum vitae. Sed auctor, massa feugiat tristique iaculis, massa dolor accumsan eros, feugiat blandit odio diam ut purus. In at magna semper, mollis risus et, viverra lectus. Ut diam nibh, ultrices id tellus eget, venenatis auctor orci. Praesent eget semper orci. Proin vel nisl leo. Nulla sit amet mi quis eros feugiat rutrum sed vel dolor. Ut ullamcorper ultrices est vel tincidunt. Mauris a tortor nec nibh egestas interdum et quis lectus. Etiam vitae rhoncus tellus. Quisque facilisis odio at justo tempus consectetur. - -Duis vitae diam nec odio pulvinar eleifend. Suspendisse convallis lacus sit amet nunc elementum sodales. Integer commodo accumsan lacinia. Aliquam dapibus dolor dolor, a laoreet augue finibus et. Integer faucibus sapien ac interdum lobortis. Vestibulum blandit varius eleifend. Nunc id lobortis ipsum. Nunc porttitor et risus quis interdum. Integer ante lectus, cursus et urna tincidunt, fringilla varius arcu. In bibendum quis turpis efficitur laoreet. Etiam sollicitudin dictum diam, euismod luctus ante varius sed. Cras vel hendrerit risus. Morbi et leo fermentum, tincidunt ligula ultrices, tempus arcu. Quisque non arcu at mauris luctus tempus eu vitae erat. Morbi ut est ac orci vulputate tincidunt id ac lorem. - -Mauris et sodales tellus. Curabitur metus orci, fermentum sed est in, porttitor fermentum mauris. Aliquam mollis elit nulla, in varius lectus tempus eget. Sed lacinia tempus lacus, sed pulvinar nulla congue a. In a congue est, vitae egestas nisi. Aenean interdum, leo ac fermentum suscipit, sapien dui luctus diam, non iaculis massa felis id ligula. Sed euismod placerat nunc quis tempor. Sed eu leo luctus, pretium elit vitae, laoreet dolor. Mauris aliquet ac lectus malesuada sagittis. Suspendisse placerat tincidunt nisi, id semper urna consequat at. Suspendisse sollicitudin eu augue sit amet faucibus. Ut vitae justo sagittis, euismod tortor vitae, ullamcorper dolor. Suspendisse ultricies at enim ac congue. Curabitur auctor neque lectus, nec condimentum sem eleifend et. - -Nullam id sem in risus vulputate facilisis. Sed iaculis ante sit amet iaculis luctus. Suspendisse ut aliquet sapien, eget hendrerit nisi. Ut malesuada velit dui, a egestas odio dapibus a. Phasellus rutrum sit amet dui vulputate ultrices. Maecenas iaculis ex eu tortor lacinia, consequat maximus mi tempus. Vestibulum neque odio, accumsan eu ornare ut, elementum sed lacus. Nulla ipsum leo, consectetur in ullamcorper sit amet, volutpat sit amet nulla. - -Praesent tincidunt, justo et venenatis mattis, enim ex lobortis elit, ut tristique dui eros eu urna. Suspendisse sodales tellus quam, nec hendrerit sem mollis vel. Duis nunc nulla, mollis eu nisl et, sagittis volutpat sem. Fusce dolor turpis, dapibus quis sollicitudin in, semper vitae felis. Fusce id ante velit. Praesent ac ornare velit. Proin non erat quis neque accumsan iaculis. Donec faucibus orci at malesuada finibus. Nam venenatis tempus venenatis. - -Aenean vel risus ultricies, tempor augue id, pretium diam. Aenean at nunc orci. Cras sit amet tortor eget arcu efficitur vulputate. Phasellus sed quam diam. Proin enim felis, luctus nec orci a, porta blandit tellus. Nulla ac erat suscipit, sagittis enim rutrum, scelerisque mi. Nullam vestibulum luctus lectus at cursus. Morbi ut orci lorem. - -Sed est justo, placerat id rhoncus eget, finibus vitae lectus. Aliquam ultricies porta nulla, eget aliquet ligula placerat a. Nulla suscipit laoreet elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc a arcu id nisi tincidunt ultrices vitae pharetra nisl. Quisque facilisis at dui vel dignissim. Etiam imperdiet in libero non venenatis. Vivamus consectetur lectus non ultricies laoreet. Aenean vel laoreet lectus, et laoreet tellus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam ex arcu, consequat eu diam non, tristique faucibus purus. Duis nisi elit, bibendum quis lacinia ac, fermentum a lorem. Suspendisse molestie nulla sed velit accumsan lobortis. Aliquam erat volutpat. In pharetra ultricies urna aliquet congue. - -Quisque ante metus, maximus et dui eget, sollicitudin accumsan risus. Ut malesuada neque et ex facilisis, sed egestas augue pellentesque. Suspendisse potenti. Nunc sapien libero, maximus vitae purus eu, lobortis sagittis diam. Aliquam ultricies vehicula lorem, sit amet vehicula dolor venenatis vitae. Phasellus consequat nisi ut quam tincidunt, eu bibendum nisi bibendum. Vivamus a interdum sapien. Vestibulum interdum pharetra molestie. Sed facilisis dui non velit malesuada, semper rhoncus sapien volutpat. Etiam arcu nisl, dignissim sit amet purus non, tempus finibus orci. Pellentesque viverra faucibus enim, eget dignissim justo accumsan ac. Quisque pellentesque orci nisl, in vestibulum massa auctor a. - -Pellentesque condimentum odio in turpis mattis, ac blandit dui commodo. Sed consectetur purus sit amet quam dapibus placerat nec ut orci. Maecenas mollis ex in mi commodo sodales. Sed est enim, consequat dapibus convallis quis, iaculis non dolor. Donec sagittis fermentum velit ut convallis. Nunc accumsan mi vel enim consequat commodo. Nunc varius id massa nec consequat. Donec purus sem, pellentesque gravida mollis ac, convallis a tellus. Praesent convallis massa lacus, eget pellentesque neque sodales nec. Sed ut velit diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Suspendisse lacus erat, mattis eu tellus sit amet, vehicula bibendum mi. Nam aliquam, nisi dapibus condimentum congue, ante mauris bibendum turpis, a consequat risus arcu eget felis. Aenean dictum, nisi in facilisis sollicitudin, felis diam convallis magna, eu pulvinar nisl odio quis massa. Suspendisse imperdiet tincidunt tortor, sit amet dignissim augue eleifend a. Vivamus consequat mauris vel tellus ullamcorper, in mattis ex auctor. - -Donec eros nunc, maximus non faucibus id, malesuada nec dui. Mauris rutrum accumsan nisi, volutpat tristique justo vulputate posuere. Vestibulum iaculis neque ut sapien sagittis, et volutpat erat finibus. Maecenas volutpat varius orci, ac lobortis justo fermentum vel. Ut nec tortor non erat sagittis dignissim at sed nunc. Sed porttitor dapibus velit a pretium. Proin id placerat magna, fringilla volutpat diam. Cras non ipsum non est porttitor fringilla eget sit amet turpis. Vestibulum vel pharetra nulla. Praesent ultricies mi urna, eget aliquam augue feugiat eu. Aenean efficitur ex ut luctus facilisis. Fusce leo odio, suscipit eget est eget, pretium posuere mauris. Fusce vulputate est sed felis mattis, at sollicitudin magna consequat. Aliquam erat volutpat. Mauris tincidunt tristique diam id tincidunt. Aenean sagittis dictum risus. - -Nunc vehicula mattis justo at placerat. Duis ultrices metus urna, et mollis erat blandit non. Pellentesque tincidunt vitae mi eget placerat. Nullam at condimentum arcu. Vestibulum sit amet orci et metus fringilla pretium ac ut magna. Suspendisse vitae accumsan orci. Donec convallis nunc odio, tincidunt volutpat tellus placerat ac. Phasellus sed bibendum eros, a auctor quam. - -Etiam sagittis accumsan sem ut interdum. Nullam eleifend eget felis in convallis. Donec sagittis enim interdum, suscipit metus ut, cursus orci. Integer vitae dapibus enim. Integer venenatis ligula ut lacus pretium, a pharetra massa posuere. Vivamus eu volutpat ipsum. Mauris tempus volutpat aliquet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ac odio bibendum, dictum neque sed, sollicitudin nulla. - -Quisque vulputate at ligula ut placerat. Morbi mollis ante id felis tempus consequat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Maecenas eleifend odio a lectus sagittis, nec tristique ante egestas. Ut tempor, libero vel mattis interdum, risus quam condimentum turpis, nec viverra massa arcu ut turpis. Duis pharetra vehicula ligula, rhoncus commodo elit rutrum non. Nullam leo nisi, semper quis risus et, faucibus viverra odio. - -Quisque luctus nec arcu ut aliquam. Phasellus commodo ligula ut aliquet accumsan. Cras ac erat ac purus varius convallis. Vivamus nec gravida ipsum. Fusce euismod, massa ut cursus laoreet, eros urna semper odio, sed cursus turpis massa non lectus. Proin ac nisl lobortis, placerat elit in, placerat turpis. Nulla sollicitudin dolor ut sagittis consequat. Aenean augue felis, condimentum nec fermentum at, condimentum non nulla. Quisque et dignissim sapien, ac tincidunt elit. Nunc aliquet lacus id quam placerat suscipit. Mauris rutrum facilisis ipsum, at tristique mi. Sed iaculis eros sem, ut eleifend arcu hendrerit et. Sed euismod dignissim diam interdum ultrices. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed lobortis massa vel ultricies feugiat. Aenean non lobortis erat. - -Aenean commodo euismod massa vitae accumsan. Vivamus ac tristique mauris. Nunc hendrerit sapien a dictum scelerisque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Quisque sit amet eleifend nulla, vel posuere lorem. Phasellus eu porta metus. Pellentesque eget sollicitudin dui, sed commodo magna. Integer tincidunt, diam vitae dapibus tincidunt, diam lorem rutrum erat, ut consequat ex metus sed leo. - -Suspendisse odio metus, suscipit at congue at, consectetur auctor justo. Integer vel rutrum lacus. Quisque a ullamcorper ligula, nec placerat arcu. Ut hendrerit orci sit amet leo pellentesque iaculis. Integer neque erat, dapibus vel pharetra ut, sagittis id diam. Duis eget ex felis. Donec eget odio in sem hendrerit varius. Sed malesuada euismod erat. Sed bibendum malesuada lacus at euismod. Ut ornare pretium imperdiet. Maecenas ut orci id massa lobortis pulvinar vitae et neque. Nullam iaculis dictum sagittis. Vivamus vel finibus libero, eget congue ligula. Etiam faucibus orci felis, eu accumsan enim sollicitudin at. Donec accumsan libero at pharetra malesuada. - -Nullam luctus, metus eu varius dignissim, lectus neque aliquet massa, nec pellentesque ligula ligula vel leo. Cras rutrum eleifend viverra. Sed lobortis eget erat tincidunt imperdiet. Nullam ac fringilla urna. Fusce pretium, lorem ac mollis semper, sem felis ornare odio, eget feugiat dolor orci ut dui. Curabitur ac odio mollis, convallis ex eget, hendrerit nulla. Nunc vel turpis nisl. Ut neque urna, fermentum interdum est non, lobortis luctus elit. Phasellus bibendum malesuada gravida. Phasellus lacinia scelerisque erat sit amet iaculis. Nulla in ultricies lectus. - -Praesent blandit ante congue urna eleifend porta. Nulla sagittis urna quis molestie viverra. Praesent in lorem porttitor, vestibulum orci hendrerit, faucibus enim. Donec sapien enim, porta at sapien eget, condimentum mattis dui. Aliquam rhoncus dui elit, non laoreet ex condimentum ut. Nam arcu sem, suscipit quis diam vel, pharetra bibendum ligula. Duis vel ipsum gravida libero iaculis feugiat. Aliquam congue augue mi, gravida dignissim ipsum commodo id. - -Suspendisse vel tincidunt odio. Donec quis hendrerit felis, sed sagittis mi. Cras ultricies justo et ligula dignissim, ac porta nisi maximus. Suspendisse vitae facilisis sapien, ut consequat lacus. Morbi dapibus in diam in tempus. Curabitur viverra leo libero, et molestie lacus interdum eu. Donec ut odio sit amet nisl viverra fermentum eget eget sem. Donec id ante consectetur, porta velit a, consectetur mauris. Donec imperdiet dolor turpis, at maximus purus volutpat ac. Ut hendrerit eros sit amet mi porttitor, nec ultrices purus posuere. Etiam elementum mauris ligula, nec viverra neque luctus quis. - -Donec ultrices lectus nec sollicitudin egestas. Mauris ac lacinia mauris. Proin accumsan leo et quam venenatis mattis. Pellentesque laoreet interdum feugiat. Phasellus arcu justo, blandit vel faucibus vel, maximus in sapien. Mauris semper, leo quis accumsan tristique, arcu massa tempus sapien, nec luctus turpis mi id enim. Donec egestas consectetur augue non viverra. Mauris pellentesque turpis non ante posuere, bibendum laoreet nunc semper. Aliquam accumsan semper nulla, sed tincidunt nulla pretium id. Mauris ut sapien vel felis pharetra congue. Curabitur ac euismod risus. - -Integer a lectus lorem. Phasellus a sodales odio. In consectetur bibendum ex eu blandit. Nam eu feugiat sapien, id efficitur orci. Quisque fermentum sem eget orci mattis tristique. Donec sit amet pharetra massa. Pellentesque molestie, neque a viverra dignissim, magna quam sagittis ligula, at tincidunt tellus risus quis enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent scelerisque faucibus nunc eget consequat. Fusce aliquet egestas eros quis auctor. - -Sed aliquam mauris non lacus rhoncus, id eleifend nunc ullamcorper. Nulla cursus erat non purus gravida, porta ultricies libero vestibulum. Nulla sagittis metus eleifend porttitor molestie. Suspendisse rutrum consequat ullamcorper. Ut pellentesque dolor eget gravida cursus. In posuere, ipsum nec pulvinar varius, massa odio aliquam mauris, vitae facilisis ligula orci quis augue. Pellentesque a tortor ultricies, ullamcorper libero ut, ullamcorper augue. Nullam id felis non dui viverra placerat id eu metus. Aenean ac dui condimentum, dapibus tellus non, blandit ex. Maecenas et odio vitae massa gravida consequat eu sed nunc. Nullam laoreet, nisi sed imperdiet laoreet, sapien nisl aliquam augue, vitae ornare velit ligula id neque. Ut tincidunt, lacus at porta ultricies, tellus felis fringilla dolor, tempus posuere nibh nisi eu felis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; - -Proin ac nulla turpis. Aenean pretium congue viverra. Donec vitae sem venenatis, luctus lacus non, rhoncus purus. Etiam sit amet lorem consequat, mollis nibh quis, congue neque. Sed vulputate justo quis porttitor malesuada. Nullam id ex sit amet ante aliquet tincidunt. Praesent pretium maximus orci ut cursus. - -Mauris vitae aliquam magna. Sed quis ante cursus, dapibus risus vel, tristique nisi. Fusce suscipit porta quam, vel vestibulum ligula dapibus vel. Nunc consequat eu mi at aliquam. Donec sit amet dolor nulla. Praesent gravida tellus enim, in porttitor sem scelerisque vitae. Nullam consequat, nunc eu iaculis tempor, sem augue placerat ex, sed ultrices erat nisi a tellus. Nunc tortor nisl, feugiat lobortis rutrum ut, pharetra ac nulla. Donec eu tortor eros. Proin maximus nisl sit amet velit accumsan facilisis. Praesent posuere tristique faucibus. Vivamus nec hendrerit tellus, id vulputate eros. Aliquam a lacus efficitur, consectetur ipsum eu, ullamcorper ex. Aliquam erat volutpat. - -Vivamus ultrices scelerisque elit, ac ultrices erat consequat id. Sed ac aliquet nulla. Pellentesque vel justo magna. Suspendisse dictum, sem eget ullamcorper iaculis, sapien metus tristique mauris, et dictum elit eros sit amet ex. Mauris placerat odio eu ligula egestas sagittis. Integer vel turpis lacinia tortor molestie egestas et id dui. Donec porta interdum justo, ac ornare lacus dictum at. Quisque mollis, odio sed eleifend rhoncus, purus turpis fringilla quam, ac fermentum enim ante sed massa. - -Vestibulum neque ipsum, congue vel lacus et, faucibus mattis sem. Ut venenatis, tortor non tincidunt mollis, sapien leo suscipit dolor, posuere tristique libero massa eu augue. Donec eu luctus velit. Nulla egestas, tellus sed commodo gravida, metus nibh placerat sem, nec mollis nulla nunc id lorem. Nulla facilisi. Donec ut tincidunt sapien. Quisque dapibus convallis interdum. Nulla tempor malesuada turpis non vehicula. In nec tortor ultrices, vestibulum odio non, ultrices sapien. Pellentesque mattis feugiat arcu, id tincidunt leo malesuada at. Fusce vitae pretium ante. Pellentesque eu augue non lectus efficitur rutrum. Cras vitae nisl elementum, congue est eget, faucibus quam. Donec in dapibus metus. - -In imperdiet metus eget leo rhoncus, et pharetra dui laoreet. Morbi arcu augue, eleifend a est eget, gravida suscipit risus. Ut sodales ex vel eleifend bibendum. Nam varius nisl sit amet dolor porta pulvinar. Ut mollis purus sit amet tempus vulputate. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Curabitur a lacinia velit, in feugiat elit. Sed ut vestibulum lorem. Proin fermentum elit quis venenatis placerat. Cras sit amet congue tortor. Curabitur eget sapien massa. Suspendisse in turpis arcu. - -Quisque vitae risus scelerisque, rutrum tellus et, posuere massa. Vestibulum vitae rhoncus libero, vel ultrices elit. Vivamus nec ipsum ac urna tristique sollicitudin non nec tellus. Donec bibendum dui eget ipsum laoreet, sed tincidunt tellus laoreet. Proin in rhoncus nibh. Integer vel quam id felis interdum aliquet. Nulla tempus volutpat consequat. Suspendisse nec massa malesuada, finibus est non, eleifend odio. Aliquam libero turpis, consequat vel pellentesque vitae, laoreet vitae tellus. Donec finibus diam id accumsan luctus. - -Cras at lorem ligula. Praesent tincidunt justo eu purus suscipit ornare. Morbi malesuada dui non ligula congue, ac fringilla diam commodo. Proin vel arcu non tortor tempus lacinia eget ut arcu. Sed tristique lorem et purus tristique, nec ultrices tortor lacinia. Nunc id nibh id mauris volutpat rutrum at in nisl. Cras in cursus lectus, nec fermentum dolor. Morbi at tempus tortor. Aenean pulvinar ex erat, vitae aliquet nisl finibus at. Praesent pellentesque tempor imperdiet. Aliquam eu aliquet purus. Maecenas hendrerit volutpat ultrices. Aliquam metus tellus, porttitor sit amet sem ut, bibendum ultricies urna. - -Cras accumsan lacus ac ullamcorper tincidunt. Fusce imperdiet nunc vel diam condimentum, viverra dignissim magna mollis. Aliquam rutrum gravida libero non congue. Morbi pretium, nulla ac eleifend sodales, dolor orci feugiat ipsum, ut posuere dolor augue quis mauris. Cras tincidunt enim dui, at porta orci consectetur vel. In id purus ante. Donec luctus mattis dictum. Curabitur tortor orci, accumsan finibus sodales ac, maximus eget purus. Suspendisse efficitur vitae dui ut faucibus. Integer bibendum ipsum massa, sagittis posuere sapien elementum at. Vivamus tristique at quam id congue. Maecenas eu augue vel erat varius congue at id quam. - -Sed tristique nisl elit, finibus venenatis urna facilisis id. Integer cursus interdum justo, et viverra diam interdum quis. Sed in vestibulum arcu. Pellentesque elementum ex vitae diam tincidunt bibendum. Nunc eu mi suscipit, faucibus metus sit amet, tincidunt dolor. Integer vulputate sodales luctus. In ut scelerisque sem, sed egestas eros. Etiam lobortis diam ac augue pulvinar, eu aliquam massa blandit. - -In dui magna, faucibus at purus in, sagittis dapibus diam. Cras commodo massa tortor, eu consequat libero placerat eu. Ut mauris metus, facilisis et erat sed, rhoncus maximus nisl. Sed ac aliquet nisi. Aenean in rhoncus velit. Sed mollis, nunc vitae imperdiet pharetra, arcu ex pulvinar nibh, ac rhoncus lectus enim nec erat. Donec rutrum molestie nibh et lobortis. Proin nec nibh in ex pretium ultrices non et arcu. Nam consequat tempor viverra. Fusce vitae pharetra diam, ac bibendum ex. Quisque cursus, tellus ac interdum accumsan, lectus nunc lobortis elit, id varius orci diam a metus. Etiam at mauris vitae metus ullamcorper bibendum nec sed leo. Pellentesque eu arcu varius, imperdiet ligula non, maximus tellus. Aliquam erat volutpat. - -Curabitur fringilla ligula in consectetur varius. Donec eget tortor ex. Nunc quis lacus lobortis, vulputate lorem eu, scelerisque sapien. Aliquam non pretium ante. Aenean maximus ornare eros, ut condimentum nibh pulvinar eu. Morbi venenatis sollicitudin justo, non tincidunt ligula lacinia vitae. Nam vitae quam ligula. Fusce in finibus urna, a laoreet dui. Quisque urna arcu, aliquam sed dolor quis, pellentesque convallis risus. Vestibulum faucibus maximus justo, eget gravida elit tincidunt quis. Cras in arcu dui. Aliquam eu nibh gravida, lacinia ipsum sit amet, scelerisque nisl. Integer luctus sagittis mattis. Etiam dolor sapien, dapibus at neque nec, rhoncus scelerisque odio. Pellentesque laoreet justo ac augue eleifend placerat. In vitae hendrerit ex. - -Nam sit amet dui in libero volutpat lacinia. Quisque vel luctus purus. Aenean arcu magna, luctus sed interdum vitae, elementum quis eros. Mauris aliquet diam mi, ut tincidunt magna consequat quis. Cras vitae lacus posuere urna pretium lacinia. Fusce ultricies maximus hendrerit. Donec et augue quis lectus lacinia accumsan. Nunc tortor neque, vestibulum porta bibendum id, varius quis sapien. Vestibulum et ultricies odio, id pharetra lacus. Suspendisse sollicitudin nisl nec justo fermentum, vitae volutpat lectus aliquam. Duis blandit quam at erat sodales, ut suscipit erat aliquet. Fusce faucibus dui enim, eu varius neque imperdiet id. Vestibulum dapibus neque libero, vitae viverra erat mattis id. Quisque ullamcorper diam ut porta finibus. Donec faucibus, diam quis pellentesque euismod, enim velit mattis justo, at ultricies urna enim ac leo. - -Fusce fringilla dolor sit amet ante pharetra ornare. Aliquam erat volutpat. Donec laoreet, lorem nec pulvinar ullamcorper, urna justo bibendum nunc, in laoreet nisl tortor vel justo. Donec a magna molestie, gravida tortor a, malesuada tortor. Praesent vestibulum ultricies metus, vitae fringilla tellus viverra sed. Suspendisse sed odio sit amet nibh ultricies interdum accumsan egestas ex. Fusce ac lacus arcu. Ut ultricies at justo elementum mattis. Nullam augue tortor, lacinia tempor turpis a, porta finibus neque. Donec id diam tristique arcu vestibulum fermentum vitae id tellus. Vestibulum sit amet ligula neque. Aliquam neque ante, ultricies nec diam malesuada, feugiat consequat risus. Pellentesque ac varius orci. - -Etiam nunc ex, laoreet eget eros ut, ultricies fermentum sem. Nullam venenatis diam a lectus vulputate luctus. Integer laoreet libero et tellus fermentum, ut maximus neque tristique. Ut in odio posuere, lobortis augue non, tristique orci. Quisque vel ultricies mauris, non consectetur enim. Sed dictum vitae felis vel scelerisque. Vestibulum id viverra leo. Etiam libero neque, cursus eu augue eget, fringilla luctus arcu. Donec aliquet maximus ipsum, ut faucibus velit posuere non. Praesent finibus erat nec massa cursus, ac blandit ante bibendum. Ut vel magna pretium, interdum quam non, sodales erat. - -Sed et orci nunc. Vestibulum elit sem, dapibus id dictum eu, interdum sit amet justo. Morbi interdum hendrerit tempus. Quisque id magna justo. Donec sollicitudin, nunc a efficitur hendrerit, mi neque semper nisl, sed consectetur urna justo vel velit. Nullam at sodales eros. Donec eu nunc vel dui tristique blandit ut eget enim. - -Nulla velit neque, euismod vitae lectus vel, finibus egestas magna. Ut sed justo sed erat pretium sollicitudin nec nec felis. In mattis augue ut erat mollis, in posuere purus tincidunt. Vivamus rhoncus sem at purus gravida, et vestibulum justo elementum. Aenean sit amet elit ac ligula tincidunt varius. Donec feugiat, orci vel interdum lobortis, elit magna fringilla nulla, non euismod urna dolor auctor est. Mauris laoreet sagittis ligula, et semper nisi finibus et. Donec pharetra nibh in eros iaculis aliquam. Nam malesuada ornare elit, ac semper massa molestie sed. Maecenas laoreet diam eu ipsum rutrum, ut varius enim bibendum. Donec luctus dolor eu ipsum varius, malesuada condimentum sapien tempor. - -Aenean vel rhoncus lacus, sit amet faucibus nisl. Aliquam laoreet nisl et diam eleifend molestie non vel lectus. Duis tortor augue, congue luctus malesuada sit amet, posuere mattis mauris. Aliquam quis ligula ut ipsum placerat luctus. Aliquam accumsan mauris ligula. Sed quis lacinia augue. Proin feugiat diam lectus, vel elementum libero varius non. Proin porta neque sed dolor gravida venenatis. Donec vitae euismod nibh. Morbi mattis, enim quis mattis dignissim, lacus tellus tristique nisl, in luctus leo nisl vel elit. Sed posuere justo in iaculis mattis. - -Curabitur in felis et metus blandit auctor ac in nulla. Vestibulum dictum nulla posuere augue ultrices, non gravida velit placerat. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In malesuada pharetra ante sit amet sodales. Suspendisse et tincidunt lorem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Integer viverra justo ut nisi elementum dictum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nullam dictum tincidunt venenatis. Aliquam neque urna, pellentesque vitae ultrices eget, lobortis sed augue. Etiam at ex ultricies, egestas dui sit amet, laoreet lorem. Ut nulla velit, bibendum in arcu sed, dignissim mattis odio. Suspendisse varius dictum vulputate. Sed nisl tellus, eleifend quis augue ac, malesuada elementum arcu. - -Morbi dignissim laoreet imperdiet. Vivamus tincidunt turpis quis posuere mattis. Nam mollis, elit eget lacinia auctor, lorem magna mattis elit, eget pulvinar mauris quam sed turpis. Suspendisse nibh libero, volutpat nec metus tempus, euismod lobortis sapien. Pellentesque interdum urna a leo dignissim lobortis. Suspendisse quis diam pretium, vehicula augue eget, sodales nibh. Cras dignissim lorem ac velit mollis, ac hendrerit urna varius. Fusce venenatis elit ut mauris volutpat, sed imperdiet arcu pellentesque. - -Phasellus auctor nec ex eu tempor. Quisque ut elit eget ligula euismod pretium. Quisque ac lectus et est fringilla convallis. Mauris tincidunt turpis non ullamcorper suscipit. Suspendisse consectetur lacus at lacinia iaculis. Morbi purus metus, tincidunt ac ultricies a, rhoncus varius magna. Suspendisse mattis vehicula enim at ultrices. Phasellus eu ipsum nisi. Duis dignissim massa non convallis rutrum. Sed placerat consectetur ex, quis malesuada lectus cursus a. Nulla non mi egestas, scelerisque urna vitae, pulvinar libero. Vestibulum pretium purus at odio pharetra, ut egestas nibh pretium. - -Nulla facilisi. Duis in augue eu elit accumsan imperdiet a a odio. Curabitur vitae ante in velit condimentum venenatis id vitae mi. Sed in ante fringilla, mollis metus vel, consectetur nisi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla non dolor congue neque dapibus varius. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam sit amet convallis velit. Praesent a efficitur massa, non finibus ex. Maecenas pharetra elit eget sem rhoncus, vel mollis eros pretium. Donec vehicula dolor a nulla ornare, at lacinia ex venenatis. - -Suspendisse aliquam blandit est, rutrum luctus turpis cursus vitae. Pellentesque in magna eget risus egestas rhoncus. Maecenas sed odio non ex interdum eleifend mollis convallis neque. Quisque a orci fringilla, maximus arcu id, rhoncus magna. Aenean at aliquam est. Aenean faucibus consequat tempus. Aliquam congue viverra ante, non aliquet sapien viverra ac. Etiam ullamcorper neque in metus malesuada suscipit. Curabitur quis placerat mi. - -Integer at mauris ut lacus vulputate mattis sit amet at purus. Proin arcu nisl, lacinia eu venenatis ac, mattis ut velit. Suspendisse elementum mattis mauris, in faucibus lorem. Suspendisse bibendum nulla in commodo ultrices. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus iaculis volutpat mattis. Pellentesque ut ex interdum, consequat diam egestas, blandit nisi. - -Nullam odio turpis, pretium ac ante porttitor, fringilla lacinia ante. Fusce commodo quam vel dui blandit, nec eleifend tellus aliquam. Fusce sodales efficitur urna, vitae vehicula erat lacinia eu. Praesent maximus nunc id sapien feugiat, in euismod nibh rutrum. Vivamus at volutpat libero. Praesent quis mattis mi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In hac habitasse platea dictumst. Integer quam odio, pharetra nec molestie porttitor, auctor at ligula. Fusce id turpis non tellus facilisis tincidunt. - -Morbi lorem risus, sagittis sit amet venenatis sit amet, lacinia at dui. Vestibulum volutpat, urna ac ultrices efficitur, tortor augue convallis dolor, nec commodo arcu arcu id ante. Quisque facilisis mauris in molestie tincidunt. Fusce aliquet sagittis interdum. Vivamus sit amet odio nec augue volutpat placerat non nec nibh. Nunc auctor purus eu dignissim euismod. Ut sollicitudin urna et erat placerat, vel accumsan lectus malesuada. Proin fringilla magna sit amet massa dignissim lobortis ut ac felis. Donec ornare dignissim tristique. Phasellus semper, est sit amet vestibulum suscipit, arcu est elementum nulla, in sagittis sapien ligula a sem. - -Morbi at justo molestie, gravida lacus quis, placerat est. Mauris non libero ultricies, convallis dui et, scelerisque est. Nunc iaculis, libero sed ullamcorper feugiat, eros ante lacinia ex, vel efficitur velit arcu eu metus. Quisque fermentum blandit fermentum. Vestibulum quis ante in dolor porta efficitur eu nec libero. Mauris vitae ex mattis mi fringilla pharetra. Donec eget est nec lorem pretium pretium. Fusce eget risus eros. Vivamus eu nulla et libero tincidunt malesuada at ac dolor. Donec facilisis tempus sem, in posuere orci sagittis vel. Donec pellentesque sapien mi, eu tempus enim tempor vel. Cras consequat purus sed ornare vehicula. Nunc molestie eu ex et fermentum. In vestibulum, arcu nec cursus efficitur, leo ex fringilla neque, in molestie nisl diam mattis sapien. Nunc et semper ante. - -Sed pellentesque laoreet sollicitudin. Ut sed ex eu sapien bibendum posuere. Mauris non sem dui. Fusce sit amet nulla a tortor blandit blandit. Proin venenatis ligula quis sapien viverra accumsan. Proin ac turpis a dolor rhoncus facilisis eget vel ipsum. In gravida porttitor quam, quis dignissim lacus laoreet porta. Nulla ante risus, luctus at pharetra vitae, vehicula id elit. Etiam sagittis dui vitae metus mollis, in porttitor elit fringilla. Duis dapibus dignissim faucibus. Duis elementum facilisis leo eget ornare. Cras feugiat libero at efficitur tempus. Suspendisse sit amet laoreet nunc, at faucibus tellus. Vestibulum in ipsum ac risus vehicula porta. Fusce maximus libero mattis risus aliquam condimentum. Fusce ut consectetur risus, a fermentum arcu. - -Curabitur hendrerit eu lacus non congue. Fusce ac dictum magna. Nulla elit ante, sodales sed lobortis sodales, fermentum vitae urna. Cras pharetra vel sapien dignissim ullamcorper. Phasellus auctor elementum suscipit. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec lacus odio, venenatis lobortis ullamcorper et, tempor nec augue. - -Mauris scelerisque vestibulum metus, vitae porta sem pharetra nec. Nam tempus dolor sed turpis lobortis sodales. Vestibulum nec mauris auctor velit pellentesque vestibulum tristique vel eros. Vivamus vel justo vel dui lobortis dapibus a at sapien. Maecenas ac metus nec tortor vulputate laoreet in nec augue. Aliquam tellus leo, imperdiet non dapibus a, facilisis non tellus. Suspendisse condimentum tincidunt lacus, ut scelerisque diam viverra nec. Etiam ante mauris, viverra sit amet vulputate ut, porta a ligula. Donec sit amet luctus massa. Morbi iaculis, tortor sit amet ullamcorper iaculis, mauris augue feugiat risus, eu bibendum dui tellus nec purus. In gravida sodales egestas. Sed tincidunt pellentesque tincidunt. In non neque non erat mattis iaculis. Cras et ipsum justo. Phasellus ex elit, dictum ut nulla et, consectetur auctor lectus. - -Donec vitae velit nisi. Cras lobortis a nisi eu molestie. Nunc mattis arcu id neque aliquam, quis sollicitudin lectus lobortis. Donec nec convallis purus, eget sagittis sapien. Maecenas viverra ullamcorper quam in vehicula. Pellentesque imperdiet nisl in elit varius, eu fringilla orci ullamcorper. Donec blandit ultrices volutpat. Nulla nec tempor mi, ac finibus nisl. Phasellus et urna non lorem tincidunt pulvinar nec nec ligula. Ut hendrerit volutpat diam. Morbi vel sollicitudin libero, ac molestie purus. Nulla sit amet metus ut leo molestie faucibus. Nunc porttitor, est in pulvinar vestibulum, justo nibh placerat ipsum, at interdum metus mi vitae dui. Curabitur in egestas nunc. Ut malesuada ipsum sed velit rutrum accumsan ac in quam. - -Quisque ex est, fermentum vitae placerat sit amet, porta ac nulla. Morbi accumsan tellus quis dolor cursus, in elementum sapien condimentum. In non dui ultrices, sagittis dui quis, blandit nunc. Curabitur blandit justo sed tincidunt imperdiet. Sed a odio aliquet, gravida augue non, faucibus magna. Phasellus pulvinar volutpat sem, ut bibendum nibh semper eu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur at tellus in nulla vulputate feugiat vitae id dui. Suspendisse nec velit ac arcu fringilla venenatis. Duis urna massa, eleifend sit amet venenatis in, lobortis ac odio. Aliquam blandit vitae ipsum quis tempor. Curabitur a interdum sapien, vitae tempus arcu. Maecenas condimentum, justo vel rhoncus facilisis, lectus nisl commodo massa, eget maximus odio enim sit amet libero. Morbi at erat purus. Aenean dictum diam ut lorem venenatis consectetur. Praesent sit amet dolor eget lectus mollis tempus ac sit amet diam. - -Maecenas at convallis magna, nec iaculis metus. Quisque pulvinar ultricies vehicula. Aliquam quis tortor in elit semper tincidunt. Nullam aliquet ex dapibus lorem mattis gravida. Suspendisse volutpat, nibh sit amet efficitur egestas, lorem justo convallis enim, nec efficitur nunc mauris vel nisl. Sed condimentum ac justo sit amet accumsan. Suspendisse ultricies dolor nulla, at euismod nisl semper eu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. - -Donec hendrerit, ex non tincidunt molestie, lacus mauris euismod risus, vitae suscipit sem orci et risus. Donec sollicitudin eros non ante gravida aliquam. Etiam at augue risus. Mauris vitae ante ac eros sodales ornare non in enim. Fusce consequat tortor urna. Aenean condimentum neque quis viverra interdum. Aliquam ultricies convallis ipsum, nec lacinia massa bibendum nec. Suspendisse ac ultricies diam, sit amet mollis mi. Mauris at tincidunt elit. Morbi fringilla nisl ligula, nec scelerisque magna viverra non. Aliquam aliquam porttitor eros, cursus congue eros maximus vel. - -Pellentesque mattis sapien eu scelerisque feugiat. In hendrerit rutrum sem vel convallis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed varius velit et erat lacinia ornare ut sed nibh. Nam imperdiet hendrerit urna, ultricies dapibus elit blandit sit amet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam porttitor, purus scelerisque ornare aliquam, massa nulla semper erat, sit amet cursus diam risus vitae mauris. Ut rhoncus pellentesque elementum. - -In a ipsum in dui venenatis scelerisque ut a ante. Quisque tincidunt turpis vitae arcu rhoncus, quis maximus nisl venenatis. Sed ac tortor et nibh aliquam posuere. Praesent ipsum tortor, scelerisque nec sem vitae, efficitur mollis lacus. Sed dui tellus, mattis eu turpis in, accumsan mattis elit. Donec eu nunc dolor. Ut ornare dui quis tortor hendrerit ornare. Sed finibus ornare nulla, vitae vehicula urna vestibulum at. Integer fermentum diam sit amet congue suscipit. Donec massa lectus, dignissim ut metus eu, vehicula dictum nisi. - -Phasellus ligula tortor, consequat a urna quis, interdum congue libero. Sed condimentum sapien sed gravida tristique. Suspendisse vel condimentum orci. Pellentesque pharetra hendrerit malesuada. Morbi commodo ut quam et iaculis. Ut finibus dapibus metus, ut varius orci dapibus non. Nunc efficitur efficitur ultricies. Sed laoreet quam vel volutpat laoreet. Nullam placerat suscipit neque at aliquet. Curabitur luctus nisi eget rutrum interdum. Nam lacinia turpis sed massa euismod tincidunt. Aenean odio nisi, hendrerit et lacus et, sodales mollis leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Donec posuere erat nibh, a tristique quam bibendum sed. - -Nulla vestibulum leo laoreet, mattis purus at, tempus dolor. Morbi nibh lacus, vehicula eu nibh vel, pellentesque pulvinar magna. Suspendisse urna lorem, pretium non lorem eu, maximus porttitor eros. Integer in purus consectetur, pretium massa ac, bibendum quam. Vivamus venenatis finibus feugiat. Donec ornare neque eu convallis varius. Nullam sodales, tortor id semper varius, nibh odio tincidunt mi, vitae gravida purus erat nec libero. Nam varius tincidunt maximus. Nunc quis metus a diam porta tincidunt ac quis ex. Nunc bibendum nisl tortor, interdum luctus augue suscipit et. Phasellus pretium egestas aliquam. Maecenas in libero enim. - -Duis lacinia dolor eu nunc viverra, quis blandit nunc posuere. Suspendisse ultricies ultrices tincidunt. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin imperdiet finibus dui, sed vehicula ligula semper vitae. Vestibulum elementum a ante quis vestibulum. Integer sit amet ullamcorper sapien. Cras sapien odio, commodo at consequat non, auctor volutpat ante. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas ut congue urna, eu iaculis lectus. Curabitur consequat, lectus non pharetra ultricies, massa sapien pellentesque lectus, eu laoreet elit turpis et sapien. - -Pellentesque vel vehicula arcu. Proin aliquam hendrerit turpis aliquam ultrices. Nunc pellentesque urna tempor ipsum porta faucibus. Morbi lobortis quam eget lacus tempor, tempor commodo justo molestie. Suspendisse cursus turpis diam, eget pulvinar velit dignissim ut. Donec vulputate sodales justo ac hendrerit. Donec ultricies mauris id lorem bibendum pulvinar. In sed dictum ex. Phasellus sit amet lacus eget risus scelerisque congue id vitae ex. Vestibulum pellentesque rhoncus lacus, non lobortis dui faucibus non. Cras efficitur dictum rutrum. Pellentesque euismod id felis sit amet faucibus. Maecenas tristique urna ac mi tristique, ac varius ante cursus. - -Vestibulum eu mi sed felis consequat fermentum. Duis sit amet nulla a diam maximus tristique. Sed in turpis diam. Cras sodales egestas massa. Maecenas eget dui tellus. Quisque vulputate tellus sem, non dictum nisi feugiat eget. Suspendisse interdum urna id quam facilisis tristique. Proin dolor ex, vestibulum quis dui ac, dignissim blandit dolor. Sed nec interdum ante. Nullam fermentum iaculis augue ut sodales. Mauris dapibus interdum maximus. Aliquam laoreet nisl et tellus congue, nec molestie justo hendrerit. Suspendisse eros libero, semper a nulla a, placerat convallis leo. Ut ornare turpis velit, id ultrices nulla lobortis non. - -In hac habitasse platea dictumst. Etiam condimentum, nunc vitae faucibus mattis, diam neque accumsan urna, eu tincidunt augue odio sit amet metus. Quisque at mauris eget purus ultricies ultricies vel eget ligula. Phasellus tortor urna, vestibulum eget tincidunt ut, malesuada nec ligula. Phasellus congue dignissim erat ut lacinia. Duis massa lacus, placerat quis ipsum sit amet, maximus ornare velit. Nulla commodo, urna maximus vehicula suscipit, arcu elit commodo leo, ut luctus mauris ipsum sit amet turpis. Donec ornare dignissim tincidunt. Duis efficitur tristique eros, bibendum mattis lorem auctor sit amet. Donec fermentum imperdiet venenatis. Praesent scelerisque purus in scelerisque dignissim. Nulla eu rhoncus nisl. - -Integer quis orci in nisl egestas porta vel efficitur ligula. Sed urna nibh, efficitur ac odio eget, rhoncus viverra magna. Nunc at luctus velit. Nullam laoreet, diam non semper faucibus, purus nisl sagittis mauris, in fringilla dolor sapien et massa. Duis rhoncus lectus nibh, in molestie ante consequat vitae. Fusce a enim vel justo posuere tempor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque eget mi id nulla tristique pellentesque. Aenean lacinia metus lacus, eu viverra turpis interdum at. Aliquam ut convallis mauris. Donec scelerisque ex nulla, id convallis magna vehicula auctor. Maecenas aliquam, felis dapibus convallis congue, odio nisl accumsan dui, vel molestie ex massa quis metus. Vestibulum id vulputate justo. Sed aliquet, est quis varius scelerisque, erat lorem mattis lorem, in sollicitudin risus lorem a justo. Praesent fermentum posuere turpis, vitae fermentum velit rhoncus ut. - -Quisque pellentesque urna vehicula est vestibulum blandit. Donec molestie sagittis erat, sed interdum est dignissim a. Fusce accumsan orci mauris, quis feugiat sem consequat sit amet. Nulla ultricies euismod molestie. Proin eleifend sodales diam vitae facilisis. Nullam sit amet urna tortor. Sed laoreet sapien eu quam cursus eleifend. Praesent vulputate metus turpis, quis aliquam enim semper ut. Donec dignissim libero quis magna euismod faucibus. Nulla aliquam ante id enim consectetur placerat. - -Fusce ullamcorper tellus id pulvinar dignissim. Nam sagittis luctus ipsum, non dictum urna pulvinar quis. Nunc hendrerit quam eu dui egestas, vitae semper sem vestibulum. In efficitur ligula ante, nec faucibus libero tristique ac. Suspendisse potenti. Ut vestibulum massa erat. Proin ornare mi et est varius, in fringilla mi laoreet. Sed libero nisi, gravida sed felis sit amet, bibendum semper risus. Curabitur luctus nunc vulputate elementum cursus. - -Aliquam feugiat, est sed congue fermentum, nibh dolor suscipit nunc, sed porttitor velit dui quis eros. Nam aliquet neque sed faucibus sagittis. Ut iaculis dictum odio in vestibulum. diff --git a/fileTransfer/clients.goldoutput/client111.txt b/fileTransfer/clients.goldoutput/client111.txt deleted file mode 100644 index 65de192..0000000 --- a/fileTransfer/clients.goldoutput/client111.txt +++ /dev/null @@ -1,3 +0,0 @@ -Sent progress callback for "LoremIpsum.txt" {completed: false, arrived: 0, total: 109, err: <nil>} -Sent progress callback for "LoremIpsum.txt" {completed: true, arrived: 109, total: 109, err: <nil>} -Completed sending file. diff --git a/fileTransfer/devnet.txt b/fileTransfer/devnet.txt deleted file mode 100644 index 922c0de..0000000 --- a/fileTransfer/devnet.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.125.145:11420 -35.163.143.85:11420 -34.218.59.127:11420 diff --git a/fileTransfer/gateway-1.yaml b/fileTransfer/gateway-1.yaml deleted file mode 100644 index 401f3c9..0000000 --- a/fileTransfer/gateway-1.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-1.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10060" - -# The listening port of this gateway -Port: 1060 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-0.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/fileTransfer/gateway-2.yaml b/fileTransfer/gateway-2.yaml deleted file mode 100644 index a498cbb..0000000 --- a/fileTransfer/gateway-2.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-2.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10061" - -# The listening port of this gateway -Port: 1061 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-1.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/fileTransfer/gateway-3.yaml b/fileTransfer/gateway-3.yaml deleted file mode 100644 index 9f36de1..0000000 --- a/fileTransfer/gateway-3.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-3.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10062" - -# The listening port of this gateway -Port: 1062 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-2.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/fileTransfer/mainnet.txt b/fileTransfer/mainnet.txt deleted file mode 100644 index 3fbbb1c..0000000 --- a/fileTransfer/mainnet.txt +++ /dev/null @@ -1,74 +0,0 @@ -"65.21.170.29:22840" -"88.198.2.52:22840" -"188.40.70.250:22840" -"185.218.125.248:22840" -"31.202.122.131:22840" -"173.249.60.80:22840" -"65.21.76.35:22840" -"195.201.171.211:22840" -"65.21.221.236:22840" -"37.97.220.130:22840" -"159.148.31.238:22840" -"nodochile.myddns.me:22840" -"94.130.10.38:22840" -"188.240.52.205:22840" -"212.38.189.73:22840" -"xerxesgw.caius.ovh:22840" -"46.4.50.57:22840" -"103.195.101.143:22840" -"49.12.45.179:22840" -"167.172.88.140:22840" -"5.189.176.210:22840" -"135.181.213.94:22840" -"213.136.70.8:22840" -"194.163.163.77:22840" -"65.21.204.13:22840" -"88.119.195.16:22840" -"88.198.2.51:22840" -"181.43.194.251:22840" -"159.148.31.232:22840" -"65.108.52.154:11098" -"138.201.37.166:22840" -"kmil.go.ro:22840" -"37.97.169.197:22840" -"144.76.65.107:22840" -"178.18.253.13:22840" -"162.55.131.110:22840" -"91.230.111.8:22840" -"109.98.108.250:22840" -"15.161.170.171:22840" -"37.97.224.110:22840" -"54.79.206.112:22840" -"144.126.149.30:22840" -"194.163.171.145:22840" -"37.97.220.129:22840" -"194.163.170.125:22840" -"65.21.143.248:22840" -"149.210.229.175:22840" -"149.210.192.112:22840" -"149.210.192.111:22840" -"65.21.234.163:22840" -"149.210.229.223:22840" -"173.249.44.133:22840" -"75.119.130.123:22840" -"194.233.77.127:22840" -"66.94.99.187:22840" -"144.91.99.106:22840" -"185.214.134.207:22840" -"95.217.207.236:22840" -"95.217.206.164:22840" -"173.212.233.67:22840" -"37.55.17.106:22840" -"65.108.3.162:22840" -"186.106.188.155:22840" -"109.237.108.117:22840" -"65.108.42.168:22840" -"65.21.234.86:22840" -"65.21.50.177:22840" -"194.163.189.115:22840" -"135.181.212.170:22840" -"23.88.104.166:22840" -"103.107.182.192:22840" -"65.108.2.254:22840" -"94.130.136.136:22840" -"162.55.100.14:22840" diff --git a/fileTransfer/network.config b/fileTransfer/network.config deleted file mode 100644 index 61a12cf..0000000 --- a/fileTransfer/network.config +++ /dev/null @@ -1,26 +0,0 @@ -localhost:1060 -# This is the network configuration file. The top line of this file, -# when not set via command line, is used to determine to which network -# the integration test will be run against. - -# Note you can also specify "release", "betanet", or "protonet" on run.sh - -# Betanet gateways -109.169.15.30:22840 -5.12.137.118:22840 -92.246.20.92:22840 -178.16.39.203:22840 -86.135.17.18:22840 - -# Release (messenger test) network gateways -34.221.74.216:11420 -52.25.9.28:11420 -54.149.122.115:11420 - - -# protonet -185.152.3.247:11420 -93.151.207.39:11420 -93.107.154.131:11420 -173.208.225.75:11421 -92.246.20.92:11420 diff --git a/fileTransfer/noerrors.txt b/fileTransfer/noerrors.txt deleted file mode 100644 index e69de29..0000000 diff --git a/fileTransfer/regCodes.json b/fileTransfer/regCodes.json deleted file mode 100644 index 7f6da44..0000000 --- a/fileTransfer/regCodes.json +++ /dev/null @@ -1 +0,0 @@ -[{"RegCode": "edhp", "Order": "CR"},{"RegCode": "mvep", "Order": "CR"},{"RegCode": "owms", "Order": "CR"},{"RegCode": "clig", "Order": "CR"},{"RegCode": "zrbl", "Order": "CR"}] \ No newline at end of file diff --git a/fileTransfer/registration.json b/fileTransfer/registration.json deleted file mode 100644 index f400c7e..0000000 --- a/fileTransfer/registration.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": 5, - "PrecomputationTimeout": 30000, - "RealtimeTimeout": 15000, - "DebugTrackRounds": true, - "BatchSize": 32, - "MinimumDelay": 1000, - "RealtimeDelay": 2000, - "Threshold": 0.3, - "NodeCleanUpInterval": 180000, - "ResourceQueueTimeout": 300000 -} \ No newline at end of file diff --git a/fileTransfer/release.txt b/fileTransfer/release.txt deleted file mode 100644 index 4442567..0000000 --- a/fileTransfer/release.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.230.124:11420 -54.187.42.105:11420 -54.149.115.63:11420 diff --git a/fileTransfer/run.sh b/fileTransfer/run.sh deleted file mode 100755 index 26078ec..0000000 --- a/fileTransfer/run.sh +++ /dev/null @@ -1,236 +0,0 @@ -# NOTE: This is verbose on purpose. -################################################################################ -## Initial Set Up & Clean Up of Past Runs -################################################################################ - -# Copy file into folder if it does not already exist -if [ ! -f network.sh ]; then - cp ../network/network.sh . -fi - -set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm -fr blob* || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir - -if [ $# -gt 1 ] -then - echo "usage: $0 [gatewayip:port]" - exit -fi - - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -UDBOUT=results/udb-console.txt -CLIENTCLEAN=results/clients-cleaned -CLIENTOPTS="--password hello --ndf results/ndf.json --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" -CLIENTFILETRANSFEROPTS="--password hello --waitTimeout 600 --ndf results/ndf.json -v $DEBUGLEVEL" - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - - -################################################################################ -## Network Set Up -################################################################################ - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -if [ "$NETWORKENTRYPOINT" == "localhost:1060" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "localhost:1060" > results/startgwserver.txt - -echo "DONE LETS DO STUFF" - -echo "DOWNLOADING TLS Cert..." -# -alpn h2 added to mimic grpc headers -CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi - -############################################################################### -# Test File Transfer -############################################################################### - -echo "TESTING FILE TRANSFER..." - -# Create authenticated channel between client 110 and 111 -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blob110 --writeContact $CLIENTOUT/client110-contact.bin --unsafe -m \"Hello from contact 110 to myself, without E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client110.txt & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -wait $PIDVAL1 -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client111.log -s blob111 --writeContact $CLIENTOUT/client111-contact.bin --destfile $CLIENTOUT/client110-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client111.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" - -while [ ! -s $CLIENTOUT/client111-contact.bin ]; do - sleep 1 - echo -n "." -done -echo - -TMPID=$(cat $CLIENTOUT/client110.log | grep -a "User\:" | awk -F' ' '{print $5}') -CLIENT110ID=${TMPID} -echo "CLIENT 110 ID: $CLIENT110ID" -TMPID=$(cat $CLIENTOUT/client111.log | grep -a "User\:" | awk -F' ' '{print $5}') -CLIENT111ID=${TMPID} -echo "CLIENT 111 ID: $CLIENT111ID" - -# Client 110 will now wait for client 111's E2E Auth channel request and confirm -CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blob110 --destfile $CLIENTOUT/client111-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" -eval $CLIENTCMD >> $CLIENTOUT/client110.txt & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -wait $PIDVAL1 -wait $PIDVAL2 - -# Client 111 sends a file to client 110 -CLIENTCMD="timeout 360s ../bin/client fileTransfer -s blob110 -l $CLIENTOUT/client110.log $CLIENTFILETRANSFEROPTS" -eval $CLIENTCMD > $CLIENTOUT/client110.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="timeout 700s ../bin/client fileTransfer -s blob111 -l $CLIENTOUT/client111.log $CLIENTFILETRANSFEROPTS --sendFile $CLIENTOUT/client110-contact.bin --filePath LoremIpsum.txt --filePreviewString \"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\" --maxThroughput 1000 --retry 0" -eval $CLIENTCMD > $CLIENTOUT/client111.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL1 -wait $PIDVAL2 - -echo "FILE TRANSFER FINISHED..." - -######################################################################## - -echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." - -cp $CLIENTOUT/*.txt $CLIENTCLEAN/ - -sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt -rm $CLIENTCLEAN/client*.txt.bak - -for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do - sort -o tmp $CLIENTCLEAN/$C || true - cp tmp $CLIENTCLEAN/$C - # uniq tmp $CLIENTCLEAN/$C || true -done - -GOLDOUTPUT=clients.goldoutput -if [ "$NETWORKENTRYPOINT" != "localhost:1060" ] -then - rm -fr clients.net_goldoutput || true - GOLDOUTPUT=clients.net_goldoutput - cp -r clients.goldoutput clients.net_goldoutput - # Delete the localhost only files - rm $GOLDOUTPUT/client13* || true - rm $GOLDOUTPUT/client18* || true - rm $GOLDOUTPUT/client19* || true - rm $GOLDOUTPUT/client2[01]* || true - rm $GOLDOUTPUT/client31* || true - rm $GOLDOUTPUT/client3[56]* || true - rm $GOLDOUTPUT/client45* || true - rm $GOLDOUTPUT/client56* || true - rm $GOLDOUTPUT/client67* || true - rm $GOLDOUTPUT/client74* || true - rm $GOLDOUTPUT/client9* || true -fi - - -set +x -diff -aru $GOLDOUTPUT $CLIENTCLEAN - -if [ "$NETWORKENTRYPOINT" == "localhost:1060" ] -then - - #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true - #diff -ruN results/client-errors.txt noerrors.txt - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - IGNORESERVE="Failed to serve " - IGNORESTART="Failed to start " - IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt - echo "Checking backup files for equality..." - # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt - #diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true - # diff -aruN client120BackupDiff.txt noerrors.txt - #echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!" - #diff -aruN client121BackupDiff.txt noerrors.txt -fi - -# Remove the file if it exists -if [ -f network.sh ]; then - rm network.sh -fi \ No newline at end of file diff --git a/fileTransfer/server-1.yaml b/fileTransfer/server-1.yaml deleted file mode 100644 index 9b1a51a..0000000 --- a/fileTransfer/server-1.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "edhp" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-0.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-1.log" - errOutput: "results/servers/server-1.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10060" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20060" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-1.log" -# === END YAML diff --git a/fileTransfer/server-2.yaml b/fileTransfer/server-2.yaml deleted file mode 100644 index 040cea6..0000000 --- a/fileTransfer/server-2.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "mvep" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-1.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-2.log" - errOutput: "results/servers/server-2.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10061" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20060" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-2.log" -# === END YAML diff --git a/fileTransfer/server-3.yaml b/fileTransfer/server-3.yaml deleted file mode 100644 index 1162ae9..0000000 --- a/fileTransfer/server-3.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "owms" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-2.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-3.log" - errOutput: "results/servers/server-3.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10062" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20060" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-3.log" -# === END YAML diff --git a/fileTransfer/server-4.yaml b/fileTransfer/server-4.yaml deleted file mode 100644 index 0aa6c97..0000000 --- a/fileTransfer/server-4.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "clig" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-3.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-4.log" - errOutput: "results/servers/server-4.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10063" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20060" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-4.log" -# === END YAML diff --git a/fileTransfer/server-5.yaml b/fileTransfer/server-5.yaml deleted file mode 100644 index 646b54e..0000000 --- a/fileTransfer/server-5.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "zrbl" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-4.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-5.log" - errOutput: "results/servers/server-5.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10064" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20060" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-5.log" -# === END YAML diff --git a/fileTransfer/udb.yaml b/fileTransfer/udb.yaml deleted file mode 100644 index 6e4e019..0000000 --- a/fileTransfer/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "30060" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:20060" -devMode: true \ No newline at end of file diff --git a/fileTransfer/udbContact.bin b/fileTransfer/udbContact.bin deleted file mode 100644 index 10b0846..0000000 --- a/fileTransfer/udbContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc> \ No newline at end of file diff --git a/fileTransfer/udbProto.json b/fileTransfer/udbProto.json deleted file mode 100644 index 940cadf..0000000 --- a/fileTransfer/udbProto.json +++ /dev/null @@ -1 +0,0 @@ -{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}} \ No newline at end of file diff --git a/fileTransfer/whitelist.txt b/fileTransfer/whitelist.txt deleted file mode 100644 index 446eca0..0000000 --- a/fileTransfer/whitelist.txt +++ /dev/null @@ -1 +0,0 @@ -["0.0.0.0", "127.0.0.1"] \ No newline at end of file diff --git a/gen/betanet.txt b/gen/betanet.txt deleted file mode 100644 index e35ebcf..0000000 --- a/gen/betanet.txt +++ /dev/null @@ -1,306 +0,0 @@ -188.187.190.53:22840 -135.181.134.215:22840 -90.64.159.233:22840 -63.224.248.74:22840 -78.63.197.35:22840 -95.217.225.220:22840 -167.86.89.25:22840 -134.17.158.63:22840 -77.92.107.203:22840 -136.50.65.29:22840 -176.99.131.128:22840 -109.251.8.131:22840 -85.237.9.101:22840 -195.93.180.119:22840 -193.106.95.173:22840 -193.106.95.227:22840 -168.119.49.161:22840 -193.106.94.75:22840 -176.99.131.188:22840 -180.150.125.93:22840 -135.181.29.63:22840 -116.202.99.94:22840 -94.130.150.94:22840 -93.81.246.111:22840 -183.99.96.180:22101 -62.171.131.155:22840 -159.65.122.44:22840 -45.122.123.134:22840 -157.90.34.21:22840 -107.182.163.106:22840 -52.124.124.210:22840 -170.187.225.94:22840 -95.217.228.117:22840 -88.99.13.205:22840 -52.183.38.229:22840 -77.223.99.126:22840 -37.228.116.99:22840 -167.99.247.6:22840 -5.45.81.112:22840 -193.47.33.51:22840 -5.45.81.110:22840 -69.197.179.42:22840 -69.197.179.162:22840 -94.244.64.115:22840 -109.100.137.105:22840 -86.57.132.29:22840 -178.248.81.38:22840 -213.55.169.27:22840 -212.24.106.228:22840 -195.181.247.171:22840 -82.148.29.76:22840 -81.163.28.252:22840 -80.249.150.70:22840 -79.98.24.202:22840 -62.173.145.42:22840 -77.223.98.157:22840 -193.47.33.132:22840 -82.148.19.245:22840 -31.184.254.81:22840 -195.64.234.210:22840 -195.64.234.98:22840 -78.26.169.79:22840 -62.77.156.70:22840 -77.223.97.164:22840 -193.47.33.50:22840 -62.173.140.126:22840 -93.81.246.64:22840 -149.210.192.112:22840 -77.120.176.213:22840 -188.138.242.248:22840 -178.168.101.47:22840 -37.97.220.128:22840 -69.197.147.18:22840 -81.240.39.28:22840 -141.105.67.92:22840 -213.10.138.128:22840 -217.136.119.184:22840 -85.201.32.4:22840 -92.64.19.232:22840 -89.221.20.22:22840 -62.167.123.100:22800 -161.230.93.70:22840 -76.65.147.14:22840 -86.7.108.18:22840 -109.129.225.57:22840 -194.158.207.84:22840 -116.203.252.237:22840 -217.12.210.152:22840 -45.115.107.124:22840 -178.128.199.183:22840 -93.107.156.53:22840 -82.15.128.246:22840 -70.75.89.186:22840 -109.87.172.237:22840 -80.90.47.210:22840 -90.189.180.24:22840 -46.98.0.118:22840 -85.221.55.10:22840 -191.32.173.237:22840 -80.5.16.132:22840 -173.212.199.13:22840 -120.88.119.219:22840 -135.19.193.9:22840 -134.249.187.129:22840 -188.194.110.16:22840 -195.38.9.10:22840 -46.42.16.25:22840 -31.165.163.210:22840 -89.232.195.123:22840 -77.122.54.99:22840 -85.105.79.102:22840 -163.172.149.150:22840 -5.53.16.225:22840 -178.124.192.61:22840 -167.99.130.234:22840 -95.158.15.24:22840 -195.239.181.117:22840 -104.158.0.184:22840 -62.171.142.152:22840 -77.122.89.98:22840 -200.37.209.49:22840 -181.43.154.26:22840 -185.230.88.227:22840 -91.169.185.175:62840 -217.136.102.221:22840 -149.210.229.230:22840 -176.37.104.235:22840 -37.97.224.62:22840 -94.107.24.186:22840 -151.252.109.180:22840 -195.93.181.189:22840 -195.93.181.192:22840 -149.210.229.210:22840 -77.122.48.168:22840 -185.4.65.20:22840 -37.97.224.55:22840 -178.170.47.131:22840 -37.97.224.32:22840 -178.170.39.140:22840 -135.181.139.234:22840 -78.129.38.119:22840 -78.181.101.251:22840 -68.183.34.147:22840 -5.255.173.96:22840 -195.177.94.31:22840 -37.57.87.184:22840 -37.97.224.19:22840 -209.145.53.106:22840 -176.214.77.176:22840 -143.178.133.206:22840 -85.118.207.56:22840 -88.211.82.66:22840 -185.23.83.59:22840 -93.75.3.51:22840 -176.210.55.44:22840 -83.144.175.13:22840 -78.188.200.189:22840 -174.114.197.104:22840 -188.83.79.190:22840 -66.183.0.247:22840 -5.61.52.49:22840 -149.210.229.197:22840 -82.118.17.160:22841 -31.202.122.239:22840 -46.150.9.16:22840 -205.250.188.151:22840 -149.210.229.175:22840 -77.122.91.193:22840 -31.202.122.152:22840 -151.95.102.130:22840 -91.245.37.80:22840 -199.119.86.179:22840 -93.72.67.70:22840 -195.134.65.165:22840 -103.56.39.162:20090 -178.27.238.236:22840 -149.210.192.41:22840 -103.56.39.183:20090 -5.61.54.13:22840 -78.188.51.20:22840 -93.157.248.142:22840 -31.172.140.126:22840 -95.189.106.118:22840 -86.94.128.12:22840 -5.132.111.41:22840 -109.129.220.59:22840 -84.83.206.46:22840 -136.144.240.106:22840 -89.28.86.208:22840 -89.28.6.19:22840 -5.255.173.43:22840 -77.122.29.37:22840 -136.144.203.178:22840 -136.144.230.186:22840 -136.144.206.186:22840 -61.6.46.179:22840 -31.202.123.194:22840 -135.125.235.32:22840 -103.83.149.90:22840 -66.183.0.246:22840 -185.12.142.45:22840 -46.37.194.90:22840 -78.26.140.125:22840 -89.191.125.159:22840 -31.201.104.137:22840 -77.92.109.45:22840 -108.249.110.153:22840 -196.41.195.118:22840 -101.98.209.195:22840 -77.92.109.43:22840 -188.127.250.195:22840 -76.176.192.12:22840 -91.177.2.56:22840 -82.193.107.60:22840 -86.83.150.15:22840 -134.249.121.177:22840 -46.166.138.219:22840 -75.156.104.27:22840 -109.100.137.83:22840 -174.88.128.201:22840 -178.168.68.129:22840 -66.183.0.245:22840 -62.238.247.127:22840 -65.21.151.29:22841 -207.81.171.109:22840 -155.93.136.90:22840 -190.22.170.63:22840 -136.144.230.185:22840 -102.182.202.19:22840 -70.52.24.55:22841 -195.191.174.168:22840 -88.223.114.249:22840 -46.142.181.156:22840 -174.94.125.212:22840 -184.146.45.46:22840 -136.144.236.167:22840 -174.88.104.199:22840 -88.223.115.74:22840 -178.170.40.34:22840 -91.149.187.22:22840 -178.150.223.30:22840 -195.138.68.0:22840 -77.122.59.150:22840 -91.241.178.180:22840 -95.164.8.35:22840 -188.138.162.9:22840 -77.122.80.204:22840 -46.150.9.21:22840 -46.119.158.146:22840 -5.34.183.246:22842 -65.21.180.158:22840 -188.187.188.47:22840 -62.171.137.40:22840 -178.151.197.49:22840 -213.231.5.100:22840 -194.28.172.72:22840 -76.71.65.212:22840 -76.71.65.96:22840 -185.46.60.30:22840 -185.172.34.211:22840 -87.255.69.231:22840 -91.222.114.19:22840 -162.55.58.184:22840 -91.233.171.9:22840 -82.16.173.238:22840 -77.169.225.166:22840 -87.248.171.27:22840 -81.243.65.75:22840 -207.6.218.81:22840 -207.6.218.110:22840 -188.124.46.130:22840 -159.196.176.42:22840 -143.244.158.201:22840 -185.224.108.251:22840 -80.100.87.204:22840 -185.48.197.184:22840 -95.67.28.111:22840 -171.25.167.187:22840 -176.100.12.243:22840 -185.224.108.82:22840 -217.12.223.90:22852 -185.224.110.37:22840 -195.138.85.182:22840 -176.104.49.11:22840 -176.104.52.215:22840 -88.204.18.134:22840 -217.26.167.45:22840 -185.172.34.212:22840 -87.255.69.232:22840 -5.165.211.128:22840 -136.144.205.104:22840 -178.168.57.176:22840 -87.255.69.238:22840 -194.233.67.188:22840 -88.159.77.30:22840 -195.74.67.235:22840 -174.94.68.31:22840 -91.5.88.185:22841 -179.223.85.90:22840 -139.59.245.228:22840 -199.119.86.185:22840 -105.228.133.62:22840 -139.59.126.219:22840 -91.5.83.238:22842 -95.216.221.129:22840 -158.140.234.119:22840 diff --git a/gen/client-registrar.yaml b/gen/client-registrar.yaml deleted file mode 100644 index 423ee46..0000000 --- a/gen/client-registrar.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# ================================== -# Client Registrar Configuration -# ================================== - -# Log message level (0 = info, 1 = debug, >1 = trace) -logLevel: 0 -# Path to log file -logPath: "results/client-registrar.log" - -# Public address, used in NDF it gives to client -publicAddress: "0.0.0.0:{registration_port}" -# The listening port of this server -port: {registration_port} - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -# Maximum number of connections per period -userRegCapacity: 1000 -# How often the number of connections is reset -userRegLeakPeriod: "24h" - -# Database connection information -dbUsername: "cmix" -dbPassword: "" -dbName: "cmix_server" -dbAddress: "" - -# List of client codes to be added to the database (for testing) -clientRegCodes: - - "AAAA" - - "BBBB" - - "CCCC" diff --git a/gen/devnet.txt b/gen/devnet.txt deleted file mode 100644 index 922c0de..0000000 --- a/gen/devnet.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.125.145:11420 -35.163.143.85:11420 -34.218.59.127:11420 diff --git a/gen/gateway.yaml b/gen/gateway.yaml deleted file mode 100644 index d42fb03..0000000 --- a/gen/gateway.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-1.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: {NODE_ADDR} - -# The listening port of this gateway -Port: {GW_ADDR} - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-0.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/gen/mainnet.txt b/gen/mainnet.txt deleted file mode 100644 index 3fbbb1c..0000000 --- a/gen/mainnet.txt +++ /dev/null @@ -1,74 +0,0 @@ -"65.21.170.29:22840" -"88.198.2.52:22840" -"188.40.70.250:22840" -"185.218.125.248:22840" -"31.202.122.131:22840" -"173.249.60.80:22840" -"65.21.76.35:22840" -"195.201.171.211:22840" -"65.21.221.236:22840" -"37.97.220.130:22840" -"159.148.31.238:22840" -"nodochile.myddns.me:22840" -"94.130.10.38:22840" -"188.240.52.205:22840" -"212.38.189.73:22840" -"xerxesgw.caius.ovh:22840" -"46.4.50.57:22840" -"103.195.101.143:22840" -"49.12.45.179:22840" -"167.172.88.140:22840" -"5.189.176.210:22840" -"135.181.213.94:22840" -"213.136.70.8:22840" -"194.163.163.77:22840" -"65.21.204.13:22840" -"88.119.195.16:22840" -"88.198.2.51:22840" -"181.43.194.251:22840" -"159.148.31.232:22840" -"65.108.52.154:11098" -"138.201.37.166:22840" -"kmil.go.ro:22840" -"37.97.169.197:22840" -"144.76.65.107:22840" -"178.18.253.13:22840" -"162.55.131.110:22840" -"91.230.111.8:22840" -"109.98.108.250:22840" -"15.161.170.171:22840" -"37.97.224.110:22840" -"54.79.206.112:22840" -"144.126.149.30:22840" -"194.163.171.145:22840" -"37.97.220.129:22840" -"194.163.170.125:22840" -"65.21.143.248:22840" -"149.210.229.175:22840" -"149.210.192.112:22840" -"149.210.192.111:22840" -"65.21.234.163:22840" -"149.210.229.223:22840" -"173.249.44.133:22840" -"75.119.130.123:22840" -"194.233.77.127:22840" -"66.94.99.187:22840" -"144.91.99.106:22840" -"185.214.134.207:22840" -"95.217.207.236:22840" -"95.217.206.164:22840" -"173.212.233.67:22840" -"37.55.17.106:22840" -"65.108.3.162:22840" -"186.106.188.155:22840" -"109.237.108.117:22840" -"65.108.42.168:22840" -"65.21.234.86:22840" -"65.21.50.177:22840" -"194.163.189.115:22840" -"135.181.212.170:22840" -"23.88.104.166:22840" -"103.107.182.192:22840" -"65.108.2.254:22840" -"94.130.136.136:22840" -"162.55.100.14:22840" diff --git a/gen/network.config b/gen/network.config deleted file mode 100644 index fb698eb..0000000 --- a/gen/network.config +++ /dev/null @@ -1,26 +0,0 @@ -localhost:{entry_point} -# This is the network configuration file. The top line of this file, -# when not set via command line, is used to determine to which network -# the integration test will be run against. - -# Note you can also specify "release", "betanet", or "protonet" on run.sh - -# Betanet gateways -109.169.15.30:22840 -5.12.137.118:22840 -92.246.20.92:22840 -178.16.39.203:22840 -86.135.17.18:22840 - -# Release (messenger test) network gateways -34.221.74.216:11420 -52.25.9.28:11420 -54.149.122.115:11420 - - -# protonet -185.152.3.247:11420 -93.151.207.39:11420 -93.107.154.131:11420 -173.208.225.75:11421 -92.246.20.92:11420 diff --git a/gen/noerrors.txt b/gen/noerrors.txt deleted file mode 100644 index e69de29..0000000 diff --git a/gen/permissioning.yaml b/gen/permissioning.yaml deleted file mode 100644 index f365c4e..0000000 --- a/gen/permissioning.yaml +++ /dev/null @@ -1,96 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -loglevel: 2 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening port of this server -port: {permissioning_port} - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -minimumNodes: 5 - -minGatewayVersion: "3.0.0" -minServerVersion: "3.0.0" -minClientVersion: "4.0.0" -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - - -# Public address used in NDF to give to client -registrationAddress: "0.0.0.0:{registration_port}" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -fullNdfOutputPath: "results/permissions-ndfoutput.json" -signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:{udb_port}" - -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - - -# Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 diff --git a/gen/registration.json b/gen/registration.json deleted file mode 100644 index f400c7e..0000000 --- a/gen/registration.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": 5, - "PrecomputationTimeout": 30000, - "RealtimeTimeout": 15000, - "DebugTrackRounds": true, - "BatchSize": 32, - "MinimumDelay": 1000, - "RealtimeDelay": 2000, - "Threshold": 0.3, - "NodeCleanUpInterval": 180000, - "ResourceQueueTimeout": 300000 -} \ No newline at end of file diff --git a/gen/release.txt b/gen/release.txt deleted file mode 100644 index 4442567..0000000 --- a/gen/release.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.230.124:11420 -54.187.42.105:11420 -54.149.115.63:11420 diff --git a/gen/run.sh b/gen/run.sh index 94c0106..102b551 100755 --- a/gen/run.sh +++ b/gen/run.sh @@ -3,118 +3,35 @@ ## Initial Set Up & Clean Up of Past Runs ################################################################################ -# Copy file into folder if it does not already exist -if [ ! -f network.sh ]; then - cp ../network/network.sh . -fi - set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm -fr blob* || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir -if [ $# -gt 1 ] +if [ $# -gt 3 ] then - echo "usage: $0 [gatewayip:port]" + echo "usage: $0 results_dir golds_dir" exit fi - -NETWORKENTRYPOINT=$1 +RESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 DEBUGLEVEL=${DEBUGLEVEL-1} +CLIENTOUT=$LOCALRESULTS/clients +CLIENTCLEAN=$LOCALRESULTS/clients-cleaned -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -UDBOUT=results/udb-console.txt -CLIENTCLEAN=results/clients-cleaned - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS mkdir -p $CLIENTOUT mkdir -p $CLIENTCLEAN -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - - -################################################################################ -## Network Set Up -################################################################################ - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" +CLIENTOPTS="--password hello --ndf $NDF --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" -if [ "$NETWORKENTRYPOINT" == "localhost:{entry_point}" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "localhost:{entry_point}" > results/startgwserver.txt - -echo "DONE LETS DO STUFF" - -echo "DOWNLOADING TLS Cert..." -# -alpn h2 added to mimic grpc headers -CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info -######################################################################## -# Insert client tests here +############################################################################### +# New Test Goes Here +############################################################################### -######################################################################## echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." @@ -132,54 +49,9 @@ for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do # uniq tmp $CLIENTCLEAN/$C || true done -GOLDOUTPUT=clients.goldoutput -if [ "$NETWORKENTRYPOINT" != "localhost:{entry_point}" ] -then - rm -fr clients.net_goldoutput || true - GOLDOUTPUT=clients.net_goldoutput - cp -r clients.goldoutput clients.net_goldoutput - # Delete the localhost only files - rm $GOLDOUTPUT/client13* || true - rm $GOLDOUTPUT/client18* || true - rm $GOLDOUTPUT/client19* || true - rm $GOLDOUTPUT/client2[01]* || true - rm $GOLDOUTPUT/client31* || true - rm $GOLDOUTPUT/client3[56]* || true - rm $GOLDOUTPUT/client45* || true - rm $GOLDOUTPUT/client56* || true - rm $GOLDOUTPUT/client67* || true - rm $GOLDOUTPUT/client74* || true - rm $GOLDOUTPUT/client9* || true -fi - +set -e set +x diff -aru $GOLDOUTPUT $CLIENTCLEAN -if [ "$NETWORKENTRYPOINT" == "localhost:{entry_point}" ] -then - - #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true - #diff -ruN results/client-errors.txt noerrors.txt - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - IGNORESERVE="Failed to serve " - IGNORESTART="Failed to start " - IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt - echo "Checking backup files for equality..." - # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt - #diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true - # diff -aruN client120BackupDiff.txt noerrors.txt - #echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!" - #diff -aruN client121BackupDiff.txt noerrors.txt -fi - -# Remove the file if it exists -if [ -f network.sh ]; then - rm network.sh -fi \ No newline at end of file +echo "NO OUTPUT ERRORS, SUCCESS!" diff --git a/gen/server.yaml b/gen/server.yaml deleted file mode 100644 index b2a72b4..0000000 --- a/gen/server.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "AAAA" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-1.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-1.log" - errOutput: "results/servers/server-1.err" - ipListOutput: "results/servers/iplist-1.txt" - port: {NODE_ADDR} - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: {DB_ADDR} -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:{permissioning_port}" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-1.log" -# === END YAML diff --git a/gen/udb.yaml b/gen/udb.yaml deleted file mode 100644 index 9a7ae21..0000000 --- a/gen/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "{udb_port}" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:{permissioning_port}" -devMode: true \ No newline at end of file diff --git a/gen/udbContact.bin b/gen/udbContact.bin deleted file mode 100644 index 10b0846..0000000 --- a/gen/udbContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc> \ No newline at end of file diff --git a/gen/udbProto.json b/gen/udbProto.json deleted file mode 100644 index 940cadf..0000000 --- a/gen/udbProto.json +++ /dev/null @@ -1 +0,0 @@ -{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}} \ No newline at end of file diff --git a/gen/whitelist.txt b/gen/whitelist.txt deleted file mode 100644 index 446eca0..0000000 --- a/gen/whitelist.txt +++ /dev/null @@ -1 +0,0 @@ -["0.0.0.0", "127.0.0.1"] \ No newline at end of file diff --git a/groupChat/- b/groupChat/- deleted file mode 100644 index c31ac75..0000000 --- a/groupChat/- +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)pdbU4t6RGH0xkq9IN+cNmmUTL6ZIy3HLY4Vh3sSr1koDrgZ7Ugdw/BAr6UJk1qDPvPrV08oWB1u3+kKIvhUuMkGkgbuuGACkiMhYAIKxjVniF4HlJ9l65FoqxYOpJQt+FMzd92e2Hsl6gJoFbR1G7U6v4lFXFMkwqFxEF8XmE2Ry83fpyuhcedZJH9DuAmksjpgOjzON1w/1ZJWVTxwon6PrvaOtaYb88KVKjGQp/UdU2Btf/U2ZetaH3srs7i4nIQtqZk4psnhl5W8HzCx/l8TvyCMXySYKxDds5ljlbbrs1WgxKMpvafKEZfjm8tT8t7msONGTiaDLr7jpYLWolBmtv4kcCR7Ckn9N1fKX99lv2MCH75eG47jl2brT70oSMH/Mc4VEbEaDSJ+mqd1jfOMVxMZAjxHZBqoym766REQ6n2taf1extX20Ikc5C5EjRjdjy9uMdcnUUS54zS2NCJQskKlbgZLfHI/PvIz/9vzIEN5a16jNpRMIS3cGBqRiHObAA6df0X4iayEwML+onWb/ZZ9sS38VQGTvVihz84c0mdT8FYouIZQuYaFnBrzUYCcBleqsMsPzvgAAAgA7Cx1UjgfQOYA09EHDolyWrw==xxc> \ No newline at end of file diff --git a/groupChat/betanet.txt b/groupChat/betanet.txt deleted file mode 100644 index e35ebcf..0000000 --- a/groupChat/betanet.txt +++ /dev/null @@ -1,306 +0,0 @@ -188.187.190.53:22840 -135.181.134.215:22840 -90.64.159.233:22840 -63.224.248.74:22840 -78.63.197.35:22840 -95.217.225.220:22840 -167.86.89.25:22840 -134.17.158.63:22840 -77.92.107.203:22840 -136.50.65.29:22840 -176.99.131.128:22840 -109.251.8.131:22840 -85.237.9.101:22840 -195.93.180.119:22840 -193.106.95.173:22840 -193.106.95.227:22840 -168.119.49.161:22840 -193.106.94.75:22840 -176.99.131.188:22840 -180.150.125.93:22840 -135.181.29.63:22840 -116.202.99.94:22840 -94.130.150.94:22840 -93.81.246.111:22840 -183.99.96.180:22101 -62.171.131.155:22840 -159.65.122.44:22840 -45.122.123.134:22840 -157.90.34.21:22840 -107.182.163.106:22840 -52.124.124.210:22840 -170.187.225.94:22840 -95.217.228.117:22840 -88.99.13.205:22840 -52.183.38.229:22840 -77.223.99.126:22840 -37.228.116.99:22840 -167.99.247.6:22840 -5.45.81.112:22840 -193.47.33.51:22840 -5.45.81.110:22840 -69.197.179.42:22840 -69.197.179.162:22840 -94.244.64.115:22840 -109.100.137.105:22840 -86.57.132.29:22840 -178.248.81.38:22840 -213.55.169.27:22840 -212.24.106.228:22840 -195.181.247.171:22840 -82.148.29.76:22840 -81.163.28.252:22840 -80.249.150.70:22840 -79.98.24.202:22840 -62.173.145.42:22840 -77.223.98.157:22840 -193.47.33.132:22840 -82.148.19.245:22840 -31.184.254.81:22840 -195.64.234.210:22840 -195.64.234.98:22840 -78.26.169.79:22840 -62.77.156.70:22840 -77.223.97.164:22840 -193.47.33.50:22840 -62.173.140.126:22840 -93.81.246.64:22840 -149.210.192.112:22840 -77.120.176.213:22840 -188.138.242.248:22840 -178.168.101.47:22840 -37.97.220.128:22840 -69.197.147.18:22840 -81.240.39.28:22840 -141.105.67.92:22840 -213.10.138.128:22840 -217.136.119.184:22840 -85.201.32.4:22840 -92.64.19.232:22840 -89.221.20.22:22840 -62.167.123.100:22800 -161.230.93.70:22840 -76.65.147.14:22840 -86.7.108.18:22840 -109.129.225.57:22840 -194.158.207.84:22840 -116.203.252.237:22840 -217.12.210.152:22840 -45.115.107.124:22840 -178.128.199.183:22840 -93.107.156.53:22840 -82.15.128.246:22840 -70.75.89.186:22840 -109.87.172.237:22840 -80.90.47.210:22840 -90.189.180.24:22840 -46.98.0.118:22840 -85.221.55.10:22840 -191.32.173.237:22840 -80.5.16.132:22840 -173.212.199.13:22840 -120.88.119.219:22840 -135.19.193.9:22840 -134.249.187.129:22840 -188.194.110.16:22840 -195.38.9.10:22840 -46.42.16.25:22840 -31.165.163.210:22840 -89.232.195.123:22840 -77.122.54.99:22840 -85.105.79.102:22840 -163.172.149.150:22840 -5.53.16.225:22840 -178.124.192.61:22840 -167.99.130.234:22840 -95.158.15.24:22840 -195.239.181.117:22840 -104.158.0.184:22840 -62.171.142.152:22840 -77.122.89.98:22840 -200.37.209.49:22840 -181.43.154.26:22840 -185.230.88.227:22840 -91.169.185.175:62840 -217.136.102.221:22840 -149.210.229.230:22840 -176.37.104.235:22840 -37.97.224.62:22840 -94.107.24.186:22840 -151.252.109.180:22840 -195.93.181.189:22840 -195.93.181.192:22840 -149.210.229.210:22840 -77.122.48.168:22840 -185.4.65.20:22840 -37.97.224.55:22840 -178.170.47.131:22840 -37.97.224.32:22840 -178.170.39.140:22840 -135.181.139.234:22840 -78.129.38.119:22840 -78.181.101.251:22840 -68.183.34.147:22840 -5.255.173.96:22840 -195.177.94.31:22840 -37.57.87.184:22840 -37.97.224.19:22840 -209.145.53.106:22840 -176.214.77.176:22840 -143.178.133.206:22840 -85.118.207.56:22840 -88.211.82.66:22840 -185.23.83.59:22840 -93.75.3.51:22840 -176.210.55.44:22840 -83.144.175.13:22840 -78.188.200.189:22840 -174.114.197.104:22840 -188.83.79.190:22840 -66.183.0.247:22840 -5.61.52.49:22840 -149.210.229.197:22840 -82.118.17.160:22841 -31.202.122.239:22840 -46.150.9.16:22840 -205.250.188.151:22840 -149.210.229.175:22840 -77.122.91.193:22840 -31.202.122.152:22840 -151.95.102.130:22840 -91.245.37.80:22840 -199.119.86.179:22840 -93.72.67.70:22840 -195.134.65.165:22840 -103.56.39.162:20090 -178.27.238.236:22840 -149.210.192.41:22840 -103.56.39.183:20090 -5.61.54.13:22840 -78.188.51.20:22840 -93.157.248.142:22840 -31.172.140.126:22840 -95.189.106.118:22840 -86.94.128.12:22840 -5.132.111.41:22840 -109.129.220.59:22840 -84.83.206.46:22840 -136.144.240.106:22840 -89.28.86.208:22840 -89.28.6.19:22840 -5.255.173.43:22840 -77.122.29.37:22840 -136.144.203.178:22840 -136.144.230.186:22840 -136.144.206.186:22840 -61.6.46.179:22840 -31.202.123.194:22840 -135.125.235.32:22840 -103.83.149.90:22840 -66.183.0.246:22840 -185.12.142.45:22840 -46.37.194.90:22840 -78.26.140.125:22840 -89.191.125.159:22840 -31.201.104.137:22840 -77.92.109.45:22840 -108.249.110.153:22840 -196.41.195.118:22840 -101.98.209.195:22840 -77.92.109.43:22840 -188.127.250.195:22840 -76.176.192.12:22840 -91.177.2.56:22840 -82.193.107.60:22840 -86.83.150.15:22840 -134.249.121.177:22840 -46.166.138.219:22840 -75.156.104.27:22840 -109.100.137.83:22840 -174.88.128.201:22840 -178.168.68.129:22840 -66.183.0.245:22840 -62.238.247.127:22840 -65.21.151.29:22841 -207.81.171.109:22840 -155.93.136.90:22840 -190.22.170.63:22840 -136.144.230.185:22840 -102.182.202.19:22840 -70.52.24.55:22841 -195.191.174.168:22840 -88.223.114.249:22840 -46.142.181.156:22840 -174.94.125.212:22840 -184.146.45.46:22840 -136.144.236.167:22840 -174.88.104.199:22840 -88.223.115.74:22840 -178.170.40.34:22840 -91.149.187.22:22840 -178.150.223.30:22840 -195.138.68.0:22840 -77.122.59.150:22840 -91.241.178.180:22840 -95.164.8.35:22840 -188.138.162.9:22840 -77.122.80.204:22840 -46.150.9.21:22840 -46.119.158.146:22840 -5.34.183.246:22842 -65.21.180.158:22840 -188.187.188.47:22840 -62.171.137.40:22840 -178.151.197.49:22840 -213.231.5.100:22840 -194.28.172.72:22840 -76.71.65.212:22840 -76.71.65.96:22840 -185.46.60.30:22840 -185.172.34.211:22840 -87.255.69.231:22840 -91.222.114.19:22840 -162.55.58.184:22840 -91.233.171.9:22840 -82.16.173.238:22840 -77.169.225.166:22840 -87.248.171.27:22840 -81.243.65.75:22840 -207.6.218.81:22840 -207.6.218.110:22840 -188.124.46.130:22840 -159.196.176.42:22840 -143.244.158.201:22840 -185.224.108.251:22840 -80.100.87.204:22840 -185.48.197.184:22840 -95.67.28.111:22840 -171.25.167.187:22840 -176.100.12.243:22840 -185.224.108.82:22840 -217.12.223.90:22852 -185.224.110.37:22840 -195.138.85.182:22840 -176.104.49.11:22840 -176.104.52.215:22840 -88.204.18.134:22840 -217.26.167.45:22840 -185.172.34.212:22840 -87.255.69.232:22840 -5.165.211.128:22840 -136.144.205.104:22840 -178.168.57.176:22840 -87.255.69.238:22840 -194.233.67.188:22840 -88.159.77.30:22840 -195.74.67.235:22840 -174.94.68.31:22840 -91.5.88.185:22841 -179.223.85.90:22840 -139.59.245.228:22840 -199.119.86.185:22840 -105.228.133.62:22840 -139.59.126.219:22840 -91.5.83.238:22842 -95.216.221.129:22840 -158.140.234.119:22840 diff --git a/groupChat/client-registrar.yaml b/groupChat/client-registrar.yaml deleted file mode 100644 index 297aff3..0000000 --- a/groupChat/client-registrar.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# ================================== -# Client Registrar Configuration -# ================================== - -# Log message level (0 = info, 1 = debug, >1 = trace) -logLevel: 0 -# Path to log file -logPath: "results/client-registrar.log" - -# Public address, used in NDF it gives to client -publicAddress: "0.0.0.0:20101" -# The listening port of this server -port: 20101 - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -# Maximum number of connections per period -userRegCapacity: 1000 -# How often the number of connections is reset -userRegLeakPeriod: "24h" - -# Database connection information -dbUsername: "cmix" -dbPassword: "" -dbName: "cmix_server" -dbAddress: "" - -# List of client codes to be added to the database (for testing) -clientRegCodes: - - "AAAA" - - "BBBB" - - "CCCC" diff --git a/groupChat/clients.goldoutput/client80.txt b/groupChat/clients.goldoutput/client80.txt deleted file mode 100644 index 859ae7d..0000000 --- a/groupChat/clients.goldoutput/client80.txt +++ /dev/null @@ -1,10 +0,0 @@ -Created new group with name "Group Name" and message "80 inviting 81 and 82 to new group" -Got group with name "Group Name" and message "80 inviting 81 and 82 to new group" -Printed list of 1 groups. -Received group message: "Hello 2 from 82" -Received group message: "Hello from 81" -Received group message: "Hello from 82" -Sent message "Hello 2 from 80" to group. -Sent message "Hello from 80" to group. -Waiting for 1 group message(s) to be received. -Waiting for 2 group message(s) to be received. diff --git a/groupChat/clients.goldoutput/client81.txt b/groupChat/clients.goldoutput/client81.txt deleted file mode 100644 index e6a105d..0000000 --- a/groupChat/clients.goldoutput/client81.txt +++ /dev/null @@ -1,11 +0,0 @@ -Got group with name "Group Name" and message "80 inviting 81 and 82 to new group" -Joined group with name "Group Name" and message "80 inviting 81 and 82 to new group" -Left group. -Printed list of 1 groups. -Received group message: "Hello from 80" -Received group message: "Hello from 82" -Sent message "Hello from 81" to group. -Timed out waiting for 1 group message(s). -Waiting for 1 group message(s) to be received. -Waiting for 2 group message(s) to be received. -Waiting for group request to be received. diff --git a/groupChat/clients.goldoutput/client82.txt b/groupChat/clients.goldoutput/client82.txt deleted file mode 100644 index 170f71e..0000000 --- a/groupChat/clients.goldoutput/client82.txt +++ /dev/null @@ -1,11 +0,0 @@ -Got group with name "Group Name" and message "80 inviting 81 and 82 to new group" -Joined group with name "Group Name" and message "80 inviting 81 and 82 to new group" -Printed list of 1 groups. -Received group message: "Hello 2 from 80" -Received group message: "Hello from 80" -Received group message: "Hello from 81" -Sent message "Hello 2 from 82" to group. -Sent message "Hello from 82" to group. -Waiting for 1 group message(s) to be received. -Waiting for 2 group message(s) to be received. -Waiting for group request to be received. diff --git a/groupChat/devnet.txt b/groupChat/devnet.txt deleted file mode 100644 index 922c0de..0000000 --- a/groupChat/devnet.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.125.145:11420 -35.163.143.85:11420 -34.218.59.127:11420 diff --git a/groupChat/gateway-1.yaml b/groupChat/gateway-1.yaml deleted file mode 100644 index 869b0c3..0000000 --- a/groupChat/gateway-1.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-1.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10100" - -# The listening port of this gateway -Port: 1100 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-0.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/groupChat/gateway-2.yaml b/groupChat/gateway-2.yaml deleted file mode 100644 index af6a07e..0000000 --- a/groupChat/gateway-2.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-2.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10101" - -# The listening port of this gateway -Port: 1101 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-1.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/groupChat/gateway-3.yaml b/groupChat/gateway-3.yaml deleted file mode 100644 index e7f590e..0000000 --- a/groupChat/gateway-3.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-3.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10102" - -# The listening port of this gateway -Port: 1102 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-2.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/groupChat/gateway-4.yaml b/groupChat/gateway-4.yaml deleted file mode 100644 index 128cd02..0000000 --- a/groupChat/gateway-4.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-4.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10103" - -# The listening port of this gateway -Port: 1103 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-3.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/groupChat/gateway-5.yaml b/groupChat/gateway-5.yaml deleted file mode 100644 index 86e3cca..0000000 --- a/groupChat/gateway-5.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-5.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10104" - -# The listening port of this gateway -Port: 1104 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-4.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/groupChat/mainnet.txt b/groupChat/mainnet.txt deleted file mode 100644 index 3fbbb1c..0000000 --- a/groupChat/mainnet.txt +++ /dev/null @@ -1,74 +0,0 @@ -"65.21.170.29:22840" -"88.198.2.52:22840" -"188.40.70.250:22840" -"185.218.125.248:22840" -"31.202.122.131:22840" -"173.249.60.80:22840" -"65.21.76.35:22840" -"195.201.171.211:22840" -"65.21.221.236:22840" -"37.97.220.130:22840" -"159.148.31.238:22840" -"nodochile.myddns.me:22840" -"94.130.10.38:22840" -"188.240.52.205:22840" -"212.38.189.73:22840" -"xerxesgw.caius.ovh:22840" -"46.4.50.57:22840" -"103.195.101.143:22840" -"49.12.45.179:22840" -"167.172.88.140:22840" -"5.189.176.210:22840" -"135.181.213.94:22840" -"213.136.70.8:22840" -"194.163.163.77:22840" -"65.21.204.13:22840" -"88.119.195.16:22840" -"88.198.2.51:22840" -"181.43.194.251:22840" -"159.148.31.232:22840" -"65.108.52.154:11098" -"138.201.37.166:22840" -"kmil.go.ro:22840" -"37.97.169.197:22840" -"144.76.65.107:22840" -"178.18.253.13:22840" -"162.55.131.110:22840" -"91.230.111.8:22840" -"109.98.108.250:22840" -"15.161.170.171:22840" -"37.97.224.110:22840" -"54.79.206.112:22840" -"144.126.149.30:22840" -"194.163.171.145:22840" -"37.97.220.129:22840" -"194.163.170.125:22840" -"65.21.143.248:22840" -"149.210.229.175:22840" -"149.210.192.112:22840" -"149.210.192.111:22840" -"65.21.234.163:22840" -"149.210.229.223:22840" -"173.249.44.133:22840" -"75.119.130.123:22840" -"194.233.77.127:22840" -"66.94.99.187:22840" -"144.91.99.106:22840" -"185.214.134.207:22840" -"95.217.207.236:22840" -"95.217.206.164:22840" -"173.212.233.67:22840" -"37.55.17.106:22840" -"65.108.3.162:22840" -"186.106.188.155:22840" -"109.237.108.117:22840" -"65.108.42.168:22840" -"65.21.234.86:22840" -"65.21.50.177:22840" -"194.163.189.115:22840" -"135.181.212.170:22840" -"23.88.104.166:22840" -"103.107.182.192:22840" -"65.108.2.254:22840" -"94.130.136.136:22840" -"162.55.100.14:22840" diff --git a/groupChat/network.config b/groupChat/network.config deleted file mode 100644 index 0a1a442..0000000 --- a/groupChat/network.config +++ /dev/null @@ -1,26 +0,0 @@ -localhost:1100 -# This is the network configuration file. The top line of this file, -# when not set via command line, is used to determine to which network -# the integration test will be run against. - -# Note you can also specify "release", "betanet", or "protonet" on run.sh - -# Betanet gateways -109.169.15.30:22840 -5.12.137.118:22840 -92.246.20.92:22840 -178.16.39.203:22840 -86.135.17.18:22840 - -# Release (messenger test) network gateways -34.221.74.216:11420 -52.25.9.28:11420 -54.149.122.115:11420 - - -# protonet -185.152.3.247:11420 -93.151.207.39:11420 -93.107.154.131:11420 -173.208.225.75:11421 -92.246.20.92:11420 diff --git a/groupChat/network.sh b/groupChat/network.sh deleted file mode 100755 index 2a7b2cc..0000000 --- a/groupChat/network.sh +++ /dev/null @@ -1,110 +0,0 @@ -# This script is used to start a basic 5 node network for running clients on. It is meant to be `source`'d into a script -# which will run clients on the network, such as `client-session-tests.sh` or the main `run.sh`. -# -# You **must** source it, because otherwise the `trap finish EXIT` instruction will cause the network to stop when -# network.sh returns to your script or shell. Sourcing it will "import" the commands into your script instead, causing -# the trap instruction to stop the network when your script/shell exits. - -echo "STARTING SERVERS..." - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -UDBOUT=results/udb-console.txt - -# Copy udbContact into place when running locally. -cp udbContact.bin results/udbContact.bin - -PERMCMD="../bin/permissioning --logLevel $DEBUGLEVEL -c permissioning.yaml " -$PERMCMD > results/permissioning-console.txt 2>&1 & -PIDVAL=$! -echo "$PERMCMD -- $PIDVAL" - - -# Run Client Registrar -CLIENT_REG_CMD="../bin/client-registrar \ --l 2 -c client-registrar.yaml" -$CLIENT_REG_CMD > results/client-registrat-console.txt 2>&1 & -PIDVAL=$! -echo "$CLIENT_REG_CMD -- $PIDVAL" - -for SERVERID in $(seq 5 -1 1) -do - IDX=$(($SERVERID - 1)) - SERVERCMD="../bin/server --logLevel $DEBUGLEVEL --config server-$SERVERID.yaml" - if [ $SERVERID -eq 5 ] && [ -n "$NSYSENABLED" ] - then - SERVERCMD="nsys profile --session-new=gputest --trace=cuda -o server-$SERVERID $SERVERCMD" - fi - $SERVERCMD > $SERVERLOGS/server-$SERVERID-console.txt 2>&1 & - PIDVAL=$! - echo "$SERVERCMD -- $PIDVAL" -done - -# Start gateways -for GWID in $(seq 5 -1 1) -do - IDX=$(($GWID - 1)) - GATEWAYCMD="../bin/gateway --logLevel $DEBUGLEVEL --config gateway-$GWID.yaml" - $GATEWAYCMD > $GATEWAYLOGS/gateway-$GWID-console.txt 2>&1 & - PIDVAL=$! - echo "$GATEWAYCMD -- $PIDVAL" -done - -jobs -p > results/serverpids - -finish() { - echo "STOPPING SERVERS AND GATEWAYS..." - if [ -n "$NSYSENABLED" ] - then - nsys stop --session=gputest - fi - # NOTE: jobs -p doesn't work in a signal handler - for job in $(cat results/serverpids) - do - echo "KILLING $job" - kill $job || true - done - - sleep 5 - - for job in $(cat results/serverpids) - do - echo "KILL -9 $job" - kill -9 $job || true - done - #tail $SERVERLOGS/* - #tail $CLIENTCLEAN/* - #diff -aruN clients.goldoutput $CLIENTCLEAN -} - -trap finish EXIT -trap finish INT - -# Sleeps can die in a fire on the sun, we wait for the servers to start running -# rounds -rm rid.txt || true -touch rid.txt -cnt=0 -echo -n "Waiting for a round to run" -while [ ! -s rid.txt ] && [ $cnt -lt 120 ]; do - sleep 1 - grep -a "RID 1 ReceiveFinishRealtime END" results/servers/server-* > rid.txt || true - cnt=$(($cnt + 1)) - echo -n "." -done - -# Start a user discovery bot server -echo "STARTING UDB..." -UDBCMD="../bin/udb --logLevel $DEBUGLEVEL --skipVerification --protoUserPath udbProto.json --config udb.yaml -l 1" -$UDBCMD >> $UDBOUT 2>&1 & -PIDVAL=$! -echo $PIDVAL >> results/serverpids -echo "$UDBCMD -- $PIDVAL" -rm rid.txt || true -while [ ! -s rid.txt ] && [ $cnt -lt 30 ]; do - sleep 1 - grep -a "Sending Poll message" results/udb-console.txt > rid.txt || true - cnt=$(($cnt + 1)) - echo -n "." -done - diff --git a/groupChat/noerrors.txt b/groupChat/noerrors.txt deleted file mode 100644 index e69de29..0000000 diff --git a/groupChat/permissioning.yaml b/groupChat/permissioning.yaml deleted file mode 100644 index 7671f72..0000000 --- a/groupChat/permissioning.yaml +++ /dev/null @@ -1,96 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -loglevel: 2 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening port of this server -port: 20100 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -minimumNodes: 5 - -minGatewayVersion: "3.0.0" -minServerVersion: "3.0.0" -minClientVersion: "4.0.0" -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - - -# Public address used in NDF to give to client -registrationAddress: "0.0.0.0:20101" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -fullNdfOutputPath: "results/permissions-ndfoutput.json" -signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:30100" - -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - - -# Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 diff --git a/groupChat/regCodes.json b/groupChat/regCodes.json deleted file mode 100644 index ab1269c..0000000 --- a/groupChat/regCodes.json +++ /dev/null @@ -1 +0,0 @@ -[{"RegCode": "jqtg", "Order": "CR"},{"RegCode": "xcsz", "Order": "CR"},{"RegCode": "dumb", "Order": "CR"},{"RegCode": "ngko", "Order": "CR"},{"RegCode": "qbhp", "Order": "CR"}] \ No newline at end of file diff --git a/groupChat/registration.json b/groupChat/registration.json deleted file mode 100644 index f400c7e..0000000 --- a/groupChat/registration.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": 5, - "PrecomputationTimeout": 30000, - "RealtimeTimeout": 15000, - "DebugTrackRounds": true, - "BatchSize": 32, - "MinimumDelay": 1000, - "RealtimeDelay": 2000, - "Threshold": 0.3, - "NodeCleanUpInterval": 180000, - "ResourceQueueTimeout": 300000 -} \ No newline at end of file diff --git a/groupChat/release.txt b/groupChat/release.txt deleted file mode 100644 index 4442567..0000000 --- a/groupChat/release.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.230.124:11420 -54.187.42.105:11420 -54.149.115.63:11420 diff --git a/groupChat/run.sh b/groupChat/run.sh deleted file mode 100755 index ee97fab..0000000 --- a/groupChat/run.sh +++ /dev/null @@ -1,378 +0,0 @@ -# NOTE: This is verbose on purpose. -################################################################################ -## Initial Set Up & Clean Up of Past Runs -################################################################################ - -# Copy file into folder if it does not already exist -if [ ! -f network.sh ]; then - cp ../network/network.sh . -fi - -set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm -fr blob* || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir - -if [ $# -gt 1 ] -then - echo "usage: $0 [gatewayip:port]" - exit -fi - - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -UDBOUT=results/udb-console.txt -CLIENTCLEAN=results/clients-cleaned - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - - -################################################################################ -## Network Set Up -################################################################################ - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -if [ "$NETWORKENTRYPOINT" == "localhost:1100" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "localhost:1100" > results/startgwserver.txt - -echo "DONE LETS DO STUFF" - -echo "DOWNLOADING TLS Cert..." -# -alpn h2 added to mimic grpc headers -CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi - - -############################################################################### -# Test Group Chat -############################################################################### - -CLIENTOPTS="--password hello --ndf results/ndf.json --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" -CLIENTGROUPOPTS="--password hello --waitTimeout 600 --ndf results/ndf.json -v $DEBUGLEVEL" - -echo "TESTING GROUP CHAT..." -# Create authenticated channel between client 80 and 81 -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --writeContact $CLIENTOUT/client80-contact.bin --unsafe -m \"Hello from contact 80 to myself, without E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client80.txt & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -wait $PIDVAL1 -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client81.log -s blob81 --writeContact $CLIENTOUT/client81-contact.bin --destfile $CLIENTOUT/client80-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client81.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" - -while [ ! -s $CLIENTOUT/client81-contact.bin ]; do - sleep 1 - echo -n "." -done -echo - -TMPID=$(cat $CLIENTOUT/client80.log | grep -a "User\:" | awk -F' ' '{print $5}') -CLIENT80ID=${TMPID} -echo "CLIENT 80 ID: $CLIENT80ID" -TMPID=$(cat $CLIENTOUT/client81.log | grep -a "User\:" | awk -F' ' '{print $5}') -CLIENT81ID=${TMPID} -echo "CLIENT 81 ID: $CLIENT81ID" - -# Client 81 will now wait for client 81's E2E Auth channel request and confirm -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --destfile $CLIENTOUT/client81-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" -eval $CLIENTCMD >> $CLIENTOUT/client80.txt & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -wait $PIDVAL1 -wait $PIDVAL2 - - -# Create authenticated channel between client 80 and 82 -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client82.log -s blob82 --writeContact $CLIENTOUT/client82-contact.bin --destfile $CLIENTOUT/client80-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client82.txt & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" - -while [ ! -s $CLIENTOUT/client82-contact.bin ]; do - sleep 1 - echo -n "." -done -echo - -TMPID=$(cat $CLIENTOUT/client82.log | grep -a "User\:" | awk -F' ' '{print $5}') -CLIENT82ID=${TMPID} -echo "CLIENT 82 ID: $CLIENT82ID" - -# Client 82 will now wait for client 82's E2E Auth channel request and confirm -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --destfile $CLIENTOUT/client82-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" -eval $CLIENTCMD >> $CLIENTOUT/client80.txt & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -wait $PIDVAL1 -wait $PIDVAL3 - -# User 1 Creates Group -echo "Group User IDs: $CLIENT80ID $CLIENT81ID $CLIENT82ID" -echo "b64:$CLIENT81ID" > $CLIENTOUT/groupParticipants -echo "b64:$CLIENT82ID" >> $CLIENTOUT/groupParticipants -CLIENTCMD="timeout 605s ../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --create $CLIENTOUT/groupParticipants --message \"80 inviting 81 and 82 to new group\"" -eval $CLIENTCMD > $CLIENTOUT/client80.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --join" -eval $CLIENTCMD > $CLIENTOUT/client81.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --join" -eval $CLIENTCMD > $CLIENTOUT/client82.txt 2>&1 & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" -wait $PIDVAL1 -wait $PIDVAL2 -wait $PIDVAL3 - -# Extract group ID -- Note to Jono this probably needs to be fixed! -GROUPID=$(cat $CLIENTOUT/client80.log | grep -a "NewGroupID\:" | awk -F' ' '{print $6}') -echo "Group ID: $GROUPID" - -# Print the group list from all users -CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --list" -eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --list" -eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --list" -eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" -wait $PIDVAL1 -wait $PIDVAL2 -wait $PIDVAL3 - -# Print group from all users -CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --show $GROUPID" -eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --show $GROUPID" -eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --show $GROUPID" -eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" -wait $PIDVAL1 -wait $PIDVAL2 -wait $PIDVAL3 - -# Now everyone sends their message -CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 80\"" -eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 81\"" -eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 82\"" -eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" -wait $PIDVAL1 -wait $PIDVAL2 -wait $PIDVAL3 - -# Everyone waits for their message -CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --wait 2" -eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --wait 2" -eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --wait 2" -eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" -wait $PIDVAL1 -wait $PIDVAL2 -wait $PIDVAL3 - -# Member 2 leaves the group -CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --leave $GROUPID" -eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL2 - -# 1 and 3 send a message successfully now, 2 does not -CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello 2 from 80\"" -eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL2" -CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello 2 from 82\"" -eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" -wait $PIDVAL1 -wait $PIDVAL2 -wait $PIDVAL3 - -# All 3 wait again -CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --wait 1" -eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --wait 1" -eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --wait 1" -eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & -PIDVAL3=$! -echo "$CLIENTCMD -- $PIDVAL3" -wait $PIDVAL1 -wait $PIDVAL2 -wait $PIDVAL3 - -echo "GROUP CHAT FINISHED!" -######################################################################## - -echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." - -cp $CLIENTOUT/*.txt $CLIENTCLEAN/ - -sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt -rm $CLIENTCLEAN/client*.txt.bak - -for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do - sort -o tmp $CLIENTCLEAN/$C || true - cp tmp $CLIENTCLEAN/$C - # uniq tmp $CLIENTCLEAN/$C || true -done - -GOLDOUTPUT=clients.goldoutput -if [ "$NETWORKENTRYPOINT" != "localhost:1100" ] -then - rm -fr clients.net_goldoutput || true - GOLDOUTPUT=clients.net_goldoutput - cp -r clients.goldoutput clients.net_goldoutput - # Delete the localhost only files - rm $GOLDOUTPUT/client13* || true - rm $GOLDOUTPUT/client18* || true - rm $GOLDOUTPUT/client19* || true - rm $GOLDOUTPUT/client2[01]* || true - rm $GOLDOUTPUT/client31* || true - rm $GOLDOUTPUT/client3[56]* || true - rm $GOLDOUTPUT/client45* || true - rm $GOLDOUTPUT/client56* || true - rm $GOLDOUTPUT/client67* || true - rm $GOLDOUTPUT/client74* || true - rm $GOLDOUTPUT/client9* || true -fi - - -set +x -diff -aru $GOLDOUTPUT $CLIENTCLEAN - -if [ "$NETWORKENTRYPOINT" == "localhost:1100" ] -then - - #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true - #diff -ruN results/client-errors.txt noerrors.txt - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - IGNORESERVE="Failed to serve " - IGNORESTART="Failed to start " - IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt - echo "Checking backup files for equality..." - # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt - #diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true - # diff -aruN client120BackupDiff.txt noerrors.txt - #echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!" - #diff -aruN client121BackupDiff.txt noerrors.txt -fi - -# Remove the file if it exists -if [ -f network.sh ]; then - rm network.sh -fi \ No newline at end of file diff --git a/groupChat/server-1.yaml b/groupChat/server-1.yaml deleted file mode 100644 index 3680ee0..0000000 --- a/groupChat/server-1.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "jqtg" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-0.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-1.log" - errOutput: "results/servers/server-1.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10100" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20100" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-1.log" -# === END YAML diff --git a/groupChat/server-2.yaml b/groupChat/server-2.yaml deleted file mode 100644 index 7d47e8d..0000000 --- a/groupChat/server-2.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "xcsz" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-1.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-2.log" - errOutput: "results/servers/server-2.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10101" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20100" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-2.log" -# === END YAML diff --git a/groupChat/server-3.yaml b/groupChat/server-3.yaml deleted file mode 100644 index ddd8ab6..0000000 --- a/groupChat/server-3.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "dumb" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-2.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-3.log" - errOutput: "results/servers/server-3.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10102" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20100" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-3.log" -# === END YAML diff --git a/groupChat/server-4.yaml b/groupChat/server-4.yaml deleted file mode 100644 index f995126..0000000 --- a/groupChat/server-4.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "ngko" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-3.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-4.log" - errOutput: "results/servers/server-4.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10103" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20100" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-4.log" -# === END YAML diff --git a/groupChat/server-5.yaml b/groupChat/server-5.yaml deleted file mode 100644 index 776de73..0000000 --- a/groupChat/server-5.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "qbhp" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-4.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-5.log" - errOutput: "results/servers/server-5.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10104" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20100" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-5.log" -# === END YAML diff --git a/groupChat/udb.yaml b/groupChat/udb.yaml deleted file mode 100644 index 83e23cc..0000000 --- a/groupChat/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "30100" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:20100" -devMode: true \ No newline at end of file diff --git a/groupChat/udbContact.bin b/groupChat/udbContact.bin deleted file mode 100644 index 10b0846..0000000 --- a/groupChat/udbContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc> \ No newline at end of file diff --git a/groupChat/udbProto.json b/groupChat/udbProto.json deleted file mode 100644 index 940cadf..0000000 --- a/groupChat/udbProto.json +++ /dev/null @@ -1 +0,0 @@ -{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}} \ No newline at end of file diff --git a/groupChat/whitelist.txt b/groupChat/whitelist.txt deleted file mode 100644 index 446eca0..0000000 --- a/groupChat/whitelist.txt +++ /dev/null @@ -1 +0,0 @@ -["0.0.0.0", "127.0.0.1"] \ No newline at end of file diff --git a/localNetwork/README.md b/localNetwork/README.md deleted file mode 100644 index 875936b..0000000 --- a/localNetwork/README.md +++ /dev/null @@ -1,83 +0,0 @@ -# Local Continuously Running Network (localNetwork) - -This tool runs several servers as a local simulation of the xx network. -The basic structure is as follows: - -* 3 cMix Nodes, BatchSize of 32 -* 3 Gateways, each connected to its own node -* User Discovery Bot -* Scheduling Server -* Client Registrar - -With these tools you may run the xxDK off of the produced [ndf](./ndf.json), testing locally without -having to operate on MainNet or any other live network. - -## Operating the Network - -To run the local network, you only need to run either `run.sh` or `runpublic.sh`. The difference -between these two scripts is described below, in the [scripts section](#scripts). Below is an example of running -`run.sh`: - -```commandline -./run.sh -rm: cannot remove 'gateway*-knownRound': No such file or directory -rm: cannot remove 'errServer-*': No such file or directory -rm: cannot remove '*.log': No such file or directory -rm: cannot remove 'roundId.txt': No such file or directory -rm: cannot remove '*-knownRound': No such file or directory -rm: cannot remove 'updateId*': No such file or directory -rm: cannot remove 'lastupdateid*': No such file or directory -rm: cannot remove 'udbsession': No such file or directory -STARTING SERVERS... -Permissioning: 112749 -Client Registrar: 112750 -Server 0: 112757 -Server 1: 112762 -Server 2: 112763 -Gateway 0 -- 112774 -Gateway 1 -- 112775 -Gateway 2 -- 112776 -You can't use the network until rounds run. -If it doesn't happen after 1 minute, please Ctrl+C -and review logs for what went wrong. -Waiting for rounds to run..............STARTING UDB... -UDB: 112937 -\nNetwork rounds have run. You may now attempt to connect. -Press enter to exit... -``` - -This script will run continuously until the user has sent a kill signal. The run script expects -`Enter/Return` once the network is set up. However, at any point prior of after the network is set -up, the user may kill the script using standard kill signals (`CTR+C`, `CTR+D`, etc.). - -## Scripts - -### `run.sh` -The `run.sh` script will run the network with internal IP addresses. This will allow the user -to test the xxDK from the machine running the local network. - -### runpublish.sh` -The `runpublish.sh` runs the network with remotely accessible IP addresses. This -will allow the user to test the xxDK from another machine, provided they have passed the ndf -along. - -## Configurability of Local Network - -If you wish to test with a larger local network, you may use the [config file generation script](./configGen/gen.py). -This will generate a programmable number of gateways/servers config files. - The snippet below gives an example on how to run this script: - -```commandline -$ cd configGen/ -$ python3 gen.py -Total number of nodes: 9 -Minimum number of nodes online to start network: 3 -Size of each team: 3 -``` - -This example generates 9 cMix nodes with 9 associated gateways. The rounds will have 3 nodes in a team, -and the network only needs 3 nodes running to start running rounds. - -Once config files have been generated, you need only execute the run script to run a network of the desired size -and specifications. Please note that this network does run locally, and as such larger networks -may be resource intensive (depending on the user's machine). diff --git a/localNetwork/client-registrar.yaml b/localNetwork/client-registrar.yaml deleted file mode 100644 index 8187c68..0000000 --- a/localNetwork/client-registrar.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# ================================== -# Client Registrar Configuration -# ================================== - -# Log message level (0 = info, 1 = debug, >1 = trace) -logLevel: 0 -# Path to log file -logPath: "results/client-registrar.log" - -# Public address, used in NDF it gives to client -publicAddress: "0.0.0.0:11421" -# The listening port of this server -port: 11421 - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -# Maximum number of connections per period -userRegCapacity: 1000 -# How often the number of connections is reset -userRegLeakPeriod: "24h" - -# Database connection information -dbUsername: "cmix" -dbPassword: "" -dbName: "cmix_server" -dbAddress: "" - -# List of client codes to be added to the database (for testing) -clientRegCodes: - - "AAAA" - - "BBBB" - - "CCCC" diff --git a/localNetwork/configFileGeneration/gateway_template.yaml b/localNetwork/configFileGeneration/gateway_template.yaml deleted file mode 100644 index 21ca39e..0000000 --- a/localNetwork/configFileGeneration/gateway_template.yaml +++ /dev/null @@ -1,79 +0,0 @@ -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Log message level -loglevel: 0 - -# Output log file -log: "results/gateways/gateway-0.log" - -# Port for Gateway to listen on. Gateway must be the only listener on this port. -# Required field. -Port: 8200 - -# Local IP address of the Gateway, used for internal listening. Expects an IPv4 -# address without a port. (Default "0.0.0.0") -listeningAddress: "" - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# The public IP address of the Node associated with this Gateway. -cmixAddress: "{NODE_ADDR}" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/misc/gatewayIDF-0.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - -# How often the periodic storage tracker checks for items older than the -# retention period value. Expects duration in "s", "m", "h". (Defaults to 5 -# minutes) -cleanupInterval: 5m - -# How long a message record should last in the gossip buffer if it arrives -# before the Gateway starts handling the gossip. (Default 300s) -bufferExpiration: 300s - -# Frequency with which to check the gossip buffer. Should be long, since the -# thread takes a lock each time it checks the buffer. (Default 150s) -monitorThreadFrequency: 150s - -# Flags for rate limiting communications - -# The capacity of rate limiting buckets in the map. (Default 20) -capacity: 20 - -# The rate that the rate limiting bucket leaks tokens at [tokens/ns]. (Default 3) -leakedTokens: 3 - -# How often the number of leaked tokens is leaked from the bucket. (Default 1ms) -leakDuration: 1ms - -# How often inactive buckets are removed. (Default 10s) -pollDuration: 10s - -# The max age of a bucket without activity before it is removed. (Default 10s) -bucketMaxAge: 10s - -devMode: true diff --git a/localNetwork/configFileGeneration/gen.py b/localNetwork/configFileGeneration/gen.py deleted file mode 100644 index 88799a5..0000000 --- a/localNetwork/configFileGeneration/gen.py +++ /dev/null @@ -1,103 +0,0 @@ -import os -import string -import random - -def randomString(stringLength=4): - letters = string.ascii_lowercase - return ''.join(random.choice(letters) for i in range(stringLength)) - -nodes = int(input("Total number of nodes: ")) -minStart = int(input("Minimum number of nodes online to start network: ")) -teamSize = int(input("Size of each team: ")) - -# Array of integers for ports of each server and gateway in the network -gateway_ports = [] -node_ports = [] -node_regCodes = [] - -server_template = "" -with open("server_template.yaml") as f: - server_template = f.read() - -gateway_template = "" -with open("gateway_template.yaml") as f: - gateway_template = f.read() - -reg_template = "" -with open("permissioning_template.yaml") as f: - reg_template = f.read() - -reg_json_template = "" -with open("registration_template.json") as f: - reg_json_template = f.read() - -# Generate a list of all ports servers and gateways occupy. Doing this as a -# separate step because their configs need every one listed, and generating them -# once is lighter on CPU cycles. -for i in range(nodes): - gateway_ports.append(8200+i) - node_ports.append(11200+i) - - regCode = randomString() - # If this regCode is already in the list, we loop until we get one that - # isn't - while regCode in node_regCodes: - regCode = randomString() - node_regCodes.append(regCode) - -# Generate server and gateway configs -for i in range(nodes): - with open("../server-{}.yaml".format(i), 'w') as f: - # Array of strings defining node and gateway IPs and ports - node_addrs = [] - node_addrs.append("\"{}\"".format(node_ports[i])) - # TODO: replace iplistoutput, idf, metrics log - # Create a new config based on template - s_config = server_template.replace("server-1", "server-" + str(i)) \ - .replace("gateway-1", "gateway-" + str(i)) \ - .replace("metrics-server-0", "metrics-server-" + str(i)) \ - .replace("ipList-1", "ipList-" + str(i)) \ - .replace("{NODE_ADDR}", "\r\n".join(node_addrs)) \ - .replace("{DB_ADDR}", "".join(["\"\""])) \ - .replace("AAAA", node_regCodes[i]) \ - .replace("nodeID-0.json", "nodeID-"+str(i)+".json") \ - .replace("11200", str(node_ports[i])) \ - .replace("results/servers/server-0", "results/servers/server-" + str(i)) \ - .replace("errServer-0.txt", "errServer-"+str(i)+".txt") - f.write(s_config) - - with open("../gateway-{}.yaml".format(i), 'w') as f: - # Array of strings defining node and gateway IPs and ports - node_addrs = [] - node_addrs.append("0.0.0.0:{}".format(node_ports[i])) - - # Create a new config based on template - g_config = gateway_template.replace("server-1", "server-" + str(i)) \ - .replace("gateway-0", "gateway-" + str(i)) \ - .replace("8200", str(gateway_ports[i])) \ - .replace("{NODE_ADDR}", "".join(node_addrs)) \ - .replace("gatewayIDF-0", "gatewayIDF-" + str(i)) - - f.write(g_config) - - -# Generate permissioning stuff -with open("../registration.json", "w") as f: - config = reg_json_template.replace("{teamSize}", str(teamSize)) - f.write(config) -with open("../permissioning-actual.yaml", "w") as f: - config = reg_template.replace("{minStart}", str(minStart)) - f.write(config) - -# Generate server regCodes file -with open("../regCodes.json", "w") as f: - f.write("[") - countries = ["CR", "GB", "SK", "HR", "IQ", "RU"] - for i in range(nodes): - f.write("{\"RegCode\": \"" + node_regCodes[i] + "\", \"Order\": \"" + \ - countries[i % len(countries)] + "\"}") - # If not the last element, write a comma - if i is not (nodes - 1): - f.write(",") - - f.write("]") diff --git a/localNetwork/configFileGeneration/permissioning_template.yaml b/localNetwork/configFileGeneration/permissioning_template.yaml deleted file mode 100644 index 7f55fe1..0000000 --- a/localNetwork/configFileGeneration/permissioning_template.yaml +++ /dev/null @@ -1,97 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -logLevel: 1 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening port of this server -port: 18000 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "0.0.0.0:6969" - -# Minimum number of nodes to begin running rounds. this differs from the number of members -# in a team because some scheduling algorithms may require multiple teams worth of nodes at minimum -minimumNodes: 3 - -# The minimum version required of gateways to connect -minGatewayVersion: "3.0.0" - -# The minimum version required of servers to connect -minServerVersion: "3.0.0" - -# The minimum version required of a client to connect -minClientVersion: "4.0.0" - -# Time interval (in seconds) between committing Node statistics to storage -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:18001" -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - -# Path to file with config for scheduling algorithem within the user directory -schedulingConfigPath: "registration_template.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 - diff --git a/localNetwork/configFileGeneration/registration_template.json b/localNetwork/configFileGeneration/registration_template.json deleted file mode 100644 index f66958a..0000000 --- a/localNetwork/configFileGeneration/registration_template.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": {teamSize}, - "BatchSize": 32, - "MinimumDelay": 60, - "RealtimeDelay": 120, - "SemiOptimalOrdering": true, - "Threshold": 0.3, - "NodeCleanUpInterval": 3, - "ResourceQueueTimeout": 300000 - - -} \ No newline at end of file diff --git a/localNetwork/configFileGeneration/server_template.yaml b/localNetwork/configFileGeneration/server_template.yaml deleted file mode 100644 index bd2258c..0000000 --- a/localNetwork/configFileGeneration/server_template.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# START YAML === -# registration code used for first time registration. Unique. Provided by xx network -registrationCode: "AAAA" -useGPU: false -devMode: true -rawPermAddr: true -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "results/servers/nodeID-0.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-0.log" - # - ipListOutput: "results/servers/ipList-1.txt" - # Path where an error file will be placed in the event of a fatal error - # used by the wrapper script - errOutput: "results/servers/errServer-0.txt" - # port the node will communicate on - port: 11200 - overridePublicIP: "0.0.0.0" -database: - name: "cmix_server" - username: "cmix" - password: "" - address: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:18000" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "results/servers/metrics-server-0.log" -# === END YAML diff --git a/localNetwork/gateway-0.yaml b/localNetwork/gateway-0.yaml deleted file mode 100644 index 171515e..0000000 --- a/localNetwork/gateway-0.yaml +++ /dev/null @@ -1,79 +0,0 @@ -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Log message level -loglevel: 0 - -# Output log file -log: "results/gateways/gateway-0.log" - -# Port for Gateway to listen on. Gateway must be the only listener on this port. -# Required field. -Port: 8200 - -# Local IP address of the Gateway, used for internal listening. Expects an IPv4 -# address without a port. (Default "0.0.0.0") -listeningAddress: "" - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# The public IP address of the Node associated with this Gateway. -cmixAddress: "0.0.0.0:11200" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/misc/gatewayIDF-0.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - -# How often the periodic storage tracker checks for items older than the -# retention period value. Expects duration in "s", "m", "h". (Defaults to 5 -# minutes) -cleanupInterval: 5m - -# How long a message record should last in the gossip buffer if it arrives -# before the Gateway starts handling the gossip. (Default 300s) -bufferExpiration: 300s - -# Frequency with which to check the gossip buffer. Should be long, since the -# thread takes a lock each time it checks the buffer. (Default 150s) -monitorThreadFrequency: 150s - -# Flags for rate limiting communications - -# The capacity of rate limiting buckets in the map. (Default 20) -capacity: 20 - -# The rate that the rate limiting bucket leaks tokens at [tokens/ns]. (Default 3) -leakedTokens: 3 - -# How often the number of leaked tokens is leaked from the bucket. (Default 1ms) -leakDuration: 1ms - -# How often inactive buckets are removed. (Default 10s) -pollDuration: 10s - -# The max age of a bucket without activity before it is removed. (Default 10s) -bucketMaxAge: 10s - -devMode: true diff --git a/localNetwork/gateway-1.yaml b/localNetwork/gateway-1.yaml deleted file mode 100644 index c10f2a4..0000000 --- a/localNetwork/gateway-1.yaml +++ /dev/null @@ -1,79 +0,0 @@ -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Log message level -loglevel: 0 - -# Output log file -log: "results/gateways/gateway-1.log" - -# Port for Gateway to listen on. Gateway must be the only listener on this port. -# Required field. -Port: 8201 - -# Local IP address of the Gateway, used for internal listening. Expects an IPv4 -# address without a port. (Default "0.0.0.0") -listeningAddress: "" - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# The public IP address of the Node associated with this Gateway. -cmixAddress: "0.0.0.0:11201" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/misc/gatewayIDF-1.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - -# How often the periodic storage tracker checks for items older than the -# retention period value. Expects duration in "s", "m", "h". (Defaults to 5 -# minutes) -cleanupInterval: 5m - -# How long a message record should last in the gossip buffer if it arrives -# before the Gateway starts handling the gossip. (Default 300s) -bufferExpiration: 300s - -# Frequency with which to check the gossip buffer. Should be long, since the -# thread takes a lock each time it checks the buffer. (Default 150s) -monitorThreadFrequency: 150s - -# Flags for rate limiting communications - -# The capacity of rate limiting buckets in the map. (Default 20) -capacity: 20 - -# The rate that the rate limiting bucket leaks tokens at [tokens/ns]. (Default 3) -leakedTokens: 3 - -# How often the number of leaked tokens is leaked from the bucket. (Default 1ms) -leakDuration: 1ms - -# How often inactive buckets are removed. (Default 10s) -pollDuration: 10s - -# The max age of a bucket without activity before it is removed. (Default 10s) -bucketMaxAge: 10s - -devMode: true diff --git a/localNetwork/gateway-2.yaml b/localNetwork/gateway-2.yaml deleted file mode 100644 index 5b16751..0000000 --- a/localNetwork/gateway-2.yaml +++ /dev/null @@ -1,79 +0,0 @@ -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Log message level -loglevel: 0 - -# Output log file -log: "results/gateways/gateway-2.log" - -# Port for Gateway to listen on. Gateway must be the only listener on this port. -# Required field. -Port: 8202 - -# Local IP address of the Gateway, used for internal listening. Expects an IPv4 -# address without a port. (Default "0.0.0.0") -listeningAddress: "" - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# The public IP address of the Node associated with this Gateway. -cmixAddress: "0.0.0.0:11202" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/misc/gatewayIDF-2.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - -# How often the periodic storage tracker checks for items older than the -# retention period value. Expects duration in "s", "m", "h". (Defaults to 5 -# minutes) -cleanupInterval: 5m - -# How long a message record should last in the gossip buffer if it arrives -# before the Gateway starts handling the gossip. (Default 300s) -bufferExpiration: 300s - -# Frequency with which to check the gossip buffer. Should be long, since the -# thread takes a lock each time it checks the buffer. (Default 150s) -monitorThreadFrequency: 150s - -# Flags for rate limiting communications - -# The capacity of rate limiting buckets in the map. (Default 20) -capacity: 20 - -# The rate that the rate limiting bucket leaks tokens at [tokens/ns]. (Default 3) -leakedTokens: 3 - -# How often the number of leaked tokens is leaked from the bucket. (Default 1ms) -leakDuration: 1ms - -# How often inactive buckets are removed. (Default 10s) -pollDuration: 10s - -# The max age of a bucket without activity before it is removed. (Default 10s) -bucketMaxAge: 10s - -devMode: true diff --git a/localNetwork/ndf.json b/localNetwork/ndf.json deleted file mode 100644 index 1a87178..0000000 --- a/localNetwork/ndf.json +++ /dev/null @@ -1 +0,0 @@ -{"Timestamp":"2019-12-20T16:29:17.475068867-08:00","Gateways":[{"Id":[80,88,123,40,173,239,204,78,152,58,208,191,117,100,128,180,222,99,203,138,138,126,236,35,255,230,36,22,15,229,159,206,1],"Address":"0.0.0.0:8200","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n"},{"Id":[119,202,117,27,100,163,223,134,153,205,212,237,214,173,127,236,24,192,194,144,189,255,197,189,165,121,229,68,140,42,188,246,1],"Address":"0.0.0.0:8300","Tls_certificate":"-----BEGIN CERTIFICATE-----\nMIIGHTCCBAWgAwIBAgIUAUBluP82Kv2R/dKPcpsl+9FLsXQwDQYJKoZIhvcNAQEL\nBQAwgZIxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJQ2xhcmVt\nb250MRAwDgYDVQQKDAdFbGl4eGlyMRQwEgYDVQQLDAtEZXZlbG9wbWVudDEZMBcG\nA1UEAwwQZ2F0ZXdheS5jbWl4LnJpcDEfMB0GCSqGSIb3DQEJARYQYWRtaW5AZWxp\neHhpci5pbzAeFw0xOTA4MTYwMDQ3NTFaFw0yMDA4MTUwMDQ3NTFaMIGSMQswCQYD\nVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCUNsYXJlbW9udDEQMA4GA1UE\nCgwHRWxpeHhpcjEUMBIGA1UECwwLRGV2ZWxvcG1lbnQxGTAXBgNVBAMMEGdhdGV3\nYXkuY21peC5yaXAxHzAdBgkqhkiG9w0BCQEWEGFkbWluQGVsaXh4aXIuaW8wggIi\nMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC0/EYr1DxZ59vWcqLybsW1oIiT\nAeDu1wQDHLW1qhsvn3KS1DNbQaan0b0xrAZAai3vSrEe9YIq8q7ew7DwiJEUVGN6\n+mlZQ7mQrzjpuWXjW8jmX1OZEp9pPe7Ze+nH9wqyMAt2RN1zawwxlb/YNqeRxi+v\ndTJ4yWeWXrxlqhgXml5miSlMMxHU0XjcZjLfJPn0xo2oHow84vT4TBdT+pwCFoId\n8JlxRjvyr16rO9KkB9nlVsJ0ov+fjXAirdgoka4tKjIDiYofiCDuZfqFccPQkdB4\n0vuFNymEWET1WC0w6PNo5iilOggBDvYjFLXhwC+KOF1lJ5dA7uAPW3l9iLhioGkW\nZd78Q3EgXtK6Kge4dW3DvJVeWLdsJwEIJUuuhjF2bB9oknTocHPwt8jvDaExuOO/\n0Gits0TQdeNDBDMmSxZQ1DJZ+NIRUl2YLfySXfjaZSqL1u7V0EaDWxhxRWQgI6EB\n+QcSGvqrJ0/Y/S5+cRHU5rd2WORwTUOCzjeQvvQXIQabGr5dInfHEdcuKoTFYQ0H\nLa50zEIt94aE2n/Dp0nvVbai+XyGZiSHurKsx5NaY70E1j+XFbiuz0uD9SmqGfgQ\nhj5YG+ml08q7DM3ySP352bXcM5D3Y3voLxc+Sr0LjUHAIUddClI4CLC5l0oJZC6O\nEHhUroCSxk9ufRmXYQIDAQABo2kwZzAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW\nBBRzwHeD/lxvYa6VAoZtm/LCYi8bujAfBgNVHSMEGDAWgBRzwHeD/lxvYa6VAoZt\nm/LCYi8bujAUBgNVHREEDTALgglmb28uY28udWswDQYJKoZIhvcNAQELBQADggIB\nAFLe9m8UrCgrRopBOsDTQrQUVpodG9ulfEHDZ3h+8y3rVth2O2/Cvfc11e5chXBW\n+YxItdmTFJJgOP/tdaUZUw43wv9ilNY/V9DfCOirYOi7+mD6hCtBakaxPz50vv3L\nGhfZM+esLhzEgU5xoaR5kdsjerqejBNUMdT8M3hGUhJeFQa0yx1sHGrqsU9i+JGc\nioamZM7zr5VP9uO7fOkA5wX8dCuvdgD1bTP4ISB1hdPAnoRiKTe8jaI/NraWwcFx\nSAznTpVxKwjzJ1cEytGLXw+3Sb1UeqTb4a8GLrMDofi/P7iUDLnvlFRMjRvFkoyH\nIn5pq/cWr0ezmEceOZ833aNWvSirKTJA0gJav+kp+tUPUIGjIATlJq1kaaIKMk4I\nSvwgsGkpHS1sO93R84NDqAb/Ob4mb/pc5n76nnSeUubyxxL8p7+N2+UBH1DStWuk\n/sj73bKVvHdsw57SVkG5TYrnt7hudVQBDi8jV3iXyS1b6YDxm1dKQCS2s7D0gynf\nxURNnrjaAVNjYcvfEGLAVZsOEU30YiiAVtotbbE8Wzvh3H2saj+oH/RLEQlYdG1B\nUgCXZutZon+z1HREUJ6A/VULgJFeyinJVvr8YiVblSJg6qmLvzVSu471ENSMGsNE\n9fjH7YYTYCmkZdkNXsipF/lxaJ5sPkKT8FaHRpR6N9Nj\n-----END CERTIFICATE-----\n"},{"Id":[200,43,213,232,11,4,43,121,126,227,145,167,225,172,1,39,137,105,111,232,83,218,195,186,203,60,99,122,182,145,162,189,1],"Address":"0.0.0.0:8400","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n"}],"Nodes":[{"Id":[80,88,123,40,173,239,204,78,152,58,208,191,117,100,128,180,222,99,203,138,138,126,236,35,255,230,36,22,15,229,159,206,2],"Address":"-----BEGIN CERTIFICATE-----\n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\nJd4xiuF9ZfCGdFcwN/NHm4NFn1aKBGJK/w==\n-----END CERTIFICATE-----\n","Tls_certificate":"127.0.0.1:57966"},{"Id":[119,202,117,27,100,163,223,134,153,205,212,237,214,173,127,236,24,192,194,144,189,255,197,189,165,121,229,68,140,42,188,246,2],"Address":"-----BEGIN CERTIFICATE-----\n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\ngYLhcEAL2qjMpku9ZGWLYhV63oGEbPU4+w==\n-----END CERTIFICATE-----\n","Tls_certificate":"127.0.0.1:57962"},{"Id":[200,43,213,232,11,4,43,121,126,227,145,167,225,172,1,39,137,105,111,232,83,218,195,186,203,60,99,122,182,145,162,189,2],"Address":"-----BEGIN CERTIFICATE-----\n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\nJBoJnTRJ5Q4FR9gYHFPsJUBS4V5B2Rs42Q==\n-----END CERTIFICATE-----\n","Tls_certificate":"127.0.0.1:57964"}],"Registration":{"Address":"0.0.0.0:18000","Tls_certificate":"-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n"},"Udb":{"Id":[0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3]},"E2e":{"Prime":"E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873","Small_prime":"","Generator":"2"},"Cmix":{"Prime":"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF","Small_prime":"","Generator":"B22FDF91EE6BA01BDE4969C1A986EA1F81C4A1795921403F3437D681D05E95167C2F6414CCB74AC8D6B3BA8C0E85C7E4DEB0E8B5256D37BC5C21C8BE068F5342858AFF2FC7FF2644EBED8B10271941C74C86CCD71AA6D2D98E4C8C70875044900F842998037A7DFB9BC63BAF1BC2800E73AF9615E4F5B869D4C6DE6E5F48FACE9CA594CC5D228CB7F763A0AD6BF6ED78B27F902D9ADA38A1FCD7D09E398CE377BB15A459044D3B8541DC6D8049B66AE1662682254E69FAD31CA0016251D0522EF8FE587A3F6E3AB1E5F9D8C2998874ABAB205217E95B234A7D3E69713B884918ADB57360B5DE97336C7DC2EB8A3FEFB0C4290E7A92FF5758529AC45273135427"}} diff --git a/localNetwork/permissioning-actual.yaml b/localNetwork/permissioning-actual.yaml deleted file mode 100644 index 3f217f0..0000000 --- a/localNetwork/permissioning-actual.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -logLevel: 1 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening port of this server -port: 18000 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -# Minimum number of nodes to begin running rounds. this differs from the number of members -# in a team because some scheduling algorithms may require multiple teams worth of nodes at minimum -minimumNodes: 3 - -# The minimum version required of gateways to connect -minGatewayVersion: "3.0.0" - -# The minimum version required of servers to connect -minServerVersion: "3.0.0" - -# The minimum version required of a client to connect -minClientVersion: "4.0.0" - -# Time interval (in seconds) between committing Node statistics to storage -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Parameters for configuring rate limiting clients Configures the -# leaky buckets used in gateway In this method of rate limiting, -# requests add to a bucket with a specified capacity. The bucket -# leaks at a rate of leakedTokens/leakDuration, and any requests that -# would 'overflow the bucket' are not processed -RateLimiting: - # Capacity determines the total capacity of a ratelimiting bucket - Capacity: 1000 - # The amount of capacity used decreases over time, at a rate of LeakedTokens/LeakedDuration - LeakedTokens: 100 - # Duration is in nanoseconds - LeakDuration: 2000000000 - - -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:18001" -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - -# Path to file with config for scheduling algorithem within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 - diff --git a/localNetwork/permissioning.yaml b/localNetwork/permissioning.yaml deleted file mode 100644 index 76b9e71..0000000 --- a/localNetwork/permissioning.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -loglevel: 0 -# Path to log file -logPath: "results/registration.log" - -# The listening port of this server -port: 11420 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -# Minimum number of nodes to begin running rounds. this differs from the number of members -# in a team because some scheduling algorithms may require multiple teams worth of nodes at minimum -minimumNodes: 3 - -# The minimum version required of gateways to connect -minGatewayVersion: "3.0.0" - -# The minimum version required of servers to connect -minServerVersion: "3.0.0" - -# The minimum version required of a client to connect -minClientVersion: "4.0.0" - -# Time interval (in seconds) between committing Node statistics to storage -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Parameters for configuring rate limiting clients Configures the -# leaky buckets used in gateway In this method of rate limiting, -# requests add to a bucket with a specified capacity. The bucket -# leaks at a rate of leakedTokens/leakDuration, and any requests that -# would 'overflow the bucket' are not processed -RateLimiting: - # Capacity determines the total capacity of a ratelimiting bucket - Capacity: 1000 - # The amount of capacity used decreases over time, at a rate of LeakedTokens/LeakedDuration - LeakedTokens: 100 - # Duration is in nanoseconds - LeakDuration: 2000000000 - - -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:18001" -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -# E2E/CMIX Primes -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - -# Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 - diff --git a/localNetwork/regCodes.json b/localNetwork/regCodes.json deleted file mode 100644 index e1638bb..0000000 --- a/localNetwork/regCodes.json +++ /dev/null @@ -1 +0,0 @@ -[{"RegCode": "wksc", "Order": "CR"},{"RegCode": "uvdt", "Order": "GB"},{"RegCode": "npdd", "Order": "SK"}] \ No newline at end of file diff --git a/localNetwork/registration.json b/localNetwork/registration.json deleted file mode 100644 index 0d1ae57..0000000 --- a/localNetwork/registration.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": 3, - "BatchSize": 32, - "MinimumDelay": 60, - "RealtimeDelay": 120, - "SemiOptimalOrdering": true, - "Threshold": 0.3, - "NodeCleanUpInterval": 3, - "ResourceQueueTimeout": 300000 - - -} \ No newline at end of file diff --git a/localNetwork/run.sh b/localNetwork/run.sh deleted file mode 100755 index a41f2f4..0000000 --- a/localNetwork/run.sh +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/env bash - -set -e - -# Clear out the previous run's logs -rm gateway*-knownRound || true -rm errServer-* || true -rm *.log || true -rm roundId.txt || true -rm *-knownRound || true -rm updateId* || true -rm lastupdateid* || true -rm -r udbsession || true -rm -fr results || true -# Globals -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -DUMMYOUT=results/dummy-console.txt -UDBOUT=results/udb-console.txt -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS - -## Uncomment to allow for verbose gRPC logs -#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 -#export GRPC_GO_LOG_SEVERITY_LEVEL=info - - -nodes=$(ls -1q ./server-*.yaml | wc -l | xargs) - -BIN_PATH="../bin" -CONFIG_PATH="$(pwd)" - -# Execute finish function on exit -trap finish EXIT -trap finish INT - -echo "STARTING SERVERS..." - -# Copy udbContact into place when running locally. -cp udbContact.bin results/udbContact.bin - -# Run Permissioning -"$BIN_PATH"/permissioning \ ---logLevel 2 -c "$CONFIG_PATH/permissioning-actual.yaml" &> results/registration_err.log & - -echo "Permissioning: " $! - -# Run Client Registrar -"$BIN_PATH"/client-registrar \ --l 2 -c "$CONFIG_PATH/client-registrar.yaml" &> results/clientRegistrar_err.log & - -echo "Client Registrar: " $! - -# Run server -for i in $(seq $nodes $END); do - x=$(($i - 1)) - "$BIN_PATH"/server \ - -l 2 --config "$CONFIG_PATH/server-$x.yaml" &> $SERVERLOGS/server$x\_err.log & - - echo "Server $x: " $! -done - -# Run Gateway -for i in $(seq $nodes $END); do - x=$(($i - 1)) - "$BIN_PATH"/gateway \ - --logLevel 2 --config "$CONFIG_PATH/gateway-$x.yaml" &> $GATEWAYLOGS/gw$x\_err.log & - PIDVAL=$! - echo "Gateway $x -- $PIDVAL" - -done - -# Pipe child PIDs into file -jobs -p > results/serverpids -finish() { - # Read in and kill all child PIDs - # NOTE: jobs -p doesn't work in a signal handler - echo "STOPPING SERVERS AND GATEWAYS..." - for job in $(cat results/serverpids) - do - echo "KILLING $job" - kill $job || true - done - sleep 5 - - for job in $(cat results/serverpids) - do - echo "KILL -9 $job" - kill -9 $job || true - done - set +x -} - -echo "You can't use the network until rounds run." -echo "If it doesn't happen after 1 minute, please Ctrl+C" -echo "and review logs for what went wrong." -rm rid.txt || true -touch rid.txt -echo -n "Waiting for rounds to run..." -cnt=0 -while [ ! -s rid.txt ] && [ $cnt -lt 240 ]; do - sleep 1 - grep -a "RID 1 ReceiveFinishRealtime END" results/servers/*.log > rid.txt || true - cnt=$(($cnt + 1)) - echo -n "." -done - -# Run UDB -# Start a user discovery bot server -echo "STARTING UDB..." -UDBCMD="../bin/udb --logLevel 3 --config udb.yaml -l 1 --protoUserPath udbProto.json" -$UDBCMD >> $UDBOUT 2>&1 & -echo "UDB: " $! -echo $! >> results/serverpids - -echo "\nNetwork rounds have run. You may now attempt to connect." - - -sleep 4 - - - - - -# Wait until user input to exit -read -p 'Press enter to exit...' diff --git a/localNetwork/runpublic.sh b/localNetwork/runpublic.sh deleted file mode 100755 index 0c0bff3..0000000 --- a/localNetwork/runpublic.sh +++ /dev/null @@ -1,31 +0,0 @@ -# Grab the IP of the NIC inside of our machine so we can 'sed' it into the -# config files -if [[ "$OSTYPE" == "linux-gnu"* ]]; then - # Linux - export IP=$(netstat -nr | grep default | grep -v tun | awk '{print $2}') -elif [[ "$OSTYPE" == "darwin"* ]]; then - # macOS/iOS/watchOS/tvOS/iPadOS/some Darwin distros - export IP=$(ipconfig getifaddr $(netstat -nr | grep default | head -1 | awk '{print $4}')) -else - # Unknown. - echo I don\'t know how to get an IP from your OS! - exit -fi - -# Backup the configs to a folder labelled after the epoch, so an alphabetical -# sort will sort the oldest to newest. Your oldest backup is probably the -# original files, but I would suggest trying "git reset --hard" instead if you -# just want to revert your configs. -mkdir -p configbackups -cp -r configurations configbackups/$(date +%s) - -# Replace local IPs with the IP our NIC has in all config files -sed -i '.bak' "s/127\.0\.0\.1/$IP/g" configurations/* -sed -i '.bak' "s/0\.0\.0\.0/$IP/g" configurations/* -# Since we back the files up into configbackups, this is only clutter after -# the sed commands finish. We can clean it up. -rm configurations/*.bak - -# Run the localenvironment -echo "Preparing to run on $IP ..." -./run.sh diff --git a/localNetwork/server-0.yaml b/localNetwork/server-0.yaml deleted file mode 100644 index c2fb562..0000000 --- a/localNetwork/server-0.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# START YAML === -# registration code used for first time registration. Unique. Provided by xx network -registrationCode: "wksc" -useGPU: false -devMode: true -rawPermAddr: true -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "results/servers/nodeID-0.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-0.log" - # - ipListOutput: "results/servers/ipList-0.txt" - # Path where an error file will be placed in the event of a fatal error - # used by the wrapper script - errOutput: "results/servers/errServer-0.txt" - # port the node will communicate on - port: 11200 - overridePublicIP: "0.0.0.0" -database: - name: "cmix_server" - username: "cmix" - password: "" - address: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:18000" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "results/servers/metrics-server-0.log" -# === END YAML diff --git a/localNetwork/server-1.yaml b/localNetwork/server-1.yaml deleted file mode 100644 index f5881f4..0000000 --- a/localNetwork/server-1.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# START YAML === -# registration code used for first time registration. Unique. Provided by xx network -registrationCode: "uvdt" -useGPU: false -devMode: true -rawPermAddr: true -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "results/servers/nodeID-1.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-1.log" - # - ipListOutput: "results/servers/ipList-1.txt" - # Path where an error file will be placed in the event of a fatal error - # used by the wrapper script - errOutput: "results/servers/errServer-1.txt" - # port the node will communicate on - port: 11201 - overridePublicIP: "0.0.0.0" -database: - name: "cmix_server" - username: "cmix" - password: "" - address: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:18000" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "results/servers/metrics-server-1.log" -# === END YAML diff --git a/localNetwork/server-2.yaml b/localNetwork/server-2.yaml deleted file mode 100644 index eb10568..0000000 --- a/localNetwork/server-2.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# START YAML === -# registration code used for first time registration. Unique. Provided by xx network -registrationCode: "npdd" -useGPU: false -devMode: true -rawPermAddr: true -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "results/servers/nodeID-2.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-2.log" - # - ipListOutput: "results/servers/ipList-2.txt" - # Path where an error file will be placed in the event of a fatal error - # used by the wrapper script - errOutput: "results/servers/errServer-2.txt" - # port the node will communicate on - port: 11202 - overridePublicIP: "0.0.0.0" -database: - name: "cmix_server" - username: "cmix" - password: "" - address: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:18000" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "results/servers/metrics-server-2.log" -# === END YAML diff --git a/localNetwork/udb.yaml b/localNetwork/udb.yaml deleted file mode 100644 index 14b3ed1..0000000 --- a/localNetwork/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "18001" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:18000" -devMode: true \ No newline at end of file diff --git a/localNetwork/udbContact.bin b/localNetwork/udbContact.bin deleted file mode 100644 index 10b0846..0000000 --- a/localNetwork/udbContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc> \ No newline at end of file diff --git a/localNetwork/udbProto.json b/localNetwork/udbProto.json deleted file mode 100644 index 940cadf..0000000 --- a/localNetwork/udbProto.json +++ /dev/null @@ -1 +0,0 @@ -{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}} \ No newline at end of file diff --git a/localNetwork/whitelist.json b/localNetwork/whitelist.json deleted file mode 100644 index 446eca0..0000000 --- a/localNetwork/whitelist.json +++ /dev/null @@ -1 +0,0 @@ -["0.0.0.0", "127.0.0.1"] \ No newline at end of file diff --git a/basice2e/betanet.txt b/network/betanet.txt similarity index 100% rename from basice2e/betanet.txt rename to network/betanet.txt diff --git a/network/cleanup.sh b/network/cleanup.sh new file mode 100644 index 0000000..5b07971 --- /dev/null +++ b/network/cleanup.sh @@ -0,0 +1,46 @@ +NETRESULTS=$1/network + +finish() { + echo "STOPPING SERVERS AND GATEWAYS..." + if [ -n "$NSYSENABLED" ] + then + nsys stop --session=gputest + fi + # NOTE: jobs -p doesn't work in a signal handler + for job in $(cat $NETRESULTS/serverpids) + do + echo "KILLING $job" + kill $job || true + done + + sleep 5 + + for job in $(cat $NETRESULTS/serverpids) + do + echo "KILL -9 $job" + kill -9 $job || true + done + rm -f $NETRESULTS/serverpids + #tail $SERVERLOGS/* + #tail $CLIENTCLEAN/* + #diff -aruN clients.goldoutput $CLIENTCLEAN + + #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true + #diff -ruN results/client-errors.txt noerrors.txt + cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > $NETRESULTS/server-errors.txt || true + cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> $NETRESULTS/server-errors.txt || true + diff -aruN $NETRESULTS/server-errors.txt noerrors.txt + IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" + IGNORESERVE="Failed to serve " + IGNORESTART="Failed to start " + IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" + cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true + cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true + diff -aruN results/gateway-errors.txt noerrors.txt + echo "Checking backup files for equality..." + # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt + #diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true + # diff -aruN client120BackupDiff.txt noerrors.txt + #echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!" + #diff -aruN client121BackupDiff.txt noerrors.txt +} diff --git a/fileTransfer/client-registrar.yaml b/network/client-registrar.yaml similarity index 88% rename from fileTransfer/client-registrar.yaml rename to network/client-registrar.yaml index 3ab9c33..1d43b8b 100644 --- a/fileTransfer/client-registrar.yaml +++ b/network/client-registrar.yaml @@ -5,7 +5,7 @@ # Log message level (0 = info, 1 = debug, >1 = trace) logLevel: 0 # Path to log file -logPath: "results/client-registrar.log" +logPath: "results/network/client-registrar.log" # Public address, used in NDF it gives to client publicAddress: "0.0.0.0:20061" @@ -14,9 +14,9 @@ port: 20061 # === REQUIRED FOR ENABLING TLS === # Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" +keyPath: "keys/cmix.rip.key" # Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" +certPath: "keys/cmix.rip.crt" # Maximum number of connections per period userRegCapacity: 1000 diff --git a/basice2e/devnet.txt b/network/devnet.txt similarity index 100% rename from basice2e/devnet.txt rename to network/devnet.txt diff --git a/channels/gateway-1.yaml b/network/gateway-1.yaml similarity index 85% rename from channels/gateway-1.yaml rename to network/gateway-1.yaml index 401f3c9..2a93c39 100644 --- a/channels/gateway-1.yaml +++ b/network/gateway-1.yaml @@ -13,7 +13,7 @@ loglevel: 2 # Output log file -log: "results/gateways/gateway-1.log" +log: "results/network/gateways/gateway-1.log" # The public IP address and port of the node associated with this gateway cmixAddress: "0.0.0.0:10060" @@ -30,17 +30,17 @@ overridePublicIP: "0.0.0.0" messageTimeout: "1800s" # Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-0.json" +idfPath: "results/network/gateways/gatewayIDF-0.json" # === REQUIRED FOR ENABLING TLS === # Path to the private key file -keyPath: "../keys/cmix.rip.key" +keyPath: "keys/cmix.rip.key" # Path to the certificate file -certPath: "../keys/cmix.rip.crt" +certPath: "keys/cmix.rip.crt" # Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" +schedulingCertPath: "keys/cmix.rip.crt" # Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" +cmixCertPath: "keys/cmix.rip.crt" devMode: true diff --git a/channels/gateway-2.yaml b/network/gateway-2.yaml similarity index 85% rename from channels/gateway-2.yaml rename to network/gateway-2.yaml index a498cbb..09f2207 100644 --- a/channels/gateway-2.yaml +++ b/network/gateway-2.yaml @@ -13,7 +13,7 @@ loglevel: 2 # Output log file -log: "results/gateways/gateway-2.log" +log: "results/network/gateways/gateway-2.log" # The public IP address and port of the node associated with this gateway cmixAddress: "0.0.0.0:10061" @@ -30,17 +30,18 @@ overridePublicIP: "0.0.0.0" messageTimeout: "1800s" # Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-1.json" +idfPath: "results/network/gateways/gatewayIDF-1.json" # === REQUIRED FOR ENABLING TLS === # Path to the private key file -keyPath: "../keys/cmix.rip.key" +keyPath: "keys/cmix.rip.key" # Path to the certificate file -certPath: "../keys/cmix.rip.crt" +certPath: "keys/cmix.rip.crt" # Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" +schedulingCertPath: "keys/cmix.rip.crt" # Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" +cmixCertPath: "keys/cmix.rip.crt" + devMode: true diff --git a/channels/gateway-3.yaml b/network/gateway-3.yaml similarity index 85% rename from channels/gateway-3.yaml rename to network/gateway-3.yaml index 9f36de1..4687f9b 100644 --- a/channels/gateway-3.yaml +++ b/network/gateway-3.yaml @@ -13,7 +13,7 @@ loglevel: 2 # Output log file -log: "results/gateways/gateway-3.log" +log: "results/network/gateways/gateway-3.log" # The public IP address and port of the node associated with this gateway cmixAddress: "0.0.0.0:10062" @@ -30,17 +30,18 @@ overridePublicIP: "0.0.0.0" messageTimeout: "1800s" # Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-2.json" +idfPath: "results/network/gateways/gatewayIDF-2.json" # === REQUIRED FOR ENABLING TLS === # Path to the private key file -keyPath: "../keys/cmix.rip.key" +keyPath: "keys/cmix.rip.key" # Path to the certificate file -certPath: "../keys/cmix.rip.crt" +certPath: "keys/cmix.rip.crt" # Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" +schedulingCertPath: "keys/cmix.rip.crt" # Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" +cmixCertPath: "keys/cmix.rip.crt" + devMode: true diff --git a/fileTransfer/gateway-4.yaml b/network/gateway-4.yaml similarity index 85% rename from fileTransfer/gateway-4.yaml rename to network/gateway-4.yaml index f07b197..098bdad 100644 --- a/fileTransfer/gateway-4.yaml +++ b/network/gateway-4.yaml @@ -13,7 +13,7 @@ loglevel: 2 # Output log file -log: "results/gateways/gateway-4.log" +log: "results/network/gateways/gateway-4.log" # The public IP address and port of the node associated with this gateway cmixAddress: "0.0.0.0:10063" @@ -30,17 +30,18 @@ overridePublicIP: "0.0.0.0" messageTimeout: "1800s" # Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-3.json" +idfPath: "results/network/gateways/gatewayIDF-3.json" # === REQUIRED FOR ENABLING TLS === # Path to the private key file -keyPath: "../keys/cmix.rip.key" +keyPath: "keys/cmix.rip.key" # Path to the certificate file -certPath: "../keys/cmix.rip.crt" +certPath: "keys/cmix.rip.crt" # Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" +schedulingCertPath: "keys/cmix.rip.crt" # Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" +cmixCertPath: "keys/cmix.rip.crt" + devMode: true diff --git a/fileTransfer/gateway-5.yaml b/network/gateway-5.yaml similarity index 85% rename from fileTransfer/gateway-5.yaml rename to network/gateway-5.yaml index ca8a401..11b08f0 100644 --- a/fileTransfer/gateway-5.yaml +++ b/network/gateway-5.yaml @@ -13,7 +13,7 @@ loglevel: 2 # Output log file -log: "results/gateways/gateway-5.log" +log: "results/network/gateways/gateway-5.log" # The public IP address and port of the node associated with this gateway cmixAddress: "0.0.0.0:10064" @@ -30,17 +30,18 @@ overridePublicIP: "0.0.0.0" messageTimeout: "1800s" # Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-4.json" +idfPath: "results/network/gateways/gatewayIDF-4.json" # === REQUIRED FOR ENABLING TLS === # Path to the private key file -keyPath: "../keys/cmix.rip.key" +keyPath: "keys/cmix.rip.key" # Path to the certificate file -certPath: "../keys/cmix.rip.crt" +certPath: "keys/cmix.rip.crt" # Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" +schedulingCertPath: "keys/cmix.rip.crt" # Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" +cmixCertPath: "keys/cmix.rip.crt" + devMode: true diff --git a/basice2e/mainnet.txt b/network/mainnet.txt similarity index 100% rename from basice2e/mainnet.txt rename to network/mainnet.txt diff --git a/channels/network.config b/network/network.config similarity index 100% rename from channels/network.config rename to network/network.config diff --git a/network/network.sh b/network/network.sh index 2a7b2cc..0df7207 100755 --- a/network/network.sh +++ b/network/network.sh @@ -5,32 +5,49 @@ # network.sh returns to your script or shell. Sourcing it will "import" the commands into your script instead, causing # the trap instruction to stop the network when your script/shell exits. +set -e +mkdir -p .elixxir + +if [ $# -gt 2 ] +then + echo "usage: $0 results_dir bin_dir" + exit +fi + +# NOTE these must have different names for each package +RESULTS=$1 +NETRESULTS=$RESULTS/network +NETBIN=$2 + +rm -fr $NETRESULTS +mkdir $NETRESULTS + echo "STARTING SERVERS..." -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -UDBOUT=results/udb-console.txt +SERVERLOGS=$NETRESULTS/servers +GATEWAYLOGS=$NETRESULTS/gateways +UDBOUT=$NETRESULTS/udb-console.txt -# Copy udbContact into place when running locally. -cp udbContact.bin results/udbContact.bin +mkdir -p $SERVERLOGS +mkdir -p $GATEWAYLOGS -PERMCMD="../bin/permissioning --logLevel $DEBUGLEVEL -c permissioning.yaml " -$PERMCMD > results/permissioning-console.txt 2>&1 & +PERMCMD="$NETBIN/permissioning --logLevel $DEBUGLEVEL -c network/permissioning.yaml " +$PERMCMD > $NETRESULTS/permissioning-console.txt 2>&1 & PIDVAL=$! echo "$PERMCMD -- $PIDVAL" # Run Client Registrar -CLIENT_REG_CMD="../bin/client-registrar \ --l 2 -c client-registrar.yaml" -$CLIENT_REG_CMD > results/client-registrat-console.txt 2>&1 & +CLIENT_REG_CMD="$NETBIN/client-registrar \ +-l 2 -c network/client-registrar.yaml" +$CLIENT_REG_CMD > $NETRESULTS/client-registrat-console.txt 2>&1 & PIDVAL=$! echo "$CLIENT_REG_CMD -- $PIDVAL" for SERVERID in $(seq 5 -1 1) do IDX=$(($SERVERID - 1)) - SERVERCMD="../bin/server --logLevel $DEBUGLEVEL --config server-$SERVERID.yaml" + SERVERCMD="$NETBIN/server --logLevel $DEBUGLEVEL --config network/server-$SERVERID.yaml" if [ $SERVERID -eq 5 ] && [ -n "$NSYSENABLED" ] then SERVERCMD="nsys profile --session-new=gputest --trace=cuda -o server-$SERVERID $SERVERCMD" @@ -44,41 +61,13 @@ done for GWID in $(seq 5 -1 1) do IDX=$(($GWID - 1)) - GATEWAYCMD="../bin/gateway --logLevel $DEBUGLEVEL --config gateway-$GWID.yaml" + GATEWAYCMD="$NETBIN/gateway --logLevel $DEBUGLEVEL --config network/gateway-$GWID.yaml" $GATEWAYCMD > $GATEWAYLOGS/gateway-$GWID-console.txt 2>&1 & PIDVAL=$! echo "$GATEWAYCMD -- $PIDVAL" done -jobs -p > results/serverpids - -finish() { - echo "STOPPING SERVERS AND GATEWAYS..." - if [ -n "$NSYSENABLED" ] - then - nsys stop --session=gputest - fi - # NOTE: jobs -p doesn't work in a signal handler - for job in $(cat results/serverpids) - do - echo "KILLING $job" - kill $job || true - done - - sleep 5 - - for job in $(cat results/serverpids) - do - echo "KILL -9 $job" - kill -9 $job || true - done - #tail $SERVERLOGS/* - #tail $CLIENTCLEAN/* - #diff -aruN clients.goldoutput $CLIENTCLEAN -} - -trap finish EXIT -trap finish INT +jobs -p > $NETRESULTS/serverpids # Sleeps can die in a fire on the sun, we wait for the servers to start running # rounds @@ -88,23 +77,25 @@ cnt=0 echo -n "Waiting for a round to run" while [ ! -s rid.txt ] && [ $cnt -lt 120 ]; do sleep 1 - grep -a "RID 1 ReceiveFinishRealtime END" results/servers/server-* > rid.txt || true + grep -a "RID 1 ReceiveFinishRealtime END" $NETRESULTS/servers/server-* > rid.txt || true cnt=$(($cnt + 1)) echo -n "." done # Start a user discovery bot server echo "STARTING UDB..." -UDBCMD="../bin/udb --logLevel $DEBUGLEVEL --skipVerification --protoUserPath udbProto.json --config udb.yaml -l 1" +UDBCMD="$NETBIN/udb --logLevel $DEBUGLEVEL --skipVerification --protoUserPath network/udbProto.json --config network/udb.yaml -l 1" $UDBCMD >> $UDBOUT 2>&1 & PIDVAL=$! -echo $PIDVAL >> results/serverpids +echo $PIDVAL >> $NETRESULTS/serverpids echo "$UDBCMD -- $PIDVAL" rm rid.txt || true while [ ! -s rid.txt ] && [ $cnt -lt 30 ]; do sleep 1 - grep -a "Sending Poll message" results/udb-console.txt > rid.txt || true + grep -a "Sending Poll message" $NETRESULTS/udb-console.txt > rid.txt || true cnt=$(($cnt + 1)) echo -n "." done +echo "localhost:1060" > $RESULTS/startgwserver.txt + diff --git a/basice2e/noerrors.txt b/network/noerrors.txt similarity index 100% rename from basice2e/noerrors.txt rename to network/noerrors.txt diff --git a/fileTransfer/permissioning.yaml b/network/permissioning.yaml similarity index 86% rename from fileTransfer/permissioning.yaml rename to network/permissioning.yaml index fdc37d1..1e132c0 100644 --- a/fileTransfer/permissioning.yaml +++ b/network/permissioning.yaml @@ -6,7 +6,7 @@ loglevel: 2 # Path to log file -logPath: "results/permissioning.log" +logPath: "results/network/permissioning.log" # The listening port of this server port: 20060 @@ -41,35 +41,35 @@ permissiveIPChecking: true messageRetentionLimit: "168h" # Path to the file containing the round ID -roundIdPath: "results/roundId.txt" +roundIdPath: "results/network/roundId.txt" # Path to the file containing the update ID -updateIdPath: "results/updateId.txt" +updateIdPath: "results/network/updateId.txt" # Public address used in NDF to give to client registrationAddress: "0.0.0.0:20061" # Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" +whitelistedIpAddressesPath: "network/whitelist.txt" # Path to the node topology permissioning info -ndfOutputPath: "ndf.json" +ndfOutputPath: "network/ndf.json" # === REQUIRED FOR ENABLING TLS === # Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" +keyPath: "keys/cmix.rip.key" # Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" +certPath: "keys/cmix.rip.crt" -fullNdfOutputPath: "results/permissions-ndfoutput.json" -signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json" +fullNdfOutputPath: "results/network/permissions-ndfoutput.json" +signedPartialNDFOutputPath: "results/network/permissions-ndfoutput-partial.json" # === REQUIRED FOR ENABLING TLS === # Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" +udbCertPath: "keys/cmix.rip.crt" # "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" +udContactPath: "network/udbContact.bin" udbAddress: "127.0.0.1:30060" # Time interval (in minutes) in which the database is @@ -86,11 +86,11 @@ groups: # Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" +schedulingConfigPath: "network/registration.json" # Path to JSON file with list of Node registration codes (in order of network # placement) -RegCodesFilePath: "regCodes.json" +RegCodesFilePath: "network/regCodes.json" # Set address space size for ephemeral IDs addressSpace: 32 diff --git a/channels/regCodes.json b/network/regCodes.json similarity index 100% rename from channels/regCodes.json rename to network/regCodes.json diff --git a/broadcast/registration.json b/network/registration.json similarity index 100% rename from broadcast/registration.json rename to network/registration.json diff --git a/basice2e/release.txt b/network/release.txt similarity index 100% rename from basice2e/release.txt rename to network/release.txt diff --git a/channels/server-1.yaml b/network/server-1.yaml similarity index 71% rename from channels/server-1.yaml rename to network/server-1.yaml index b638db3..451bc4b 100644 --- a/channels/server-1.yaml +++ b/network/server-1.yaml @@ -9,15 +9,15 @@ cmix: paths: # Path where the ID will be stored after the ID is created on first run # used by the wrapper script - idf: "nodeID-0.json" + idf: "results/network/servers/nodeID-1.json" # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" + key: "keys/cmix.rip.key" # Path to where the log will be stored - log: "results/servers/server-1.log" - errOutput: "results/servers/server-1.err" - ipListOutput: "results/servers/iplist-1.txt" + log: "results/network/servers/server-1.log" + errOutput: "results/network/servers/server-1.err" + ipListOutput: "results/network/servers/iplist-1.txt" port: "10060" overridePublicIP: "127.0.0.1" database: @@ -28,15 +28,15 @@ database: gateway: paths: # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" scheduling: paths: # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" # IP Address of the permissioning server, provided by xx network address: "0.0.0.0:20060" metrics: # location of stored metrics data. Modification to set to permissioning # server instead of saving will be made at a later date - log: "metrics-server-1.log" + log: "results/network/servers/metrics-server-1.log" # === END YAML diff --git a/channels/server-2.yaml b/network/server-2.yaml similarity index 71% rename from channels/server-2.yaml rename to network/server-2.yaml index 1a00304..556d0a2 100644 --- a/channels/server-2.yaml +++ b/network/server-2.yaml @@ -9,15 +9,15 @@ cmix: paths: # Path where the ID will be stored after the ID is created on first run # used by the wrapper script - idf: "nodeID-1.json" + idf: "results/network/servers/nodeID-2.json" # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" + key: "keys/cmix.rip.key" # Path to where the log will be stored - log: "results/servers/server-2.log" - errOutput: "results/servers/server-2.err" - ipListOutput: "results/servers/iplist-1.txt" + log: "results/network/servers/server-2.log" + errOutput: "results/network/servers/server-2.err" + ipListOutput: "results/network/servers/iplist-1.txt" port: "10061" overridePublicIP: "127.0.0.1" database: @@ -28,15 +28,15 @@ database: gateway: paths: # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" scheduling: paths: # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" # IP Address of the permissioning server, provided by xx network address: "0.0.0.0:20060" metrics: # location of stored metrics data. Modification to set to permissioning # server instead of saving will be made at a later date - log: "metrics-server-2.log" + log: "results/network/servers/metrics-server-2.log" # === END YAML diff --git a/channels/server-3.yaml b/network/server-3.yaml similarity index 71% rename from channels/server-3.yaml rename to network/server-3.yaml index ae14ea1..778f4d9 100644 --- a/channels/server-3.yaml +++ b/network/server-3.yaml @@ -9,15 +9,15 @@ cmix: paths: # Path where the ID will be stored after the ID is created on first run # used by the wrapper script - idf: "nodeID-2.json" + idf: "results/network/servers/nodeID-3.json" # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" + key: "keys/cmix.rip.key" # Path to where the log will be stored - log: "results/servers/server-3.log" - errOutput: "results/servers/server-3.err" - ipListOutput: "results/servers/iplist-1.txt" + log: "results/network/servers/server-3.log" + errOutput: "results/network/servers/server-3.err" + ipListOutput: "results/network/servers/iplist-1.txt" port: "10062" overridePublicIP: "127.0.0.1" database: @@ -28,15 +28,15 @@ database: gateway: paths: # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" scheduling: paths: # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" # IP Address of the permissioning server, provided by xx network address: "0.0.0.0:20060" metrics: # location of stored metrics data. Modification to set to permissioning # server instead of saving will be made at a later date - log: "metrics-server-3.log" + log: "results/network/servers/metrics-server-3.log" # === END YAML diff --git a/channels/server-4.yaml b/network/server-4.yaml similarity index 71% rename from channels/server-4.yaml rename to network/server-4.yaml index 7c3f230..2e324e2 100644 --- a/channels/server-4.yaml +++ b/network/server-4.yaml @@ -9,15 +9,15 @@ cmix: paths: # Path where the ID will be stored after the ID is created on first run # used by the wrapper script - idf: "nodeID-3.json" + idf: "results/network/servers/nodeID-4.json" # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" + key: "keys/cmix.rip.key" # Path to where the log will be stored - log: "results/servers/server-4.log" - errOutput: "results/servers/server-4.err" - ipListOutput: "results/servers/iplist-1.txt" + log: "results/network/servers/server-4.log" + errOutput: "results/network/servers/server-4.err" + ipListOutput: "results/network/servers/iplist-1.txt" port: "10063" overridePublicIP: "127.0.0.1" database: @@ -28,15 +28,15 @@ database: gateway: paths: # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" scheduling: paths: # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" # IP Address of the permissioning server, provided by xx network address: "0.0.0.0:20060" metrics: # location of stored metrics data. Modification to set to permissioning # server instead of saving will be made at a later date - log: "metrics-server-4.log" + log: "results/network/servers/metrics-server-4.log" # === END YAML diff --git a/channels/server-5.yaml b/network/server-5.yaml similarity index 71% rename from channels/server-5.yaml rename to network/server-5.yaml index 7710783..95b2682 100644 --- a/channels/server-5.yaml +++ b/network/server-5.yaml @@ -9,15 +9,15 @@ cmix: paths: # Path where the ID will be stored after the ID is created on first run # used by the wrapper script - idf: "nodeID-4.json" + idf: "results/network/servers/nodeID-5.json" # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" + key: "keys/cmix.rip.key" # Path to where the log will be stored - log: "results/servers/server-5.log" - errOutput: "results/servers/server-5.err" - ipListOutput: "results/servers/iplist-1.txt" + log: "results/network/servers/server-5.log" + errOutput: "results/network/servers/server-5.err" + ipListOutput: "results/network/servers/iplist-1.txt" port: "10064" overridePublicIP: "127.0.0.1" database: @@ -28,15 +28,15 @@ database: gateway: paths: # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" scheduling: paths: # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" + cert: "keys/cmix.rip.crt" # IP Address of the permissioning server, provided by xx network address: "0.0.0.0:20060" metrics: # location of stored metrics data. Modification to set to permissioning # server instead of saving will be made at a later date - log: "metrics-server-5.log" + log: "results/network/servers/metrics-server-5.log" # === END YAML diff --git a/network/udb.yaml b/network/udb.yaml new file mode 100644 index 0000000..ce76b7b --- /dev/null +++ b/network/udb.yaml @@ -0,0 +1,10 @@ +# UDB Config for E2E Integration test +log: "results/network/udb.log" +sessionPath: "results/network/udbsession" +sessionPass: "hello" +certPath: "keys/cmix.rip.crt" +port: "30060" +keyPath: "keys/cmix.rip.key" +permCertPath: "keys/cmix.rip.crt" +permAddress: "0.0.0.0:20060" +devMode: true diff --git a/basice2e/udbContact.bin b/network/udbContact.bin similarity index 100% rename from basice2e/udbContact.bin rename to network/udbContact.bin diff --git a/basice2e/udbProto.json b/network/udbProto.json similarity index 100% rename from basice2e/udbProto.json rename to network/udbProto.json diff --git a/basice2e/whitelist.txt b/network/whitelist.txt similarity index 100% rename from basice2e/whitelist.txt rename to network/whitelist.txt diff --git a/run.sh b/run.sh index 7bee473..76a07e2 100755 --- a/run.sh +++ b/run.sh @@ -1,57 +1,172 @@ #!/bin/bash -# Build -./build.sh - -# Run -pushd basice2e -./run.sh -popd - -# New package -pushd channels -./run.sh -popd - -# New package -pushd fileTransfer -./run.sh -popd - -# New package -pushd connect -./run.sh -popd - -# New package -pushd broadcast -./run.sh -popd - -# New package -pushd groupChat -./run.sh -popd - -# New package -pushd ephemeralRegistration -./run.sh -popd - -# New package -pushd ud -./run.sh -popd - -# New package -pushd singleUse -./run.sh -popd - -# New package -pushd channelsFileTransfer -./run.sh -popd +set -e + +while [ $# -gt 1 ]; do + if [[ $1 == "--"* ]]; then + v="${1/--/}" + declare "$v"="$2" + shift + fi + shift +done + +if [[ $1 == "help" ]]; then + echo "usage: ./run.sh [--run testname,testname,...] [environment]" + echo "Basic runner for integration tests, this script will run the test suite," + echo "pointed at the specified environment. Environment can be blank to use a " + echo "local network, or one of [devnet|betanet|mainnet]." + echo " --run run one or more specified tests, input is a comma-separated list" + exit +fi + +if [ $# -gt 1 ] +then + echo "usage: $0 [gatewayip:port]" + exit +fi + +NETWORKENTRYPOINT=$1 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +rm -fr blobs || true +rm -fr results.bak || true +mv results results.bak || rm -fr results || true +mkdir -p .elixxir +mkdir -p blobs +mkdir -p results + +################################################################################ +## Network Set Up +################################################################################ + +if [ "$NETWORKENTRYPOINT" == "betanet" ] +then + NETWORKENTRYPOINT=$(sort -R network/betanet.txt | head -1) +elif [ "$NETWORKENTRYPOINT" == "mainnet" ] +then + NETWORKENTRYPOINT=$(sort -R network/mainnet.txt | head -1) +elif [ "$NETWORKENTRYPOINT" == "release" ] +then + NETWORKENTRYPOINT=$(sort -R network/release.txt | head -1) +elif [ "$NETWORKENTRYPOINT" == "devnet" ] +then + NETWORKENTRYPOINT=$(sort -R network/devnet.txt | head -1) +elif [ "$NETWORKENTRYPOINT" == "" ] +then + NETWORKENTRYPOINT=$(head -1 network/network.config) +fi + +echo "NETWORK: $NETWORKENTRYPOINT" + +if [ "$NETWORKENTRYPOINT" == "localhost:1060" ] +then + source network/network.sh results bin + source network/cleanup.sh results + + donefunc() { + finish + exit $rc + } + trap donefunc EXIT + trap donefunc INT +else + echo "Connecting to network defined at $NETWORKENTRYPOINT" + echo $NETWORKENTRYPOINT > results/startgwserver.txt +fi + +echo "DONE LETS DO STUFF" + +echo "DOWNLOADING TLS Cert..." +# -alpn h2 added to mimic grpc headers +CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" +echo $CMD +eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" +CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" +echo $CMD +eval $CMD > "results/startgwcert.pem" +head "results/startgwcert.pem" + +echo "DOWNLOADING NDF..." +CLIENTCMD="bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" +eval $CLIENTCMD >> results/ndf.json 2>&1 & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL + +cat results/ndf.json | jq . | head -5 + +file results/ndf.json + +if [ ! -s results/ndf.json ] +then + echo "results/ndf.json is empty, cannot proceed" + exit -1 +fi + +################################################################################ +## Run tests +################################################################################ + +testreport=results/testreport.txt +timestamp=$(date +%s) +echo "Test report $timestamp" >> $testreport + +if [ -z $run ] +then + TESTS=("basice2e" "dm" "historical" "channels" "fileTransfer" "connect" "broadcast" "groupChat" "ephemeralRegistration" "singleUse" "channelsFileTransfer") + LOCALTESTS=("basice2e_local" "ud") +else + TESTS=(${run//,/ }) +fi + +set +e +set -o pipefail + + +if [ "$NETWORKENTRYPOINT" == "localhost:1060" ] +then + for i in ${LOCALTESTS[@]} ; do + testresults=results/$i + mkdir -p $testresults && touch $testresults/testout.txt + /bin/bash tests/$i/run.sh $testresults tests/$i/clients.goldoutput results/ndf.json 2>&1 | tee $testresults/testout.txt + if [ $? -eq 0 ] + then + echo "$i - SUCCESS" >> $testreport + else + echo "$i - FAILED" >> $testreport + fi + done +fi + +if [ ${#TESTS[@]} -eq 1 ] +then + /bin/bash tests/${TESTS[0]}/run.sh results/${TESTS[0]} tests/${TESTS[0]}/clients.goldoutput results/ndf.json + rc=$? +else + errs=0 + for i in ${TESTS[@]} ; do + testresults=results/$i + mkdir -p $testresults && touch $testresults/testout.txt + /bin/bash tests/$i/run.sh $testresults tests/$i/clients.goldoutput results/ndf.json 2>&1 | tee $testresults/testout.txt + rc=$? + if [ $rc -eq 0 ] + then + echo "$i - SUCCESS" >> $testreport + else + echo "$i - FAILED" >> $testreport + fi + errs=$(($errs+$rc)) + done + if [ $errs -gt 1 ] + then + rc=1 + fi +fi + +cat $testreport + # View result logs # Not using $EDITOR or $VISUAL because many editors that people set those to diff --git a/singleUse/betanet.txt b/singleUse/betanet.txt deleted file mode 100644 index e35ebcf..0000000 --- a/singleUse/betanet.txt +++ /dev/null @@ -1,306 +0,0 @@ -188.187.190.53:22840 -135.181.134.215:22840 -90.64.159.233:22840 -63.224.248.74:22840 -78.63.197.35:22840 -95.217.225.220:22840 -167.86.89.25:22840 -134.17.158.63:22840 -77.92.107.203:22840 -136.50.65.29:22840 -176.99.131.128:22840 -109.251.8.131:22840 -85.237.9.101:22840 -195.93.180.119:22840 -193.106.95.173:22840 -193.106.95.227:22840 -168.119.49.161:22840 -193.106.94.75:22840 -176.99.131.188:22840 -180.150.125.93:22840 -135.181.29.63:22840 -116.202.99.94:22840 -94.130.150.94:22840 -93.81.246.111:22840 -183.99.96.180:22101 -62.171.131.155:22840 -159.65.122.44:22840 -45.122.123.134:22840 -157.90.34.21:22840 -107.182.163.106:22840 -52.124.124.210:22840 -170.187.225.94:22840 -95.217.228.117:22840 -88.99.13.205:22840 -52.183.38.229:22840 -77.223.99.126:22840 -37.228.116.99:22840 -167.99.247.6:22840 -5.45.81.112:22840 -193.47.33.51:22840 -5.45.81.110:22840 -69.197.179.42:22840 -69.197.179.162:22840 -94.244.64.115:22840 -109.100.137.105:22840 -86.57.132.29:22840 -178.248.81.38:22840 -213.55.169.27:22840 -212.24.106.228:22840 -195.181.247.171:22840 -82.148.29.76:22840 -81.163.28.252:22840 -80.249.150.70:22840 -79.98.24.202:22840 -62.173.145.42:22840 -77.223.98.157:22840 -193.47.33.132:22840 -82.148.19.245:22840 -31.184.254.81:22840 -195.64.234.210:22840 -195.64.234.98:22840 -78.26.169.79:22840 -62.77.156.70:22840 -77.223.97.164:22840 -193.47.33.50:22840 -62.173.140.126:22840 -93.81.246.64:22840 -149.210.192.112:22840 -77.120.176.213:22840 -188.138.242.248:22840 -178.168.101.47:22840 -37.97.220.128:22840 -69.197.147.18:22840 -81.240.39.28:22840 -141.105.67.92:22840 -213.10.138.128:22840 -217.136.119.184:22840 -85.201.32.4:22840 -92.64.19.232:22840 -89.221.20.22:22840 -62.167.123.100:22800 -161.230.93.70:22840 -76.65.147.14:22840 -86.7.108.18:22840 -109.129.225.57:22840 -194.158.207.84:22840 -116.203.252.237:22840 -217.12.210.152:22840 -45.115.107.124:22840 -178.128.199.183:22840 -93.107.156.53:22840 -82.15.128.246:22840 -70.75.89.186:22840 -109.87.172.237:22840 -80.90.47.210:22840 -90.189.180.24:22840 -46.98.0.118:22840 -85.221.55.10:22840 -191.32.173.237:22840 -80.5.16.132:22840 -173.212.199.13:22840 -120.88.119.219:22840 -135.19.193.9:22840 -134.249.187.129:22840 -188.194.110.16:22840 -195.38.9.10:22840 -46.42.16.25:22840 -31.165.163.210:22840 -89.232.195.123:22840 -77.122.54.99:22840 -85.105.79.102:22840 -163.172.149.150:22840 -5.53.16.225:22840 -178.124.192.61:22840 -167.99.130.234:22840 -95.158.15.24:22840 -195.239.181.117:22840 -104.158.0.184:22840 -62.171.142.152:22840 -77.122.89.98:22840 -200.37.209.49:22840 -181.43.154.26:22840 -185.230.88.227:22840 -91.169.185.175:62840 -217.136.102.221:22840 -149.210.229.230:22840 -176.37.104.235:22840 -37.97.224.62:22840 -94.107.24.186:22840 -151.252.109.180:22840 -195.93.181.189:22840 -195.93.181.192:22840 -149.210.229.210:22840 -77.122.48.168:22840 -185.4.65.20:22840 -37.97.224.55:22840 -178.170.47.131:22840 -37.97.224.32:22840 -178.170.39.140:22840 -135.181.139.234:22840 -78.129.38.119:22840 -78.181.101.251:22840 -68.183.34.147:22840 -5.255.173.96:22840 -195.177.94.31:22840 -37.57.87.184:22840 -37.97.224.19:22840 -209.145.53.106:22840 -176.214.77.176:22840 -143.178.133.206:22840 -85.118.207.56:22840 -88.211.82.66:22840 -185.23.83.59:22840 -93.75.3.51:22840 -176.210.55.44:22840 -83.144.175.13:22840 -78.188.200.189:22840 -174.114.197.104:22840 -188.83.79.190:22840 -66.183.0.247:22840 -5.61.52.49:22840 -149.210.229.197:22840 -82.118.17.160:22841 -31.202.122.239:22840 -46.150.9.16:22840 -205.250.188.151:22840 -149.210.229.175:22840 -77.122.91.193:22840 -31.202.122.152:22840 -151.95.102.130:22840 -91.245.37.80:22840 -199.119.86.179:22840 -93.72.67.70:22840 -195.134.65.165:22840 -103.56.39.162:20090 -178.27.238.236:22840 -149.210.192.41:22840 -103.56.39.183:20090 -5.61.54.13:22840 -78.188.51.20:22840 -93.157.248.142:22840 -31.172.140.126:22840 -95.189.106.118:22840 -86.94.128.12:22840 -5.132.111.41:22840 -109.129.220.59:22840 -84.83.206.46:22840 -136.144.240.106:22840 -89.28.86.208:22840 -89.28.6.19:22840 -5.255.173.43:22840 -77.122.29.37:22840 -136.144.203.178:22840 -136.144.230.186:22840 -136.144.206.186:22840 -61.6.46.179:22840 -31.202.123.194:22840 -135.125.235.32:22840 -103.83.149.90:22840 -66.183.0.246:22840 -185.12.142.45:22840 -46.37.194.90:22840 -78.26.140.125:22840 -89.191.125.159:22840 -31.201.104.137:22840 -77.92.109.45:22840 -108.249.110.153:22840 -196.41.195.118:22840 -101.98.209.195:22840 -77.92.109.43:22840 -188.127.250.195:22840 -76.176.192.12:22840 -91.177.2.56:22840 -82.193.107.60:22840 -86.83.150.15:22840 -134.249.121.177:22840 -46.166.138.219:22840 -75.156.104.27:22840 -109.100.137.83:22840 -174.88.128.201:22840 -178.168.68.129:22840 -66.183.0.245:22840 -62.238.247.127:22840 -65.21.151.29:22841 -207.81.171.109:22840 -155.93.136.90:22840 -190.22.170.63:22840 -136.144.230.185:22840 -102.182.202.19:22840 -70.52.24.55:22841 -195.191.174.168:22840 -88.223.114.249:22840 -46.142.181.156:22840 -174.94.125.212:22840 -184.146.45.46:22840 -136.144.236.167:22840 -174.88.104.199:22840 -88.223.115.74:22840 -178.170.40.34:22840 -91.149.187.22:22840 -178.150.223.30:22840 -195.138.68.0:22840 -77.122.59.150:22840 -91.241.178.180:22840 -95.164.8.35:22840 -188.138.162.9:22840 -77.122.80.204:22840 -46.150.9.21:22840 -46.119.158.146:22840 -5.34.183.246:22842 -65.21.180.158:22840 -188.187.188.47:22840 -62.171.137.40:22840 -178.151.197.49:22840 -213.231.5.100:22840 -194.28.172.72:22840 -76.71.65.212:22840 -76.71.65.96:22840 -185.46.60.30:22840 -185.172.34.211:22840 -87.255.69.231:22840 -91.222.114.19:22840 -162.55.58.184:22840 -91.233.171.9:22840 -82.16.173.238:22840 -77.169.225.166:22840 -87.248.171.27:22840 -81.243.65.75:22840 -207.6.218.81:22840 -207.6.218.110:22840 -188.124.46.130:22840 -159.196.176.42:22840 -143.244.158.201:22840 -185.224.108.251:22840 -80.100.87.204:22840 -185.48.197.184:22840 -95.67.28.111:22840 -171.25.167.187:22840 -176.100.12.243:22840 -185.224.108.82:22840 -217.12.223.90:22852 -185.224.110.37:22840 -195.138.85.182:22840 -176.104.49.11:22840 -176.104.52.215:22840 -88.204.18.134:22840 -217.26.167.45:22840 -185.172.34.212:22840 -87.255.69.232:22840 -5.165.211.128:22840 -136.144.205.104:22840 -178.168.57.176:22840 -87.255.69.238:22840 -194.233.67.188:22840 -88.159.77.30:22840 -195.74.67.235:22840 -174.94.68.31:22840 -91.5.88.185:22841 -179.223.85.90:22840 -139.59.245.228:22840 -199.119.86.185:22840 -105.228.133.62:22840 -139.59.126.219:22840 -91.5.83.238:22842 -95.216.221.129:22840 -158.140.234.119:22840 diff --git a/singleUse/client-registrar.yaml b/singleUse/client-registrar.yaml deleted file mode 100644 index a4e5f0c..0000000 --- a/singleUse/client-registrar.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# ================================== -# Client Registrar Configuration -# ================================== - -# Log message level (0 = info, 1 = debug, >1 = trace) -logLevel: 0 -# Path to log file -logPath: "results/client-registrar.log" - -# Public address, used in NDF it gives to client -publicAddress: "0.0.0.0:20091" -# The listening port of this server -port: 20091 - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -# Maximum number of connections per period -userRegCapacity: 1000 -# How often the number of connections is reset -userRegLeakPeriod: "24h" - -# Database connection information -dbUsername: "cmix" -dbPassword: "" -dbName: "cmix_server" -dbAddress: "" - -# List of client codes to be added to the database (for testing) -clientRegCodes: - - "AAAA" - - "BBBB" - - "CCCC" diff --git a/singleUse/clients.goldoutput/client52.txt b/singleUse/clients.goldoutput/client52.txt deleted file mode 100644 index b4402f6..0000000 --- a/singleUse/clients.goldoutput/client52.txt +++ /dev/null @@ -1,3 +0,0 @@ -Sending single-use response message: Test single-use message -Single-use transmission received: Test single-use message -Waiting for single-use message. diff --git a/singleUse/clients.goldoutput/client53.txt b/singleUse/clients.goldoutput/client53.txt deleted file mode 100644 index 90939f7..0000000 --- a/singleUse/clients.goldoutput/client53.txt +++ /dev/null @@ -1,3 +0,0 @@ -Message received: Test single-use message Test single-use message Test single-use message Test single-use message Test single-use message Test single-use message Test single-use message Test single-use message -Sending single-use transmission message: Test single-use message -Waiting for response. diff --git a/singleUse/devnet.txt b/singleUse/devnet.txt deleted file mode 100644 index 922c0de..0000000 --- a/singleUse/devnet.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.125.145:11420 -35.163.143.85:11420 -34.218.59.127:11420 diff --git a/singleUse/gateway-1.yaml b/singleUse/gateway-1.yaml deleted file mode 100644 index ef2103d..0000000 --- a/singleUse/gateway-1.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-1.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10090" - -# The listening port of this gateway -Port: 1090 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-0.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/singleUse/gateway-2.yaml b/singleUse/gateway-2.yaml deleted file mode 100644 index e011701..0000000 --- a/singleUse/gateway-2.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-2.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10091" - -# The listening port of this gateway -Port: 1091 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-1.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/singleUse/gateway-3.yaml b/singleUse/gateway-3.yaml deleted file mode 100644 index 325b3c8..0000000 --- a/singleUse/gateway-3.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-3.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10092" - -# The listening port of this gateway -Port: 1092 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-2.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/singleUse/gateway-4.yaml b/singleUse/gateway-4.yaml deleted file mode 100644 index 71d8f56..0000000 --- a/singleUse/gateway-4.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-4.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10093" - -# The listening port of this gateway -Port: 1093 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-3.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/singleUse/gateway-5.yaml b/singleUse/gateway-5.yaml deleted file mode 100644 index 32e884d..0000000 --- a/singleUse/gateway-5.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-5.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10094" - -# The listening port of this gateway -Port: 1094 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-4.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/singleUse/mainnet.txt b/singleUse/mainnet.txt deleted file mode 100644 index 3fbbb1c..0000000 --- a/singleUse/mainnet.txt +++ /dev/null @@ -1,74 +0,0 @@ -"65.21.170.29:22840" -"88.198.2.52:22840" -"188.40.70.250:22840" -"185.218.125.248:22840" -"31.202.122.131:22840" -"173.249.60.80:22840" -"65.21.76.35:22840" -"195.201.171.211:22840" -"65.21.221.236:22840" -"37.97.220.130:22840" -"159.148.31.238:22840" -"nodochile.myddns.me:22840" -"94.130.10.38:22840" -"188.240.52.205:22840" -"212.38.189.73:22840" -"xerxesgw.caius.ovh:22840" -"46.4.50.57:22840" -"103.195.101.143:22840" -"49.12.45.179:22840" -"167.172.88.140:22840" -"5.189.176.210:22840" -"135.181.213.94:22840" -"213.136.70.8:22840" -"194.163.163.77:22840" -"65.21.204.13:22840" -"88.119.195.16:22840" -"88.198.2.51:22840" -"181.43.194.251:22840" -"159.148.31.232:22840" -"65.108.52.154:11098" -"138.201.37.166:22840" -"kmil.go.ro:22840" -"37.97.169.197:22840" -"144.76.65.107:22840" -"178.18.253.13:22840" -"162.55.131.110:22840" -"91.230.111.8:22840" -"109.98.108.250:22840" -"15.161.170.171:22840" -"37.97.224.110:22840" -"54.79.206.112:22840" -"144.126.149.30:22840" -"194.163.171.145:22840" -"37.97.220.129:22840" -"194.163.170.125:22840" -"65.21.143.248:22840" -"149.210.229.175:22840" -"149.210.192.112:22840" -"149.210.192.111:22840" -"65.21.234.163:22840" -"149.210.229.223:22840" -"173.249.44.133:22840" -"75.119.130.123:22840" -"194.233.77.127:22840" -"66.94.99.187:22840" -"144.91.99.106:22840" -"185.214.134.207:22840" -"95.217.207.236:22840" -"95.217.206.164:22840" -"173.212.233.67:22840" -"37.55.17.106:22840" -"65.108.3.162:22840" -"186.106.188.155:22840" -"109.237.108.117:22840" -"65.108.42.168:22840" -"65.21.234.86:22840" -"65.21.50.177:22840" -"194.163.189.115:22840" -"135.181.212.170:22840" -"23.88.104.166:22840" -"103.107.182.192:22840" -"65.108.2.254:22840" -"94.130.136.136:22840" -"162.55.100.14:22840" diff --git a/singleUse/network.config b/singleUse/network.config deleted file mode 100644 index 68fc748..0000000 --- a/singleUse/network.config +++ /dev/null @@ -1,26 +0,0 @@ -localhost:1090 -# This is the network configuration file. The top line of this file, -# when not set via command line, is used to determine to which network -# the integration test will be run against. - -# Note you can also specify "release", "betanet", or "protonet" on run.sh - -# Betanet gateways -109.169.15.30:22840 -5.12.137.118:22840 -92.246.20.92:22840 -178.16.39.203:22840 -86.135.17.18:22840 - -# Release (messenger test) network gateways -34.221.74.216:11420 -52.25.9.28:11420 -54.149.122.115:11420 - - -# protonet -185.152.3.247:11420 -93.151.207.39:11420 -93.107.154.131:11420 -173.208.225.75:11421 -92.246.20.92:11420 diff --git a/singleUse/noerrors.txt b/singleUse/noerrors.txt deleted file mode 100644 index e69de29..0000000 diff --git a/singleUse/permissioning.yaml b/singleUse/permissioning.yaml deleted file mode 100644 index 92e2d24..0000000 --- a/singleUse/permissioning.yaml +++ /dev/null @@ -1,96 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -loglevel: 2 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening port of this server -port: 20090 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -minimumNodes: 5 - -minGatewayVersion: "3.0.0" -minServerVersion: "3.0.0" -minClientVersion: "4.0.0" -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - - -# Public address used in NDF to give to client -registrationAddress: "0.0.0.0:20091" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -fullNdfOutputPath: "results/permissions-ndfoutput.json" -signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:30090" - -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - - -# Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 diff --git a/singleUse/regCodes.json b/singleUse/regCodes.json deleted file mode 100644 index 6c77521..0000000 --- a/singleUse/regCodes.json +++ /dev/null @@ -1 +0,0 @@ -[{"RegCode": "vaei", "Order": "CR"},{"RegCode": "fzzg", "Order": "CR"},{"RegCode": "axcg", "Order": "CR"},{"RegCode": "bywc", "Order": "CR"},{"RegCode": "ynhd", "Order": "CR"}] \ No newline at end of file diff --git a/singleUse/registration.json b/singleUse/registration.json deleted file mode 100644 index f400c7e..0000000 --- a/singleUse/registration.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": 5, - "PrecomputationTimeout": 30000, - "RealtimeTimeout": 15000, - "DebugTrackRounds": true, - "BatchSize": 32, - "MinimumDelay": 1000, - "RealtimeDelay": 2000, - "Threshold": 0.3, - "NodeCleanUpInterval": 180000, - "ResourceQueueTimeout": 300000 -} \ No newline at end of file diff --git a/singleUse/release.txt b/singleUse/release.txt deleted file mode 100644 index 4442567..0000000 --- a/singleUse/release.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.230.124:11420 -54.187.42.105:11420 -54.149.115.63:11420 diff --git a/singleUse/run.sh b/singleUse/run.sh deleted file mode 100755 index cb875d4..0000000 --- a/singleUse/run.sh +++ /dev/null @@ -1,214 +0,0 @@ -# NOTE: This is verbose on purpose. -################################################################################ -## Initial Set Up & Clean Up of Past Runs -################################################################################ - -# Copy file into folder if it does not already exist -if [ ! -f network.sh ]; then - cp ../network/network.sh . -fi - -set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm -fr blob* || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir - -if [ $# -gt 1 ] -then - echo "usage: $0 [gatewayip:port]" - exit -fi - - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -UDBOUT=results/udb-console.txt -CLIENTCLEAN=results/clients-cleaned - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - - -################################################################################ -## Network Set Up -################################################################################ - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -if [ "$NETWORKENTRYPOINT" == "localhost:1090" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "localhost:1090" > results/startgwserver.txt - -echo "DONE LETS DO STUFF" - -echo "DOWNLOADING TLS Cert..." -# -alpn h2 added to mimic grpc headers -CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi - -CLIENTSINGLEOPTS="--password hello --waitTimeout 360 --ndf results/ndf.json -v $DEBUGLEVEL" - -############################################################################### -# Test Single Use -############################################################################### - -# Single-use test: client53 sends message to client52; client52 responds with -# the same message in the set number of message parts -echo "TESTING SINGLE-USE" - -# Generate contact file for client52 -CLIENTCMD="../bin/client init -s blob52 -l $CLIENTOUT/client52.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/jono52-contact.bin" -eval $CLIENTCMD >> /dev/null 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -# Start client53, which sends a message and then waits for a response -CLIENTCMD="timeout 240s ../bin/client single $CLIENTSINGLEOPTS -l $CLIENTOUT/client53.log -s blob53 --maxMessages 8 --message \"Test single-use message\" --send -c $CLIENTOUT/jono52-contact.bin --timeout 90s" -eval $CLIENTCMD >> $CLIENTOUT/client53.txt 2>&1 & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" - -# Start client52, which waits for a message and then responds -CLIENTCMD="timeout 240s ../bin/client single $CLIENTSINGLEOPTS -l $CLIENTOUT/client52.log -s blob52 --reply --timeout 90s" -eval $CLIENTCMD >> $CLIENTOUT/client52.txt 2>&1 & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -wait $PIDVAL1 -wait $PIDVAL2 - - -######################################################################## - -echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." - -cp $CLIENTOUT/*.txt $CLIENTCLEAN/ - -sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt -rm $CLIENTCLEAN/client*.txt.bak - -for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do - sort -o tmp $CLIENTCLEAN/$C || true - cp tmp $CLIENTCLEAN/$C - # uniq tmp $CLIENTCLEAN/$C || true -done - -GOLDOUTPUT=clients.goldoutput -if [ "$NETWORKENTRYPOINT" != "localhost:1090" ] -then - rm -fr clients.net_goldoutput || true - GOLDOUTPUT=clients.net_goldoutput - cp -r clients.goldoutput clients.net_goldoutput - # Delete the localhost only files - rm $GOLDOUTPUT/client13* || true - rm $GOLDOUTPUT/client18* || true - rm $GOLDOUTPUT/client19* || true - rm $GOLDOUTPUT/client2[01]* || true - rm $GOLDOUTPUT/client31* || true - rm $GOLDOUTPUT/client3[56]* || true - rm $GOLDOUTPUT/client45* || true - rm $GOLDOUTPUT/client56* || true - rm $GOLDOUTPUT/client67* || true - rm $GOLDOUTPUT/client74* || true - rm $GOLDOUTPUT/client9* || true -fi - - -set +x -diff -aru $GOLDOUTPUT $CLIENTCLEAN - -if [ "$NETWORKENTRYPOINT" == "localhost:1090" ] -then - - #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true - #diff -ruN results/client-errors.txt noerrors.txt - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - IGNORESERVE="Failed to serve " - IGNORESTART="Failed to start " - IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt - echo "Checking backup files for equality..." - # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt - #diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true - # diff -aruN client120BackupDiff.txt noerrors.txt - #echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!" - #diff -aruN client121BackupDiff.txt noerrors.txt -fi - -# Remove the file if it exists -if [ -f network.sh ]; then - rm network.sh -fi \ No newline at end of file diff --git a/singleUse/server-1.yaml b/singleUse/server-1.yaml deleted file mode 100644 index 52abc3e..0000000 --- a/singleUse/server-1.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "vaei" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-0.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-1.log" - errOutput: "results/servers/server-1.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10090" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-1.log" -# === END YAML diff --git a/singleUse/server-2.yaml b/singleUse/server-2.yaml deleted file mode 100644 index 511cf12..0000000 --- a/singleUse/server-2.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "fzzg" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-1.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-2.log" - errOutput: "results/servers/server-2.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10091" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-2.log" -# === END YAML diff --git a/singleUse/server-3.yaml b/singleUse/server-3.yaml deleted file mode 100644 index b09ac12..0000000 --- a/singleUse/server-3.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "axcg" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-2.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-3.log" - errOutput: "results/servers/server-3.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10092" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-3.log" -# === END YAML diff --git a/singleUse/server-4.yaml b/singleUse/server-4.yaml deleted file mode 100644 index 5a55d38..0000000 --- a/singleUse/server-4.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "bywc" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-3.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-4.log" - errOutput: "results/servers/server-4.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10093" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-4.log" -# === END YAML diff --git a/singleUse/server-5.yaml b/singleUse/server-5.yaml deleted file mode 100644 index 7576206..0000000 --- a/singleUse/server-5.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "ynhd" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-4.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-5.log" - errOutput: "results/servers/server-5.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10094" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-5.log" -# === END YAML diff --git a/singleUse/udb.yaml b/singleUse/udb.yaml deleted file mode 100644 index ec1a4e3..0000000 --- a/singleUse/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "30090" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:20090" -devMode: true \ No newline at end of file diff --git a/singleUse/udbContact.bin b/singleUse/udbContact.bin deleted file mode 100644 index 10b0846..0000000 --- a/singleUse/udbContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc> \ No newline at end of file diff --git a/singleUse/udbProto.json b/singleUse/udbProto.json deleted file mode 100644 index 940cadf..0000000 --- a/singleUse/udbProto.json +++ /dev/null @@ -1 +0,0 @@ -{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}} \ No newline at end of file diff --git a/singleUse/whitelist.txt b/singleUse/whitelist.txt deleted file mode 100644 index 446eca0..0000000 --- a/singleUse/whitelist.txt +++ /dev/null @@ -1 +0,0 @@ -["0.0.0.0", "127.0.0.1"] \ No newline at end of file diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..85ba58f --- /dev/null +++ b/start.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +mkdir -p .elixxir +mkdir -p blobs +mkdir -p results + +if [[ $1 == "help" ]]; then + echo "usage: ./start.sh [testname]" + echo "Advanced runner for localenvironment and single integration tests," + echo "this starts a network only if one is not running and has not output the" + echo "expected files. Accepts an optional test to run against the network." + echo "multiple distinct tests can in theory run in parallel, but this is not" + echo "well tested." + exit +fi + + +DEBUGLEVEL=${DEBUGLEVEL-1} + +if [ -f results/network/serverpids ] +then + echo "SERVERS ALREADY UP..." +else + source network/network.sh results bin +fi + +if [ -f results/ndf.json ] +then + echo "NDF FOUND..." +else + echo "DOWNLOADING TLS Cert..." + # -alpn h2 added to mimic grpc headers + CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" + echo $CMD + eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" + CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" + echo $CMD + eval $CMD > "results/startgwcert.pem" + head "results/startgwcert.pem" + + echo "DOWNLOADING NDF..." + CLIENTCMD="bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" + eval $CLIENTCMD >> results/ndf.json 2>&1 & + PIDVAL=$! + echo "$CLIENTCMD -- $PIDVAL" + wait $PIDVAL + + cat results/ndf.json | jq . | head -5 + + file results/ndf.json + + if [ ! -s results/ndf.json ] + then + echo "results/ndf.json is empty, cannot proceed" + exit -1 + fi +fi + +if [ ! -z $1 ] +then + TEST=$1 + /bin/bash tests/$TEST/run.sh results/$TEST tests/$TEST/clients.goldoutput results/ndf.json || true +fi diff --git a/stop.sh b/stop.sh new file mode 100755 index 0000000..8643d9b --- /dev/null +++ b/stop.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +if [[ $1 == "help" ]]; then + echo "usage: ./stop.sh [results_directory]" + echo "stop.sh is a cleanup tool for start.sh local environment. It attempts" + echo "to run the network cleanup function on the network in [results_directory]" + echo "which is by default results/ in the present working directory." + exit +fi + +if [ ! -z $1 ] +then + RESULTSDIR=$1 +else + RESULTSDIR=results +fi + +source network/cleanup.sh $RESULTSDIR +finish +mv results results.bak diff --git a/tests/basice2e/.DS_Store b/tests/basice2e/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..74fca6967829337cd73d5c2a90e5596afb913bd3 GIT binary patch literal 6148 zcmZQzU|@7AO)+F(5MW?n;9!8zOq>i@0Z1N%F(jFwA|RR(Y(@@42}3c19zzmCB2;da z8r&fOiaTzGB8F6kVun%%<oL@@DlaZb%E?b+U|`shRFIQdTw-8wjgg6&g_Vt+gPnt$ zBQ`iAzdX1kv81%vDX}OT#0$yK&q;!@6O+O+Q_JH8M4a>UN)j{kQj0)Jf-_T6lM;(! z!ZY(y^2?p_OY>5S!Fr(*9Go1S@d6Un)g}feItnHhX0<vB)s{vEItnJnX0^4P9HPql z)<N;vIk|cHU68<KWQ5QRyigiObu%z9;P72pa8X`PeqK5#FTj+K(xV|T8UmvsFhW8A zT557|j}ZTkdUG@cMni!35CD}A3efhE1C(xn&>$%WMg|5@^ASX|z)Xeo0~kPJAgv%8 zq!mPiv@$S)SYR{2S{WD_AX*v0-4KvIP?rQmgS9g-GJv%+FfxF(Gr*d9j1cV%j1cV% zjL;qmBSbp`BSbp`BSbsQd871b2#kgRGz6F-v;e67cV%F})&Ga68YM?VU^E1VWe6~` zxCFa6fh%R~{sYyup!zfcDh;arLDexMsGdfMfvaLB$bg~*R2Wp<gS3KZa8=C60IA7G Q8v?Kp8l^`=fc_x>0R2=>9smFU literal 0 HcmV?d00001 diff --git a/basice2e/clients.goldoutput/client100.txt b/tests/basice2e/clients.goldoutput/client100.txt similarity index 100% rename from basice2e/clients.goldoutput/client100.txt rename to tests/basice2e/clients.goldoutput/client100.txt diff --git a/basice2e/clients.goldoutput/client101.txt b/tests/basice2e/clients.goldoutput/client101.txt similarity index 100% rename from basice2e/clients.goldoutput/client101.txt rename to tests/basice2e/clients.goldoutput/client101.txt diff --git a/basice2e/clients.goldoutput/client120.txt b/tests/basice2e/clients.goldoutput/client120.txt similarity index 100% rename from basice2e/clients.goldoutput/client120.txt rename to tests/basice2e/clients.goldoutput/client120.txt diff --git a/basice2e/clients.goldoutput/client121.txt b/tests/basice2e/clients.goldoutput/client121.txt similarity index 100% rename from basice2e/clients.goldoutput/client121.txt rename to tests/basice2e/clients.goldoutput/client121.txt diff --git a/basice2e/clients.goldoutput/client25.txt b/tests/basice2e/clients.goldoutput/client25.txt similarity index 100% rename from basice2e/clients.goldoutput/client25.txt rename to tests/basice2e/clients.goldoutput/client25.txt diff --git a/basice2e/clients.goldoutput/client26.txt b/tests/basice2e/clients.goldoutput/client26.txt similarity index 100% rename from basice2e/clients.goldoutput/client26.txt rename to tests/basice2e/clients.goldoutput/client26.txt diff --git a/basice2e/clients.goldoutput/client42.txt b/tests/basice2e/clients.goldoutput/client42.txt similarity index 100% rename from basice2e/clients.goldoutput/client42.txt rename to tests/basice2e/clients.goldoutput/client42.txt diff --git a/basice2e/clients.goldoutput/client43.txt b/tests/basice2e/clients.goldoutput/client43.txt similarity index 100% rename from basice2e/clients.goldoutput/client43.txt rename to tests/basice2e/clients.goldoutput/client43.txt diff --git a/basice2e/clients.goldoutput/client44.txt b/tests/basice2e/clients.goldoutput/client44.txt similarity index 100% rename from basice2e/clients.goldoutput/client44.txt rename to tests/basice2e/clients.goldoutput/client44.txt diff --git a/basice2e/clients.goldoutput/client46.txt b/tests/basice2e/clients.goldoutput/client46.txt similarity index 100% rename from basice2e/clients.goldoutput/client46.txt rename to tests/basice2e/clients.goldoutput/client46.txt diff --git a/basice2e/clients.goldoutput/client85.txt b/tests/basice2e/clients.goldoutput/client85.txt similarity index 100% rename from basice2e/clients.goldoutput/client85.txt rename to tests/basice2e/clients.goldoutput/client85.txt diff --git a/basice2e/clients.goldoutput/client86.txt b/tests/basice2e/clients.goldoutput/client86.txt similarity index 100% rename from basice2e/clients.goldoutput/client86.txt rename to tests/basice2e/clients.goldoutput/client86.txt diff --git a/tests/basice2e/run.sh b/tests/basice2e/run.sh new file mode 100755 index 0000000..d128ac6 --- /dev/null +++ b/tests/basice2e/run.sh @@ -0,0 +1,509 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +BASICE2ERESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$BASICE2ERESULTS/clients +CLIENTCLEAN=$BASICE2ERESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + +CLIENTOPTS="--password hello --ndf $NDF --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" +CLIENTUDOPTS="--password hello --ndf $NDF -v $DEBUGLEVEL" +CLIENTREKEYOPTS="--password hello --ndf $NDF --verify-sends --waitTimeout 600 -v $DEBUGLEVEL" +CLIENTBACKUPOPTS="--password hello --ndf $NDF -v $DEBUGLEVEL" + + + +############################################################################### +# Test Sending E2E +############################################################################### + +# Non-precanned E2E user messaging +echo "SENDING E2E MESSAGES TO NEW USERS..." +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blobs/42 --writeContact $CLIENTOUT/rick42-contact.bin --unsafe -m \"Hello from Rick42 to myself, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client42.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blobs/43 --writeContact $CLIENTOUT/ben43-contact.bin --destfile $CLIENTOUT/rick42-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client43.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" + +while [ ! -s $CLIENTOUT/ben43-contact.bin ]; do + sleep 1 + echo -n "." +done + + +TMPID=$(cat $CLIENTOUT/client42.log | grep -a "User\:" | awk -F' ' '{print $5}') +RICKID=${TMPID} +echo "RICK ID: $RICKID" +TMPID=$(cat $CLIENTOUT/client43.log | grep -a "User\:" | awk -F' ' '{print $5}') +BENID=${TMPID} +echo "BEN ID: $BENID" + +# Client 42 will now wait for client 43's E2E Auth channel request and confirm +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blobs/42 --destfile $CLIENTOUT/ben43-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" +eval $CLIENTCMD >> $CLIENTOUT/client42.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +# Test destid syntax too, note wait for 11 messages to catch the message from above ^^^ +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blobs/42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client42.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blobs/43 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client43.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blobs/42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client42.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blobs/43 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client43.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +############################################################################### +# Test Renegotiation +############################################################################### + +echo "TESTING RENEGOTIATION..." +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blobs/43 --destfile $CLIENTOUT/rick42-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client43.txt & +PIDVAL1=$! +# Unlike before, we don't accept the channel (it's already been accepted, it'll +# renegotiate), so instead we message ourselves to wait for the trigger +echo "$CLIENTCMD -- $PIDVAL1" +# Client 42 will now wait, again, for client 43's E2E Auth channel request and confirm +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blobs/42 --destfile $CLIENTOUT/rick42-contact.bin --sendCount 10 --receiveCount 10 --unsafe -m \"Waiting on renegotiation\"" +eval $CLIENTCMD >> $CLIENTOUT/client42.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL1 +wait $PIDVAL2 +#Send a few messages +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blobs/42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client42.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blobs/43 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client43.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL +wait $PIDVAL2 + +echo "SWITCHING RENEGOTIATION TEST..." +# Switch places, 42 renegotiates with 43 +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blobs/42 --destfile $CLIENTOUT/ben43-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client42.txt & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +# Client 43 will now wait, for client 42's renegotiated E2E Auth channel request and confirm +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blobs/43 --destfile $CLIENTOUT/ben43-contact.bin --sendCount 10 --receiveCount 10 --unsafe -m \"Waiting on switching renegotiation\"" +eval $CLIENTCMD >> $CLIENTOUT/client43.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL1 +wait $PIDVAL2 +#Send a few more messages +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blobs/42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client42.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blobs/43 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client43.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL +wait $PIDVAL2 +echo "END RENEGOTIATION" + +############################################################################### +# Test Deleting Contacts & Requests +############################################################################### + +echo "DELETING CONTACT FROM CLIENT..." +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blobs/42 --delete-channel --destfile $CLIENTOUT/ben43-contact.bin --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client42.txt & +echo "$CLIENTCMD -- $PIDVAL" +PIDVAL1=$! +wait $PIDVAL1 +# NOTE the command below causes the following EXPECTED error: +# panic: Could not confirm authentication channel for HTAmEeBhbLi6aFqcWsi3OZNDE/642GAchpATjhYFTHwD, waited 120 seconds. +# Note that the above is example, client IDs will vary +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blobs/42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client42.txt || true & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +echo "NOTE: The command above causes an EXPECTED failure to confirm authentication channel!" +wait $PIDVAL2 + +echo "DELETING REQUESTS FROM CLIENT.." +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client44.log -s blobs/44 --writeContact $CLIENTOUT/david44-contact.bin --unsafe -m \"Hello from David44 to myself, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client44.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL + +# NOTE: client45 is a precan user (see runclients), so we skip to 46 here. +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blobs/46 --writeContact $CLIENTOUT/matt46-contact.bin --destfile $CLIENTOUT/david44-contact.bin --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client46.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL2 + +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blobs/46 --delete-sent-requests --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client46.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL2 + +# This is tricky -- we've deleted the request without having received the +# confirmation, so now the receiver attempts to accept the channel while the +# sender (without confirmation) sends to them without an auth channel. +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client44.log -s blobs/44 --destfile $CLIENTOUT/matt46-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" +eval $CLIENTCMD >> $CLIENTOUT/client44.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client46.log -s blobs/46 --destfile $CLIENTOUT/david44-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from David, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client46.txt || true & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +echo "NOTE: The command above causes an EXPECTED failure to confirm authentication channel!" +wait $PIDVAL +wait $PIDVAL2 + +############################################################################### +# Test Simultaneous Auth +############################################################################### + +echo "CREATING USERS for SIMULTANEOUSAUTH TEST..." +JONOID=$(bin/client init -s blobs/85 -l $CLIENTOUT/client85.log --password hello --ndf $NDF --writeContact $CLIENTOUT/jono85-contact.bin -v $DEBUGLEVEL) +SYDNEYID=$(bin/client init -s blobs/86 -l $CLIENTOUT/client86.log --password hello --ndf $NDF --writeContact $CLIENTOUT/sydney86-contact.bin -v $DEBUGLEVEL) +echo "JONO ID: $JONOID" +echo "SYDNEY ID: $SYDNEYID" + +# Attempt to send an auth request at the same time. It's not guaranteed that +# one side won't send and the other won't receive before sending their request +# but this method has proven to be reasonably reliable. +echo "STARTING SIMULTANEOUSAUTH TEST..." +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client85.log -s blobs/85 --destfile $CLIENTOUT/sydney86-contact.bin --unsafe-channel-creation --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client85.txt & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client86.log -s blobs/86 --destfile $CLIENTOUT/jono85-contact.bin --unsafe-channel-creation --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client86.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL1 +wait $PIDVAL2 + +# Send a couple messages +echo "TESTING SIMULTANEOUSAUTH MESSAGE SEND..." +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client85.log -s blobs/85 --destfile $CLIENTOUT/sydney86-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello Sydney from Jono, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client85.txt & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client86.log -s blobs/86 --destfile $CLIENTOUT/jono85-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello Jono from Sydney, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client86.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL1 +wait $PIDVAL2 + +############################################################################### +# Test Rekey +############################################################################### + +echo "CREATING USERS for REKEY TEST..." +JAKEID=$(bin/client init -s blobs/100 -l $CLIENTOUT/client100.log --password hello --ndf $NDF --writeContact $CLIENTOUT/Jake100-contact.bin -v $DEBUGLEVEL) +NIAMHID=$(bin/client init -s blobs/101 -l $CLIENTOUT/client101.log --password hello --ndf $NDF --writeContact $CLIENTOUT/Niamh101-contact.bin -v $DEBUGLEVEL) +echo "JAKE ID: $JAKEID" +echo "NIAMH ID: $NIAMHID" + + +REKEYOPTS="--e2eMaxKeys 15 --e2eMinKeys 10 --e2eNumReKeys 5 --e2eRekeyThreshold 0.75" +# Client 101 will now send auth request +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blobs/101 --writeContact $CLIENTOUT/Niamh101-contact.bin --destfile $CLIENTOUT/Jake100-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client101.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +# Client 100 will now wait for client 101's E2E Auth channel request and confirm +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blobs/100 --destid b64:$NIAMHID --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" +eval $CLIENTCMD >> $CLIENTOUT/client100.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +echo "RUNNING REKEY TEST..." +# Test destid syntax too, note wait for 11 messages to catch the message from above ^^^ +CLIENTCMD="timeout 600s bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blobs/100 --destid b64:$NIAMHID --sendCount 20 --receiveCount 20 -m \"Hello from Jake100, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client100.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 600s bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blobs/101 --destid b64:$JAKEID --sendCount 20 --receiveCount 20 -m \"Hello from Niamh101, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client101.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +# Now we are just going to exhaust all the keys we have and see if we +# use the unconfirmed channels +CLIENTCMD="timeout 600s bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client100.log -s blobs/100 --destid b64:$NIAMHID --sendCount 20 --receiveCount 0 -m \"Hello from Jake100, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client100.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +# And receive those messages sent to us +CLIENTCMD="timeout 600s bin/client $CLIENTREKEYOPTS $REKEYOPTS -l $CLIENTOUT/client101.log -s blobs/101 --destid b64:$JAKEID --sendCount 0 --receiveCount 20" +eval $CLIENTCMD >> $CLIENTOUT/client101.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + + +############################################################################### +# Test Back Up & Restore +############################################################################### + +echo "START BACKUP AND RESTORE..." +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blobs/120 --force-legacy --writeContact $CLIENTOUT/client120-contact.bin --unsafe -m \"Hello from Client120 to myself, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client120.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blobs/121 --force-legacy --writeContact $CLIENTOUT/client121-contact.bin --destfile $CLIENTOUT/client120-contact.bin --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client121.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" + +while [ ! -s $CLIENTOUT/client121-contact.bin ]; do + sleep 1 + echo -n "." +done + +# Client 120 will now wait for client 121's E2E Auth channel request and confirm +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blobs/120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" +eval $CLIENTCMD >> $CLIENTOUT/client120.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +# Send messages to each other +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blobs/120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client120, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client120.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blobs/121 --force-legacy --destfile $CLIENTOUT/client120-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client121, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client121.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +# Register 120 with UD +CLIENTCMD="timeout 240s bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client120.log -s blobs/120 --force-legacy --register client120" +eval $CLIENTCMD >> $CLIENTOUT/client120.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL + +# Backup and restore 121 +CLIENTCMD="timeout 60s bin/client $CLIENTBACKUPOPTS -l $CLIENTOUT/client121.log -s blobs/121 --force-legacy --backupOut $CLIENTOUT/client121A.backup --backupPass hello --backupJsonOut $CLIENTOUT/client121A.backup.json --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client121.txt || true & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +echo "FIXME: The above exits uncleanly, but a backup file is created. The rest of the test fails...It should be FIXED!" +wait $PIDVAL + +rm -fr blobs/121 + +CLIENTCMD="timeout 60s bin/client $CLIENTBACKUPOPTS -l $CLIENTOUT/client121.log -s blobs/121 --force-legacy --backupIn $CLIENTOUT/client121A.backup --backupPass hello --backupJsonOut $CLIENTOUT/client121B.backup.json --backupIdList $CLIENTOUT/client121Partners.json --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client121.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL + +CLIENTCMD="timeout 240s bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client121.log -s blobs/121 --force-legacy --batchadd $CLIENTOUT/client121Partners.json --unsafe-channel-creation" +eval $CLIENTCMD >> $CLIENTOUT/client121.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" + +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blobs/120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 0 --receiveCount 0 --unsafe-channel-creation" +eval $CLIENTCMD >> $CLIENTOUT/client120.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL +wait $PIDVAL2 + +# Send messages to each other +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client120.log -s blobs/120 --force-legacy --destfile $CLIENTOUT/client121-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client120, with E2E Encryption after 121 restoring backup\" --unsafe-channel-creation" +eval $CLIENTCMD >> $CLIENTOUT/client120.txt || true & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client121.log -s blobs/121 --force-legacy --destfile $CLIENTOUT/client120-contact.bin --sendCount 5 --receiveCount 5 -m \"Hello from Client121, with E2E Encryption after 121 restoring backup\" --unsafe-channel-creation" +eval $CLIENTCMD >> $CLIENTOUT/client121.txt || true & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +# TODO: Add test that backs up and restore client 120. To do this, you need to be able to delete old requests + +echo "END BACKUP AND RESTORE..." + +############################################################################### +# Test Proto User +############################################################################### + +# Proto user test: client25 and client26 generate a proto user JSON file and close. +# Both clients are restarted and load from their respective proto user files and attempt to send. + +# Generate contact and proto user file for client25 +echo "TESTING PROTO USER FILE..." + +CLIENTCMD="timeout 60s bin/client -l $CLIENTOUT/client25.log -s blobs/11420 --password hello --ndf $NDF --writeContact $CLIENTOUT/josh25-contact.bin --protoUserOut $CLIENTOUT/client25Proto.json --unsafe --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client25.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL + +# Generate contact and proto user file for client 26 +CLIENTCMD="timeout 60s bin/client -l $CLIENTOUT/client26.log -s blobs/11421 --password hello --ndf $NDF --writeContact $CLIENTOUT/jonah26-contact.bin --protoUserOut $CLIENTOUT/client26Proto.json --unsafe --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client26.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL + +# Clients will now load from the protoUser file and write to session +CLIENTCMD="timeout 60s bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blobs/25 --protoUserPath $CLIENTOUT/client25Proto.json --unsafe --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client25.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 60s bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blobs/26 --protoUserPath $CLIENTOUT/client26Proto.json --unsafe --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client26.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL +wait $PIDVAL2 + +# Continue with E2E testing with session files loaded from proto +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blobs/25 --writeContact $CLIENTOUT/josh25-contact.bin --unsafe -m \"Hello from Josh25 to myself, without E2E Encryption\" " +eval $CLIENTCMD >> $CLIENTOUT/client25.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blobs/26 --writeContact $CLIENTOUT/jonah26-contact.bin --destfile $CLIENTOUT/josh25-contact.bin --unsafe-channel-creation --send-auth-request --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client26.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" + +while [ ! -s $CLIENTOUT/jonah26-contact.bin ]; do + sleep 1 + echo -n "." +done +sleep 1 + +# Print IDs to console +TMPID=$(cat $CLIENTOUT/client25.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1) +JOSHID=${TMPID} +echo "JOSH ID: $JOSHID" +TMPID=$(cat $CLIENTOUT/client26.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1) +JONAHID=${TMPID} +echo "JONAH ID: $JONAHID" + +## Client 25 will now wait for client 26's E2E Auth channel request and confirm +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blobs/25 --destfile $CLIENTOUT/jonah26-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" +eval $CLIENTCMD >> $CLIENTOUT/client25.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +# Send E2E messages with written sessions +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blobs/25 --destid b64:$JONAHID --sendCount 5 --receiveCount 5 -m \"Hello from Josh25, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client25.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blobs/26 --destid b64:$JOSHID --sendCount 5 --receiveCount 5 -m \"Hello from Jonah26, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client26.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blobs/25 --destid b64:$JONAHID --sendCount 5 --receiveCount 5 -m \"Hello from Josh25, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client25.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blobs/26 --destid b64:$JOSHID --sendCount 5 --receiveCount 5 -m \"Hello from Jonah26, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client26.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + +set -e + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN +cat $CLIENTOUT/client42.log | grep -a "Could not confirm authentication channel" > $CLIENTOUT/deleteContact.txt || true +echo "CHECKING FOR SUCCESSFUL CONTACT DELETION" +if [ -s $CLIENTOUT/deleteContact.txt ] +then + echo "CONTACT DELETION SUCCESSFUL" +else + echo "CONTACT DELETION FAILED" + [ -s $CLIENTOUT/deleteContact.txt ] +fi + +echo "NO OUTPUT ERRORS, SUCCESS!" diff --git a/basice2e/clients.goldoutput/client18.txt b/tests/basice2e_local/clients.goldoutput/client18.txt similarity index 100% rename from basice2e/clients.goldoutput/client18.txt rename to tests/basice2e_local/clients.goldoutput/client18.txt diff --git a/basice2e/clients.goldoutput/client18_rekey.txt b/tests/basice2e_local/clients.goldoutput/client18_rekey.txt similarity index 100% rename from basice2e/clients.goldoutput/client18_rekey.txt rename to tests/basice2e_local/clients.goldoutput/client18_rekey.txt diff --git a/basice2e/clients.goldoutput/client20.txt b/tests/basice2e_local/clients.goldoutput/client20.txt similarity index 100% rename from basice2e/clients.goldoutput/client20.txt rename to tests/basice2e_local/clients.goldoutput/client20.txt diff --git a/basice2e/clients.goldoutput/client21.txt b/tests/basice2e_local/clients.goldoutput/client21.txt similarity index 100% rename from basice2e/clients.goldoutput/client21.txt rename to tests/basice2e_local/clients.goldoutput/client21.txt diff --git a/basice2e/clients.goldoutput/client33.txt b/tests/basice2e_local/clients.goldoutput/client33.txt similarity index 100% rename from basice2e/clients.goldoutput/client33.txt rename to tests/basice2e_local/clients.goldoutput/client33.txt diff --git a/basice2e/clients.goldoutput/client34.txt b/tests/basice2e_local/clients.goldoutput/client34.txt similarity index 100% rename from basice2e/clients.goldoutput/client34.txt rename to tests/basice2e_local/clients.goldoutput/client34.txt diff --git a/basice2e/clients.goldoutput/client45.txt b/tests/basice2e_local/clients.goldoutput/client45.txt similarity index 100% rename from basice2e/clients.goldoutput/client45.txt rename to tests/basice2e_local/clients.goldoutput/client45.txt diff --git a/basice2e/clients.goldoutput/client56.txt b/tests/basice2e_local/clients.goldoutput/client56.txt similarity index 100% rename from basice2e/clients.goldoutput/client56.txt rename to tests/basice2e_local/clients.goldoutput/client56.txt diff --git a/basice2e/clients.goldoutput/client67.txt b/tests/basice2e_local/clients.goldoutput/client67.txt similarity index 100% rename from basice2e/clients.goldoutput/client67.txt rename to tests/basice2e_local/clients.goldoutput/client67.txt diff --git a/basice2e/clients.goldoutput/client74.txt b/tests/basice2e_local/clients.goldoutput/client74.txt similarity index 100% rename from basice2e/clients.goldoutput/client74.txt rename to tests/basice2e_local/clients.goldoutput/client74.txt diff --git a/basice2e/clients.goldoutput/client9.txt b/tests/basice2e_local/clients.goldoutput/client9.txt similarity index 100% rename from basice2e/clients.goldoutput/client9.txt rename to tests/basice2e_local/clients.goldoutput/client9.txt diff --git a/basice2e/clients.goldoutput/client9_rekey.txt b/tests/basice2e_local/clients.goldoutput/client9_rekey.txt similarity index 100% rename from basice2e/clients.goldoutput/client9_rekey.txt rename to tests/basice2e_local/clients.goldoutput/client9_rekey.txt diff --git a/tests/basice2e_local/run.sh b/tests/basice2e_local/run.sh new file mode 100644 index 0000000..83ce8b2 --- /dev/null +++ b/tests/basice2e_local/run.sh @@ -0,0 +1,164 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +LOCALRESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$LOCALRESULTS/clients +CLIENTCLEAN=$LOCALRESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + +CLIENTOPTS="--password hello --ndf $NDF --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + +runclients() { + echo "Starting clients..." + + # Now send messages to each other + CTR=0 + for cid in $(seq 4 7) + do + # TODO: Change the recipients to send multiple messages. We can't + # run multiple clients with the same user id so we need + # updates to make that work. + # for nid in 1 2 3 4; do + for nid in 1 + do + nid=$(((($cid + 1) % 4) + 4)) + eval NICK=\${NICK${cid}} + # Send a regular message + CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client$cid$nid.log -s blobs/$cid --unsafe --sendid $cid --destid $nid --sendCount 20 --receiveCount 20 -m \"Hello, $nid\"" + eval $CLIENTCMD >> $CLIENTOUT/client$cid$nid.txt 2>&1 & + PIDVAL=$! + eval CLIENTS${CTR}=$PIDVAL + echo "$CLIENTCMD -- $PIDVAL" + CTR=$(($CTR + 1)) + done + done + + echo "WAITING FOR $CTR CLIENTS TO EXIT..." + for i in $(seq 0 $(($CTR - 1))) + do + eval echo "Waiting on \${CLIENTS${i}} ..." + eval wait \${CLIENTS${i}} + done +} + +############################################################################### +# Test Basic Client +############################################################################### + + +echo "RUNNING BASIC CLIENTS..." +runclients +echo "RUNNING BASIC CLIENTS (2nd time)..." +runclients + +# Send E2E messages between a single user +echo "TEST E2E WITH PRECANNED USERS..." +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 2 --receiveCount 2 -s blobs/9 --sendid 9 --destid 9 -m \"Hi 9->9, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 2 --receiveCount 2 -s blobs/9 --sendid 9 --destid 9 -m \"Hi 9->9, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client18.log --sendCount 2 --receiveCount 2 -s blobs/18 --slowPolling --sendid 18 --destid 18 -m \"Hi 18->18, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client18.txt 2>&1 & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL + + +# Send E2E messages between two users +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client9.log --sendCount 3 --receiveCount 3 -s blobs/9 --sendid 9 --destid 18 -m \"Hi 9->18, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client9.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client18.log --sendCount 3 --receiveCount 3 -s blobs/18 --sendid 18 --destid 9 -m \"Hi 18->9, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client18.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL1 +wait $PIDVAL2 + + +# Send multiple E2E encrypted messages between users that discovered each other +echo "SENDING MESSAGES TO PRECANNED USERS AND FORCING A REKEY..." +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client18_rekey.log --sendCount 20 --receiveCount 20 --destid 9 -s blobs/18 -m \"Hello, 9, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client18_rekey.txt 2>&1 & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client9_rekey.log --sendCount 20 --receiveCount 20 --destid 18 -s blobs/9 -m \"Hello, 18, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client9_rekey.txt 2>&1 & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL + +echo "FORCING HISTORICAL ROUNDS... (NON-E2E, PRECAN)" +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client33.log -s blobs/33 --sendid 1 --destid 2 --sendCount 5 --receiveCount 5 -m \"Hello from 1, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client33.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client34.log -s blobs/34 --sendid 2 --destid 1 --sendCount 5 --receiveCount 5 -m \"Hello from 2, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client34.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +echo "FORCING MESSAGE PICKUP RETRY... (NON-E2E, PRECAN)" +# Higher timeouts for this test to allow message pickup retry to function +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS --forceMessagePickupRetry --unsafe -l $CLIENTOUT/client20.log -s blobs/20 --sendid 20 --destid 21 --sendCount 5 --receiveCount 5 -m \"Hello from 20, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client20.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS --forceMessagePickupRetry --unsafe -l $CLIENTOUT/client21.log -s blobs/21 --sendid 21 --destid 20 --sendCount 5 --receiveCount 5 -m \"Hello from 21, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client21.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + +set -e + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN + +echo "NO OUTPUT ERRORS, SUCCESS!" diff --git a/broadcast/clients.goldoutput/client130.txt b/tests/broadcast/clients.goldoutput/client130.txt similarity index 100% rename from broadcast/clients.goldoutput/client130.txt rename to tests/broadcast/clients.goldoutput/client130.txt diff --git a/broadcast/clients.goldoutput/client131.txt b/tests/broadcast/clients.goldoutput/client131.txt similarity index 100% rename from broadcast/clients.goldoutput/client131.txt rename to tests/broadcast/clients.goldoutput/client131.txt diff --git a/broadcast/clients.goldoutput/client132.txt b/tests/broadcast/clients.goldoutput/client132.txt similarity index 100% rename from broadcast/clients.goldoutput/client132.txt rename to tests/broadcast/clients.goldoutput/client132.txt diff --git a/broadcast/clients.goldoutput/client133.txt b/tests/broadcast/clients.goldoutput/client133.txt similarity index 100% rename from broadcast/clients.goldoutput/client133.txt rename to tests/broadcast/clients.goldoutput/client133.txt diff --git a/broadcast/clients.goldoutput/client134.txt b/tests/broadcast/clients.goldoutput/client134.txt similarity index 100% rename from broadcast/clients.goldoutput/client134.txt rename to tests/broadcast/clients.goldoutput/client134.txt diff --git a/tests/broadcast/run.sh b/tests/broadcast/run.sh new file mode 100755 index 0000000..8f1967f --- /dev/null +++ b/tests/broadcast/run.sh @@ -0,0 +1,96 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +LOCALRESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$LOCALRESULTS/clients +CLIENTCLEAN=$LOCALRESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + + +############################################################################### +# Test Broadcast +############################################################################### + + +echo "TESTING BROADCAST CHANNELS..." + +# New broadcast channel... +CLIENTCMD="timeout 240s bin/client broadcast --password hello --ndf $NDF --waitTimeout 1800 -l $CLIENTOUT/client130.log -s blobs/130 --new --channelName \"broadcast_test\" --description \"Integration test channel\" --chanPath results/integration-channel.json --keyPath results/integration-chan-key.pem --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client130.txt & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +wait $PIDVAL1 + +# Start client to listen for messages on the channel +CLIENTCMD="timeout 480s bin/client broadcast --password hello --ndf $NDF --waitTimeout 1800 -l $CLIENTOUT/client131.log -s blobs/131 --chanPath results/integration-channel.json --receiveCount 4" +eval $CLIENTCMD >> $CLIENTOUT/client131.txt & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" + +sleep 10 + +# Send symmetric broadcast to channel +CLIENTCMD="timeout 240s bin/client broadcast --password hello --ndf $NDF --waitTimeout 360 -l $CLIENTOUT/client132.log -s blobs/132 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --symmetric \"Hello to symmetric channel from channel client 122!\"" +eval $CLIENTCMD >> $CLIENTOUT/client132.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" + +# Send asymmetric broadcast to channel +CLIENTCMD="timeout 240s bin/client broadcast --password hello --ndf $NDF --waitTimeout 360 -l $CLIENTOUT/client133.log -s blobs/133 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --keyPath results/integration-chan-key.pem --asymmetric \"Hello to asymmetric channel from channel client 123!\"" +eval $CLIENTCMD >> $CLIENTOUT/client133.txt & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" + +# Send symmetric & asymmetric broadcasts to channel +CLIENTCMD="timeout 240s bin/client broadcast --password hello --ndf $NDF --waitTimeout 360 -l $CLIENTOUT/client134.log -s blobs/134 --chanPath results/integration-channel.json --receiveCount 0 --sendDelay 5000 --keyPath results/integration-chan-key.pem --asymmetric \"Hello to asymmetric channel from channel client 124!\" --symmetric \"Hello to symmetric channel from channel client 124!\"" +eval $CLIENTCMD >> $CLIENTOUT/client134.txt & +PIDVAL4=$! +echo "$CLIENTCMD -- $PIDVAL4" + +wait $PIDVAL2 +wait $PIDVAL3 +wait $PIDVAL4 +wait $PIDVAL1 + +echo "BROADCAST CHANNELS FINISHED..." + +######################################################################## + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN diff --git a/channels/clients.goldoutput/client500.txt b/tests/channels/clients.goldoutput/client500.txt similarity index 100% rename from channels/clients.goldoutput/client500.txt rename to tests/channels/clients.goldoutput/client500.txt diff --git a/channels/clients.goldoutput/client501.txt b/tests/channels/clients.goldoutput/client501.txt similarity index 100% rename from channels/clients.goldoutput/client501.txt rename to tests/channels/clients.goldoutput/client501.txt diff --git a/channels/clients.goldoutput/client502.txt b/tests/channels/clients.goldoutput/client502.txt similarity index 100% rename from channels/clients.goldoutput/client502.txt rename to tests/channels/clients.goldoutput/client502.txt diff --git a/tests/channels/run.sh b/tests/channels/run.sh new file mode 100755 index 0000000..b34b296 --- /dev/null +++ b/tests/channels/run.sh @@ -0,0 +1,103 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +CHANRESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$CHANRESULTS/clients +CLIENTCLEAN=$CHANRESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + +############################################################################### +# Test Channels +############################################################################### + +echo "TESTING CHANNELS..." + +CLIENTOPTS="--password hello --ndf $NDF --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" + +# Initialize creator of channel (will use default channel file path in CLI) +CLIENTCMD="timeout 300s bin/client channels -s blobs/500 $CLIENTOPTS -l $CLIENTOUT/client500.log --receiveCount 0 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel500.id --newChannel" +eval $CLIENTCMD > $CLIENTOUT/client500.txt 2>&1 & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" + +wait $PIDVAL + +# Have client which created channel send message to channel +CLIENTCMD="timeout 300s bin/client channels -s blobs/500 -l $CLIENTOUT/client500.log $CLIENTOPTS --receiveCount 3 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel500.id --sendToChannel --message \"Hello, channel, this is 500\"" +eval $CLIENTCMD >> $CLIENTOUT/client500.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" + +# Initialize client which will join channel (will use default channel file path in CLI) +CLIENTCMD="timeout 300s bin/client channels -s blobs/501 -l $CLIENTOUT/client501.log $CLIENTOPTS --receiveCount 3 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel501.id --joinChannel --sendToChannel --message \"Hello, channel, this is 501\"" +eval $CLIENTCMD > $CLIENTOUT/client501.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" + +# Initialize another client which will join channel (will use default channel file path in CLI) +CLIENTCMD="timeout 420s bin/client channels -s blobs/502 -l $CLIENTOUT/client502.log $CLIENTOPTS --receiveCount 3 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel502.id --joinChannel --sendToChannel --message \"Hello, channel, this is 502\"" +eval $CLIENTCMD > $CLIENTOUT/client502.txt 2>&1 & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" + +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# All clients will leave the channel +CLIENTCMD="timeout 300s bin/client channels -s blobs/500 -l $CLIENTOUT/client500.log $CLIENTOPTS --receiveCount 0 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel500.id --leaveChannel" +eval $CLIENTCMD >> $CLIENTOUT/client500.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" + +CLIENTCMD="timeout 300s bin/client channels -s blobs/501 -l $CLIENTOUT/client501.log $CLIENTOPTS --receiveCount 0 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel501.id --leaveChannel" +eval $CLIENTCMD >> $CLIENTOUT/client501.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" + +# Initialize another client which will join channel (will use default channel file path in CLI) +CLIENTCMD="timeout 300s bin/client channels -s blobs/502 -l $CLIENTOUT/client502.log $CLIENTOPTS --receiveCount 0 --channelPath $CLIENTOUT/channel500.chan --channelIdentityPath $CLIENTOUT/channel502.id --leaveChannel" +eval $CLIENTCMD >> $CLIENTOUT/client502.txt 2>&1 & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +sleep 20 +wait $PIDVAL3 +wait $PIDVAL2 +wait $PIDVAL1 + + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN diff --git a/channelsFileTransfer/clients.goldoutput/channel0_download.txt b/tests/channelsFileTransfer/clients.goldoutput/channel0_download.txt similarity index 100% rename from channelsFileTransfer/clients.goldoutput/channel0_download.txt rename to tests/channelsFileTransfer/clients.goldoutput/channel0_download.txt diff --git a/channelsFileTransfer/clients.goldoutput/channel1_download.txt b/tests/channelsFileTransfer/clients.goldoutput/channel1_download.txt similarity index 100% rename from channelsFileTransfer/clients.goldoutput/channel1_download.txt rename to tests/channelsFileTransfer/clients.goldoutput/channel1_download.txt diff --git a/channelsFileTransfer/clients.goldoutput/channel2_download.txt b/tests/channelsFileTransfer/clients.goldoutput/channel2_download.txt similarity index 100% rename from channelsFileTransfer/clients.goldoutput/channel2_download.txt rename to tests/channelsFileTransfer/clients.goldoutput/channel2_download.txt diff --git a/channelsFileTransfer/clients.goldoutput/channel3_download.txt b/tests/channelsFileTransfer/clients.goldoutput/channel3_download.txt similarity index 100% rename from channelsFileTransfer/clients.goldoutput/channel3_download.txt rename to tests/channelsFileTransfer/clients.goldoutput/channel3_download.txt diff --git a/channelsFileTransfer/clients.goldoutput/client0.txt b/tests/channelsFileTransfer/clients.goldoutput/client0.txt similarity index 100% rename from channelsFileTransfer/clients.goldoutput/client0.txt rename to tests/channelsFileTransfer/clients.goldoutput/client0.txt diff --git a/channelsFileTransfer/clients.goldoutput/client1.txt b/tests/channelsFileTransfer/clients.goldoutput/client1.txt similarity index 100% rename from channelsFileTransfer/clients.goldoutput/client1.txt rename to tests/channelsFileTransfer/clients.goldoutput/client1.txt diff --git a/channelsFileTransfer/clients.goldoutput/client2.txt b/tests/channelsFileTransfer/clients.goldoutput/client2.txt similarity index 100% rename from channelsFileTransfer/clients.goldoutput/client2.txt rename to tests/channelsFileTransfer/clients.goldoutput/client2.txt diff --git a/channelsFileTransfer/clients.goldoutput/client3.txt b/tests/channelsFileTransfer/clients.goldoutput/client3.txt similarity index 100% rename from channelsFileTransfer/clients.goldoutput/client3.txt rename to tests/channelsFileTransfer/clients.goldoutput/client3.txt diff --git a/tests/channelsFileTransfer/run.sh b/tests/channelsFileTransfer/run.sh new file mode 100755 index 0000000..fd367f4 --- /dev/null +++ b/tests/channelsFileTransfer/run.sh @@ -0,0 +1,86 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +CHANFILERESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$CHANFILERESULTS/clients +CLIENTCLEAN=$CHANFILERESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + +############################################################################### +# Test Channels File Transfer +############################################################################### + +echo "TESTING CHANNELS FILE TRANSFER..." + +CLIENTOPTS="--password hello --ndf $NDF --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" + +# Initialize creator of channel and file sender +CLIENTCMD="timeout 300s bin/client channelsFileTransfer -s blobs/0 $CLIENTOPTS -l $CLIENTOUT/client0.log --ftChannelPath $CLIENTOUT/channel.chan --ftChannelIdentityPath $CLIENTOUT/channel0.id --ftNewChannel --ftChannelName MyFileTransferChannel --ftSendToChannel --file LoremIpsum.txt --ftFilePreviewString \"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\" --ftMaxThroughput 700 --ftRetry 0 --ftOutput $CLIENTOUT/channel0_download.txt" +eval $CLIENTCMD > $CLIENTOUT/client0.txt 2>&1 & +PIDVAL0=$! +echo "$CLIENTCMD -- $PIDVAL0" + +# Wait for the channel info file to be created +while [ ! -s $CLIENTOUT/channel.chan ]; do + sleep 1 + echo -n "." +done +echo + +# Initialize three clients to join the channel and receive the file +CLIENTCMD="timeout 300s bin/client channelsFileTransfer -s blobs/1 -l $CLIENTOUT/client1.log $CLIENTOPTS --ftChannelPath $CLIENTOUT/channel.chan --ftChannelIdentityPath $CLIENTOUT/channel1.id --ftJoinChannel --ftOutput $CLIENTOUT/channel1_download.txt" +eval $CLIENTCMD > $CLIENTOUT/client1.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="timeout 300s bin/client channelsFileTransfer -s blobs/2 -l $CLIENTOUT/client2.log $CLIENTOPTS --ftChannelPath $CLIENTOUT/channel.chan --ftChannelIdentityPath $CLIENTOUT/channel2.id --ftJoinChannel --ftOutput $CLIENTOUT/channel2_download.txt" +eval $CLIENTCMD > $CLIENTOUT/client2.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="timeout 300s bin/client channelsFileTransfer -s blobs/3 -l $CLIENTOUT/client3.log $CLIENTOPTS --ftChannelPath $CLIENTOUT/channel.chan --ftChannelIdentityPath $CLIENTOUT/channel3.id --ftJoinChannel --ftOutput $CLIENTOUT/channel3_download.txt" +eval $CLIENTCMD > $CLIENTOUT/client3.txt 2>&1 & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" + +wait $PIDVAL0 +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v _download.txt); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C +done + + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN diff --git a/connect/clients.goldoutput/client200.txt b/tests/connect/clients.goldoutput/client200.txt similarity index 100% rename from connect/clients.goldoutput/client200.txt rename to tests/connect/clients.goldoutput/client200.txt diff --git a/connect/clients.goldoutput/client201.txt b/tests/connect/clients.goldoutput/client201.txt similarity index 100% rename from connect/clients.goldoutput/client201.txt rename to tests/connect/clients.goldoutput/client201.txt diff --git a/connect/clients.goldoutput/client202.txt b/tests/connect/clients.goldoutput/client202.txt similarity index 100% rename from connect/clients.goldoutput/client202.txt rename to tests/connect/clients.goldoutput/client202.txt diff --git a/connect/clients.goldoutput/client203.txt b/tests/connect/clients.goldoutput/client203.txt similarity index 100% rename from connect/clients.goldoutput/client203.txt rename to tests/connect/clients.goldoutput/client203.txt diff --git a/connect/clients.goldoutput/client204.txt b/tests/connect/clients.goldoutput/client204.txt similarity index 100% rename from connect/clients.goldoutput/client204.txt rename to tests/connect/clients.goldoutput/client204.txt diff --git a/connect/clients.goldoutput/client205.txt b/tests/connect/clients.goldoutput/client205.txt similarity index 100% rename from connect/clients.goldoutput/client205.txt rename to tests/connect/clients.goldoutput/client205.txt diff --git a/connect/clients.goldoutput/client206.txt b/tests/connect/clients.goldoutput/client206.txt similarity index 100% rename from connect/clients.goldoutput/client206.txt rename to tests/connect/clients.goldoutput/client206.txt diff --git a/connect/clients.goldoutput/client207.txt b/tests/connect/clients.goldoutput/client207.txt similarity index 100% rename from connect/clients.goldoutput/client207.txt rename to tests/connect/clients.goldoutput/client207.txt diff --git a/tests/connect/run.sh b/tests/connect/run.sh new file mode 100755 index 0000000..6d8c165 --- /dev/null +++ b/tests/connect/run.sh @@ -0,0 +1,133 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +CONNECTRESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$CONNECTRESULTS/clients +CLIENTCLEAN=$CONNECTRESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + +######################################################################## +# Test ephemeral connections +############################################################################### + +CONNECTIONOPTS="--password hello --waitTimeout 360 --ndf $NDF -v $DEBUGLEVEL" + +echo "TESTING EPEHMERAL CONNECTIONS..." +# Initiate server +CLIENTCMD="timeout 240s bin/client connection --ephemeral -s blobs/200 $CONNECTIONOPTS --writeContact $CLIENTOUT/client200-server.bin -l $CLIENTOUT/client200.log --startServer --serverTimeout 1m30s" +eval $CLIENTCMD > $CLIENTOUT/client200.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +echo "Sleeping to ensure connection server instantiation" +sleep 5 + +# Initiate client and send message to server +CLIENTCMD="timeout 240s bin/client connection --ephemeral -s blobs/201 --connect $CLIENTOUT/client200-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client201.log -m \"Hello 200 from 201, using connections\" --receiveCount 0" +eval $CLIENTCMD > $CLIENTOUT/client201.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL2 +wait $PIDVAL1 +echo "EPHEMERAL CONNECTION TESTS FINISHED" + +############################################################################### +# Test ephemeral authenticated connections +############################################################################### +echo "TESTING EPHEMERAL AUTHENTICATED CONNECTIONS..." +# Initiate server +CLIENTCMD="timeout 240s bin/client connection --ephemeral -s blobs/202 --authenticated $CONNECTIONOPTS --writeContact $CLIENTOUT/client202-server.bin -l $CLIENTOUT/client202.log --startServer --serverTimeout 1m30s" +eval $CLIENTCMD > $CLIENTOUT/client202.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +echo "Sleeping to ensure connection server instantiation" +sleep 5 + +# Initiate client and send message to server +CLIENTCMD="timeout 240s bin/client connection --ephemeral -s blobs/203 --authenticated --connect $CLIENTOUT/client202-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client203.log -m \"Hello 202 from 203, using connections\" --receiveCount 0" +eval $CLIENTCMD > $CLIENTOUT/client203.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL2 +wait $PIDVAL1 +echo "EPHEMERAL AUTHENTICATED CONNECTION TESTS FINISHED" + +############################################################################### +# Test non-ephemeral authenticated connections +############################################################################### + +echo "TESTING NON-EPHEMERAL CONNECTIONS" +# Initiate server +CLIENTCMD="timeout 240s bin/client connection -s blobs/204 $CONNECTIONOPTS --writeContact $CLIENTOUT/client204-server.bin -l $CLIENTOUT/client204.log --startServer --serverTimeout 1m30s" +eval $CLIENTCMD > $CLIENTOUT/client204.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +echo "Sleeping to ensure connection server instantiation" +sleep 5 + +# Initiate client and send message to server +CLIENTCMD="timeout 240s bin/client connection -s blobs/205 --connect $CLIENTOUT/client204-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client205.log -m \"Hello 204 from 205, using connections\" --receiveCount 0" +eval $CLIENTCMD > $CLIENTOUT/client205.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL2 +wait $PIDVAL1 +echo "NON-EPHEMERAL CONNECTION TEST FINISHED." + +echo "TESTING EPHEMERAL AUTHENTICATED CONNECTIONS..." +# Initiate server +CLIENTCMD="timeout 240s bin/client connection -s blobs/206 --authenticated $CONNECTIONOPTS --writeContact $CLIENTOUT/client206-server.bin -l $CLIENTOUT/client206.log --startServer --serverTimeout 1m30s" +eval $CLIENTCMD > $CLIENTOUT/client206.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +echo "Sleeping to ensure connection server instantiation" +sleep 5 + +# Initiate client and send message to server +CLIENTCMD="timeout 240s bin/client connection -s blobs/207 --authenticated --connect $CLIENTOUT/client206-server.bin $CONNECTIONOPTS -l $CLIENTOUT/client207.log -m \"Hello 206 from 207, using connections\" --receiveCount 0" +eval $CLIENTCMD > $CLIENTOUT/client207.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL2 +wait $PIDVAL1 +echo "Non-Ephemeral Test Complete." +######################################################################## + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN diff --git a/basice2e/clients.goldoutput/client1.txt b/tests/dm/clients.goldoutput/client1.txt similarity index 100% rename from basice2e/clients.goldoutput/client1.txt rename to tests/dm/clients.goldoutput/client1.txt diff --git a/basice2e/clients.goldoutput/client2.txt b/tests/dm/clients.goldoutput/client2.txt similarity index 100% rename from basice2e/clients.goldoutput/client2.txt rename to tests/dm/clients.goldoutput/client2.txt diff --git a/tests/dm/run.sh b/tests/dm/run.sh new file mode 100644 index 0000000..f8107a1 --- /dev/null +++ b/tests/dm/run.sh @@ -0,0 +1,93 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +RESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$RESULTS/clients +CLIENTCLEAN=$RESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + +############################################################################### +# Test DMs +############################################################################### + +CLIENTDMOPTS="--password hello --ndf $NDF --waitTimeout 360 -v $DEBUGLEVEL" + +echo "SENDING DM MESSAGES TO NEW USERS" +# The goal here is to try 3 things: +# 1. Send a DM to myself +# 2. Receive a DM from someone else +# 3. Send a reply to the user who sent me a message in #2 +CLIENTCMD="timeout 360s bin/client $CLIENTDMOPTS -l $CLIENTOUT/client1.log -s blobs/1 dm -m \"Hello from Rick Prime to myself via DM\" --receiveCount 3" +eval $CLIENTCMD >> $CLIENTOUT/client1.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +# Now we scan the log for the DMToken and DMPubKey fields +sleep 1 +while [[ $(grep "DMTOKEN:" $CLIENTOUT/client1.log) == "" ]]; do + sleep 1 + echo -n "." +done +# Wait for a round or so for the self sent message to send +sleep 2 +# Now send the DM (#2) +DMTOKEN=$(grep -a DMTOKEN $CLIENTOUT/client1.log | head -1 | awk '{print $5}') +DMPUBKEY=$(grep -a DMPUBKEY $CLIENTOUT/client1.log | head -1 | awk '{print $5}') +echo "PubKey: $DMPUBKEY, Token: $DMTOKEN" +CLIENTCMD2="timeout 360s bin/client $CLIENTDMOPTS -l $CLIENTOUT/client2.log -s blobs/2 dm -m \"Hello from Ben Prime to Rick Prime via DM\" --dmPubkey $DMPUBKEY --dmToken $DMTOKEN --receiveCount 2" +eval $CLIENTCMD2 >> $CLIENTOUT/client2.txt & +PIDVAL2=$! +echo "$CLIENTCMD2 -- $PIDVAL2" +wait $PIDVAL +# When the first command exits, read the RECVDM fields and reply to +# the last received message (the first 2 are the self send) (#3) +RTOKEN=$(grep -a RECVDMTOKEN $CLIENTOUT/client1.log | tail -1 | awk '{print $5}') +RPUBKEY=$(grep -a RECVDMPUBKEY $CLIENTOUT/client1.log | tail -1 | awk '{print $5}') +CLIENTCMD="timeout 360s bin/client $CLIENTDMOPTS -l $CLIENTOUT/client1.log -s blobs/1 dm -m \"What up from Rick Prime to Ben Prime via DM\" --dmPubkey $RPUBKEY --dmToken $RTOKEN --receiveCount 1" +eval $CLIENTCMD >> $CLIENTOUT/client1.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +############################################################################### +# Check output +############################################################################### + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN diff --git a/ephemeralRegistration/clients.goldoutput/client601.txt b/tests/ephemeralRegistration/clients.goldoutput/client601.txt similarity index 100% rename from ephemeralRegistration/clients.goldoutput/client601.txt rename to tests/ephemeralRegistration/clients.goldoutput/client601.txt diff --git a/ephemeralRegistration/clients.goldoutput/client602.txt b/tests/ephemeralRegistration/clients.goldoutput/client602.txt similarity index 100% rename from ephemeralRegistration/clients.goldoutput/client602.txt rename to tests/ephemeralRegistration/clients.goldoutput/client602.txt diff --git a/tests/ephemeralRegistration/run.sh b/tests/ephemeralRegistration/run.sh new file mode 100755 index 0000000..c6d6f78 --- /dev/null +++ b/tests/ephemeralRegistration/run.sh @@ -0,0 +1,108 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +EPHREGRESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$EPHREGRESULTS/clients +CLIENTCLEAN=$EPHREGRESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + +############################################################################### +# Test Ephemeral Registration (e2e test without registering with nodes) +############################################################################### +CLIENTEPHREGOPTS="--password hello --ndf $NDF --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL --disableNodeRegistration --enableImmediateSending" + +echo "TESTING E2E WITH EPHEMERAL REGISTRATION" +CLIENTCMD="timeout 360s bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client601.log -s blobs/601 --writeContact $CLIENTOUT/rick601-contact.bin --unsafe -m \"Hello from Rick601 to myself, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client601.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +CLIENTCMD="timeout 360s bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client602.log -s blobs/602 --writeContact $CLIENTOUT/ben602-contact.bin --destfile $CLIENTOUT/rick601-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client602.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" + +while [ ! -s $CLIENTOUT/ben602-contact.bin ]; do + sleep 1 + echo -n "." +done + + +TMPID=$(cat $CLIENTOUT/client601.log | grep -a "User\:" | awk -F' ' '{print $5}') +RICKID=${TMPID} +echo "RICK ID: $RICKID" +TMPID=$(cat $CLIENTOUT/client602.log | grep -a "User\:" | awk -F' ' '{print $5}') +BENID=${TMPID} +echo "BEN ID: $BENID" + +# Client 601 will now wait for client 602's E2E Auth channel request and confirm +CLIENTCMD="timeout 360s bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client601.log -s blobs/601 --destfile $CLIENTOUT/ben602-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" +eval $CLIENTCMD >> $CLIENTOUT/client601.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +# Test destid syntax too, note wait for 11 messages to catch the message from above ^^^ +CLIENTCMD="timeout 360s bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client601.log -s blobs/601 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick601, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client601.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 360s bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client602.log -s blobs/602 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben602, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client602.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 +CLIENTCMD="timeout 360s bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client601.log -s blobs/601 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick601, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client601.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 360s bin/client $CLIENTEPHREGOPTS -l $CLIENTOUT/client602.log -s blobs/602 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben602, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client602.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 +######################################################################## + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN diff --git a/basice2e/clients.net_goldoutput/client110.txt b/tests/fileTransfer/clients.goldoutput/client110.txt similarity index 100% rename from basice2e/clients.net_goldoutput/client110.txt rename to tests/fileTransfer/clients.goldoutput/client110.txt diff --git a/basice2e/clients.net_goldoutput/client111.txt b/tests/fileTransfer/clients.goldoutput/client111.txt similarity index 100% rename from basice2e/clients.net_goldoutput/client111.txt rename to tests/fileTransfer/clients.goldoutput/client111.txt diff --git a/tests/fileTransfer/run.sh b/tests/fileTransfer/run.sh new file mode 100755 index 0000000..2e349af --- /dev/null +++ b/tests/fileTransfer/run.sh @@ -0,0 +1,104 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +FILETRANSFERRESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$FILETRANSFERRESULTS/clients +CLIENTCLEAN=$FILETRANSFERRESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + +############################################################################### +# Test File Transfer +############################################################################### + +CLIENTOPTS="--password hello --ndf $NDF --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" +CLIENTFILETRANSFEROPTS="--password hello --waitTimeout 600 --ndf $NDF -v $DEBUGLEVEL" + +echo "TESTING FILE TRANSFER..." + +# Create authenticated channel between client 110 and 111 +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blobs/110 --writeContact $CLIENTOUT/client110-contact.bin --unsafe -m \"Hello from contact 110 to myself, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client110.txt & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +wait $PIDVAL1 +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client111.log -s blobs/111 --writeContact $CLIENTOUT/client111-contact.bin --destfile $CLIENTOUT/client110-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client111.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" + +while [ ! -s $CLIENTOUT/client111-contact.bin ]; do + sleep 1 + echo -n "." +done +echo + +TMPID=$(cat $CLIENTOUT/client110.log | grep -a "User\:" | awk -F' ' '{print $5}') +CLIENT110ID=${TMPID} +echo "CLIENT 110 ID: $CLIENT110ID" +TMPID=$(cat $CLIENTOUT/client111.log | grep -a "User\:" | awk -F' ' '{print $5}') +CLIENT111ID=${TMPID} +echo "CLIENT 111 ID: $CLIENT111ID" + +# Client 110 will now wait for client 111's E2E Auth channel request and confirm +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blobs/110 --destfile $CLIENTOUT/client111-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" +eval $CLIENTCMD >> $CLIENTOUT/client110.txt & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +wait $PIDVAL1 +wait $PIDVAL2 + +# Client 111 sends a file to client 110 +CLIENTCMD="timeout 360s bin/client fileTransfer -s blobs/110 -l $CLIENTOUT/client110.log $CLIENTFILETRANSFEROPTS" +eval $CLIENTCMD > $CLIENTOUT/client110.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="timeout 700s bin/client fileTransfer -s blobs/111 -l $CLIENTOUT/client111.log $CLIENTFILETRANSFEROPTS --sendFile $CLIENTOUT/client110-contact.bin --filePath LoremIpsum.txt --filePreviewString \"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\" --maxThroughput 1000 --retry 0" +eval $CLIENTCMD > $CLIENTOUT/client111.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL1 +wait $PIDVAL2 + +echo "FILE TRANSFER FINISHED..." + +######################################################################## + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN diff --git a/basice2e/clients.net_goldoutput/client80.txt b/tests/groupChat/clients.goldoutput/client80.txt similarity index 100% rename from basice2e/clients.net_goldoutput/client80.txt rename to tests/groupChat/clients.goldoutput/client80.txt diff --git a/basice2e/clients.net_goldoutput/client81.txt b/tests/groupChat/clients.goldoutput/client81.txt similarity index 100% rename from basice2e/clients.net_goldoutput/client81.txt rename to tests/groupChat/clients.goldoutput/client81.txt diff --git a/basice2e/clients.net_goldoutput/client82.txt b/tests/groupChat/clients.goldoutput/client82.txt similarity index 100% rename from basice2e/clients.net_goldoutput/client82.txt rename to tests/groupChat/clients.goldoutput/client82.txt diff --git a/tests/groupChat/run.sh b/tests/groupChat/run.sh new file mode 100755 index 0000000..892df9a --- /dev/null +++ b/tests/groupChat/run.sh @@ -0,0 +1,243 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +GROUPRESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$GROUPRESULTS/clients +CLIENTCLEAN=$GROUPRESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + +############################################################################### +# Test Group Chat +############################################################################### + +CLIENTOPTS="--password hello --ndf $NDF --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" +CLIENTGROUPOPTS="--password hello --waitTimeout 600 --ndf $NDF -v $DEBUGLEVEL" + +echo "TESTING GROUP CHAT..." +# Create authenticated channel between client 80 and 81 +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blobs/80 --writeContact $CLIENTOUT/client80-contact.bin --unsafe -m \"Hello from contact 80 to myself, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +wait $PIDVAL1 +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client81.log -s blobs/81 --writeContact $CLIENTOUT/client81-contact.bin --destfile $CLIENTOUT/client80-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" + +while [ ! -s $CLIENTOUT/client81-contact.bin ]; do + sleep 1 + echo -n "." +done +echo + +TMPID=$(cat $CLIENTOUT/client80.log | grep -a "User\:" | awk -F' ' '{print $5}') +CLIENT80ID=${TMPID} +echo "CLIENT 80 ID: $CLIENT80ID" +TMPID=$(cat $CLIENTOUT/client81.log | grep -a "User\:" | awk -F' ' '{print $5}') +CLIENT81ID=${TMPID} +echo "CLIENT 81 ID: $CLIENT81ID" + +# Client 81 will now wait for client 81's E2E Auth channel request and confirm +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blobs/80 --destfile $CLIENTOUT/client81-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +wait $PIDVAL1 +wait $PIDVAL2 + + +# Create authenticated channel between client 80 and 82 +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client82.log -s blobs/82 --writeContact $CLIENTOUT/client82-contact.bin --destfile $CLIENTOUT/client80-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" + +while [ ! -s $CLIENTOUT/client82-contact.bin ]; do + sleep 1 + echo -n "." +done +echo + +TMPID=$(cat $CLIENTOUT/client82.log | grep -a "User\:" | awk -F' ' '{print $5}') +CLIENT82ID=${TMPID} +echo "CLIENT 82 ID: $CLIENT82ID" + +# Client 82 will now wait for client 82's E2E Auth channel request and confirm +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blobs/80 --destfile $CLIENTOUT/client82-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +wait $PIDVAL1 +wait $PIDVAL3 + +# User 1 Creates Group +echo "Group User IDs: $CLIENT80ID $CLIENT81ID $CLIENT82ID" +echo "b64:$CLIENT81ID" > $CLIENTOUT/groupParticipants +echo "b64:$CLIENT82ID" >> $CLIENTOUT/groupParticipants +CLIENTCMD="timeout 605s bin/client group -s blobs/80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --create $CLIENTOUT/groupParticipants --message \"80 inviting 81 and 82 to new group\"" +eval $CLIENTCMD > $CLIENTOUT/client80.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="bin/client group -s blobs/81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --join" +eval $CLIENTCMD > $CLIENTOUT/client81.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="bin/client group -s blobs/82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --join" +eval $CLIENTCMD > $CLIENTOUT/client82.txt 2>&1 & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# Extract group ID -- Note to Jono this probably needs to be fixed! +GROUPID=$(cat $CLIENTOUT/client80.log | grep -a "NewGroupID\:" | awk -F' ' '{print $6}') +echo "Group ID: $GROUPID" + +# Print the group list from all users +CLIENTCMD="bin/client group -s blobs/80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --list" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="bin/client group -s blobs/81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --list" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="bin/client group -s blobs/82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --list" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# Print group from all users +CLIENTCMD="bin/client group -s blobs/80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --show $GROUPID" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="bin/client group -s blobs/81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --show $GROUPID" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="bin/client group -s blobs/82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --show $GROUPID" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# Now everyone sends their message +CLIENTCMD="bin/client group -s blobs/80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 80\"" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="bin/client group -s blobs/81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 81\"" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="bin/client group -s blobs/82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 82\"" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# Everyone waits for their message +CLIENTCMD="bin/client group -s blobs/80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --wait 2" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="bin/client group -s blobs/81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --wait 2" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="bin/client group -s blobs/82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --wait 2" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# Member 2 leaves the group +CLIENTCMD="bin/client group -s blobs/81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --leave $GROUPID" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL2 + +# 1 and 3 send a message successfully now, 2 does not +CLIENTCMD="bin/client group -s blobs/80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello 2 from 80\"" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="bin/client group -s blobs/82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello 2 from 82\"" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# All 3 wait again +CLIENTCMD="bin/client group -s blobs/80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --wait 1" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="bin/client group -s blobs/81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --wait 1" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="bin/client group -s blobs/82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --wait 1" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +echo "GROUP CHAT FINISHED!" +######################################################################## + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN diff --git a/basice2e/clients.goldoutput/client22.txt b/tests/historical/clients.goldoutput/client22.txt similarity index 100% rename from basice2e/clients.goldoutput/client22.txt rename to tests/historical/clients.goldoutput/client22.txt diff --git a/basice2e/clients.goldoutput/client23.txt b/tests/historical/clients.goldoutput/client23.txt similarity index 100% rename from basice2e/clients.goldoutput/client23.txt rename to tests/historical/clients.goldoutput/client23.txt diff --git a/basice2e/clients.goldoutput/client35.txt b/tests/historical/clients.goldoutput/client35.txt similarity index 100% rename from basice2e/clients.goldoutput/client35.txt rename to tests/historical/clients.goldoutput/client35.txt diff --git a/basice2e/clients.goldoutput/client36.txt b/tests/historical/clients.goldoutput/client36.txt similarity index 100% rename from basice2e/clients.goldoutput/client36.txt rename to tests/historical/clients.goldoutput/client36.txt diff --git a/tests/historical/run.sh b/tests/historical/run.sh new file mode 100644 index 0000000..eda2bdb --- /dev/null +++ b/tests/historical/run.sh @@ -0,0 +1,86 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +RESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$RESULTS/clients +CLIENTCLEAN=$RESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + +############################################################################### +# Test Historical Rounds +############################################################################### + +CLIENTOPTS="--password hello --ndf $NDF --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" + +echo "FORCING HISTORICAL ROUNDS..." +FH1ID=$(bin/client init -s blobs/35 -l $CLIENTOUT/client35.log --password hello --ndf $NDF --writeContact $CLIENTOUT/FH1-contact.bin -v $DEBUGLEVEL) +FH2ID=$(bin/client init -s blobs/36 -l $CLIENTOUT/client36.log --password hello --ndf $NDF --writeContact $CLIENTOUT/FH2-contact.bin -v $DEBUGLEVEL) +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client35.log -s blobs/35 --destid b64:$FH2ID --sendCount 5 --receiveCount 5 -m \"Hello from 35, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client35.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS --forceHistoricalRounds --unsafe -l $CLIENTOUT/client36.log -s blobs/36 --destid b64:$FH1ID --sendCount 5 --receiveCount 5 -m \"Hello from 36, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client36.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +echo "FORCING MESSAGE PICKUP RETRY... " +FM1ID=$(bin/client init -s blobs/22 -l $CLIENTOUT/client22.log --password hello --ndf $NDF --writeContact $CLIENTOUT/FM1-contact.bin -v $DEBUGLEVEL) +FM2ID=$(bin/client init -s blobs/23 -l $CLIENTOUT/client23.log --password hello --ndf $NDF --writeContact $CLIENTOUT/FM2-contact.bin -v $DEBUGLEVEL) +# Higher timeouts for this test to allow message pickup retry to function +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS --forceMessagePickupRetry -l $CLIENTOUT/client22.log -s blobs/22 --destid b64:$FM2ID --sendCount 5 --receiveCount 5 -m \"Hello from 22, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client22.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 360s bin/client $CLIENTOPTS --forceMessagePickupRetry -l $CLIENTOUT/client23.log -s blobs/23 --destid b64:$FM1ID --sendCount 5 --receiveCount 5 -m \"Hello from 23, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client23.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +echo "FIXME: The command above causes an UNEXPECTED failure and should be FIXED!" +wait $PIDVAL +wait $PIDVAL2 + +############################################################################### +# Check output +############################################################################### + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN diff --git a/basice2e/clients.net_goldoutput/client52.txt b/tests/singleUse/clients.goldoutput/client52.txt similarity index 100% rename from basice2e/clients.net_goldoutput/client52.txt rename to tests/singleUse/clients.goldoutput/client52.txt diff --git a/basice2e/clients.net_goldoutput/client53.txt b/tests/singleUse/clients.goldoutput/client53.txt similarity index 100% rename from basice2e/clients.net_goldoutput/client53.txt rename to tests/singleUse/clients.goldoutput/client53.txt diff --git a/tests/singleUse/run.sh b/tests/singleUse/run.sh new file mode 100755 index 0000000..c012a2a --- /dev/null +++ b/tests/singleUse/run.sh @@ -0,0 +1,81 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +SINGLERESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$SINGLERESULTS/clients +CLIENTCLEAN=$SINGLERESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + +CLIENTSINGLEOPTS="--password hello --waitTimeout 360 --ndf $NDF -v $DEBUGLEVEL" + +############################################################################### +# Test Single Use +############################################################################### + +# Single-use test: client53 sends message to client52; client52 responds with +# the same message in the set number of message parts +echo "TESTING SINGLE-USE" + +# Generate contact file for client52 +CLIENTCMD="bin/client init -s blobs/52 -l $CLIENTOUT/client52.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/jono52-contact.bin" +eval $CLIENTCMD >> /dev/null 2>&1 & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL + +# Start client53, which sends a message and then waits for a response +CLIENTCMD="timeout 240s bin/client single $CLIENTSINGLEOPTS -l $CLIENTOUT/client53.log -s blobs/53 --maxMessages 8 --message \"Test single-use message\" --send -c $CLIENTOUT/jono52-contact.bin --timeout 90s" +eval $CLIENTCMD >> $CLIENTOUT/client53.txt 2>&1 & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" + +# Start client52, which waits for a message and then responds +CLIENTCMD="timeout 240s bin/client single $CLIENTSINGLEOPTS -l $CLIENTOUT/client52.log -s blobs/52 --reply --timeout 90s" +eval $CLIENTCMD >> $CLIENTOUT/client52.txt 2>&1 & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +wait $PIDVAL1 +wait $PIDVAL2 + + +######################################################################## + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN diff --git a/ud/clients.goldoutput/client13-2.txt b/tests/ud/clients.goldoutput/client13-2.txt similarity index 100% rename from ud/clients.goldoutput/client13-2.txt rename to tests/ud/clients.goldoutput/client13-2.txt diff --git a/ud/clients.goldoutput/client13.txt b/tests/ud/clients.goldoutput/client13.txt similarity index 100% rename from ud/clients.goldoutput/client13.txt rename to tests/ud/clients.goldoutput/client13.txt diff --git a/ud/clients.goldoutput/client31.txt b/tests/ud/clients.goldoutput/client31.txt similarity index 100% rename from ud/clients.goldoutput/client31.txt rename to tests/ud/clients.goldoutput/client31.txt diff --git a/tests/ud/run.sh b/tests/ud/run.sh new file mode 100755 index 0000000..121f934 --- /dev/null +++ b/tests/ud/run.sh @@ -0,0 +1,139 @@ +# NOTE: This is verbose on purpose. +################################################################################ +## Initial Set Up & Clean Up of Past Runs +################################################################################ + +set -e + +if [ $# -gt 3 ] +then + echo "usage: $0 results_dir golds_dir" + exit +fi + +CONNECTRESULTS=$1 +GOLDOUTPUT=$2 +NDF=$3 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +CLIENTOUT=$CONNECTRESULTS/clients +CLIENTCLEAN=$CONNECTRESULTS/clients-cleaned + +mkdir -p $CLIENTOUT +mkdir -p $CLIENTCLEAN + +#export GRPC_GO_LOG_VERBOSITY_LEVEL=99 +#export GRPC_GO_LOG_SEVERITY_LEVEL=info + +############################################################################### +# Test User Discovery +############################################################################### + +CLIENTUDOPTS="--password hello --ndf $NDF -v $DEBUGLEVEL" +CLIENTOPTS="--password hello --ndf $NDF --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" + +# UD Test +echo "TESTING USER DISCOVERY..." +CLIENTCMD="timeout 240s bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blobs/13 --register josh13 --addemail josh13@elixxir.io --addphone 6178675309US" +eval $CLIENTCMD >> $CLIENTOUT/client13.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +CLIENTCMD="timeout 240s bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blobs/31 --register josh31 --addemail josh31@elixxir.io --addphone 6178675310US" +eval $CLIENTCMD >> $CLIENTOUT/client31.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL + +CLIENTCMD="timeout 240s bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blobs/13 --searchusername josh31 --searchemail josh31@elixxir.io --searchphone 6178675310US" +eval $CLIENTCMD > $CLIENTOUT/josh31.bin & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="timeout 240s bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blobs/31 --searchusername josh13 --searchemail josh13@elixxir.io --searchphone 6178675309US" +eval $CLIENTCMD > $CLIENTOUT/josh13.bin & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL1 +wait $PIDVAL2 + +# Print IDs to console +TMPID=$(cat $CLIENTOUT/client13.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1) +UDID1=${TMPID} +echo "UD ID 1: $UDID1" +TMPID=$(cat $CLIENTOUT/client31.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1) +UDID2=${TMPID} +echo "UD ID 2: $UDID2" + +# Test lookup message +CLIENTCMD="timeout 240s bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blobs/13 --lookup b64:$UDID2" +eval $CLIENTCMD > $CLIENTOUT/josh31.bin & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="timeout 240s bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blobs/31 --lookup b64:$UDID1" +eval $CLIENTCMD > $CLIENTOUT/josh13.bin & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL1 +wait $PIDVAL2 + +# Send auth chan request +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s blobs/13 --destfile $CLIENTOUT/josh31.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client13.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" + +# Approve request and confirm +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client31.log -s blobs/31 --destfile $CLIENTOUT/josh13.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" +eval $CLIENTCMD >> $CLIENTOUT/client31.txt & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL1 +wait $PIDVAL2 + +# now test +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client31.log -s blobs/31 --destfile $CLIENTOUT/josh13.bin --sendCount 5 --receiveCount 5 -m \"Hello from Josh31, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client31.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +CLIENTCMD="timeout 240s bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s blobs/13 --destfile $CLIENTOUT/josh31.bin --sendCount 5 --receiveCount 5 -m \"Hello from Josh13, with E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client13.txt & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +wait $PIDVAL2 + +# Test Remove User +CLIENTCMD="timeout 240s bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blobs/13 --remove josh13" +eval $CLIENTCMD >> $CLIENTOUT/client13.txt & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL +CLIENTCMD="timeout 240s bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13-2.log -s blobs/13-2 --register josh13" +eval $CLIENTCMD >> $CLIENTOUT/client13-2.txt || true & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +echo "NOTE: The command above causes an EXPECTED failure of unable to register!" +wait $PIDVAL + +######################################################################## + +echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." + +cp $CLIENTOUT/*.txt $CLIENTCLEAN/ + +sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt +sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt +rm $CLIENTCLEAN/client*.txt.bak + +for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do + sort -o tmp $CLIENTCLEAN/$C || true + cp tmp $CLIENTCLEAN/$C + # uniq tmp $CLIENTCLEAN/$C || true +done + + +set +x +diff -aru $GOLDOUTPUT $CLIENTCLEAN diff --git a/ud/- b/ud/- deleted file mode 100644 index a527307..0000000 --- a/ud/- +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)KDbiTA0/igk2K8Rz1Rfx3DsuX05kG6udG4av8FItdsQDrgZ7Ugdw/BAr6SAl5jvxRsUlDQnOCSvk/ZAjMfmNyaLVce5vwVNEZuvnx0GGhG4yh1nSc9ECC5hNfVBoIxIPdNwbdmxG6VcWe9pQoCnolRZOdSYZqphKwrhIoZnR1tE1069M0uDo1aWtOQSfCxkcDh+wne9hkNaUQSnl8988SCQ3A6S762948FV+XO9ohfdEEAHqjLVunHmBDn+v7QBdxfr+VrwCT+YW14+yA4f+4iAHQ6ThRUzUAGwYbBlKdoKgWPZ9896zBhWpqtvHtFON9WqKtIeI4a0SbB+wjAbY0oS4fPzxq6pNfCakYKp2I2EhvwGyFfkXC1eWm0IA96k1jLPOzSnNbF9LM/WDfG5EYIKaMBixXfhsjngXoA7zx04mvxR+3rMLgpErtP1JYDUl58C5b4/dLH0t/dG4YS9ephW8YVLgaYPANZR1O8e9hQOuzkIBSRziwlToKhGUE/KU94NfOveL+bVVofy0mwIpN0QhqLDYZkvJGRVzOxvd8OAlald5l2HCusECO2waoc5SfCbJBUWz7SdLyQAAAgA7ddCKe5jICkFam8BQIHOPCQ==xxc> \ No newline at end of file diff --git a/ud/betanet.txt b/ud/betanet.txt deleted file mode 100644 index e35ebcf..0000000 --- a/ud/betanet.txt +++ /dev/null @@ -1,306 +0,0 @@ -188.187.190.53:22840 -135.181.134.215:22840 -90.64.159.233:22840 -63.224.248.74:22840 -78.63.197.35:22840 -95.217.225.220:22840 -167.86.89.25:22840 -134.17.158.63:22840 -77.92.107.203:22840 -136.50.65.29:22840 -176.99.131.128:22840 -109.251.8.131:22840 -85.237.9.101:22840 -195.93.180.119:22840 -193.106.95.173:22840 -193.106.95.227:22840 -168.119.49.161:22840 -193.106.94.75:22840 -176.99.131.188:22840 -180.150.125.93:22840 -135.181.29.63:22840 -116.202.99.94:22840 -94.130.150.94:22840 -93.81.246.111:22840 -183.99.96.180:22101 -62.171.131.155:22840 -159.65.122.44:22840 -45.122.123.134:22840 -157.90.34.21:22840 -107.182.163.106:22840 -52.124.124.210:22840 -170.187.225.94:22840 -95.217.228.117:22840 -88.99.13.205:22840 -52.183.38.229:22840 -77.223.99.126:22840 -37.228.116.99:22840 -167.99.247.6:22840 -5.45.81.112:22840 -193.47.33.51:22840 -5.45.81.110:22840 -69.197.179.42:22840 -69.197.179.162:22840 -94.244.64.115:22840 -109.100.137.105:22840 -86.57.132.29:22840 -178.248.81.38:22840 -213.55.169.27:22840 -212.24.106.228:22840 -195.181.247.171:22840 -82.148.29.76:22840 -81.163.28.252:22840 -80.249.150.70:22840 -79.98.24.202:22840 -62.173.145.42:22840 -77.223.98.157:22840 -193.47.33.132:22840 -82.148.19.245:22840 -31.184.254.81:22840 -195.64.234.210:22840 -195.64.234.98:22840 -78.26.169.79:22840 -62.77.156.70:22840 -77.223.97.164:22840 -193.47.33.50:22840 -62.173.140.126:22840 -93.81.246.64:22840 -149.210.192.112:22840 -77.120.176.213:22840 -188.138.242.248:22840 -178.168.101.47:22840 -37.97.220.128:22840 -69.197.147.18:22840 -81.240.39.28:22840 -141.105.67.92:22840 -213.10.138.128:22840 -217.136.119.184:22840 -85.201.32.4:22840 -92.64.19.232:22840 -89.221.20.22:22840 -62.167.123.100:22800 -161.230.93.70:22840 -76.65.147.14:22840 -86.7.108.18:22840 -109.129.225.57:22840 -194.158.207.84:22840 -116.203.252.237:22840 -217.12.210.152:22840 -45.115.107.124:22840 -178.128.199.183:22840 -93.107.156.53:22840 -82.15.128.246:22840 -70.75.89.186:22840 -109.87.172.237:22840 -80.90.47.210:22840 -90.189.180.24:22840 -46.98.0.118:22840 -85.221.55.10:22840 -191.32.173.237:22840 -80.5.16.132:22840 -173.212.199.13:22840 -120.88.119.219:22840 -135.19.193.9:22840 -134.249.187.129:22840 -188.194.110.16:22840 -195.38.9.10:22840 -46.42.16.25:22840 -31.165.163.210:22840 -89.232.195.123:22840 -77.122.54.99:22840 -85.105.79.102:22840 -163.172.149.150:22840 -5.53.16.225:22840 -178.124.192.61:22840 -167.99.130.234:22840 -95.158.15.24:22840 -195.239.181.117:22840 -104.158.0.184:22840 -62.171.142.152:22840 -77.122.89.98:22840 -200.37.209.49:22840 -181.43.154.26:22840 -185.230.88.227:22840 -91.169.185.175:62840 -217.136.102.221:22840 -149.210.229.230:22840 -176.37.104.235:22840 -37.97.224.62:22840 -94.107.24.186:22840 -151.252.109.180:22840 -195.93.181.189:22840 -195.93.181.192:22840 -149.210.229.210:22840 -77.122.48.168:22840 -185.4.65.20:22840 -37.97.224.55:22840 -178.170.47.131:22840 -37.97.224.32:22840 -178.170.39.140:22840 -135.181.139.234:22840 -78.129.38.119:22840 -78.181.101.251:22840 -68.183.34.147:22840 -5.255.173.96:22840 -195.177.94.31:22840 -37.57.87.184:22840 -37.97.224.19:22840 -209.145.53.106:22840 -176.214.77.176:22840 -143.178.133.206:22840 -85.118.207.56:22840 -88.211.82.66:22840 -185.23.83.59:22840 -93.75.3.51:22840 -176.210.55.44:22840 -83.144.175.13:22840 -78.188.200.189:22840 -174.114.197.104:22840 -188.83.79.190:22840 -66.183.0.247:22840 -5.61.52.49:22840 -149.210.229.197:22840 -82.118.17.160:22841 -31.202.122.239:22840 -46.150.9.16:22840 -205.250.188.151:22840 -149.210.229.175:22840 -77.122.91.193:22840 -31.202.122.152:22840 -151.95.102.130:22840 -91.245.37.80:22840 -199.119.86.179:22840 -93.72.67.70:22840 -195.134.65.165:22840 -103.56.39.162:20090 -178.27.238.236:22840 -149.210.192.41:22840 -103.56.39.183:20090 -5.61.54.13:22840 -78.188.51.20:22840 -93.157.248.142:22840 -31.172.140.126:22840 -95.189.106.118:22840 -86.94.128.12:22840 -5.132.111.41:22840 -109.129.220.59:22840 -84.83.206.46:22840 -136.144.240.106:22840 -89.28.86.208:22840 -89.28.6.19:22840 -5.255.173.43:22840 -77.122.29.37:22840 -136.144.203.178:22840 -136.144.230.186:22840 -136.144.206.186:22840 -61.6.46.179:22840 -31.202.123.194:22840 -135.125.235.32:22840 -103.83.149.90:22840 -66.183.0.246:22840 -185.12.142.45:22840 -46.37.194.90:22840 -78.26.140.125:22840 -89.191.125.159:22840 -31.201.104.137:22840 -77.92.109.45:22840 -108.249.110.153:22840 -196.41.195.118:22840 -101.98.209.195:22840 -77.92.109.43:22840 -188.127.250.195:22840 -76.176.192.12:22840 -91.177.2.56:22840 -82.193.107.60:22840 -86.83.150.15:22840 -134.249.121.177:22840 -46.166.138.219:22840 -75.156.104.27:22840 -109.100.137.83:22840 -174.88.128.201:22840 -178.168.68.129:22840 -66.183.0.245:22840 -62.238.247.127:22840 -65.21.151.29:22841 -207.81.171.109:22840 -155.93.136.90:22840 -190.22.170.63:22840 -136.144.230.185:22840 -102.182.202.19:22840 -70.52.24.55:22841 -195.191.174.168:22840 -88.223.114.249:22840 -46.142.181.156:22840 -174.94.125.212:22840 -184.146.45.46:22840 -136.144.236.167:22840 -174.88.104.199:22840 -88.223.115.74:22840 -178.170.40.34:22840 -91.149.187.22:22840 -178.150.223.30:22840 -195.138.68.0:22840 -77.122.59.150:22840 -91.241.178.180:22840 -95.164.8.35:22840 -188.138.162.9:22840 -77.122.80.204:22840 -46.150.9.21:22840 -46.119.158.146:22840 -5.34.183.246:22842 -65.21.180.158:22840 -188.187.188.47:22840 -62.171.137.40:22840 -178.151.197.49:22840 -213.231.5.100:22840 -194.28.172.72:22840 -76.71.65.212:22840 -76.71.65.96:22840 -185.46.60.30:22840 -185.172.34.211:22840 -87.255.69.231:22840 -91.222.114.19:22840 -162.55.58.184:22840 -91.233.171.9:22840 -82.16.173.238:22840 -77.169.225.166:22840 -87.248.171.27:22840 -81.243.65.75:22840 -207.6.218.81:22840 -207.6.218.110:22840 -188.124.46.130:22840 -159.196.176.42:22840 -143.244.158.201:22840 -185.224.108.251:22840 -80.100.87.204:22840 -185.48.197.184:22840 -95.67.28.111:22840 -171.25.167.187:22840 -176.100.12.243:22840 -185.224.108.82:22840 -217.12.223.90:22852 -185.224.110.37:22840 -195.138.85.182:22840 -176.104.49.11:22840 -176.104.52.215:22840 -88.204.18.134:22840 -217.26.167.45:22840 -185.172.34.212:22840 -87.255.69.232:22840 -5.165.211.128:22840 -136.144.205.104:22840 -178.168.57.176:22840 -87.255.69.238:22840 -194.233.67.188:22840 -88.159.77.30:22840 -195.74.67.235:22840 -174.94.68.31:22840 -91.5.88.185:22841 -179.223.85.90:22840 -139.59.245.228:22840 -199.119.86.185:22840 -105.228.133.62:22840 -139.59.126.219:22840 -91.5.83.238:22842 -95.216.221.129:22840 -158.140.234.119:22840 diff --git a/ud/client-registrar.yaml b/ud/client-registrar.yaml deleted file mode 100644 index a4e5f0c..0000000 --- a/ud/client-registrar.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# ================================== -# Client Registrar Configuration -# ================================== - -# Log message level (0 = info, 1 = debug, >1 = trace) -logLevel: 0 -# Path to log file -logPath: "results/client-registrar.log" - -# Public address, used in NDF it gives to client -publicAddress: "0.0.0.0:20091" -# The listening port of this server -port: 20091 - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -# Maximum number of connections per period -userRegCapacity: 1000 -# How often the number of connections is reset -userRegLeakPeriod: "24h" - -# Database connection information -dbUsername: "cmix" -dbPassword: "" -dbName: "cmix_server" -dbAddress: "" - -# List of client codes to be added to the database (for testing) -clientRegCodes: - - "AAAA" - - "BBBB" - - "CCCC" diff --git a/ud/devnet.txt b/ud/devnet.txt deleted file mode 100644 index 922c0de..0000000 --- a/ud/devnet.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.125.145:11420 -35.163.143.85:11420 -34.218.59.127:11420 diff --git a/ud/gateway-1.yaml b/ud/gateway-1.yaml deleted file mode 100644 index ef2103d..0000000 --- a/ud/gateway-1.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-1.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10090" - -# The listening port of this gateway -Port: 1090 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-0.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/ud/gateway-2.yaml b/ud/gateway-2.yaml deleted file mode 100644 index e011701..0000000 --- a/ud/gateway-2.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-2.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10091" - -# The listening port of this gateway -Port: 1091 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-1.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/ud/gateway-3.yaml b/ud/gateway-3.yaml deleted file mode 100644 index 325b3c8..0000000 --- a/ud/gateway-3.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-3.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10092" - -# The listening port of this gateway -Port: 1092 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-2.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/ud/gateway-4.yaml b/ud/gateway-4.yaml deleted file mode 100644 index 71d8f56..0000000 --- a/ud/gateway-4.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-4.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10093" - -# The listening port of this gateway -Port: 1093 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-3.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/ud/gateway-5.yaml b/ud/gateway-5.yaml deleted file mode 100644 index 32e884d..0000000 --- a/ud/gateway-5.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# START YAML === -################################################################################ -## Copyright © 2018 Privategrity Corporation # -## # -## All rights reserved. # -################################################################################ - -## -# Gateway Configuration File -## - -# Used for debugging -loglevel: 2 - -# Output log file -log: "results/gateways/gateway-5.log" - -# The public IP address and port of the node associated with this gateway -cmixAddress: "0.0.0.0:10094" - -# The listening port of this gateway -Port: 1094 - -# The public IPv4 address of the Gateway, as reported to the network, to use -# instead of dynamically looking up Gateway's own IP address. If a port is not -# included, then the port flag is used instead. -overridePublicIP: "0.0.0.0" - -# Period in which the message cleanup function executes. Recommended period is on the order of a minute. -messageTimeout: "1800s" - -# Path to where the IDF is saved. This is used by the wrapper management script. -idfPath: "results/gateways/gatewayIDF-4.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the private key file -keyPath: "../keys/cmix.rip.key" -# Path to the certificate file -certPath: "../keys/cmix.rip.crt" -# Path to the permissioning certificate -schedulingCertPath: "../keys/cmix.rip.crt" -# Path to the certificate file -cmixCertPath: "../keys/cmix.rip.crt" - - -devMode: true - -minRegisteredNodes: 0 -# === END YAML diff --git a/ud/mainnet.txt b/ud/mainnet.txt deleted file mode 100644 index 3fbbb1c..0000000 --- a/ud/mainnet.txt +++ /dev/null @@ -1,74 +0,0 @@ -"65.21.170.29:22840" -"88.198.2.52:22840" -"188.40.70.250:22840" -"185.218.125.248:22840" -"31.202.122.131:22840" -"173.249.60.80:22840" -"65.21.76.35:22840" -"195.201.171.211:22840" -"65.21.221.236:22840" -"37.97.220.130:22840" -"159.148.31.238:22840" -"nodochile.myddns.me:22840" -"94.130.10.38:22840" -"188.240.52.205:22840" -"212.38.189.73:22840" -"xerxesgw.caius.ovh:22840" -"46.4.50.57:22840" -"103.195.101.143:22840" -"49.12.45.179:22840" -"167.172.88.140:22840" -"5.189.176.210:22840" -"135.181.213.94:22840" -"213.136.70.8:22840" -"194.163.163.77:22840" -"65.21.204.13:22840" -"88.119.195.16:22840" -"88.198.2.51:22840" -"181.43.194.251:22840" -"159.148.31.232:22840" -"65.108.52.154:11098" -"138.201.37.166:22840" -"kmil.go.ro:22840" -"37.97.169.197:22840" -"144.76.65.107:22840" -"178.18.253.13:22840" -"162.55.131.110:22840" -"91.230.111.8:22840" -"109.98.108.250:22840" -"15.161.170.171:22840" -"37.97.224.110:22840" -"54.79.206.112:22840" -"144.126.149.30:22840" -"194.163.171.145:22840" -"37.97.220.129:22840" -"194.163.170.125:22840" -"65.21.143.248:22840" -"149.210.229.175:22840" -"149.210.192.112:22840" -"149.210.192.111:22840" -"65.21.234.163:22840" -"149.210.229.223:22840" -"173.249.44.133:22840" -"75.119.130.123:22840" -"194.233.77.127:22840" -"66.94.99.187:22840" -"144.91.99.106:22840" -"185.214.134.207:22840" -"95.217.207.236:22840" -"95.217.206.164:22840" -"173.212.233.67:22840" -"37.55.17.106:22840" -"65.108.3.162:22840" -"186.106.188.155:22840" -"109.237.108.117:22840" -"65.108.42.168:22840" -"65.21.234.86:22840" -"65.21.50.177:22840" -"194.163.189.115:22840" -"135.181.212.170:22840" -"23.88.104.166:22840" -"103.107.182.192:22840" -"65.108.2.254:22840" -"94.130.136.136:22840" -"162.55.100.14:22840" diff --git a/ud/network.config b/ud/network.config deleted file mode 100644 index 68fc748..0000000 --- a/ud/network.config +++ /dev/null @@ -1,26 +0,0 @@ -localhost:1090 -# This is the network configuration file. The top line of this file, -# when not set via command line, is used to determine to which network -# the integration test will be run against. - -# Note you can also specify "release", "betanet", or "protonet" on run.sh - -# Betanet gateways -109.169.15.30:22840 -5.12.137.118:22840 -92.246.20.92:22840 -178.16.39.203:22840 -86.135.17.18:22840 - -# Release (messenger test) network gateways -34.221.74.216:11420 -52.25.9.28:11420 -54.149.122.115:11420 - - -# protonet -185.152.3.247:11420 -93.151.207.39:11420 -93.107.154.131:11420 -173.208.225.75:11421 -92.246.20.92:11420 diff --git a/ud/network.sh b/ud/network.sh deleted file mode 100755 index 2a7b2cc..0000000 --- a/ud/network.sh +++ /dev/null @@ -1,110 +0,0 @@ -# This script is used to start a basic 5 node network for running clients on. It is meant to be `source`'d into a script -# which will run clients on the network, such as `client-session-tests.sh` or the main `run.sh`. -# -# You **must** source it, because otherwise the `trap finish EXIT` instruction will cause the network to stop when -# network.sh returns to your script or shell. Sourcing it will "import" the commands into your script instead, causing -# the trap instruction to stop the network when your script/shell exits. - -echo "STARTING SERVERS..." - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -UDBOUT=results/udb-console.txt - -# Copy udbContact into place when running locally. -cp udbContact.bin results/udbContact.bin - -PERMCMD="../bin/permissioning --logLevel $DEBUGLEVEL -c permissioning.yaml " -$PERMCMD > results/permissioning-console.txt 2>&1 & -PIDVAL=$! -echo "$PERMCMD -- $PIDVAL" - - -# Run Client Registrar -CLIENT_REG_CMD="../bin/client-registrar \ --l 2 -c client-registrar.yaml" -$CLIENT_REG_CMD > results/client-registrat-console.txt 2>&1 & -PIDVAL=$! -echo "$CLIENT_REG_CMD -- $PIDVAL" - -for SERVERID in $(seq 5 -1 1) -do - IDX=$(($SERVERID - 1)) - SERVERCMD="../bin/server --logLevel $DEBUGLEVEL --config server-$SERVERID.yaml" - if [ $SERVERID -eq 5 ] && [ -n "$NSYSENABLED" ] - then - SERVERCMD="nsys profile --session-new=gputest --trace=cuda -o server-$SERVERID $SERVERCMD" - fi - $SERVERCMD > $SERVERLOGS/server-$SERVERID-console.txt 2>&1 & - PIDVAL=$! - echo "$SERVERCMD -- $PIDVAL" -done - -# Start gateways -for GWID in $(seq 5 -1 1) -do - IDX=$(($GWID - 1)) - GATEWAYCMD="../bin/gateway --logLevel $DEBUGLEVEL --config gateway-$GWID.yaml" - $GATEWAYCMD > $GATEWAYLOGS/gateway-$GWID-console.txt 2>&1 & - PIDVAL=$! - echo "$GATEWAYCMD -- $PIDVAL" -done - -jobs -p > results/serverpids - -finish() { - echo "STOPPING SERVERS AND GATEWAYS..." - if [ -n "$NSYSENABLED" ] - then - nsys stop --session=gputest - fi - # NOTE: jobs -p doesn't work in a signal handler - for job in $(cat results/serverpids) - do - echo "KILLING $job" - kill $job || true - done - - sleep 5 - - for job in $(cat results/serverpids) - do - echo "KILL -9 $job" - kill -9 $job || true - done - #tail $SERVERLOGS/* - #tail $CLIENTCLEAN/* - #diff -aruN clients.goldoutput $CLIENTCLEAN -} - -trap finish EXIT -trap finish INT - -# Sleeps can die in a fire on the sun, we wait for the servers to start running -# rounds -rm rid.txt || true -touch rid.txt -cnt=0 -echo -n "Waiting for a round to run" -while [ ! -s rid.txt ] && [ $cnt -lt 120 ]; do - sleep 1 - grep -a "RID 1 ReceiveFinishRealtime END" results/servers/server-* > rid.txt || true - cnt=$(($cnt + 1)) - echo -n "." -done - -# Start a user discovery bot server -echo "STARTING UDB..." -UDBCMD="../bin/udb --logLevel $DEBUGLEVEL --skipVerification --protoUserPath udbProto.json --config udb.yaml -l 1" -$UDBCMD >> $UDBOUT 2>&1 & -PIDVAL=$! -echo $PIDVAL >> results/serverpids -echo "$UDBCMD -- $PIDVAL" -rm rid.txt || true -while [ ! -s rid.txt ] && [ $cnt -lt 30 ]; do - sleep 1 - grep -a "Sending Poll message" results/udb-console.txt > rid.txt || true - cnt=$(($cnt + 1)) - echo -n "." -done - diff --git a/ud/noerrors.txt b/ud/noerrors.txt deleted file mode 100644 index e69de29..0000000 diff --git a/ud/permissioning.yaml b/ud/permissioning.yaml deleted file mode 100644 index 92e2d24..0000000 --- a/ud/permissioning.yaml +++ /dev/null @@ -1,96 +0,0 @@ -# ================================== -# Permissioning Server Configuration -# ================================== - -# Log message level -loglevel: 2 - -# Path to log file -logPath: "results/permissioning.log" - -# The listening port of this server -port: 20090 - -# Database connection information -dbUsername: "" -dbPassword: "" -dbName: "" -dbAddress: "" - -minimumNodes: 5 - -minGatewayVersion: "3.0.0" -minServerVersion: "3.0.0" -minClientVersion: "4.0.0" -nodeMetricInterval: 3 - -# For testing, use the sequence as the country code. Do not use the geobinning database -disableGeoBinning: true - -# For testing, do not exclude node or gateway IPs which are local to the machine -allowLocalIPs: true - -# Disable pruning of NDF for offline nodes -# if set to false, network will sleep for five minutes on start -disableNDFPruning: true -permissiveIPChecking: true - -# How long rounds will be tracked by gateways. Rounds (and messages as an extension) -# prior to this period are not guaranteed to be delivered to clients. -# Expects duration in"h". (Defaults to 1 weeks (168 hours) -messageRetentionLimit: "168h" - -# Path to the file containing the round ID -roundIdPath: "results/roundId.txt" - -# Path to the file containing the update ID -updateIdPath: "results/updateId.txt" - - -# Public address used in NDF to give to client -registrationAddress: "0.0.0.0:20091" - -# Path to whitelisted IPs for client ratelimiting -whitelistedIpAddressesPath: "whitelist.txt" - -# Path to the node topology permissioning info -ndfOutputPath: "ndf.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the registration server private key file -keyPath: "../keys/cmix.rip.key" -# Path to the registration server certificate file -certPath: "../keys/cmix.rip.crt" - -fullNdfOutputPath: "results/permissions-ndfoutput.json" -signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json" - -# === REQUIRED FOR ENABLING TLS === -# Path to the UDB certificate file -udbCertPath: "../keys/cmix.rip.crt" -# "Location of the user discovery contact file. -udContactPath: "results/udbContact.bin" -udbAddress: "127.0.0.1:30090" - -# Time interval (in minutes) in which the database is -# checked for banned nodes -BanTrackerInterval: "3" - -groups: - cmix: - prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" - generator: "2" - e2e: - prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873" - generator: "2" - - -# Path to file with config for scheduling algorithm within the user directory -schedulingConfigPath: "registration.json" - -# Path to JSON file with list of Node registration codes (in order of network -# placement) -RegCodesFilePath: "regCodes.json" - -# Set address space size for ephemeral IDs -addressSpace: 32 diff --git a/ud/regCodes.json b/ud/regCodes.json deleted file mode 100644 index 2e73cf3..0000000 --- a/ud/regCodes.json +++ /dev/null @@ -1 +0,0 @@ -[{"RegCode": "vclh", "Order": "CR"},{"RegCode": "fxbl", "Order": "CR"},{"RegCode": "ygov", "Order": "CR"},{"RegCode": "jvow", "Order": "CR"},{"RegCode": "ktcg", "Order": "CR"}] \ No newline at end of file diff --git a/ud/registration.json b/ud/registration.json deleted file mode 100644 index f400c7e..0000000 --- a/ud/registration.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TeamSize": 5, - "PrecomputationTimeout": 30000, - "RealtimeTimeout": 15000, - "DebugTrackRounds": true, - "BatchSize": 32, - "MinimumDelay": 1000, - "RealtimeDelay": 2000, - "Threshold": 0.3, - "NodeCleanUpInterval": 180000, - "ResourceQueueTimeout": 300000 -} \ No newline at end of file diff --git a/ud/release.txt b/ud/release.txt deleted file mode 100644 index 4442567..0000000 --- a/ud/release.txt +++ /dev/null @@ -1,3 +0,0 @@ -34.222.230.124:11420 -54.187.42.105:11420 -54.149.115.63:11420 diff --git a/ud/run.sh b/ud/run.sh deleted file mode 100755 index 91f9203..0000000 --- a/ud/run.sh +++ /dev/null @@ -1,272 +0,0 @@ -# NOTE: This is verbose on purpose. -################################################################################ -## Initial Set Up & Clean Up of Past Runs -################################################################################ - -# Copy file into folder if it does not already exist -if [ ! -f network.sh ]; then - cp ../network/network.sh . -fi - -set -e -rm -fr results.bak || true -mv results results.bak || rm -fr results || true -rm -fr blob* || true -rm *-contact.json || true -rm server-5.qdstrm || true -rm server-5.qdrep || true - -mkdir -p .elixxir - -if [ $# -gt 1 ] -then - echo "usage: $0 [gatewayip:port]" - exit -fi - - -NETWORKENTRYPOINT=$1 - -DEBUGLEVEL=${DEBUGLEVEL-1} - - -SERVERLOGS=results/servers -GATEWAYLOGS=results/gateways -CLIENTOUT=results/clients -UDBOUT=results/udb-console.txt -CLIENTCLEAN=results/clients-cleaned - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - -mkdir -p $SERVERLOGS -mkdir -p $GATEWAYLOGS -mkdir -p $CLIENTOUT -mkdir -p $CLIENTCLEAN - - -################################################################################ -## Network Set Up -################################################################################ - - -if [ "$NETWORKENTRYPOINT" == "betanet" ] -then - NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "mainnet" ] -then - NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "release" ] -then - NETWORKENTRYPOINT=$(sort -R release.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "devnet" ] -then - NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) -elif [ "$NETWORKENTRYPOINT" == "" ] -then - NETWORKENTRYPOINT=$(head -1 network.config) -fi - -echo "NETWORK: $NETWORKENTRYPOINT" - -if [ "$NETWORKENTRYPOINT" == "localhost:1090" ] -then - source network.sh - -else - echo "Connecting to network defined at $NETWORKENTRYPOINT" - echo $NETWORKENTRYPOINT > results/startgwserver.txt -fi - -echo "localhost:1090" > results/startgwserver.txt - -echo "DONE LETS DO STUFF" - -echo "DOWNLOADING TLS Cert..." -# -alpn h2 added to mimic grpc headers -CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)" -echo $CMD -eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin" -CMD="cat results/startgwcert.bin | openssl x509 -outform PEM" -echo $CMD -eval $CMD > "results/startgwcert.pem" -head "results/startgwcert.pem" - -echo "DOWNLOADING NDF..." -CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem" -eval $CLIENTCMD >> results/ndf.json 2>&1 & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -cat results/ndf.json | jq . | head -5 - -file results/ndf.json - -if [ ! -s results/ndf.json ] -then - echo "results/ndf.json is empty, cannot proceed" - exit -1 -fi - -############################################################################### -# Test User Discovery -############################################################################### - -CLIENTUDOPTS="--password hello --ndf results/ndf.json -v $DEBUGLEVEL" -CLIENTOPTS="--password hello --ndf results/ndf.json --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL" - -# UD Test -echo "TESTING USER DISCOVERY..." -CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --register josh13 --addemail josh13@elixxir.io --addphone 6178675309US" -eval $CLIENTCMD >> $CLIENTOUT/client13.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blob31 --register josh31 --addemail josh31@elixxir.io --addphone 6178675310US" -eval $CLIENTCMD >> $CLIENTOUT/client31.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL - -CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --searchusername josh31 --searchemail josh31@elixxir.io --searchphone 6178675310US" -eval $CLIENTCMD > $CLIENTOUT/josh31.bin & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blob31 --searchusername josh13 --searchemail josh13@elixxir.io --searchphone 6178675309US" -eval $CLIENTCMD > $CLIENTOUT/josh13.bin & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL1 -wait $PIDVAL2 - -# Print IDs to console -TMPID=$(cat $CLIENTOUT/client13.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1) -UDID1=${TMPID} -echo "UD ID 1: $UDID1" -TMPID=$(cat $CLIENTOUT/client31.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1) -UDID2=${TMPID} -echo "UD ID 2: $UDID2" - -# Test lookup message -CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --lookup b64:$UDID2" -eval $CLIENTCMD > $CLIENTOUT/josh31.bin & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL1" -CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client31.log -s blob31 --lookup b64:$UDID1" -eval $CLIENTCMD > $CLIENTOUT/josh13.bin & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL1 -wait $PIDVAL2 - -# Send auth chan request -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s blob13 --destfile $CLIENTOUT/josh31.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0" -eval $CLIENTCMD >> $CLIENTOUT/client13.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL2" - -# Approve request and confirm -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client31.log -s blob31 --destfile $CLIENTOUT/josh13.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360" -eval $CLIENTCMD >> $CLIENTOUT/client31.txt & -PIDVAL1=$! -echo "$CLIENTCMD -- $PIDVAL2" -wait $PIDVAL1 -wait $PIDVAL2 - -# now test -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client31.log -s blob31 --destfile $CLIENTOUT/josh13.bin --sendCount 5 --receiveCount 5 -m \"Hello from Josh31, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client31.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s blob13 --destfile $CLIENTOUT/josh31.bin --sendCount 5 --receiveCount 5 -m \"Hello from Josh13, with E2E Encryption\"" -eval $CLIENTCMD >> $CLIENTOUT/client13.txt & -PIDVAL2=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -wait $PIDVAL2 - -# Test Remove User -CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s blob13 --remove josh13" -eval $CLIENTCMD >> $CLIENTOUT/client13.txt & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -wait $PIDVAL -CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13-2.log -s blob13-2 --register josh13" -eval $CLIENTCMD >> $CLIENTOUT/client13-2.txt || true & -PIDVAL=$! -echo "$CLIENTCMD -- $PIDVAL" -echo "NOTE: The command above causes an EXPECTED failure of unable to register!" -wait $PIDVAL - -######################################################################## - -echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..." - -cp $CLIENTOUT/*.txt $CLIENTCLEAN/ - -sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt -sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt -rm $CLIENTCLEAN/client*.txt.bak - -for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do - sort -o tmp $CLIENTCLEAN/$C || true - cp tmp $CLIENTCLEAN/$C - # uniq tmp $CLIENTCLEAN/$C || true -done - -GOLDOUTPUT=clients.goldoutput -if [ "$NETWORKENTRYPOINT" != "localhost:1090" ] -then - rm -fr clients.net_goldoutput || true - GOLDOUTPUT=clients.net_goldoutput - cp -r clients.goldoutput clients.net_goldoutput - # Delete the localhost only files - rm $GOLDOUTPUT/client13* || true - rm $GOLDOUTPUT/client18* || true - rm $GOLDOUTPUT/client19* || true - rm $GOLDOUTPUT/client2[01]* || true - rm $GOLDOUTPUT/client31* || true - rm $GOLDOUTPUT/client3[56]* || true - rm $GOLDOUTPUT/client45* || true - rm $GOLDOUTPUT/client56* || true - rm $GOLDOUTPUT/client67* || true - rm $GOLDOUTPUT/client74* || true - rm $GOLDOUTPUT/client9* || true -fi - - -set +x -diff -aru $GOLDOUTPUT $CLIENTCLEAN - -if [ "$NETWORKENTRYPOINT" == "localhost:1090" ] -then - - #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true - #diff -ruN results/client-errors.txt noerrors.txt - cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true - cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true - diff -aruN results/server-errors.txt noerrors.txt - IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty" - IGNORESERVE="Failed to serve " - IGNORESTART="Failed to start " - IGNOREREG="WARNING: MINIMUM REGISTERED NODES HAS BEEN CHANGED" - cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART" | grep -av "$IGNOREREG" > results/gateway-errors.txt || true - cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true - diff -aruN results/gateway-errors.txt noerrors.txt - echo "Checking backup files for equality..." - # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt - #diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true - # diff -aruN client120BackupDiff.txt noerrors.txt - #echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!" - #diff -aruN client121BackupDiff.txt noerrors.txt -fi - -# Remove the file if it exists -if [ -f network.sh ]; then - rm network.sh -fi \ No newline at end of file diff --git a/ud/server-1.yaml b/ud/server-1.yaml deleted file mode 100644 index 6ac93fc..0000000 --- a/ud/server-1.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "vclh" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-0.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-1.log" - errOutput: "results/servers/server-1.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10090" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-1.log" -# === END YAML diff --git a/ud/server-2.yaml b/ud/server-2.yaml deleted file mode 100644 index c734b0d..0000000 --- a/ud/server-2.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "fxbl" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-1.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-2.log" - errOutput: "results/servers/server-2.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10091" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-2.log" -# === END YAML diff --git a/ud/server-3.yaml b/ud/server-3.yaml deleted file mode 100644 index f85791f..0000000 --- a/ud/server-3.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "ygov" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-2.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-3.log" - errOutput: "results/servers/server-3.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10092" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-3.log" -# === END YAML diff --git a/ud/server-4.yaml b/ud/server-4.yaml deleted file mode 100644 index f238d89..0000000 --- a/ud/server-4.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "jvow" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-3.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-4.log" - errOutput: "results/servers/server-4.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10093" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-4.log" -# === END YAML diff --git a/ud/server-5.yaml b/ud/server-5.yaml deleted file mode 100644 index 02f3070..0000000 --- a/ud/server-5.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# START YAML === -registrationCode: "ktcg" -useGPU: false -devMode: true -rawPermAddr: true -logLevel: 2 - -cmix: - paths: - # Path where the ID will be stored after the ID is created on first run - # used by the wrapper script - idf: "nodeID-4.json" - # Path to the self signed TLS cert that the node uses for identification - cert: "../keys/cmix.rip.crt" - # Path to the private key for the self signed TLS cert - key: "../keys/cmix.rip.key" - # Path to where the log will be stored - log: "results/servers/server-5.log" - errOutput: "results/servers/server-5.err" - ipListOutput: "results/servers/iplist-1.txt" - port: "10094" - overridePublicIP: "127.0.0.1" -database: - name: "cmix_server" - username: "cmix" - password: "" - addresses: "" -gateway: - paths: - # Path to the self signed TLS cert used by the gateway - cert: "../keys/cmix.rip.crt" -scheduling: - paths: - # Path to the self signed TLS cert used by the permissioning. Provided by xx network - cert: "../keys/cmix.rip.crt" - # IP Address of the permissioning server, provided by xx network - address: "0.0.0.0:20090" -metrics: - # location of stored metrics data. Modification to set to permissioning - # server instead of saving will be made at a later date - log: "metrics-server-5.log" -# === END YAML diff --git a/ud/udb.yaml b/ud/udb.yaml deleted file mode 100644 index ec1a4e3..0000000 --- a/ud/udb.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# UDB Config for E2E Integration test -log: "./results/udb.log" -sessionPath: "./results/udbsession" -sessionPass: "hello" -certPath: "../keys/cmix.rip.crt" -port: "30090" -keyPath: "../keys/cmix.rip.key" -permCertPath: "../keys/cmix.rip.crt" -permAddress: "0.0.0.0:20090" -devMode: true \ No newline at end of file diff --git a/ud/udbContact.bin b/ud/udbContact.bin deleted file mode 100644 index 10b0846..0000000 --- a/ud/udbContact.bin +++ /dev/null @@ -1 +0,0 @@ -<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc> \ No newline at end of file diff --git a/ud/udbProto.json b/ud/udbProto.json deleted file mode 100644 index 940cadf..0000000 --- a/ud/udbProto.json +++ /dev/null @@ -1 +0,0 @@ -{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}} \ No newline at end of file diff --git a/ud/whitelist.txt b/ud/whitelist.txt deleted file mode 100644 index 446eca0..0000000 --- a/ud/whitelist.txt +++ /dev/null @@ -1 +0,0 @@ -["0.0.0.0", "127.0.0.1"] \ No newline at end of file -- GitLab