Я пытаюсь сделать расширение для Chrome, чтобы автоматизировать / облегчить выполнение нескольких задач. Одна вещь, которую мы регулярно должны делать, - это входить в модемы клиентов с посеянным паролем Arris. Я смог загрузить текстовый файл, содержащий пароль дня, отсортированный по дате, и получить пароль, соответствующий текущей дате, но сейчас нам нужно вручную открыть сетевой диск, найти файл, найти текущая дата (каждый потд за год генерируется и разбивается на 4 файла по 3-месячным группам), а затем копируется и вставляется. Не является массовым неудобством, но я бы хотел вставить его в поле пароля автоматически, если это возможно.
manifest.json
{
"name": "Web Kit",
"version": "0.1",
"description": "Modifications for web-based tools",
"permissions": ["storage", "activeTab"],
"content_scripts": [
{
"matches": ["http://example.com"],
"css": ["tickets.css"],
"js": ["tickets.js"]
},
{
"matches": ["https://example.com"],
"js": ["iglass.js"]
},
{
"matches": ["https://example.com/*"],
"css": ["iglass.css"]
},
{
"matches": ["<all_urls>"],
"js": ["gateway.js"]
},
{
"matches": ["file:///*"],
"js": ["potd.js"]
}
],
"web_accessible_resources": [
"file:///home/shea/potd.txt"
],
"manifest_version": 2
}
gateway.js
Этот сценарий проверяет, что домен соответствует диапазону частных IP-адресов класса A, и соответственно заполняет некоторую информацию.
var user = "technician";
var potd;
var site = location.hostname;
var regex = new RegExp("(10)(\.([2]([0-5][0-5]|[01234][6-9])|[1][0-9][0-9]|[1-9][0-9]|[0-9])){3}");
var match = site.match(regex);
if (match != null) {
document.getElementById("username").value = user;
document.getElementById("password").value = potd;
}
else {
console.log("Not a gateway login.")
}
potd.js
Этот файл анализирует файл potd.txt на строку, в которой первые 8 символов соответствуют текущей дате, а затем получает последние 10 для пароля дня.
// We can load all the POTD files as an array and check them one at a time
// if (location == file) can be nested in a for loop where file is then file[i]
file = "file:///home/shea/potd.txt";
var date = new Date();
var month = (date.getMonth() + 1).toString();
if (month.length < 2) {
month = "0" + month;
}
var day = date.getDate().toString();
if (day.length < 2) {
day = "0" + day;
}
var year = (date.getFullYear().toString()).slice(-2);
var dateStr = month + "/" + day + "/" + year;
if (location == file) {
var content = new XMLSerializer().serializeToString(document);
var lines = content.split('\n');
for (var i = 2; i < 10; i++) {
var potd = lines[i].substr(10);
if (lines[i].substr(0, 8) == dateStr) {
alert(potd);
if (!potd) {
console.log("Something went wrong, no POTD stored...");
}
else {
chrome.storage.sync.set({'date': dateStr}, function() {
console.log('Setting saved');
});
chrome.storage.sync.set({'potd': potd}, function() {
console.log('Setting 2 saved');
});
}
}
}
}
else {
console.log("Not the potd file");
}
Вы можете видеть, где я пытался использовать chrome.storage.sync
, но, честно говоря, я не до конца понимаю и не могу заставить его работать.
TL; DR Я хочу взять строку из текстового файла potd.txt
и вставить ее в текстовое поле в http://10.*.*.*
У меня такое ощущение, что это может не сработать, потому что эти файлы не в одном домене, но я подумал, что если кто-то может мне помочь, ТАК может.