{"action":"closed","number":875,"pull_request":{"url":"https://api.github.com/repos/infinitered/reactotron/pulls/875","id":227903015,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI3OTAzMDE1","html_url":"https://github.com/infinitered/reactotron/pull/875","diff_url":"https://github.com/infinitered/reactotron/pull/875.diff","patch_url":"https://github.com/infinitered/reactotron/pull/875.patch","issue_url":"https://api.github.com/repos/infinitered/reactotron/issues/875","number":875,"state":"closed","locked":false,"title":"Added PFX Support","user":{"login":"alexjebens","id":17121645,"node_id":"MDQ6VXNlcjE3MTIxNjQ1","avatar_url":"https://avatars2.githubusercontent.com/u/17121645?v=4","gravatar_id":"","url":"https://api.github.com/users/alexjebens","html_url":"https://github.com/alexjebens","followers_url":"https://api.github.com/users/alexjebens/followers","following_url":"https://api.github.com/users/alexjebens/following{/other_user}","gists_url":"https://api.github.com/users/alexjebens/gists{/gist_id}","starred_url":"https://api.github.com/users/alexjebens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexjebens/subscriptions","organizations_url":"https://api.github.com/users/alexjebens/orgs","repos_url":"https://api.github.com/users/alexjebens/repos","events_url":"https://api.github.com/users/alexjebens/events{/privacy}","received_events_url":"https://api.github.com/users/alexjebens/received_events","type":"User","site_admin":false},"body":"This is a simple implementation for wss. It works by using https server for websocket server when a file called \"cert.pfx\" is located in the directory of the executable. The cert.pfx should not use a passphrase, should be issued to localhost and trusted by the client. Tested using Firefox, Edge and Internet Explorer.\r\n\r\nResolves #874.\r\n\r\nreactotron-react-js configuration:\r\n\r\n```javascript\r\nimport reactotronReactJs from \"reactotron-react-js\"\r\n\r\nconst wsReplace = /ws:/\r\nreactotronReactJs.configure({\r\n  createSocket: path => new WebSocket(path.replace(wsReplace, \"wss:\"))\r\n})\r\n```\r\n\r\nPowershell script to create a certificate for testing (Windows):\r\n```powershell\r\n$pfxPath = \"<path to reactotron-app>\\cert.pfx\"\r\n\r\n# Create cert in My Store\r\n$cert = New-SelfSignedCertificate -DnsName localhost -FriendlyName \"Local Websocket\"\r\n\r\n# Save cert to reactotron app path\r\n$stream = [System.IO.File]::OpenWrite($pfxPath)\r\n$certBytes = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx)\r\n$stream.Write($certBytes, 0, $certBytes.Length)\r\n$stream.Dispose()\r\n\r\n# Trust the cert\r\nImport-PfxCertificate -Exportable -CertStoreLocation Cert:\\CurrentUser\\Root -FilePath $pfxPath\r\n```","created_at":"2018-11-02T11:07:34Z","updated_at":"2018-12-09T00:52:41Z","closed_at":"2018-12-09T00:52:41Z","merged_at":null,"merge_commit_sha":"55e5956db9afcae0d8f146f5bff73cc840ef408d","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/infinitered/reactotron/pulls/875/commits","review_comments_url":"https://api.github.com/repos/infinitered/reactotron/pulls/875/comments","review_comment_url":"https://api.github.com/repos/infinitered/reactotron/pulls/comments{/number}","comments_url":"https://api.github.com/repos/infinitered/reactotron/issues/875/comments","statuses_url":"https://api.github.com/repos/infinitered/reactotron/statuses/5995a2a2bb832926429652c2dad7ebe43ae06060","head":{"label":"alexjebens:master","ref":"master","sha":"5995a2a2bb832926429652c2dad7ebe43ae06060","user":{"login":"alexjebens","id":17121645,"node_id":"MDQ6VXNlcjE3MTIxNjQ1","avatar_url":"https://avatars2.githubusercontent.com/u/17121645?v=4","gravatar_id":"","url":"https://api.github.com/users/alexjebens","html_url":"https://github.com/alexjebens","followers_url":"https://api.github.com/users/alexjebens/followers","following_url":"https://api.github.com/users/alexjebens/following{/other_user}","gists_url":"https://api.github.com/users/alexjebens/gists{/gist_id}","starred_url":"https://api.github.com/users/alexjebens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexjebens/subscriptions","organizations_url":"https://api.github.com/users/alexjebens/orgs","repos_url":"https://api.github.com/users/alexjebens/repos","events_url":"https://api.github.com/users/alexjebens/events{/privacy}","received_events_url":"https://api.github.com/users/alexjebens/received_events","type":"User","site_admin":false},"repo":{"id":155704102,"node_id":"MDEwOlJlcG9zaXRvcnkxNTU3MDQxMDI=","name":"reactotron","full_name":"alexjebens/reactotron","private":false,"owner":{"login":"alexjebens","id":17121645,"node_id":"MDQ6VXNlcjE3MTIxNjQ1","avatar_url":"https://avatars2.githubusercontent.com/u/17121645?v=4","gravatar_id":"","url":"https://api.github.com/users/alexjebens","html_url":"https://github.com/alexjebens","followers_url":"https://api.github.com/users/alexjebens/followers","following_url":"https://api.github.com/users/alexjebens/following{/other_user}","gists_url":"https://api.github.com/users/alexjebens/gists{/gist_id}","starred_url":"https://api.github.com/users/alexjebens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexjebens/subscriptions","organizations_url":"https://api.github.com/users/alexjebens/orgs","repos_url":"https://api.github.com/users/alexjebens/repos","events_url":"https://api.github.com/users/alexjebens/events{/privacy}","received_events_url":"https://api.github.com/users/alexjebens/received_events","type":"User","site_admin":false},"html_url":"https://github.com/alexjebens/reactotron","description":"A desktop app for inspecting your React JS and React Native projects. macOS, Linux, and Windows.","fork":true,"url":"https://api.github.com/repos/alexjebens/reactotron","forks_url":"https://api.github.com/repos/alexjebens/reactotron/forks","keys_url":"https://api.github.com/repos/alexjebens/reactotron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alexjebens/reactotron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alexjebens/reactotron/teams","hooks_url":"https://api.github.com/repos/alexjebens/reactotron/hooks","issue_events_url":"https://api.github.com/repos/alexjebens/reactotron/issues/events{/number}","events_url":"https://api.github.com/repos/alexjebens/reactotron/events","assignees_url":"https://api.github.com/repos/alexjebens/reactotron/assignees{/user}","branches_url":"https://api.github.com/repos/alexjebens/reactotron/branches{/branch}","tags_url":"https://api.github.com/repos/alexjebens/reactotron/tags","blobs_url":"https://api.github.com/repos/alexjebens/reactotron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alexjebens/reactotron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alexjebens/reactotron/git/refs{/sha}","trees_url":"https://api.github.com/repos/alexjebens/reactotron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alexjebens/reactotron/statuses/{sha}","languages_url":"https://api.github.com/repos/alexjebens/reactotron/languages","stargazers_url":"https://api.github.com/repos/alexjebens/reactotron/stargazers","contributors_url":"https://api.github.com/repos/alexjebens/reactotron/contributors","subscribers_url":"https://api.github.com/repos/alexjebens/reactotron/subscribers","subscription_url":"https://api.github.com/repos/alexjebens/reactotron/subscription","commits_url":"https://api.github.com/repos/alexjebens/reactotron/commits{/sha}","git_commits_url":"https://api.github.com/repos/alexjebens/reactotron/git/commits{/sha}","comments_url":"https://api.github.com/repos/alexjebens/reactotron/comments{/number}","issue_comment_url":"https://api.github.com/repos/alexjebens/reactotron/issues/comments{/number}","contents_url":"https://api.github.com/repos/alexjebens/reactotron/contents/{+path}","compare_url":"https://api.github.com/repos/alexjebens/reactotron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alexjebens/reactotron/merges","archive_url":"https://api.github.com/repos/alexjebens/reactotron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alexjebens/reactotron/downloads","issues_url":"https://api.github.com/repos/alexjebens/reactotron/issues{/number}","pulls_url":"https://api.github.com/repos/alexjebens/reactotron/pulls{/number}","milestones_url":"https://api.github.com/repos/alexjebens/reactotron/milestones{/number}","notifications_url":"https://api.github.com/repos/alexjebens/reactotron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alexjebens/reactotron/labels{/name}","releases_url":"https://api.github.com/repos/alexjebens/reactotron/releases{/id}","deployments_url":"https://api.github.com/repos/alexjebens/reactotron/deployments","created_at":"2018-11-01T11:20:22Z","updated_at":"2018-11-02T08:33:59Z","pushed_at":"2018-11-02T08:33:57Z","git_url":"git://github.com/alexjebens/reactotron.git","ssh_url":"git@github.com:alexjebens/reactotron.git","clone_url":"https://github.com/alexjebens/reactotron.git","svn_url":"https://github.com/alexjebens/reactotron","homepage":"","size":18651,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","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":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"infinitered:master","ref":"master","sha":"f519fc97c5a6acc9533ac19ebd3910d63e183dee","user":{"login":"infinitered","id":3902527,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MDI1Mjc=","avatar_url":"https://avatars1.githubusercontent.com/u/3902527?v=4","gravatar_id":"","url":"https://api.github.com/users/infinitered","html_url":"https://github.com/infinitered","followers_url":"https://api.github.com/users/infinitered/followers","following_url":"https://api.github.com/users/infinitered/following{/other_user}","gists_url":"https://api.github.com/users/infinitered/gists{/gist_id}","starred_url":"https://api.github.com/users/infinitered/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/infinitered/subscriptions","organizations_url":"https://api.github.com/users/infinitered/orgs","repos_url":"https://api.github.com/users/infinitered/repos","events_url":"https://api.github.com/users/infinitered/events{/privacy}","received_events_url":"https://api.github.com/users/infinitered/received_events","type":"Organization","site_admin":false},"repo":{"id":56352157,"node_id":"MDEwOlJlcG9zaXRvcnk1NjM1MjE1Nw==","name":"reactotron","full_name":"infinitered/reactotron","private":false,"owner":{"login":"infinitered","id":3902527,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MDI1Mjc=","avatar_url":"https://avatars1.githubusercontent.com/u/3902527?v=4","gravatar_id":"","url":"https://api.github.com/users/infinitered","html_url":"https://github.com/infinitered","followers_url":"https://api.github.com/users/infinitered/followers","following_url":"https://api.github.com/users/infinitered/following{/other_user}","gists_url":"https://api.github.com/users/infinitered/gists{/gist_id}","starred_url":"https://api.github.com/users/infinitered/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/infinitered/subscriptions","organizations_url":"https://api.github.com/users/infinitered/orgs","repos_url":"https://api.github.com/users/infinitered/repos","events_url":"https://api.github.com/users/infinitered/events{/privacy}","received_events_url":"https://api.github.com/users/infinitered/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/infinitered/reactotron","description":"A desktop app for inspecting your React JS and React Native projects. macOS, Linux, and Windows.","fork":false,"url":"https://api.github.com/repos/infinitered/reactotron","forks_url":"https://api.github.com/repos/infinitered/reactotron/forks","keys_url":"https://api.github.com/repos/infinitered/reactotron/keys{/key_id}","collaborators_url":"https://api.github.com/repos/infinitered/reactotron/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/infinitered/reactotron/teams","hooks_url":"https://api.github.com/repos/infinitered/reactotron/hooks","issue_events_url":"https://api.github.com/repos/infinitered/reactotron/issues/events{/number}","events_url":"https://api.github.com/repos/infinitered/reactotron/events","assignees_url":"https://api.github.com/repos/infinitered/reactotron/assignees{/user}","branches_url":"https://api.github.com/repos/infinitered/reactotron/branches{/branch}","tags_url":"https://api.github.com/repos/infinitered/reactotron/tags","blobs_url":"https://api.github.com/repos/infinitered/reactotron/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/infinitered/reactotron/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/infinitered/reactotron/git/refs{/sha}","trees_url":"https://api.github.com/repos/infinitered/reactotron/git/trees{/sha}","statuses_url":"https://api.github.com/repos/infinitered/reactotron/statuses/{sha}","languages_url":"https://api.github.com/repos/infinitered/reactotron/languages","stargazers_url":"https://api.github.com/repos/infinitered/reactotron/stargazers","contributors_url":"https://api.github.com/repos/infinitered/reactotron/contributors","subscribers_url":"https://api.github.com/repos/infinitered/reactotron/subscribers","subscription_url":"https://api.github.com/repos/infinitered/reactotron/subscription","commits_url":"https://api.github.com/repos/infinitered/reactotron/commits{/sha}","git_commits_url":"https://api.github.com/repos/infinitered/reactotron/git/commits{/sha}","comments_url":"https://api.github.com/repos/infinitered/reactotron/comments{/number}","issue_comment_url":"https://api.github.com/repos/infinitered/reactotron/issues/comments{/number}","contents_url":"https://api.github.com/repos/infinitered/reactotron/contents/{+path}","compare_url":"https://api.github.com/repos/infinitered/reactotron/compare/{base}...{head}","merges_url":"https://api.github.com/repos/infinitered/reactotron/merges","archive_url":"https://api.github.com/repos/infinitered/reactotron/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/infinitered/reactotron/downloads","issues_url":"https://api.github.com/repos/infinitered/reactotron/issues{/number}","pulls_url":"https://api.github.com/repos/infinitered/reactotron/pulls{/number}","milestones_url":"https://api.github.com/repos/infinitered/reactotron/milestones{/number}","notifications_url":"https://api.github.com/repos/infinitered/reactotron/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/infinitered/reactotron/labels{/name}","releases_url":"https://api.github.com/repos/infinitered/reactotron/releases{/id}","deployments_url":"https://api.github.com/repos/infinitered/reactotron/deployments","created_at":"2016-04-15T21:58:32Z","updated_at":"2018-12-09T00:46:13Z","pushed_at":"2018-12-09T00:46:10Z","git_url":"git://github.com/infinitered/reactotron.git","ssh_url":"git@github.com:infinitered/reactotron.git","clone_url":"https://github.com/infinitered/reactotron.git","svn_url":"https://github.com/infinitered/reactotron","homepage":"","size":19021,"stargazers_count":9387,"watchers_count":9387,"language":"JavaScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":501,"mirror_url":null,"archived":false,"open_issues_count":50,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":501,"open_issues":50,"watchers":9387,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/infinitered/reactotron/pulls/875"},"html":{"href":"https://github.com/infinitered/reactotron/pull/875"},"issue":{"href":"https://api.github.com/repos/infinitered/reactotron/issues/875"},"comments":{"href":"https://api.github.com/repos/infinitered/reactotron/issues/875/comments"},"review_comments":{"href":"https://api.github.com/repos/infinitered/reactotron/pulls/875/comments"},"review_comment":{"href":"https://api.github.com/repos/infinitered/reactotron/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/infinitered/reactotron/pulls/875/commits"},"statuses":{"href":"https://api.github.com/repos/infinitered/reactotron/statuses/5995a2a2bb832926429652c2dad7ebe43ae06060"}},"author_association":"NONE","merged":false,"mergeable":false,"rebaseable":false,"mergeable_state":"dirty","merged_by":null,"comments":2,"review_comments":2,"maintainer_can_modify":false,"commits":1,"additions":14,"deletions":3,"changed_files":1}}
{"actor":{"display_login":"rmevans9"}}