{"action":"created","comment":{"url":"https://api.github.com/repos/akka/akka-grpc/pulls/comments/203274790","pull_request_review_id":138129698,"id":203274790,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMzI3NDc5MA==","diff_hunk":"@@ -1 +1,16 @@\n akka.loglevel = INFO\n+akka.grpc.client {\n+  \"helloworld.GreeterService\" {\n+    host = 127.0.0.1\n+    port = 8080\n+    override-authority = foo.test.google.fr\n+    ssl-config {","path":"plugin-tester-java/src/main/resources/application.conf","position":7,"original_position":7,"commit_id":"0caf0f47c4706ae62fff81708ec6808c6eaf636d","original_commit_id":"0caf0f47c4706ae62fff81708ec6808c6eaf636d","user":{"login":"richdougherty","id":14750,"node_id":"MDQ6VXNlcjE0NzUw","avatar_url":"https://avatars2.githubusercontent.com/u/14750?v=4","gravatar_id":"","url":"https://api.github.com/users/richdougherty","html_url":"https://github.com/richdougherty","followers_url":"https://api.github.com/users/richdougherty/followers","following_url":"https://api.github.com/users/richdougherty/following{/other_user}","gists_url":"https://api.github.com/users/richdougherty/gists{/gist_id}","starred_url":"https://api.github.com/users/richdougherty/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/richdougherty/subscriptions","organizations_url":"https://api.github.com/users/richdougherty/orgs","repos_url":"https://api.github.com/users/richdougherty/repos","events_url":"https://api.github.com/users/richdougherty/events{/privacy}","received_events_url":"https://api.github.com/users/richdougherty/received_events","type":"User","site_admin":false},"body":"This section is parsed by the `ssl-config` library.","created_at":"2018-07-18T07:23:37Z","updated_at":"2018-07-18T07:23:37Z","html_url":"https://github.com/akka/akka-grpc/pull/266#discussion_r203274790","pull_request_url":"https://api.github.com/repos/akka/akka-grpc/pulls/266","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/akka/akka-grpc/pulls/comments/203274790"},"html":{"href":"https://github.com/akka/akka-grpc/pull/266#discussion_r203274790"},"pull_request":{"href":"https://api.github.com/repos/akka/akka-grpc/pulls/266"}}},"pull_request":{"url":"https://api.github.com/repos/akka/akka-grpc/pulls/266","id":198904135,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk4OTA0MTM1","html_url":"https://github.com/akka/akka-grpc/pull/266","diff_url":"https://github.com/akka/akka-grpc/pull/266.diff","patch_url":"https://github.com/akka/akka-grpc/pull/266.patch","issue_url":"https://api.github.com/repos/akka/akka-grpc/issues/266","number":266,"state":"open","locked":false,"title":"WIP: Use a Java SSLConfig for client configuration","user":{"login":"richdougherty","id":14750,"node_id":"MDQ6VXNlcjE0NzUw","avatar_url":"https://avatars2.githubusercontent.com/u/14750?v=4","gravatar_id":"","url":"https://api.github.com/users/richdougherty","html_url":"https://github.com/richdougherty","followers_url":"https://api.github.com/users/richdougherty/followers","following_url":"https://api.github.com/users/richdougherty/following{/other_user}","gists_url":"https://api.github.com/users/richdougherty/gists{/gist_id}","starred_url":"https://api.github.com/users/richdougherty/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/richdougherty/subscriptions","organizations_url":"https://api.github.com/users/richdougherty/orgs","repos_url":"https://api.github.com/users/richdougherty/repos","events_url":"https://api.github.com/users/richdougherty/events{/privacy}","received_events_url":"https://api.github.com/users/richdougherty/received_events","type":"User","site_admin":false},"body":" Add an `SSLContext` setting to the `GrpcClientSettings` and deprecate the current certificate setting.\r\n\r\nGoals:\r\n- Make client settings API more flexible than we have at the moment. Currently we can only provide a path to a certificate to trust. By providing an `SSLContext` a wide variety of trust options are supported.\r\n- No dependency from akka-grpc's public API to any other SSL libraries (such as Netty's `SslContext/Builder`, Lightbend's [`ssl-config`](https://github.com/lightbend/ssl-config), Apache's [commons-net utilities](https://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/util/package-summary.html)). This does mean there is currently a bit of a vacuum about _how_ users should actually go about creating an `SSLContext` object.\r\n\r\nTodo:\r\n- Work out our preferred way for configuring SSL in Akka gRPC. I understand that we do not want to have a public dependency on Netty APIs like `SslContextBuilder` in Akka gRPC. We could leave this the details of creating an `SSLContext` unspecified and then downstream users could decide for themselves. E.g. Play could use `ssl-config`, since it already uses that library for `play-ws` configuration. However, since it is likely that Akka users will want to know how to create an `SSLContext` when using Akka gRPC, at some point we'll probably need to either write an API or come up with a recommendation for a third-party API to use.\r\n- Within the private `NettyClientUtils` class, work out a better way to go from an `SSLContext` to a usable Netty `SslContext`. At the moment this is done by creating a default Netty `SslContext` object - which contains a Java `SSLContext` internally - then patching in a new `SSLContext` using reflection! This is not a nice way to do things. The reason to do this for now is because there are a lot of SSL settings that Netty sets up that we basically need to re-implement ourselves, and I've put off doing that for now. A proper solution that avoids using reflection will unfortunately involve replicating a lot of Netty's internal functionality ourselves.\r\n\r\n","created_at":"2018-07-03T09:34:38Z","updated_at":"2018-07-18T07:23:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":"13c4abbabcc7811534683b97842b415eb2bbab5f","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/akka/akka-grpc/pulls/266/commits","review_comments_url":"https://api.github.com/repos/akka/akka-grpc/pulls/266/comments","review_comment_url":"https://api.github.com/repos/akka/akka-grpc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/akka/akka-grpc/issues/266/comments","statuses_url":"https://api.github.com/repos/akka/akka-grpc/statuses/0caf0f47c4706ae62fff81708ec6808c6eaf636d","head":{"label":"richdougherty:client-ssl2","ref":"client-ssl2","sha":"0caf0f47c4706ae62fff81708ec6808c6eaf636d","user":{"login":"richdougherty","id":14750,"node_id":"MDQ6VXNlcjE0NzUw","avatar_url":"https://avatars2.githubusercontent.com/u/14750?v=4","gravatar_id":"","url":"https://api.github.com/users/richdougherty","html_url":"https://github.com/richdougherty","followers_url":"https://api.github.com/users/richdougherty/followers","following_url":"https://api.github.com/users/richdougherty/following{/other_user}","gists_url":"https://api.github.com/users/richdougherty/gists{/gist_id}","starred_url":"https://api.github.com/users/richdougherty/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/richdougherty/subscriptions","organizations_url":"https://api.github.com/users/richdougherty/orgs","repos_url":"https://api.github.com/users/richdougherty/repos","events_url":"https://api.github.com/users/richdougherty/events{/privacy}","received_events_url":"https://api.github.com/users/richdougherty/received_events","type":"User","site_admin":false},"repo":{"id":139532486,"node_id":"MDEwOlJlcG9zaXRvcnkxMzk1MzI0ODY=","name":"akka-grpc","full_name":"richdougherty/akka-grpc","owner":{"login":"richdougherty","id":14750,"node_id":"MDQ6VXNlcjE0NzUw","avatar_url":"https://avatars2.githubusercontent.com/u/14750?v=4","gravatar_id":"","url":"https://api.github.com/users/richdougherty","html_url":"https://github.com/richdougherty","followers_url":"https://api.github.com/users/richdougherty/followers","following_url":"https://api.github.com/users/richdougherty/following{/other_user}","gists_url":"https://api.github.com/users/richdougherty/gists{/gist_id}","starred_url":"https://api.github.com/users/richdougherty/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/richdougherty/subscriptions","organizations_url":"https://api.github.com/users/richdougherty/orgs","repos_url":"https://api.github.com/users/richdougherty/repos","events_url":"https://api.github.com/users/richdougherty/events{/privacy}","received_events_url":"https://api.github.com/users/richdougherty/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/richdougherty/akka-grpc","description":"Akka gRPC","fork":true,"url":"https://api.github.com/repos/richdougherty/akka-grpc","forks_url":"https://api.github.com/repos/richdougherty/akka-grpc/forks","keys_url":"https://api.github.com/repos/richdougherty/akka-grpc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/richdougherty/akka-grpc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/richdougherty/akka-grpc/teams","hooks_url":"https://api.github.com/repos/richdougherty/akka-grpc/hooks","issue_events_url":"https://api.github.com/repos/richdougherty/akka-grpc/issues/events{/number}","events_url":"https://api.github.com/repos/richdougherty/akka-grpc/events","assignees_url":"https://api.github.com/repos/richdougherty/akka-grpc/assignees{/user}","branches_url":"https://api.github.com/repos/richdougherty/akka-grpc/branches{/branch}","tags_url":"https://api.github.com/repos/richdougherty/akka-grpc/tags","blobs_url":"https://api.github.com/repos/richdougherty/akka-grpc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/richdougherty/akka-grpc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/richdougherty/akka-grpc/git/refs{/sha}","trees_url":"https://api.github.com/repos/richdougherty/akka-grpc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/richdougherty/akka-grpc/statuses/{sha}","languages_url":"https://api.github.com/repos/richdougherty/akka-grpc/languages","stargazers_url":"https://api.github.com/repos/richdougherty/akka-grpc/stargazers","contributors_url":"https://api.github.com/repos/richdougherty/akka-grpc/contributors","subscribers_url":"https://api.github.com/repos/richdougherty/akka-grpc/subscribers","subscription_url":"https://api.github.com/repos/richdougherty/akka-grpc/subscription","commits_url":"https://api.github.com/repos/richdougherty/akka-grpc/commits{/sha}","git_commits_url":"https://api.github.com/repos/richdougherty/akka-grpc/git/commits{/sha}","comments_url":"https://api.github.com/repos/richdougherty/akka-grpc/comments{/number}","issue_comment_url":"https://api.github.com/repos/richdougherty/akka-grpc/issues/comments{/number}","contents_url":"https://api.github.com/repos/richdougherty/akka-grpc/contents/{+path}","compare_url":"https://api.github.com/repos/richdougherty/akka-grpc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/richdougherty/akka-grpc/merges","archive_url":"https://api.github.com/repos/richdougherty/akka-grpc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/richdougherty/akka-grpc/downloads","issues_url":"https://api.github.com/repos/richdougherty/akka-grpc/issues{/number}","pulls_url":"https://api.github.com/repos/richdougherty/akka-grpc/pulls{/number}","milestones_url":"https://api.github.com/repos/richdougherty/akka-grpc/milestones{/number}","notifications_url":"https://api.github.com/repos/richdougherty/akka-grpc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/richdougherty/akka-grpc/labels{/name}","releases_url":"https://api.github.com/repos/richdougherty/akka-grpc/releases{/id}","deployments_url":"https://api.github.com/repos/richdougherty/akka-grpc/deployments","created_at":"2018-07-03T05:25:15Z","updated_at":"2018-07-03T05:25:17Z","pushed_at":"2018-07-18T07:21:34Z","git_url":"git://github.com/richdougherty/akka-grpc.git","ssh_url":"git@github.com:richdougherty/akka-grpc.git","clone_url":"https://github.com/richdougherty/akka-grpc.git","svn_url":"https://github.com/richdougherty/akka-grpc","homepage":"https://developer.lightbend.com/docs/akka-grpc/current/","size":826,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"akka:master","ref":"master","sha":"0de5ff5c2737adf614d26c25d1b632142d313f14","user":{"login":"akka","id":1496237,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0OTYyMzc=","avatar_url":"https://avatars2.githubusercontent.com/u/1496237?v=4","gravatar_id":"","url":"https://api.github.com/users/akka","html_url":"https://github.com/akka","followers_url":"https://api.github.com/users/akka/followers","following_url":"https://api.github.com/users/akka/following{/other_user}","gists_url":"https://api.github.com/users/akka/gists{/gist_id}","starred_url":"https://api.github.com/users/akka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akka/subscriptions","organizations_url":"https://api.github.com/users/akka/orgs","repos_url":"https://api.github.com/users/akka/repos","events_url":"https://api.github.com/users/akka/events{/privacy}","received_events_url":"https://api.github.com/users/akka/received_events","type":"Organization","site_admin":false},"repo":{"id":120786720,"node_id":"MDEwOlJlcG9zaXRvcnkxMjA3ODY3MjA=","name":"akka-grpc","full_name":"akka/akka-grpc","owner":{"login":"akka","id":1496237,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0OTYyMzc=","avatar_url":"https://avatars2.githubusercontent.com/u/1496237?v=4","gravatar_id":"","url":"https://api.github.com/users/akka","html_url":"https://github.com/akka","followers_url":"https://api.github.com/users/akka/followers","following_url":"https://api.github.com/users/akka/following{/other_user}","gists_url":"https://api.github.com/users/akka/gists{/gist_id}","starred_url":"https://api.github.com/users/akka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akka/subscriptions","organizations_url":"https://api.github.com/users/akka/orgs","repos_url":"https://api.github.com/users/akka/repos","events_url":"https://api.github.com/users/akka/events{/privacy}","received_events_url":"https://api.github.com/users/akka/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/akka/akka-grpc","description":"Akka gRPC","fork":false,"url":"https://api.github.com/repos/akka/akka-grpc","forks_url":"https://api.github.com/repos/akka/akka-grpc/forks","keys_url":"https://api.github.com/repos/akka/akka-grpc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/akka/akka-grpc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/akka/akka-grpc/teams","hooks_url":"https://api.github.com/repos/akka/akka-grpc/hooks","issue_events_url":"https://api.github.com/repos/akka/akka-grpc/issues/events{/number}","events_url":"https://api.github.com/repos/akka/akka-grpc/events","assignees_url":"https://api.github.com/repos/akka/akka-grpc/assignees{/user}","branches_url":"https://api.github.com/repos/akka/akka-grpc/branches{/branch}","tags_url":"https://api.github.com/repos/akka/akka-grpc/tags","blobs_url":"https://api.github.com/repos/akka/akka-grpc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/akka/akka-grpc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/akka/akka-grpc/git/refs{/sha}","trees_url":"https://api.github.com/repos/akka/akka-grpc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/akka/akka-grpc/statuses/{sha}","languages_url":"https://api.github.com/repos/akka/akka-grpc/languages","stargazers_url":"https://api.github.com/repos/akka/akka-grpc/stargazers","contributors_url":"https://api.github.com/repos/akka/akka-grpc/contributors","subscribers_url":"https://api.github.com/repos/akka/akka-grpc/subscribers","subscription_url":"https://api.github.com/repos/akka/akka-grpc/subscription","commits_url":"https://api.github.com/repos/akka/akka-grpc/commits{/sha}","git_commits_url":"https://api.github.com/repos/akka/akka-grpc/git/commits{/sha}","comments_url":"https://api.github.com/repos/akka/akka-grpc/comments{/number}","issue_comment_url":"https://api.github.com/repos/akka/akka-grpc/issues/comments{/number}","contents_url":"https://api.github.com/repos/akka/akka-grpc/contents/{+path}","compare_url":"https://api.github.com/repos/akka/akka-grpc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/akka/akka-grpc/merges","archive_url":"https://api.github.com/repos/akka/akka-grpc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/akka/akka-grpc/downloads","issues_url":"https://api.github.com/repos/akka/akka-grpc/issues{/number}","pulls_url":"https://api.github.com/repos/akka/akka-grpc/pulls{/number}","milestones_url":"https://api.github.com/repos/akka/akka-grpc/milestones{/number}","notifications_url":"https://api.github.com/repos/akka/akka-grpc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/akka/akka-grpc/labels{/name}","releases_url":"https://api.github.com/repos/akka/akka-grpc/releases{/id}","deployments_url":"https://api.github.com/repos/akka/akka-grpc/deployments","created_at":"2018-02-08T16:28:56Z","updated_at":"2018-07-13T23:26:13Z","pushed_at":"2018-07-18T07:21:36Z","git_url":"git://github.com/akka/akka-grpc.git","ssh_url":"git@github.com:akka/akka-grpc.git","clone_url":"https://github.com/akka/akka-grpc.git","svn_url":"https://github.com/akka/akka-grpc","homepage":"https://developer.lightbend.com/docs/akka-grpc/current/","size":870,"stargazers_count":117,"watchers_count":117,"language":"Scala","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11,"mirror_url":null,"archived":false,"open_issues_count":55,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":11,"open_issues":55,"watchers":117,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/akka/akka-grpc/pulls/266"},"html":{"href":"https://github.com/akka/akka-grpc/pull/266"},"issue":{"href":"https://api.github.com/repos/akka/akka-grpc/issues/266"},"comments":{"href":"https://api.github.com/repos/akka/akka-grpc/issues/266/comments"},"review_comments":{"href":"https://api.github.com/repos/akka/akka-grpc/pulls/266/comments"},"review_comment":{"href":"https://api.github.com/repos/akka/akka-grpc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/akka/akka-grpc/pulls/266/commits"},"statuses":{"href":"https://api.github.com/repos/akka/akka-grpc/statuses/0caf0f47c4706ae62fff81708ec6808c6eaf636d"}},"author_association":"NONE"}}
{"actor":{"display_login":"richdougherty"}}