desarrollosconsejeria/adtos-aula/1.7-0/serveradtospro/globales.pas @ 23a384b9
23a384b9 | Elisa | unit globales ;
|
|
{$mode objfpc}{$H+}
|
|||
interface
|
|||
uses
|
|||
unix,Classes, SysUtils,process,IniFiles;
|
|||
const
|
|||
PUERTO_ROOT:integer=37999;
|
|||
PUERTO_USUARIO:integer=38000;
|
|||
PUERTO_VNC:integer=5988;
|
|||
var
|
|||
fdirpersonal:string;
|
|||
fdirrecibidos:string;
|
|||
fusuario:string;
|
|||
fenviar:string;
|
|||
fapagando:boolean=false;
|
|||
fmipuerto:integer;
|
|||
g_maquina_profe:boolean=false;
|
|||
g_finalizar:boolean=false;
|
|||
g_dirmensaje:string;
|
|||
procedure MatarAplicacion(aplica:String);
|
|||
procedure Ejecutar1 (comando:string);
|
|||
function CrearArchivoMensaje(TipoMensaje,AsuntoMensaje,ContenidoMensaje:string; ArchivoMensaje:String='0'):boolean;
|
|||
function HallarDatos(Cmd:string):String;
|
|||
function compruebaPasswordRoot(password:String):Boolean;
|
|||
function EncriptaXOR(cadena,clave : string) : string;
|
|||
Function quitaEspacios(texto:String):String;
|
|||
Function poneEspacios(texto:String):String;
|
|||
implementation
|
|||
Function quitaEspacios(texto:String):String;
|
|||
begin
|
|||
result:=StringReplace(texto,' ','&#', [rfReplaceAll])
|
|||
end;
|
|||
Function poneEspacios(texto:String):String;
|
|||
begin
|
|||
result:=StringReplace(texto,'&#',' ', [rfReplaceAll])
|
|||
end;
|
|||
function EncriptaXOR(cadena,clave : string) : string;
|
|||
var
|
|||
i : integer;
|
|||
begin
|
|||
result:='';
|
|||
for i:=1 to length(cadena) do
|
|||
result:=result+chr(ord(cadena[i]) xor ord(clave[(i mod length(clave))+1]));
|
|||
end;
|
|||
function compruebaPasswordRoot(password:String):Boolean;
|
|||
const
|
|||
GENERA_PASSWORD:STRING=' mkpasswd -H md5 %s -S %s ';
|
|||
HALLA_SALT:String='cat /etc/shadow | grep "^root:" | head -n 1| cut -f3 -d"$"';
|
|||
HALLA_PASSWORD:String='cat /etc/shadow | grep "^root:" | cut -f4 -d"$" |cut -f1 -d":"';
|
|||
HALLA_NUMERO:String='cat /etc/shadow | grep "^root:" | cut -f2 -d"$"';
|
|||
var
|
|||
clavecorrecta:Boolean;
|
|||
passwordRoot:String;
|
|||
passwordGenerado:String;
|
|||
salt:String;
|
|||
orden:String;
|
|||
numero:String;
|
|||
ordenpasw:String;
|
|||
begin
|
|||
try
|
|||
clavecorrecta:=false;
|
|||
passwordRoot:=HallarDatos(HALLA_PASSWORD);
|
|||
salt:=HallarDatos(HALLA_SALT);
|
|||
numero:=HallarDatos(HALLA_NUMERO);
|
|||
ordenpasw:='perl -e '+ QuotedStr('print crypt("%s","\$%s\$%s"), "\n"');
|
|||
ordenpasw:=Format(ordenpasw,[password,numero,salt]);
|
|||
passwordRoot:='$'+numero+'$'+salt+'$'+passwordRoot;
|
|||
orden:=Format(GENERA_PASSWORD,[password,salt]);
|
|||
passwordGenerado:=HallarDatos(ordenpasw);
|
|||
if passwordGenerado = passwordRoot then
|
|||
clavecorrecta:=true
|
|||
else
|
|||
clavecorrecta:=false ;
|
|||
Result:=clavecorrecta;
|
|||
except
|
|||
Result:=false;;
|
|||
end;
|
|||
end;
|
|||
function HallarDatos(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:='';
|
|||
//writeln('Error al hallar dato');
|
|||
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;
|
|||
procedure Ejecutar1 (comando:string);
|
|||
begin;
|
|||
unix.fpSystem(comando);
|
|||
end;
|
|||
procedure MatarAplicacion(aplica:String);
|
|||
const
|
|||
ORDEN_MATAR:STRING='killall %s & 2>>/dev/null';
|
|||
var
|
|||
orden:string;
|
|||
begin
|
|||
orden:=format(ORDEN_MATAR,[aplica]);
|
|||
unix.fpSystem(orden);
|
|||
end;
|
|||
function CrearArchivoMensaje(TipoMensaje,AsuntoMensaje,ContenidoMensaje:string; ArchivoMensaje:String='0'):boolean;
|
|||
const
|
|||
NOMBRE_ALUMNO:string='Profesor';
|
|||
var
|
|||
Mifichero:TMemIniFile;
|
|||
begin
|
|||
result:=true;
|
|||
if fileexists(g_dirmensaje) then DeleteFile(g_dirmensaje);
|
|||
try
|
|||
Mifichero := TMemIniFile.Create(g_dirmensaje);
|
|||
with Mifichero do
|
|||
begin
|
|||
WriteString('MENSAJE','mensaje',ContenidoMensaje);
|
|||
WriteString('MENSAJE','tipo', TipoMensaje);
|
|||
WriteString('MENSAJE','titulo',AsuntoMensaje);
|
|||
WriteString('MENSAJE','tiempo','30');
|
|||
WriteString('MENSAJE','usuario',NOMBRE_ALUMNO);
|
|||
WriteString('MENSAJE','archivo',ArchivoMensaje);
|
|||
UpdateFile;
|
|||
Free;
|
|||
end;
|
|||
sleep(2000);
|
|||
except
|
|||
begin
|
|||
result:=false;
|
|||
end;
|
|||
end;
|
|||
end;
|
|||
end.
|