Arquivos AutoConfig podem ser usados para definir e travar preferências que não são cobertas pela política de grupo no Windows ou pelo o policies.json para Mac e Linux. Este método pode ser usado para alterar automaticamente as preferências do usuário ou impedir que o usuário final modifique preferências específicas, travando-as.
Índice
Configurando o AutoConfig
Para usar o AutoConfig, você precisa criar dois arquivos, um no nível superior e outro em um subdiretório. No Windows, os caminhos são baseados no diretório onde o Firefox está instalado. No macOS, os caminhos são baseados no diretório Contents/Resources do Firefox.app.
O primeiro arquivo a ser criado se chama autoconfig.js, e deve ser colocado no diretório defaults/pref. Ele deve conter as duas linhas a seguir:
pref("general.config.filename", "firefox.cfg");
pref("general.config.obscure_value", 0);
A primeira linha especifica o nome do arquivo AutoConfig. O nome do arquivo pode ser personalizado, mas a localização do arquivo não pode ser alterada.
A segunda linha indica que o AutoConfig não deve ser ofuscado. Por padrão, o Firefox espera que o arquivo seja deslocado em 13 bytes para ofuscá-lo.
O segundo arquivo a ser criado se chama firefox.cfg e é colocado no nível superior do diretório do Firefox. Ele deve sempre começar com uma linha comentada, como:
// IMPORTANTE: Inicie seu código na segunda linha
Embora a extensão de um arquivo AutoConfig seja normalmente .cfg, o arquivo AutoConfig é um arquivo JavaScript. Isso permite que JavaScript adicional seja escrito dentro do arquivo para adicionar lógicas diferentes em situações diferentes.
Funções do AutoConfig
As seguintes funções estão disponíveis dentro de um arquivo AutoConfig:
pref(prefName, value) – define o valor de usuário de uma preferência. Esta função define explicitamente a preferência como uma preferência de usuário. Isso significa que se o usuário tiver alterado o valor, ele será redefinido toda vez que o navegador for iniciado.
defaultPref(prefName, value) – define o valor padrão de uma preferência. Este é o valor que uma preferência tem quando o usuário não definiu nenhum valor ou o usuário redefine a preferência. Pode ser alterado permanentemente pelo usuário.
lockPref(prefName, value) – define o valor padrão de uma preferência e a trava. Esta é a função mais comumente usada. Travar uma preferência impede que um usuário a altere e, na maioria dos casos, desativa a interface de usuário nas preferências para que fique óbvio para o usuário que a preferência foi desativada.
unlockPref(prefName) – destrava uma preferência. Como exemplo, isso seria usado no caso em que uma preferência deva ser travada para todos os usuários, mas destravada para usuários específicos.
getPref(prefName) – recupera o valor de uma preferência. Se a preferência não existir, exibe um erro. Esta função só deve ser usada em preferências que sempre existem.
clearPref(prefName) – remove o valor de usuário de uma preferência, redefinindo-a para seu valor padrão.
displayError(funcname, message) – exibe um erro em um formato específico, o que é uma ferramenta útil para depuração.
Netscape.cfg/AutoConfig failed. Please contact your system administrator. Error: [funcname] failed: [message]
getenv(name) – consulta variáveis de ambiente. Isso pode permitir o acesso a coisas como nomes de usuário e outras informações do sistema.
Desativando elementos da interface de usuário
Em casos em que os elementos da interface de usuário não são desativados automaticamente nas preferências, existem algumas preferências “disable_button” que, quando travadas, desativam botões. Por exemplo, incluir
lockPref("pref.privacy.disable_button.view_passwords",true);
em seu arquivo AutoConfig desativará o botão . Outras preferências que travam botões incluem:
- pref.general.disable_button.default_browser
- pref.browser.homepage.disable_button.current_page
- pref.browser.homepage.disable_button.bookmark_page
- pref.browser.homepage.disable_button.restore_default
- security.disable_button.openCertManager
- security.disable_button.openDeviceManager
- app.update.disable_button.showUpdateHistory
- pref.privacy.disable_button.cookie_exceptions
- pref.privacy.disable_button.view_cookies
- pref.privacy.disable_button.view_passwords
- pref.privacy.disable_button.view_passwords_exceptions
- pref.downloads.disable_button.edit_actions
Gerenciamento centralizado
O arquivo AutoConfig pode ser gerenciado centralmente. Para fazer isso, especifique a localização de um arquivo AutoConfig secundário no arquivo AutoConfig primário:
pref("autoadmin.global_config_url","https://yourdomain.com/autoconfigfile.js");
A URL pode ser de qualquer protocolo suportado pelo Firefox, incluindo o protocolo file: para apontar para um arquivo em uma unidade de rede. O formato do arquivo AutoConfig remoto é o mesmo do arquivo AutoConfig no cliente, exceto que a primeira linha não é ignorada.
Existem outras preferências que controlam aspectos do AutoConfig. A preferência autoadmin.refresh_interval faz com que o AutoConfig seja atualizado em um determinado intervalo especificado em minutos. Também existem preferências relacionadas a como o modo offline é tratado, incluindo autoadmin.offline_failover e autoadmin.failover_to_cached.
Toda vez que um arquivo AutoConfig é recuperado remotamente, uma cópia de segurança desse arquivo é criada no diretório de perfil do usuário, chamada failover.jsc. Se a preferência autoadmin.failover_to_cached for definida como false, o Firefox lê o arquivo em cache, marca o navegador como offline e trava a preferência, para que o usuário não possa ficar online. Se a preferência for definida como true, ele simplesmente usa o arquivo em cache e continua. A preferência autoadmin.offline_failover controla se o arquivo em cache é usado ou não quando o usuário está offline. Se for definida como true, o arquivo em cache é usado.
Preferências específicas do usuário
Se informações específicas do usuário precisarem ser incluídas no arquivo AutoConfig, a seguinte preferência deve ser definida:
pref("autoadmin.append_emailaddr", true);
Isto adiciona um ponto de interrogação (?) e um endereço de e-mail à requisição.
Como o Firefox não usa endereços de e-mail, a preferência mail.identity.useremail deve ser definida. Se não for definida, o Firefox exibirá um aviso solicitando o endereço de e-mail. Como o arquivo AutoConfig é um arquivo JavaScript, esta preferência pode ser definida antes de definir autoadmin.global_config_url. Por exemplo:
var user = getenv("USER");
lockPref("mail.identity.useremail", user);
lockPref("autoadmin.global_config_url","https://yourdomain.com/autoconfigfile.js");