desarrollosconsejeria/aulalinex-alumno/4.2-16/serveralumnolinex/demonio.pas @ a2ba555f
a2ba555f | Elisa | unit demonio ;
|
|
{$mode objfpc}{$H+}
|
|||
interface
|
|||
uses
|
|||
clcomandosroot,clservidor,globales,Classes , SysUtils , FileUtil , LResources ,
|
|||
IdCmdTCPServer, IdCommandHandlers,IdContext, HTTPDefs, IdSync;
|
|||
type
|
|||
{ TDataModule1 }
|
|||
TDataModule1 = class (TDataModule )
|
|||
IdCmdTCPOrdenes: TIdCmdTCPServer;
|
|||
procedure activarSonidoCommand(ASender: TIdCommand);
|
|||
procedure apagarSalvaCommand (ASender : TIdCommand );
|
|||
procedure aplicacionCommand (ASender : TIdCommand );
|
|||
procedure archivoCommand (ASender : TIdCommand );
|
|||
procedure carpetaCommand (ASender : TIdCommand );
|
|||
procedure cerrarAlumnoCommand(ASender: TIdCommand);
|
|||
procedure desactivarTRCommand (ASender : TIdCommand );
|
|||
procedure desactivarTRNoCommand (ASender : TIdCommand );
|
|||
procedure desbloquearMonitorOscuroCommand(ASender: TIdCommand);
|
|||
procedure devolverArchivosCommand (ASender : TIdCommand );
|
|||
procedure hallarIPCommand (ASender : TIdCommand );
|
|||
procedure hallarUsuarioCommand (ASender : TIdCommand );
|
|||
procedure IdCmdTCPOrdenesConnect(AContext: TIdContext);
|
|||
procedure iniciarCuestionCommand (ASender : TIdCommand );
|
|||
procedure iniciarExamenCommand (ASender : TIdCommand );
|
|||
procedure limpiarCommand (ASender : TIdCommand );
|
|||
procedure mensajeCommand (ASender : TIdCommand );
|
|||
procedure mensajeNoCommand (ASender : TIdCommand );
|
|||
procedure mostrarCommand (ASender : TIdCommand );
|
|||
procedure mostrarNoCommand (ASender : TIdCommand );
|
|||
procedure navegarCommand (ASender : TIdCommand );
|
|||
procedure presentadorCommand (ASender : TIdCommand );
|
|||
procedure ratonCommand (ASender : TIdCommand );
|
|||
procedure ratonNoCommand (ASender : TIdCommand );
|
|||
procedure recogerArchivosCommand (ASender : TIdCommand );
|
|||
procedure Timer1Timer(Sender: TObject);
|
|||
procedure verCommand (ASender : TIdCommand );
|
|||
procedure verNoCommand (ASender : TIdCommand );
|
|||
procedure videoCommand (ASender : TIdCommand );
|
|||
procedure videoNoCommand (ASender : TIdCommand );
|
|||
private
|
|||
procedure CerrarServidor();
|
|||
procedure DesativaSalvaCanon ;
|
|||
procedure iniciarClienteVNC();
|
|||
procedure IniciarDemonio(mip:string);
|
|||
procedure IniciarDemonio1(mip:string);
|
|||
{ private declarations }
|
|||
public
|
|||
{ public declarations }
|
|||
end ;
|
|||
var
|
|||
DataModule1 : TDataModule1 ;
|
|||
miservidor:Tservidor;
|
|||
CONST
|
|||
ORD_NUMERO_INCORRECTA:string='Orden o número parámetros incorrectos';
|
|||
implementation
|
|||
{ TDataModule1 }
|
|||
procedure TDataModule1.IniciarDemonio1(mip:string);
|
|||
var
|
|||
aCommand:TIdCommandHandler;
|
|||
begin
|
|||
IdCmdTCPOrdenes:=TIdCmdTCPServer.Create(nil);
|
|||
with IdCmdTCPOrdenes do
|
|||
begin
|
|||
Bindings.Clear;
|
|||
Bindings.Add;
|
|||
Bindings.items[0].IP:=mip;
|
|||
Bindings.Items[0].Port:=PUERTO_USUARIO;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'navegar';
|
|||
aCommand.OnCommand := @navegarCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='202';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'mensaje';
|
|||
aCommand.OnCommand := @mensajeCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:='$';
|
|||
aCommand.ParamDelimiter:='$';
|
|||
aCommand.NormalReply.Code:='204';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'mensajeNo';
|
|||
aCommand.OnCommand := @mensajeNoCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='205';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'aplicacion';
|
|||
aCommand.OnCommand := @aplicacionCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='206';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'video';
|
|||
aCommand.OnCommand := @videoCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='208';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'videoNo';
|
|||
aCommand.OnCommand := @videoNoCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='209';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'ver';
|
|||
aCommand.OnCommand := @verCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='210';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'verNo';
|
|||
aCommand.OnCommand := @verNoCommand;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='211';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'mostrar';
|
|||
aCommand.OnCommand := @mostrarCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='212';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'mostrarNo';
|
|||
aCommand.OnCommand := @mostrarNoCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='213';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'raton';
|
|||
aCommand.OnCommand := @ratonCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='214';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'ratonNo';
|
|||
aCommand.OnCommand := @ratonNoCommand;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='215';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'presentador';
|
|||
aCommand.OnCommand := @presentadorCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='217';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'desactivarTR';
|
|||
aCommand.OnCommand := @desactivarTRCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='219';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'desactivarTRNo';
|
|||
aCommand.OnCommand := @desactivarTRNoCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='220';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'limpiar';
|
|||
aCommand.OnCommand := @limpiarCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='225';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'apagarSalva';
|
|||
aCommand.OnCommand := @apagarSalvaCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='226';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'iniciarCuestion';
|
|||
aCommand.OnCommand := @iniciarCuestionCommand;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='250';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'iniciarExamen';
|
|||
aCommand.OnCommand := @iniciarExamenCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='251';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'carpeta';
|
|||
aCommand.OnCommand := @carpetaCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='253';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'archivo';
|
|||
aCommand.OnCommand := @archivoCommand;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='252';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'recogerArchivos';
|
|||
aCommand.OnCommand := @recogerArchivosCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='254';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'devolverArchivos';
|
|||
aCommand.OnCommand := @devolverArchivosCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='255';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'hallarUsuario';
|
|||
aCommand.OnCommand := @hallarUsuarioCommand;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='256';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'cerrarAlumno';
|
|||
aCommand.OnCommand := @cerrarAlumnoCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='257';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'activarSonido';
|
|||
aCommand.OnCommand := @activarSonidoCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='258';
|
|||
aCommand.Enabled:=true;
|
|||
aCommand:=CommandHandlers.Add;
|
|||
aCommand.Command := 'desbloquearMonitorOscuro';
|
|||
aCommand.OnCommand := @desbloquearMonitorOscuroCommand;
|
|||
aCommand.Disconnect:=true;
|
|||
aCommand.CmdDelimiter:=#32;
|
|||
aCommand.ParamDelimiter:=#32;
|
|||
aCommand.NormalReply.Code:='402';
|
|||
aCommand.Enabled:=true;
|
|||
OnConnect:=@IdCmdTCPOrdenesConnect;
|
|||
DefaultPort:=PUERTO_USUARIO;
|
|||
MaxConnections:=0;
|
|||
ListenQueue:=15;
|
|||
TerminateWaitTime:=5000;
|
|||
active:=true;
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.IniciarDemonio(mip:string);
|
|||
var
|
|||
orden, usuarioA:String;
|
|||
begin
|
|||
usuarioA:= GetEnvironmentVariable('USER');
|
|||
orden:= 'cierraServidorAlumno ' + usuarioA;
|
|||
// writeln(orden);
|
|||
try
|
|||
IniciarDemonio1(mip);
|
|||
except
|
|||
try
|
|||
with ThrComandosRoot.create('localhost',36999,400,orden) do Resume;
|
|||
sleep(3000);
|
|||
IniciarDemonio1(mip);
|
|||
except
|
|||
IdCmdTCPOrdenes.active:=false;
|
|||
writeln('Serveralumnolinex ya está iniciado');
|
|||
Halt;
|
|||
end;
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.CerrarServidor();
|
|||
var
|
|||
lista:Tlist;
|
|||
i:integer;
|
|||
begin
|
|||
lista:=IdCmdTCPOrdenes.Contexts.LockList;
|
|||
try
|
|||
for i:=(lista.Count -1) downto 0 do
|
|||
TIdContext(lista.items[i]).Connection.Disconnect();
|
|||
finally
|
|||
IdCmdTCPOrdenes.Contexts.UnlockList;
|
|||
end;
|
|||
sleep(IdCmdTCPOrdenes.TerminateWaitTime);
|
|||
IdCmdTCPOrdenes.active:=false;
|
|||
IdCmdTCPOrdenes.Bindings.Clear;
|
|||
end;
|
|||
procedure TDataModule1.hallarIPCommand (ASender : TIdCommand );
|
|||
begin
|
|||
Asender.Reply.SetReply(301,miservidor.IP);
|
|||
ASender.SendReply;
|
|||
end;
|
|||
procedure TDataModule1.apagarSalvaCommand (ASender : TIdCommand );
|
|||
const
|
|||
ORD_APAGAR_SALVA:string='gnome-screensaver-command --exit &';
|
|||
begin
|
|||
if ASender.Params.Count<>0 then exit;
|
|||
if fapagando then exit;
|
|||
try
|
|||
Ejecutar(ORD_APAGAR_SALVA);
|
|||
except
|
|||
//
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.aplicacionCommand (ASender : TIdCommand );
|
|||
var
|
|||
orden:String;
|
|||
begin
|
|||
try
|
|||
if ASender.Params.Count=1 then
|
|||
begin
|
|||
orden:=HTTPDecode(Asender.Params[0]);
|
|||
orden:= g_export_display+ orden +' & 2>> /dev/null';
|
|||
Ejecutar(orden);
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln(ORD_NUMERO_INCORRECTA);
|
|||
end;
|
|||
except
|
|||
writeln('orden o número de parámetros incorrectos');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.archivoCommand (ASender : TIdCommand );
|
|||
var
|
|||
orden,titulo,mensaje,archivo1:string;
|
|||
stream:TFileStream;
|
|||
begin
|
|||
if fapagando then exit;
|
|||
try
|
|||
if (Asender.Params.Count=3) then
|
|||
begin
|
|||
archivo1:=g_directorio_recogidos+'/'+HTTPDecode(Asender.Params[0]);
|
|||
mensaje:=Asender.Params[1];
|
|||
titulo:=Asender.Params[2];
|
|||
Asender.sendReply;
|
|||
stream:=TfileStream.create(archivo1,fmcreate);
|
|||
try
|
|||
asender.Context.Connection.IOHandler.ReadStream(stream,-1,false);
|
|||
if CrearArchivoMensaje('1',titulo,mensaje,'1') then
|
|||
begin
|
|||
orden:=g_export_display+'/usr/bin/alumnolinex &';
|
|||
Ejecutar(orden);
|
|||
end;
|
|||
finally
|
|||
freeandnil(stream)
|
|||
end;
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln(ORD_NUMERO_INCORRECTA);
|
|||
end;
|
|||
except
|
|||
writeln('Error al enviar archivo');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.carpetaCommand (ASender : TIdCommand );
|
|||
const
|
|||
ORD_DESCOMPRIMIR:STRING= '(cd %s; tar xzvf aulalinex-carpeta.tar.gz;rm -f %s) &';
|
|||
var
|
|||
titulo:string;
|
|||
mensaje:string;
|
|||
orden,archivo:string;
|
|||
stream:TFileStream;
|
|||
begin
|
|||
if fapagando then exit;
|
|||
try
|
|||
if (Asender.Params.Count=2) then
|
|||
begin
|
|||
archivo:=g_directorio_personal+'/recibidos_profesor/aulalinex-carpeta.tar.gz';
|
|||
mensaje:=Asender.Params[0];
|
|||
titulo:=Asender.Params[1];
|
|||
Asender.sendReply;
|
|||
stream:=TfileStream.create(archivo,fmcreate);
|
|||
try
|
|||
asender.Context.Connection.IOHandler.ReadStream(stream,-1,false);
|
|||
finally
|
|||
freeandnil(stream);
|
|||
sleep(2000);
|
|||
orden:=Format(ORD_DESCOMPRIMIR,[g_directorio_recogidos,archivo]);
|
|||
ejecutar1(orden);
|
|||
if CrearArchivoMensaje('1',titulo,mensaje,'1') then
|
|||
begin
|
|||
orden:='/usr/bin/alumnolinex &';
|
|||
ejecutar1(orden);
|
|||
end;
|
|||
end;
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln(ORD_NUMERO_INCORRECTA);
|
|||
end;
|
|||
except
|
|||
writeln('Error al recibir carpeta');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.cerrarAlumnoCommand(ASender: TIdCommand);
|
|||
begin
|
|||
if ASender.Params.Count<>0 then exit;
|
|||
CerrarServidor;
|
|||
end;
|
|||
procedure TDataModule1.activarSonidoCommand(ASender: TIdCommand);
|
|||
var
|
|||
orden,estado:String;
|
|||
begin
|
|||
try
|
|||
if ASender.Params.Count =1 then
|
|||
begin
|
|||
estado:=Asender.Params[0];
|
|||
orden:='amixer -c 0 -- sset Master ' + estado +' &';
|
|||
Asender.Reply.SetReply(258,'correcto');
|
|||
ASender.SendReply;
|
|||
Ejecutar(orden);
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln(ORD_NUMERO_INCORRECTA)
|
|||
end;
|
|||
except
|
|||
writeln('Error al cambiar el sonido')
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.desactivarTRCommand (ASender : TIdCommand );
|
|||
begin
|
|||
try
|
|||
if ASender.Params.Count<>0 then exit;
|
|||
miservidor.InactivarTecladoRaton();
|
|||
except
|
|||
//
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.desactivarTRNoCommand (ASender : TIdCommand );
|
|||
begin
|
|||
try
|
|||
if ASender.Params.Count<>0 then exit;
|
|||
miservidor.ActivarTecladoRaton();
|
|||
except
|
|||
//
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.desbloquearMonitorOscuroCommand(ASender: TIdCommand);
|
|||
begin
|
|||
try
|
|||
if Asender.Params.Count=0 then
|
|||
begin
|
|||
miservidor.DesbloquearMonitorNegro();
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln('Orden o número parametros incorrectos');
|
|||
end;
|
|||
except
|
|||
writeln('Error al desbloquear monitor ');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.devolverArchivosCommand (ASender : TIdCommand );
|
|||
const
|
|||
ORD_DESCOMPRIMIR:STRING= '(cd %s; tar -xvzf aulalinex-devueltos.tar.gz) &';
|
|||
var
|
|||
titulo,mensaje,carpasig,asignatura:string;
|
|||
orden,archivo:string;
|
|||
stream:TFileStream;
|
|||
begin
|
|||
if fapagando then exit;
|
|||
try
|
|||
if (Asender.Params.Count=3) then
|
|||
begin
|
|||
asignatura:=Asender.Params[0];
|
|||
mensaje:=Asender.Params[1];
|
|||
titulo:=Asender.Params[2];
|
|||
carpasig:=g_directorio_recogidos+'/'+asignatura;
|
|||
if not DirectoryExists(carpasig) then
|
|||
createdir(carpasig);
|
|||
archivo:=carpasig+'/aulalinex-devueltos.tar.gz';
|
|||
stream:=TfileStream.create(archivo,fmcreate);
|
|||
try
|
|||
Asender.sendReply;
|
|||
asender.Context.Connection.IOHandler.ReadStream(stream,-1,false);
|
|||
finally
|
|||
freeandnil(stream);
|
|||
sleep(2000);
|
|||
orden:=Format(ORD_DESCOMPRIMIR,[carpasig]);
|
|||
Ejecutar(orden);
|
|||
Ejecutar('chmod 777 -R '+ carpasig);
|
|||
if CrearArchivoMensaje('1',titulo,mensaje,'1') then
|
|||
begin
|
|||
orden:=g_export_display+'/usr/bin/alumnolinex &';
|
|||
Ejecutar(orden);
|
|||
end;
|
|||
if FileExists(archivo) then
|
|||
DeleteFile(archivo);
|
|||
end
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln('ORD_NUMERO_INCORRECTA');
|
|||
end;
|
|||
except
|
|||
writeln('No se han podido delvolver los archivos');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.hallarUsuarioCommand (ASender : TIdCommand );
|
|||
var
|
|||
miusuario:string;
|
|||
begin
|
|||
try
|
|||
miusuario:=miservidor.ObtenerNombreUsuario();
|
|||
Asender.Reply.SetReply(306,miusuario);
|
|||
ASender.SendReply;
|
|||
except
|
|||
writeln('Error al detectar el usuario ' + miusuario);
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.IdCmdTCPOrdenesConnect(AContext: TIdContext);
|
|||
var
|
|||
ipOrden:string;
|
|||
begin
|
|||
ipOrden:=trim(AContext.Connection.Socket.Binding.PeerIP);
|
|||
if ((ipOrden<>miservidor.ipprofe) and (miservidor.ipprofe<>'000.000.000.000')) then AContext.Connection.Disconnect;
|
|||
end;
|
|||
procedure TDataModule1.iniciarCuestionCommand (ASender : TIdCommand );
|
|||
const
|
|||
ORD_ALUMNO_CUESTION:string='/usr/bin/aulalinexcuestion &';
|
|||
var
|
|||
archivo1:string;
|
|||
stream:TFileStream;
|
|||
begin
|
|||
if fapagando then exit;
|
|||
try
|
|||
archivo1:=g_directorio_recogidos+ '/.cuestion.ini';
|
|||
if FileExists(archivo1) then DeleteFile(archivo1);
|
|||
asender.sendReply;
|
|||
stream:=TfileStream.create(archivo1,fmcreate);
|
|||
try
|
|||
asender.Context.Connection.IOHandler.ReadStream(stream,-1,false);
|
|||
finally
|
|||
freeandnil(stream);
|
|||
sleep(2000);
|
|||
Ejecutar('chmod 777 ' + archivo1);
|
|||
Ejecutar(g_export_display+ORD_ALUMNO_CUESTION);
|
|||
end;
|
|||
except
|
|||
writeln(ORD_NUMERO_INCORRECTA);
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.iniciarExamenCommand (ASender : TIdCommand );
|
|||
const
|
|||
ORD_ALUMNO_EXAMEN:string='/usr/bin/aulalinexexamen &';
|
|||
var
|
|||
archivo1:string;
|
|||
stream:TFileStream;
|
|||
begin
|
|||
if fapagando then exit;
|
|||
try
|
|||
archivo1:=g_directorio_recogidos+'/.examen.ini';
|
|||
if FileExists(archivo1) then DeleteFile(archivo1);
|
|||
asender.sendReply;
|
|||
stream:=TfileStream.create(archivo1,fmcreate);
|
|||
try
|
|||
asender.Context.Connection.IOHandler.ReadStream(stream,-1,false);
|
|||
finally
|
|||
freeandnil(stream);
|
|||
sleep(2000);
|
|||
Ejecutar('chmod 777 ' + archivo1);
|
|||
Ejecutar(g_export_display+ORD_ALUMNO_EXAMEN);
|
|||
end;
|
|||
except
|
|||
writeln(ORD_NUMERO_INCORRECTA);
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.limpiarCommand (ASender : TIdCommand );
|
|||
const
|
|||
ORD_LIMPIAR:string='rm -rf %s/*';
|
|||
var
|
|||
tipo:integer;
|
|||
orden:String;
|
|||
begin
|
|||
try
|
|||
if Assigned (ASender.Params) then
|
|||
begin
|
|||
tipo:=strtoint(Asender.Params[0]);
|
|||
case tipo of
|
|||
0:
|
|||
begin
|
|||
orden:=format(ORD_LIMPIAR,[g_directorio_recogidos]);
|
|||
Ejecutar(orden);
|
|||
end;
|
|||
1:
|
|||
begin
|
|||
orden:=format(ORD_LIMPIAR,[g_directorio_enviar]);
|
|||
Ejecutar(orden);
|
|||
end ;
|
|||
2:
|
|||
begin
|
|||
orden:=format(ORD_LIMPIAR,[g_directorio_recogidos]);
|
|||
Ejecutar(orden);
|
|||
orden:=format(ORD_LIMPIAR,[g_directorio_enviar]);
|
|||
Ejecutar(orden);
|
|||
end;
|
|||
end;
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln(ORD_NUMERO_INCORRECTA);
|
|||
end;
|
|||
except
|
|||
writeln('orden o número de parámetros incorrecto');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.mensajeCommand (ASender : TIdCommand );
|
|||
var
|
|||
orden,tipo,asunto, mensaje:String;
|
|||
begin
|
|||
try
|
|||
if ASender.Params.Count =3 then
|
|||
begin
|
|||
tipo:=Asender.Params[0];
|
|||
asunto:= Asender.Params[1];
|
|||
mensaje:=Asender.Params[2];
|
|||
if CrearArchivoMensaje(tipo,asunto,mensaje,'0') then
|
|||
begin
|
|||
orden:=g_export_display+'/usr/bin/alumnolinex &';
|
|||
Ejecutar(orden);
|
|||
end;
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln(ORD_NUMERO_INCORRECTA)
|
|||
end;
|
|||
except
|
|||
writeln('Error al enviar el mensaje')
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.mensajeNoCommand (ASender : TIdCommand );
|
|||
begin
|
|||
try
|
|||
if ASender.Params.Count<>0 then exit;
|
|||
MatarAplicacion('alumnolinex');
|
|||
except
|
|||
writeln('Error al cerrar mensaje');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.mostrarCommand (ASender : TIdCommand );
|
|||
const
|
|||
ORDEN_CREAR_CONTRA:STRING='aulaconlinex %s %s/.seral456512';
|
|||
ORDEN_MOSTRAR:string='xvnc4viewer -ViewOnly -UseLocalCursor=0 -LowColourLevel=1 -MenuKey F15 -Shared -Fullscreen -passwd %s %s:5989 &';
|
|||
var
|
|||
archivocontra,orden,contra,ippro:string;
|
|||
begin
|
|||
try
|
|||
if ASender.Params.count=2 then
|
|||
begin
|
|||
contra:=Asender.Params[0];
|
|||
ippro:=Asender.Params[1];
|
|||
orden:=Format(ORDEN_CREAR_CONTRA,[contra,g_directorio_personal]);
|
|||
Ejecutar(orden);
|
|||
sleep(100);
|
|||
archivocontra:=g_directorio_personal+'/.seral456512';
|
|||
orden:=g_export_display+ORDEN_MOSTRAR;
|
|||
orden:=Format(orden,[archivocontra,ippro]);
|
|||
Ejecutar(orden);
|
|||
if miservidor.UsuarioCanon then
|
|||
miservidor.InactivarTecladoRaton();
|
|||
Ejecutar('chmod 777 '+archivocontra);
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln('numero de parametros incorrecto');
|
|||
end;
|
|||
except
|
|||
writeln('Error al mostrar el profesor');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.mostrarNoCommand (ASender : TIdCommand );
|
|||
begin
|
|||
try
|
|||
if ASender.Params.Count<>0 then exit;
|
|||
if fapagando then exit;
|
|||
MatarAplicacion('xvnc4viewer');
|
|||
except
|
|||
writeln('Error al detener mostrar alumno');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.navegarCommand (ASender : TIdCommand );
|
|||
var
|
|||
navegador,orden, pagina:string;
|
|||
begin
|
|||
try
|
|||
if Assigned (ASender.Params) then
|
|||
begin
|
|||
if FileExists('/usr/bin/google-chrome') and (miservidor.UsuarioAlumno <>'root') then
|
|||
navegador:= 'google-chrome'
|
|||
else
|
|||
navegador:='firefox';
|
|||
pagina:=HTTPDecode(Asender.Params[0]);
|
|||
orden:=g_export_display+ navegador+' %s &';
|
|||
orden:= Format(orden,[pagina]);
|
|||
Ejecutar(orden);
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln('orden no admitinda');
|
|||
end;
|
|||
except
|
|||
writeln('Error al ejecutar la orden');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.presentadorCommand (ASender : TIdCommand );
|
|||
begin
|
|||
try
|
|||
if ASender.Params.count=2 then
|
|||
begin
|
|||
Ejecutar('killall xvnc4viewer');
|
|||
iniciarClienteVNC();
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln(ORD_NUMERO_INCORRECTA);
|
|||
end;
|
|||
except
|
|||
writeln('Error al iniciar presentación');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.ratonCommand (ASender : TIdCommand );
|
|||
const
|
|||
ORDEN_CREAR_CONTRA:STRING='aulaconlinex %s %s/.seral456512';
|
|||
ORDEN_MOSTRAR:string='xvnc4viewer -UseLocalCursor=0 -LowColourLevel=1 -MenuKey F15 -Shared -Fullscreen -passwd %s %s:5989 &';
|
|||
ORDEN_MATAR_VNC='killall xvnc4viewer 2>> /dev/null';
|
|||
var
|
|||
archivocontra, orden,ippro,contra:string;
|
|||
begin
|
|||
try
|
|||
if ASender.Params.count=2 then
|
|||
begin
|
|||
Ejecutar(ORDEN_MATAR_VNC);
|
|||
contra:=Asender.Params[0];
|
|||
ippro:=Asender.Params[1];
|
|||
orden:=Format(ORDEN_CREAR_CONTRA,[contra,g_directorio_personal]);
|
|||
Ejecutar(orden);
|
|||
sleep(100);
|
|||
archivocontra:=g_directorio_personal+'/.seral456512';
|
|||
orden:=g_export_display+ORDEN_MOSTRAR;;
|
|||
orden:=Format(orden,[archivocontra,ippro]);
|
|||
Ejecutar(orden);
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln(ORD_NUMERO_INCORRECTA);
|
|||
end;
|
|||
except
|
|||
writeln('Error al ceder el ratón');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.ratonNoCommand (ASender : TIdCommand );
|
|||
const
|
|||
ORDEN_CREAR_CONTRA:STRING='aulaconlinex %s %s/.seral456512';
|
|||
ORDEN_MOSTRAR:string='xvnc4viewer -UseLocalCursor=0 -LowColourLevel=1 -ViewOnly -MenuKey F15 -Shared -Fullscreen -passwd %s %s:5989 &';
|
|||
ORDEN_MATAR_VNC='killall xvnc4viewer';
|
|||
var
|
|||
archivocontra,orden,ippro,contra:string;
|
|||
begin
|
|||
try
|
|||
if ASender.Params.count=2 then
|
|||
begin
|
|||
Ejecutar(ORDEN_MATAR_VNC);
|
|||
contra:=Asender.Params[0];
|
|||
ippro:=Asender.Params[1];
|
|||
orden:=Format(ORDEN_CREAR_CONTRA,[contra,g_directorio_personal]);
|
|||
Ejecutar(orden);
|
|||
sleep(100);
|
|||
archivocontra:=g_directorio_personal+'/.seral456512';
|
|||
orden:=g_export_display+ORDEN_MOSTRAR;;
|
|||
orden:=Format(orden,[archivocontra,ippro]);
|
|||
Ejecutar(orden);
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln(ORD_NUMERO_INCORRECTA);
|
|||
end;
|
|||
except
|
|||
writeln('orden o número de parámetros incorrecto');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.recogerArchivosCommand (ASender : TIdCommand );
|
|||
const
|
|||
ORDEN_COMPRIMIR:string='(cd %s; tar czvf recogidos_alumno.tar.gz %s;touch %s;chmod 777 %s -R )';
|
|||
var
|
|||
orden,asunto, mensaje,archivo:string;
|
|||
stream:TfileStream;
|
|||
crcontador:integer=0;
|
|||
comprimidos:Boolean=false;
|
|||
arch_recogidos:String;
|
|||
begin
|
|||
if fapagando then exit;
|
|||
try
|
|||
arch_recogidos:=g_directorio_personal+'/ficheros_recogidos.txt';
|
|||
if fileExists(arch_recogidos) then Deletefile(arch_recogidos);
|
|||
archivo:=g_directorio_enviar+'/recogidos_alumno.tar.gz';
|
|||
if fileExists(archivo) then Deletefile(archivo);
|
|||
orden:= Format(ORDEN_COMPRIMIR,[g_directorio_enviar,'*',arch_recogidos,g_directorio_enviar]);
|
|||
ejecutar1(orden);
|
|||
while ((comprimidos=false) and (crcontador <500)) do
|
|||
begin
|
|||
comprimidos:=fileExists(arch_recogidos);
|
|||
inc(crcontador);
|
|||
Sleep(100);
|
|||
end;
|
|||
Sleep(1000);
|
|||
if fileExists(archivo) then
|
|||
begin
|
|||
stream:=TfileStream.create(archivo, fmOpenRead+ fmShareDenyNone);
|
|||
try
|
|||
asunto:=Asender.Params[2];
|
|||
mensaje:=Asender.Params[1];
|
|||
ASender.SendReply;
|
|||
asender.Context.Connection.IOHandler.WriteBufferOpen;
|
|||
asender.Context.Connection.IOHandler.Write(stream,0,true);
|
|||
asender.Context.Connection.IOHandler.WriteBufferClose;
|
|||
if CrearArchivoMensaje('1',asunto,mensaje,'0') then
|
|||
begin
|
|||
orden:='/usr/bin/alumnolinex &';
|
|||
ejecutar1(orden);
|
|||
end;
|
|||
finally
|
|||
begin
|
|||
stream.free;
|
|||
if fileExists(archivo) then
|
|||
Deletefile(archivo);
|
|||
end;
|
|||
end;
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln(ORD_NUMERO_INCORRECTA);
|
|||
end;
|
|||
except
|
|||
writeln('orden o número de parámetros incorrecto');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.Timer1Timer(Sender: TObject);
|
|||
begin
|
|||
end;
|
|||
Procedure TDataModule1.iniciarClienteVNC ( );
|
|||
const
|
|||
HALLARX11VNC:string='ps aux | grep %d |head -n 1| grep -v "grep"| grep -v 5989 | grep -c "x11vnc |"';
|
|||
ORDEN_INICIAR_VNC:STRING='x11vnc -shared -forever -noshm -rfbport %d -passwd 02101067 & 2>> /dev/null';
|
|||
var
|
|||
orden:string;
|
|||
numvnc,vncactivo:string;
|
|||
begin
|
|||
try
|
|||
vncactivo:=Format(HALLARX11VNC,[PUERTO_VNC]);
|
|||
numvnc:=HallarDatos(vncactivo);
|
|||
if (numvnc= '0') then
|
|||
begin
|
|||
orden:=g_export_display+ORDEN_INICIAR_VNC;
|
|||
orden:=Format(orden,[PUERTO_VNC]);
|
|||
//writeln('orden '+ orden);
|
|||
Ejecutar(orden);
|
|||
end;
|
|||
except
|
|||
//
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.verCommand (ASender : TIdCommand );
|
|||
begin
|
|||
try
|
|||
if ASender.Params.count=2 then
|
|||
iniciarClienteVNC()
|
|||
else
|
|||
writeln('Numero parametro incorrectos al iniciar servidor vnc');
|
|||
except
|
|||
writeln('Error al mostrar imagen');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.verNoCommand (ASender : TIdCommand );
|
|||
begin
|
|||
try
|
|||
if ASender.Params.Count<>0 then exit;
|
|||
if fapagando then exit;
|
|||
Ejecutar('killall x11vnc &');
|
|||
except
|
|||
writeln('Error al ocultar al alumno')
|
|||
end
|
|||
end;
|
|||
procedure TDataModule1.videoCommand (ASender : TIdCommand );
|
|||
const
|
|||
ORDEN_MIRAR_VIDEO:STRING='cvlc -f --video-on-top udp://@%s &';
|
|||
var
|
|||
orden,ipvlc:string;
|
|||
begin
|
|||
try
|
|||
if fapagando then exit;
|
|||
if Assigned (ASender.Params) then
|
|||
begin
|
|||
ipvlc:=HTTPDecode(Asender.Params[0]);
|
|||
orden:=g_export_display+ORDEN_MIRAR_VIDEO;
|
|||
orden:=Format(orden,[ipvlc]);
|
|||
Ejecutar(orden);
|
|||
end
|
|||
else
|
|||
begin
|
|||
writeln(ORD_NUMERO_INCORRECTA);
|
|||
end;
|
|||
except
|
|||
writeln('Error al iniciar al alumno');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.videoNoCommand (ASender : TIdCommand );
|
|||
begin
|
|||
try
|
|||
if ASender.Params.Count<>0 then exit;
|
|||
if fapagando then exit;
|
|||
MatarAplicacion('vlc');
|
|||
except
|
|||
writeln('Error al detener el vídeo');
|
|||
end;
|
|||
end;
|
|||
procedure TDataModule1.DesativaSalvaCanon;
|
|||
begin
|
|||
end;
|
|||
initialization
|
|||
{$I demonio.lrs}
|
|||
DataModule1:=TDataModule1.create(nil);
|
|||
miservidor:=Tservidor.create;
|
|||
fusuario:=miservidor.UsuarioAlumno;
|
|||
fmipuerto:=miservidor.Puerto;
|
|||
//writeln(miservidor.IPProfe);
|
|||
DataModule1.IniciarDemonio('0.0.0.0');
|
|||
g_directorio_personal:=miservidor.HomeUsuario;
|
|||
g_directorio_recogidos:=miservidor.DirRecibidos;
|
|||
g_directorio_enviar:=miservidor.DirEnviar;
|
|||
if not directoryexists(g_directorio_recogidos) then
|
|||
begin
|
|||
ForceDirectories(g_directorio_recogidos);
|
|||
Ejecutar('chmod 777 ' +g_directorio_recogidos +' -R &');
|
|||
end;
|
|||
if not directoryexists(g_directorio_enviar) then
|
|||
begin
|
|||
ForceDirectories(g_directorio_enviar);
|
|||
Ejecutar('chmod 777 ' +g_directorio_enviar +' -R &');
|
|||
end;
|
|||
g_home_verdadero:=GetEnvironmentVariable('HOME');
|
|||
if DirectoryExists(g_home_verdadero+'/Desktop') then
|
|||
begin
|
|||
Ejecutar('if [ ! -L '+g_home_verdadero+'/Desktop/enviar_al_profesor ]; then ln -s '+ g_directorio_enviar+ ' '+g_home_verdadero+'/Desktop/enviar_al_profesor; fi');
|
|||
Ejecutar('if [ ! -L '+g_home_verdadero+'/Desktop/recibidos_del_profesor ]; then ln -s '+ g_directorio_recogidos+' ' +g_home_verdadero+'/Desktop/recibidos_del_profesor; fi');
|
|||
end;
|
|||
// writeln('g_home_verdadero ',g_home_verdadero);
|
|||
if DirectoryExists('/home/'+miservidor.UsuarioAlumno+'/Desktop') then
|
|||
begin
|
|||
Ejecutar('if [ ! -L /home/'+miservidor.UsuarioAlumno+'/Desktop/enviar_al_profesor ]; then ln -s '+ g_directorio_enviar+ ' /home/'+miservidor.UsuarioAlumno+'/Desktop/enviar_al_profesor; fi');
|
|||
Ejecutar('if [ ! -L /home/'+miservidor.UsuarioAlumno+'/Desktop/recibidos_del_profesor ]; then ln -s '+ g_directorio_recogidos+' /home/'+miservidor.UsuarioAlumno+'/Desktop/recibidos_del_profesor; fi');
|
|||
end;
|
|||
if DirectoryExists('/home/alumnos/'+miservidor.UsuarioAlumno+'/Desktop') then
|
|||
begin
|
|||
Ejecutar('if [ ! -L /home/alumnos/'+miservidor.UsuarioAlumno+'/Desktop/enviar_al_profesor ]; then ln -s '+ g_directorio_enviar+ ' /home/alumnos/'+miservidor.UsuarioAlumno+'/Desktop/enviar_al_profesor; fi');
|
|||
Ejecutar('if [ ! -L /home/alumnos/'+miservidor.UsuarioAlumno+'/Desktop/recibidos_del_profesor ]; then ln -s '+ g_directorio_recogidos+' /home/alumnos/'+miservidor.UsuarioAlumno+'/Desktop/recibidos_del_profesor; fi');
|
|||
end;
|
|||
if DirectoryExists('/homeInst/personal/'+miservidor.UsuarioAlumno+'/Desktop') then
|
|||
begin
|
|||
Ejecutar('if [ ! -L /homeInst/personal/'+miservidor.UsuarioAlumno+'/Desktop/enviar_al_profesor ]; then ln -s '+ g_directorio_enviar+ ' /homeInst/personal/'+miservidor.UsuarioAlumno+'/Desktop/enviar_al_profesor; fi');
|
|||
Ejecutar('if [ ! -L /homeInst/personal/'+miservidor.UsuarioAlumno+'/Desktop/recibidos_del_profesor ]; then ln -s '+ g_directorio_recogidos+' /homeInst/personal/'+miservidor.UsuarioAlumno+'/Desktop/recibidos_del_profesor; fi');
|
|||
end;
|
|||
if DirectoryExists(g_home_verdadero+'/Escritorio') then
|
|||
begin
|
|||
Ejecutar('if [ ! -L '+g_home_verdadero+'/Escritorio/enviar_al_profesor ]; then ln -s '+ g_directorio_enviar+ ' '+g_home_verdadero+'/Escritorio/enviar_al_profesor; fi');
|
|||
Ejecutar('if [ ! -L '+g_home_verdadero+'/Escritorio/recibidos_del_profesor ]; then ln -s '+ g_directorio_recogidos+' '+g_home_verdadero+'/Escritorio/recibidos_del_profesor; fi');
|
|||
end;
|
|||
// writeln('g_home_verdadero ',g_home_verdadero);
|
|||
if DirectoryExists('/home/'+miservidor.UsuarioAlumno+'/Escritorio') then
|
|||
begin
|
|||
Ejecutar('if [ ! -L /home/'+miservidor.UsuarioAlumno+'/Escritorio/enviar_al_profesor ]; then ln -s '+ g_directorio_enviar+ ' /home/'+miservidor.UsuarioAlumno+'/Escritorio/enviar_al_profesor; fi');
|
|||
Ejecutar('if [ ! -L /home/'+miservidor.UsuarioAlumno+'/Escritorio/recibidos_del_profesor ]; then ln -s '+ g_directorio_recogidos+' /home/'+miservidor.UsuarioAlumno+'/Escritorio/recibidos_del_profesor; fi');
|
|||
end;
|
|||
if DirectoryExists('/home/alumnos/'+miservidor.UsuarioAlumno+'/Escritorio') then
|
|||
begin
|
|||
Ejecutar('if [ ! -L /home/alumnos/'+miservidor.UsuarioAlumno+'/Escritorio/enviar_al_profesor ]; then ln -s '+ g_directorio_enviar+ ' /home/alumnos/'+miservidor.UsuarioAlumno+'/Escritorio/enviar_al_profesor; fi');
|
|||
Ejecutar('if [ ! -L /home/alumnos/'+miservidor.UsuarioAlumno+'/Escritorio/recibidos_del_profesor ]; then ln -s '+ g_directorio_recogidos+' /home/alumnos/'+miservidor.UsuarioAlumno+'/Escritorio/recibidos_del_profesor; fi');
|
|||
end;
|
|||
if DirectoryExists('/homeInst/personal/'+miservidor.UsuarioAlumno+'/Escritorio') then
|
|||
begin
|
|||
Ejecutar('if [ ! -L /homeInst/personal/'+miservidor.UsuarioAlumno+'/Escritorio/enviar_al_profesor ]; then ln -s '+ g_directorio_enviar+ ' /homeInst/personal/'+miservidor.UsuarioAlumno+'/Escritorio/enviar_al_profesor; fi');
|
|||
Ejecutar('if [ ! -L /homeInst/personal/'+miservidor.UsuarioAlumno+'/Escritorio/recibidos_del_profesor ]; then ln -s '+ g_directorio_recogidos+' /homeInst/personal/'+miservidor.UsuarioAlumno+'/Escritorio/recibidos_del_profesor; fi');
|
|||
end;
|
|||
//writeln('inciando elservidor');
|
|||
g_dirmensaje:=g_directorio_recogidos+'/.mensaje.ini';
|
|||
if miservidor.UsuarioCanon then
|
|||
miservidor.InactivarTecladoRaton;
|
|||
Finalization
|
|||
FreeAndNil(DataModule1);
|
|||
FreeAndNil(miservidor);
|
|||
end .
|