Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

Разработка » Недоступен nsIThreadManager » 20-10-2012 21:48:35

hydrolizer пишет

Если нет предубеждения к дотнету

Проект не дотнетовский, "нативный", неохота stub городить ради этого.
Попробую найти старые исходники на том же ftp например. Должно же что-то быть. Пусть и старое, но хотелось бы малой кровью проблему решить.
Пересобрать ActiveX тоже не вариант, я скорее пойду на урезание функциональности для мозиллы по сравнению с IE.
зы. Благодарю за наводку про Deer Park.

Разработка » Недоступен nsIThreadManager » 20-10-2012 19:30:51

Выполняю AServiceManager.GetServiceByContractID(NS_THREADMANAGER_CONTRACTID, nsIThreadManager, VThreadManager);
Получаю ошибку "Класс не зарегистрирован".
В чём может быть проблема?

Используется Mozilla ActiveX Control v1.7.12 - там наверное пятилетней давности код - может быть что nsIThreadManager слишком новый для него? Что тогда заюзать?

зы. NS_THREADMANAGER_CONTRACTID = '@mozilla.org/thread-manager;1', вроде как правильно, так что проблема не в этом.

Разработка » HTTP авторизация прокси из расширения FireFox » 20-10-2012 01:55:03

Ура.Сделал через FnsServiceManager.GetServiceByContractID('@mozilla.org/observer-service;1', nsIObserverService, FnsObserverService) и реализацию nsIObserver. Тупо добавил заголовок Proxy-Authorization: Basic XXXXXXXXXXXXXX

Разработка » HTTP авторизация прокси из расширения FireFox » 20-10-2012 00:30:19

Может есть какое-то расширение (или лог), которое хотя бы покажет, какие сервисы вызываются, какие listener-ы и observer-ы используются, в общем стек вызовов через интерфейсы XPCOM?

Разработка » Программно заменить настройки прокси » 19-10-2012 21:34:22

hydrolizer пишет

Есть подозрение, что оно всё-таки пишется туда, куда обычно - в prefs.js в профиле

Отчитываюсь.
После того как я в коде инициализации закомментировал код установки работы без прокси (в рамках текущих настроек софтины) - то есть работать всё должно было с сохранёнными настройками - оно по-прежнему по-старому полезло в несуществующий проксик и обломалось.
Так что судя по всему ничего никуда не сохранилось, а если даже и сохранилось - то не туда, а если сохранилось и туда - то не прочиталось при старте )).
Что вообще говоря и требовалось.

Разработка » Программно заменить настройки прокси » 19-10-2012 17:14:08

okkamas_knife пишет

не понимаю на кой чёрт связываться с Activex даже мозилловским

Чтобы к имеющейся поддержке IE добавить мозиллу, что ж тут непонятного?
Речь идёт не о проектах с нуля и только с поддержкой мозиллы. Речь о существующих проектах, в которых работает вебброузер IE и в котрые возможно добавить мозиллу примерно нахаляву.

okkamas_knife пишет

азрабы ФФ выкинут её или прекратят поддержку

Оно и так пятилетней давности наверное. Причина использования описана выше. Реализовывать отдельный броузер на геко даже не собираюсь, это немного другая тема по затратам.

Разработка » HTTP авторизация прокси из расширения FireFox » 19-10-2012 16:30:46

Некропостинг некропостингом, но проблема остаётся.

Продолжаем изучение XPCOM....... На этот раз задача следующая.

В приложении имеется информация о логине и пароле для прокси-сервера (все прочие варианты аутентификации вообще говоря не интересны).
За рамками приложения эта информация совершенно не нужна.
То есть в идеале кэширование логина и пароля может быть только в рамках текущей сессии, никаких сохранений.
Хотя если даже и попадут credentials в менеджер паролей, или как он там зовётся, то в принципе ничего страшного не будет.

Никак не могу понять логику работы с интерфейсами nsIAuth*. Пересмотрел исходники мозиллы. Всё без толку. В поиске тоже тут был.
Может у кого пример завалялся, или хотя бы умные мысли есть?

Разработка » Программно заменить настройки прокси » 19-10-2012 16:11:47

okkamas_knife пишет

можно примерчики таких приложений?

1. Я разработчик ПО. Профессия такой. У меня таких есть несколько проектов. Вот теперь минимум в двух придётся залезть внутрь API мозиллы (прежде всего XPCOM), так что я не последний раз зашёл, сейчас вот с thread manager-ом бьюсь, пока он побеждает ))).
2. По чужим - понятия не имею. На него легко заменяется "штатный" ActiveX от M$, тот который IE, их в принципе можно вообще на лету переключать. Так что вообще говоря таковых может быть очень много.

Разработка » Программно заменить настройки прокси » 18-10-2012 23:05:11

>у ФФ свои отдельные настройки прокси которые систему не затрагивают
У нас с Вами видимо разные понятия о "системе".
Поскольку приложений, которые используют Mozilla ActiveX Control v1.7.12, может быть сильно больше чем 1, то все они с тем же успехом подпадают под требование "чтобы в других приложениях никаких изменений не случилось".
А про системные настройки типа настроек MSIE я вообще ничего не имею в виду.

>Без этой точки
Ура. Благодарю. Всё получилось. Даже после закрытия софтины ничего никуда в \greprefs\all.js не записывается. Идеально.

Разработка » Программно заменить настройки прокси » 18-10-2012 21:33:14

>нифига непонятно что ты хочешь получить
надо умудриться установить настройки прокси так, чтобы в других приложениях никаких изменений не случилось
То есть только в рамках текущей сессии.

Разработка » Программно заменить настройки прокси » 18-10-2012 20:56:15

Работаю с ActiveX - тот который Mozilla ActiveX Control v1.7.12.
Настройки хранятся в \greprefs\all.js, если это важно.
В приложении свои настройки прокси (оно и напрямую качает, и через IE тоже работает).
Поэтому надо умудриться установить настройки прокси так, чтобы в других приложениях никаких изменений не случилось.
Возможно это даже лучше назвать/сделать не заменой настроек, а каким-нибудь перехватом чего-нибудь сетевого.

Пытаюсь сделать вот как:
1. Когда ActiveX уже загружен - вызываю GetModuleHandle для xpcom.dll - успешно.
2. Вызываю NS_GetServiceManager (ищется через GetProcAddress) и получаю nsIServiceManager - успешно.
3. Потом GetServiceByContractID(NS_PREFSERVICE_CONTRACTID, nsIPrefService, VnsIPrefService) - успешно.
4. Потом VnsIPrefBranch := VnsIPrefService.GetBranch('network.proxy') - и это успешно.
5. Потом исполняю типа
VnsIPrefBranch.SetIntPref('type',1);
VnsIPrefBranch.SetCharPref('http',PAnsiChar(VInfo.Host));
VnsIPrefBranch.SetIntPref('http_port',VInfo.Port);
ил

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]