Konfiguracja proxy w KDE i dla APTa za pomocą skryptu
Kilka miesięcy temu pisałem o tym jak skonfigurować proxy dla APT(itude) ale niedawno doszedłem do wniosku, że wiele osób (w tym i ja) musi używać proxy nie tylko do APTa ale i dla całego środowiska. Pomyślałem, że zamiast wchodzić do Centrum sterowania KDE i tam wyklikiwać ustawienia proxy mógłbym je ustawiać bezpośrednio ze skryptu razem z innymi ustawieniami sieciowymi. Skrypt powstał z potrzeby chwili- miał być prosty i po prostu działać. Założenie jest takie, że całość jest uruchamiana z konta użytkownika root, a KDE konfiguruje się dla użytkownika _user_.
Skrypt zaczyna się klasycznie:
#!/bin/sh
Na początek zajmujemy się interfejsem sieciowym, czyli kładziemy go, podnosimy z odpowiednią konfiguracją i konfigurujemy DNSy- przydaje się w momencie braku serwera DHCP w sieci.
ifconfig _interfejs_np_eth0_ down
ifconfig _interfejs_ _nasze_ip_ netmask _maska_ up
route add default gw _brama_
echo 'nameserver _ip_serwera_nazw_' > /etc/resolv.conf
Teraz przyszła pora na konfigurację APTa za pomocą linijki:
echo 'Acquire::http::Proxy "http://adres.naszego.proxy:port";' > /etc/apt/apt.conf.d/proxy
Na koniec ustawienie proxy w KDE:
su -l -c 'kwriteconfig --file kioslaverc --group "Proxy Settings" --key ProxyType 1' _user_
Powinno działać choć nie działa. Właściwie to działa ale dopiero po przelogowaniu. Jeśli tak sytuacja miałaby wyglądać to ja wolałbym już ręcznie wyklikiwać ustawienie proxy w KDE. Problemem jest cachowanie ustawień (chyba), a rozwiązaniem pewna linijka i pewien skrypt znaleziony przeze mnie gdzieś w sieci na jednej z grup mailowych (zakładam, że mogę redystrybułować kod). Wspomnianą linijką w skrypcie jest:
su -c '/home/_user_/recache.sh' _user_
Brakuje jeszcze wspomnianego skryptu, który zgodnie z powyższą linijką powinien się znajdować w katalogu domowym użytkownika pod nazwą recache.sh:
#!/bin/sh
case $1 in
offline) ACTION="offline" && VALUE="CacheOnly" ;;
*) ACTION="online" && VALUE="Refresh" ;;
esac
echo "Going $ACTION..."
# Changing configuration
sed -i s/^cache=.*/cache=$VALUE/ ~/.kde/share/config/kio_httprc
# Fetch a list of all running kde applications
APPS=$(dcop)
# Define which apps you would like to apply the setting to
# (other applications will not notice the change before the next restart)
APPLYTO="konqueror kcontrol"
for i in ${APPS}; do
echo "$APPLYTO" | grep -vq "$(echo $i | sed -e 's/-[0-9]*$//')" && continue
# echo "Using $i ..."
dcop $i KIO::Scheduler reparseSlaveConfiguration http # 2>/dev/null
done
Przypominam, że nadać skryptom atrybut wykonywalności.



Link do komentarza
DCOP już niedługo przestanie działać, trzeba by było przeportować na dbus cały interfejs restartowania cache.
Link do komentarza
Wiem, że DCOP znika ale jak napisałem skrypt nie jest mój, a ja nie znam na tyle ani DCOPa by to samemu napisać ani DBUSa, żeby to przeportować.