{"action":"opened","number":504,"pull_request":{"url":"https://api.github.com/repos/floodlight/floodlight/pulls/504","id":31207292,"html_url":"https://github.com/floodlight/floodlight/pull/504","diff_url":"https://github.com/floodlight/floodlight/pull/504.diff","patch_url":"https://github.com/floodlight/floodlight/pull/504.patch","issue_url":"https://api.github.com/repos/floodlight/floodlight/issues/504","number":504,"state":"open","locked":false,"title":"HTTPS Support for the REST API","user":{"login":"rizard","id":4602945,"avatar_url":"https://avatars.githubusercontent.com/u/4602945?v=3","gravatar_id":"","url":"https://api.github.com/users/rizard","html_url":"https://github.com/rizard","followers_url":"https://api.github.com/users/rizard/followers","following_url":"https://api.github.com/users/rizard/following{/other_user}","gists_url":"https://api.github.com/users/rizard/gists{/gist_id}","starred_url":"https://api.github.com/users/rizard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rizard/subscriptions","organizations_url":"https://api.github.com/users/rizard/orgs","repos_url":"https://api.github.com/users/rizard/repos","events_url":"https://api.github.com/users/rizard/events{/privacy}","received_events_url":"https://api.github.com/users/rizard/received_events","type":"User","site_admin":false},"body":"Updated Restlet from 2.2M3 to 2.3.1. Included with the library update is full HTTPS support for the REST API, either all-access+encryption or restricted-access+encryption (truststore verified clients only). Additional options have been added to floodlightdefault.properties in order to turn HTTPS on/off. HTTPS can be used in conjunction with vanilla HTTP as well -- each must reside on a different TCP port though. Also, this time, I remembered to update and test the build.xml file to remove the old and include the new Restlet jars.\r\n\r\nHow to configure the new REST API from floodlightdefault.properties:\r\n\r\nnet.floodlightcontroller.restserver.RestApiServer.keyStorePath=/path/to/your/keystore-file.jks\r\nnet.floodlightcontroller.restserver.RestApiServer.keyStorePassword=your-keystore-password\r\nnet.floodlightcontroller.restserver.RestApiServer.httpsNeedClientAuthentication=NO\r\nnet.floodlightcontroller.restserver.RestApiServer.useHttps=NO\r\nnet.floodlightcontroller.restserver.RestApiServer.useHttp=YES\r\nnet.floodlightcontroller.restserver.RestApiServer.httpsPort=8081\r\nnet.floodlightcontroller.restserver.RestApiServer.httpPort=8080\r\n\r\n1) HTTP and HTTPS, if used in parallel, must be on separate ports (e.g. 8080 and 8081, respectively, as shown above).\r\n\r\n2) The keystore must be JKS format, the keys in the keystore must have the same password as the keystore itself. The keystore is assumed the same as the truststore (if applicable).\r\n\r\n3) httpsNeedClientAuthentication determines the access mode of the HTTPS server. If is is set to either (case-insensitive) \"YES\", \"TRUE\", \"YEP\", \"JA\", \"STIMMT\", then a client will only be able to use the HTTPS REST API if it has its certificate in the truststore (same as keystore). If any other string is specified to httpsNeedClientAuthentication or it is not specified, all clients will be granted access to the HTTPS REST API. In short, client authentication provides an added layer of trust/security on top of the encryption, which is handy if you want to only allow certain folks to use the HTTPS REST API.\r\n\r\nLimitation: The keystore and the truststore are assumed the same store/password. This can be changed easily with more configuration file options.","created_at":"2015-03-15T21:07:15Z","updated_at":"2015-03-15T21:07:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/floodlight/floodlight/pulls/504/commits","review_comments_url":"https://api.github.com/repos/floodlight/floodlight/pulls/504/comments","review_comment_url":"https://api.github.com/repos/floodlight/floodlight/pulls/comments{/number}","comments_url":"https://api.github.com/repos/floodlight/floodlight/issues/504/comments","statuses_url":"https://api.github.com/repos/floodlight/floodlight/statuses/2dc310891deb127fdcc8d39f36cebe4ac490c13d","head":{"label":"rizard:v1.0","ref":"v1.0","sha":"2dc310891deb127fdcc8d39f36cebe4ac490c13d","user":{"login":"rizard","id":4602945,"avatar_url":"https://avatars.githubusercontent.com/u/4602945?v=3","gravatar_id":"","url":"https://api.github.com/users/rizard","html_url":"https://github.com/rizard","followers_url":"https://api.github.com/users/rizard/followers","following_url":"https://api.github.com/users/rizard/following{/other_user}","gists_url":"https://api.github.com/users/rizard/gists{/gist_id}","starred_url":"https://api.github.com/users/rizard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rizard/subscriptions","organizations_url":"https://api.github.com/users/rizard/orgs","repos_url":"https://api.github.com/users/rizard/repos","events_url":"https://api.github.com/users/rizard/events{/privacy}","received_events_url":"https://api.github.com/users/rizard/received_events","type":"User","site_admin":false},"repo":{"id":20980060,"name":"floodlight","full_name":"rizard/floodlight","owner":{"login":"rizard","id":4602945,"avatar_url":"https://avatars.githubusercontent.com/u/4602945?v=3","gravatar_id":"","url":"https://api.github.com/users/rizard","html_url":"https://github.com/rizard","followers_url":"https://api.github.com/users/rizard/followers","following_url":"https://api.github.com/users/rizard/following{/other_user}","gists_url":"https://api.github.com/users/rizard/gists{/gist_id}","starred_url":"https://api.github.com/users/rizard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rizard/subscriptions","organizations_url":"https://api.github.com/users/rizard/orgs","repos_url":"https://api.github.com/users/rizard/repos","events_url":"https://api.github.com/users/rizard/events{/privacy}","received_events_url":"https://api.github.com/users/rizard/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rizard/floodlight","description":"Floodlight SDN OpenFlow Controller","fork":true,"url":"https://api.github.com/repos/rizard/floodlight","forks_url":"https://api.github.com/repos/rizard/floodlight/forks","keys_url":"https://api.github.com/repos/rizard/floodlight/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rizard/floodlight/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rizard/floodlight/teams","hooks_url":"https://api.github.com/repos/rizard/floodlight/hooks","issue_events_url":"https://api.github.com/repos/rizard/floodlight/issues/events{/number}","events_url":"https://api.github.com/repos/rizard/floodlight/events","assignees_url":"https://api.github.com/repos/rizard/floodlight/assignees{/user}","branches_url":"https://api.github.com/repos/rizard/floodlight/branches{/branch}","tags_url":"https://api.github.com/repos/rizard/floodlight/tags","blobs_url":"https://api.github.com/repos/rizard/floodlight/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rizard/floodlight/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rizard/floodlight/git/refs{/sha}","trees_url":"https://api.github.com/repos/rizard/floodlight/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rizard/floodlight/statuses/{sha}","languages_url":"https://api.github.com/repos/rizard/floodlight/languages","stargazers_url":"https://api.github.com/repos/rizard/floodlight/stargazers","contributors_url":"https://api.github.com/repos/rizard/floodlight/contributors","subscribers_url":"https://api.github.com/repos/rizard/floodlight/subscribers","subscription_url":"https://api.github.com/repos/rizard/floodlight/subscription","commits_url":"https://api.github.com/repos/rizard/floodlight/commits{/sha}","git_commits_url":"https://api.github.com/repos/rizard/floodlight/git/commits{/sha}","comments_url":"https://api.github.com/repos/rizard/floodlight/comments{/number}","issue_comment_url":"https://api.github.com/repos/rizard/floodlight/issues/comments{/number}","contents_url":"https://api.github.com/repos/rizard/floodlight/contents/{+path}","compare_url":"https://api.github.com/repos/rizard/floodlight/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rizard/floodlight/merges","archive_url":"https://api.github.com/repos/rizard/floodlight/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rizard/floodlight/downloads","issues_url":"https://api.github.com/repos/rizard/floodlight/issues{/number}","pulls_url":"https://api.github.com/repos/rizard/floodlight/pulls{/number}","milestones_url":"https://api.github.com/repos/rizard/floodlight/milestones{/number}","notifications_url":"https://api.github.com/repos/rizard/floodlight/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rizard/floodlight/labels{/name}","releases_url":"https://api.github.com/repos/rizard/floodlight/releases{/id}","created_at":"2014-06-18T22:24:07Z","updated_at":"2015-01-02T07:03:21Z","pushed_at":"2015-03-15T20:54:47Z","git_url":"git://github.com/rizard/floodlight.git","ssh_url":"git@github.com:rizard/floodlight.git","clone_url":"https://github.com/rizard/floodlight.git","svn_url":"https://github.com/rizard/floodlight","homepage":"www.projectfloodlight.org","size":80265,"stargazers_count":2,"watchers_count":2,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":1,"forks":3,"open_issues":1,"watchers":2,"default_branch":"master"}},"base":{"label":"floodlight:master","ref":"master","sha":"b09f60c5aac6a9b7cdf7c359d10b2d0e47835040","user":{"login":"floodlight","id":1198172,"avatar_url":"https://avatars.githubusercontent.com/u/1198172?v=3","gravatar_id":"","url":"https://api.github.com/users/floodlight","html_url":"https://github.com/floodlight","followers_url":"https://api.github.com/users/floodlight/followers","following_url":"https://api.github.com/users/floodlight/following{/other_user}","gists_url":"https://api.github.com/users/floodlight/gists{/gist_id}","starred_url":"https://api.github.com/users/floodlight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/floodlight/subscriptions","organizations_url":"https://api.github.com/users/floodlight/orgs","repos_url":"https://api.github.com/users/floodlight/repos","events_url":"https://api.github.com/users/floodlight/events{/privacy}","received_events_url":"https://api.github.com/users/floodlight/received_events","type":"Organization","site_admin":false},"repo":{"id":2784643,"name":"floodlight","full_name":"floodlight/floodlight","owner":{"login":"floodlight","id":1198172,"avatar_url":"https://avatars.githubusercontent.com/u/1198172?v=3","gravatar_id":"","url":"https://api.github.com/users/floodlight","html_url":"https://github.com/floodlight","followers_url":"https://api.github.com/users/floodlight/followers","following_url":"https://api.github.com/users/floodlight/following{/other_user}","gists_url":"https://api.github.com/users/floodlight/gists{/gist_id}","starred_url":"https://api.github.com/users/floodlight/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/floodlight/subscriptions","organizations_url":"https://api.github.com/users/floodlight/orgs","repos_url":"https://api.github.com/users/floodlight/repos","events_url":"https://api.github.com/users/floodlight/events{/privacy}","received_events_url":"https://api.github.com/users/floodlight/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/floodlight/floodlight","description":"Floodlight SDN OpenFlow Controller","fork":false,"url":"https://api.github.com/repos/floodlight/floodlight","forks_url":"https://api.github.com/repos/floodlight/floodlight/forks","keys_url":"https://api.github.com/repos/floodlight/floodlight/keys{/key_id}","collaborators_url":"https://api.github.com/repos/floodlight/floodlight/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/floodlight/floodlight/teams","hooks_url":"https://api.github.com/repos/floodlight/floodlight/hooks","issue_events_url":"https://api.github.com/repos/floodlight/floodlight/issues/events{/number}","events_url":"https://api.github.com/repos/floodlight/floodlight/events","assignees_url":"https://api.github.com/repos/floodlight/floodlight/assignees{/user}","branches_url":"https://api.github.com/repos/floodlight/floodlight/branches{/branch}","tags_url":"https://api.github.com/repos/floodlight/floodlight/tags","blobs_url":"https://api.github.com/repos/floodlight/floodlight/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/floodlight/floodlight/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/floodlight/floodlight/git/refs{/sha}","trees_url":"https://api.github.com/repos/floodlight/floodlight/git/trees{/sha}","statuses_url":"https://api.github.com/repos/floodlight/floodlight/statuses/{sha}","languages_url":"https://api.github.com/repos/floodlight/floodlight/languages","stargazers_url":"https://api.github.com/repos/floodlight/floodlight/stargazers","contributors_url":"https://api.github.com/repos/floodlight/floodlight/contributors","subscribers_url":"https://api.github.com/repos/floodlight/floodlight/subscribers","subscription_url":"https://api.github.com/repos/floodlight/floodlight/subscription","commits_url":"https://api.github.com/repos/floodlight/floodlight/commits{/sha}","git_commits_url":"https://api.github.com/repos/floodlight/floodlight/git/commits{/sha}","comments_url":"https://api.github.com/repos/floodlight/floodlight/comments{/number}","issue_comment_url":"https://api.github.com/repos/floodlight/floodlight/issues/comments{/number}","contents_url":"https://api.github.com/repos/floodlight/floodlight/contents/{+path}","compare_url":"https://api.github.com/repos/floodlight/floodlight/compare/{base}...{head}","merges_url":"https://api.github.com/repos/floodlight/floodlight/merges","archive_url":"https://api.github.com/repos/floodlight/floodlight/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/floodlight/floodlight/downloads","issues_url":"https://api.github.com/repos/floodlight/floodlight/issues{/number}","pulls_url":"https://api.github.com/repos/floodlight/floodlight/pulls{/number}","milestones_url":"https://api.github.com/repos/floodlight/floodlight/milestones{/number}","notifications_url":"https://api.github.com/repos/floodlight/floodlight/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/floodlight/floodlight/labels{/name}","releases_url":"https://api.github.com/repos/floodlight/floodlight/releases{/id}","created_at":"2011-11-16T00:58:20Z","updated_at":"2015-03-15T17:31:57Z","pushed_at":"2015-03-15T17:31:55Z","git_url":"git://github.com/floodlight/floodlight.git","ssh_url":"git@github.com:floodlight/floodlight.git","clone_url":"https://github.com/floodlight/floodlight.git","svn_url":"https://github.com/floodlight/floodlight","homepage":"www.projectfloodlight.org","size":85499,"stargazers_count":242,"watchers_count":242,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":244,"mirror_url":null,"open_issues_count":11,"forks":244,"open_issues":11,"watchers":242,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/floodlight/floodlight/pulls/504"},"html":{"href":"https://github.com/floodlight/floodlight/pull/504"},"issue":{"href":"https://api.github.com/repos/floodlight/floodlight/issues/504"},"comments":{"href":"https://api.github.com/repos/floodlight/floodlight/issues/504/comments"},"review_comments":{"href":"https://api.github.com/repos/floodlight/floodlight/pulls/504/comments"},"review_comment":{"href":"https://api.github.com/repos/floodlight/floodlight/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/floodlight/floodlight/pulls/504/commits"},"statuses":{"href":"https://api.github.com/repos/floodlight/floodlight/statuses/2dc310891deb127fdcc8d39f36cebe4ac490c13d"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":302,"deletions":181,"changed_files":15}}