22 июн. 2010 г.

твикуем Firefox'а ...

Цель: Частенько приходится дергать браузер настраивая его на тот или иной SOCKS и каждый раз лазить для этого по его меню для настройки напрягает ...

Решение:
Ищем файлик browser.jar (browser.jar - это тот же browser.zip если вам так удобнее будет работать с архивом этим):
 windows: c:\Program Files\Mozilla Firefox\chrome\
linux: /usr/lib/firefox-*.*.*/chrome


заходим в нутрь и правим ...

В файле content/browser/browser.xul ищем строчку (группа tools-menu):
<menuitem id="sanitizeItem" ......... />

добавляем после неё:
<menuseparator id="prefSep"/>
<menuitem id="menu_switchproxy" type="checkbox" label="Use Proxy" oncommand="switch_proxy();" checked="false"/>


далее, параметры строк:
- socks, socks_port и socks_version ставьте на свои,
- ключ socks_remote_dns нужен для проброса резольвера DNS'а в ту же трубу

В файлe content/browser/browser.js в самый конец вставляем:
function switch_proxy(){
if (gPrefService.getIntPref("network.proxy.type") == 1) {
gPrefService.setCharPref("network.proxy.socks", '');
gPrefService.setIntPref("network.proxy.socks_port", 0);
gPrefService.setIntPref("network.proxy.socks_version", 5);
gPrefService.setIntPref("network.proxy.type", 0);
gPrefService.setBoolPref("network.proxy.socks_remote_dns", false);
document.getElementById("menu_switchproxy").setAttribute("checked", "false");
}else{
gPrefService.setCharPref("network.proxy.socks", 'localhost');
gPrefService.setIntPref("network.proxy.socks_port", 5050);
gPrefService.setIntPref("network.proxy.socks_version", 5);
gPrefService.setIntPref("network.proxy.type", 1);
gPrefService.setBoolPref("network.proxy.socks_remote_dns", true);
document.getElementById("menu_switchproxy").setAttribute("checked", "true");
}
}

__defineGetter__("gNavToolbox", function() {
return document.getElementById("menu_switchproxy").setAttribute("checked", gPrefService.getIntPref("network.proxy.type") ? "true" : "false" );
});


всё =)
теперь у нас есть менюлька-кнопатулька ВКЛ/ВЫКЛ проксирования трафика =)



Примечание:vim (он же есть и для windows) c .jar файлами работает на лету, не надо обновлять .jar после обновления его внутренностей =)

Комментариев нет:

Отправить комментарий