É possível usar o ubuntu-system-service para definir uma configuração de proxy para todo o sistema?

1

Estou executando o Ubuntu-Studio 12.10 usando o GNOME-3, e estou tentando configurar um script bash em /etc/network/if-up.d para configurar automaticamente minhas configurações de proxy com base no SSID de a rede à qual estou conectado. Não consigo fazer com que as configurações funcionem automaticamente, usando um dos itens a seguir:

gsettings set org.gnome.system.proxy mode "manual"
sudo -u blaine gsettings set org.gnome.system.proxy mode "manual"
su blaine -c 'gsettings set org.gnome.system.proxy mode "manual"'

Além disso, gostaria que o script alterasse as variáveis de ambiente http_proxy, https_proxy e assim por diante, para que coisas como o Wine as reconhecessem sem ter que sair e voltar, e cinco dias pesquisando me dizem que isso é impossível.

Exceto - eu sei que isso pode ser feito. O botão "Aplicar todo o sistema" no Unity faz tudo isso sem ter que registrar novamente. Algumas escavações adicionais revelaram isso: http://www.snamellit.com/2011/07/disiable-authentication-for-global-proxy-settings- on-ubuntu/ "title=" Desabilitar autenticação para configurações globais de proxy no Ubuntu - {Snamell (it)} "> artigo que sugere que o botão acessa com.ubuntu.systemservice.setProxy, que presumivelmente faz parte do pacote ubuntu-system-service.

É possível usar o ubuntu-system-service para configurar um proxy para todo o sistema via bash, terminal ou similar?

    
por Blaine Rogers 27.03.2013 / 21:52

2 respostas

2

Caso alguém ainda esteja procurando uma solução, aqui está o que eu encontrei. O Ubuntu expõe um serviço DBus através do pacote ubuntu-system-service, mas eu não estou familiarizado com o DBus.

No entanto, inspecionando o código-fonte (não é ótimo Open Source?), a ação setProxy faz duas coisas:

  1. Modificar o ambiente do sistema
  2. Modifique as configurações de proxy usadas pelo APT

No primeiro caso, o arquivo em / etc / environment é modificado. O segundo caso é um pouco mais complicado - os arquivos em /etc/apt/apt.conf.d são verificados quanto a linhas que correspondem a Acquire :::: Proxy, onde os valores são substituídos. Se não houver linhas correspondentes, uma linha de proxy (como a acima) é adicionada a cada arquivo conf do APT.

Os arquivos relevantes são encontrados em UbuntuSystemService / backend.py (~ linha 209 @ versão 0.2.5).

Respondendo sua pergunta, você pode fazer as mesmas alterações que o ubuntu-system-service ou tentar descobrir usando o DBus:

dbus-send --system --print-reply --dest=com.ubuntu.SystemService --type=method_call / com.ubuntu.SystemService.set_proxy string:'http' string:'127.0.0.1:8080'

Por alguma razão, eu continuo recebendo False como uma resposta sobre este, mas você pode ser capaz de descobrir isso.

    
por yjwong 13.11.2013 / 20:19
0

Esse retorno é verdadeiro:

sudo dbus-send --sistema --print-reply --dest = com.ubuntu.SystemService --type = método_call / com.ubuntu.SystemService.set_proxy string: 'http' string: ' link '

e eu descubro que você tem que prefixar com esquema: http deste código:

link

    
por schemacs 20.02.2015 / 04:23