Внедрены новые функции

Этот коммит содержится в:
Глеб Иваницкий 2024-12-20 00:15:39 +03:00
родитель 0d5182c3d9
Коммит 6e784ebc66
4 изменённых файлов: 105 добавлений и 3 удалений

67
content-script.js Обычный файл
Просмотреть файл

@ -0,0 +1,67 @@
const corpExtensionLog = (message) => console.log(`corp-tularegion-extension: ${message}`)
let copyInterval
window.addEventListener('load', () => {
chrome.storage.local.get([
'redirectMode',
'copyMode',
'autoAuthMode',
]).then((data) => {
corpExtensionLog(Object.entries(data).map((x) => `${x[0]}=${x[1]}`).join('; '))
// initCopyMode(data.copyMode)
initAutoAuthMode(data.autoAuthMode)
// chrome.storage.onChanged.addListener((changes) => {
// if (changes.copyMode)
// initCopyMode(changes.copyMode.newValue)
// })
})
})
const initCopyMode = (value) => {
if (copyInterval)
clearInterval(copyInterval)
console.log(value)
switch (value) {
case 1:
setCopyInterval(/corp\.tularegion\.(ru)/gis, 'local')
break
case 2:
setCopyInterval(/corp\.tularegion\.(local)/gis, 'ru')
break
}
}
const initAutoAuthMode = (value) => {
if (!value) return
const loginField = document.querySelector('input[name="USER_LOGIN"]')
const passwordField = document.querySelector('input[name="USER_PASSWORD"]')
const rememberCheckbox = document.querySelector('input[name="USER_REMEMBER"]')
const authButton = document.querySelector('input.login-btn[type="submit"]')
if (loginField && passwordField && rememberCheckbox && authButton) {
chrome.storage.local.get([
'autoAuthLogin',
'autoAuthPassword',
]).then((data) => {
loginField.value = data.autoAuthLogin
passwordField.value = data.autoAuthPassword
rememberCheckbox.checked = true
// authButton.dispatchEvent(new Event('click'))
})
}
}
const setCopyInterval = (from, to) => {
copyInterval = setInterval(
() => {
navigator.clipboard.readText()
.then(text => {
console.log(text.replaceAll(from, (match, tld) => match.replace(tld, to)))
})
.catch()
},
1000,
)
}

Просмотреть файл

@ -1,6 +1,6 @@
{ {
"manifest_version": 3, "manifest_version": 3,
"name": "Переадресация Корпоративного портала", "name": "Корпоративный портал",
"version": "1.0", "version": "1.0",
"icons": { "icons": {
"16": "/icons/16x16.png", "16": "/icons/16x16.png",
@ -15,8 +15,19 @@
"*://corp.tularegion.local/*", "*://corp.tularegion.local/*",
"*://corp.tularegion.ru/*" "*://corp.tularegion.ru/*"
], ],
"content_scripts": [
{
"matches": [
"*://corp.tularegion.local/*",
"*://corp.tularegion.ru/*"
],
"js": [
"/content-script.js"
]
}
],
"background": { "background": {
"service_worker": "/background.js" "service_worker": "/service_worker.js"
}, },
"action": { "action": {
"default_popup": "/public/index.html" "default_popup": "/public/index.html"
@ -32,5 +43,8 @@
}, },
"content_security_policy": { "content_security_policy": {
"extension_pages": "default-src 'self'; script-src 'self' 'wasm-unsafe-eval'" "extension_pages": "default-src 'self'; script-src 'self' 'wasm-unsafe-eval'"
},
"storage": {
"managed_schema": "/storage_schema.json"
} }
} }

Просмотреть файл

@ -9,7 +9,8 @@ chrome.runtime.onInstalled.addListener(() => {
}) })
chrome.storage.onChanged.addListener((changes) => { chrome.storage.onChanged.addListener((changes) => {
if (changes.redirectMode) updateRules(changes.redirectMode.newValue) if (changes.redirectMode)
updateRules(changes.redirectMode.newValue)
}) })
const updateRules = (mode) => { const updateRules = (mode) => {

20
storage_schema.json Обычный файл
Просмотреть файл

@ -0,0 +1,20 @@
{
"type": "object",
"properties": {
"redirectMode": {
"type": "integer"
},
"copyMode": {
"type": "integer"
},
"autoAuthMode": {
"type": "boolean"
},
"autoAuthLogin": {
"type": "string"
},
"autoAuthPassword": {
"type": "string"
}
}
}