тысяча извинений если не в соответствующий топ пишу.
симанки 2.49.3, CB версии 0.0.5.8.9.3.
-----------по совету человека с форума сразу опишу что нужно--------------------
требуется кнопка
кнопка ОТЖАТА (по умолчанию) - используется системный прокси (настройки из интернет екплорера)
кнопка НАЖАТА - используется socks5 прокси 192.168.0.15 :9051
запоминать статус после перезапуска не требуется. (при повторном запуске КНОПКА СНОВА ОТЖАТА)
---------------------------
Отредактировано ds(ds) (05-06-2018 20:28:33)
Отсутствует
bunda1 - просьба сделать авто-включение Proxy, если открыт какой-либо адрес из списка.
Пример: открываю запрещённый сайт: rutracker.org, flibusta.is и прочие, забаненные провайдером… (открываю из закладок или about:newtab)
Нужно: автоматически при совпадении адреса из списка включить режим: «URL автоматической настройки»
(и переоткрыть страницу, если нельзя заранее перехватить переход по адресу из списка)
Заранее спасибо!
Отредактировано Dobrov (13-09-2018 10:29:52)
Отсутствует
Добрый день. Просьба починить старый код кнопки, под FF60.0 ESR . С тройной функцией кнопки 1-"Без прокси" , 2-"Ручная настройка прокси", 3-"URL автоматической настройки прокси" .
Вторая просьба, доработать кнопку Proxy, Версия: от 13.05.2019. , чтобы переключение происходило не на "Ручная настройка прокси" а на "URL автоматической настройки прокси" тоже под FF60.0 ESR .
Заранее спасибо.
// Proxy, от 25.02.2016. // Настройка функций кликов мыши для кнопки ................... this.onmousedown =e=> { this.onmouseup =e=>{ // левый клик if ( e.button ) return; clearTimeout(self.timer); switch( cbu.getPrefs("network.proxy.type") ) { case 0: var data = 1; break; case 1: var data = 2; break; case 2: var data = 0; break; default: var data = 0; } cbu.setPrefs("network.proxy.type", data); } if ( e.button == 0 ) // длинный левый клик self.timer = setTimeout(()=>{ self.onmouseup = ''; cbu.getPrefs("CB.Proxy.connectionsInTab") ? openConnectionsInTab() : openConnections(); }, 500); if ( e.button == 2 ) // правый клик menuPopup.showPopup(self, -1, -1, "popup", "bottomleft", "topleft"); }; self.onclick =e=> e.preventDefault(); // Подсказка для кнопки ................... this.onmouseover =()=> { this.tooltipText = "Proxy \nЛ: Переключить прокси \nДЛ: Открыть настройки прокси" + "\nП: Mеню кнопки \n\nТекущие настройки прокси: " + "\nIP: " + Services.prefs.getComplexValue("network.proxy.http", Ci.nsISupportsString).data + "\nПорт: "+ cbu.getPrefs("network.proxy.http_port"); }; // Создать меню для кнопки ................... var array = [ { label: "Добавление прокси в контекстом меню", value: 'CB.Proxy.inContextMenu' }, { label: "Открывать настройки прокси как вкладку", value: 'CB.Proxy.connectionsInTab' }, { label: "Переключать на режим 'Без прокси' при закрытии браузера ", value: 'CB.Proxy.reset' } ]; var menuPopup = document.getElementById('mainPopupSet').appendChild(document.createElement("menupopup")); array.forEach((m)=> { var mItem = document.createElement("menuitem"); mItem.setAttribute("label", m.label); mItem.setAttribute('type', 'checkbox'); mItem.setAttribute('checked', cbu.getPrefs(m.value) ); mItem.onclick =()=> cbu.setPrefs(m.value, !cbu.getPrefs(m.value)); menuPopup.appendChild(mItem); }); addDestructor(()=> menuPopup.remove() ); // добавить стандартное контекстное меню menuPopup.appendChild(document.createElement("menuseparator")); menuPopup.appendChild(document.createElement("menu")).setAttribute("label", "Меню кнопки"); var clone = menuPopup.lastChild.appendChild(document.getElementById("custombuttons-contextpopup").cloneNode(true)); clone.setAttribute("onpopupshowing", "document.popupNode = document.getElementById('" + _id + "')"); // Функция открывает настройки прокси в окне ................... function openConnections() { for ( var win, nm = Services.wm.getEnumerator(null); win = nm.getNext(); ) if ( win.name == 'Proxy') { win.focus(); break; } var win = openDialog("chrome://browser/content/preferences/connection.xul", "Proxy", "centerscreen"); // добавить атрибут "prefwindow" win.addEventListener("load", function f(e) { this.removeEventListener("load", f, true); e.target.documentElement.setAttribute("type", "prefwindow"); }, true ); // закрыть настройки прокси по клику на странице gBrowser.addEventListener("click", function c() { this.removeEventListener("click", c ); try { win.close() } catch(e) {}; }, true ); }; // Функция открывает настройки прокси в вкладке ................... function openConnectionsInTab() { var connections = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("chrome://browser/content/preferences/connection.xul") ); // oбработчик ждет пока откроется прокси, удаляет себя и добавляет атрибут connections.addEventListener("pageshow", function c(e) { this.removeEventListener(e.type, c); e.originalTarget.documentElement.setAttribute("type", "prefwindow"); }) }; // Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ................... var s = "network.proxy.type"; function toggleImage() { var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon"); switch( cbu.getPrefs(s) ) { case 0: icon.src = self.image; break; case 1: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='; break; case 2: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE='; break; default:icon.src = self.image; } }; toggleImage(); gPrefService.addObserver(s, toggleImage, false); addDestructor(()=> gPrefService.removeObserver(s, toggleImage) ); // Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ................... var switchOffProxy = { observe: function(subject, topic, data) { if ( data == "shutdown" && cbu.getPrefs("CB.Proxy.reset") ) cbu.setPrefs("network.proxy.type", 0); } }; Services.obs.addObserver(switchOffProxy, "quit-application", false); // Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ................... ((contextMenu)=> { // создать новый пункт меню var menuitem = contextMenu.appendChild( document.createElement("menuitem") ); menuitem.setAttribute("label", "Добавить прокси"); menuitem.setAttribute("class", "menuitem-iconic"); menuitem.setAttribute("image", self.image); menuitem.onclick =()=> addNewProxy(); addDestructor(()=> menuitem.remove() ); // устанавливаем где показывать пункт меню addEventListener("popupshowing", ()=>{ menuitem.hidden = !cbu.getPrefs("CB.Proxy.inContextMenu") || !gContextMenu.isContentSelected; // !gContextMenu.isTextSelected; }, false, contextMenu); // добавление прокси function addNewProxy(sel) { var selection = document.commandDispatcher.focusedWindow.getSelection().toString(); var sel = ( sel == undefined ) ? selection : sel.toString(); sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки // если только порт ... if ( sel.length < 6 && isFinite(sel) ) { sel = sel.replace(/:/g, ""); var lab = 'порт'; cbu.setPrefs("network.proxy.http_port", +sel); } // если только адрес ... if ( sel.length > 5 && !/:/.test(sel) && sel.split(".").length == 4 ) { var lab = 'адрес'; cbu.setPrefs("network.proxy.http", convertFromUnicode("UTF-8", sel)); } // если адрес и порт ... if ( sel.length > 5 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) { var lab = 'адрес и порт'; var array = sel.split(":"); array.forEach((str)=> addNewProxy(str) ); } if ( lab == undefined ) return; // всплывающая подсказка рядом с выделенным текстом ... function showTooltip() { var tooltip = gBrowser.appendChild( document.createElement("tooltip") ); tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;"; var image = tooltip.appendChild( document.createElement("image") ); image.setAttribute("src", self.image); var label = tooltip.appendChild( document.createElement("label")); label.setAttribute("value", "Установлен " + lab + " прокси: " + sel); var focused = document.commandDispatcher.focusedWindow; var selection = focused.getSelection().getRangeAt(0).getBoundingClientRect(); var posX = focused.mozInnerScreenX + selection.left; var posY = focused.mozInnerScreenY + selection.bottom - 5; tooltip.showPopup(gBrowser, posX, posY); setTimeout(()=> gBrowser.removeChild(tooltip), 3000); }; showTooltip(); }; })(document.getElementById("contentAreaContextMenu"));
Отсутствует
А как сделать переключение по левому клику параметра network.proxy.type между 5 и 2? Подставляяю вместо 0 : 1, но ничего не выходит(
cbu.setPrefs("network.proxy.type", cbu.getPrefs("network.proxy.type") ? 0 : 1);
Сам нашел
cbu.setPrefs("network.proxy.type", (cbu.getPrefs("network.proxy.type") == 2 ) ? 5 : 2 )
Отредактировано momo2000 (14-10-2020 20:42:10)
Отсутствует