# [RESOLU] config dynamique en fonction du réseau ?

## xaviermiller

Hello,

Quand je suis à la maison, je configure le make.conf de mon netbook pour qu'il profite de la puissance supérieure du desktop (FEATURES="distcc", MAKEOPTS="-j7").

Pour le moment, je modifie à la main FEATURES et MAKEOPTS, mais souhaiterais le faire automatiquement

- si (ESSID="maison" OU ethernet) ET desktop dispo => se mettre en mode "distcc"

- sinon => se mettre en mode "stand-alone"

Quelles sont les options possibles ?

- un "hook" postup dans /etc/conf.d/net qui modifie make.conf ?

- un hook "bashrc" dans /etc/portage/env ?

La première option ne fonctionnera que si le desktop est préalablement allumé et disponible ; mais ce n'est pas trop gênant, j'allume souvent le desktop en premier afin de préparer les mises à jour (emerge --sync + recompression d'un portage en squashfs)

La deuxième sera appelée très fréquemment par Portage (peut-être trop)

Y aurait-il un juste milieu selon vous ? Ou une solution du genre "runlevel en fonction du réseau où l'on se trouve" ?

----------

## xaviermiller

Je vais explorer le hook "postup" dans /etc/conf.d/net qui me semble le plus adéquat

----------

## kopp

Au pire, un simple restart du service net referait la config, si jamais le netbook était allumé avant le pc. Je ne pense pas que tu fasses beaucoup d'opérations critique nécessitant de maintenir la connexion sur ton notebook lorsque tu décides de faire la mise à jour.

----------

## xaviermiller

Je suis parti sur l'option "net et ses hooks". Je dois juste tenter de trouver le point où m'accrocher, de préférence après le DHCP. Au pire, si je ne trouve pas, je mets un hook sur base du ESSID (celui de la maison) et l'interface (ethernet), et je force un mode "pas d'assistance distcc" pour les rares cas où je n'allume pas le desktop pour assister la compil.

----------

## xaviermiller

C'est résolu élégamment via le script net et l'isolation de la partie variable de make.conf (MAKEOPTS, FEATURES...) dans des fichiers ; un lien symbolique va pointer vers la configuration en fonction du réseau détecté :

- pas de réseau : version stand-alone (MAKEOPTS="-j3", FEATURES="-distcc")

- à la maison (= SSID maison ou ethernet branché + ping du serveur distcc) : MAKEOPTS="-j7" FEATURES= "distcc"

- via un hot-spot restrictif  = stand-alone + EVCS_OFFLINE=1

Je crée donc 3 fichiers /etc/portage/variable_conf.XXX et un lien symbolique /etc/portage/variable_conf vers la version courante

Dans make.conf, je mets "source variable_conf".

dans /etc/conf.d/net je mets

```
modules="wpa_supplicant"

preferred_aps="..."

preup() {

  # par défaut : version "stand-alone"

  ln -sf variable_conf.out /etc/portage/variable_conf

  

  #truc pour ifplugd

  if [[ ${IFACE} == "wlan0" ]]; then

    if ifplugstatus | grep -q 'eth0: link beat detected'; then

      ewarn "Wired connection on eth0 detected, aborting configuration on ${IFACE}"

      return 1

    fi

  fi

}

postup() {

  # A la maison ?

  if [[ ${IFACE} == "eth0" || ${SSID} == "ESSID_A_LA_MAISON" ]] ; then

    if [[ $(ping -c 1 -q DISTCC_SERVER) == 0 ]] ; then

      # serveur DISTCC repéré !

      ln -sf variable_conf.distcc /etc/portage/variable_conf

    fi

  fi

  if [[ ${SSID} == "hotspot_connu" ]] ; then

    # connexion automatique au hotspot connu (avec envoi user/mot de passe)

    /usr/local/bin/hotspot_login.sh

    

    ln -sf variable_conf.hotspot /etc/portage/variable_conf

  fi

}
```

----------

