Squid/redirect_program -- Wie schaut die Schnittstelle aus?



  • Hallo,

    ich möchte ein kleines Addon für squid schreiben das jedes Request zuerst bearbeitet bevor squid es bekommt.

    Ich hab gehört das geht mit redirect_program.

    Nur hab ich nirgends finden können wie squid das Request an mein Programm
    übergibt und wie er es wieder zurückwill.

    Also bekomm ich es über stdin?Oder argv?
    Und soll ichs über return char* oder über stdout zurückgeben?
    Oder is das doch ganz anders?!

    Schon mal vielen Dank,
    Xalon



  • Ok ich hab mir jetzt folgendes gebastelt:

    #include <stdio.h>
    #include <stdlib.h>
    #include <regex.h>
    #include <string.h>
    #include <unistd.h>
    #include <errno.h>
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    #define mbfsiz 800
    
    char url[256];
    char method[32];
    char ident[256];
    char src_address[256];
    char line[mbfsiz];
    
    char* matchurl(void);
    
    char* matchurl(void)
    {
      sscanf(line, "%255s %255s %255s %31s", url, src_address, ident, method);
      //cout << "line: " << line << endl;
      return line;
    }
    
    int main()
    {
     fstream file("/home/lxuser/Desktop/fooo",ios::out);
     while(fgets(line, mbfsiz, stdin) != NULL) 
     {
      fprintf(stdout, "%s\n", matchurl());
     }
     file.close();
    return 0;
    }
    

    Wenn ich dann

    redirect_program /some/where/redirector

    in die squid config schreibe und squid laufen lasse gibt er keine Webseiten
    mehr an den Browser zurück ==> scheinbar lädt er mein Programm.
    Nur kommt keine fooo auf meinem Desktop wie

    fstream file("/home/lxuser/Desktop/fooo",ios::out);
    

    ja eigentlich erzeugen sollte 😕


Log in to reply