diff --git a/extension/background.js b/extension/background.js index d333dc5..807ebad 100644 --- a/extension/background.js +++ b/extension/background.js @@ -133,6 +133,44 @@ async function subscribeLink(toSubscribe) { } +function buildCookieLine(cookie) { + return [ + cookie.domain, + cookie.hostOnly.toString().toUpperCase(), + cookie.path, + cookie.httpOnly.toString().toUpperCase(), + cookie.expirationDate, + cookie.name, + cookie.value, + ].join("\t"); +} + + +async function sendCookies() { + console.log("function sendCookies"); + + let cookieStores = await browserType.cookies.getAllCookieStores(); + var cookieLines = [ + "# Netscape HTTP Cookie File\n", + "# https://curl.haxx.se/rfc/cookie_spec.html\n", + "# This is a generated file! Do not edit.\n\n" + ]; + for (let i = 0; i < cookieStores.length; i++) { + const cookieStore = cookieStores[i]; + var allCookiesStore = await browserType.cookies.getAll({ + domain: ".youtube.com", + storeId: cookieStore["id"] + }); + for (let j = 0; j < allCookiesStore.length; j++) { + const cookie = allCookiesStore[j]; + cookieLines.push(buildCookieLine(cookie)); + } + } + console.log(cookieLines.join("\n")); + +} + + // process and return message if needed function handleMessage(request, sender, sendResponse) { @@ -155,6 +193,9 @@ function handleMessage(request, sender, sendResponse) { response.then(message => { sendResponse(message) }) + } else if (request.cookie) { + console.log("backgound: " + JSON.stringify(request)); + let response = sendCookies(); } return true; diff --git a/extension/index.html b/extension/index.html index 26ee343..f82d66e 100644 --- a/extension/index.html +++ b/extension/index.html @@ -29,6 +29,10 @@
+
+
diff --git a/extension/manifest-chrome.json b/extension/manifest-chrome.json index 4e2f423..a85e40a 100644 --- a/extension/manifest-chrome.json +++ b/extension/manifest-chrome.json @@ -11,7 +11,11 @@ "default_popup": "index.html" }, "permissions": [ - "storage" + "storage", + "cookies" + ], + "host_permissions": [ + "*://*/*" ], "content_scripts": [ { diff --git a/extension/manifest-firefox.json b/extension/manifest-firefox.json index 1996cf9..b848509 100644 --- a/extension/manifest-firefox.json +++ b/extension/manifest-firefox.json @@ -11,7 +11,9 @@ "default_popup": "index.html" }, "permissions": [ - "storage" + "storage", + "cookies", + "*://*/*" ], "content_scripts": [ { diff --git a/extension/popup.js b/extension/popup.js index 7043bfe..0c6e675 100644 --- a/extension/popup.js +++ b/extension/popup.js @@ -41,6 +41,28 @@ document.getElementById("status-icon").addEventListener("click", function() { }) +// send cookie +document.getElementById("send-cookies").addEventListener("click", function() { + sendCookie(); +}) + + +function sendCookie() { + console.log("popup send cookie"); + + function handleResponse(message) { + console.log("handle cookie response: " + message); + } + + function handleError(error) { + console.log(`Error: ${error}`); + } + + let sending = browserType.runtime.sendMessage({"cookie": true}); + sending.then(handleResponse, handleError); +} + + // send ping message to TA backend function pingBackend() { diff --git a/extension/style.css b/extension/style.css index 5da5b34..d68df8c 100644 --- a/extension/style.css +++ b/extension/style.css @@ -43,13 +43,15 @@ hr { .login-form input { margin: 3px 0; } -.submit { +.submit, +.cookie { display: flex; align-items: center; justify-content: center; } .submit button, -.youtube-page button { +.youtube-page button, +.cookie button { margin: 10px; border-radius: 0; padding: 5px 13px;