0

Я пишу Firefox дополнения для пользователей Linux, чтобы передать учетные данные для проверки подлинности NTLM sites.some, что похоже на AutoAuth, который написан с использованием фреймворка XULКак открыть диалоговое окно аутентификации HTTP с помощью Firefox SDK

https://addons.mozilla.org/en-us/firefox/addon/autoauth/

Мой вопрос: как получить доступ к диалоговому окну аутентификации с помощью Firefox SDK?

ответ

1

С дополнительным sdk у вас нет наложений XUL, поэтому единственное, что вы действительно можете сделать за пределами этого, - использовать наблюдателя окна. Поскольку всплывающие окна считаются окнами, вы увидите их в функции onTrack, когда они появятся в браузере.

Этот пример кода смотрит окна, которые ищут расположение окна chrome://global/content/commonDialog.xul, которое похоже на то, что делает дополнение autauth. Этот диалог используется для нескольких вопросов, связанных с автоответчиком, поэтому вам придется выполнить дополнительную работу по обнаружению NTLM-аутентификации.

var { isBrowser } = require("sdk/window/utils"); 
var delegate = { 
    onTrack: function (window) { 
    if (!isBrowser(window) && window.location === "chrome://global/content/commonDialog.xul") { 
     // this could be the window we're looking for modify it using it's window.document 
    } 
    }, 
    onUntrack: function (window) { 
    if (!isBrowser(window) && window.location === "chrome://global/content/commonDialog.xul") { 
     // undo the modifications you did 
    } 
    } 
}; 
var winUtils = require("window-utils"); 
var tracker = new winUtils.WindowTracker(delegate); 

С помощью этого кода вы в значительной степени находитесь в точке функции loadauto надстройки autoauth. Вы можете использовать window.document.getElementById() для доступа к DOM этого окна и изменения элементов внутри него.

Примечание что модуль window-utils устарел, так что вы должны будете идти в ногу с SDK, как они перемещаются из этого модуля (надеюсь) что-то еще подобное.