|
Registriert seit: 21. Jul 2002
Ort: Bonn
5.400 Beiträge
Turbo Delphi für Win32
|
Anrufliste der FritzBox auslesen
4. Mai 2007, 22:33
Die FritzBox ist als DSL-Modem und Router weit verbreitet. Einige Modelle besitzen eine VoIP-Funktion inkl. Liste der ein- und ausgegangenen Anrufe. Diese kann man auch in Delphi auslesen, wie ACE-ppc zeigt:
Delphi-Quellcode:
function GetCallingsList(AUrl: string; var AErrorString: string; APassword: string = ' '; ADeleteOnBox: boolean = false): string;
function StrAfter( const SubStr, Str: string): string;
var
p:Integer;
begin
Result := ' ';
p := Pos(SubStr,Str);
if P > 0 then begin
Inc(p, Length(SubStr));
while (p<length(str)) and (Str[p]<>' &') do begin
Result := Result + Str[p];
Inc(p);
end;
end;
end;
var
Params: TStringList;
HTTP: TIdHTTP;
HTML: String;
begin
HTTP := TIdHttp.Create( nil);
Params := TStringList.Create;
try
with HTTP do
begin
HandleRedirects := true;
Request.ContentLength := -1;
Request.Accept := ' text/html, */*';
HTTPOptions := [hoForceEncodeParams];
end;
Result := ' ';
// Wenn Passwort vorhanden, Login durchführen
if APassword <> ' ' then
begin
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=' + APassword);
end;
// Versuchen einzuloggen
try
HTML := HTTP.Post(' http://' + AUrl + ' /cgi-bin/webcm', Params);
// Auf ungültiges Passwort prüfen
if Pos(' Kennwort ist ungültig', HTML) > 0 then
AErrorString := ' Kennwort ist ungültig';
except
on E: Exception do AErrorString := E. Message;
end;
end;
// Wenn bereits ein Fehler aufgetreten ist, geht's raus
if AErrorString = ' ' then
Exit;
// Telefonliste holen
try
HTML := HTTP.Get(' http://' + AUrl + ' /cgi-bin/webcm?' +
' getpage=../html/de/FRITZ!Box_Anrufliste.csv');
Result := StrAfter(' Dauer', HTML);
Result := Trim(Result);
except
on E: Exception do AErrorString := E. Message;
end;
// Bei Fehler hier enden
if AErrorString = ' ' then
Exit;
// Telefonliste löschen
if (ADeleteOnBox) then
begin
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
HTML := HTTP.Post(' http://' + AUrl + ' /cgi-bin/webcm', Params);
except
on E: Exception do AErrorString := E. Message;
end;
end;
finally
HTTP.Free;
Params.Free;
end;
end;
[edit=CalganX]Code überarbeitet. Mfg, CalganX[/edit]
»Mein Kaffee ist so schwarz — der fängt gleich an zu rappen...«
|
|
|
Zitat
|