1 | #!/bin/sh
|
---|
2 |
|
---|
3 | addons="WEBIF WEBIF_LIVELOG WEBIF_JQUERY TOUCH WITH_SSL HAVE_DVBAPI WITH_NEUTRINO READ_SDT_CHARSETS IRDETO_GUESSING CS_ANTICASC WITH_DEBUG MODULE_MONITOR WITH_LB CS_CACHEEX CW_CYCLE_CHECK LCDSUPPORT LEDSUPPORT CLOCKFIX IPV6SUPPORT"
|
---|
4 | protocols="MODULE_CAMD33 MODULE_CAMD35 MODULE_CAMD35_TCP MODULE_NEWCAMD MODULE_CCCAM MODULE_CCCSHARE MODULE_GBOX MODULE_RADEGAST MODULE_SCAM MODULE_SERIAL MODULE_CONSTCW MODULE_PANDORA MODULE_GHTTP"
|
---|
5 | readers="READER_NAGRA READER_NAGRA_MERLIN READER_IRDETO READER_CONAX READER_CRYPTOWORKS READER_SECA READER_VIACCESS READER_VIDEOGUARD READER_DRE READER_TONGFANG READER_BULCRYPT READER_GRIFFIN READER_DGCRYPT"
|
---|
6 | card_readers="CARDREADER_PHOENIX CARDREADER_INTERNAL CARDREADER_SC8IN1 CARDREADER_MP35 CARDREADER_SMARGO CARDREADER_DB2COM CARDREADER_STAPI CARDREADER_STAPI5 CARDREADER_STINGER CARDREADER_DRECAS"
|
---|
7 |
|
---|
8 | defconfig="
|
---|
9 | CONFIG_WEBIF=y
|
---|
10 | CONFIG_WEBIF_LIVELOG=y
|
---|
11 | CONFIG_WEBIF_JQUERY=y
|
---|
12 | # CONFIG_TOUCH=n
|
---|
13 | # CONFIG_WITH_SSL=n
|
---|
14 | CONFIG_HAVE_DVBAPI=y
|
---|
15 | # CONFIG_WITH_NEUTRINO=n
|
---|
16 | CONFIG_READ_SDT_CHARSETS=y
|
---|
17 | CONFIG_IRDETO_GUESSING=y
|
---|
18 | # CONFIG_CS_ANTICASC=n
|
---|
19 | CONFIG_WITH_DEBUG=y
|
---|
20 | CONFIG_MODULE_MONITOR=y
|
---|
21 | CONFIG_WITH_LB=y
|
---|
22 | # CONFIG_CS_CACHEEX=n
|
---|
23 | # CONFIG_CW_CYCLE_CHECK=n
|
---|
24 | # CONFIG_LCDSUPPORT=n
|
---|
25 | # CONFIG_LEDSUPPORT=n
|
---|
26 | # CONFIG_CLOCKFIX=n
|
---|
27 | # CONFIG_IPV6SUPPORT=n
|
---|
28 | # CONFIG_MODULE_CAMD33=n
|
---|
29 | CONFIG_MODULE_CAMD35=y
|
---|
30 | CONFIG_MODULE_CAMD35_TCP=y
|
---|
31 | CONFIG_MODULE_NEWCAMD=y
|
---|
32 | CONFIG_MODULE_CCCAM=y
|
---|
33 | CONFIG_MODULE_CCCSHARE=y
|
---|
34 | CONFIG_MODULE_GBOX=y
|
---|
35 | # CONFIG_MODULE_RADEGAST=n
|
---|
36 | # CONFIG_MODULE_SERIAL=n
|
---|
37 | # CONFIG_MODULE_CONSTCW=n
|
---|
38 | # CONFIG_MODULE_PANDORA=n
|
---|
39 | CONFIG_MODULE_SCAM=y
|
---|
40 | # CONFIG_MODULE_GHTTP=n
|
---|
41 | CONFIG_WITH_CARDREADER=y
|
---|
42 | CONFIG_READER_NAGRA_COMMON=y
|
---|
43 | CONFIG_READER_NAGRA=y
|
---|
44 | CONFIG_READER_NAGRA_MERLIN=y
|
---|
45 | CONFIG_READER_IRDETO=y
|
---|
46 | CONFIG_READER_CONAX=y
|
---|
47 | CONFIG_READER_CRYPTOWORKS=y
|
---|
48 | CONFIG_READER_SECA=y
|
---|
49 | CONFIG_READER_VIACCESS=y
|
---|
50 | CONFIG_READER_VIDEOGUARD=y
|
---|
51 | CONFIG_READER_DRE=y
|
---|
52 | CONFIG_READER_TONGFANG=y
|
---|
53 | CONFIG_READER_BULCRYPT=y
|
---|
54 | CONFIG_READER_GRIFFIN=y
|
---|
55 | CONFIG_READER_DGCRYPT=y
|
---|
56 | CARDREADER_PHOENIX=y
|
---|
57 | # CARDREADER_DRECAS=n
|
---|
58 | CARDREADER_INTERNAL=y
|
---|
59 | # CARDREADER_SC8IN1=n
|
---|
60 | # CARDREADER_MP35=n
|
---|
61 | # CARDREADER_SMARGO=n
|
---|
62 | # CARDREADER_DB2COM=n
|
---|
63 | # CARDREADER_STAPI=n
|
---|
64 | # CARDREADER_STAPI5=n
|
---|
65 | CARDREADER_STINGER=y
|
---|
66 | "
|
---|
67 |
|
---|
68 | usage() {
|
---|
69 | echo \
|
---|
70 | "OSCam config
|
---|
71 | Usage: `basename $0` [parameters]
|
---|
72 |
|
---|
73 | -g, --gui Start interactive configuration
|
---|
74 |
|
---|
75 | -s, --show-enabled [param] Show enabled configuration options.
|
---|
76 | -Z, --show-disabled [param] Show disabled configuration options.
|
---|
77 | -S, --show-valid [param] Show valid configuration options.
|
---|
78 | Possible params: all, addons, protocols,
|
---|
79 | readers, card_readers
|
---|
80 |
|
---|
81 | -l, --list-config List active configuration variables.
|
---|
82 | -e, --enabled [option] Check if certain option is enabled.
|
---|
83 | -d, --disabled [option] Check if certain option is disabled.
|
---|
84 |
|
---|
85 | -E, --enable [option] Enable config option.
|
---|
86 | -D, --disable [option] Disable config option.
|
---|
87 |
|
---|
88 | The following [option]s enable or disable multiple settings.
|
---|
89 | all - Everything.
|
---|
90 | addons - All addons.
|
---|
91 | protocols - All protocols.
|
---|
92 | readers - All readers.
|
---|
93 | card_readers - All card readers.
|
---|
94 |
|
---|
95 | -R, --restore Restore default config.
|
---|
96 |
|
---|
97 | -v, --oscam-version Display OSCam version.
|
---|
98 | -r, --oscam-revision Display OSCam SVN revision.
|
---|
99 |
|
---|
100 | -O, --detect-osx-sdk-version Find where OS X SDK is located
|
---|
101 |
|
---|
102 | -h, --help Display this help text.
|
---|
103 |
|
---|
104 | Examples:
|
---|
105 | # Enable WEBIF and SSL
|
---|
106 | ./config.sh --enable WEBIF WITH_SSL
|
---|
107 |
|
---|
108 | # Disable WEBIF but enable WITH_SSL
|
---|
109 | ./config.sh --disable WEBIF --enable WITH_SSL
|
---|
110 |
|
---|
111 | # Restore defaults and disable WEBIF and READER_NAGRA
|
---|
112 | ./config.sh --restore --disable WEBIF READER_NAGRA
|
---|
113 |
|
---|
114 | # Use default config with only one enabled reader
|
---|
115 | ./config.sh --restore --disable readers --enable READER_BULCRYPT
|
---|
116 |
|
---|
117 | # Disable everything and enable webif one module and one card reader
|
---|
118 | ./config.sh --disable all --enable WEBIF MODULE_NEWCAMD READER_BULCRYPT
|
---|
119 |
|
---|
120 | # Disable all card readers except INTERNAL
|
---|
121 | ./config.sh -D card_readers -E CARDREADER_INTERNAL
|
---|
122 |
|
---|
123 | Available options:
|
---|
124 | addons: $addons
|
---|
125 | protocols: $protocols
|
---|
126 | readers: $readers
|
---|
127 | card_readers: $card_readers
|
---|
128 | "
|
---|
129 | }
|
---|
130 |
|
---|
131 | # Output directory for config.mak set by --objdir parameter
|
---|
132 | OBJDIR=.
|
---|
133 |
|
---|
134 | # Use flags set by --use-flags parameter
|
---|
135 | USE_FLAGS=
|
---|
136 |
|
---|
137 | have_flag() {
|
---|
138 | for FLAG in $USE_FLAGS
|
---|
139 | do
|
---|
140 | [ "$FLAG" = "$1" ] && return 0
|
---|
141 | done
|
---|
142 | return 1
|
---|
143 | }
|
---|
144 |
|
---|
145 | have_all_flags() {
|
---|
146 | for opt ; do
|
---|
147 | have_flag $opt || return 1
|
---|
148 | done
|
---|
149 | return 0
|
---|
150 | }
|
---|
151 |
|
---|
152 | have_any_flags() {
|
---|
153 | for opt ; do
|
---|
154 | have_flag $opt && return 0
|
---|
155 | done
|
---|
156 | return 1
|
---|
157 | }
|
---|
158 |
|
---|
159 | not_have_flag() {
|
---|
160 | for FLAG in $USE_FLAGS
|
---|
161 | do
|
---|
162 | [ "$FLAG" = "$1" ] && return 1
|
---|
163 | done
|
---|
164 | return 0
|
---|
165 | }
|
---|
166 |
|
---|
167 | not_have_all_flags() {
|
---|
168 | for opt ; do
|
---|
169 | not_have_flag $opt || return 1
|
---|
170 | done
|
---|
171 | return 0
|
---|
172 | }
|
---|
173 |
|
---|
174 | not_have_any_flags() {
|
---|
175 | for opt ; do
|
---|
176 | not_have_flag $opt && return 0
|
---|
177 | done
|
---|
178 | return 1
|
---|
179 | }
|
---|
180 |
|
---|
181 | # Config functions
|
---|
182 | enabled() {
|
---|
183 | grep "^\#define $1 1$" config.h >/dev/null 2>/dev/null
|
---|
184 | return $?
|
---|
185 | }
|
---|
186 |
|
---|
187 | disabled() {
|
---|
188 | grep "^\#define $1 1$" config.h >/dev/null 2>/dev/null
|
---|
189 | test $? = 0 && return 1
|
---|
190 | return 0
|
---|
191 | }
|
---|
192 |
|
---|
193 | enabled_all() {
|
---|
194 | for opt ; do
|
---|
195 | enabled $opt || return 1
|
---|
196 | done
|
---|
197 | return 0
|
---|
198 | }
|
---|
199 |
|
---|
200 | disabled_all() {
|
---|
201 | for opt ; do
|
---|
202 | disabled $opt || return 1
|
---|
203 | done
|
---|
204 | return 0
|
---|
205 | }
|
---|
206 |
|
---|
207 | enabled_any() {
|
---|
208 | for opt ; do
|
---|
209 | enabled $opt && return 0
|
---|
210 | done
|
---|
211 | return 1
|
---|
212 | }
|
---|
213 |
|
---|
214 | disabled_any() {
|
---|
215 | for opt ; do
|
---|
216 | disabled $opt && return 0
|
---|
217 | done
|
---|
218 | return 1
|
---|
219 | }
|
---|
220 |
|
---|
221 | list_enabled() {
|
---|
222 | for OPT in $@
|
---|
223 | do
|
---|
224 | enabled $OPT && echo $OPT
|
---|
225 | done
|
---|
226 | }
|
---|
227 |
|
---|
228 | list_disabled() {
|
---|
229 | for OPT in $@
|
---|
230 | do
|
---|
231 | disabled $OPT && echo $OPT
|
---|
232 | done
|
---|
233 | }
|
---|
234 |
|
---|
235 | write_enabled() {
|
---|
236 | defined_file="webif/is_defined.txt"
|
---|
237 | pages_c="webif/pages.c"
|
---|
238 | rm -f $defined_file $pages_c 2>/dev/null
|
---|
239 | for OPT in $(get_opts) WITH_CARDREADER
|
---|
240 | do
|
---|
241 | enabled $OPT && printf "%s\n" $OPT >> $defined_file
|
---|
242 | done
|
---|
243 | }
|
---|
244 |
|
---|
245 | valid_opt() {
|
---|
246 | [ "$1" = "WITH_CARDREADER" ] && return 0 # Special case
|
---|
247 | echo $addons $protocols $readers $card_readers | grep -w "$1" >/dev/null
|
---|
248 | return $?
|
---|
249 | }
|
---|
250 |
|
---|
251 | enable_opt() {
|
---|
252 | valid_opt $1 && disabled $1 && {
|
---|
253 | sed -e "s|//#define $1 1$|#define $1 1|g" config.h > config.h.tmp && \
|
---|
254 | mv config.h.tmp config.h
|
---|
255 | echo "Enable $1"
|
---|
256 | }
|
---|
257 | }
|
---|
258 |
|
---|
259 | enable_opts() {
|
---|
260 | for OPT in $@
|
---|
261 | do
|
---|
262 | enable_opt $OPT
|
---|
263 | done
|
---|
264 | }
|
---|
265 |
|
---|
266 | disable_opt() {
|
---|
267 | valid_opt $1 && enabled $1 && {
|
---|
268 | sed -e "s|#define $1 1$|//#define $1 1|g" config.h > config.h.tmp && \
|
---|
269 | mv config.h.tmp config.h
|
---|
270 | echo "Disable $1"
|
---|
271 | }
|
---|
272 | }
|
---|
273 |
|
---|
274 | disable_opts() {
|
---|
275 | for OPT in $@
|
---|
276 | do
|
---|
277 | disable_opt $OPT
|
---|
278 | done
|
---|
279 | }
|
---|
280 |
|
---|
281 | get_opts() {
|
---|
282 | OPTS=""
|
---|
283 | case "$1" in
|
---|
284 | 'addons') OPTS="$addons" ; ;;
|
---|
285 | 'protocols') OPTS="$protocols" ; ;;
|
---|
286 | 'readers') OPTS="$readers" ; ;;
|
---|
287 | 'card_readers') OPTS="$card_readers" ; ;;
|
---|
288 | *) OPTS="$addons $protocols $readers $card_readers" ; ;;
|
---|
289 | esac
|
---|
290 | echo $OPTS
|
---|
291 | }
|
---|
292 |
|
---|
293 | update_deps() {
|
---|
294 | # Calculate dependencies
|
---|
295 | enabled_any $(get_opts readers) $(get_opts card_readers) && enable_opt WITH_CARDREADER >/dev/null
|
---|
296 | disabled_all $(get_opts readers) $(get_opts card_readers) && disable_opt WITH_CARDREADER >/dev/null
|
---|
297 | disabled WEBIF && disable_opt WEBIF_LIVELOG >/dev/null
|
---|
298 | disabled WEBIF && disable_opt WEBIF_JQUERY >/dev/null
|
---|
299 | enabled MODULE_CCCSHARE && enable_opt MODULE_CCCAM >/dev/null
|
---|
300 | enabled_any CARDREADER_DB2COM CARDREADER_MP35 CARDREADER_SC8IN1 CARDREADER_STINGER && enable_opt CARDREADER_PHOENIX >/dev/null
|
---|
301 | }
|
---|
302 |
|
---|
303 | list_config() {
|
---|
304 | update_deps
|
---|
305 | # Handle use flags
|
---|
306 | have_flag USE_STAPI && echo "CONFIG_WITH_STAPI=y" || echo "# CONFIG_WITH_STAPI=n"
|
---|
307 | have_flag USE_STAPI5 && echo "CONFIG_WITH_STAPI5=y" || echo "# CONFIG_WITH_STAPI5=n"
|
---|
308 | have_flag USE_COOLAPI && echo "CONFIG_WITH_COOLAPI=y" || echo "# CONFIG_WITH_COOLAPI=n"
|
---|
309 | have_flag USE_COOLAPI2 && echo "CONFIG_WITH_COOLAPI2=y" || echo "# CONFIG_WITH_COOLAPI2=n"
|
---|
310 | have_flag USE_SU980 && echo "CONFIG_WITH_SU980=y" || echo "# CONFIG_WITH_SU980=n"
|
---|
311 | have_flag USE_AZBOX && echo "CONFIG_WITH_AZBOX=y" || echo "# CONFIG_WITH_AZBOX=n"
|
---|
312 | have_flag USE_MCA && echo "CONFIG_WITH_MCA=y" || echo "# CONFIG_WITH_MCA=n"
|
---|
313 | have_flag USE_LIBCRYPTO && echo "CONFIG_WITH_LIBCRYPTO=y" || echo "# CONFIG_WITH_LIBCRYPTO=n"
|
---|
314 | for OPT in $addons $protocols WITH_CARDREADER $readers
|
---|
315 | do
|
---|
316 | enabled $OPT && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
|
---|
317 | done
|
---|
318 | for OPT in $card_readers
|
---|
319 | do
|
---|
320 | if [ $OPT = CARDREADER_INTERNAL ]
|
---|
321 | then
|
---|
322 | # Internal card reader is actually three different readers depending on USE flags
|
---|
323 | enabled $OPT && have_flag USE_AZBOX && echo "CONFIG_${OPT}_AZBOX=y" || echo "# CONFIG_${OPT}_AZBOX=n"
|
---|
324 | enabled $OPT && have_any_flags USE_COOLAPI USE_SU980 && echo "CONFIG_${OPT}_COOLAPI=y" || echo "# CONFIG_${OPT}_COOLAPI=n"
|
---|
325 | enabled $OPT && have_flag USE_COOLAPI2 && echo "CONFIG_${OPT}_COOLAPI2=y" || echo "# CONFIG_${OPT}_COOLAPI2=n"
|
---|
326 | enabled $OPT && not_have_all_flags USE_AZBOX USE_COOLAPI USE_COOLAPI2 USE_SU980 && echo "CONFIG_${OPT}_SCI=y" || echo "# CONFIG_${OPT}_SCI=n"
|
---|
327 | continue
|
---|
328 | fi
|
---|
329 | if [ $OPT = CARDREADER_STAPI ]
|
---|
330 | then
|
---|
331 | # Enable CARDREADER_STAPI only if USE_STAPI is set
|
---|
332 | enabled $OPT && have_flag USE_STAPI && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
|
---|
333 | continue
|
---|
334 | fi
|
---|
335 | if [ $OPT = CARDREADER_STAPI5 ]
|
---|
336 | then
|
---|
337 | # Enable CARDREADER_STAPI5 only if USE_STAPI5 is set
|
---|
338 | enabled $OPT && have_flag USE_STAPI5 && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
|
---|
339 | continue
|
---|
340 | fi
|
---|
341 | enabled $OPT && echo "CONFIG_$OPT=y" || echo "# CONFIG_$OPT=n"
|
---|
342 | done
|
---|
343 | have_flag USE_LIBUSB && echo "CONFIG_CARDREADER_SMART=y" || echo "# CONFIG_CARDREADER_SMART=n"
|
---|
344 | have_flag USE_PCSC && echo "CONFIG_CARDREADER_PCSC=y" || echo "# CONFIG_CARDREADER_PCSC=n"
|
---|
345 | # Extra modules/libraries
|
---|
346 | enabled_any MODULE_GBOX WEBIF && echo "CONFIG_LIB_MINILZO=y" || echo "# CONFIG_LIB_MINILZO=n"
|
---|
347 | not_have_flag USE_LIBCRYPTO && echo "CONFIG_LIB_AES=y" || echo "# CONFIG_LIB_AES=n"
|
---|
348 | enabled MODULE_CCCAM && echo "CONFIG_LIB_RC6=y" || echo "# CONFIG_LIB_RC6=n"
|
---|
349 | not_have_flag USE_LIBCRYPTO && enabled MODULE_CCCAM && echo "CONFIG_LIB_SHA1=y" || echo "# CONFIG_LIB_SHA1=n"
|
---|
350 | enabled_any READER_DRE MODULE_SCAM READER_VIACCESS READER_NAGRA_MERLIN && echo "CONFIG_LIB_DES=y" || echo "# CONFIG_LIB_DES=n"
|
---|
351 | enabled_any MODULE_CCCAM READER_NAGRA READER_NAGRA_MERLIN READER_SECA && echo "CONFIG_LIB_IDEA=y" || echo "# CONFIG_LIB_IDEA=n"
|
---|
352 | not_have_flag USE_LIBCRYPTO && enabled_any READER_CONAX READER_CRYPTOWORKS READER_NAGRA READER_NAGRA_MERLIN && echo "CONFIG_LIB_BIGNUM=y" || echo "# CONFIG_LIB_BIGNUM=n"
|
---|
353 | enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_MDC2=y" || echo "# CONFIG_LIB_MDC2=n"
|
---|
354 | enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_FAST_AES=y" || echo "# CONFIG_LIB_FAST_AES=n"
|
---|
355 | enabled READER_NAGRA_MERLIN && echo "CONFIG_LIB_SHA256=y" || echo "# CONFIG_LIB_SHA256=n"
|
---|
356 | enabled_any READER_NAGRA READER_NAGRA_MERLIN && echo "CONFIG_READER_NAGRA_COMMON=y" || echo "# CONFIG_READER_NAGRA_COMMON=n"
|
---|
357 | }
|
---|
358 |
|
---|
359 | make_config_c() {
|
---|
360 | OPENSSL=$(which openssl 2>/dev/null)
|
---|
361 | if [ "$OPENSSL" = "" ]
|
---|
362 | then
|
---|
363 | echo "// openssl not found!"
|
---|
364 | echo "const char *config_mak = \"CFG: openssl not found in PATH!\";"
|
---|
365 | else
|
---|
366 | echo "// This file is generated by ./config.sh --objdir $OBJDIR --make-config.mak"
|
---|
367 | echo "const char *config_mak ="
|
---|
368 | printf " \"\\\nCFG: strings FILE | sed -n 's/^CFG~//p' | openssl enc -d -base64 | gzip -d\\\n\"\n"
|
---|
369 | gzip -9 < $OBJDIR/config.mak | $OPENSSL enc -base64 | while read LINE
|
---|
370 | do
|
---|
371 | printf " \"CFG~%s\\\\n\"\n" "$LINE"
|
---|
372 | done
|
---|
373 | echo " ;"
|
---|
374 | fi
|
---|
375 | }
|
---|
376 |
|
---|
377 | make_config_mak() {
|
---|
378 | TMPFILE=$(mktemp -t config.mak.XXXXXX) || exit 1
|
---|
379 | list_config > $TMPFILE
|
---|
380 | [ ! -d $OBJDIR ] && mkdir -p $OBJDIR 2>/dev/null
|
---|
381 | cmp $TMPFILE $OBJDIR/config.mak >/dev/null 2>/dev/null
|
---|
382 | if [ $? != 0 ]
|
---|
383 | then
|
---|
384 | cat $TMPFILE > $OBJDIR/config.mak
|
---|
385 | make_config_c > $OBJDIR/config.c
|
---|
386 | else
|
---|
387 | make_config_c > $TMPFILE
|
---|
388 | cmp $TMPFILE $OBJDIR/config.c >/dev/null 2>/dev/null
|
---|
389 | [ $? != 0 ] && cat $TMPFILE > $OBJDIR/config.c
|
---|
390 | fi
|
---|
391 | rm -rf $TMPFILE
|
---|
392 | }
|
---|
393 |
|
---|
394 | check_test() {
|
---|
395 | if [ "$(cat $tempfileconfig | grep "^#define $1 1$")" != "" ]; then
|
---|
396 | echo "on"
|
---|
397 | else
|
---|
398 | echo "off"
|
---|
399 | fi
|
---|
400 | }
|
---|
401 |
|
---|
402 | disable_all() {
|
---|
403 | for i in $1; do
|
---|
404 | sed -e "s/^#define ${i} 1$/\/\/#define ${i} 1/g" $tempfileconfig > ${tempfileconfig}.tmp && \
|
---|
405 | mv ${tempfileconfig}.tmp $tempfileconfig
|
---|
406 | done
|
---|
407 | }
|
---|
408 |
|
---|
409 | enable_package() {
|
---|
410 | for i in $(cat $tempfile); do
|
---|
411 | strip=$(echo $i | sed "s/\"//g")
|
---|
412 | sed -e "s/\/\/#define ${strip} 1$/#define ${strip} 1/g" $tempfileconfig > ${tempfileconfig}.tmp && \
|
---|
413 | mv ${tempfileconfig}.tmp $tempfileconfig
|
---|
414 | done
|
---|
415 | }
|
---|
416 |
|
---|
417 | print_components() {
|
---|
418 | clear
|
---|
419 | echo "You have selected the following components:"
|
---|
420 | echo
|
---|
421 | echo "Add-ons:"
|
---|
422 | for i in $addons; do
|
---|
423 | printf "\t%-20s: %s\n" $i $(check_test "$i")
|
---|
424 | done
|
---|
425 |
|
---|
426 | echo
|
---|
427 | echo "Protocols:"
|
---|
428 | for i in $protocols; do
|
---|
429 | printf "\t%-20s: %s\n" $i $(check_test "$i")
|
---|
430 | done
|
---|
431 |
|
---|
432 | echo
|
---|
433 | echo "Readers:"
|
---|
434 | for i in $readers; do
|
---|
435 | printf "\t%-20s: %s\n" $i $(check_test "$i")
|
---|
436 | done
|
---|
437 |
|
---|
438 | echo
|
---|
439 | echo "Card readers:"
|
---|
440 | for i in $card_readers; do
|
---|
441 | printf "\t%-20s: %s\n" $i $(check_test "$i")
|
---|
442 | done
|
---|
443 |
|
---|
444 | cp -f $tempfileconfig $configfile
|
---|
445 | }
|
---|
446 |
|
---|
447 | menu_addons() {
|
---|
448 | ${DIALOG} --checklist "\nChoose add-ons:\n " $height $width $listheight \
|
---|
449 | WEBIF "Web Interface" $(check_test "WEBIF") \
|
---|
450 | WEBIF_LIVELOG "LiveLog" $(check_test "WEBIF_LIVELOG") \
|
---|
451 | WEBIF_JQUERY "Jquery onboard (if disabled webload)" $(check_test "WEBIF_JQUERY") \
|
---|
452 | TOUCH "Touch Web Interface" $(check_test "TOUCH") \
|
---|
453 | WITH_SSL "OpenSSL support" $(check_test "WITH_SSL") \
|
---|
454 | HAVE_DVBAPI "DVB API" $(check_test "HAVE_DVBAPI") \
|
---|
455 | WITH_NEUTRINO "Neutrino support" $(check_test "WITH_NEUTRINO") \
|
---|
456 | READ_SDT_CHARSETS "DVB API read-sdt charsets" $(check_test "READ_SDT_CHARSETS") \
|
---|
457 | IRDETO_GUESSING "Irdeto guessing" $(check_test "IRDETO_GUESSING") \
|
---|
458 | CS_ANTICASC "Anti cascading" $(check_test "CS_ANTICASC") \
|
---|
459 | WITH_DEBUG "Debug messages" $(check_test "WITH_DEBUG") \
|
---|
460 | MODULE_MONITOR "Monitor" $(check_test "MODULE_MONITOR") \
|
---|
461 | WITH_LB "Loadbalancing" $(check_test "WITH_LB") \
|
---|
462 | CS_CACHEEX "Cache exchange" $(check_test "CS_CACHEEX") \
|
---|
463 | CW_CYCLE_CHECK "CW Cycle Check" $(check_test "CW_CYCLE_CHECK") \
|
---|
464 | LCDSUPPORT "LCD support" $(check_test "LCDSUPPORT") \
|
---|
465 | LEDSUPPORT "LED support" $(check_test "LEDSUPPORT") \
|
---|
466 | CLOCKFIX "Clockfix (disable on old systems!)" $(check_test "CLOCKFIX") \
|
---|
467 | IPV6SUPPORT "IPv6 support (experimental)" $(check_test "IPV6SUPPORT") \
|
---|
468 | 2> ${tempfile}
|
---|
469 |
|
---|
470 | opt=${?}
|
---|
471 | if [ $opt != 0 ]; then return; fi
|
---|
472 |
|
---|
473 | disable_all "$addons"
|
---|
474 | enable_package
|
---|
475 | }
|
---|
476 |
|
---|
477 | menu_protocols() {
|
---|
478 | ${DIALOG} --checklist "\nChoose protocols:\n " $height $width $listheight \
|
---|
479 | MODULE_CAMD33 "camd 3.3" $(check_test "MODULE_CAMD33") \
|
---|
480 | MODULE_CAMD35 "camd 3.5 UDP" $(check_test "MODULE_CAMD35") \
|
---|
481 | MODULE_CAMD35_TCP "camd 3.5 TCP" $(check_test "MODULE_CAMD35_TCP") \
|
---|
482 | MODULE_NEWCAMD "newcamd" $(check_test "MODULE_NEWCAMD") \
|
---|
483 | MODULE_CCCAM "CCcam" $(check_test "MODULE_CCCAM") \
|
---|
484 | MODULE_CCCSHARE "CCcam share" $(check_test "MODULE_CCCSHARE") \
|
---|
485 | MODULE_GBOX "gbox" $(check_test "MODULE_GBOX") \
|
---|
486 | MODULE_RADEGAST "radegast" $(check_test "MODULE_RADEGAST") \
|
---|
487 | MODULE_SERIAL "Serial" $(check_test "MODULE_SERIAL") \
|
---|
488 | MODULE_CONSTCW "constant CW" $(check_test "MODULE_CONSTCW") \
|
---|
489 | MODULE_PANDORA "Pandora" $(check_test "MODULE_PANDORA") \
|
---|
490 | MODULE_GHTTP "Ghttp" $(check_test "MODULE_GHTTP") \
|
---|
491 | MODULE_SCAM "scam" $(check_test "MODULE_SCAM") \
|
---|
492 | 2> ${tempfile}
|
---|
493 |
|
---|
494 | opt=${?}
|
---|
495 | if [ $opt != 0 ]; then return; fi
|
---|
496 |
|
---|
497 | disable_all "$protocols"
|
---|
498 | enable_package
|
---|
499 | }
|
---|
500 |
|
---|
501 | menu_readers() {
|
---|
502 | ${DIALOG} --checklist "\nChoose readers (CA systems):\n " $height $width $listheight \
|
---|
503 | READER_NAGRA "Nagravision" $(check_test "READER_NAGRA") \
|
---|
504 | READER_NAGRA_MERLIN "Nagra Merlin" $(check_test "READER_NAGRA_MERLIN") \
|
---|
505 | READER_IRDETO "Irdeto" $(check_test "READER_IRDETO") \
|
---|
506 | READER_CONAX "Conax" $(check_test "READER_CONAX") \
|
---|
507 | READER_CRYPTOWORKS "Cryptoworks" $(check_test "READER_CRYPTOWORKS") \
|
---|
508 | READER_SECA "Seca" $(check_test "READER_SECA") \
|
---|
509 | READER_VIACCESS "Viaccess" $(check_test "READER_VIACCESS") \
|
---|
510 | READER_VIDEOGUARD "NDS Videoguard" $(check_test "READER_VIDEOGUARD") \
|
---|
511 | READER_DRE "DRE Crypt" $(check_test "READER_DRE") \
|
---|
512 | READER_TONGFANG "Tongfang" $(check_test "READER_TONGFANG") \
|
---|
513 | READER_BULCRYPT "Bulcrypt" $(check_test "READER_BULCRYPT") \
|
---|
514 | READER_GRIFFIN "Griffin" $(check_test "READER_GRIFFIN") \
|
---|
515 | READER_DGCRYPT "DGCrypt" $(check_test "READER_DGCRYPT") \
|
---|
516 | 2> ${tempfile}
|
---|
517 |
|
---|
518 | opt=${?}
|
---|
519 | if [ $opt != 0 ]; then return; fi
|
---|
520 |
|
---|
521 | disable_all "$readers"
|
---|
522 | enable_package
|
---|
523 | }
|
---|
524 |
|
---|
525 | menu_card_readers() {
|
---|
526 | ${DIALOG} --checklist "\nChoose card reader drivers:\n " $height $width $listheight \
|
---|
527 | CARDREADER_PHOENIX "Phoenix/mouse" $(check_test "CARDREADER_PHOENIX") \
|
---|
528 | CARDREADER_INTERNAL "Internal (Sci,Azbox,Cool)" $(check_test "CARDREADER_INTERNAL") \
|
---|
529 | CARDREADER_SC8IN1 "SC8in1" $(check_test "CARDREADER_SC8IN1") \
|
---|
530 | CARDREADER_MP35 "AD-Teknik MP 3.6/USB Phoenix" $(check_test "CARDREADER_MP35") \
|
---|
531 | CARDREADER_SMARGO "Argolis Smargo Smartreader" $(check_test "CARDREADER_SMARGO") \
|
---|
532 | CARDREADER_DB2COM "dbox2" $(check_test "CARDREADER_DB2COM") \
|
---|
533 | CARDREADER_STAPI "STAPI" $(check_test "CARDREADER_STAPI") \
|
---|
534 | CARDREADER_STAPI5 "STAPI5" $(check_test "CARDREADER_STAPI5") \
|
---|
535 | CARDREADER_STINGER "STINGER" $(check_test "CARDREADER_STINGER") \
|
---|
536 | CARDREADER_DRECAS "DRECAS" $(check_test "CARDREADER_DRECAS") \
|
---|
537 | 2> ${tempfile}
|
---|
538 |
|
---|
539 | opt=${?}
|
---|
540 | if [ $opt != 0 ]; then return; fi
|
---|
541 |
|
---|
542 | disable_all "$card_readers"
|
---|
543 | enable_package
|
---|
544 | }
|
---|
545 |
|
---|
546 |
|
---|
547 | config_dialog() {
|
---|
548 | height=30
|
---|
549 | width=65
|
---|
550 | listheight=16
|
---|
551 |
|
---|
552 | DIALOG=${DIALOG:-`which dialog`}
|
---|
553 | if [ -z "${DIALOG}" ]; then
|
---|
554 | echo "Please install dialog package." 1>&2
|
---|
555 | exit 1
|
---|
556 | fi
|
---|
557 |
|
---|
558 | configfile=config.h
|
---|
559 | tempfile=$(mktemp -t oscam-config.dialog.XXXXXX) || exit 1
|
---|
560 | tempfileconfig=$(mktemp -t oscam-config.h.XXXXXX) || exit 1
|
---|
561 | trap 'rm -f $tempfile $tempfileconfig $tempfileconfig.bak 2>/dev/null' INT TERM EXIT
|
---|
562 | cp -f $configfile $tempfileconfig
|
---|
563 |
|
---|
564 | while true; do
|
---|
565 | ${DIALOG} --menu "\nSelect category:\n " $height $width $listheight \
|
---|
566 | Add-ons "Add-ons" \
|
---|
567 | Protocols "Network protocols" \
|
---|
568 | Readers "Readers (CA systems)" \
|
---|
569 | CardReaders "Card reader drivers" \
|
---|
570 | Save "Save" \
|
---|
571 | 2> ${tempfile}
|
---|
572 |
|
---|
573 | opt=${?}
|
---|
574 | if [ $opt != 0 ]; then clear; exit; fi
|
---|
575 |
|
---|
576 | menuitem=$(cat $tempfile)
|
---|
577 | case $menuitem in
|
---|
578 | Add-ons) menu_addons ;;
|
---|
579 | Protocols) menu_protocols ;;
|
---|
580 | Readers) menu_readers ;;
|
---|
581 | CardReaders) menu_card_readers ;;
|
---|
582 | Save)
|
---|
583 | print_components
|
---|
584 | update_deps
|
---|
585 | write_enabled
|
---|
586 | exit 0
|
---|
587 | ;;
|
---|
588 | esac
|
---|
589 | done
|
---|
590 | }
|
---|
591 |
|
---|
592 | # Change working directory to the directory where the script is
|
---|
593 | cd $(dirname $0)
|
---|
594 |
|
---|
595 | if [ $# = 0 ]
|
---|
596 | then
|
---|
597 | usage
|
---|
598 | exit 1
|
---|
599 | fi
|
---|
600 |
|
---|
601 | while [ $# -gt 0 ]
|
---|
602 | do
|
---|
603 | case "$1" in
|
---|
604 | '-g'|'--gui'|'--config'|'--menuconfig')
|
---|
605 | config_dialog
|
---|
606 | break
|
---|
607 | ;;
|
---|
608 | '-s'|'--show-enabled'|'--show')
|
---|
609 | shift
|
---|
610 | list_enabled $(get_opts $1)
|
---|
611 | # Take special care of USE_xxx flags
|
---|
612 | if [ "$1" = "card_readers" ]
|
---|
613 | then
|
---|
614 | have_flag USE_LIBUSB && echo "CARDREADER_SMART"
|
---|
615 | have_flag USE_PCSC && echo "CARDREADER_PCSC"
|
---|
616 | fi
|
---|
617 | break
|
---|
618 | ;;
|
---|
619 | '-Z'|'--show-disabled')
|
---|
620 | shift
|
---|
621 | list_disabled $(get_opts $1)
|
---|
622 | break
|
---|
623 | ;;
|
---|
624 | '-S'|'--show-valid')
|
---|
625 | shift
|
---|
626 | for OPT in $(get_opts $1)
|
---|
627 | do
|
---|
628 | echo $OPT
|
---|
629 | done
|
---|
630 | break
|
---|
631 | ;;
|
---|
632 | '-E'|'--enable')
|
---|
633 | shift
|
---|
634 | while [ "$1" != "" ]
|
---|
635 | do
|
---|
636 | case "$1" in
|
---|
637 | -*)
|
---|
638 | update_deps
|
---|
639 | continue 2
|
---|
640 | ;;
|
---|
641 | all|addons|protocols|readers|card_readers)
|
---|
642 | enable_opts $(get_opts $1)
|
---|
643 | ;;
|
---|
644 | *)
|
---|
645 | enable_opt "$1"
|
---|
646 | ;;
|
---|
647 | esac
|
---|
648 | shift
|
---|
649 | done
|
---|
650 | update_deps
|
---|
651 | write_enabled
|
---|
652 | ;;
|
---|
653 | '-D'|'--disable')
|
---|
654 | shift
|
---|
655 | while [ "$1" != "" ]
|
---|
656 | do
|
---|
657 | case "$1" in
|
---|
658 | -*)
|
---|
659 | update_deps
|
---|
660 | continue 2
|
---|
661 | ;;
|
---|
662 | all|addons|protocols|readers|card_readers)
|
---|
663 | disable_opts $(get_opts $1)
|
---|
664 | ;;
|
---|
665 | *)
|
---|
666 | disable_opt "$1"
|
---|
667 | ;;
|
---|
668 | esac
|
---|
669 | shift
|
---|
670 | done
|
---|
671 | update_deps
|
---|
672 | write_enabled
|
---|
673 | ;;
|
---|
674 | '-R'|'--restore')
|
---|
675 | echo $defconfig | sed -e 's|# ||g' | xargs printf "%s\n" | grep "=y$" | sed -e 's|^CONFIG_||g;s|=.*||g' |
|
---|
676 | while read OPT
|
---|
677 | do
|
---|
678 | enable_opt "$OPT"
|
---|
679 | done
|
---|
680 | echo $defconfig | sed -e 's|# ||g' | xargs printf "%s\n" | grep "=n$" | sed -e 's|^CONFIG_||g;s|=.*||g' |
|
---|
681 | while read OPT
|
---|
682 | do
|
---|
683 | disable_opt "$OPT"
|
---|
684 | done
|
---|
685 | update_deps
|
---|
686 | write_enabled
|
---|
687 | ;;
|
---|
688 | '-e'|'--enabled')
|
---|
689 | enabled $2 && echo "Y" && exit 0 || echo "N" && exit 1
|
---|
690 | break
|
---|
691 | ;;
|
---|
692 | '-d'|'--disabled')
|
---|
693 | disabled $2 && echo "Y" && exit 0 || echo "N" && exit 1
|
---|
694 | break
|
---|
695 | ;;
|
---|
696 | '-v'|'--oscam-version')
|
---|
697 | grep CS_VERSION globals.h | cut -d\" -f2
|
---|
698 | break
|
---|
699 | ;;
|
---|
700 | '-r'|'--oscam-revision')
|
---|
701 | revision=`(svnversion -n . 2>/dev/null || printf 0) | sed 's/.*://; s/[^0-9]*$//; s/^$/0/'`
|
---|
702 | if [ "$revision" = "0" ]
|
---|
703 | then
|
---|
704 | which git > /dev/null 2>&1 && revision=`git log -10 --pretty=%B | grep git-svn-id | head -n 1 | sed -n -e 's/^.*trunk@\([0-9]*\) .*$/\1/p'`
|
---|
705 | fi
|
---|
706 | echo $revision
|
---|
707 | break
|
---|
708 | ;;
|
---|
709 | '-O'|'--detect-osx-sdk-version')
|
---|
710 | shift
|
---|
711 | OSX_VER=${1:-10.10}
|
---|
712 | for DIR in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX{$OSX_VER,10.10,10.9,10.8,10.7}.sdk /Developer/SDKs/MacOSX{$OSX_VER,10.6,10.5}.sdk
|
---|
713 |
|
---|
714 | do
|
---|
715 | if test -d $DIR
|
---|
716 | then
|
---|
717 | echo $DIR
|
---|
718 | exit 0
|
---|
719 | fi
|
---|
720 | done
|
---|
721 | echo Cant_find_OSX_SDK
|
---|
722 | break
|
---|
723 | ;;
|
---|
724 | '-l'|'--list-config')
|
---|
725 | list_config
|
---|
726 | exit 0
|
---|
727 | ;;
|
---|
728 | '-m'|'--make-config.mak')
|
---|
729 | make_config_mak
|
---|
730 | exit 0
|
---|
731 | ;;
|
---|
732 | '--use-flags')
|
---|
733 | shift
|
---|
734 | USE_FLAGS=$1
|
---|
735 | ;;
|
---|
736 | '--objdir')
|
---|
737 | shift
|
---|
738 | OBJDIR=$1
|
---|
739 | ;;
|
---|
740 | '-h'|'--help')
|
---|
741 | usage
|
---|
742 | break
|
---|
743 | ;;
|
---|
744 | *)
|
---|
745 | echo "[WARN] Unknown parameter: $1" >&2
|
---|
746 | ;;
|
---|
747 | esac
|
---|
748 | # Some shells complain when there are no more parameters to shift
|
---|
749 | test $# -gt 0 && shift
|
---|
750 | done
|
---|
751 |
|
---|
752 | exit 0
|
---|