소스 검색

chore(authz): mongo connector support ssl

Rory Z 4 년 전
부모
커밋
fd0a211629
3개의 변경된 파일32개의 추가작업 그리고 31개의 파일을 삭제
  1. 10 5
      .ci/docker-compose-file/docker-compose-mongo-tls.yaml
  2. 1 0
      apps/emqx_authz/src/emqx_authz_schema.erl
  3. 21 26
      apps/emqx_connector/src/emqx_connector_mongo.erl

+ 10 - 5
.ci/docker-compose-file/docker-compose-mongo-tls.yaml

@@ -8,11 +8,16 @@ services:
     environment:
     environment:
       MONGO_INITDB_DATABASE: mqtt
       MONGO_INITDB_DATABASE: mqtt
     volumes:
     volumes:
-        - ../../apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/mongodb.pem/:/etc/certs/mongodb.pem
+      - ../../apps/emqx/etc/certs/cert.pem:/etc/certs/cert.pem
+      - ../../apps/emqx/etc/certs/key.pem:/etc/certs/key.pem
     networks:
     networks:
       - emqx_bridge
       - emqx_bridge
+    ports:
+      - "27017:27017"
     command:
     command:
-      --ipv6
-      --bind_ip_all
-      --sslMode requireSSL
-      --sslPEMKeyFile /etc/certs/mongodb.pem
+      - /bin/bash
+      - -c
+      - |
+        cat /etc/certs/key.pem /etc/certs/cert.pem >  /etc/certs/mongodb.pem
+        mongod --ipv6 --bind_ip_all --sslMode requireSSL --sslPEMKeyFile /etc/certs/mongodb.pem
+

+ 1 - 0
apps/emqx_authz/src/emqx_authz_schema.erl

@@ -90,6 +90,7 @@ rules() ->
                 [ hoconsc:ref(?MODULE, simple_rule)
                 [ hoconsc:ref(?MODULE, simple_rule)
                 , hoconsc:ref(?MODULE, sql_connector)
                 , hoconsc:ref(?MODULE, sql_connector)
                 , hoconsc:ref(?MODULE, redis_connector)
                 , hoconsc:ref(?MODULE, redis_connector)
+                , hoconsc:ref(?MODULE, mongo_connector)
                 ])
                 ])
     }.
     }.
 
 

+ 21 - 26
apps/emqx_connector/src/emqx_connector_mongo.erl

@@ -36,10 +36,28 @@
 structs() -> [""].
 structs() -> [""].
 
 
 fields("") ->
 fields("") ->
-    mongodb_fields() ++
-    mongodb_topology_fields() ++
+    [ {mongo_type, fun mongo_type/1}
+    , {servers, fun servers/1}
+    , {pool_size, fun emqx_connector_schema_lib:pool_size/1}
+    , {login, fun emqx_connector_schema_lib:username/1}
+    , {password, fun emqx_connector_schema_lib:password/1}
+    , {auth_source, fun auth_source/1}
+    , {database, fun emqx_connector_schema_lib:database/1}
+    ] ++
     % mongodb_rs_set_name_fields() ++
     % mongodb_rs_set_name_fields() ++
-    emqx_connector_schema_lib:ssl_fields().
+    emqx_connector_schema_lib:ssl_fields();
+fields(topology) ->
+    [ {max_overflow, fun emqx_connector_schema_lib:pool_size/1}
+    , {overflow_ttl, fun duration/1}
+    , {overflow_check_period, fun duration/1}
+    , {local_threshold_ms, fun duration/1}
+    , {connect_timeout_ms, fun duration/1}
+    , {socket_timeout_ms, fun duration/1}
+    , {server_selection_timeout_ms, fun duration/1}
+    , {wait_queue_timeout_ms, fun duration/1}
+    , {heartbeat_frequency_ms, fun duration/1}
+    , {min_heartbeat_frequency_ms, fun duration/1}
+    ].
 
 
 on_jsonify(Config) ->
 on_jsonify(Config) ->
     Config.
     Config.
@@ -178,29 +196,6 @@ host_port(HostPort) ->
             [{host, Host1}]
             [{host, Host1}]
     end.
     end.
 
 
-mongodb_fields() ->
-    [ {mongo_type, fun mongo_type/1}
-    , {servers, fun servers/1}
-    , {pool_size, fun emqx_connector_schema_lib:pool_size/1}
-    , {login, fun emqx_connector_schema_lib:username/1}
-    , {password, fun emqx_connector_schema_lib:password/1}
-    , {auth_source, fun auth_source/1}
-    , {database, fun emqx_connector_schema_lib:database/1}
-    ].
-
-mongodb_topology_fields() ->
-    [ {max_overflow, fun emqx_connector_schema_lib:pool_size/1}
-    , {overflow_ttl, fun duration/1}
-    , {overflow_check_period, fun duration/1}
-    , {local_threshold_ms, fun duration/1}
-    , {connect_timeout_ms, fun duration/1}
-    , {socket_timeout_ms, fun duration/1}
-    , {server_selection_timeout_ms, fun duration/1}
-    , {wait_queue_timeout_ms, fun duration/1}
-    , {heartbeat_frequency_ms, fun duration/1}
-    , {min_heartbeat_frequency_ms, fun duration/1}
-    ].
-
 % mongodb_rs_set_name_fields() ->
 % mongodb_rs_set_name_fields() ->
 %     [ {rs_set_name, fun emqx_connector_schema_lib:database/1}
 %     [ {rs_set_name, fun emqx_connector_schema_lib:database/1}
 %     ].
 %     ].