program WVW_NAS_CONSOLE_TEST_V4;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
Classes,
uThreadTimer,
SysUtils, CustApp,
crt, sockets, baseunix;
const
IPPROTO_IP = 0;
IF_NAMESIZE = 16;
SIOCGIFCONF = $8912;
type
{$packrecords c}
tifr_ifrn = record
case integer of
0 : (ifrn_name: array [0..IF_NAMESIZE-1] of char);
end;
PIFrec = ^TIFrec;
TIFrec = record
ifr_ifrn : tifr_ifrn;
case integer of
0 : (ifru_addr : TSockAddr);
end;
TIFConf = record
ifc_len : longint;
case integer of
0 : (ifcu_buf : pointer);
1 : (ifcu_req : ^tifrec);
end;
var olddiskused: Int64;
function GetLocalIPs:string;
var
i,n,Sd : Integer;
buf : Array[0..1023] of byte;
ifc : TIfConf;
ifp : PIFRec;
names:string;
begin
sd:=fpSocket(AF_INET,SOCK_DGRAM,IPPROTO_IP);
result:='';
if (sd<0) then
exit;
Try
ifc.ifc_len:=Sizeof(Buf);
ifc.ifcu_buf:=@buf;
if fpioctl(sd, SIOCGIFCONF, @ifc)<0 then
Exit;
n:= ifc.ifc_len;
i:=0;
names:='';
While (i<n) do
begin
ifp:=PIFRec(PByte(ifc.ifcu_buf)+i);
names:=names+ ifp^.ifr_ifrn.ifrn_name+ ' ';
//if i>0 then result:=result+',';
result:=NetAddrToStr(ifp^.ifru_addr.sin_addr);
i:=i+sizeof(TIFrec);
end;
Finally
fileClose(sd);
end;
end;
procedure DoOnTimer(Sender: TObject);
var varDISKused:Int64;
varDISKFree:Int64;
varDISKSize:Int64;
varMBadded :Int64;
begin
ClrScr;
Writeln('********************************'+#10+#13);
writeln('IP: '+GetLocalIPs+#10+#13);
Writeln ('Now : ',FormatDateTime('hh:nn:ss',now)+#10+#13);
varDISKfree := DISKfree(0);
varDISKfree := round(varDISKfree / 1024); // KB
varDISKfree := round(varDISKfree / 1024); // MB
writeln('Diskfree: '+IntToStr(varDiskfree)+' MB'+#10+#13);
varDISKSize := DISKSize(0);
varDISKSize := round(varDISKSize / 1024); // KB
varDISKSize := round(varDISKSize / 1024); // MB
writeln('Disksize: '+IntToStr(varDISKSize)+' MB'+#10+#13);
olddiskused := varDISKused;
varDISKused := Disksize(0) - Diskfree(0);
varDISKused := round(varDISKused / 1024); // KB
varDISKused := round(varDISKused / 1024); // MB
writeln('Diskused: '+IntToStr(varDISKused)+' MB'+#10+#13);
varMBadded := varDISKused - olddiskused;
writeln('Added: '+IntToStr(varMBadded)+' MB/s'+#10+#13);
Writeln('********************************'+#10+#13);
end;
var
ThreadTimer: TThreadTimer;
M: TMethod;
begin
olddiskused := varDISKused;
ThreadTimer := TThreadTimer.Create(True);
ThreadTimer.Interval := 1000;
M.Data := nil;
M.Code := @DoOnTimer;
ThreadTimer.OnTimer := TNotifyEvent(M);
ThreadTimer.StartTimer;
Writeln('Press a key to terminate');
Readln;
ThreadTimer.StopTimer;
ThreadTimer.Terminate;
ThreadTimer.WaitFor;
end.