summaryrefslogtreecommitdiffstats
path: root/client/shared/scripts/updateCache
blob: bebb115344214b0ad4eed4bc8d2a01118da3a3d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/bin/bash

# Scirpt para la actualizacion de datos en la cache.
# Versión: 0.9.1, 2008/03/17, - integracion eac
# Versión: 0.9.2, 2010/07/27, -  integracion opengnsys



#1 REPO
#2 nombre del fichero con su extension, tipo /imagen1.img  o /ubuntu.iso
#3 Protocolo TORRENT | MULTICAST    | UNICAST
#4 opciones protocolo   
#5 opciones de update cache


PROG="$(basename $0)"
if [ $# -lt 3 ]; then
    ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG str_REPO _str_Relative_Path_OGIMG_with_/ PROTOCOLO OPCIONES_PROTOCOLO OPCIONES_UPDATECACHE"
    exit $?
fi

REPOSITORIO=$1
PROTOCOLO=$3
OPTPROTOCOLO=$4
REPOIP=$(ogGetRepoIp)
echo $REPOSITORIO $REPOIP $PROTOCOLO $OPTPROTOCOLO
# Si el repositorio local CACHE no existe salimos.
if ! $(ogFindCache >/dev/null); then
        ogRaiseError $OG_ERR_NOTCACHE "CACHE"
        exit $?
fi

#Comprobamos si Actualizacion - existe una imagen con igual nombre pero distinto sum-
#TODO: ogUpdateCacheIsNecesary debe borrar la imagen que tenga igual nombre pero distinto sum-
ogUpdateCacheIsNecesary $1 $2; RETVAL=$?
# si RETVAL=0 => actualizamos  si RETVAL=1 no actaulizasmo-exit 0  || si RETVAL>2 exit 1
[ "$RETVAL" == "1" ] && exit 0
[ "$RETVAL" -gt  "1" ] && exit 1


CACHESIZEFREE=$(ogGetFreeSize `ogFindCache`)
FILESIZE=$(ls -sk $(ogGetPath $1 $2) | cut -f1 -d" ")

if [ "$FILESIZE" -ge "$CACHESIZEFREE" ]  
then
	echo "el tamanio del fichero $2 = $FILESIZE es mayor que el espacio dispinible en la cache = $CACHESIZEFREE"
	ogRaiseError $OG_ERR_CACHESIZE "CACHE"
    exit $?
fi

ogUpdateCacheIsNecesary $1 $2; RETVAL=$?
# si RETVAL=0 => actualizamos  si RETVAL=1 no actaulizasmo-exit 0  || si RETVAL>2 exit 1
[ "$RETVAL" == "1" ] && exit 0
[ "$RETVAL" -gt  "1" ] && exit 1

ogMountCache

## Si no existe, crear subdirectorio para el fichero en la cache.
IMGDIR=$(ogGetParentPath "$1" "/$2")
if [ $? != 0 ]; then
    echo "[5] Crear subdirectorio del fichero  \"$2 $(dirname "$2")."
   ogMakeDir "CACHE" $(dirname "/$2")
   IMGDIR=$(ogGetParentPath "$1" "/$2") || exit $?
fi




case "$PROTOCOLO" in
	torrent | TORRENT )
		echo "ogCopyFile $1 $2.torrent absolute $OGCAC$OGIMG"
		ogCopyFile $1 $2.torrent $OGCAC$OGIMG
		#TODO: comprobar que el tracker definido en el fichero es correcto.
    	#TODO comprobar que el fichero torrent está en cache
		echo "ogTorrentStart CACHE $2.torrent $4"
		ogTorrentStart CACHE $2.torrent $4
	;;
	multicast | MULTICAST )
		echo "determinando puerto principal y auxiliar."
		PORT=$(echo $OPTPROTOCOLO | cut -f1 -d":")
		let PORTAUX=$PORT+1
        #TODO: ticket 379
		NUMBER=$[ ( $RANDOM % 30 )  + 1 ]
		sleep $NUMBER
		#FIN TODO
		echo "comprobando puerto $PORTAUX en $REPOIP (sesion multicast en puerto $PORT) "
		if (nmap -n -sU -p $PORTAUX $REPOIP | grep open)
		then 
	   		ogMcastReceiverFile $PORT CACHE $2
		else
		    # TODO ticket 379 Realizar la petición basada en identificador de operacion
	   		echo "solicita la apertura:  hose $REPOIP 2009 --out sh -c "echo -ne START_MULTICAST $2 $OPTPROTOCOLO""
	   		hose $REPOIP 2009 --out sh -c "echo -ne START_MULTICAST $2 $OPTPROTOCOLO"
	   		#echo "espero y llamo a: ogMcastReceiverFile $PORT CACHE $2"
	   		sleep 10
	   		if (nmap -n -sU -p $PORTAUX $REPOIP | grep open)
	   		then 
	   			ogMcastReceiverFile $PORT CACHE $2	   
			else
			    echo "la peticion ha fallado: hose $REPOIP 2009 --out sh -c echo -ne START_MULTICAST $2 $OPTPROTOCOLO"
	   		    exit 1
	   		fi
		fi	
	;;
	unicast | UNICAST )
		echo "unicast"
		ogCopyFile $1 $2 $OGCAC$OGIMG
	;;
esac


ogUpdateCacheIsNecesary $1 $2; RETVAL=$?
# si RETVAL=0 => actualizamos  si RETVAL=1 no actaulizasmo-exit 0  || si RETVAL>2 exit 1
[ "$RETVAL" == "0" ] && exit 1
[ "$RETVAL" == "1" ] && exit 0
[ "$RETVAL" -gt  "1" ] && exit 1