====== Soluzioni tema d'esame del preappello ====== **Esercizio 1a**: provate il codice fornito nel testo. **Esercizio 1b**: questa e' la definizione richiesta per la parte principale dell'esercizio. struct input_data { string filename<256>; int max; double value; }; typedef struct input_data input_data; program LOOKUPPROG { version LOOKUPVERS { string LOOKUP(input_data) = 1; } = 1; } = 22854; **Esercizio 2**: la creazione del server e la connessione non sono diversi dal normale (server inet). Riporto uno schema di soluzione (non robusto, ma accettabile) per la gestione della singola connessione, usando il metodo post. int server (int client_socket) { int max; double value; char *filename=malloc(sizeof(char)*256); char *res; char *text=malloc(sizeof(char)*1024); read (client_socket, text, 1024); sscanf(text,"GET /lookup.cgi?filename=%s&max=%d&value=%lf HTTP1.1", filename, &max, &value); res = lookup(filename, max, value); write (client_socket, res, strlen(res)+1); } **Esercizio 3**: Ruleset originale : Riordinando il ruleset,tenendo conto dei -I INPUT 2 otteniamo : iptables -A INPUT -s 10.0.0.3 -j LOG iptables -A INPUT -s 10.0.0.3 -j QUEUE iptables -A INPUT -s 10.0.0.3 -j DROP -- inutile, il queue li ruba prima iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 10.0.0.4/24 -j RATEEST iptables -A INPUT -d 10.0.0.42 -j ACCEPT --- inutile, in quanto identica a "iptables -A INPUT -i lo -j ACCEPT" iptables -A INPUT -s 10.0.0.7 -j DROP iptables -A INPUT -s !10.0.0.3 -j ACCEPT iptables -A FORWARD -i lo -j ACCEPT -- inutile: da quando i pacchetti del lo arrivano in FORWARD :P iptables -A FORWARD -d 46.59.1.2 -j ACCEPT iptables -A FORWARD -s 10.0.0.4 -j RATEEST iptables -A FORWARD -s 10.0.0.4 -j ACCEPT -- policy in accept comunque iptables -A FORWARD -p tcp --dport 40:100 -j LOG iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT