From 380608b15873877266c87ca58b71cc41257a6e9e Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 16 Feb 2016 21:18:55 +0100 Subject: [PATCH] minisatip5: fix /status.html crashes, more nice look --- patches/minisatip5-axe.patch | 272 +++++++++++++++++++++++++++++++++-- 1 file changed, 263 insertions(+), 9 deletions(-) diff --git a/patches/minisatip5-axe.patch b/patches/minisatip5-axe.patch index 04533290..c9720179 100644 --- a/patches/minisatip5-axe.patch +++ b/patches/minisatip5-axe.patch @@ -1,5 +1,5 @@ diff --git a/adapter.c b/adapter.c -index 033490a..885188a 100644 +index 033490a..4084db9 100644 --- a/adapter.c +++ b/adapter.c @@ -1162,6 +1162,33 @@ void set_slave_adapters(char *o) @@ -36,6 +36,65 @@ index 033490a..885188a 100644 extern char *fe_delsys[]; void set_adapters_delsys(char *o) { +@@ -1371,42 +1398,24 @@ char *get_all_delsys(int aid, char *dest, int max_size) + return dest; + } + +-adapter *a_tmp; +- + _symbols adapters_sym[] = + { +-{ "ad_enabled", VAR_AARRAY_INT8, a, 1, MAX_ADAPTERS, +- (long int) &a_tmp[0].enabled - (long int) &a_tmp[0] }, +-{ "ad_type", VAR_AARRAY_INT8, a, 1, MAX_ADAPTERS, (long int) &a_tmp[0].type +- - (long int) &a_tmp[0] }, +-{ "ad_freq", VAR_AARRAY_INT, a, 1. / 1000, +-MAX_ADAPTERS, (long int) &a_tmp[0].tp.freq - (long int) &a_tmp[0] }, +-{ "ad_strength", VAR_AARRAY_UINT16, a, 1, +-MAX_ADAPTERS, (long int) &a_tmp[0].strength - (long int) &a_tmp[0] }, +-{ "ad_snr", VAR_AARRAY_UINT16, a, 1, MAX_ADAPTERS, (long int) &a_tmp[0].snr +- - (long int) &a_tmp[0] }, +-{ "ad_ber", VAR_AARRAY_UINT16, a, 1, MAX_ADAPTERS, (long int) &a_tmp[0].ber +- - (long int) &a_tmp[0] }, +-{ "ad_pol", VAR_AARRAY_INT8, a, 1, MAX_ADAPTERS, (long int) &a_tmp[0].tp.pol +- - (long int) &a_tmp[0] }, +-{ "ad_sr", VAR_AARRAY_INT, a, 1. / 1000, MAX_ADAPTERS, +- (long int) &a_tmp[0].tp.sr - (long int) &a_tmp[0] }, +-{ "ad_bw", VAR_AARRAY_INT, a, 1. / 1000, MAX_ADAPTERS, +- (long int) &a_tmp[0].tp.bw - (long int) &a_tmp[0] }, +-{ "ad_diseqc", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, +- (long int) &a_tmp[0].tp.diseqc - (long int) &a_tmp[0] }, +-{ "ad_fe", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, (long int) &a_tmp[0].fe +- - (long int) &a_tmp[0] }, +-{ "ad_master", VAR_AARRAY_UINT8, a, 1, +-MAX_ADAPTERS, (long int) &a_tmp[0].master_sid - (long int) &a_tmp[0] }, +-{ "ad_sidcount", VAR_AARRAY_UINT8, a, 1, +-MAX_ADAPTERS, (long int) &a_tmp[0].sid_cnt - (long int) &a_tmp[0] }, +-{ "ad_phyad", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, (long int) &a_tmp[0].pa +- - (long int) &a_tmp[0] }, +-{ "ad_phyfd", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, (long int) &a_tmp[0].fn +- - (long int) &a_tmp[0] }, +-{ "ad_sys", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, (long int) &a_tmp[0].tp.sys +- - (long int) &a_tmp[0] }, ++{ "ad_enabled", VAR_AARRAY_INT8, a, 1, MAX_ADAPTERS, offsetof(adapter, enabled) }, ++{ "ad_type", VAR_AARRAY_INT8, a, 1, MAX_ADAPTERS, offsetof(adapter, type) }, ++{ "ad_freq", VAR_AARRAY_INT, a, 1. / 1000, MAX_ADAPTERS, offsetof(adapter, tp.freq) }, ++{ "ad_strength", VAR_AARRAY_UINT16, a, 1, MAX_ADAPTERS, offsetof(adapter, strength) }, ++{ "ad_snr", VAR_AARRAY_UINT16, a, 1, MAX_ADAPTERS, offsetof(adapter, snr) }, ++{ "ad_ber", VAR_AARRAY_UINT16, a, 1, MAX_ADAPTERS, offsetof(adapter, ber) }, ++{ "ad_pol", VAR_AARRAY_INT8, a, 1, MAX_ADAPTERS, offsetof(adapter, tp.pol) }, ++{ "ad_sr", VAR_AARRAY_INT, a, 1. / 1000, MAX_ADAPTERS, offsetof(adapter, tp.sr) }, ++{ "ad_bw", VAR_AARRAY_INT, a, 1. / 1000, MAX_ADAPTERS, offsetof(adapter, tp.bw) }, ++{ "ad_diseqc", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, offsetof(adapter, tp.diseqc) }, ++{ "ad_fe", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, offsetof(adapter, fe) }, ++{ "ad_master", VAR_AARRAY_UINT8, a, 1, MAX_ADAPTERS, offsetof(adapter, master_sid) }, ++{ "ad_sidcount", VAR_AARRAY_UINT8, a, 1, MAX_ADAPTERS, offsetof(adapter, sid_cnt) }, ++{ "ad_phyad", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, offsetof(adapter, pa) }, ++{ "ad_phyfd", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, offsetof(adapter, fn) }, ++{ "ad_sys", VAR_AARRAY_INT, a, 1, MAX_ADAPTERS, offsetof(adapter, tp.sys) }, + { "ad_allsys", VAR_FUNCTION_STRING, (void *) &get_all_delsys, 0, 0, 0 }, + { "ad_pids", VAR_FUNCTION_STRING, (void *) &get_adapter_pids, 0, 0, 0 }, + { "tuner_s2", VAR_INT, &tuner_s2, 1, 0, 0 }, diff --git a/adapter.h b/adapter.h index e693479..aaa59a0 100644 --- a/adapter.h @@ -661,6 +720,154 @@ index 259b93d..57948bc 100644 } for (; na < MAX_ADAPTERS; na++) if (a[na]) +diff --git a/dvbapi.c b/dvbapi.c +index e832773..0bccd2e 100644 +--- a/dvbapi.c ++++ b/dvbapi.c +@@ -991,25 +991,16 @@ void dvbapi_delete_keys_for_adapter(int aid) + keys_del(i); + } + +-SKey *k_tmp; + _symbols dvbapi_sym[] = + { +-{ "key_enabled", VAR_AARRAY_INT8, keys, 1, MAX_KEYS, +- (long int) &k_tmp[0].enabled - (long int) &k_tmp[0] }, +-{ "key_hops", VAR_AARRAY_INT8, keys, 1, MAX_KEYS, (long int) &k_tmp[0].hops +- - (long int) &k_tmp[0] }, +-{ "key_ecmtime", VAR_AARRAY_INT, keys, 1, MAX_KEYS, (long int) &k_tmp[0].ecmtime +- - (long int) &k_tmp[0] }, +-{ "key_pmt", VAR_AARRAY_INT, keys, 1, MAX_KEYS, (long int) &k_tmp[0].pmt_pid +- - (long int) &k_tmp[0] }, +-{ "key_cardsystem", VAR_AARRAY_PSTRING, keys, 1, MAX_KEYS, +- (long int) &k_tmp[0].cardsystem - (long int) &k_tmp[0] }, +-{ "key_reader", VAR_AARRAY_PSTRING, keys, 1, MAX_KEYS, +- (long int) &k_tmp[0].reader - (long int) &k_tmp[0] }, +-{ "key_from", VAR_AARRAY_PSTRING, keys, 1, MAX_KEYS, (long int) &k_tmp[0].from +- - (long int) &k_tmp[0] }, +-{ "key_protocol", VAR_AARRAY_PSTRING, keys, 1, MAX_KEYS, +- (long int) &k_tmp[0].protocol - (long int) &k_tmp[0] }, ++{ "key_enabled", VAR_AARRAY_INT8, keys, 1, MAX_KEYS, offsetof(SKey, enabled) }, ++{ "key_hops", VAR_AARRAY_INT8, keys, 1, MAX_KEYS, offsetof(SKey, hops) }, ++{ "key_ecmtime", VAR_AARRAY_INT, keys, 1, MAX_KEYS, offsetof(SKey, ecmtime) }, ++{ "key_pmt", VAR_AARRAY_INT, keys, 1, MAX_KEYS, offsetof(SKey, pmt_pid) }, ++{ "key_cardsystem", VAR_AARRAY_PSTRING, keys, 1, MAX_KEYS, offsetof(SKey, cardsystem) }, ++{ "key_reader", VAR_AARRAY_PSTRING, keys, 1, MAX_KEYS, offsetof(SKey, reader) }, ++{ "key_from", VAR_AARRAY_PSTRING, keys, 1, MAX_KEYS, offsetof(SKey, from) }, ++{ "key_protocol", VAR_AARRAY_PSTRING, keys, 1, MAX_KEYS, offsetof(SKey, protocol) }, + + { NULL, 0, NULL, 0, 0 } }; + +diff --git a/html/status.html b/html/status.html +index c4c91c0..5ec0d29 100644 +--- a/html/status.html ++++ b/html/status.html +@@ -2,6 +2,33 @@ + + + ++ + + Minisatip/$version$ on $http_host$ + +@@ -49,37 +76,37 @@ var max_adapters = 16; + var max_streams = 64; + var pol = ["", "(V)", "(H)", "(R)", "(L)"] + var sys= [ "", "dvbc", "dvbcb", "dvbt", "dss", "dvbs", "dvbs2", "dvbh", "isdbt", "isdbs", "isdbc", "atsc", "atscmh", "dmbth", "cmmb", "dab", "dvbt2", "turbo", "dvbcc", "dvbc2" ] +-var myTable= ""; +- myTable+= ""; +- myTable+=""; +- myTable+=""; +- myTable+=""; +- myTable+=""; +- myTable+=""; ++var myTable= "
TunerStatusFrequencySR/BWSignalStreamsStreams Pids
"; ++ myTable+=""; ++ myTable+=""; ++ myTable+=""; ++ myTable+=""; ++ myTable+=""; ++ myTable+=""; + + for (var i=0; i"; ++ myTable+=""; + var csys = ""; + if(ad_sys[i] == 0) + csys = ad_allsys[i]; + else + csys = sys[ad_sys[i]]; + if(ad_enabled[i] == 1) +- myTable+=""; + }else{ + myTable+="(" + ad_satip[i] + ")"; + } +- myTable+=""; ++ myTable+=""; + if(ad_sys[i] == 0 || ad_sys[i] == 1 || ad_sys[i] == 2 || ad_sys[i] == 5 || ad_sys[i] == 6 || ad_sys[i] == 18 || ad_sys[i] == 19 ) +- myTable+=""; ++ myTable+=""; + else +- myTable+=""; ++ myTable+=""; + + var signal = ""; + if(ad_enabled[i] == 0) +@@ -97,9 +124,9 @@ var myTable= "
TunerStatusFrequencySR/BWSignalStreamsStreams Pids
" + i + "" + csys; ++ myTable+="" + csys; + else +- myTable+="" + ad_allsys[i]; ++ myTable+="" + ad_allsys[i]; + if(ad_type[i] == 1){ + myTable+="(" + ad_phyad[i] + "," + ad_phyfd[i] +") " + ad_freq[i] + ""+pol[ad_pol[i]]+"" + ad_freq[i] + ""+pol[ad_pol[i]]+"" + ad_sr[i] + "" + ad_sr[i] + "" + ad_bw[i]/1000 + "MHZ" + ad_bw[i]/1000 + "MHZ
"; ++ myTable+=""; + +- myTable +="
Tuner< + if(ad_ber[i] > 0) + signal += " BER "+ad_ber[i]; + } +- myTable+="" + signal + " " + signal + " "; ++ myTable +=""; + for(var j=0;j"; + } + +- myTable +=""; ++ myTable +=""; + + for(var j=0;j>24) & 0xFF;\ + a[i+1] = ((v)>>16) & 0xFF;\ + a[i+2] = ((v)>>8) & 0xFF;\ +@@ -48,6 +50,9 @@ struct struct_opts int force_scan; int clean_psi; int file_line; @@ -914,15 +1129,28 @@ index 403af34..e85e54a int dvbapi_port; char *dvbapi_host; diff --git a/satipc.c b/satipc.c -index 4fd5972..59e0619 100644 +index 4fd5972..c96bfec 100644 --- a/satipc.c +++ b/satipc.c -@@ -916,5 +916,6 @@ void find_satip_adapter(adapter **a) - satipc *sip_tmp; +@@ -831,6 +831,9 @@ void find_satip_adapter(adapter **a) + return; + la = split(arg, opts.satip_servers, 50, ','); + j = 0; ++ for (i = 0; i < MAX_ADAPTERS; i++) { ++ ++ } + for (i = a_count; i < MAX_ADAPTERS; i++) + if (j < la) + { +@@ -913,8 +916,7 @@ void find_satip_adapter(adapter **a) + } + + +-satipc *sip_tmp; _symbols satipc_sym[] ={ - { "ad_satip", VAR_AARRAY_PSTRING, a, 1, MAX_ADAPTERS, (long int) &sip_tmp[0].sip +-{ "ad_satip", VAR_AARRAY_PSTRING, a, 1, MAX_ADAPTERS, (long int) &sip_tmp[0].sip - - (long int) &sip_tmp[0] } -+ - (long int) &sip_tmp[0] }, ++{ "ad_satip", VAR_AARRAY_PSTRING, satip, 1, MAX_ADAPTERS, offsetof(satipc, sip) }, +{ NULL, 0, NULL, 0, 0 } }; diff --git a/socketworks.c b/socketworks.c @@ -981,6 +1209,32 @@ index c852e2a..9b77d7d int close_sec; int id; // socket id int err; +diff --git a/stream.c b/stream.c +index 03fee8a..045e1f3 100644 +--- a/stream.c ++++ b/stream.c +@@ -1293,17 +1293,12 @@ char* get_stream_pids(int s_id, char *dest, int max_size) + return dest; + } + +-streams *s_tmp; + _symbols stream_sym[] = + { +-{ "st_enabled", VAR_AARRAY_INT8, st, 1, MAX_STREAMS, +- (long int) &s_tmp[0].enabled - (long int) &s_tmp[0] }, +-{ "st_play", VAR_AARRAY_INT, st, 1, MAX_STREAMS, (long int) &s_tmp[0].do_play +- - (long int) &s_tmp[0] }, +-{ "st_adapter", VAR_AARRAY_INT, st, 1, MAX_STREAMS, (long int) &s_tmp[0].adapter +- - (long int) &s_tmp[0] }, +-{ "st_useragent", VAR_AARRAY_STRING, st, 1, MAX_STREAMS, +- (long int) &s_tmp[0].useragent - (long int) &s_tmp[0] }, ++{ "st_enabled", VAR_AARRAY_INT8, st, 1, MAX_STREAMS, offsetof(streams, enabled) }, ++{ "st_play", VAR_AARRAY_INT, st, 1, MAX_STREAMS, offsetof(streams, do_play) }, ++{ "st_adapter", VAR_AARRAY_INT, st, 1, MAX_STREAMS, offsetof(streams, adapter) }, ++{ "st_useragent", VAR_AARRAY_STRING, st, 1, MAX_STREAMS, offsetof(streams, useragent) }, + { "st_rhost", VAR_FUNCTION_STRING, (void *) &get_stream_rhost, 0, 0, 0 }, + { "st_rport", VAR_FUNCTION_INT, (void *) &get_stream_rport, 0, 0, 0 }, + { "st_pids", VAR_FUNCTION_STRING, (void *) &get_stream_pids, 0, 0, 0 }, diff --git a/utils.c b/utils.c index eaa0317..8cb7c49 100644 --- a/utils.c