Salut à tous.
Je suis en train de configurer mon routeur OpenWRT version 24.10.0, sous Raspberry Pi 4B. Pour tout ce qui est réseau, il me semble avoir réussi à le faire car j'obtiens bien l'internet sur mes deux bridges (br0, br1) et j'ai j'obtiens les adresses Ipv4 & IPv6 publiques fournies par SFR. Donc, tout va bien de ce coté là.
J'ai besoin de simuler la box 8 SFR et c'est là que j'ai des problèmes car je ne connais pas "uHTTPd", le serveur WEB léger ou minimaliste. Voici le fichier de configuration "/etc/config/uhttpd" :
C'est la version d'origine, non modifié.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 config uhttpd 'main' list listen_http '0.0.0.0:80' list listen_http '[::]:80' list listen_https '0.0.0.0:443' list listen_https '[::]:443' option redirect_https '0' option home '/www' option rfc1918_filter '1' option max_requests '3' option max_connections '100' option cert '/etc/uhttpd.crt' option key '/etc/uhttpd.key' option cgi_prefix '/cgi-bin' list lua_prefix '/cgi-bin/luci=/usr/lib/lua/luci/sgi/uhttpd.lua' option script_timeout '60' option network_timeout '30' option http_keepalive '20' option tcp_keepalive '1' option ubus_prefix '/ubus' config cert 'defaults' option days '397' option key_type 'ec' option bits '2048' option ec_curve 'P-256' option country 'ZZ' option state 'Somewhere' option location 'Unknown' option commonname 'OpenWrt'
Il existe déjà un répertoire /www" avec un sous répertoire /cgi-bin" contenant "LUCI". Pour simuler la BOX 8 SFR, j'ai créé le répertoire /www/api/1.0", afin d'y mettre les fichiers "*.xml" et un script a priori "cgi". Mon problème est que je sais le faire sous Apache, mais pas sous uHTTPd.
Dans mon OpenWRT, j'ai créé deux bridges, l'un nommé br0 avec l'adresse 10.0.0.1 et l'autre nommé br1 avec l'adresse 192.168.1.1.
Remarque: Je ne vais pas préfixer mes url par "http://" car je ne veux pas que cela apparaisse dans ce sujet comme des liens à cliquer.
Je veux que uHTTPd interpréte cet url que voici : "192.168.1.1/api/1.0/?method=ftth.getInfo".
Ce chemin "/api/1.0/" va devoir exécuter (sous apache, on parle de redirection) un script "cgi" qui va retourner le fichier qui se trouve dans le paramètre de "?method=...".
Mon script "cgi" se nomme "gateway.cgi". Il a les droits "root", il est exécutable et il se trouve dans le répertoire "/www/cgi-bin". Si je tape dans google : "192.168.1.1/cgi-bin/gateway.cgi", il s'exécute, ce qui est correcte.
Oui, mais voilà, je ne sais pas comment modifier le fichier de configuration uHTTPd afin que l'url "192.168.1.1/api/1.0/?method=ftth.getInfo" pointe vers le chemin du script cgi "/etc/cgi-bin/gateway.cgi" et s'excéute en retournant le contenu du fichier "/www/api/1.0/ftth.getInfo.xml".
Il y a déjà un existant "LUCI" et j'aimerai avoir encore l'accès par le navigateur google.
Voici le fichier "gateway.cgi" :
Merci de m'avoir lu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #!/bin/sh METHOD=$(echo "$QUERY_STRING" | sed -n 's/.*method=\([^&]*\).*/\1/p') case "$METHOD" in ftth.getInfo) FILE="ftth.xml" ;; lan.getHostsList) FILE="lan.xml" ;; system.getInfo) FILE="system.xml" ;; tv.getInfo) FILE="tv.xml" ;; usb.getInfo) FILE="usb.xml" ;; wan.getInfo) FILE="wan.xml" ;; *) echo "Status: 404 Not Found" echo "Content-type: text/html" echo echo "Method not found" exit 0 ;; esac echo "Content-type: application/xml" echo cat "/www/api/$FILE" 2>/dev/null || echo "XML file not found"
Cordialement.
Artemus24.
@+
Partager