From e45457fd0ec969a3f1b41aae9ec0872d8188b6b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=BDborn=C3=BD=20Adam?= Date: Sun, 15 May 2022 21:17:31 +0200 Subject: [PATCH 01/11] Better regex for adding quoted to JSON keys --- src/ExportHelper.php | 2 +- tests/phpunit/ExportHelperTest.php | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ExportHelper.php b/src/ExportHelper.php index 01a9b66..43ba97c 100644 --- a/src/ExportHelper.php +++ b/src/ExportHelper.php @@ -93,6 +93,6 @@ function (array $m): string { public static function addQuotesToJsonKeys(string $input): string { - return preg_replace('/\b(\w+)\s?:/', '"$1":', $input); + return preg_replace('/([{,])(\s*)([A-Za-z\d_\-]+?)\s*:/', '$1"$3":', $input); } } diff --git a/tests/phpunit/ExportHelperTest.php b/tests/phpunit/ExportHelperTest.php index f61479a..45732ae 100644 --- a/tests/phpunit/ExportHelperTest.php +++ b/tests/phpunit/ExportHelperTest.php @@ -164,10 +164,17 @@ public function getFixIsoDateDataProvider(): array public function testAddQuotesToJsonKeys(): void { $this->assertSame( - "{\"borough\": \"Bronx\", \"cuisine\": \"Bakery\", \"address.zipcode\": \"10452\"}", + "{\"borough\": \"Bronx\",\"cuisine\": \"Bakery\", \"address.zipcode\": \"10452\"}", ExportHelper::addQuotesToJsonKeys( "{borough : \"Bronx\", cuisine: \"Bakery\", \"address.zipcode\": \"10452\"}" ) ); + + $this->assertSame( + "{\"date\":{\"\$gte\":ISODate(\"2020-05-18T16:00:00Z\")}}", + ExportHelper::addQuotesToJsonKeys( + "{\"date\":{\"\$gte\":ISODate(\"2020-05-18T16:00:00Z\")}}" + ) + ); } } From 634012418dcabf13dfd71c859c0288e418300b8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=BDborn=C3=BD=20Adam?= Date: Sun, 15 May 2022 21:18:35 +0200 Subject: [PATCH 02/11] Replace dates and object ids in gte query for current version of mongoexport --- src/ExportHelper.php | 9 ++------- tests/phpunit/ExportHelperTest.php | 10 +++++----- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/ExportHelper.php b/src/ExportHelper.php index 43ba97c..9f39eaa 100644 --- a/src/ExportHelper.php +++ b/src/ExportHelper.php @@ -64,17 +64,12 @@ static function (array $m): string { } - /** - * Incremental fetching query is build by json_encode funciton, - * but MongoDB is using extended JSON with ISODate without quotes. - * So it is needed to remove surrounding slashes from "ISODate(...)". - */ public static function fixIsoDateInGteQuery(string $input): string { return preg_replace_callback( '~"\$gte":"ISODate\((\\\"(?>(?>\\\")|[^"])*\\\")\)"~', function (array $m): string { - return '"$gte":ISODate(' . stripslashes($m[1]) . ')'; + return '"$gte":{"$date": ' . stripslashes($m[1]) . '}'; }, $input ); @@ -85,7 +80,7 @@ public static function fixObjectIdInGteQuery(string $input): string return preg_replace_callback( '~"\$gte":"ObjectId\((\\\"(?>(?>\\\")|[^"])*\\\")\)"~', function (array $m): string { - return '"$gte":ObjectId(' . stripslashes($m[1]) . ')'; + return '"$gte":{"$oid": ' . stripslashes($m[1]) . '}'; }, $input ); diff --git a/tests/phpunit/ExportHelperTest.php b/tests/phpunit/ExportHelperTest.php index 45732ae..6a75253 100644 --- a/tests/phpunit/ExportHelperTest.php +++ b/tests/phpunit/ExportHelperTest.php @@ -51,7 +51,7 @@ public function testConvertStringIdToObjectId(): void public function testFixObjectIdInGteQuery(): void { $input = '{"$gte":"ObjectId(\"61f8e6b99e2986a522ebb90f\")"}'; - $expected = '{"$gte":ObjectId("61f8e6b99e2986a522ebb90f")}'; + $expected = '{"$gte":{"$oid": "61f8e6b99e2986a522ebb90f"}}'; Assert::assertSame( $expected, @@ -132,19 +132,19 @@ public function getFixIsoDateDataProvider(): array return [ 'simple' => [ '{"$gte":"ISODate(\"2020-05-18T16:00:00Z\")"}', - '{"$gte":ISODate("2020-05-18T16:00:00Z")}', + '{"$gte":{"$date": "2020-05-18T16:00:00Z"}}', ], 'empty-1' => [ '{"$gte":"ISODate(\"\")"}', - '{"$gte":ISODate("")}', + '{"$gte":{"$date": ""}}', ], 'escaping' => [ '{"$gte":"ISODate(\"2020-05-\\\\\"18\\\\\"T16:00:00Z\")"}', - '{"$gte":ISODate("2020-05-\"18\"T16:00:00Z")}', + '{"$gte":{"$date": "2020-05-\"18\"T16:00:00Z"}}', ], 'invalid-1' => [ '{"$gte":"ISODate(\"2020-05\"\"-18T16:00:00Z\")"}', - '{"$gte":ISODate("2020-05""-18T16:00:00Z")}', + '{"$gte":{"$date": "2020-05""-18T16:00:00Z"}}', ], 'invalid-2' => [ '{"$gte":"ISODate()"}', From 4a2ec1528787a028de68028d705d14a81bba9ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=BDborn=C3=BD=20Adam?= Date: Sun, 15 May 2022 21:19:08 +0200 Subject: [PATCH 03/11] Added tests for incremental fetching with state file on input --- .../expected-code | 1 + .../expected-stdout | 4 +++ .../expected/data/out/files/.gitkeep | 0 .../expected/data/out/state.json | 1 + .../expected/data/out/tables/.gitkeep | 0 .../expected/data/out/tables/incremental.csv | 2 ++ .../data/out/tables/incremental.csv.manifest | 1 + .../incremental-fetching-date-state/setUp.php | 12 ++++++++ .../source/data/config.json | 24 +++++++++++++++ .../source/data/in/state.json | 1 + .../expected-code | 1 + .../expected-stdout | 4 +++ .../expected/data/out/files/.gitkeep | 0 .../expected/data/out/state.json | 1 + .../expected/data/out/tables/.gitkeep | 0 .../expected/data/out/tables/incremental.csv | 2 ++ .../data/out/tables/incremental.csv.manifest | 1 + .../setUp.php | 12 ++++++++ .../source/data/config.json | 24 +++++++++++++++ .../source/data/in/state.json | 1 + .../expected-code | 1 + .../expected-stdout | 4 +++ .../expected/data/out/files/.gitkeep | 0 .../expected/data/out/state.json | 1 + .../expected/data/out/tables/.gitkeep | 0 .../expected/data/out/tables/incremental.csv | 2 ++ .../data/out/tables/incremental.csv.manifest | 1 + .../setUp.php | 12 ++++++++ .../source/data/config.json | 24 +++++++++++++++ .../source/data/in/state.json | 1 + .../expected-code | 1 + .../expected-stdout | 4 +++ .../expected/data/out/files/.gitkeep | 0 .../expected/data/out/state.json | 1 + .../expected/data/out/tables/.gitkeep | 0 .../expected/data/out/tables/incremental.csv | 2 ++ .../data/out/tables/incremental.csv.manifest | 1 + .../incremental-fetching-int-state/setUp.php | 12 ++++++++ .../source/data/config.json | 24 +++++++++++++++ .../source/data/in/state.json | 1 + .../expected-code | 1 + .../expected-stdout | 4 +++ .../expected/data/out/files/.gitkeep | 0 .../expected/data/out/state.json | 1 + .../expected/data/out/tables/.gitkeep | 0 .../expected/data/out/tables/incremental.csv | 3 ++ .../data/out/tables/incremental.csv.manifest | 1 + .../setUp.php | 12 ++++++++ .../source/data/config.json | 25 ++++++++++++++++ .../source/data/in/state.json | 1 + .../expected-code | 1 + .../expected-stdout | 4 +++ .../expected/data/out/files/.gitkeep | 0 .../expected/data/out/state.json | 1 + .../expected/data/out/tables/.gitkeep | 0 .../expected/data/out/tables/incremental.csv | 1 + .../data/out/tables/incremental.csv.manifest | 1 + .../expected/data/out/tables/table-nested.csv | 2 ++ .../data/out/tables/table-nested.csv.manifest | 1 + .../setUp.php | 12 ++++++++ .../source/data/config.json | 30 +++++++++++++++++++ .../source/data/in/state.json | 1 + .../expected-code | 1 + .../expected-stdout | 4 +++ .../expected/data/out/files/.gitkeep | 0 .../expected/data/out/state.json | 1 + .../expected/data/out/tables/.gitkeep | 0 .../expected/data/out/tables/incremental.csv | 2 ++ .../data/out/tables/incremental.csv.manifest | 1 + .../setUp.php | 12 ++++++++ .../source/data/config.json | 24 +++++++++++++++ .../source/data/in/state.json | 1 + .../expected-code | 1 + .../expected-stdout | 4 +++ .../expected/data/out/files/.gitkeep | 0 .../expected/data/out/state.json | 1 + .../expected/data/out/tables/.gitkeep | 0 .../expected/data/out/tables/incremental.csv | 2 ++ .../data/out/tables/incremental.csv.manifest | 1 + .../setUp.php | 12 ++++++++ .../source/data/config.json | 24 +++++++++++++++ .../source/data/in/state.json | 1 + 82 files changed, 378 insertions(+) create mode 100644 tests/functional/incremental-fetching-date-state/expected-code create mode 100644 tests/functional/incremental-fetching-date-state/expected-stdout create mode 100644 tests/functional/incremental-fetching-date-state/expected/data/out/files/.gitkeep create mode 100644 tests/functional/incremental-fetching-date-state/expected/data/out/state.json create mode 100644 tests/functional/incremental-fetching-date-state/expected/data/out/tables/.gitkeep create mode 100644 tests/functional/incremental-fetching-date-state/expected/data/out/tables/incremental.csv create mode 100644 tests/functional/incremental-fetching-date-state/expected/data/out/tables/incremental.csv.manifest create mode 100644 tests/functional/incremental-fetching-date-state/setUp.php create mode 100644 tests/functional/incremental-fetching-date-state/source/data/config.json create mode 100644 tests/functional/incremental-fetching-date-state/source/data/in/state.json create mode 100644 tests/functional/incremental-fetching-date-suffix-in-col-name-state/expected-code create mode 100644 tests/functional/incremental-fetching-date-suffix-in-col-name-state/expected-stdout create mode 100644 tests/functional/incremental-fetching-date-suffix-in-col-name-state/expected/data/out/files/.gitkeep create mode 100644 tests/functional/incremental-fetching-date-suffix-in-col-name-state/expected/data/out/state.json create mode 100644 tests/functional/incremental-fetching-date-suffix-in-col-name-state/expected/data/out/tables/.gitkeep create mode 100644 tests/functional/incremental-fetching-date-suffix-in-col-name-state/expected/data/out/tables/incremental.csv create mode 100644 tests/functional/incremental-fetching-date-suffix-in-col-name-state/expected/data/out/tables/incremental.csv.manifest create mode 100644 tests/functional/incremental-fetching-date-suffix-in-col-name-state/setUp.php create mode 100644 tests/functional/incremental-fetching-date-suffix-in-col-name-state/source/data/config.json create mode 100644 tests/functional/incremental-fetching-date-suffix-in-col-name-state/source/data/in/state.json create mode 100644 tests/functional/incremental-fetching-decimal-state/expected-code create mode 100644 tests/functional/incremental-fetching-decimal-state/expected-stdout create mode 100644 tests/functional/incremental-fetching-decimal-state/expected/data/out/files/.gitkeep create mode 100644 tests/functional/incremental-fetching-decimal-state/expected/data/out/state.json create mode 100644 tests/functional/incremental-fetching-decimal-state/expected/data/out/tables/.gitkeep create mode 100644 tests/functional/incremental-fetching-decimal-state/expected/data/out/tables/incremental.csv create mode 100644 tests/functional/incremental-fetching-decimal-state/expected/data/out/tables/incremental.csv.manifest create mode 100644 tests/functional/incremental-fetching-decimal-state/setUp.php create mode 100644 tests/functional/incremental-fetching-decimal-state/source/data/config.json create mode 100644 tests/functional/incremental-fetching-decimal-state/source/data/in/state.json create mode 100644 tests/functional/incremental-fetching-int-state/expected-code create mode 100644 tests/functional/incremental-fetching-int-state/expected-stdout create mode 100644 tests/functional/incremental-fetching-int-state/expected/data/out/files/.gitkeep create mode 100644 tests/functional/incremental-fetching-int-state/expected/data/out/state.json create mode 100644 tests/functional/incremental-fetching-int-state/expected/data/out/tables/.gitkeep create mode 100644 tests/functional/incremental-fetching-int-state/expected/data/out/tables/incremental.csv create mode 100644 tests/functional/incremental-fetching-int-state/expected/data/out/tables/incremental.csv.manifest create mode 100644 tests/functional/incremental-fetching-int-state/setUp.php create mode 100644 tests/functional/incremental-fetching-int-state/source/data/config.json create mode 100644 tests/functional/incremental-fetching-int-state/source/data/in/state.json create mode 100644 tests/functional/incremental-fetching-limit-state/expected-code create mode 100644 tests/functional/incremental-fetching-limit-state/expected-stdout create mode 100644 tests/functional/incremental-fetching-limit-state/expected/data/out/files/.gitkeep create mode 100644 tests/functional/incremental-fetching-limit-state/expected/data/out/state.json create mode 100644 tests/functional/incremental-fetching-limit-state/expected/data/out/tables/.gitkeep create mode 100644 tests/functional/incremental-fetching-limit-state/expected/data/out/tables/incremental.csv create mode 100644 tests/functional/incremental-fetching-limit-state/expected/data/out/tables/incremental.csv.manifest create mode 100644 tests/functional/incremental-fetching-limit-state/setUp.php create mode 100644 tests/functional/incremental-fetching-limit-state/source/data/config.json create mode 100644 tests/functional/incremental-fetching-limit-state/source/data/in/state.json create mode 100644 tests/functional/incremental-fetching-nested-date-state/expected-code create mode 100644 tests/functional/incremental-fetching-nested-date-state/expected-stdout create mode 100644 tests/functional/incremental-fetching-nested-date-state/expected/data/out/files/.gitkeep create mode 100644 tests/functional/incremental-fetching-nested-date-state/expected/data/out/state.json create mode 100644 tests/functional/incremental-fetching-nested-date-state/expected/data/out/tables/.gitkeep create mode 100644 tests/functional/incremental-fetching-nested-date-state/expected/data/out/tables/incremental.csv create mode 100644 tests/functional/incremental-fetching-nested-date-state/expected/data/out/tables/incremental.csv.manifest create mode 100644 tests/functional/incremental-fetching-nested-date-state/expected/data/out/tables/table-nested.csv create mode 100644 tests/functional/incremental-fetching-nested-date-state/expected/data/out/tables/table-nested.csv.manifest create mode 100644 tests/functional/incremental-fetching-nested-date-state/setUp.php create mode 100644 tests/functional/incremental-fetching-nested-date-state/source/data/config.json create mode 100644 tests/functional/incremental-fetching-nested-date-state/source/data/in/state.json create mode 100644 tests/functional/incremental-fetching-object-id-state/expected-code create mode 100644 tests/functional/incremental-fetching-object-id-state/expected-stdout create mode 100644 tests/functional/incremental-fetching-object-id-state/expected/data/out/files/.gitkeep create mode 100644 tests/functional/incremental-fetching-object-id-state/expected/data/out/state.json create mode 100644 tests/functional/incremental-fetching-object-id-state/expected/data/out/tables/.gitkeep create mode 100644 tests/functional/incremental-fetching-object-id-state/expected/data/out/tables/incremental.csv create mode 100644 tests/functional/incremental-fetching-object-id-state/expected/data/out/tables/incremental.csv.manifest create mode 100644 tests/functional/incremental-fetching-object-id-state/setUp.php create mode 100644 tests/functional/incremental-fetching-object-id-state/source/data/config.json create mode 100644 tests/functional/incremental-fetching-object-id-state/source/data/in/state.json create mode 100644 tests/functional/incremental-fetching-timestamp-state/expected-code create mode 100644 tests/functional/incremental-fetching-timestamp-state/expected-stdout create mode 100644 tests/functional/incremental-fetching-timestamp-state/expected/data/out/files/.gitkeep create mode 100644 tests/functional/incremental-fetching-timestamp-state/expected/data/out/state.json create mode 100644 tests/functional/incremental-fetching-timestamp-state/expected/data/out/tables/.gitkeep create mode 100644 tests/functional/incremental-fetching-timestamp-state/expected/data/out/tables/incremental.csv create mode 100644 tests/functional/incremental-fetching-timestamp-state/expected/data/out/tables/incremental.csv.manifest create mode 100644 tests/functional/incremental-fetching-timestamp-state/setUp.php create mode 100644 tests/functional/incremental-fetching-timestamp-state/source/data/config.json create mode 100644 tests/functional/incremental-fetching-timestamp-state/source/data/in/state.json diff --git a/tests/functional/incremental-fetching-date-state/expected-code b/tests/functional/incremental-fetching-date-state/expected-code new file mode 100644 index 0000000..c227083 --- /dev/null +++ b/tests/functional/incremental-fetching-date-state/expected-code @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/tests/functional/incremental-fetching-date-state/expected-stdout b/tests/functional/incremental-fetching-date-state/expected-stdout new file mode 100644 index 0000000..17be902 --- /dev/null +++ b/tests/functional/incremental-fetching-date-state/expected-stdout @@ -0,0 +1,4 @@ +%sconnected to: mongodb://mongodb:27017/ +%sexported 1 record +Parsing "/tmp/%s/out/tables/incremental.json" +Done "/tmp/%s/out/tables/incremental.json" diff --git a/tests/functional/incremental-fetching-date-state/expected/data/out/files/.gitkeep b/tests/functional/incremental-fetching-date-state/expected/data/out/files/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/functional/incremental-fetching-date-state/expected/data/out/state.json b/tests/functional/incremental-fetching-date-state/expected/data/out/state.json new file mode 100644 index 0000000..67c7fff --- /dev/null +++ b/tests/functional/incremental-fetching-date-state/expected/data/out/state.json @@ -0,0 +1 @@ +{"lastFetchedRow":{"export-id":"ISODate(\"2020-05-18T16:00:00Z\")"}} \ No newline at end of file diff --git a/tests/functional/incremental-fetching-date-state/expected/data/out/tables/.gitkeep b/tests/functional/incremental-fetching-date-state/expected/data/out/tables/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/functional/incremental-fetching-date-state/expected/data/out/tables/incremental.csv b/tests/functional/incremental-fetching-date-state/expected/data/out/tables/incremental.csv new file mode 100644 index 0000000..809756f --- /dev/null +++ b/tests/functional/incremental-fetching-date-state/expected/data/out/tables/incremental.csv @@ -0,0 +1,2 @@ +"id","decimal","date","timestamp" +"1","123.344","2020-05-18T16:00:00Z","1587646020" \ No newline at end of file diff --git a/tests/functional/incremental-fetching-date-state/expected/data/out/tables/incremental.csv.manifest b/tests/functional/incremental-fetching-date-state/expected/data/out/tables/incremental.csv.manifest new file mode 100644 index 0000000..b13b6f2 --- /dev/null +++ b/tests/functional/incremental-fetching-date-state/expected/data/out/tables/incremental.csv.manifest @@ -0,0 +1 @@ +{"primary_key":null,"incremental":true} diff --git a/tests/functional/incremental-fetching-date-state/setUp.php b/tests/functional/incremental-fetching-date-state/setUp.php new file mode 100644 index 0000000..bbc253c --- /dev/null +++ b/tests/functional/incremental-fetching-date-state/setUp.php @@ -0,0 +1,12 @@ + Date: Mon, 16 May 2022 10:03:14 +0200 Subject: [PATCH 04/11] Added simulate full disk test --- src/Parser/Mapping.php | 11 +++++-- tests/functional/DatadirTest.php | 6 ++++ .../expected-stderr | 2 +- .../expected-code | 1 + .../expected-stderr | 1 + .../expected/data/out/files/.gitkeep | 0 .../expected/data/out/tables/.gitkeep | 0 .../expected/data/out/tables/export-one.csv | 1 + .../export-no-space-left-on-device/setUp.php | 23 +++++++++++++ .../source/data/config.json | 33 +++++++++++++++++++ 10 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 tests/functional/export-no-space-left-on-device/expected-code create mode 100644 tests/functional/export-no-space-left-on-device/expected-stderr create mode 100644 tests/functional/export-no-space-left-on-device/expected/data/out/files/.gitkeep create mode 100644 tests/functional/export-no-space-left-on-device/expected/data/out/tables/.gitkeep create mode 120000 tests/functional/export-no-space-left-on-device/expected/data/out/tables/export-one.csv create mode 100644 tests/functional/export-no-space-left-on-device/setUp.php create mode 100644 tests/functional/export-no-space-left-on-device/source/data/config.json diff --git a/src/Parser/Mapping.php b/src/Parser/Mapping.php index 5ee72db..280632a 100644 --- a/src/Parser/Mapping.php +++ b/src/Parser/Mapping.php @@ -4,6 +4,7 @@ namespace MongoExtractor\Parser; +use Exception; use Keboola\Component\UserException; use Keboola\CsvMap\Exception\BadConfigException; use Keboola\CsvMap\Mapper; @@ -11,6 +12,7 @@ use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Serializer\Encoder\JsonEncode; use Symfony\Component\Serializer\Encoder\JsonEncoder; +use Throwable; class Mapping { @@ -74,10 +76,15 @@ public function parse(array $data): void $content = implode("\n", $contentArr); } - if (@file_put_contents($outputCsv, $content, FILE_APPEND | LOCK_EX) === false) { - throw new \Exception('Failed write to file "' . $outputCsv); + try { + if (@file_put_contents($outputCsv, $content, FILE_APPEND | LOCK_EX) === false) { + throw new Exception('Failed write to file "' . $outputCsv . '"'); + } + } catch (Throwable $e) { + throw new Exception('Failed write to file "' . $outputCsv . '"'); } + $manifest = [ 'primary_key' => $file->getPrimaryKey(true), 'incremental' => isset($this->manifestOptions['incremental']) && $this->manifestOptions['incremental'], diff --git a/tests/functional/DatadirTest.php b/tests/functional/DatadirTest.php index b1c0540..9dea139 100644 --- a/tests/functional/DatadirTest.php +++ b/tests/functional/DatadirTest.php @@ -5,6 +5,7 @@ namespace MongoExtractor\FunctionalTests; use Keboola\DatadirTests\DatadirTestCase; +use Keboola\Temp\Temp; use RuntimeException; use Symfony\Component\Process\Process; @@ -18,6 +19,11 @@ public static function setUpBeforeClass(): void putenv('SSH_PUBLIC_KEY=' . file_get_contents('/root/.ssh/id_rsa.pub')); } + public function getTemp(): Temp + { + return $this->temp; + } + protected function setUp(): void { parent::setUp(); diff --git a/tests/functional/export-invalid-mapping-bad-config/expected-stderr b/tests/functional/export-invalid-mapping-bad-config/expected-stderr index 2ee3155..647f3ec 100644 --- a/tests/functional/export-invalid-mapping-bad-config/expected-stderr +++ b/tests/functional/export-invalid-mapping-bad-config/expected-stderr @@ -1 +1 @@ -%sCRITICAL: Keboola\CsvMap\Exception\BadDataException:Error writing 'id' column: Cannot write data into column: (object) array( '$oid' => '%s', ) {"errFile":"/code/vendor/keboola/csvmap/src/Keboola/CsvMap/Mapper.php","errLine":107,"errCode":0,"errTrace":"#0 /code/vendor/keboola/csvmap/src/Keboola/CsvMap/Mapper.php(80): Keboola\\CsvMap\\Mapper->parseRow(Object(stdClass), Array)\n#1 /code/src/Parser/Mapping.php(57): Keboola\\CsvMap\\Mapper->parse(Array, Array)\n#2 /code/src/Export.php(136): MongoExtractor\\Parser\\Mapping->parse(Array)\n#3 /code/src/Extractor.php(114): MongoExtractor\\Export->parseAndCreateManifest()\n#4 /code/src/Component.php(45): MongoExtractor\\Extractor->extract('/tmp/run-%s...')\n#5 /code/vendor/keboola/php-component/src/BaseComponent.php(201): MongoExtractor\\Component->run()\n#6 /code/src/run.php(14): Keboola\\Component\\BaseComponent->execute()\n#7 {main}","errPrevious":"Keboola\\Csv\\Exception"} [] +%sCRITICAL: Keboola\CsvMap\Exception\BadDataException:Error writing 'id' column: Cannot write data into column: (object) array( '$oid' => '%s', ) {"errFile":"/code/vendor/keboola/csvmap/src/Keboola/CsvMap/Mapper.php"%a \ No newline at end of file diff --git a/tests/functional/export-no-space-left-on-device/expected-code b/tests/functional/export-no-space-left-on-device/expected-code new file mode 100644 index 0000000..d8263ee --- /dev/null +++ b/tests/functional/export-no-space-left-on-device/expected-code @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/tests/functional/export-no-space-left-on-device/expected-stderr b/tests/functional/export-no-space-left-on-device/expected-stderr new file mode 100644 index 0000000..99cad8a --- /dev/null +++ b/tests/functional/export-no-space-left-on-device/expected-stderr @@ -0,0 +1 @@ +%sCRITICAL: Exception:Failed write to file "%s/out/tables/export-one.csv" {"errFile":"/code/src/Parser/Mapping.php"%a \ No newline at end of file diff --git a/tests/functional/export-no-space-left-on-device/expected/data/out/files/.gitkeep b/tests/functional/export-no-space-left-on-device/expected/data/out/files/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/functional/export-no-space-left-on-device/expected/data/out/tables/.gitkeep b/tests/functional/export-no-space-left-on-device/expected/data/out/tables/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/functional/export-no-space-left-on-device/expected/data/out/tables/export-one.csv b/tests/functional/export-no-space-left-on-device/expected/data/out/tables/export-one.csv new file mode 120000 index 0000000..6bd18f6 --- /dev/null +++ b/tests/functional/export-no-space-left-on-device/expected/data/out/tables/export-one.csv @@ -0,0 +1 @@ +/dev/full \ No newline at end of file diff --git a/tests/functional/export-no-space-left-on-device/setUp.php b/tests/functional/export-no-space-left-on-device/setUp.php new file mode 100644 index 0000000..d87f040 --- /dev/null +++ b/tests/functional/export-no-space-left-on-device/setUp.php @@ -0,0 +1,23 @@ +mkdir($tablesFolderPath); + $process = Process::fromShellCommandline(sprintf("ln -s /dev/full %s/export-one.csv", $tablesFolderPath)); + + $process->mustRun(); +} + +return static function (DatadirTest $test): void { + simulateFullDisk($test->getTemp()->getTmpFolder()); + + (new class { use ImportDatasetTrait; })::importDatatasetNoAuthDb('restaurants', 'dataset.json'); +}; diff --git a/tests/functional/export-no-space-left-on-device/source/data/config.json b/tests/functional/export-no-space-left-on-device/source/data/config.json new file mode 100644 index 0000000..d454e68 --- /dev/null +++ b/tests/functional/export-no-space-left-on-device/source/data/config.json @@ -0,0 +1,33 @@ +{ + "parameters": { + "db": { + "host": "mongodb", + "port": 27017, + "database": "test" + }, + "exports": [ + { + "collection": "restaurants", + "name": "export-one", + "query": "{_id: ObjectId(\"5716054bee6e764c94fa7ddd\")}", + "mapping": { + "_id.$oid": { + "type": "column", + "mapping": { + "destination": "id" + } + }, + "name": { + "type": "column", + "mapping": { + "destination": "name" + } + } + }, + "enabled": true, + "mode": "mapping", + "sort": "{_id: 1}" + } + ] + } +} \ No newline at end of file From 49c879a37118a478dd7eb590823085fe1a5b8581 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=BDborn=C3=BD=20Adam?= Date: Mon, 16 May 2022 10:05:05 +0200 Subject: [PATCH 05/11] Removed flags on volumes to get rid of warning: WARN[0000] mount of type `volume` should not define `bind` option --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index d144460..a01822d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,7 +13,7 @@ services: volumes: - ./:/code - ./data:/data - - ssh-keys:/root/.ssh:ro,z + - ssh-keys:/root/.ssh mongodb: &mongodb image: mongo:${MONGODB_VERSION} From fb2cd4096dc4624871cf36e6a13d4081278486f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=BDborn=C3=BD=20Adam?= Date: Tue, 17 May 2022 09:39:31 +0200 Subject: [PATCH 06/11] Update readme with how to build on M1 Mac --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ca358d5..007a10a 100644 --- a/README.md +++ b/README.md @@ -200,7 +200,7 @@ Clone this repository and init the workspace with following command: ``` git clone https://github.com/keboola/ex-mongodb.git cd ex-mongodb -docker-compose build +docker-compose build #On M1 Mac build image with "--platform linux/amd64" flag docker-compose run --rm dev composer install --no-scripts ``` From 5da9307be6eff2e964c6b723367922bf1dcef0c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=BDborn=C3=BD=20Adam?= Date: Tue, 17 May 2022 09:40:17 +0200 Subject: [PATCH 07/11] Add Mongo cluster with SSL to docker-compose.yml --- docker-compose.yml | 39 +++++++++++++++- docker/certificates/ca.pem | 78 ++++++++++++++++++++++++++++++++ docker/certificates/mongodb.pem | 79 +++++++++++++++++++++++++++++++++ docker/generate-ssl.sh | 33 ++++++++++++++ docker/mongodb/ssl-config.conf | 8 ++++ 5 files changed, 236 insertions(+), 1 deletion(-) create mode 100644 docker/certificates/ca.pem create mode 100644 docker/certificates/mongodb.pem create mode 100644 docker/generate-ssl.sh create mode 100644 docker/mongodb/ssl-config.conf diff --git a/docker-compose.yml b/docker-compose.yml index a01822d..1d04574 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,21 @@ services: links: - mongodb - mongodb-auth + - node1.mongodb.cluster.local - sshproxy + - dns.local + environment: + - GODEBUG="x509ignoreCN=0" + entrypoint: + - sh + - -c + - > + php -r "echo \"nameserver \" . gethostbyname(\"dns.local\") . \"\n\";" > /etc/resolv.conf.new + && cp /etc/resolv.conf /etc/resolv.conf.bak + && cp /etc/resolv.conf.new /etc/resolv.conf + && exec "$$@" + - sh + dev: <<: *main volumes: @@ -15,6 +29,20 @@ services: - ./data:/data - ssh-keys:/root/.ssh + # DNS server for testing mongodb+srv:// connection + # https://docs.mongodb.com/manual/reference/connection-string/#dns-seedlist-connection-format + dns.local: + image: jpillora/dnsmasq + entrypoint: > + dnsmasq + --conf-file='' + --resolv-file=/etc/resolv.conf + --no-daemon + --log-queries + --log-facility=- + --srv-host '_mongodb._tcp.mongodb.cluster.local,node1.mongodb.cluster.local,27017' + --txt-record 'mongodb.cluster.local' + mongodb: &mongodb image: mongo:${MONGODB_VERSION} @@ -24,6 +52,14 @@ services: volumes: - ./docker/mongodb/init-auth.js:/docker-entrypoint-initdb.d/init.js + node1.mongodb.cluster.local: + image: mongo:5 + volumes: + - ./docker/mongodb/ssl-config.conf:/etc/ssl/ssl-config.conf + - ./docker/certificates/mongodb.pem:/etc/ssl/mongodb.pem:ro + - ./docker/certificates/ca.pem:/etc/ssl/ca.pem:ro + command: [mongod, --config=/etc/ssl/ssl-config.conf] + sshproxy: image: keboola/db-component-ssh-proxy:latest volumes: @@ -37,8 +73,9 @@ services: depends_on: - mongodb - mongodb-auth + - node1.mongodb.cluster.local environment: - - TARGETS=mongodb:27017,mongodb-auth:27017 + - TARGETS=mongodb:27017,mongodb-auth:27017,node1.mongodb.cluster.local:27017 - TIMEOUT=120 volumes: diff --git a/docker/certificates/ca.pem b/docker/certificates/ca.pem new file mode 100644 index 0000000..b98935b --- /dev/null +++ b/docker/certificates/ca.pem @@ -0,0 +1,78 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIEqjCCApICCQCWP7ZAVn/0VDANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDDAtp +bnZhbGlkQ05DYTAgFw0yMjA1MTYxNjMzNDBaGA8yMTU5MDQwODE2MzM0MFowFjEU +MBIGA1UEAwwLaW52YWxpZENOQ2EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQDTr0Ec1XcQLVq/lDd3xwz72Wp3Z1vnpUCIi2jysPwaUDOO3HwhpndM6wj6 +Pt08FOHWzExqmGZF0whyw+t2pQ1qkCTFp2HL6N5nzM/LnRbJA9gE5ixsfynOra98 +o8/WUCpNn7d8MCdv/hz3ppy1SFxWo0FrpAG9DtPRJTiqKGLqp8mqLOOULqZZ95J1 +8AvFFxkSxCjptzytmagp49l6IHU3a/B2YDamBF0B5cejuInI98Japy01rzpHMV+D +K/dDvdkDELI38rGhxGcL/2oTWQ8zpOMZ+LN41qEGVLgfpBzuLazvUdBSpwLCPNWj +BYVujQq5MDL3dqT31vJTvBQsGSrHATybvzhiYh0ltUilLi5cAJV1mUaWgRWdpl0J +2g2PrLaRuDMPA5tOcttdHdSbiaANHPnPnsXUksl5GkAHEkpCmDg7oUmeCvJy7lSX +yu/5P/k1VHKkVdrtm4U5xKdR+lA0a8ua2Z202jBeMqYGCQMecslnJBv2IB9WoarH +I/4Jo1jgmIGIhM6MaXpxZBZJ77Y6XLcG2YHtrD9GOl8EFr9DlhU0qZy+S5YEMD4a +TczCU9kJOu0H3ayY780Jg8SvGrY5Lxx+2kDfoHbWsLfCLk5Pm5FiD6ziAAkDya7s +4nAgNSKzhMmu6JZ1nG2yHKM8WSWA6UBua5sT7NXw3GTCzuiquQIDAQABMA0GCSqG +SIb3DQEBCwUAA4ICAQA3UySjyznu5eLiycsmxQcqSx3HoD0JrgTmYE+qWeEQrEi+ +V+wH8dVrjEeGsXS70nJF2yHAlFKc3JBqfBRecMONM0DDRPoxGgXpEWvtWA8bOMCe +ZY/UP5DK3jLKpF0CzBTMayRl+Wtkfo0HHhPRbUoFKlpiZKhDj3oVXIUF1v552TS6 +I2mM2r98k7h6NTsPeliWvxQsbqjierzc6G5HlCxXxyXdtDD36xa+hKT80pqRf8Pf +zVjZGzvmJulmT8KDqgv5MkiDHDAoW+Njb/gjPomRRiF6/iYhC/8e2BkqLmJYu0x/ +RP7DiMiz5Vtv284ScHuhf0WN9h5chtHlnz1NARtIItobh0wB3Zguqd+OiA3D7gLJ +kugzZ//nkD98qS+UzdHxKFv4ukLDm5GHXHmDVu164OZ6JnWDginMtcxds8S8dm8S +pvaOMLktxMRg3Ze3snQHOLF3sQFoHtAocNDMjZS9LwENwOeVAq0tRfAh7Y1/dZUN +5FASnp6HKM/eXBog2qu/5YATHBdDnyjlP8vSImcuRf7Uv/sSDxkccv0DEZAWf/qw +Wx4exML81lW/oRaTEgofcBRXECe+qYUt6Q/z3+F4ylFUtdPwhng1Gpe45F0uVJJR +It4TDzTdG+R76NM8obYhk2frzsJyvZ8Tqmy0Pk9e5ade9S7izHf36KuAkhKxbA== +-----END CERTIFICATE----- diff --git a/docker/certificates/mongodb.pem b/docker/certificates/mongodb.pem new file mode 100644 index 0000000..ad4092e --- /dev/null +++ b/docker/certificates/mongodb.pem @@ -0,0 +1,79 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIEsjCCApoCAQEwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLaW52YWxpZENO +Q2EwIBcNMjIwNTE2MTYzMzQxWhgPMjE1OTA0MDgxNjMzNDFaMCYxJDAiBgNVBAMM +G25vZGUxLm1vbmdvZGIuY2x1c3Rlci5sb2NhbDCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBANXy22D8kDiZR0JzocPttrfbPBaoF+e1PDW54lNaBtiJ6Qmg +xSz5TitesBxvuXSqskkfiGcGTU0paqW+S4NQzWQ84J1p+7C24ts6/X7qk5YL2HyC +oLek76y5XPr8o2A70jWgJaHv5h/4Hw7hwmMp1pXxmZGE5+wS4szCfNbQyLCd6piz +gF2/YqVNu9GPbaLsz1Z6IxM4LLlAucjNm3xXF0X1IaLz/ZGcwwYWIt9a598QEVKx +Euk3lD6V3JfWMAMUjRv1p5OReY87EtyynA97tZxfjZZ85NSuqbHTJ7YM5MwXrWpK +J6snm12n+VDCOrETPZ7eN2O8pYiOHVi65dGkcvFgZkco2HdIyR1p/DenOr1ALgnI +jNk8MCc2WH9Ilv1iQWfWY/QRWcokBzAJTs0MFsyXOCP101A+XZDmBCEf/vne6ibN +fy/rGpD5g/hzkTHmMJU/TRq6dWdyTmTKB2vZgQwmAxBQj+wpL2ti9Z+8H/Ukt2cN +tVYGIXY+r5Y789kIXKCsGxiydeZdPZvA2gEsHy+ZDWsTn4RXnAAIPqa6NWHndg8E +Jewc5NB8oELw6AQ5QiIvIopWn9DLqbxNoxco7fH2RoyEX12KZOamz6HjCk7kMlVv +FOJlLK7t2WHYSGXRC17wvdMSd6plNFG4WCIFVQhvD67UW9jQWNCQVrR3bR6hAgMB +AAEwDQYJKoZIhvcNAQELBQADggIBAEggJ77JbrMAzQAL+vTxrTHBsWvlKH8pmaS0 +IbVUAQELUbV4JFH1gyRPF9EiCuVouVV0Y4RIKplCWb+E/jVqYoX7IX8JxZzGGPCF +J0w37smiYKA3LwQ5osYh7RYosb8Eymo8bmZInnS5TqVhmKRRI0F40ymvhmOGp9sZ +IklTJFb4Bi0DOVN5LPJrrTH2fJGypwMloIlpe8u3s4HXVJUBLoJrpCPmjG9I9cQZ +smJmzXbvVyyr5G0uzIUSWZKKoup9Dnrh7tQBpKHa9z5VUiiAfAdXQuv0PvDbuRxD +6Q3BmfI4XiubHSY1PVeW71z55Xmg3TLaZ/l4Kec2HUPyEoZzvd8uCUpnKh2viUk0 +CnWLHQCIH6t2AmXtUgQLPE7vfhM9AbOCj4WgFPOudbsnbVLThfhyWmJ+43c9lWVg +ag6CWLl/k64iuviZbNov+KJtVcTunoLqhaW7cF+a71+E3keJ8fvhuB7QjODl5ADc +tvOPi97Yju98CON80Kr+/PZwe+ouugc7GN5dpIF5ttXC3ZKRsorYz4sU3XS8LCtq +5zJaRMqCg4CSm1EDLHX8wt4ZsUGBuaerZgDw89eWZNpRyKZ296jlnnHmaMZM+WN5 +TqVh1cQG4cVDYY5hgrJ/HHnx3Jw98cGAfBrfLMyt1UsEN89DPzDNibnCs07xsVHs +eHUI8p/M +-----END CERTIFICATE----- diff --git a/docker/generate-ssl.sh b/docker/generate-ssl.sh new file mode 100644 index 0000000..97b9ad6 --- /dev/null +++ b/docker/generate-ssl.sh @@ -0,0 +1,33 @@ +#!/bin/bash +set -e + +# FROM: https://gist.github.com/komuw/076231fd9b10bb73e40f +export TARGET_DIR="certificates" +export DAYS=50000 +export SSL_HOST="node1.mongodb.cluster.local" + +# Cleanup +rm -rf $TARGET_DIR +mkdir $TARGET_DIR +cd $TARGET_DIR + +######################################################## +################## CREATE CERTIFICATES ################# +######################################################## + +# Create the CA Key and Certificate for signing Client Certs +openssl genrsa -out ca.key 4096 +openssl req -subj "/CN=invalidCNCa" -new -x509 -days $DAYS -key ca.key -out ca.crt + +# Create the Server Key, CSR, and Certificate +openssl genrsa -out mongodb.key 4096 +openssl req -subj "/CN=${SSL_HOST}" -new -key mongodb.key -out mongodb.csr + +# We're self signing our own server cert here. This is a no-no in production. +openssl x509 -req -days $DAYS -sha256 -in mongodb.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out mongodb.crt + +# Verify Server Certificate +openssl verify -purpose sslserver -CAfile ca.crt mongodb.crt + +cat mongodb.key mongodb.crt > mongodb.pem +cat ca.key ca.crt > ca.pem diff --git a/docker/mongodb/ssl-config.conf b/docker/mongodb/ssl-config.conf new file mode 100644 index 0000000..250d37b --- /dev/null +++ b/docker/mongodb/ssl-config.conf @@ -0,0 +1,8 @@ +net: + port: 27017 + bindIp: 0.0.0.0 + tls: + mode: requireTLS + allowConnectionsWithoutCertificates: true + CAFile: /etc/ssl/ca.pem + certificateKeyFile: /etc/ssl/mongodb.pem \ No newline at end of file From 974ca6c7d7bd83cd507b391bd4ae68f5f8ac2707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=BDborn=C3=BD=20Adam?= Date: Tue, 17 May 2022 09:40:29 +0200 Subject: [PATCH 08/11] Add Mongo cluster test --- .../expected-code | 1 + .../expected-stdout | 4 + .../expected/data/out/files/.gitkeep | 0 .../expected/data/out/tables/.gitkeep | 0 .../expected/data/out/tables/export-all.csv | 74 +++++++++++++++++++ .../data/out/tables/export-all.csv.manifest | 1 + .../export-all-cluster-connection/setUp.php | 10 +++ .../source/data/config.json | 33 +++++++++ tests/traits/ImportDatasetTrait.php | 20 +++++ 9 files changed, 143 insertions(+) create mode 100644 tests/functional/export-all-cluster-connection/expected-code create mode 100644 tests/functional/export-all-cluster-connection/expected-stdout create mode 100644 tests/functional/export-all-cluster-connection/expected/data/out/files/.gitkeep create mode 100644 tests/functional/export-all-cluster-connection/expected/data/out/tables/.gitkeep create mode 100644 tests/functional/export-all-cluster-connection/expected/data/out/tables/export-all.csv create mode 100644 tests/functional/export-all-cluster-connection/expected/data/out/tables/export-all.csv.manifest create mode 100644 tests/functional/export-all-cluster-connection/setUp.php create mode 100644 tests/functional/export-all-cluster-connection/source/data/config.json diff --git a/tests/functional/export-all-cluster-connection/expected-code b/tests/functional/export-all-cluster-connection/expected-code new file mode 100644 index 0000000..c227083 --- /dev/null +++ b/tests/functional/export-all-cluster-connection/expected-code @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/tests/functional/export-all-cluster-connection/expected-stdout b/tests/functional/export-all-cluster-connection/expected-stdout new file mode 100644 index 0000000..5864ce3 --- /dev/null +++ b/tests/functional/export-all-cluster-connection/expected-stdout @@ -0,0 +1,4 @@ +%sconnected to: mongodb://mongodb:27017/ +%sexported 73 records +Parsing "/tmp/%s/out/tables/export-all.json" +Done "/tmp/%s/out/tables/export-all.json" \ No newline at end of file diff --git a/tests/functional/export-all-cluster-connection/expected/data/out/files/.gitkeep b/tests/functional/export-all-cluster-connection/expected/data/out/files/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/functional/export-all-cluster-connection/expected/data/out/tables/.gitkeep b/tests/functional/export-all-cluster-connection/expected/data/out/tables/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/functional/export-all-cluster-connection/expected/data/out/tables/export-all.csv b/tests/functional/export-all-cluster-connection/expected/data/out/tables/export-all.csv new file mode 100644 index 0000000..446c373 --- /dev/null +++ b/tests/functional/export-all-cluster-connection/expected/data/out/tables/export-all.csv @@ -0,0 +1,74 @@ +"id","name" +"5716054bee6e764c94fa7ddd","Morris Park Bake Shop" +"5716054bee6e764c94fa8181","E & L Bakery & Coffee Shop" +"5716054bee6e764c94fa8213","Zaro'S Bread Basket" +"5716054bee6e764c94fa8351","Champion Bakery" +"5716054bee6e764c94fa8361","Franco Bakery" +"5716054bee6e764c94fa8366","Biarritz Bakery" +"5716054bee6e764c94fa8394","Pitusa Bakery" +"5716054bee6e764c94fa841e","Nacional Bakery #1" +"5716054bee6e764c94fa84d0","La Bella Rosa Bakery" +"5716054bee6e764c94fa853a","Sugar City Bakery" +"5716054bee6e764c94fa85a6","Giralda Bakery" +"5716054bee6e764c94fa85e3","Pelham Bake Shop" +"5716054bee6e764c94fa86c3","Caffe Egidio" +"5716054bee6e764c94fa870e","Steve'S Bakery" +"5716054bee6e764c94fa8779","Gino'S Pastry Shop" +"5716054bee6e764c94fa88e6","Angelica'S Bakery" +"5716054bee6e764c94fa8936","Teresa'S Gourmet" +"5716054bee6e764c94fa8c13","La Nueva Giralda Bakery" +"5716054bee6e764c94fa8c70","J.E. Bakery" +"5716054bee6e764c94fa8c8b","Nb. National Bakery" +"5716054bee6e764c94fa8d90","Mom'S Bakery" +"5716054bee6e764c94fa8e63","Enrico'S Pastry Shop & Caffe" +"5716054bee6e764c94fa8ff6","National Bakery" +"5716054bee6e764c94fa93f9","National Bakery" +"5716054bee6e764c94fa9489","Janeydi Bakery" +"5716054bee6e764c94fa9620","National Bakery" +"5716054bee6e764c94fa977e","Amor Bakery No 2" +"5716054bee6e764c94fa979a","Morrone Pastry Shop & Cafe" +"5716054bee6e764c94fa9912","La Salle Bakery" +"5716054bee6e764c94fa9c57","Prime Time Caribbean Bakery" +"5716054bee6e764c94fa9cdb","Reposteria Nitin" +"5716054cee6e764c94fa9e16","Palombo Bakery" +"5716054cee6e764c94fa9ee1","Ronald Pitusa Bakery" +"5716054cee6e764c94fa9f31","1617-A National Bakery" +"5716054cee6e764c94faa0ff","Don Villa Bakery" +"5716054cee6e764c94faa105","National Bakery" +"5716054cee6e764c94faa1e0","Mi Casa Bakery" +"5716054cee6e764c94faa43b","Delicia Bakery" +"5716054cee6e764c94faa4ff","Pastora Bakery" +"5716054cee6e764c94faa5bf","Conti'S Pastry Shoppe" +"5716054cee6e764c94faa80b","Tina Bakery" +"5716054cee6e764c94faa920","Las Palmas Bakery" +"5716054cee6e764c94faa9f2","Johnny'S Bakery" +"5716054cee6e764c94faad84","Marinell Bakery" +"5716054cee6e764c94faadba","De Lillo Pastry Shop" +"5716054cee6e764c94fab3f0","Palombo Bakery Cafe" +"5716054cee6e764c94fab544","Mi Casa Bakery" +"5716054cee6e764c94faba0d","La Rosa Bakery" +"5716054cee6e764c94fabada","Bibbies Bakery" +"5716054cee6e764c94fabc66","B.F. National Bakery" +"5716054cee6e764c94fac00f","D' Postre Cafe" +"5716054cee6e764c94fac138","Fordham Road Bakery" +"5716054cee6e764c94fac2a1","Mi Casa Bakery & Coffee Shop" +"5716054cee6e764c94fac350","Erika'S Bakery" +"5716054cee6e764c94fac7a4","Gina'S Italian Bakery & Pastry Shop" +"5716054cee6e764c94fac7a5","Bainbridge Bakery" +"5716054cee6e764c94fac868","Rosarina Bakery" +"5716054cee6e764c94fac8c8","Ana'S Bakery & Cafe" +"5716054cee6e764c94facb99","Harmony Bakery" +"5716054cee6e764c94faccdf","Dd Bakery" +"5716054cee6e764c94fad056","Emilio Super Bakery Corp" +"5716054cee6e764c94fad182","El Nuevo Jb Bakery" +"5716054cee6e764c94fad318","Mr Cake Bakery & Dessert" +"5716054cee6e764c94fad5f4","Delicias Bakery" +"5716054cee6e764c94fad66f","Jacqueline'S Bakery Restaurant" +"5716054cee6e764c94fad88f","There Should Always Be Cake" +"5716054cee6e764c94fad8f0","Cinnabon" +"5716054cee6e764c94fad9fe","Mi Dulce Pasteleria" +"5716054cee6e764c94fada27","Central Caribbean Bakery" +"5716054cee6e764c94fada8a","Mi Casa Bakery" +"5716054cee6e764c94fadb21","Palombo Pastry Shop" +"5716054cee6e764c94fadb22","Palombo Pastry Shop" +"5716054cee6e764c94fadb23","Palombo Pastry Shop" diff --git a/tests/functional/export-all-cluster-connection/expected/data/out/tables/export-all.csv.manifest b/tests/functional/export-all-cluster-connection/expected/data/out/tables/export-all.csv.manifest new file mode 100644 index 0000000..1955de7 --- /dev/null +++ b/tests/functional/export-all-cluster-connection/expected/data/out/tables/export-all.csv.manifest @@ -0,0 +1 @@ +{"primary_key":null,"incremental":false} \ No newline at end of file diff --git a/tests/functional/export-all-cluster-connection/setUp.php b/tests/functional/export-all-cluster-connection/setUp.php new file mode 100644 index 0000000..f05cf36 --- /dev/null +++ b/tests/functional/export-all-cluster-connection/setUp.php @@ -0,0 +1,10 @@ +mustRun(); } + + public static function importDatatasetCluster(string $collection, string $dataset): void + { + $process = new Process([ + 'mongoimport', + '--host', + 'node1.mongodb.cluster.local', + '--ssl', + '--db', + 'test', + '--collection', + $collection, + '--drop', + '--jsonArray', + '--file', + sprintf("%s/../datasets/%s", __DIR__, $dataset), + ]); + + $process->mustRun(); + } } From 10dfff2626954316602cdcb784774d90d6895e2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Jure=C4=8Dko?= Date: Tue, 17 May 2022 15:39:37 +0200 Subject: [PATCH 09/11] Fix SSL connection --- docker/certificates/ca.crt | 30 +++++++ docker/certificates/ca.key | 51 +++++++++++ docker/certificates/ca.pem | 155 ++++++++++++++++---------------- docker/certificates/mongodb.crt | 28 ++++++ docker/certificates/mongodb.csr | 28 ++++++ docker/certificates/mongodb.key | 51 +++++++++++ docker/certificates/mongodb.pem | 150 +++++++++++++++---------------- docker/generate-ssl.sh | 6 +- docker/mongodb/ssl-config.conf | 3 +- 9 files changed, 347 insertions(+), 155 deletions(-) create mode 100644 docker/certificates/ca.crt create mode 100644 docker/certificates/ca.key create mode 100644 docker/certificates/mongodb.crt create mode 100644 docker/certificates/mongodb.csr create mode 100644 docker/certificates/mongodb.key mode change 100644 => 100755 docker/generate-ssl.sh diff --git a/docker/certificates/ca.crt b/docker/certificates/ca.crt new file mode 100644 index 0000000..90c38c2 --- /dev/null +++ b/docker/certificates/ca.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFDzCCAvegAwIBAgIUZk5M8rFrNlYjMbCfTTTjT7/1KI8wDQYJKoZIhvcNAQEL +BQAwFjEUMBIGA1UEAwwLaW52YWxpZENOQ2EwIBcNMjIwNTE3MTMyODAzWhgPMjE1 +OTA0MDkxMzI4MDNaMBYxFDASBgNVBAMMC2ludmFsaWRDTkNhMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAwxj0eCXjo7msZhKr+XXeS+JRZGFh0TUlJsTm +ruL1HYiUyHWWWbxb97iv8/xgJEqWuckf/qfBLhdm0KpY5/pXLYfM3u38Tpfur/56 +NYxoC2sRho6iuF5zCbzRaXKZdeM7uaW8+4JGaHVbejLzLeENfoVlvD12XgDKokxg +SB8Glt6V6PNe8Lj9lgP+xBJCXAzGFve1B6o7RRqTC/ZsZuhvwAZL8fHpJCp3mz45 +Y2WmpMDelat9/Vy0GMFXczNzq1Aa4FHc38bTY82NRQ6k77WVuZ3vToDUMIvolBiB +uJ9irpv6Z4/ngIhiRsWNpVGerQ9LgO1jBlZBzQArrJCGovket4lw7UcB6JSU5nfT +pJ8VHr+9AUkQYSoSQfbA05bx7Doq+8FcFHzyJ9RatsSqhXFhJuv3kNdlUhCdXHGA +Nn3EihT3GDVXnMLRMNvxCfO4oqAEZzVoR4Yy0QKMvLnZ8UE13IUYTgPioCfU+Q3V +AfCqNqoHMtn2+bBThEVGdPX7bdfh2gWML3DyD68sTSBDYqCjUq8x9AQ52vCnlP37 +yBuLd9rbdeF6iQVf+jh/aCWb/1P5QCmABS6mYynK4QJv8G+dQ/UUk/XcAUrD4m3L +ED/RbXaCa7EPmR/P/qhkJFMkfiLgZFz8gHbJ+oYuQW8UPffcfMKQOFSRWcGao3D5 +gNVEL38CAwEAAaNTMFEwHQYDVR0OBBYEFODcpXdytkcOAdzGe6BcIKtAXYlDMB8G +A1UdIwQYMBaAFODcpXdytkcOAdzGe6BcIKtAXYlDMA8GA1UdEwEB/wQFMAMBAf8w +DQYJKoZIhvcNAQELBQADggIBAFXC5P4fVKpqa3wKMaRkHR1SdDSuvo9nrUE19fF+ +QwGM35bRcSZHr9qQ7uyV4YHnCJYYY/kmg6Zhwq1FeSUuf8HwmXcIVsMdz2sAyDhV +EgJpWebZurMhzadzf1DnfoZa2Am18LlyAitxVThw+AhYk5CW84bVppqAwWqre4ET +Ntcc6eL2agyYYYkly7myq96MY79v4abaoEFg365jwiqX8tGDQD3qzML1E8EAUied +4gI4wps2Qk8gfUkp4nMmZMtTzXUHpTfqTsABEagHkDI7/5ZgM9ztnW4Slx/5Wz3O +AjuycNa1Lzyin5fshXjqlPUk4V32KCSYg0fb6S+MP5UOaOh8GkGufYr6gKx7Viql +ZVz1iVsbU+CvxIbyKUWMKIztycbxz1S3putPunEbrboGIUwhPmZcP7kY1aWq6TPj +9wLT9zqE+z4tVQx0F69iGpf0orBArWqQl4+1/yq7P8Rx1twrTOziPDvjjT9NNypC +fH+fwcRbsQXeKzDH4hUpIDhS6b9etzrdTLn6+B125jHryJuA5vK8df/KwU8TLyK3 ++qbK+5xOS8lTabvYiwXdtNArd6ep7MHK9y98r/gpOeSBHDHaAvHakyD501rt+eSm +khiqgUfLN08TpmOUOQHH04KTU924KIU6v8PQ5/0wkIDijVUKgdMITG4EhIaZika8 +eDYS +-----END CERTIFICATE----- diff --git a/docker/certificates/ca.key b/docker/certificates/ca.key new file mode 100644 index 0000000..5af8d41 --- /dev/null +++ b/docker/certificates/ca.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/docker/certificates/ca.pem b/docker/certificates/ca.pem index b98935b..25bff73 100644 --- a/docker/certificates/ca.pem +++ b/docker/certificates/ca.pem @@ -1,78 +1,81 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- -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 +eDYS -----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/docker/certificates/mongodb.crt b/docker/certificates/mongodb.crt new file mode 100644 index 0000000..3994992 --- /dev/null +++ b/docker/certificates/mongodb.crt @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIEsjCCApoCAQEwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLaW52YWxpZENO +Q2EwIBcNMjIwNTE3MTMyODA0WhgPMjE1OTA0MDkxMzI4MDRaMCYxJDAiBgNVBAMM +G25vZGUxLm1vbmdvZGIuY2x1c3Rlci5sb2NhbDCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAL4EgvyOgHPRl4RnOvMMBJ9HXIJFqh4YOQOfLQmfxT+f9fra +OnMQ3ydG+LJalAEK5r1mNlG9NQCqaF1RldCJR4u4qF0FBbqkoFg69bIJT/3Y1T7W +S1iAJTFF3sVFXPASUREmU4Jx7b2HkEfDILP86o4ePDKkbj+ZpCwmh+Tu511nxcYI +HSi8ecMJkYuWVFOBh0B8mBM1d3USqrTNgIN+AcJL9UWuY25VwYz3gpH7OtVWrRB/ +EPikqiNgo3I/6yV2eae5ndwVtgF3Q3kA4XofquoLa3VG35quHrjSA9ur78g2AFSE +1GLqCKGG4Nkfp43uUjpWtiAWjNcQSxmc/oWYXgTHYMfZJdt8Oe+ISXyY5/iueMb1 +SDy/IJqjA8fuQTjSlguxe8w4srGRJ7oUw77a1gPIpMJ40G/G33H5HFPjC2jC/8dn +coqb7CVCSqlMka1Y/WcoFVc/VwpR+vYgEflJyjSQDTW8EWW96/oGKYtTglyYnOw1 +ec7DfCemXmNwxgbUd4a4CJ1iz7fP1HCNh2gixILnU89e7zif+Ftjz/b6JHMDR3QM +cW0/Wqazq3woU2EOvhgp8WciHQZ00jgL7S1QEPzOKRYS1lpDkFQDAiVNtTHf8oJl +OpIBvalahLsoLQ2gtW7aoiv6YmqemX+11FXBZjXg50Rnlu9sx8MG4kHYTG3dAgMB +AAEwDQYJKoZIhvcNAQELBQADggIBAFWj5Pd1yDhVrnMfMJayySQWU7miEEVjkVs2 +ih6U+TGLkr/il7cdMQyD+joXNd/KSraob8jpg2IF+wyTnUA12DV8aorT74cT4hgq +xegboxauQ3VbTpEfUK1hz5LK0ELceZL5OBtAkRzz6DvRzF0X5fN2yOmL9A1utVR0 +ONuW8z6TuLFEtP5iXKvdpju5ZsXAmng8ETpsru0dVmKCZDIHBkSa8ApkAlHBWavI +WKYn6gl343qNjkQN+Mu3dIcJutfeH3lLG9l3J+U8C/1vk2jTYVKrSL4mXmxP5F2p +lajHl/Foo2I3ln64TjAqcBiPGIXQ7ZBpbP0Ztfsl7858Pqp+v6IXrUTVOwYfNeYR +iTj6TCIBnY+CCOrGPjZNR8JWey2mFS+3SRmrye/iCfnz06PEO68NXGHCk+ER3FG1 +Ktkld5rvCZKFCo1Hdoz9AW/MgOXIhFIwEDfxq+SYMY44cOwPa/NGyAUeOBNR+GxR +Z5slXVa6S2odcAmHWBUfBZO7Ok/GDTU3HW/SobTzH/MYjabnyOKZ49OAK6wuT16q +YOkfS0X+OpewwNtzCfIgpn4sMmAxP5o1bN/8HnMBeYXYcEzkXNEAGmuFWiWiALhu +R/MFHahrN5n6YohOw3b5jU501Uz5RFW9IxuPmMNzfddgppT9Rg3EDmlOv9MMUE9U +9nfhGCSq +-----END CERTIFICATE----- diff --git a/docker/certificates/mongodb.csr b/docker/certificates/mongodb.csr new file mode 100644 index 0000000..d3550e5 --- /dev/null +++ b/docker/certificates/mongodb.csr @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIErzCCApcCAQAwJjEkMCIGA1UEAwwbbm9kZTEubW9uZ29kYi5jbHVzdGVyLmxv +Y2FsMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvgSC/I6Ac9GXhGc6 +8wwEn0dcgkWqHhg5A58tCZ/FP5/1+to6cxDfJ0b4slqUAQrmvWY2Ub01AKpoXVGV +0IlHi7ioXQUFuqSgWDr1sglP/djVPtZLWIAlMUXexUVc8BJRESZTgnHtvYeQR8Mg +s/zqjh48MqRuP5mkLCaH5O7nXWfFxggdKLx5wwmRi5ZUU4GHQHyYEzV3dRKqtM2A +g34Bwkv1Ra5jblXBjPeCkfs61VatEH8Q+KSqI2Cjcj/rJXZ5p7md3BW2AXdDeQDh +eh+q6gtrdUbfmq4euNID26vvyDYAVITUYuoIoYbg2R+nje5SOla2IBaM1xBLGZz+ +hZheBMdgx9kl23w574hJfJjn+K54xvVIPL8gmqMDx+5BONKWC7F7zDiysZEnuhTD +vtrWA8ikwnjQb8bfcfkcU+MLaML/x2dyipvsJUJKqUyRrVj9ZygVVz9XClH69iAR ++UnKNJANNbwRZb3r+gYpi1OCXJic7DV5zsN8J6ZeY3DGBtR3hrgInWLPt8/UcI2H +aCLEgudTz17vOJ/4W2PP9vokcwNHdAxxbT9aprOrfChTYQ6+GCnxZyIdBnTSOAvt +LVAQ/M4pFhLWWkOQVAMCJU21Md/ygmU6kgG9qVqEuygtDaC1btqiK/piap6Zf7XU +VcFmNeDnRGeW72zHwwbiQdhMbd0CAwEAAaBEMEIGCSqGSIb3DQEJDjE1MDMwMQYD +VR0RBCowKIIJbG9jYWxob3N0ghtub2RlMS5tb25nb2RiLmNsdXN0ZXIubG9jYWww +DQYJKoZIhvcNAQELBQADggIBAJO38EBvkDL6BkCT/JxOvFvRFzMjSlyUjql9M/ld +Yn/tqV85P0/SrECDy4k4zZNfIri8S0gITQ2GaZKBqlUAkN4WI1Gs/BIU9nnVkG7m +lnlJP+LhW5JkdfefpeyjMnt6UGZnYh3ZlqtNjGHel7JLRwIoFHcVMzpcvJ/UPviF +D9xnsOeGR2cmNOgxvVMKXBzg8Mk7QAxqOXBOYf2L8u12vgckjftMNFQTKZOAKFF2 +P+6ZKzfsTIwlxfXN6cNzmssezZbvylXOHqHC7BNF/5FOIA3ea9Rx5yR/GXfnFmPd +D+ayllk4NZmq/MJjfwZJWoOv6czlw0prsPE3diJkmWKNevLi4IyT79wEc3d0BtS8 +BhpHFSe21GCdNPUqBptJjITlHY/EQhkx/DkFOIjBa1A1Gtgx26Yj76+RVW3X8SsK +wYkYQl0HXpXxHMHYIyCMZx18SZw954fd7quDczag9PYXlh9E8OWdjl2DmCtMG4fl +ZVOTh8tL/I1r1CLzPqUBHfxLeSjnePR2MDg4Gzjmj0p9vAvKT+KFqNxEFU6khAhW +1Y7k0HlPL7+8hKhM/XavpwXgo12H72azY0TPWHUKrrdVrVoj0H9T9Tsq2IcDh3Vo +kegHi+xI1+wNqqs1alRWKH25R7Tg8rL2AeYyH5gNydwyIpPMicsCF35veE7vpEuI +o3Tg +-----END CERTIFICATE REQUEST----- diff --git a/docker/certificates/mongodb.key b/docker/certificates/mongodb.key new file mode 100644 index 0000000..ca3d413 --- /dev/null +++ b/docker/certificates/mongodb.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/docker/certificates/mongodb.pem b/docker/certificates/mongodb.pem index ad4092e..cb92387 100644 --- a/docker/certificates/mongodb.pem +++ b/docker/certificates/mongodb.pem @@ -1,79 +1,79 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIEsjCCApoCAQEwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLaW52YWxpZENO -Q2EwIBcNMjIwNTE2MTYzMzQxWhgPMjE1OTA0MDgxNjMzNDFaMCYxJDAiBgNVBAMM +Q2EwIBcNMjIwNTE3MTMyODA0WhgPMjE1OTA0MDkxMzI4MDRaMCYxJDAiBgNVBAMM G25vZGUxLm1vbmdvZGIuY2x1c3Rlci5sb2NhbDCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBANXy22D8kDiZR0JzocPttrfbPBaoF+e1PDW54lNaBtiJ6Qmg -xSz5TitesBxvuXSqskkfiGcGTU0paqW+S4NQzWQ84J1p+7C24ts6/X7qk5YL2HyC -oLek76y5XPr8o2A70jWgJaHv5h/4Hw7hwmMp1pXxmZGE5+wS4szCfNbQyLCd6piz -gF2/YqVNu9GPbaLsz1Z6IxM4LLlAucjNm3xXF0X1IaLz/ZGcwwYWIt9a598QEVKx -Euk3lD6V3JfWMAMUjRv1p5OReY87EtyynA97tZxfjZZ85NSuqbHTJ7YM5MwXrWpK -J6snm12n+VDCOrETPZ7eN2O8pYiOHVi65dGkcvFgZkco2HdIyR1p/DenOr1ALgnI -jNk8MCc2WH9Ilv1iQWfWY/QRWcokBzAJTs0MFsyXOCP101A+XZDmBCEf/vne6ibN -fy/rGpD5g/hzkTHmMJU/TRq6dWdyTmTKB2vZgQwmAxBQj+wpL2ti9Z+8H/Ukt2cN -tVYGIXY+r5Y789kIXKCsGxiydeZdPZvA2gEsHy+ZDWsTn4RXnAAIPqa6NWHndg8E -Jewc5NB8oELw6AQ5QiIvIopWn9DLqbxNoxco7fH2RoyEX12KZOamz6HjCk7kMlVv -FOJlLK7t2WHYSGXRC17wvdMSd6plNFG4WCIFVQhvD67UW9jQWNCQVrR3bR6hAgMB -AAEwDQYJKoZIhvcNAQELBQADggIBAEggJ77JbrMAzQAL+vTxrTHBsWvlKH8pmaS0 -IbVUAQELUbV4JFH1gyRPF9EiCuVouVV0Y4RIKplCWb+E/jVqYoX7IX8JxZzGGPCF -J0w37smiYKA3LwQ5osYh7RYosb8Eymo8bmZInnS5TqVhmKRRI0F40ymvhmOGp9sZ -IklTJFb4Bi0DOVN5LPJrrTH2fJGypwMloIlpe8u3s4HXVJUBLoJrpCPmjG9I9cQZ -smJmzXbvVyyr5G0uzIUSWZKKoup9Dnrh7tQBpKHa9z5VUiiAfAdXQuv0PvDbuRxD -6Q3BmfI4XiubHSY1PVeW71z55Xmg3TLaZ/l4Kec2HUPyEoZzvd8uCUpnKh2viUk0 -CnWLHQCIH6t2AmXtUgQLPE7vfhM9AbOCj4WgFPOudbsnbVLThfhyWmJ+43c9lWVg -ag6CWLl/k64iuviZbNov+KJtVcTunoLqhaW7cF+a71+E3keJ8fvhuB7QjODl5ADc -tvOPi97Yju98CON80Kr+/PZwe+ouugc7GN5dpIF5ttXC3ZKRsorYz4sU3XS8LCtq -5zJaRMqCg4CSm1EDLHX8wt4ZsUGBuaerZgDw89eWZNpRyKZ296jlnnHmaMZM+WN5 -TqVh1cQG4cVDYY5hgrJ/HHnx3Jw98cGAfBrfLMyt1UsEN89DPzDNibnCs07xsVHs -eHUI8p/M +ggIPADCCAgoCggIBAL4EgvyOgHPRl4RnOvMMBJ9HXIJFqh4YOQOfLQmfxT+f9fra +OnMQ3ydG+LJalAEK5r1mNlG9NQCqaF1RldCJR4u4qF0FBbqkoFg69bIJT/3Y1T7W +S1iAJTFF3sVFXPASUREmU4Jx7b2HkEfDILP86o4ePDKkbj+ZpCwmh+Tu511nxcYI +HSi8ecMJkYuWVFOBh0B8mBM1d3USqrTNgIN+AcJL9UWuY25VwYz3gpH7OtVWrRB/ +EPikqiNgo3I/6yV2eae5ndwVtgF3Q3kA4XofquoLa3VG35quHrjSA9ur78g2AFSE +1GLqCKGG4Nkfp43uUjpWtiAWjNcQSxmc/oWYXgTHYMfZJdt8Oe+ISXyY5/iueMb1 +SDy/IJqjA8fuQTjSlguxe8w4srGRJ7oUw77a1gPIpMJ40G/G33H5HFPjC2jC/8dn +coqb7CVCSqlMka1Y/WcoFVc/VwpR+vYgEflJyjSQDTW8EWW96/oGKYtTglyYnOw1 +ec7DfCemXmNwxgbUd4a4CJ1iz7fP1HCNh2gixILnU89e7zif+Ftjz/b6JHMDR3QM +cW0/Wqazq3woU2EOvhgp8WciHQZ00jgL7S1QEPzOKRYS1lpDkFQDAiVNtTHf8oJl +OpIBvalahLsoLQ2gtW7aoiv6YmqemX+11FXBZjXg50Rnlu9sx8MG4kHYTG3dAgMB +AAEwDQYJKoZIhvcNAQELBQADggIBAFWj5Pd1yDhVrnMfMJayySQWU7miEEVjkVs2 +ih6U+TGLkr/il7cdMQyD+joXNd/KSraob8jpg2IF+wyTnUA12DV8aorT74cT4hgq +xegboxauQ3VbTpEfUK1hz5LK0ELceZL5OBtAkRzz6DvRzF0X5fN2yOmL9A1utVR0 +ONuW8z6TuLFEtP5iXKvdpju5ZsXAmng8ETpsru0dVmKCZDIHBkSa8ApkAlHBWavI +WKYn6gl343qNjkQN+Mu3dIcJutfeH3lLG9l3J+U8C/1vk2jTYVKrSL4mXmxP5F2p +lajHl/Foo2I3ln64TjAqcBiPGIXQ7ZBpbP0Ztfsl7858Pqp+v6IXrUTVOwYfNeYR +iTj6TCIBnY+CCOrGPjZNR8JWey2mFS+3SRmrye/iCfnz06PEO68NXGHCk+ER3FG1 +Ktkld5rvCZKFCo1Hdoz9AW/MgOXIhFIwEDfxq+SYMY44cOwPa/NGyAUeOBNR+GxR +Z5slXVa6S2odcAmHWBUfBZO7Ok/GDTU3HW/SobTzH/MYjabnyOKZ49OAK6wuT16q +YOkfS0X+OpewwNtzCfIgpn4sMmAxP5o1bN/8HnMBeYXYcEzkXNEAGmuFWiWiALhu +R/MFHahrN5n6YohOw3b5jU501Uz5RFW9IxuPmMNzfddgppT9Rg3EDmlOv9MMUE9U +9nfhGCSq -----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/docker/generate-ssl.sh b/docker/generate-ssl.sh old mode 100644 new mode 100755 index 97b9ad6..4b7a130 --- a/docker/generate-ssl.sh +++ b/docker/generate-ssl.sh @@ -21,7 +21,7 @@ openssl req -subj "/CN=invalidCNCa" -new -x509 -days $DAYS -key ca.key -out ca.c # Create the Server Key, CSR, and Certificate openssl genrsa -out mongodb.key 4096 -openssl req -subj "/CN=${SSL_HOST}" -new -key mongodb.key -out mongodb.csr +openssl req -subj "/CN=${SSL_HOST}" -new -key mongodb.key -out mongodb.csr -addext "subjectAltName = DNS:localhost,DNS:${SSL_HOST}" # We're self signing our own server cert here. This is a no-no in production. openssl x509 -req -days $DAYS -sha256 -in mongodb.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out mongodb.crt @@ -29,5 +29,5 @@ openssl x509 -req -days $DAYS -sha256 -in mongodb.csr -CA ca.crt -CAkey ca.key - # Verify Server Certificate openssl verify -purpose sslserver -CAfile ca.crt mongodb.crt -cat mongodb.key mongodb.crt > mongodb.pem -cat ca.key ca.crt > ca.pem +cat mongodb.crt mongodb.key > mongodb.pem +cat ca.crt ca.key > ca.pem diff --git a/docker/mongodb/ssl-config.conf b/docker/mongodb/ssl-config.conf index 250d37b..a22a468 100644 --- a/docker/mongodb/ssl-config.conf +++ b/docker/mongodb/ssl-config.conf @@ -3,6 +3,7 @@ net: bindIp: 0.0.0.0 tls: mode: requireTLS + # Client certificate is not required allowConnectionsWithoutCertificates: true CAFile: /etc/ssl/ca.pem - certificateKeyFile: /etc/ssl/mongodb.pem \ No newline at end of file + certificateKeyFile: /etc/ssl/mongodb.pem From 3abf4aac085091b516e758db589b1d8d5659dc8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=BDborn=C3=BD=20Adam?= Date: Wed, 18 May 2022 09:09:46 +0200 Subject: [PATCH 10/11] Make CA cert trusted in app image --- Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Dockerfile b/Dockerfile index 60fc122..433e038 100644 --- a/Dockerfile +++ b/Dockerfile @@ -53,4 +53,8 @@ COPY . /code/ # Run normal composer - all deps are cached already RUN composer install $COMPOSER_FLAGS +# Make self-signed certificate trusted +COPY docker/certificates/ca.crt /usr/local/share/ca-certificates/ca.crt +RUN update-ca-certificates + CMD ["php", "/code/src/run.php"] From 32826183427285f3c538112aca49c4b19e1b99fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=BDborn=C3=BD=20Adam?= Date: Wed, 18 May 2022 09:10:04 +0200 Subject: [PATCH 11/11] Fixed test --- tests/functional/export-all-cluster-connection/expected-stdout | 2 +- tests/functional/export-all-cluster-connection/setUp.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/functional/export-all-cluster-connection/expected-stdout b/tests/functional/export-all-cluster-connection/expected-stdout index 5864ce3..3a236dd 100644 --- a/tests/functional/export-all-cluster-connection/expected-stdout +++ b/tests/functional/export-all-cluster-connection/expected-stdout @@ -1,4 +1,4 @@ -%sconnected to: mongodb://mongodb:27017/ +%sconnected to: mongodb+srv://mongodb.cluster.local/test %sexported 73 records Parsing "/tmp/%s/out/tables/export-all.json" Done "/tmp/%s/out/tables/export-all.json" \ No newline at end of file diff --git a/tests/functional/export-all-cluster-connection/setUp.php b/tests/functional/export-all-cluster-connection/setUp.php index f05cf36..2eb74ab 100644 --- a/tests/functional/export-all-cluster-connection/setUp.php +++ b/tests/functional/export-all-cluster-connection/setUp.php @@ -6,5 +6,5 @@ use MongoExtractor\Tests\Traits\ImportDatasetTrait; return static function (DatadirTest $test): void { - //(new class { use ImportDatasetTrait; })::importDatatasetCluster('restaurants', 'dataset.json'); + (new class { use ImportDatasetTrait; })::importDatatasetCluster('restaurants', 'dataset.json'); };