Thema: Delphi fritz.box Anruferliste

Einzelnen Beitrag anzeigen

Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#9

Re: fritz.box Anruferliste

  Alt 23. Mär 2007, 12:07
Hi,
ich habe mir dafür ne Komponente geschrieben ... hier ein Auszug aus dem Code
Delphi-Quellcode:
procedure TMyGetTelListThread.Execute;
var
  Params : TStringList;
  HTTP : TIdHTTP;
  sTelList : string;

label
  DoAbortAll;

begin

  HTTP := TIdHTTP.Create(nil);
  HTTP.HandleRedirects := True;
  HTTP.Request.ContentLength := -1;
  HTTP.Request.Accept := 'text/html, */*';
  HTTP.HTTPOptions := [hoForceEncodeParams];

  Params := TStringList.Create;
  sTelList := '';

  //Wenn Passwort dann Login durchführen
  if FPasswort <> 'then
    begin
      if Assigned(FOnStatus) then
        FOnStatus('Führe Login durch ...');

      with Params do
        begin
          Clear;
          Add('getpage=../html/de/menus/menu2.html');
          Add('errorpage=../html/index.html');
          Add('var:lang=de');
          Add('var:pagename=home');
          Add('var:menu=home');
          Add('login:command/password=' + FPasswort);
        end;

      //Login To Box
      try
        FHtml := HTTP.Post('http://'+FBoxURL+'/cgi-bin/webcm', Params);

        //Auf ungültiges Passwort prüfen
        if StrIPos('Kennwort ist ungültig', FHtml) > 0 then
          FIntErrStr := 'Kennwort ist ungültig !';

      except
        on E: Exception do FIntErrStr := E.Message;
      end;
    end;

  //Auf abbruch prüfen
  if Self.Terminated then goto DoAbortAll;


  //Telefonliste holen
  if FIntErrStr = 'then
    begin
      if Assigned(FOnStatus) then
        FOnStatus('Fritz!Box Anrufliste erzeugen ...');

      try
        FHtml := HTTP.Get('http://'+FBoxURL+'/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&' +
                          'errorpage=../html/de/menus/' +
                          'menu2.html&var:lang=de&var:pagename=foncalls&var:' +
                          'errorpagename=foncalls&var:menu=fon');
        if (FPasswort = '') and (StrIPos('FRITZ!Box Anmeldung', FHtml) > 0) then
          FIntErrStr := 'Sie benötigen ein gültiges Kennwort um die Anrufliste der Box abzuholen !';
      except
        on E: Exception do FIntErrStr := E.Message;
      end;

      //Auf abbruch prüfen
      if Terminated then goto DoAbortAll;


      if Assigned(FOnStatus) then
        FOnStatus('Fritz!Box Anrufliste abholen ...');

      try
        FHtml := HTTP.Get('http://'+FBoxURL+'/cgi-bin/webcm?' +
                          'getpage=../html/de/FRITZ!Box_Anrufliste.csv');

        sTelList := StrAfter('Dauer', FHtml);
        sTelList := Trim(sTelList);
      except
        on E: Exception do FIntErrStr := E.Message;
      end;

      //Auf abbruch prüfen
      if Terminated then goto DoAbortAll;
    end;




  //Telefonliste löschen
  if (FDeleteOnBox) and (FIntErrStr = '') then
    begin
      if Assigned(FOnStatus) then
        FOnStatus('Fritz!Box Anrufliste löschen ...');
      with Params do
        begin
          Clear;
          Add('getpage=../html/de/menus/menu2.html');
          Add('errorpage=../html/de/menus/menu2.html');
          Add('var:lang=de');
          Add('var:pagename=foncalls');
          Add('var:errorpagename=foncalls');
          Add('var:menu=fon');
          Add('var:pagemaster=');
          Add('telcfg:settings/ClearJournal=1');
        end;

      try
        FHtml := HTTP.Post('http://'+FBoxURL+'/cgi-bin/webcm', Params);
      except
        on E: Exception do FIntErrStr := E.Message;
      end;

      //Auf abbruch prüfen
      if Self.Terminated then goto DoAbortAll;
    end;


  //Event auslösen
  if Assigned(FOnHttpResult) then
    FOnHttpResult(sTelList, FIntErrStr);


  DoAbortAll:

  Params.Free;
  HTTP.Free;
end;
[edit=Jelly]Die zu langen Zeilen auf Wunsch etwas umgebrochen Mfg, Jelly[/edit]
  Mit Zitat antworten Zitat