diff --git a/README.md b/README.md index 4e61f7b..f077492 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,8 @@ $ ./bin/shaaaaaaaaaaaaa bad-domain } ``` +##Shaaaaaaaaaaaaa Chrome Extension +Version one. [Available on Chrome Web Store](https://chrome.google.com/webstore/detail/check-ssl/adlogjmkkcancjpododcnjndnmkooghi) for download. ## Author diff --git a/chrome-extension/app.js b/chrome-extension/app.js new file mode 100644 index 0000000..d7088d1 --- /dev/null +++ b/chrome-extension/app.js @@ -0,0 +1,39 @@ +function formatURL() { + var currURL = window.location.host; + var url = currURL; + // remove 'www' + if (currURL.indexOf("www") >= 0){ + url = currURL.split("www.")[1]; + } + // remove any path after web address + if(window.location.pathname !== "/") { + var pathname = window.location.pathname; + url = url.split(pathname)[0]; + } + return url; +} + +function sendRequest(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", ("https://shaaaaaaaaaaaaa.com/api/check/" + url), true); + xhr.onreadystatechange = function() { + if (xhr.readyState == 4) { + var resp = JSON.parse(xhr.responseText); + var diagnosis = resp.diagnosis; + switch (diagnosis) { + case "good": + chrome.runtime.sendMessage({diagnosis: "good"}); + break; + case "almost": + chrome.runtime.sendMessage({diagnosis: "almost"}); + break; + case "bad": + chrome.runtime.sendMessage({diagnosis: "bad"}); + break; + } + } + } + xhr.send(); +} + +sendRequest(formatURL()); diff --git a/chrome-extension/background.js b/chrome-extension/background.js new file mode 100644 index 0000000..b3db9e9 --- /dev/null +++ b/chrome-extension/background.js @@ -0,0 +1,27 @@ +//listens for tab change +chrome.tabs.onActivated.addListener(function() { + chrome.browserAction.setBadgeBackgroundColor({color: [255,0,0,255]}); + chrome.tabs.executeScript({file: "app.js"}, function() { + //on error - log error message and set badge to transparent + if (chrome.runtime.lastError) { + chrome.browserAction.setBadgeBackgroundColor({color: [0,0,0,0]}); + chrome.browserAction.setBadgeText({text: ""}); + console.error(chrome.runtime.lastError.message); + } + }); +}); + + +chrome.runtime.onMessage.addListener( + function(request, sender) { + //log diagnosis to badge + if (request.diagnosis == "bad") { + chrome.browserAction.setBadgeText({text: "bad"}); + } + if (request.diagnosis == "almost") { + chrome.browserAction.setBadgeText({text: "almost"}); + } + if (request.diagnosis == "good") { + chrome.browserAction.setBadgeText({text: "good"}); + } +}); \ No newline at end of file diff --git a/chrome-extension/icon.png b/chrome-extension/icon.png new file mode 100644 index 0000000..bd1dd9f Binary files /dev/null and b/chrome-extension/icon.png differ diff --git a/chrome-extension/manifest.json b/chrome-extension/manifest.json new file mode 100644 index 0000000..e0f4935 --- /dev/null +++ b/chrome-extension/manifest.json @@ -0,0 +1,27 @@ +{ + "manifest_version": 2, + "name": "Shaaaaaaaaaaaaa Chrome Extension", + "short_name": "Check SSL", + "description": "Checks if websites have weak SHA-1 SSL certificates.", + "version": "1.0", + "permissions": [ + "https://*/", + "http://*/", + "https://shaaaaaaaaaaaaa.com/api/check/*", + "tabs" + ], + "content_scripts": [ + { + "matches": ["*://*/*"], + "js": ["app.js"] + } + ], + "background": { + "scripts": ["background.js"], + "persistent": false + }, + "browser_action": { + "default_icon": "icon.png" + }, + "web_accessible_resources": ["https://shaaaaaaaaaaaaa.com/api/check/*"] +} \ No newline at end of file