Arquivos AutoConfig podem ser usados para definir e travar preferências não cobertas pelas políticas do Firefox.
Para usar AutoConfig, você deve colocar dois arquivos em diretórios do Firefox. No Windows, eles ficam no mesmo diretório onde o Firefox está instalado. No macOS, eles ficam no diretório Contents/Resources do Firefox.app.
O primeiro arquivo que você precisa criar é chamado autoconfig.js e deve ser colocado no diretório defaults/pref. Ele deve conter as duas seguintes linhas:
pref("general.config.filename", "firefox.cfg"); pref("general.config.obscure_value", 0);
A primeira linha especifica o nome do arquivo AutoConfig. Você pode especificar o nome que quiser, mas o local do arquivo não pode ser alterado.
A segunda linha no exemplo acima indica que você não quer que o AutoConfig seja obscurecido. Por padrão, o Firefox espera que o arquivo esteja com um deslocamento de 13 bytes de modo a ficar obscurecido.
O segundo arquivo que você precisa criar é chamado firefox.cfg e deve ser colocado no nível superior.
Ele deve sempre começar com uma linha comentada:
// IMPORTANTE: Inicie seu código na segunda linha
Apesar da extensão do nome de um arquivo AutoConfig ser tipicamente cfg, O arquivo AutoConfig propriamente dito é um arquivo JavaScript. Quer dizer que você pode escrever código JavaScript dentro do arquivo para obter lógicas diferentes em situações diferentes.
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. Significa que se o usuário alterar o valor, será redefinido toda ver que o navegador for iniciado.
defaultPref(prefName, value)
– define o valor padrão de uma preferência. Este é o valor de uma preferência caso o usuário não tenha definido nenhum valor.
lockPref(prefName, value)
– define e trava o valor padrão de uma preferência. Esta é a função mais familiar às pessoas quando se trata de arquivos AutoConfig. Travar uma preferência impede que um usuário a altere e, na maioria das vezes, desativa a opção correspondente na interface gráfica das preferências, de modo que fique óbvio para o usuário que a preferência não pode ser alterada. Em casos onde não fiquem aparentes coisas desativadas na interface gráfica das preferências, existem algumas preferências “disable_button” que, quando travadas, desativam botões. Por exemplo, se for travada a preferência
pref.privacy.disable_button.view_passwords
será desativado o botão “Ver senhas”. As outras preferências que desativam botões são:
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
unlockPref(prefName)
– destrava uma preferência. Como exemplo, pode haver casos em que você trava uma preferência para todos e depois a destrava para um usuário em particular.
getPref(prefName)
– retorna o valor de uma preferência. Se a preferência não existir, é exibido um erro. Só deve ser usada com preferências que você saiba que existem.
clearPref(prefName)
– remove o valor de usuário de uma preferência, a redefinindo para o valor padrão.
displayError(funcname, message)
– mostra uma erro em um formato específico.
Netscape.cfg/AutoConfig failed. Please contact your system administrator. Error: [funcname] failed: [message]
Isto é útil para depuração.
getenv(name)
– obtém o valor de uma variável de ambiente. Permite que você faça coisas tipo obter dados como nomes de usuário e outras informações do sistema.
Se quiser gerenciar seu arquivo AutoConfig centralizadamente, você pode especificar o local de um arquivo AutoConfig secundário dentro do arquivo AutoConfig primário:
pref("autoadmin.global_config_url","http://yourdomain.com/autoconfigfile.js");
A URL pode ser qualquer protocolo suportado pelo Firefox. Isto inclui especificar o protocolo file:
para apontar para um arquivo em um drive de rede. O formato do arquivo autoconfig remoto é o mesmo do arquivo autoconfig no cliente, exceto que a primeira linha não é ignorada.
Se quiser ter informações específicas de usuário em sua configuração, você pode definir outra preferência:
pref("autoadmin.append_emailaddr", true);
Isto adiciona um ponto de interrogação (?) e um endereço de e-mail à requisição.
Você pode estar se perguntando de onde vem o endereço de e-mail. Já que o Firefox não usa endereços de e-mail, você precisará definir. Se não o fizer, o Firefox exibirá um diálogo pedindo um endereço de e-mail. A preferência é chamada mail.identity.useremail
e é do tipo string. Como o arquivo autoconfig é um arquivo JavaScript, você pode definir esta preferência antecipadamente, definindo autoadmin.global_config_url
. Você pode fazer algo como:
var user = getenv("USER");
lockPref("mail.identity.useremail", user);
lockPref("autoadmin.global_config_url","http://yourdomain.com/autoconfigfile.js");
Existem algumas outras preferências que controlam aspectos do AutoConfig. autoadmin.refresh_interval
faz com que o AutoConfig seja recarregado a cada intervalo de tempo especificado em minutos. Existem também algumas preferências relacionadas a como lidar com estar desconectado, incluindo autoadmin.offline_failover
e autoadmin.failover_to_cached
. Veja como elas funcionam.
Toda vez que um arquivo AutoConfig é obtido remotamente, uma cópia de segurança desse arquivo é criada no diretório de perfil do usuário, com nome failover.jsc. Se a preferência autoadmin.failover_to_cached
estiver definida como false
, o Firefox lê o arquivo em cache, marca o navegador como desconectado e trava a preferência para que o usuário não possa conectar. Se a preferência estiver definda como true
, ele simplesmente usa o arquivo em cache e continua. A preferência autoadmin.offline_failover
controla se o arquivo em cache é ou não usado quando o usuário está apenas desconectado. Se estiver definido como true
, o arquivo em cache é usado.