marsevilspirit opened a new pull request, #2891:
URL: https://github.com/apache/dubbo-go/pull/2891

   We plan to move TLSConfig from the config package to the global package, for 
which we need TLSOptions. However, we cannot place TLSOptions in the global 
package, otherwise it will cause circular dependencies, making global a second 
config package. Therefore, it is necessary for us to create a tls directory.
   
   How to pass TLSConfig is a question, and I handled it this way:
   ```go
   common.WithAttribute(constant.TLSConfigKey, svcOpts.srvOpts.TLS)
   ```
   Using the Attribute field in the URL to pass parameters, TLSConfig will not 
appear in the URL string. The Attribute is designed to pass various 
configurations, but very few people use it, so I plan to use Attribute to pass 
TLSConfig.
   
   The following samples have all been tested successfully.
   
   Instance sample
   ```go
           ins, err := dubbo.NewInstance(
                   dubbo.WithName("dubbo_instance_sample"),
                   dubbo.WithProtocol(
                           protocol.WithTriple(),
                           protocol.WithPort(20000),
                   ),
                   dubbo.WithTLS(
                           tls.WithCACertFile("client_ca_cert.pem"),
                           tls.WithCertFile("server2_cert.pem"),
                           tls.WithKeyFile("server2_key.pem"),
                           tls.WithServerName("dubbogo.test.example.com"),
                   ),
           )
   ```
   
   Server sample
   ```go
           srv, err := server.NewServer(
                   server.WithServerProtocol(
                           protocol.WithPort(20000),
                           protocol.WithTriple(),
                   ),
                   server.WithServerTLSOption(
                           tls.WithCACertFile("client_ca_cert.pem"),
                           tls.WithCertFile("server2_cert.pem"),
                           tls.WithKeyFile("server2_key.pem"),
                           tls.WithServerName("dubbogo.test.example.com"),
                   ),
           )
   ```
   
   Client sample
   ```go
           cli, err := client.NewClient(
                   client.WithClientURL("127.0.0.1:20000"),
                   client.WithClientTLSOption(
                           tls.WithCACertFile("server_ca_cert.pem"),
                           tls.WithCertFile("client2_cert.pem"),
                           tls.WithKeyFile("client2_key.pem"),
                           tls.WithServerName("dubbogo.test.example.com"),
                   ),
           )
   ```
   
   dubbo.load server yaml file
   ```go
   func main() {
           greet.SetProviderGreetService(&GreetTripleServer{})
           if err := dubbo.Load(); err != nil {
                   panic(err)
           }
           select {}
   }
   ```
   ``` yaml
   # dubbo server yaml configure file
   dubbo:
     registries:
       demoZK:
         protocol: zookeeper
         timeout: 10s
         address: 127.0.0.1:2181
     protocols:
       tripleProtocol:
         name: tri
         port: 20000
     provider:
       services:
         GreetTripleServer:
           interface: com.apache.dubbo.sample.Greeter
     tls_config:
       ca-cert-file: client_ca_cert.pem
       tls-cert-file: server1_cert.pem
       tls-key-file: server1_key.pem
       tls-server-name: dubbogo.test.example.com
   ```
   
   dubbo.load client yaml file
   ```go
   func main() {
           greet.SetConsumerGreetService(svc)
           if err := dubbo.Load(); err != nil {
                   panic(err)
           }
           req, err := svc.Greet(context.Background(), 
&greet.GreetRequest{Name: "name"})
           if err != nil {
                   panic(err)
           }
           logger.Infof("Greeting: %v", req.Greeting)
   }
   ```
   ```yaml
   # dubbo client yaml configure file
   dubbo:
     registries:
       demoZK:
         protocol: zookeeper
         timeout: 3s
         address: 127.0.0.1:2181
     consumer:
       references:
         GreetServiceImpl:
           protocol: tri
           interface: com.apache.dubbo.sample.Greeter
           registry: demoZK
           retries: 3
           timeout: 3000
     tls_config:
       ca-cert-file: server_ca_cert.pem
       tls-cert-file: client1_cert.pem
       tls-key-file: client1_key.pem
       tls-server-name: dubbogo.test.example.com
   ```
   
   The benefits of this PR:
   1.  It enables the new API to fully support TLS.
   2.  It completely frees the TLS part of the remoting and protocol packages 
from the circular dependency on the config package, preparing for the future 
removal of the config package.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@dubbo.apache.org
For additional commands, e-mail: notifications-h...@dubbo.apache.org

Reply via email to