This file is indexed.

/usr/bin/oc-update is in opencaster 3.2.2+dfsg-1.1+b1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/bin/bash

if [ $# -lt 5 ]
then
	/bin/echo "Usage:"
	/bin/echo "oc-update.sh object_carousel_directory association_tag module_version dsmcc_pid carousel_id [compress_mode] [padding_on] [clean_off] [DDB_size] [update_flag] [mount_frequency]"
	/bin/echo "	- carousel_directory: the directory to marshal in an object carousel"
	/bin/echo "	- association_tag aka common tag, referenced by PMTs and AITs, every carousel has one"
	/bin/echo "	- modules_version, all the modules will have the same version, you need to change this to notify to the box files are changed, goes from 0 to 15"
	/bin/echo "	- pid, referenced by PMTs using this carousel"
	/bin/echo "	- carousel_id, referenced by PMTs using this carousel, every carousel has its own, it is an alternative for association_tag, they have the same function"
	/bin/echo "	- compress_mode, 0: don't compress, 1:compress all, 2:smart compress, file with .solo extension are set in an uncompressed module alone to allow use cases like quick image file update, default is 2"
	/bin/echo "	- padding_on, every section is padded, was useful with some buggy decoder, waste bandwidth, default off, unsupported since OpenCaster 2.4.8"
	/bin/echo "	- clean_off, don't delete temp file, default off, used for debug"
	/bin/echo "	- DDB_size, Use custom size for DDB payload, default = max = 4066"
	/bin/echo "	- sets the Update flag in the TransactionID of DSI and DII to the value given (0 or 1)"
	/bin/echo "	- mount_frequency, set how often insert DII/DSI/SGW to speed up carousel mount, default is twice per carousel period"
	/bin/echo
	/bin/echo "Example:"
	/bin/echo "oc-update.sh ocdir1 0xB 5 2003 7 2 0 0 4066 0 2"
	/bin/echo "	carousel_directory: ocdir1"
	/bin/echo "	association_tag: 0xB (11)"
	/bin/echo "	modules_version: 0x5 (5)"
	/bin/echo "	pid: 2001"
	/bin/echo "	carousel_id: 7"
	/bin/echo "	smart compress the carousel"
	/bin/echo "	don't pad"
	/bin/echo "	delete temp files"
	/bin/echo "	use 4066 bytes for DDB size (usual and maximum size)"
	/bin/echo "	sets update flag to 0 in DSI/DII"
	/bin/echo "	insert DSI/DII/SGW twice per carousel length"
	exit 65
fi

#Parameters passing
OCDIR=$1
ASSOCIATION_TAG=$2
MODULE_VERSION=$3
PID=$4
CAROUSEL_ID=$5
COMPRESS_MODE="2"
PAD_ON="0"
NO_DELETE_TEMP="0"
BLOCK_SIZE="4066"
UPDATE_FLAG="0"
MOUNT_PERIOD="2"
if [ $# -gt 5 ]
then
COMPRESS_MODE=$6
fi
if [ $# -gt 6 ]
then
PAD_ON=$
fi
if [ $# -gt 7 ]
then
NO_DELETE_TEMP=$8
fi
if [ $# -gt 8 ]
then
BLOCK_SIZE=$9
fi
if [ $# -gt 9 ]
then
UPDATE_FLAG=${10}
fi
if [ $# -gt 10 ]
then
MOUNT_PERIOD=${11}
fi

#Generate temp directories
TEMP_DIR_MOD=`/bin/mktemp -d`
TEMP_DIR_SEC=`/bin/mktemp -d`

#Generate the modules from the directory, the modules are stored into a tmp directory TEMP_DIR_MOD
/usr/bin/file2mod.py $OCDIR $TEMP_DIR_MOD $CAROUSEL_ID $CAROUSEL_ID $ASSOCIATION_TAG $MODULE_VERSION $BLOCK_SIZE $UPDATE_FLAG $COMPRESS_MODE

#Compress all modules
if [ "$COMPRESS_MODE" = "1" ]
then
	for file in $TEMP_DIR_MOD/*.mod
	do
		/usr/bin/du --apparent-size --block-size 1 $file > $file.size
		/usr/bin/zpipe < $file > $file.z
		/bin/mv $file.z $file
	done
fi

#Compress only "not solo" modules (.jpg, .gif, .png and .solo)
if [ "$COMPRESS_MODE" = "2" ]
then
	for file in $TEMP_DIR_MOD/*.mod
	do
		if [ ! -f $file.solo ]
		then
			/usr/bin/du --apparent-size --block-size 1 $file > $file.size
			/usr/bin/zpipe < $file > $file.z
			/bin/mv $file.z $file
		else
			/bin/rm $file.solo
		fi
	done
fi

#Generate sections from modules, the sections are stored into a tmp directory TEMP_DIR_SEC
/usr/bin/mod2sec.py $TEMP_DIR_MOD $TEMP_DIR_SEC

# Check if it is necessary to pad every sections or not, unluckly we have found some decoders having buggy section filtering that needed this
if [ "$PAD_ON" = "1" ]
then
	echo "UNSUPPORTED SINCE 2.4.8"
else
	# All the single section files are enqueued in a single file, padding will occur only at the end of the last section
	# DSI, DII and sgw are repeated more frequently
	file_number=0
	for file in $TEMP_DIR_SEC/*.sec
	do
		let file_number=$file_number+1
	done
	echo "total carousel section number is $file_number"
	period=$(($file_number/$MOUNT_PERIOD))
	echo "carousel head period is every $period section"
	counter=-1
	for file in $TEMP_DIR_SEC/*.sec
	do
		/bin/cat $file >> $TEMP_DIR_SEC/temp_sec
		let counter=$counter-1
		#echo "counter is $counter"
		if [ $counter -lt 0 ]; then
			let counter=$period
			/bin/cat $TEMP_DIR_SEC/DSI.sec >> $TEMP_DIR_SEC/temp_sec
			/bin/cat $TEMP_DIR_SEC/DII.sec >> $TEMP_DIR_SEC/temp_sec
			/bin/cat $TEMP_DIR_SEC/0001_000000.sec >> $TEMP_DIR_SEC/temp_sec # SGW is 1 section of module id 1
		fi
	done
	/usr/bin/sec2ts $PID < $TEMP_DIR_SEC/temp_sec > $OCDIR.ts
fi

# Delete temp files
if [ "$NO_DELETE_TEMP" = "0" ]
then
/bin/rm -rf $TEMP_DIR_MOD
/bin/rm -rf $TEMP_DIR_SEC
else
/bin/echo "Modules generated in $TEMP_DIR_MOD were not deleted"
/bin/echo "Sections generated in $TEMP_DIR_SEC were not deleted"
fi