Proyecto

General

Perfil

Descargar (4,01 KB) Estadísticas
| Rama: | Revisión:
unit clservidor;

{$mode objfpc}{$H+}

interface

uses
unix,Classes, SysUtils, StrUtils, IniFiles,process;
type

{ Tservidor }

Tservidor = class
private
fInterface:string;
fIP:String;
fPuerto:integer;
fIPAdministrador:String;
fUsuarioEquipoProfesor:String;
fHomeUsuario:string;
fDirRecibidos:string;
procedure Ejecutar(comando: string);
procedure LeerSetupIni(archivo:string);
function ObtenerMiIp():string;
Function NumOrdLet(num:integer):string;
procedure OrdenarDesactivarInternet();

public
constructor create (archivoini:string='/etc/adtosaula.conf');
property IP:String read fIP;
property Puerto:integer read fPuerto;
property IPAdministrador:String read fIPAdministrador write fIPAdministrador;
property UsuarioEquipoProfesor:String read fUsuarioEquipoProfesor write fUsuarioEquipoProfesor;
property DirRecibidos:String read fDirRecibidos write fDirRecibidos;
property HomeUsuario:String read fHomeUsuario write fHomeUsuario;
function ObtenerNombreUsuario():string;
function ObtenerHomeUsuario(usuario:string):string;
function HallarDato(Cmd: string): string;
end;

implementation
uses globales;

Function Tservidor.NumOrdLet(num:integer):string;
var
letraord:string;
begin
num:=succ(num);
letraord:=ifthen(num<10,'0'+inttostr(num),inttostr(num));
result:=letraord;
end;


procedure Tservidor.Ejecutar (comando:string);
begin;
unix.fpSystem(comando);
end;

function Tservidor.HallarDato(Cmd:string):String;
var
file1: TextFile;
s,t: ansistring;
n: longint;
j:integer;
begin
j:=0;
n:=popen(file1, Cmd, 'r');
if n=-1 then
begin
result:='';
Exit;
end;
t:='';
while not eof(file1) do begin
Readln(File1,s);
t:=t+s+Chr(10);
inc(j);
end;
pclose(file1);
result := trim(t);
end;
constructor Tservidor.create(archivoini:string='/etc/adtosaula.conf');
begin
inherited create;
fInterface:='eth0';
fIPAdministrador:='';
fUsuarioEquipoProfesor:=ObtenerNombreUsuario();
fHomeUsuario:=ObtenerHomeUsuario(fUsuarioEquipoProfesor);
fPuerto:=PUERTO_USUARIO;
if FileExists(archivoini) then
LeerSetupIni(archivoini);
fIP:=ObtenerMiIP();
end;
procedure Tservidor.OrdenarDesactivarInternet();
begin

end;

function Tservidor.ObtenerHomeUsuario(usuario:string):string;
const
ORD_HOME:string='echo ~%s';
var
homeusu:string;
orden:string;
begin
orden:=Format(ORD_HOME,[usuario]);
homeusu:=HallarDato(orden);
fDirRecibidos:=homeusu+'/recibidos_administrador';
result:=trim(homeusu);
end;

function Tservidor.ObtenerNombreUsuario():string;
var
nombreusu:string;
begin
nombreusu:=GetEnvironmentVariable('USER');
if nombreusu='' then nombreusu:=' ';
fUsuarioEquipoProfesor:=nombreusu;
result:=nombreusu;
end;

procedure Tservidor.LeerSetupIni(archivo:string);
var
FicheroIni:TMemIniFile;
begin
try
FicheroIni:=TMemIniFile.create(archivo);
try
with FicheroIni do
begin
fInterface:=ReadString('Red','Interface','eth0');
fIPAdministrador:=ReadString('Administrador','IP','');
end;
finally
FicheroIni.free;
end;
except
writeln('Error al cargar datos');
end;
end;
function Tservidor.ObtenerMiIp():string;
var
mip:string;
begin
mip:=trim(HallarDato('/sbin/ifconfig ' +fInterface+ ' | grep "inet" | head -n 1| tr -s " " | sed "s/^[ \t]*//" | cut -f2 -d":" | cut -f1 -d" "'));
result:=mip;
end;
end.


(3-3/11)