Plugins facultatifs
- Pour installer un Plugins, rendez vous dans la page d'administration de votre routeur ( http://192.168.1.1 généralement )
- Cliquez dans l'onglet SYSTEME et choisissez PAQUETAGES :
- Ensuite allez chercher le fichier plugins que vous souhaitez installer ( “fichier”.ipk )
Vous pouvez aussi installer freifunk-recommended-fr qui inclus les outils les plus utilisés.
Les codes :
comme cela
correspondent aux ligne de commande si vous souhaitez installer un plugins par la methode SSH ( en ligne de commande sur le routeur )
OLSR VIZ
Visualisation OLSR en live
ipkg install freifunk-olsr-viz
- Exemple de Viz Rééls
Statistiques Graphiques
Statistiques par Ip
OLSR Dot Draw
Installation des plugins suplémentaires pour OLSR :
ipkg install freifunk-olsrd-libs
Le fichier de configuration chargé par OLSR se trouve ici dans ”/var/etc/olsrd.conf”
Mais il est écrasé à chaque appel de ”/rom/etc/init.d/S53olsrd” L'idée est donc de modifier ce script pour ajouter notre conf à la main :
cd /etc/init.d/ rm S53olsrd cp /rom/etc/init.d/S53olsrd S53olsrd vi S53olsrd
ENsuite , editez le fichier ”/etc/init.d/53olsrd” Et juste après la configuration du plugin httpstatus ( après la ligne 119 ) :
LoadPlugin "olsrd_httpinfo.so.0.1"
{
PlParam "port" "8080"
PlParam "Host" "127.0.0.1"
$HTTPINFO_PARA
}
Rajouter
LoadPlugin "olsrd_dot_draw.so.0.3"
{
PlParam "accept" "192.168.1.1"
}
Et le tour est joué (depuis la machine 192.168.1.1) :
telnet 192.168.1.2 2004
Bon maintenant pour le net accède au statut du réseau, voici un petit script qui transforme le tout :
<?php
/**
* Author : Ludovic Toinel from Puteaux-Wireless
* License : GPL
*/
$fp = fsockopen("192.168.1.2", 2004, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$fetch = false;
$data = "";
while (!feof($fp)) {
$buff = fgets($fp, 128);
if($buff[0] == "}") break;
if ($fetch){
$buff = trim($buff);
$data .= preg_replace("/\"(.*?)\" \-\> \"(.*?)\"\[label=\"(.*?)\"(.*?)\]\;/", '<link quality="$3"><source>$1</source><destination>$2</destination></link>', $buff);
}
if ($buff[0] == "{") $fetch = true;
}
fclose($fp);
// Affichage des données
header("Content-type: text/xml");
print('<?xml version="1.0" encoding="iso-8859-1"?>' . "\n");
print('<olsr>' . "\n");
print($data);
print('</olsr>' . "\n");
}
?>
Olsr et Wifidog script
La gateway wifidog effectue les filtrages et les redirections en se basant sur les adresses ethernet (adresses MAC) des clients se connectant et s'authentifiant sur les points d'accès. Un problème se pose dans le cas suivant :
[serveur d'auth.]
/ OLSR
[Internet]------[point d'accès 1]------[point d'accès 2]-------[client 1]
\
\
[client 2]
le point d'accès 1 doit avoir une gateway wifidog pour pouvoir authentifier ses clients (client 2 par exemple); cependant, les paquets provenant d'un client (client 1) connecté à un point d'accès (point d'accès 2) lui-même connecté au premier point d'accès (point d'accès 1) arriveront à ce point d'accès avec comme adresse ethernet source l'adresse ethernet du point d'accès (point d'accès 2) et non celle du client (client 1). La gateway wifidog du premier point d'accès (point d'accès 1) filtrera donc ces paquets même si le client (client 1) est correctement authentifié sur son point d'accès (point d'accès 2).
Des solutions à ce problèmes sont discutées sur les sites suivants :
ipkg install ip
### Creer le script
cd /etc/ vi httpolsr.sh
### Rentrer le script suivent
#!/bin/sh
#
# Script to bypass HTTP interception for traffic forwarded by OLSR
# bms 9-Aug-2005
# Licensed under GPL
#
rm -f /tmp/get_neighbors.awk
cat > /tmp/get_neighbors.awk <<__HERE1__
BEGIN {
while("ip route"|getline) {
if (\$6 == "metric") {
if (\$7 > 0) {
printf "%s\n", \$1;
}
}
}
}
__HERE1__
# On supprime la règle Iptable existante
iptables -t nat -D WiFiDog_Unknown -j OlsrNeighbors 2>&1 >/dev/null
iptables -t nat -F OlsrNeighbors 2>&1 >/dev/null
iptables -t nat -X OlsrNeighbors 2>&1 >/dev/null
iptables -t nat -N OlsrNeighbors
# On récupère la liste des noeuds OLSR
neighbors=$(awk -f /tmp/get_neighbors.awk)
# Pour chaque noeud OLSR trouvé
for _neighbor in ${neighbors} ; do
# On extrait son adresse MAC
_mac=$(grep "^${_neighbor}" /proc/net/arp | awk '{print $4}')
echo ${_mac}
# On autorise le flux entrant HTTP provenant de l'adresse MAC
iptables -t nat -A OlsrNeighbors -m mac --mac-source ${_mac} \
-p tcp --dport 80 -j ACCEPT
done
# On active le NAT pour cette chaine
iptables -t nat -I WiFiDog_Unknown -j OlsrNeighbors
### Ajouter une valeur de temps dans cron
rm /etc/init.d/S51crond cp /rom/etc/init.d/S51crond /etc/init.d/S51crond vi /etc/init.d/S51crond
### Ajouter la ligne suivante entre heure et minute
*/2 * * * * /usr/sbin/cron.biminutely
### Et enfin appeller le script dans ce fichier cron sans oublier les droits
cat /etc/httpolsr.sh >> /usr/sbin/cron.biminutely chmod +x /usr/sbin/cron.biminutely







