Index: scanies-ltsp/trunk/.directory
===================================================================
--- scanies-ltsp/trunk/.directory	(nonexistent)
+++ scanies-ltsp/trunk/.directory	(revision 131)
@@ -0,0 +1,2 @@
+[Desktop Entry]
+Icon=./.icon.png

Property changes on: scanies-ltsp/trunk/.directory
___________________________________________________________________
Added: svn:executable
Index: scanies-ltsp/trunk/.project
===================================================================
--- scanies-ltsp/trunk/.project	(nonexistent)
+++ scanies-ltsp/trunk/.project	(revision 131)
@@ -0,0 +1,5 @@
+# Gambas Project File 2.0
+Title=scanies-ltsp
+Startup=scaniesltsp
+Version=0.0.23
+TabSize=2
Index: scanies-ltsp/trunk/scanies-ltsp
===================================================================
--- scanies-ltsp/trunk/scanies-ltsp	(nonexistent)
+++ scanies-ltsp/trunk/scanies-ltsp	(revision 131)
@@ -0,0 +1,58 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          scanies-ltsp
+# Default-Start:     2 
+# Short-Description: Demonio para scanies
+### END INIT INFO
+#
+# Autor: Francisco Paniagua S�nchez
+#
+
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/bin/scanies-ltsp.gambas
+NAME=scanies-ltsp
+
+do_start()
+{
+ echo -n "Iniciando $NAME ..."
+ /usr/bin/scanies-ltsp.gambas &
+ echo "."
+}
+
+do_stop()
+{
+  echo -n "Parando $NAME ..."
+  PID=`ps -AF | grep scanies-ltsp.gambas | grep -v grep | awk '{print $2}'`
+  if [ ! -z "$PID" ]; then
+     kill -9 $PID
+  fi
+  PID=`ps -AF | grep _scanies._tcp | grep -v grep | awk '{print $2}'`
+  if [ ! -z "$PID" ]; then
+     kill -9 $PID
+  fi
+  echo "."
+}
+
+case "$1" in
+  start)
+        do_start
+	;;
+	
+  stop)
+        do_stop
+	;;
+
+  restart|reload|force-reload)
+        do_stop 
+	sleep 2
+        do_start
+	;;
+	
+  *)
+	echo "Usage: /etc/init.d/scanies-ltsp {start|stop|restart}" >&2
+	exit 1
+	;;
+esac
+
+exit 0
Index: scanies-ltsp/trunk/.gambas/SCANIESLTSP
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: scanies-ltsp/trunk/.gambas/SCANIESLTSP
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: scanies-ltsp/trunk/.icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: scanies-ltsp/trunk/.icon.png
___________________________________________________________________
Added: svn:executable
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: scanies-ltsp/trunk/scaniesltsp.class
===================================================================
--- scanies-ltsp/trunk/scaniesltsp.class	(nonexistent)
+++ scanies-ltsp/trunk/scaniesltsp.class	(revision 131)
@@ -0,0 +1,188 @@
+' Gambas class file
+' This program IS free software; you can redistribute it AND/OR
+' modify it under the terms of the GNU General PUBLIC License AS
+' published by the Free Software Foundation; either version 2 of the
+' License, OR (at your option) any later version.
+' 
+' This program IS distributed IN the hope that it will be useful, but
+' IS provided AS IS, WITHOUT ANY WARRANTY; without even the implied
+' warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
+' NON-INFRINGEMENT.  See the GNU General PUBLIC License FOR more details.
+' 
+' You should READ the GNU General PUBLIC License
+' IF you have non, WRITE TO the Free Software
+' Foundation, INC., 59 Temple Place - Suite 330, Boston,
+' # MA 02111-1307, USA.
+' ----------------------------------------------------------------------------
+' ################################################
+' # file name               : scaniesltsp.class
+' # created in project      : scanies-ltsp
+' # created by              : Francisco Paniagua Sánchez
+' # mail                    : adminies.franciscodeorellana@edu.juntaextremadura.net
+' # created at              : 10/03/2009
+' # last test with          : gambas-2.7-1
+' ################################################
+
+STATIC clase AS scaniesltsp
+PRIVATE proceso AS Process
+
+
+STATIC PUBLIC SUB Main()
+  
+  clase = NEW scaniesltsp
+  
+END
+
+PUBLIC SUB _New()
+  
+  proceso = SHELL "avahi-browse _workstation._tcp -frpkl | grep \"eth0;IPv4\"" FOR INPUT 
+  
+END
+
+PRIVATE FUNCTION obtener_mac(cadena AS String[]) AS String
+  
+ RETURN Right(cadena[2], 2) & ":" & Right(cadena[3], 2) & ":" & Right(cadena[4], 2) & ":" & Right(cadena[5], 2) & ":" & Right(cadena[6], 2) & ":" & Right(cadena[7], 2) 
+  
+END
+
+PRIVATE FUNCTION esportatil(servidor AS String, cliente AS String) AS String
+DIM aula AS String[]
+DIM caracteres AS Byte
+DIM resultado AS String
+
+  aula = Split(servidor, "-")
+  caracteres = Len(aula[0])
+  
+  IF (aula[0] = Left(cliente, caracteres)) THEN 
+   'es cliente ligero mantenemos nombre
+   resultado = cliente
+  ELSE 'es portatil anexamos nombre clase
+   resultado = servidor & "--" & cliente
+  ENDIF 
+  
+  RETURN resultado
+  
+END
+
+PRIVATE SUB publicar(aula AS String, nombre AS String, direccion AS String, mac AS String)
+DIM texto AS String
+DIM fichero AS String
+DIM dato AS String
+DIM ip AS String[]
+DIM dirip AS String
+DIM nombrefinal AS String
+
+ fichero = "/tmp/temporalscan"
+
+'esto es porque a veces se meten direcciones ipv6  
+  IF (Left(direccion, 7) = "192.168") THEN 
+   texto = direccion & "#" & mac
+  ELSE 
+   'Hay que resolverlo a mano
+   SHELL "avahi-resolve-host-name -4 " & nombre & ".local > " & fichero WAIT
+
+   TRY dato = File.Load(fichero)
+      
+   'si el dato es vacio
+    IF (dato <> "") THEN 
+      ip = Split(dato, "\t")
+      dirip = Left(ip[1], Len(ip[1]) - 1)
+    ELSE 
+      dirip = "no-ip"
+    ENDIF 
+   
+   texto = dirip & "#" & mac
+  
+  ENDIF 
+   nombrefinal = esportatil(aula, nombre)
+   SHELL "avahi-publish-service -f " & nombrefinal & " _scanies._tcp 9013 " & texto & " 2>/dev/null &" WAIT 
+  
+END
+
+
+PUBLIC SUB borrar(nombre AS String)
+DIM fichero AS String
+DIM buscar AS String
+
+    fichero = "/tmp/buscar"
+    
+    buscar = nombre & " _scanies._tcp"
+   
+    'lo borro de la red
+    SHELL "ps aux | grep \"" & buscar & "\" | grep -v grep | awk '{print $2}' > " & fichero WAIT 
+    'TRY pid = File.Load(fichero)
+    SHELL "kill -9 `cat " & fichero & "` 2>/dev/null" WAIT 
+                  
+  
+END
+
+
+
+PUBLIC SUB process_read()
+DIM cadena AS String
+DIM campos AS String[]
+DIM mascampos AS String[]
+DIM nombre AS String
+DIM direccionip AS String
+DIM mac AS String
+DIM pid AS String
+DIM nombreservidor AS String
+DIM failedtemp AS String
+DIM failedhost AS String
+DIM aula AS String[]
+
+
+  nombreservidor = Trim(System.host)
+  aula = Split(nombreservidor, ".")
+  
+     
+  TRY LINE INPUT #LAST, cadena
+  
+  IF NOT (Left(cadena, 6) = "Failed") THEN 'si no hay fallo se analiza
+     
+       campos = Split(cadena, ";")
+   
+             IF (campos[0] = "=") THEN 'esta encendido
+   
+               direccionip = campos[7]
+               mascampos = Split(campos[3], "\\") 
+               mac = obtener_mac(mascampos)
+               
+               'publicar
+               publicar(aula[0], mascampos[0], direccionip, mac)           
+               
+   
+             ELSE IF (campos[0] = "-") THEN 'se apaga
+   
+               'fichero = "/tmp/buscar"
+               mascampos = Split(campos[3], "\\")
+               
+               'componer nombre
+               nombre = esportatil(aula[0], mascampos[0])
+               'borrar
+               borrar(nombre)
+                            
+             ELSE 'descartamos 
+              PRINT "Log1 (+): " & cadena 
+             ENDIF 
+  ELSE 
+   'formato es: Failed to resolve service 'nombre-equipo [00:30:05:42:26:35]' of type ... 
+   campos = Split(cadena, " ")
+   failedtemp = campos[4]
+   'obtener solo el nombre
+   mascampos = Split(failedtemp, " ")
+   failedhost = Right(mascampos[0], Len(mascampos[0]) - 1)
+   'y borrar de la lista 
+   nombre = esportatil(aula[0], failedhost)
+   borrar(nombre)
+   
+  ENDIF  
+   
+END
+
+
+PUBLIC SUB _free()
+  
+  proceso.Kill
+  
+END
Index: scanies-ltsp/trunk/.settings
===================================================================
--- scanies-ltsp/trunk/.settings	(nonexistent)
+++ scanies-ltsp/trunk/.settings	(revision 131)
@@ -0,0 +1,21 @@
+[Breakpoints]
+Count=0
+
+[DebugWindow]
+Count=0
+
+[FFind]
+SearchIn="Module"
+CaseSensitive=False
+SearchWord=False
+SearchComment=False
+SearchString=True
+
+[OpenFile]
+File[1]="scaniesltsp.class:150.15"
+Active=1
+Count=1
+
+[Watches]
+Count=0
+

Property changes on: scanies-ltsp/trunk/.settings
___________________________________________________________________
Added: svn:executable
Index: scanies-ltsp/trunk/scanies-ltsp.gambas
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: scanies-ltsp/trunk/scanies-ltsp.gambas
___________________________________________________________________
Added: svn:executable
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
