From 6eb38bb69b35c4cbbed733e98aeccdae2d7e706c Mon Sep 17 00:00:00 2001 From: mvoelkel Date: Wed, 5 Aug 2015 22:22:06 +0200 Subject: [PATCH] added octoserve --- octoserve/Makefile | 16 + octoserve/boot/bs.img | Bin 0 -> 2252 bytes octoserve/boot/fpga.img | Bin 0 -> 514038 bytes octoserve/boot/fpga_gtl.img | Bin 0 -> 514050 bytes octoserve/config.c | 56 + octoserve/dvb.c | 1368 +++++ octoserve/gpl.txt | 674 +++ octoserve/http.c | 441 ++ octoserve/igmp.c | 255 + octoserve/ns.h | 68 + octoserve/ntools.c | 140 + octoserve/octoserve.c | 2596 +++++++++ octoserve/octoserve.h | 522 ++ octoserve/ssdp | 6 + octoserve/ssdp.c | 697 +++ octoserve/switch.c | 196 + octoserve/var/channels/DataBase.lua | 130 + octoserve/var/channels/a19e.csv | 523 ++ octoserve/var/channels/e13e.csv | 533 ++ octoserve/var/channels/e9e.csv | 48 + octoserve/var/channels/kbw.csv | 121 + octoserve/var/channels/kd.csv | 66 + octoserve/var/channels/kdc2.csv | 5 + octoserve/var/channels/readme.txt | 3 + octoserve/var/channels/sourcelist.csv | 8 + octoserve/var/channels/um.csv | 104 + octoserve/var/dms/ConnectionManager.lua | 90 + octoserve/var/dms/ConnectionManager.xml | 134 + octoserve/var/dms/ContentDirectory.lua | 422 ++ octoserve/var/dms/ContentDirectory.xml | 207 + octoserve/var/dms/MediaReceiverRegistrar.lua | 80 + octoserve/var/dms/MediaReceiverRegistrar.xml | 73 + octoserve/var/dms/SendEvent.lua | 68 + octoserve/var/dms/UPnP.lua | 220 + octoserve/var/dms/dms.lua | 190 + octoserve/var/dms/dms.xml | 74 + octoserve/var/dms/icons/dd-120.jpg | Bin 0 -> 7855 bytes octoserve/var/dms/icons/dd-120.png | Bin 0 -> 8962 bytes octoserve/var/dms/icons/dd-48.jpg | Bin 0 -> 4866 bytes octoserve/var/dms/icons/dd-48.png | Bin 0 -> 5668 bytes octoserve/var/dms/start.sh | 5 + octoserve/var/mcsetup/astra19e.csv | 12 + octoserve/var/mcsetup/kabelbw.csv | 13 + octoserve/var/mcsetup/kabelbw_udp.csv | 13 + octoserve/var/mcsetup/mc.lua | 251 + octoserve/var/mcsetup/mcsetup.lua | 112 + octoserve/var/mcsetup/rtsp.lua | 94 + octoserve/var/mcsetup/unitymedia.csv | 13 + octoserve/var/satip/www/icons/dd-120.jpg | Bin 0 -> 7855 bytes octoserve/var/satip/www/icons/dd-120.png | Bin 0 -> 8962 bytes octoserve/var/satip/www/icons/dd-48.jpg | Bin 0 -> 4866 bytes octoserve/var/satip/www/icons/dd-48.png | Bin 0 -> 5668 bytes octoserve/var/www/BannerDD.jpg | Bin 0 -> 102158 bytes octoserve/var/www/SCIFDataBase.xml | 670 +++ octoserve/var/www/beta.html | 55 + octoserve/var/www/beta.lua | 31 + octoserve/var/www/browsertv.html | 367 ++ octoserve/var/www/btvchannels.lua | 129 + octoserve/var/www/channellists.html | 96 + octoserve/var/www/delchannels.lua | 32 + octoserve/var/www/dlchannels.lua | 66 + octoserve/var/www/doupdate.html | 165 + octoserve/var/www/e404.html | 41 + octoserve/var/www/index.html | 131 + octoserve/var/www/licenses.html | 4996 ++++++++++++++++++ octoserve/var/www/lnbsettings.html | 381 ++ octoserve/var/www/lnbsettings.lua | 185 + octoserve/var/www/ltest.lua | 25 + octoserve/var/www/mclist.lua | 107 + octoserve/var/www/menu.js | 104 + octoserve/var/www/multicast.html | 160 + octoserve/var/www/multicast.lua | 224 + octoserve/var/www/reboot.html | 129 + octoserve/var/www/reboot.lua | 34 + octoserve/var/www/scif.html | 305 ++ octoserve/var/www/scifdb.lua | 85 + octoserve/var/www/scifsettings.lua | 137 + octoserve/var/www/slaxdom.lua | 49 + octoserve/var/www/slaxml.lua | 219 + octoserve/var/www/stream.lua | 16 + octoserve/var/www/streamstatus.html | 158 + octoserve/var/www/style.css | 78 + octoserve/var/www/system.html | 168 + octoserve/var/www/systeminfo.lua | 60 + octoserve/var/www/systemsettings.lua | 130 + octoserve/var/www/template.html | 63 + octoserve/var/www/tunerstatus.html | 118 + octoserve/var/www/update.html | 136 + octoserve/var/www/update.lua | 143 + octoserve/var/www/uplchannels.lua | 82 + octoserve/var/www/wait.html | 61 + octoserve/version.h | 23 + u-boot.patch | 1073 ++++ 93 files changed, 21879 insertions(+) create mode 100644 octoserve/Makefile create mode 100755 octoserve/boot/bs.img create mode 100644 octoserve/boot/fpga.img create mode 100644 octoserve/boot/fpga_gtl.img create mode 100644 octoserve/config.c create mode 100644 octoserve/dvb.c create mode 100644 octoserve/gpl.txt create mode 100644 octoserve/http.c create mode 100644 octoserve/igmp.c create mode 100644 octoserve/ns.h create mode 100644 octoserve/ntools.c create mode 100644 octoserve/octoserve.c create mode 100644 octoserve/octoserve.h create mode 100644 octoserve/ssdp create mode 100644 octoserve/ssdp.c create mode 100644 octoserve/switch.c create mode 100644 octoserve/var/channels/DataBase.lua create mode 100644 octoserve/var/channels/a19e.csv create mode 100644 octoserve/var/channels/e13e.csv create mode 100644 octoserve/var/channels/e9e.csv create mode 100644 octoserve/var/channels/kbw.csv create mode 100644 octoserve/var/channels/kd.csv create mode 100644 octoserve/var/channels/kdc2.csv create mode 100644 octoserve/var/channels/readme.txt create mode 100644 octoserve/var/channels/sourcelist.csv create mode 100644 octoserve/var/channels/um.csv create mode 100644 octoserve/var/dms/ConnectionManager.lua create mode 100644 octoserve/var/dms/ConnectionManager.xml create mode 100644 octoserve/var/dms/ContentDirectory.lua create mode 100644 octoserve/var/dms/ContentDirectory.xml create mode 100644 octoserve/var/dms/MediaReceiverRegistrar.lua create mode 100644 octoserve/var/dms/MediaReceiverRegistrar.xml create mode 100644 octoserve/var/dms/SendEvent.lua create mode 100644 octoserve/var/dms/UPnP.lua create mode 100755 octoserve/var/dms/dms.lua create mode 100644 octoserve/var/dms/dms.xml create mode 100644 octoserve/var/dms/icons/dd-120.jpg create mode 100644 octoserve/var/dms/icons/dd-120.png create mode 100644 octoserve/var/dms/icons/dd-48.jpg create mode 100644 octoserve/var/dms/icons/dd-48.png create mode 100644 octoserve/var/dms/start.sh create mode 100644 octoserve/var/mcsetup/astra19e.csv create mode 100644 octoserve/var/mcsetup/kabelbw.csv create mode 100644 octoserve/var/mcsetup/kabelbw_udp.csv create mode 100644 octoserve/var/mcsetup/mc.lua create mode 100755 octoserve/var/mcsetup/mcsetup.lua create mode 100644 octoserve/var/mcsetup/rtsp.lua create mode 100644 octoserve/var/mcsetup/unitymedia.csv create mode 100644 octoserve/var/satip/www/icons/dd-120.jpg create mode 100644 octoserve/var/satip/www/icons/dd-120.png create mode 100644 octoserve/var/satip/www/icons/dd-48.jpg create mode 100644 octoserve/var/satip/www/icons/dd-48.png create mode 100644 octoserve/var/www/BannerDD.jpg create mode 100644 octoserve/var/www/SCIFDataBase.xml create mode 100644 octoserve/var/www/beta.html create mode 100644 octoserve/var/www/beta.lua create mode 100644 octoserve/var/www/browsertv.html create mode 100644 octoserve/var/www/btvchannels.lua create mode 100644 octoserve/var/www/channellists.html create mode 100644 octoserve/var/www/delchannels.lua create mode 100644 octoserve/var/www/dlchannels.lua create mode 100644 octoserve/var/www/doupdate.html create mode 100644 octoserve/var/www/e404.html create mode 100644 octoserve/var/www/index.html create mode 100644 octoserve/var/www/licenses.html create mode 100644 octoserve/var/www/lnbsettings.html create mode 100644 octoserve/var/www/lnbsettings.lua create mode 100644 octoserve/var/www/ltest.lua create mode 100644 octoserve/var/www/mclist.lua create mode 100644 octoserve/var/www/menu.js create mode 100644 octoserve/var/www/multicast.html create mode 100644 octoserve/var/www/multicast.lua create mode 100644 octoserve/var/www/reboot.html create mode 100644 octoserve/var/www/reboot.lua create mode 100644 octoserve/var/www/scif.html create mode 100644 octoserve/var/www/scifdb.lua create mode 100644 octoserve/var/www/scifsettings.lua create mode 100644 octoserve/var/www/slaxdom.lua create mode 100644 octoserve/var/www/slaxml.lua create mode 100644 octoserve/var/www/stream.lua create mode 100644 octoserve/var/www/streamstatus.html create mode 100644 octoserve/var/www/style.css create mode 100644 octoserve/var/www/system.html create mode 100644 octoserve/var/www/systeminfo.lua create mode 100644 octoserve/var/www/systemsettings.lua create mode 100644 octoserve/var/www/template.html create mode 100644 octoserve/var/www/tunerstatus.html create mode 100644 octoserve/var/www/update.html create mode 100644 octoserve/var/www/update.lua create mode 100644 octoserve/var/www/uplchannels.lua create mode 100644 octoserve/var/www/wait.html create mode 100644 octoserve/version.h create mode 100644 u-boot.patch diff --git a/octoserve/Makefile b/octoserve/Makefile new file mode 100644 index 0000000..d6ca867 --- /dev/null +++ b/octoserve/Makefile @@ -0,0 +1,16 @@ +CFLAGS ?= -Os +#CFLAGS += -Wall +CFLAGS += -D_GNU_SOURCE -DIGNORE_NS +#CFLAGS += -ansi +CC = gcc + +all: octoserve + +octoserve: octoserve.h octoserve.o ssdp.o ntools.o dvb.o config.o http.o igmp.o switch.o + $(CC) $(CFLAGS) -ldvbcfg -ldvben50221 -lucsi -ldvbsec -ldvbapi -lpthread -o $@ $^ + +setmod: octoserve.h octoserve.o dvb.o config.o + $(CC) $(CFLAGS) -ldvbcfg -ldvben50221 -lucsi -ldvbsec -ldvbapi -lpthread -o $@ $^ + +clean: + rm *.o diff --git a/octoserve/boot/bs.img b/octoserve/boot/bs.img new file mode 100755 index 0000000000000000000000000000000000000000..91855bdaff955fa8c11d3c21ea2d94bc17d4e5a8 GIT binary patch literal 2252 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%0DmIb7?-iiJ5q&CqW(Gj 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 z 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�g1t0`{eaww0!zS`TZ?Mi6fMu~A>xd;qjm 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�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%0A7_Y@?96)P!+= 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 literal 0 HcmV?d00001 diff --git a/octoserve/boot/fpga_gtl.img b/octoserve/boot/fpga_gtl.img new file mode 100644 index 0000000000000000000000000000000000000000..f815e30578263e2ddb2e1a24efd8f11eff22ba87 GIT binary patch literal 514050 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∓w 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 z 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 N8a(Iu_W$<#zW_Oa$rAto literal 0 HcmV?d00001 diff --git a/octoserve/config.c b/octoserve/config.c new file mode 100644 index 0000000..d0564f5 --- /dev/null +++ b/octoserve/config.c @@ -0,0 +1,56 @@ +/* + (C) 2012-13 Digital Devices GmbH. + + This file is part of the octoserve SAT>IP server. + + Octoserve 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 3 of the License, or + (at your option) any later version. + + Octoserve is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with octoserve. If not, see . +*/ + +#include "octoserve.h" + +void parse_config(struct octoserve *os, char *sec, + void (*cb)(struct octoserve *, char *, char *) ) +{ + char line[256], csec[80], par[80], val[80], *p; + FILE *f; + + if ((f = fopen ("/config/octoserve.conf", "r")) == NULL) + return; + + while ((p = fgets(line, sizeof(line), f))) { + if (*p == '\r' || *p == '\n' || *p == '#') + continue; + if (*p == '[') { + if ((p = strtok(line + 1, "]")) == NULL) + continue; + strncpy(csec, p, sizeof(csec)); + //printf("current section %s\n", csec); + if (!strcmp(sec, csec) && cb) + cb(os, NULL, NULL); + continue; + } + if (!(p = strtok(line, "="))) + continue; + strncpy(par, p, sizeof(par)); + if (!(p = strtok(NULL, "="))) + continue; + strncpy (val, p, sizeof(val)); + //printf("%s=%s\n", par, val); + if (!strcmp(sec, csec) && cb) + cb(os, par, val); + } + if (!strcmp(sec, csec) && cb) + cb(os, NULL, NULL); + fclose(f); +} diff --git a/octoserve/dvb.c b/octoserve/dvb.c new file mode 100644 index 0000000..119ec86 --- /dev/null +++ b/octoserve/dvb.c @@ -0,0 +1,1368 @@ +/* + (C) 2012-14 Digital Devices GmbH. + + This file is part of the octoserve SAT>IP server. + + Octoserve 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 3 of the License, or + (at your option) any later version. + + Octoserve is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with octoserve. If not, see . +*/ + +#include "octoserve.h" + +extern uint32_t debug; + +#define MMI_STATE_CLOSED 0 +#define MMI_STATE_OPEN 1 +#define MMI_STATE_ENQ 2 +#define MMI_STATE_MENU 3 + + +static int set_fmode(uint32_t fmode) +{ + FILE *f; + + if ((f = fopen ("/sys/class/ddbridge/ddbridge0/fmode1", "r+")) == NULL) + return -1; + fprintf(f, "%u", fmode); + fclose(f); + return 0; +} + + +#include +#include +#include +#include +#include + +int sectest(void) +{ + uint8_t ts[4096]; + struct dvb_nsd_ts nsdts; + int nsd, r, secstat, len; + struct section_buf secbuf; + struct section *section; + struct section_ext *section_ext = NULL; + + section_buf_init(&secbuf, 4096); + memset (&nsdts, 0, sizeof(nsdts)); + nsdts.pid = 0; + nsdts.ts = ts; + nsdts.mode = 1; + while ((nsd = open("/dev/dvb/adapter0/nsd0", O_RDWR)) < 0) { + if (errno == EBUSY) + usleep(10000); + else + return -1; + } + ioctl(nsd, NSD_START_GET_TS, &nsdts); + while ((r = ioctl(nsd, NSD_POLL_GET_TS, &nsdts)) < 0 && errno == EBUSY) + usleep(1000); + if (!r) { +#if 0 + len = section_buf_add(&secbuf, nsdts.ts, nsdts.len, &secstat); + section = section_codec(section_buf_data(&secbuf), len); + section_ext = section_ext_decode(section, 1); +#endif + dbgprintf(DEBUG_DVB, "read %d bytes:\n", nsdts.len); + dump(ts, nsdts.len); + } + ioctl(nsd, NSD_STOP_GET_TS, &nsdts); + close(nsd); +} + +static pthread_mutex_t nsd_lock; + +static int getsec(int input, uint16_t pid, uint16_t id, uint8_t table, uint8_t *sec) +{ + struct dvb_nsd_ts nsdts; + int nsd, r, len; + + dbgprintf(DEBUG_DVB, + "getsec input %d, pid %04x, id %04x, table %d\n", input, pid, id, table); + pthread_mutex_lock(&nsd_lock); + memset (&nsdts, 0, sizeof(nsdts)); + nsdts.pid = pid; + nsdts.ts = sec; + nsdts.mode = 1; + nsdts.table = table; + nsdts.input = input; + if (id != 0) { + nsdts.filter_mask = 2; + nsdts.section_id = id; + } + + while ((nsd = open("/dev/dvb/adapter0/nsd0", O_RDWR)) < 0) { + if (errno == EBUSY) + usleep(100000); + else + return -1; + } + ioctl(nsd, NSD_START_GET_TS, &nsdts); + while ((r = ioctl(nsd, NSD_POLL_GET_TS, &nsdts)) < 0 && errno == EBUSY) + usleep(1000); + ioctl(nsd, NSD_STOP_GET_TS, &nsdts); + close(nsd); + pthread_mutex_unlock(&nsd_lock); + if (!r) + return nsdts.len; + else + return -1; +} + +static int set_property(int fd, uint32_t cmd, uint32_t data) +{ + struct dtv_property p; + struct dtv_properties c; + int ret; + + p.cmd = cmd; + c.num = 1; + c.props = &p; + p.u.data = data; + ret = ioctl(fd, FE_SET_PROPERTY, &c); + if (ret < 0) { + fprintf(stderr, "FE_SET_PROPERTY returned %d\n", ret); + return -1; + } + return 0; +} + + +static int set_fe(int fd, uint32_t fr, uint32_t sr, fe_delivery_system_t ds) +{ + struct dtv_property p[] = { + { .cmd = DTV_CLEAR }, + { .cmd = DTV_DELIVERY_SYSTEM, .u.data = ds }, + { .cmd = DTV_FREQUENCY, .u.data = fr }, + { .cmd = DTV_INVERSION, .u.data = INVERSION_AUTO }, + { .cmd = DTV_SYMBOL_RATE, .u.data = sr }, + { .cmd = DTV_INNER_FEC, .u.data = FEC_AUTO }, + { .cmd = DTV_TUNE }, + }; + struct dtv_properties c; + int ret; + + printf("ds = %u\n", ds); + + c.num = 7; + c.props = p; + ret = ioctl(fd, FE_SET_PROPERTY, &c); + if (ret < 0) { + fprintf(stderr, "FE_SET_PROPERTY returned %d\n", ret); + return -1; + } + return 0; +} + +static int set_fe_old(int fd, uint32_t fr, uint32_t sr) +{ + struct dvb_frontend_parameters p = { + .frequency = fr, + .inversion = INVERSION_AUTO, + .u.qpsk.symbol_rate = sr, + .u.qpsk.fec_inner = FEC_AUTO, + }; + + dbgprintf(DEBUG_DVB, "set front %d %d \n", fr, sr); + if (ioctl(fd, FE_SET_FRONTEND, &p) == -1) { + perror("FE_SET_FRONTEND error"); + return -1; + } + return 0; +} + +static void diseqc_send_msg(int fd, fe_sec_voltage_t v, + struct dvb_diseqc_master_cmd *cmd, + fe_sec_tone_mode_t t, fe_sec_mini_cmd_t b, + int wait) +{ + if (ioctl(fd, FE_SET_TONE, SEC_TONE_OFF) == -1) + perror("FE_SET_TONE failed"); + if (ioctl(fd, FE_SET_VOLTAGE, v) == -1) + perror("FE_SET_VOLTAGE failed"); + usleep(15 * 1000); + if (ioctl(fd, FE_DISEQC_SEND_MASTER_CMD, cmd) == -1) + perror("FE_DISEQC_SEND_MASTER_CMD failed"); + usleep(wait * 1000); + usleep(15 * 1000); + if (ioctl(fd, FE_DISEQC_SEND_BURST, b) == -1) + perror("FE_DISEQC_SEND_BURST failed"); + usleep(15 * 1000); + if (ioctl(fd, FE_SET_TONE, t) == -1) + perror("FE_SET_TONE failed"); +} + +static int diseqc(int fd, int sat, int hor, int band) +{ + struct dvb_diseqc_master_cmd cmd = { + .msg = {0xe0, 0x10, 0x38, 0xf0, 0x00, 0x00}, + .msg_len = 4 + }; + + hor &= 1; + cmd.msg[3] = 0xf0 | ( ((sat << 2) & 0x0c) | (band ? 1 : 0) | (hor ? 2 : 0)); + + diseqc_send_msg(fd, hor ? SEC_VOLTAGE_18 : SEC_VOLTAGE_13, + &cmd, band ? SEC_TONE_ON : SEC_TONE_OFF, + (sat & 1) ? SEC_MINI_B : SEC_MINI_A, 0); + return 0; +} + +static int set_en50494(int fd, uint32_t freq, uint32_t sr, + int sat, int hor, int band, + uint32_t slot, uint32_t ubfreq, + fe_delivery_system_t ds) +{ + struct dvb_diseqc_master_cmd cmd = { + .msg = {0xe0, 0x11, 0x5a, 0x00, 0x00}, + .msg_len = 5 + }; + uint16_t t; + + t = (freq + ubfreq + 2) / 4 - 350; + hor &= 1; + + cmd.msg[3] = ((t & 0x0300) >> 8) | + (slot << 5) | (sat ? 0x10 : 0) | (band ? 4 : 0) | (hor ? 8 : 0); + cmd.msg[4] = t & 0xff; + + if (ioctl(fd, FE_SET_TONE, SEC_TONE_OFF) == -1) + perror("FE_SET_TONE failed"); + if (ioctl(fd, FE_SET_VOLTAGE, SEC_VOLTAGE_18) == -1) + perror("FE_SET_VOLTAGE failed"); + usleep(15000); + if (ioctl(fd, FE_DISEQC_SEND_MASTER_CMD, &cmd) == -1) + perror("FE_DISEQC_SEND_MASTER_CMD failed"); + usleep(15000); + if (ioctl(fd, FE_SET_VOLTAGE, SEC_VOLTAGE_13) == -1) + perror("FE_SET_VOLTAGE failed"); + + set_fe(fd, ubfreq * 1000, sr * 1000, ds); + dbgprintf(DEBUG_DVB, "%02x %02x %02x %02x %02x\n", + cmd.msg[0], cmd.msg[1], cmd.msg[2], cmd.msg[3], cmd.msg[4]); +} + +static int set_en50607(int fd, uint32_t freq, uint32_t sr, + int sat, int hor, int band, + uint32_t slot, uint32_t ubfreq, + fe_delivery_system_t ds) +{ + struct dvb_diseqc_master_cmd cmd = { + .msg = {0x70, 0x00, 0x00, 0x00, 0x00}, + .msg_len = 4 + }; + uint32_t t = (freq / 1000) - 100; + + hor &= 1; + cmd.msg[1] = slot << 3; + cmd.msg[1] |= ((t >> 8) & 0x07); + cmd.msg[2] = (t & 0xff); + cmd.msg[3] = ((sat & 0x3f) << 2) | (hor ? 2 : 0) | (band ? 1 : 0); + + if (ioctl(fd, FE_SET_TONE, SEC_TONE_OFF) == -1) + perror("FE_SET_TONE failed"); + if (ioctl(fd, FE_SET_VOLTAGE, SEC_VOLTAGE_18) == -1) + perror("FE_SET_VOLTAGE failed"); + usleep(15000); + if (ioctl(fd, FE_DISEQC_SEND_MASTER_CMD, &cmd) == -1) + perror("FE_DISEQC_SEND_MASTER_CMD failed"); + usleep(15000); + if (ioctl(fd, FE_SET_VOLTAGE, SEC_VOLTAGE_13) == -1) + perror("FE_SET_VOLTAGE failed"); + + set_fe(fd, ubfreq * 1000, sr * 1000, ds); + dbgprintf(DEBUG_DVB, "%02x %02x %02x %02x %02x\n", + cmd.msg[0], cmd.msg[1], cmd.msg[2], cmd.msg[3], cmd.msg[4]); +} + +static int tune_sat(struct dvbfe *fe) +{ + uint32_t freq, hi = 0, src, lnb = 0, lofs; + fe_delivery_system_t ds = fe->n_param[PARAM_MSYS] - 1; + + dbgprintf(DEBUG_DVB, "tune_sat\n"); + freq = fe->param[PARAM_FREQ]; + + if (fe->param[PARAM_SRC]) + lnb = fe->param[PARAM_SRC] - 1; + + lofs = fe->lofs[lnb]; +#if 0 + if (freq < 5000000) { //3400 - 4200 ->5150 + lofs = 5150000; + if (freq > lofs) + freq -= lofs; + else + freq = lofs - freq; + } else if (freq > 19700000 && freq < 22000000) { //19700-22000 ->21200 + lofs = 21200000; + if (freq > lofs) + freq -= lofs; + else + freq = lofs - freq; + } else +#endif + { + if (lofs) + hi = (freq > lofs) ? 1 : 0; + if (hi) + freq -= fe->lof2[lnb]; + else + freq -= fe->lof1[lnb]; + } + if (fe->first) { + fe->first = 0; + dbgprintf(DEBUG_DVB, "pre voltage %d\n", fe->prev_delay[lnb]); + if (ioctl(fe->fd, FE_SET_VOLTAGE, SEC_VOLTAGE_13) == -1) + perror("FE_SET_VOLTAGE failed"); + usleep(fe->prev_delay[lnb]); + } + if (fe->scif_type == 1) { + pthread_mutex_lock(&fe->os->uni_lock); + set_en50494(fe->fd, freq / 1000, fe->param[PARAM_SR], + fe->param[PARAM_SRC] - 1, fe->param[PARAM_POL] - 1, hi, + fe->scif_slot, fe->scif_freq, ds); + pthread_mutex_unlock(&fe->os->uni_lock); + } else if (fe->scif_type == 2) { + set_en50607(fe->fd, freq / 1000, fe->param[PARAM_SR], + fe->param[PARAM_SRC] - 1, fe->param[PARAM_POL] - 1, hi, + fe->scif_slot, fe->scif_freq, ds); + } else { + diseqc(fe->fd, fe->param[PARAM_SRC] - 1, fe->param[PARAM_POL] - 1, hi); + set_fe(fe->fd, freq, fe->param[PARAM_SR] * 1000, ds); + } +} + +static int tune_c(struct dvbfe *fe) +{ + struct dtv_property p[] = { + { .cmd = DTV_CLEAR }, + { .cmd = DTV_FREQUENCY, .u.data = fe->param[PARAM_FREQ] * 1000 }, + { .cmd = DTV_BANDWIDTH_HZ, .u.data = fe->param[PARAM_BW_HZ] ? : 8000000 }, + { .cmd = DTV_SYMBOL_RATE, .u.data = fe->param[PARAM_SR] * 1000 }, + { .cmd = DTV_INNER_FEC, + .u.data = fe->param[PARAM_FEC] ? (fe->param[PARAM_FEC] - 1) : FEC_AUTO}, + { .cmd = DTV_TUNE }, + }; + struct dtv_properties c; + int ret; + + set_property(fe->fd, DTV_DELIVERY_SYSTEM, SYS_DVBC_ANNEX_A); + + c.num = 6; + c.props = p; + ret = ioctl(fe->fd, FE_SET_PROPERTY, &c); + if (ret < 0) { + fprintf(stderr, "FE_SET_PROPERTY returned %d\n", ret); + return -1; + } + return 0; +} + +static int tune_cable(struct dvbfe *fe) +{ + uint32_t freq; + struct dvb_frontend_parameters p = { + .frequency = fe->param[PARAM_FREQ] * 1000, + .u.qam.symbol_rate = fe->param[PARAM_SR] * 1000, + .u.qam.fec_inner = fe->param[PARAM_FEC] ? (fe->param[PARAM_FEC] - 1) : FEC_AUTO, + .u.qam.modulation = fe->param[PARAM_MTYPE] - 1, + }; + set_property(fe->fd, DTV_DELIVERY_SYSTEM, SYS_DVBC_ANNEX_A); + if (ioctl(fe->fd, FE_SET_FRONTEND, &p) == -1) { + perror("FE_SET_FRONTEND error"); + return -1; + } + return 0; +} + +static int tune_terr(struct dvbfe *fe) +{ + struct dtv_property p[] = { + { .cmd = DTV_CLEAR }, + { .cmd = DTV_FREQUENCY, .u.data = fe->param[PARAM_FREQ] * 1000 }, + { .cmd = DTV_BANDWIDTH_HZ, .u.data = fe->param[PARAM_BW_HZ] }, + { .cmd = DTV_TUNE }, + }; + struct dtv_properties c; + int ret; + + set_property(fe->fd, DTV_DELIVERY_SYSTEM, SYS_DVBT); + + c.num = 4; + c.props = p; + ret = ioctl(fe->fd, FE_SET_PROPERTY, &c); + if (ret < 0) { + fprintf(stderr, "FE_SET_PROPERTY returned %d\n", ret); + return -1; + } + return 0; +} +#if 0 +static int tune_terr(struct dvbfe *fe) +{ + uint32_t freq; + enum fe_bandwidth bw; + struct dvb_frontend_parameters p = { + .frequency = fe->param[PARAM_FREQ] * 1000, + .inversion = INVERSION_AUTO, + .u.ofdm.code_rate_HP = FEC_AUTO, + .u.ofdm.code_rate_LP = FEC_AUTO, + .u.ofdm.constellation = fe->param[PARAM_MTYPE] - 1, + .u.ofdm.transmission_mode = TRANSMISSION_MODE_AUTO, + .u.ofdm.guard_interval = GUARD_INTERVAL_AUTO, + .u.ofdm.hierarchy_information = HIERARCHY_AUTO, + .u.ofdm.bandwidth = fe->param[PARAM_BW] ? + (fe->param[PARAM_BW] - 1) : BANDWIDTH_AUTO, + }; + set_property(fe->fd, DTV_DELIVERY_SYSTEM, SYS_DVBT); + if (ioctl(fe->fd, FE_SET_FRONTEND, &p) == -1) { + perror("FE_SET_FRONTEND error"); + return -1; + } + return 0; +} +#endif + +static int tune_c2(struct dvbfe *fe) +{ + struct dtv_property p[] = { + { .cmd = DTV_CLEAR }, + { .cmd = DTV_FREQUENCY, .u.data = fe->param[PARAM_FREQ] * 1000 }, + { .cmd = DTV_BANDWIDTH_HZ, .u.data = fe->param[PARAM_BW_HZ] }, + { .cmd = DTV_STREAM_ID, .u.data = fe->param[PARAM_PLP] }, + { .cmd = DTV_TUNE }, + }; + struct dtv_properties c; + int ret; + + set_property(fe->fd, DTV_DELIVERY_SYSTEM, SYS_DVBC2); + + c.num = 5; + c.props = p; + ret = ioctl(fe->fd, FE_SET_PROPERTY, &c); + if (ret < 0) { + fprintf(stderr, "FE_SET_PROPERTY returned %d\n", ret); + return -1; + } + return 0; +} + +static int tune_terr2(struct dvbfe *fe) +{ + struct dtv_property p[] = { + { .cmd = DTV_CLEAR }, + { .cmd = DTV_FREQUENCY, .u.data = fe->param[PARAM_FREQ] * 1000 }, + { .cmd = DTV_BANDWIDTH_HZ, .u.data = fe->param[PARAM_BW_HZ] }, + { .cmd = DTV_STREAM_ID, .u.data = fe->param[PARAM_PLP] }, + { .cmd = DTV_TUNE }, + }; + struct dtv_properties c; + int ret; + + set_property(fe->fd, DTV_DELIVERY_SYSTEM, SYS_DVBT2); + + c.num = 5; + c.props = p; + ret = ioctl(fe->fd, FE_SET_PROPERTY, &c); + if (ret < 0) { + fprintf(stderr, "FE_SET_PROPERTY returned %d\n", ret); + return -1; + } + return 0; +} + +static int tune(struct dvbfe *fe) +{ + int ret; + + printf("tune()\n"); + + switch (fe->n_param[PARAM_MSYS] - 1) { + case SYS_DVBS: + case SYS_DVBS2: + ret = tune_sat(fe); + break; + case SYS_DVBC_ANNEX_A: + ret = tune_c(fe); + break; + case SYS_DVBT: + ret = tune_terr(fe); + break; + case SYS_DVBT2: + ret = tune_terr2(fe); + break; + case SYS_DVBC2: + ret = tune_c2(fe); + break; + default: + break; + } + return ret; +} + +static int open_dmx(struct dvbfe *fe) +{ + char fname[80]; + struct dmx_pes_filter_params pesFilterParams; + + sprintf(fname, "/dev/dvb/adapter%u/demux%u", fe->anum, fe->fnum); + + fe->dmx = open(fname, O_RDWR); + if (fe->dmx < 0) + return -1; + + pesFilterParams.input = DMX_IN_FRONTEND; + pesFilterParams.output = DMX_OUT_TS_TAP; + pesFilterParams.pes_type = DMX_PES_OTHER; + pesFilterParams.flags = DMX_IMMEDIATE_START; + pesFilterParams.pid = 0x00; + + if (ioctl(fe->dmx, DMX_SET_PES_FILTER, &pesFilterParams) < 0) + return -1; + return 0; +} + + +static int open_fe(struct dvbfe *fe) +{ + char fname[80]; + + sprintf(fname, "/dev/dvb/adapter%d/frontend%d", fe->anum, fe->fnum); + fe->fd = open(fname, O_RDWR); + if (fe->fd < 0) + return -1; + return 0; +} + +static void get_stats(struct dvbfe *fe) +{ + uint16_t sig = 0, snr = 0; + fe_status_t stat; + + ioctl(fe->fd, FE_READ_STATUS, &stat); + ioctl(fe->fd, FE_READ_SIGNAL_STRENGTH, &sig); + ioctl(fe->fd, FE_READ_SNR, &snr); + fe->stat = stat; + fe->lock = (stat == 0x1f) ? 1 : 0; + + /* FIXME: use new stats API */ + if (fe->type & (1UL << SYS_DVBS2)) { + fe->level = sig >> 8; + fe->quality = snr >> 12; + } else { + fe->level = sig >> 2; + fe->quality = snr >> 9; + } + dbgprintf(DEBUG_DVB, "fe%d: stat=%02x str=%04x snr=%04x\n", fe->nr, stat, sig, snr); +} + +void handle_fe(struct dvbfe *fe) +{ + uint32_t newtune, count = 0, max, nolock = 0; + int ret; + + fe->dmx = -1; + fe->tune = 0; + memset(fe->param, 0, sizeof(fe->param)); + fe->first = 1; + open_fe(fe); + open_dmx(fe); + while (fe->state == 1) { + pthread_mutex_lock(&fe->mutex); + newtune = fe->n_tune; + if (newtune == 1) { + fe->n_tune = 0; + if (!memcmp(fe->param, fe->n_param, sizeof(fe->param))) { + dbgprintf(DEBUG_DVB, "same params\n"); + fe->tune = 2; + count = 0; + nolock = 10; + max = 2; + } else { + memcpy(fe->param, fe->n_param, sizeof(fe->param)); + fe->tune = 1; + } + } + pthread_mutex_unlock(&fe->mutex); + + switch (fe->tune) { + case 1: + dbgprintf(DEBUG_DVB, "fe %d tune\n", fe->nr); + tune(fe); + nolock = 0; + count = 0; + max = 2; + dbgprintf(DEBUG_DVB, "fe %d tune done\n", fe->nr); + fe->tune = 2; + break; + case 2: + count++; + if (count < max) + break; + count = 0; + get_stats(fe); + if (fe->lock) { + max = 20; + nolock = 0; + } else { + max = 1; + nolock++; + if (nolock > 20) + fe->tune = 1; + } + break; + + default: + break; + } + if (fe->state != 1) + break; + usleep(50000); + } + close(fe->fd); + if (fe->dmx > 0) + close(fe->dmx); + fe->fd = -1; + fe->dmx = -1; + fe->stat = fe->lock = fe->level = fe->quality = 0; + fe->state = 0; + dbgprintf(DEBUG_DVB, "fe %d done\n", fe->nr); +} + +int dvb_tune(struct dvbfe *fe, struct dvb_params *p) +{ + int ret = 0; + + dbgprintf(DEBUG_DVB, "dvb_tune\n"); + pthread_mutex_lock(&fe->mutex); + memcpy(fe->n_param, p->param, sizeof(fe->n_param)); + fe->n_tune = 1; + pthread_mutex_unlock(&fe->mutex); + pthread_yield(); + return ret; +} + +static int init_fe(struct octoserve *os, int a, int f, int fd, int nodvbt, int noswitch) +{ + struct dtv_properties dps; + struct dtv_property dp[10]; + struct dvbfe *fe; + int r; + uint32_t i, ds; + + dbgprintf(DEBUG_DVB, "detect_dvb a=%d f=%d\n", a,f); + fe = &os->dvbfe[os->dvbfe_num]; + dps.num = 1; + dps.props = dp; + dp[0].cmd = DTV_ENUM_DELSYS; + r = ioctl(fd, FE_GET_PROPERTY, &dps); + if (r < 0) + return -1; + for (i = 0; i < dp[0].u.buffer.len; i++) { + ds = dp[0].u.buffer.data[i]; + dbgprintf(DEBUG_DVB, "delivery system %d\n", ds); + fe->type |= (1UL << ds); + } + if (nodvbt) + fe->type &= ~((1UL << SYS_DVBT2) | (1UL << SYS_DVBT)); + + if (!fe->type) + return -1; + + if (fe->type & (1UL << SYS_DVBS2)) + os->dvbs2num++; + if (fe->type & (1UL << SYS_DVBT2)) + os->dvbt2num++; + else if (fe->type & (1UL << SYS_DVBT)) + os->dvbtnum++; + if (fe->type & (1UL << SYS_DVBC2)) + os->dvbc2num++; + else if (fe->type & (1UL << SYS_DVBC_ANNEX_A)) + os->dvbcnum++; + fe->os = os; + fe->anum = a; + fe->fnum = f; + fe->nr = os->dvbfe_num + 1; + + dps.num = 1; + dps.props = dp; + dp[0].cmd = DTV_INPUT; + r = ioctl(fd, FE_GET_PROPERTY, &dps); + if (r < 0) + return -1; + for (i = 0; i < dp[0].u.buffer.len; i++) { + fe->input[i] = dp[0].u.buffer.data[i]; + dbgprintf(DEBUG_DVB, "input prop %u = %u\n", i, fe->input[i]); + } + if (fe->input[3]) { + os->has_feswitch = 1; + if (noswitch) { + if (fe->input[2] >= fe->input[1]) { + fe->type = 0; + return -1; + } + } else + os->do_feswitch = 1; + } + + os->dvbfe_num++; + pthread_mutex_init(&fe->mutex, 0); + return 0; +} + +static int scan_dvbfe(struct octoserve *os, int nodvbt, int noswitch) +{ + int a, f, fd; + char fname[80]; + + for (a = 0; a < 16; a++) { + for (f = 0; f < 16; f++) { + sprintf(fname, "/dev/dvb/adapter%d/frontend%d", a, f); + fd = open(fname, O_RDWR); + if (fd >= 0) { + init_fe(os, a, f, fd, nodvbt, noswitch); + close(fd); + } + } + } + dbgprintf(DEBUG_DVB, "Found %d frontends\n", os->dvbfe_num); +} + +static int ai_callback(void *arg, uint8_t slot_id, uint16_t session_number, + uint8_t application_type, uint16_t application_manufacturer, + uint16_t manufacturer_code, uint8_t menu_string_length, + uint8_t *menu_string) +{ + struct dvbca *ca = arg; + + dbgprintf(DEBUG_DVB, "Application type: %02x\n", application_type); + dbgprintf(DEBUG_DVB, "Application manufacturer: %04x\n", application_manufacturer); + dbgprintf(DEBUG_DVB, "Manufacturer code: %04x\n", manufacturer_code); + dbgprintf(DEBUG_DVB, "Menu string: %.*s\n", menu_string_length, menu_string); + + return 0; +} + +static int ca_info_callback(void *arg, uint8_t slot_id, uint16_t snum, + uint32_t id_count, uint16_t *ids) +{ + struct dvbca *ca = arg; + uint32_t i; + + dbgprintf(DEBUG_DVB, "CAM supports the following ca system ids:\n"); + for (i = 0; i < id_count; i++) { + dbgprintf(DEBUG_DVB, " 0x%04x\n", ids[i]); + } + ca->resource_ready = 1; + return 0; +} + +#if 0 +static int handle_pmt(struct dvbca *ca, uint8_t *buf, int size) +{ + int listmgmt = CA_LIST_MANAGEMENT_ONLY; + uint8_t capmt[4096]; + struct section *section = section_codec(buf, size); + struct section_ext *section_ext = section_ext_decode(section, 0); + struct mpeg_pmt_section *pmt = mpeg_pmt_section_codec(section_ext); + + dbgprintf(DEBUG_DVB, "handle pmt\n"); + if (section_ext->version_number == ca->ca_pmt_version && + ca->pmt == ca->pmt_old) + return; + if (ca->pmt != ca->pmt_old) { + ca->pmt_old = ca->pmt; + ca->sentpmt = 0; + } + if (ca->resource_ready) { + ca->data_pmt_version = pmt->head.version_number; + + if (ca->sentpmt) { + listmgmt = CA_LIST_MANAGEMENT_UPDATE; + //return; + } + ca->sentpmt = 1; + dbgprintf(DEBUG_DVB, "set ca_pmt\n"); + + if ((size = en50221_ca_format_pmt(pmt, capmt, sizeof(capmt), ca->moveca, listmgmt, + CA_PMT_CMD_ID_OK_DESCRAMBLING)) < 0) { + dbgprintf(DEBUG_DVB, "Failed to format PMT\n"); + return -1; + } + if (en50221_app_ca_pmt(ca->stdcam->ca_resource, ca->stdcam->ca_session_number, capmt, size)) { + dbgprintf(DEBUG_DVB, "Failed to send PMT\n"); + return -1; + } + } + +} +#endif + + +static void handle_tdt(struct dvbca *ca) +{ + struct section *section; + struct dvb_tdt_section *tdt; + uint8_t sec[4096]; + time_t dvb_time; + int len; + + if (ca->stdcam == NULL) + return; + if (ca->stdcam->dvbtime == NULL) + return; + len = getsec(ca->input, 0x14, 0, 0x70, sec); + if (len < 0) + return; + dbgprintf(DEBUG_DVB, "got tdt\n"); + + section = section_codec(sec, len); + if (section == NULL) + return; + tdt = dvb_tdt_section_codec(section); + if (tdt == NULL) + return; + dvb_time = dvbdate_to_unixtime(tdt->utc_time); + + dbgprintf(DEBUG_DVB, "set dvbtime\n"); + if (ca->stdcam->dvbtime) + ca->stdcam->dvbtime(ca->stdcam, dvb_time); +} + +static int handle_pmts(struct dvbca *ca) +{ + int listmgmt = CA_LIST_MANAGEMENT_ONLY; + uint8_t sec[4096], capmt[4096]; + struct section *section; + struct section_ext *section_ext; + struct mpeg_pmt_section *pmt; + int i, size, num, len; + + if (!ca->resource_ready) + return 0; + dbgprintf(DEBUG_DVB, "handle pmts\n"); + for (i = num = 0; i < MAX_PMT; i++) + if (ca->pmt[i]) + num++; + for (i = 0; i < num; i++) { + len = getsec(ca->input, ca->pmt[i] & 0xffff, ca->pmt[i] >> 16, 2, sec); + if (len < 0) + continue; + section = section_codec(sec, len); + section_ext = section_ext_decode(section, 0); + pmt = mpeg_pmt_section_codec(section_ext); + + ca->ca_pmt_version[i] = section_ext->version_number; + if (ca->sentpmt) { + //return 0; + listmgmt = CA_LIST_MANAGEMENT_UPDATE; + } else { + listmgmt = CA_LIST_MANAGEMENT_ONLY; + if (num > 1) { + listmgmt = CA_LIST_MANAGEMENT_MORE; + if (i == 0) + listmgmt = CA_LIST_MANAGEMENT_FIRST; + if (i == num - 1) + listmgmt = CA_LIST_MANAGEMENT_LAST; + } + } + dbgprintf(DEBUG_DVB, "set ca_pmt\n"); + + if ((size = en50221_ca_format_pmt(pmt, capmt, sizeof(capmt), ca->moveca, listmgmt, + CA_PMT_CMD_ID_OK_DESCRAMBLING)) < 0) { + dbgprintf(DEBUG_DVB, "Failed to format PMT\n"); + return -1; + } + dump(capmt, size); + if (en50221_app_ca_pmt(ca->stdcam->ca_resource, ca->stdcam->ca_session_number, capmt, size)) { + dbgprintf(DEBUG_DVB, "Failed to send PMT\n"); + return -1; + } + } + if (num) + ca->sentpmt = 1; + return 0; +} + +static void proc_csock_msg(struct dvbca *ca, uint8_t *buf, int len) +{ + if (*buf == '\r') { + return; + } else if (*buf == '\n') { + switch(ca->mmi_state) { + case MMI_STATE_CLOSED: + case MMI_STATE_OPEN: + if ((ca->mmi_bufp == 0) && (ca->resource_ready)) { + en50221_app_ai_entermenu(ca->stdcam->ai_resource, + ca->stdcam->ai_session_number); + } + break; + + case MMI_STATE_ENQ: + if (ca->mmi_bufp == 0) { + en50221_app_mmi_answ(ca->stdcam->mmi_resource, + ca->stdcam->mmi_session_number, + MMI_ANSW_ID_CANCEL, NULL, 0); + } else { + en50221_app_mmi_answ(ca->stdcam->mmi_resource, + ca->stdcam->mmi_session_number, + MMI_ANSW_ID_ANSWER, + ca->mmi_buf, ca->mmi_bufp); + } + ca->mmi_state = MMI_STATE_OPEN; + break; + + case MMI_STATE_MENU: + ca->mmi_buf[ca->mmi_bufp] = 0; + en50221_app_mmi_menu_answ(ca->stdcam->mmi_resource, + ca->stdcam->mmi_session_number, + atoi(ca->mmi_buf)); + ca->mmi_state = MMI_STATE_OPEN; + break; + } + ca->mmi_bufp = 0; + } else { + if (ca->mmi_bufp < (sizeof(ca->mmi_buf) - 1)) { + ca->mmi_buf[ca->mmi_bufp++] = *buf; + } + } +} + +static int proc_csock(struct dvbca *ca) +{ + uint8_t buf[1024]; + int len, i, res; + + if (ca->stdcam == NULL) + return; + while ((len = recv(ca->sock, buf, 1, 0)) >= 0) { + if (len == 0) + goto release; + if (len < 0) { + if (errno != EAGAIN) + goto release; + return 0; + } + proc_csock_msg(ca, buf, len); + } + return 0; +release: + close(ca->sock); + ca->sock = -1; + return -1; +} + +static void handle_ci(struct dvbca *ca) +{ + uint8_t sec[4096]; + uint32_t pmt_count, tdt_count; + int len; + int sock, i; + struct sockaddr sadr; + char port[6]; + + snprintf(port, sizeof(port), "%u", (uint16_t) (8888 + ca->nr)); + sock = streamsock(port, AF_INET, &sadr); + if (listen(sock, 4) < 0) { + dbgprintf(DEBUG_DVB, "listen error"); + return; + } + ca->sock = -1; + + while (!ca->os->exit) { + struct timeval timeout; + uint32_t count = 0; + int num; + int mfd; + fd_set fds; + + timeout.tv_sec = 0; + timeout.tv_usec = 200000; + FD_ZERO(&fds); + if (ca->sock < 0) { + FD_SET(sock, &fds); + num = select(sock + 1, &fds, NULL, NULL, &timeout); + } else { + FD_SET(ca->sock, &fds); + num = select(ca->sock + 1, &fds, NULL, NULL, &timeout); + } + if (num > 0) { + if (ca->sock < 0) { + if (FD_ISSET(sock, &fds)) { + socklen_t len; + struct sockaddr cadr; + + ca->sock = accept(sock, &cadr, &len); + if (ca->sock >= 0) { + set_nonblock(ca->sock); + } + } + } else { + if (FD_ISSET(ca->sock, &fds)) { + proc_csock(ca); + } + } + } + + pthread_mutex_lock(&ca->mutex); + if (!ca->state) { + pthread_mutex_unlock(&ca->mutex); + continue; + } + if (ca->setpmt) { + dbgprintf(DEBUG_DVB, "got new PMT %08x\n", ca->pmt_new); + memcpy(ca->pmt, ca->pmt_new, sizeof(ca->pmt)); + memset(ca->pmt_old, 0, sizeof(ca->pmt_old)); + for (i = 0; i < MAX_PMT; i++) + ca->ca_pmt_version[i] = -1; + ca->sentpmt = 0; + ca->setpmt = 0; + pmt_count = 0; + tdt_count = 0; + } + pthread_mutex_unlock(&ca->mutex); + + if (!ca->sentpmt) + handle_pmts(ca); + else { + pmt_count++; + if (pmt_count == 10) { + //handle_pmts(ca); + pmt_count = 0; + } + } + tdt_count++; + if (tdt_count == 10) { + handle_tdt(ca); + tdt_count = 0; + } + } +} + +int set_pmt(struct dvbca *ca, uint32_t *pmt) +{ + dbgprintf(DEBUG_DVB, "set_pmt %08x %08x %08x\n", pmt[0], pmt[1], pmt[2]); + pthread_mutex_lock(&ca->mutex); + ca->setpmt = 1; + memcpy(ca->pmt_new, pmt, sizeof(ca->pmt_new)); + pthread_mutex_unlock(&ca->mutex); + return 0; +} + +static void ci_poll(struct dvbca *ca) +{ + while (!ca->os->exit) { + ca->stdcam->poll(ca->stdcam); + + } +} + +static int mmi_close_callback(void *arg, uint8_t slot_id, uint16_t snum, + uint8_t cmd_id, uint8_t delay) +{ + struct dvbca *ca = arg; + + ca->mmi_state = MMI_STATE_CLOSED; + return 0; +} + +static int mmi_display_control_callback(void *arg, uint8_t slot_id, uint16_t snum, + uint8_t cmd_id, uint8_t mmi_mode) +{ + struct dvbca *ca = arg; + struct en50221_app_mmi_display_reply_details reply; + + if (cmd_id != MMI_DISPLAY_CONTROL_CMD_ID_SET_MMI_MODE) { + en50221_app_mmi_display_reply(ca->stdcam->mmi_resource, snum, + MMI_DISPLAY_REPLY_ID_UNKNOWN_CMD_ID, &reply); + return 0; + } + + // we only support high level mode + if (mmi_mode != MMI_MODE_HIGH_LEVEL) { + en50221_app_mmi_display_reply(ca->stdcam->mmi_resource, snum, + MMI_DISPLAY_REPLY_ID_UNKNOWN_MMI_MODE, &reply); + return 0; + } + + reply.u.mode_ack.mmi_mode = mmi_mode; + en50221_app_mmi_display_reply(ca->stdcam->mmi_resource, snum, + MMI_DISPLAY_REPLY_ID_MMI_MODE_ACK, &reply); + ca->mmi_state = MMI_STATE_OPEN; + return 0; +} + +static int mmi_enq_callback(void *arg, uint8_t slot_id, uint16_t snum, + uint8_t blind_answer, uint8_t expected_answer_length, + uint8_t *text, uint32_t text_size) +{ + struct dvbca *ca = arg; + + if (ca->sock >= 0) { + sendstring(ca->sock, "%.*s: ", text_size, text); + } + //mmi_enq_blind = blind_answer; + //mmi_enq_length = expected_answer_length; + ca->mmi_state = MMI_STATE_ENQ; + return 0; +} + +static int mmi_menu_callback(void *arg, uint8_t slot_id, uint16_t snum, + struct en50221_app_mmi_text *title, + struct en50221_app_mmi_text *sub_title, + struct en50221_app_mmi_text *bottom, + uint32_t item_count, struct en50221_app_mmi_text *items, + uint32_t item_raw_length, uint8_t *items_raw) +{ + uint32_t i; + struct dvbca *ca = arg; + + if (ca->sock >= 0) { + if (title->text_length) + sendstring(ca->sock, "%.*s\n", title->text_length, title->text); + if (sub_title->text_length) + sendstring(ca->sock, "%.*s\n", sub_title->text_length, sub_title->text); + for (i = 0; i < item_count; i++) + sendstring(ca->sock, "%i. %.*s\n", i + 1, items[i].text_length, items[i].text); + if (bottom->text_length) + sendstring(ca->sock, "%.*s\n", bottom->text_length, bottom->text); + } + ca->mmi_state = MMI_STATE_MENU; + return 0; +} + +static int init_ca_stack(struct dvbca *ca) +{ + ca->tl = en50221_tl_create(1, 16); + if (ca->tl == NULL) { + dbgprintf(DEBUG_DVB, "Failed to create transport layer\n"); + return -1; + } + ca->sl = en50221_sl_create(ca->tl, 16); + if (ca->sl == NULL) { + dbgprintf(DEBUG_DVB, "Failed to create session layer\n"); + en50221_tl_destroy(ca->tl); + return -1; + } + + ca->stdcam = en50221_stdcam_llci_create(ca->fd, 0, ca->tl, ca->sl); + if (!ca->stdcam) { + dbgprintf(DEBUG_DVB, "Failed to create stdcam\n"); + en50221_sl_destroy(ca->sl); + en50221_tl_destroy(ca->tl); + return -1; + } + if (ca->stdcam->ai_resource) { + en50221_app_ai_register_callback(ca->stdcam->ai_resource, ai_callback, ca); + } + if (ca->stdcam->ca_resource) { + en50221_app_ca_register_info_callback(ca->stdcam->ca_resource, ca_info_callback, ca); + } + if (ca->stdcam->mmi_resource) { + en50221_app_mmi_register_close_callback(ca->stdcam->mmi_resource, mmi_close_callback, ca); + en50221_app_mmi_register_display_control_callback(ca->stdcam->mmi_resource, + mmi_display_control_callback, ca); + en50221_app_mmi_register_enq_callback(ca->stdcam->mmi_resource, mmi_enq_callback, ca); + en50221_app_mmi_register_menu_callback(ca->stdcam->mmi_resource, mmi_menu_callback, ca); + en50221_app_mmi_register_list_callback(ca->stdcam->mmi_resource, mmi_menu_callback, ca); + } else { + dbgprintf(DEBUG_DVB, + "CAM Menus are not supported by this interface hardware\n"); + } + return 0; +} + +static int init_ca(struct octoserve *os, int a, int f, int fd) +{ + struct dvbca *ca; + + ca = &os->dvbca[os->dvbca_num]; + ca->os = os; + ca->anum = a; + ca->fnum = f; + ca->nr = os->dvbca_num + 1; + ca->fd = fd; + pthread_mutex_init(&ca->mutex, 0); + + init_ca_stack(ca); + + pthread_create(&ca->poll_pt, NULL, (void *) ci_poll, ca); + pthread_create(&ca->pt, NULL, (void *) handle_ci, ca); + + os->dvbca_num++; + return 0; +} + +static int scan_dvbca(struct octoserve *os) +{ + int a, f, fd; + char fname[80]; + + for (a = 0; a < 16; a++) { + for (f = 0; f < 16; f++) { + sprintf(fname, "/dev/dvb/adapter%d/ca%d", a, f); + fd = open(fname, O_RDWR); + if (fd >= 0) { + init_ca(os, a, f, fd); + //close(fd); + } + } + } + dbgprintf(DEBUG_DVB, "Found %d CA interfaces\n", os->dvbca_num); +} + +void scif_config(struct octoserve *os, char *name, char *val) +{ + if (!name || !val) + return; + + if (!strncasecmp(name, "type", 4) && + val[0] >= 0x30 && val[0] <= 0x32) { + os->scif_type = val[0] - 0x30; + dbgprintf(DEBUG_DVB, "setting type = %d\n", os->scif_type); + } + if (!strncasecmp(name, "tuner", 5) && + name[5] >= 0x31 && name[5] <= 0x38) { + int fe = name[5] - 0x31; + char *end; + unsigned long int nr = strtoul(val, &end, 10), freq = 0; + + if (nr > 8) + return; + if (*end == ',') { + val = end + 1; + freq = strtoul(val, &end, 10); + if (val == end) + return; + } + if (nr == 0) + os->dvbfe[fe].scif_type = 0; + else { + os->dvbfe[fe].scif_slot = nr - 1; + os->dvbfe[fe].scif_freq = freq; + os->dvbfe[fe].scif_type = os->scif_type; + } + dbgprintf(DEBUG_DVB, "fe%d: type=%d, slot=%d, freq=%d\n", fe, + os->dvbfe[fe].scif_type, + os->dvbfe[fe].scif_slot, + os->dvbfe[fe].scif_freq); + } +} + + +void set_lnb(struct octoserve *os, int tuner, + uint32_t source, uint32_t lof1, uint32_t lof2, uint32_t lofs) +{ + int i, j; + int i1 = 0, i2 = MAX_DVB_FE; + int j1 = 0, j2 = MAX_SOURCE; + + if (tuner > MAX_DVB_FE) + return; + if (source > MAX_SOURCE) + return; + + if (tuner) { + i1 = tuner - 1; + i2 = i1 + 1; + } + if (source) { + j1 = source - 1; + j2 = j1 + 1; + } + for (i = i1; i < i2; i++) { + struct dvbfe *fe = &os->dvbfe[i]; + for (j = j1; j < j2; j++) { + dbgprintf(DEBUG_DVB, "setting %d %d %u %u %u\n", + i, j, lof1, lof2, lofs); + fe->lof1[j] = lof1; + fe->lof2[j] = lof2; + fe->lofs[j] = lofs; + fe->prev_delay[j] = 250000; + } + } +} + +void lnb_config(struct octoserve *os, char *name, char *val) +{ + static int lnb = -1; + static uint32_t lof1, lof2, lofs, tuner, source; + char *end; + + if (!name || !val) { + if (lnb >= 0) + set_lnb(os, tuner, source, + lof1 * 1000, lof2 * 1000, lofs * 1000); + lnb++; + tuner = source = lof1 = lof2 = lofs = 0; + return; + } + if (!strcasecmp(name, "tuner")) { + tuner = strtoul(val, &end, 10); + } else if (!strcasecmp(name, "source")) { + source = strtoul(val, &end, 10); + } else if (!strcasecmp(name, "lof1")) { + lof1 = strtoul(val, &end, 10); + } else if (!strcasecmp(name, "lof2")) { + lof2 = strtoul(val, &end, 10); + } else if (!strcasecmp(name, "lofs")) { + lofs = strtoul(val, &end, 10); + } +} + +int init_dvb(struct octoserve *os, int nodvbt, int noswitch) +{ + int i, j; + + pthread_mutex_init(&nsd_lock, 0); + pthread_mutex_init(&os->uni_lock, 0); + + scan_dvbfe(os, nodvbt, noswitch); + scan_dvbca(os); + + os->scif_type = 0; + parse_config(os, "scif", &scif_config); + + if (os->has_feswitch) { + uint32_t fmode = 0; + + if (os->do_feswitch) { + fmode = 1; + if (os->scif_type) + fmode = 3; + } + set_fmode(fmode); + } + set_lnb(os, 0, 0, 9750000, 10600000, 11700000); + parse_config(os, "LNB", &lnb_config); +} + +int release_dvb(struct octoserve *os) +{ + int i; + + for (i = 0; i < os->dvbfe_num; i++) { + + } + + for (i = 0; i < os->dvbca_num; i++) { + struct dvbca *ca = &os->dvbca[i]; + + pthread_join(ca->poll_pt, NULL); + pthread_join(ca->pt, NULL); + } + pthread_mutex_destroy(&nsd_lock); + pthread_mutex_destroy(&os->uni_lock); +} diff --git a/octoserve/gpl.txt b/octoserve/gpl.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/octoserve/gpl.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/octoserve/http.c b/octoserve/http.c new file mode 100644 index 0000000..e3bf090 --- /dev/null +++ b/octoserve/http.c @@ -0,0 +1,441 @@ +/* + (C) 2012-13 Digital Devices GmbH. + + This file is part of the octoserve SAT>IP server. + + Octoserve 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 3 of the License, or + (at your option) any later version. + + Octoserve is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with octoserve. If not, see . +*/ + +#include "octoserve.h" + +char httpxml[] = + "HTTP/1.0 200 OK\r\nConnection: close\r\n" + "Content-Length: %d\r\nContent-Type: text/xml\r\nMime-Version: 1.0\r\n" + "\r\n"; + +char xmldesc[] = + "<\?xml version=\"1.0\"\?>\r\n" + "\r\n" + "\r\n1\r\n1\r\n\r\n" + "\r\n" + "urn:ses-com:device:SatIPServer:1\r\n" + "OctopusNet\r\n" + "DigitalDevices\r\n" + "http://www.digitaldevices.de/\r\n" + "OctopusNet\r\n" + "OctopusNet\r\n" + "1.0\r\n" + "http://www.digitaldevices.de/OctopusNet.html\r\n" + "%d\r\n" + "%s\r\n" + //"Universal Product Code\r\n" + "\r\n" + + "\r\nimage/png\r\n" + "120\r\n120\r\n" + "24\r\nwww/icons/dd-120.png\r\n" + "\r\n" + + "\r\nimage/jpg\r\n" + "120\r\n120\r\n" + "24\r\nwww/icons/dd-120.jpg\r\n" + "\r\n" + + "\r\nimage/png\r\n" + "48\r\n48\r\n" + "24\r\nwww/icons/dd-48.png\r\n" + "\r\n" + + "\r\nimage/jpg\r\n" + "48\r\n48\r\n" + "24\r\nwww/icons/dd-48.jpg\r\n" + "\r\n" + + "\r\n" + "../index.html\r\n" + "%s\r\n" + "\r\n" + "\r\n" + "\r\n"; + +char httpfile[] = + "HTTP/1.1 200 OK\r\nConnection: close\r\n" + "Content-Length: %d\r\n" + "Content-Type: %s\r\n" + "\r\n"; + +void send_http_error(int sock, int nr) +{ + char buf[2048], *str; + int len; + + if (nr == 404) + str = "Not Found"; + if (nr == 405) + str = "Method not allowed"; + + len = snprintf(buf, sizeof(buf), "HTTP/1.1 %d %s\r\nConnection: close\r\n\r\n", nr, str); + + if (len <= 0 || len >= sizeof(buf)) + return; + sendlen(sock, buf, len); +} + +static char *mtypes[] = { + "jpg", "image/jpeg", + "png", "image/png", + "html", "text/html", + NULL +}; + +void send_http_file(int sock, char *fn) +{ + uint8_t buf[1024]; + int len, len2, fd; + char fn2[1024] = { 0 }, *d, **m; + + strcat(fn2, "/var/satip"); + strcat(fn2, fn); + d = strrchr(fn, '.'); + if (d) { + printf("%s\n", d); + for (d++, m = &mtypes[0]; *m; m += 2) { + if (!strcmp(*m, d)) { + m++; + break; + } + } + d = *m; + } + if (!d) + d = "binary/octet-stream"; + + printf("open %s %s\n", fn2, d); + fd = open(fn2, O_RDONLY); + if (fd < 0) { + send_http_error(sock, 404); + return; + } + len = lseek(fd, 0, SEEK_END); + lseek(fd, 0, SEEK_SET); + len2 = sprintf(buf, httpfile, len, d); + sendlen(sock, buf, len2); + sendfile(sock, fd, 0, len); + close(fd); +} + +void send_xml(struct os_ssdp *ss) +{ + struct octoserve *os = ss->os; + uint8_t buf[2048], buf2[1024], cap[1024]; + int len, len2; + uint8_t *mac = &os->mac[0]; + int serial = (mac[5] | (mac[4] << 8) | (mac[3] << 16)) / 2; + + len = 0; + if (os->dvbs2num) + len += sprintf(cap + len, ",DVBS2-%u", os->dvbs2num); + if (os->dvbtnum) + len += sprintf(cap + len, ",DVBT-%u", os->dvbtnum); + if (os->dvbt2num) + len += sprintf(cap + len, ",DVBT2-%u", os->dvbt2num); + if (os->dvbcnum) + len += sprintf(cap + len, ",DVBC-%u", os->dvbcnum); + if (os->dvbc2num) + len += sprintf(cap + len, ",DVBC2-%u", os->dvbc2num); + len = snprintf(buf, sizeof(buf), xmldesc, + ss->configid, serial, ss->uuid_str, cap + 1); + if (len <= 0 || len >= sizeof(buf)) + return; + len2=sprintf(buf2, httpxml, len); + sendlen(ss->csock, buf2, len2); + sendlen(ss->csock, buf, len); + //printf("Send:\n%s", buf2); + //printf("%s\n", buf); +} + +char httptxt[] = + "HTTP/1.0 200 OK\r\nConnection: close\r\n" + "Content-Type: text/html\r\n" + "\r\n"; + +char httpjava[] = + "HTTP/1.0 200 OK\r\nConnection: close\r\nPragma: no-cache\r\n" + "Content-Type: application/x-javascript\r\n\r\n"; + +#define sendstr(_fd_,...) do { \ + len = snprintf(buf, sizeof(buf), __VA_ARGS__); \ + if (len <= 0 || len >= sizeof(buf)) \ + break; \ + sendlen(_fd_, buf, len); \ + } while (0); + +void send_serverinfo(struct os_ssdp *ss) +{ + struct octoserve *os = ss->os; + struct dvbfe *fe; + uint8_t buf[2048]; + int i, j, fd = ss->csock, len; + uint8_t *mac = &ss->os->mac[0]; + + sendlen(fd, httpjava, sizeof(httpjava) - 1); + sendstr(fd, "Octoserve = new Object();\r\n"); + sendstr(fd, "Octoserve.Version = \"" OCTOSERVE_VERSION "\";\r\n"); + sendstr(fd, "Octoserve.BootID = %u;\r\n", ss->bootid); + sendstr(fd, "Octoserve.DeviceID = %u;\r\n", ss->devid); + sendstr(fd, "Octoserve.MAC = \"%02x:%02x:%02x:%02x:%02x:%02x\";\r\n", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + sendstr(fd, "Octoserve.TunerList = new Array();\r\n"); + for (i = 0; i < MAX_DVB_FE; i++) { + struct dvbfe *fe = &os->dvbfe[i]; + + if (fe->type) { + char types[80]; + int pos; + + types[0] = 0; + if (fe->type & 0xb00ee) { + strcat(types, "DVB"); + pos = strlen(types); + if (fe->type & (1 << SYS_DVBS)) + strcat(types, "/S"); + if (fe->type & (1 << SYS_DVBS2)) + strcat(types, "/S2"); + if (fe->type & (1 << SYS_DVBC_ANNEX_A)) + strcat(types, "/C"); + if (fe->type & (1 << SYS_DVBC2)) + strcat(types, "/C2"); + if (fe->type & (1 << SYS_DVBT)) + strcat(types, "/T"); + if (fe->type & (1 << SYS_DVBT2)) + strcat(types, "/T2"); + strcat(types, " "); + types[pos] = '-'; + } + if (fe->type & 0x700) { + strcat(types, "ISDB"); + pos = strlen(types); + if (fe->type & (1 << SYS_ISDBT)) + strcat(types, "/T"); + if (fe->type & (1 << SYS_ISDBS)) + strcat(types, "/S"); + if (fe->type & (1 << SYS_ISDBC)) + strcat(types, "/C"); + types[pos] = '-'; + } + sendstr(fd, "Octoserve.TunerList[%d] = new Object();\r\n", i); + sendstr(fd, "Octoserve.TunerList[%d].Type = 0;\r\n", i); + sendstr(fd, "Octoserve.TunerList[%d].Desc = \"%s\";\r\n", i, types); + } else { + sendstr(fd, "Octoserve.TunerList[%d] = false;\r\n", i); + } + } +} + +void send_tunerstatus(struct os_ssdp *ss) +{ + struct octoserve *os = ss->os; + struct dvbfe *fe; + uint8_t buf[2048]; + int len, i, fd = ss->csock; + + sendlen(fd, httpjava, sizeof(httpjava) - 1); + sendstr(fd, "TunerList = new Array();\r\n"); + for (i = 0; i < MAX_DVB_FE; i++) { + fe = &os->dvbfe[i]; + sendstr(fd, "TunerList[%d] = new Object();\r\n", i); + sendstr(fd, "TunerList[%d].Active = %s;\r\n", i, fe->state ? "true" : "false"); + if (!fe->state) + continue; + sendstr(fd, "TunerList[%d].Lock = %s;\r\n", i, fe->lock ? "true" : "false"); + sendstr(fd, "TunerList[%d].Quality = %u;\r\n", i, fe->quality); + sendstr(fd, "TunerList[%d].Strength = %u;\r\n", i, fe->level); + } +} + +static uint32_t ddreg(int fd, uint32_t reg) +{ + struct ddb_reg ddr = { .reg = reg }; + + ioctl(fd, IOCTL_DDB_READ_REG, &ddr); + return ddr.val; +} + +static uint32_t ddrmem(int fd, uint8_t *buf, uint32_t off, uint32_t len) +{ + struct ddb_mem ddm = { .off = off, .buf = buf, .len = len }; + + return ioctl(fd, IOCTL_DDB_READ_MEM, &ddm); +} + +static void send_streamstatus(struct os_ssdp *ss) +{ + struct octoserve *os = ss->os; + struct osstrm *oss; + uint8_t buf[2048]; + int len, i, fd = ss->csock; + struct timeval tval; + struct timespec tp; + int dd; + + dd = open("/dev/ddbridge/card0", O_RDWR); /* FIXME: replace with ioctls */ + if (dd < 0) + return; + clock_gettime(CLOCK_MONOTONIC, &tp); + gettimeofday(&tval, NULL); + sendlen(fd, httpjava, sizeof(httpjava) - 1); + sendstr(fd, "TimeStamp = %d;\r\n", (uint32_t) (tp.tv_sec * 1000 + tp.tv_nsec / 1000000)); + sendstr(fd, "StreamList = new Array();\r\n"); + for (i = 0; i < MAX_STREAM; i++) { + uint32_t ctrl = ddreg(dd, 0x400 + i*0x20); + + sendstr(fd, "StreamList[%d] = new Object();\r\n", i); + sendstr(fd, "StreamList[%d].Status = \"%s\";\r\n", i, (ctrl & 1) ? "Active" : "Inactive"); + sendstr(fd, "StreamList[%d].Input = %d;\r\n", i, (ctrl >> 8) & 7); + sendstr(fd, "StreamList[%d].Packets = %d;\r\n", i, ddreg(dd, 0x41c + i*0x20)); + sendstr(fd, "StreamList[%d].Bytes = %d;\r\n", i, ddreg(dd, 0x418 + i*0x20)); + if (ctrl & 1) { + uint32_t off = 0x2000 + i * 0x200; + uint8_t mem[64]; + + ddrmem(dd, mem, off, sizeof(mem)); + off = 30; + if (mem[12] == 0x81) + off += 4; + sendstr(fd, "StreamList[%d].Client = \"%u.%u.%u.%u\";\r\n", i, + mem[off], mem[off + 1], mem[off + 2], mem[off + 3]); + } else + sendstr(fd, "StreamList[%d].Client = \"\";\r\n", i); + } + close(dd); +} + +static void send_octoserve(struct os_ssdp *ss) +{ + struct octoserve *os = ss->os; + struct dvbfe *fe; + uint8_t buf[2048], buf2[1024]; + int len, i; + + send(ss->csock, httptxt, sizeof(httptxt), 0); + for (i = 0; i < MAX_DVB_FE; i++) { + fe = &os->dvbfe[i]; + if (!fe->state) + continue; + len = snprintf(buf, sizeof(buf), "tuner%d: level=%d, quality=%d\r\n", + i, fe->level, fe->quality); + if (len <= 0 || len >= sizeof(buf)) + return; + send(ss->csock, buf, len, 0); + } +} + +void handle_http(struct os_ssdp *ss) +{ + int len; + uint8_t buf[2048]; + int p = 0; + + while (1) { + len = recv(ss->csock, buf + p, 2048 - p, 0); + if (!len) + return; + if (len > 0) { + p += len; + if (p > sizeof(buf)) { + send_http_error(ss->csock, 405); + break; + } + if (buf[p-4] == '\r' && buf[p-3] == '\n' && + buf[p-2] == '\r' && buf[p-1] == '\n') { + if (strncasecmp("GET ", buf, 4)) { + send_http_error(ss->csock, 405); + break; + } + if (!strncasecmp("GET /octonet.xml", buf, 16)) { + send_xml(ss); + break; + } else if (!strncasecmp("GET /serverinfo.js", buf, 18)) { + send_serverinfo(ss); + break; + } else if (!strncasecmp("GET /streamstatus.js", buf, 20)) { + send_streamstatus(ss); + break; + } else if (!strncasecmp("GET /tunerstatus.js", buf, 19)) { + send_tunerstatus(ss); + break; + } else { + int i = 3, j, fd; + + while (buf[i] == ' ') + i++; + j = i; + while (buf[j] && buf[j] != '\r' && buf[j] != ' ') + j++; + buf[j] = 0; + if (i == j) { + send_http_error(ss->csock, 404); + break; + } + send_http_file(ss->csock, buf + i); + } + break; + } + } + } + close(ss->csock); + return; +} + +static void http_loop(struct octoserve *os) +{ + struct os_http *http = &os->http; + int num; + int mfd; + fd_set fds; + struct timeval timeout; + + while (!os->exit) { + timeout.tv_sec = 1; + timeout.tv_usec = 0; + + FD_ZERO(&fds); + mfd = 0; + add_fd(http->sock, &mfd, &fds); + + num = select(mfd + 1, &fds, NULL, NULL, &timeout); + if (num < 0) + break; + if (FD_ISSET(http->sock, &fds)) { + socklen_t len; + pthread_t pt; + + http->csock = accept(http->sock, &http->cadr, &len); + //handle_http(http); + } + } +} + +int init_http(struct octoserve *os) +{ + struct os_http *http = &os->http; + + http->os = os; + http->sock = streamsock("8888", AF_INET, &http->sadr); + if (listen(http->sock, 10) < 0) { + printf("http listen error"); + return; + } + pthread_create(&os->http.pt, NULL, (void *) handle_http, os); +} diff --git a/octoserve/igmp.c b/octoserve/igmp.c new file mode 100644 index 0000000..05f85ab --- /dev/null +++ b/octoserve/igmp.c @@ -0,0 +1,255 @@ +/* + (C) 2012-13 Digital Devices GmbH. + + This file is part of the octoserve SAT>IP server. + + Octoserve 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 3 of the License, or + (at your option) any later version. + + Octoserve is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with octoserve. If not, see . +*/ + +#include "octoserve.h" + +extern uint32_t debug; + +static uint16_t cs16(uint8_t *p, uint32_t len) +{ + uint32_t cs; + + cs = (p[0] << 8) | p[1]; + p += 4; + len -= 4; + for (; len > 0; len -= 2, p += 2) + cs += (p[0] << 8) | p[1]; + if (len) + cs += p[0]; + + while (cs >> 16) + cs = (cs & 0xffff) + (cs >> 16); + return ~cs; +} + +void proc_igmp(struct octoserve *os, uint8_t *b, int l, uint8_t *macheader) +{ + int hl = (b[0] & 0xf) * 4, pl, rl, i, j, ns, al; + uint8_t cmd, *r, *s, type, *p; + uint16_t n; + char sd[64], mc[256], *mac = 0; + uint16_t cs; + + if (macheader) + mac = macheader + 6; + if (hl + 1 > l) + return; + + //dump(b, l); + sprintf(sd, "%03d.%03d.%03d.%03d -> %03d.%03d.%03d.%03d", + b[12], b[13], b[14], b[15], + b[16], b[17], b[18], b[19]); + + p = b + hl; + pl = l - hl; + if (pl < 4) + return; + if (cs16(p, pl) != ((p[2] << 8) | p[3])) { + dbgprintf(DEBUG_IGMP, "IGMP CS error\n"); + if (debug & DEBUG_IGMP) + dump(b, l); + return; + } + + cmd = b[hl]; + switch (cmd) { + case 0x11: + { + uint32_t a1, a2; + uint8_t *s; + + if (pl < 12) + return; + dbgprintf(DEBUG_IGMP, "IGMP: query by %s\n", sd); + s = (uint8_t *) &(((struct sockaddr_in *) &os->ssdp.sadr)->sin_addr); + a1 = (b[12] << 24) | (b[13] << 16) | (b[14] << 8) | b[15]; + a2 = (s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3]; + dbgprintf(DEBUG_IGMP, "%08x < %08x ? %s\n", a1, a2, (a1 < a2) ? "yes" : "no"); + if (a1 < a2) { + /* somebody else with lower IP is already sending queries */ + os->igmp_mode = 3; + time(&os->igmp_time); + os->igmp_tag++; + os->igmp_timeout = b[hl + 1] / 10 + 1; + dbgprintf(DEBUG_IGMP, "IGMP slave, tag = %u, timeout = %u\n", + os->igmp_tag, os->igmp_timeout); + } else + dbgprintf(DEBUG_IGMP, "IGMP master, tag = %u, timeout = %u\n", + os->igmp_tag, os->igmp_timeout); + break; + } + case 0x12: + if (pl < 8) + return; + dbgprintf(DEBUG_IGMP, "IGMPV1: %s : %d.%d.%d.%d\n", sd, + b[hl + 4], b[hl + 5], b[hl + 6], b[hl + 7]); + mc_join(os, b + 12, mac, &b[hl + 4]); + break; + case 0x16: + if (pl < 8) + return; + dbgprintf(DEBUG_IGMP, "IGMPV2: %s : %d.%d.%d.%d\n", sd, + b[hl + 4], b[hl + 5], b[hl + 6], b[hl + 7]); + mc_join(os, b + 12, mac, &b[hl + 4]); + break; + case 0x17: + if (pl < 8) + return; + dbgprintf(DEBUG_IGMP, "IGMPL: %s : %d.%d.%d.%d\n", sd, + b[hl + 4], b[hl + 5], b[hl + 6], b[hl + 7]); + mc_leave(os, b + 12, &b[hl + 4]); + break; + case 0x22: + if (pl < 8) + return; + pl -= 8; + //dump(b + hl, l - hl); + n = (b[hl + 6] << 8) | b[hl + 7]; + dbgprintf(DEBUG_IGMP, "IGMPV3: %s, %d records:\n", sd, n); + for (i = 0, r = &b[hl + 8]; i < n; i++, r += rl, pl -= rl) { + if (pl < 4) + return; + ns = (r[2] << 8) | r[3]; + al = r[1] * 4; + rl = 8 + ns * 4 + al; + if (pl < rl) + return; + type = r[0]; + dbgprintf(DEBUG_IGMP, "type %d, %d sources, %d aux:\n", type, ns, al); + if (ns) { + dbgprintf(DEBUG_IGMP, "cannot handle sources\n"); + continue; + } + if (type == 2) { + dbgprintf(DEBUG_IGMP, "IGMPV3: %s subscribed to %d\n", sd, ns); + mc_join(os, b + 12, mac, &r[4]); + } + if (type == 4) { + dbgprintf(DEBUG_IGMP, "IGMPV3: %s, change to Exclude %d (Join)\n", + sd, ns); + mc_join(os, b + 12, mac, &r[4]); + } + if (type == 3) { + dbgprintf(DEBUG_IGMP, "IGMPV3: %s, change to Include %d (Leave)\n", + sd, ns); + mc_leave(os, b + 12, &r[4]); + } + //printf("MC: %d.%d.%d.%d\n", r[4], r[5], r[6], r[7]); + for (j = 0, s = &r[8]; j < ns; j++, s += 4) { + dbgprintf(DEBUG_IGMP, "%d.%d.%d.%d\n", s[0], s[1], s[2], s[3]); + } + } + break; + } + //dump(b + hl, l - hl); +} + +static void calc_cs(uint8_t *m, uint32_t len) +{ + uint32_t cs = 0, i; + + for (i = 0; i < len - 1; i += 2) + cs += (m[i] << 8) | m[i + 1]; + if (i < len) + cs += m[i] << 8; + cs = (cs >> 16) + (cs & 0xffff); + cs = (cs >> 16) + (cs & 0xffff); + cs ^= 0xffff; + m[2] = cs >> 8; + m[3] = cs & 0xff; +} + +void send_igmp_query(struct octoserve *os, uint8_t *group, uint8_t timeout) +{ + uint8_t msg[] = { 0x11, 0x64, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x02, 0x7d, 0x00, 0x00 + }; + struct sockaddr_in insadr; + uint8_t zero = 0, ra[4] = { 0x94, 0x04, 0x00, 0x00 }; + + memset(&insadr, 0, sizeof(insadr)); + insadr.sin_family = AF_INET; + insadr.sin_port = IPPROTO_IGMP; + //insadr.sin_addr.s_addr = inet_addr("224.0.0.22"); + insadr.sin_addr.s_addr = inet_addr("224.0.0.1"); + + if (group) { + msg[4] = group[0]; + msg[5] = group[1]; + msg[6] = group[2]; + msg[7] = group[3]; + memcpy(&insadr.sin_addr.s_addr, group, 4); + } + if (timeout) + msg[1] = timeout; + + calc_cs(msg, sizeof(msg)); + + setsockopt(os->igmp_sock, IPPROTO_IP, IP_OPTIONS, ra, sizeof(ra)); + sendto(os->igmp_sock, msg, sizeof(msg), 0, (struct sockaddr *) &insadr, sizeof(insadr)); + dbgprintf(DEBUG_IGMP, "Queried group %03u.%03u.%03u.%03u\n", + msg[4], msg[5], msg[6], msg[7]); +} + +void check_igmp(struct octoserve *os) +{ + time_t tdiff, t; + + tdiff = time(&t) - os->igmp_time; + switch (os->igmp_mode) { + case 0: + if (tdiff > 124) { + os->igmp_timeout = 11; + dbgprintf(DEBUG_IGMP, + "%u: IGMP master query, tag = %u, timeout = %u\n", + t, os->igmp_tag, os->igmp_timeout); + os->igmp_tag++; + send_igmp_query(os, 0, 0); + os->igmp_time = t; + os->igmp_mode = 1; + if (os->igmp_robust) { + os->igmp_robust--; + os->igmp_time -= 94; + } + } + break; + case 1: + if (tdiff > os->igmp_timeout) { + dbgprintf(DEBUG_IGMP, "%u: IGMP timeout, tag = %u\n", t, os->igmp_tag); + os->igmp_mode = 0; + } + break; + case 2: + /* check if query master timed out */ + if (tdiff < 255) + return; + /* yes, so we will have to query from now on */ + os->igmp_mode = 0; + os->igmp_time = t - 94; + os->igmp_robust = 1; + break; + case 3: + if (tdiff > os->igmp_timeout) { + dbgprintf(DEBUG_IGMP, "%u: IGMP timeout, tag = %u\n", t, os->igmp_tag); + os->igmp_mode = 2; + } + break; + } +} diff --git a/octoserve/ns.h b/octoserve/ns.h new file mode 100644 index 0000000..691c65d --- /dev/null +++ b/octoserve/ns.h @@ -0,0 +1,68 @@ +#ifndef _UAPI_DVBNS_H_ +#define _UAPI_DVBNS_H_ + +#include + +struct dvb_ns_params { + __u8 smac[6]; + __u8 dmac[6]; + __u8 sip[16]; + __u8 dip[16]; + __u16 sport; + __u16 dport; + __u16 sport2; + __u16 dport2; + __u8 ssrc[8]; + __u8 flags; + __u8 qos; + __u16 vlan; + __u8 ttl; +}; + +#define DVB_NS_IPV6 1 +#define DVB_NS_RTP 2 +#define DVB_NS_RTCP 4 +#define DVB_NS_RTP_TO 8 + +struct dvb_ns_rtcp { + __u8 *msg; + __u16 len; +}; + +struct dvb_ns_packet { + __u8 *buf; + __u8 count; +}; + +struct dvb_nsd_ts { + __u16 pid; + __u16 num; + __u16 input; + __u16 timeout; + __u16 len; + __u8 *ts; + __u8 mode; + __u8 table; + + __u8 filter_mask; + __u8 section; + __u16 section_id; +}; + +#define NS_SET_NET _IOW('o', 192, struct dvb_ns_params) +#define NS_START _IO('o', 193) +#define NS_STOP _IO('o', 194) +#define NS_SET_PID _IOW('o', 195, __u16) +#define NS_SET_PIDS _IOW('o', 196, __u8 *) +#define NS_SET_RTCP_MSG _IOW('o', 197, struct dvb_ns_rtcp) + +#define NSD_START_GET_TS _IOWR('o', 198, struct dvb_nsd_ts) +#define NSD_STOP_GET_TS _IOWR('o', 199, struct dvb_nsd_ts) +#define NSD_CANCEL_GET_TS _IO('o', 200) +#define NSD_POLL_GET_TS _IOWR('o', 201, struct dvb_nsd_ts) + +#define NS_SET_PACKETS _IOW('o', 202, struct dvb_ns_packet) +#define NS_INSERT_PACKETS _IOW('o', 203, __u8) +#define NS_SET_CI _IOW('o', 204, __u8) + +#endif /*_UAPI_DVBNS_H_*/ diff --git a/octoserve/ntools.c b/octoserve/ntools.c new file mode 100644 index 0000000..f19548b --- /dev/null +++ b/octoserve/ntools.c @@ -0,0 +1,140 @@ +/* + (C) 2012-13 Digital Devices GmbH. + + This file is part of the octoserve SAT>IP server. + + Octoserve 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 3 of the License, or + (at your option) any later version. + + Octoserve is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with octoserve. If not, see . +*/ + +#include "octoserve.h" + +int streamsock(const char *port, int family, struct sockaddr *sadr) +{ + int one=1, sock; + struct addrinfo *ais, *ai, hints = { + .ai_flags = AI_PASSIVE, + .ai_family = family, + .ai_socktype = SOCK_STREAM, + .ai_protocol = 0, .ai_addrlen = 0, + .ai_addr = NULL, .ai_canonname = NULL, .ai_next = NULL, + }; + if (getaddrinfo(NULL, port, &hints, &ais) < 0) + return -1; + for (ai = ais; ai; ai = ai->ai_next) { + sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if (sock == -1) + continue; + if (!setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) && + !bind(sock, ai->ai_addr, ai->ai_addrlen)) { + *sadr = *ai->ai_addr; + break; + } + close(sock); + sock = -1; + } + freeaddrinfo(ais); + return sock; +} + +void sockname(struct sockaddr *sadr, char *name) +{ + void *adr; + char *unknown = "unknown"; + + strcpy(name, unknown); + if (sadr->sa_family == AF_INET) + adr = &((struct sockaddr_in *) sadr)->sin_addr; + else if (sadr->sa_family == AF_INET6) + adr = &((struct sockaddr_in6 *) sadr)->sin6_addr; + else + return; + inet_ntop(sadr->sa_family, adr, name, INET6_ADDRSTRLEN); + + printf("sockname: %s\n", name); +} + +int get_ifa(const char *ifname, int iffam, struct sockaddr *sadr) +{ + struct ifaddrs *ifaddrs, *ifa; + + if (getifaddrs(&ifaddrs) == -1) + return -1; + for (ifa = ifaddrs; ifa; ifa = ifa->ifa_next) { + if (!ifa->ifa_addr) + continue; + if (ifa->ifa_addr->sa_family != iffam) + continue; + if (strcmp(ifname, ifa->ifa_name)) + continue; + *sadr = *ifa->ifa_addr; +#if 1 + { + void *adr; + char buf[INET6_ADDRSTRLEN]; + + if (ifa->ifa_addr->sa_family == AF_INET) + adr = &((struct sockaddr_in *) ifa->ifa_addr)->sin_addr; + else + adr = &((struct sockaddr_in6 *) ifa->ifa_addr)->sin6_addr; + inet_ntop(ifa->ifa_addr->sa_family, adr, buf, sizeof(buf)); + printf("get_ifa %s:%s\n", ifname, buf); + } +#endif + freeifaddrs(ifaddrs); + return 0; + } + freeifaddrs(ifaddrs); + return -1; +} + + +void sadr2str(const struct sockaddr *sadr, char *s, size_t len) +{ + switch(sadr->sa_family) { + case AF_INET: + inet_ntop(AF_INET, + &(((struct sockaddr_in *)sadr)->sin_addr), s, len); + break; + + case AF_INET6: + inet_ntop(AF_INET6, + &(((struct sockaddr_in6 *)sadr)->sin6_addr), s, len); + break; + } +} + +int sendlen(int sock, char *buf, int len) +{ + int done, todo; + + for (todo = len; todo; todo -= done, buf += done) + if ((done = send(sock, buf, todo, 0)) < 0) + return done; + return len; +} + +int sendstring(int sock, char *fmt, ...) +{ + int len; + uint8_t buf[2048]; + va_list args; + + va_start(args, fmt); + len = vsnprintf(buf, sizeof(buf), fmt, args); + if (len <= 0 || len >= sizeof(buf)) + return; + sendlen(sock, buf, len); + va_end(args); +} + diff --git a/octoserve/octoserve.c b/octoserve/octoserve.c new file mode 100644 index 0000000..f1ec33a --- /dev/null +++ b/octoserve/octoserve.c @@ -0,0 +1,2596 @@ +/* + (C) 2012-14 Digital Devices GmbH. + + This file is part of the octoserve SAT>IP server. + + Octoserve 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 3 of the License, or + (at your option) any later version. + + Octoserve is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with octoserve. If not, see . +*/ + +#include "octoserve.h" + +#include + +uint32_t debug; + +void dump(const uint8_t *b, int l) +{ + int i, j; + + for (j = 0; j < l; j += 16, b += 16) { + for (i = 0; i < 16; i++) + if (i + j < l) + printf("%02x ", b[i]); + else + printf(" "); + printf(" | "); + for (i = 0; i < 16; i++) + if (i + j < l) + putchar((b[i] > 31 && b[i] < 127) ? b[i] : '.'); + printf("\n"); + } +} + +static void update_switch_vec(struct ossess *sess) +{ + struct osmcc *mcc; + uint32_t vec = 0; + + for (mcc = sess->mccs.lh_first; mcc; mcc = mcc->mcc.le_next) + vec |= mcc->port_vec; + if (vec != sess->mcc_port_vec_set || sess->port_vec != sess->port_vec_set) { + sess->mcc_port_vec_set = vec; + sess->port_vec_set = sess->port_vec; + switch_set_multicast(sess->trans.mcmac, + sess->mcc_port_vec_set | sess->port_vec_set); + } +} + +struct rtsp_error rtsp_errors[] = { + {100, "Continue"}, + {200, "OK"}, + {400, "Bad Request"}, + {403, "Forbidden"}, + {404, "Not Found"}, + {405, "Method Not Allowed"}, + {406, "Not Acceptable"}, + {408, "Request Timeout"}, + {414, "Request-URI Too Long"}, + {453, "Not Enough Bandwidth"}, + {454, "Session Not Found"}, + {455, "Method Not Valid in This State"}, + {461, "Unsupported Transport"}, + {500, "Internal Server Error"}, + {501, "Not Implemented"}, + {503, "Service Unavailable"}, + {505, "Version Not Supported"}, + {551, "Option Not Supported"}, + {0, ""}, +}; + +static int adrtoip(struct sockaddr *sa, uint8_t *ip) +{ + unsigned short af = sa->sa_family; + void *adr; + + if (af == AF_INET) + adr = &((struct sockaddr_in *) sa)->sin_addr; + else if (af == AF_INET6) + adr = &((struct sockaddr_in6 *) sa)->sin6_addr; + else + return -1; + memcpy(ip, adr, af == AF_INET ? 4 : 16); + return 0; +} + +static int check_self(struct sockaddr *sadr, uint8_t *mac) +{ + uint8_t ip[16]; + + if (adrtoip(sadr, ip) < 0) + return -1; +} + +static int get_mac(char *ifname, struct sockaddr *sadr, uint8_t *mac) +{ + struct arpreq arpreq; + int s; + + s = socket(AF_INET, SOCK_DGRAM, 0); + if (s < 0) + return -1; + memset(&arpreq, 0, sizeof(struct arpreq)); + memcpy(&arpreq.arp_pa, sadr, sizeof(struct sockaddr)); + + arpreq.arp_ha.sa_family = ARPHRD_ETHER; + strcpy(arpreq.arp_dev, ifname); + if (ioctl(s, SIOCGARP, &arpreq) < 0) { + perror("get_mac socket error on"); + dump((uint8_t *)sadr, sizeof(struct sockaddr)); + close(s); + return -1; + } + close(s); + memcpy(mac, arpreq.arp_ha.sa_data, 6); + dbgprintf(DEBUG_NET, "%s=%02x:%02x:%02x:%02x:%02x:%02x\n", ifname, + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + return 0; +} + +static int ip2mac(uint8_t *ip, uint8_t *mac) +{ + struct arpreq arpreq; + struct sockaddr_in *sin = (struct sockaddr_in *) &arpreq.arp_pa; + int s; + + s = socket(AF_INET, SOCK_DGRAM, 0); + if (s < 0) + return -1; + memset(&arpreq, 0, sizeof(struct arpreq)); + sin->sin_family = AF_INET; + memcpy(&sin->sin_addr.s_addr, ip, 4); + + if (ioctl(s, SIOCGARP, &arpreq) < 0) { + perror("ip2mac socket error"); + close(s); + return -1; + } + close(s); + memcpy(mac, arpreq.arp_ha.sa_data, 6); + dbgprintf(DEBUG_NET, "%u.%u.%u.%u=%02x:%02x:%02x:%02x:%02x:%02x\n", + ip[0], ip[1], ip[2], ip[3], + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + return 0; +} + +static void add_fd(int fd, int *mfd, fd_set *fds) +{ + FD_SET(fd, fds); + if (fd > *mfd) + *mfd = fd; +} + +int readmii(int id, int reg) +{ + int fd; + struct ifreq ifr; + struct mii_ioctl_data *mii = (struct mii_ioctl_data *) &ifr.ifr_data; + + strcpy(ifr.ifr_name, "eth0"); + mii->phy_id = id; + mii->reg_num = reg; + mii->val_in = 0; + mii->val_out = 0; + fd = socket(AF_INET, SOCK_DGRAM, 0); + ioctl(fd, SIOCGMIIREG, &ifr); + dbgprintf(DEBUG_NET, "mii %02x.%02x = %02x\n", id, reg, mii->val_out); +} + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************/ + +void send_error(struct oscon *con, int err) +{ + uint8_t buf[256]; + int len; + char *err_str; + struct rtsp_error *rerr; + + for (rerr = rtsp_errors; rerr->number; rerr++) + if (rerr->number == err) + break; + if (!rerr->number) { + printf("Internal Error: invalid error number %d\n", err); + return; + } + len=sprintf(buf, + "RTSP/1.0 %d %s\r\n" + "CSeq: %d\r\n" + "\r\n", err, rerr->name, con->seq); + sendlen(con->sock, buf, len); + dbgprintf(DEBUG_RTSP, "Send Error:\n%s\n", buf); +} + +static void *release_session(struct ossess *oss); + +static void *release_ca(struct dvbca *ca) +{ + dbgprintf(DEBUG_SYS, "release ca %d\n", ca->nr); + pthread_mutex_lock(&ca->os->lock); + ca->stream->ca = NULL; + ca->state = 0; + pthread_mutex_unlock(&ca->os->lock); +} + +static struct dvbca *alloc_ca_num(struct osstrm *str, int num) +{ + struct octoserve *os = str->os; + struct dvbca *ca; + + if (num >= os->dvbca_num) + return NULL; + pthread_mutex_lock(&os->lock); + ca = &os->dvbca[num]; + if (ca->state == 0) { + printf("alloced ca %d\n", num); + pthread_mutex_lock(&ca->mutex); + memset(ca->pmt, 0, sizeof(ca->pmt)); + ca->state = 1; + ca->stream = str; + ca->input = str->fe->nr - 1; + pthread_mutex_unlock(&ca->mutex); + pthread_mutex_unlock(&os->lock); + return ca; + } + pthread_mutex_unlock(&os->lock); + return NULL; +} + +static struct dvbca *alloc_ca(struct osstrm *str) +{ + struct octoserve *os = str->os; + struct dvbca *ca; + uint32_t i; + + printf("alloc ca\n"); + pthread_mutex_lock(&os->lock); + for (i = 0; i < os->dvbca_num; i++) { + ca = &os->dvbca[i]; + if (ca->state == 0) { + printf("alloced ca %d\n", i); + pthread_mutex_lock(&ca->mutex); + memset(ca->pmt, 0, sizeof(ca->pmt)); + ca->state = 1; + ca->stream = str; + ca->input = str->fe->nr - 1; + pthread_mutex_unlock(&ca->mutex); + pthread_mutex_unlock(&os->lock); + return ca; + + } + } + pthread_mutex_unlock(&os->lock); + return NULL; +} + +static void *release_fe(struct octoserve *os, struct dvbfe *fe) +{ + if (!fe) + return; + dbgprintf(DEBUG_SYS, "release fe %d\n", fe->nr); + fe->state = 2; + pthread_join(fe->pt, NULL); +} + +static struct dvbfe *alloc_fe_num(struct octoserve *os, int i, int type) +{ + struct dvbfe *fe; + + if (i > os->dvbfe_num) + return NULL; + dbgprintf(DEBUG_SYS, "alloc_fe_num %d\n", i); + pthread_mutex_lock(&os->lock); + fe = &os->dvbfe[i]; + if (fe->state || !(fe->type & (1UL << type))) { + pthread_mutex_unlock(&os->lock); + return NULL; + } + fe->n_tune = 0; + fe->state = 1; + pthread_create(&fe->pt, NULL, (void *) handle_fe, fe); + pthread_mutex_unlock(&os->lock); + dbgprintf(DEBUG_SYS, "Allocated fe %d = %d/%d, fd=%d\n", + fe->nr, fe->anum, fe->fnum, fe->fd); + return fe; +} + +static struct dvbfe *alloc_fe(struct octoserve *os, int type) +{ + int i; + struct dvbfe *fe; + + pthread_mutex_lock(&os->lock); + for (i = 0; i < os->dvbfe_num; i++) { + fe = &os->dvbfe[i]; + if (fe->state == 0 && + (fe->type & (1UL << type))) { + pthread_mutex_unlock(&os->lock); + return alloc_fe_num(os, i, type); + } + } + pthread_mutex_unlock(&os->lock); + return NULL; +} + +static void *release_stream(struct osstrm *str) +{ + struct octoserve *os = str->os; + int i; + dbgprintf(DEBUG_SYS, "release stream %d\n", str->nr); + + for (i = 0; i < MAX_SESSION; i++) { + if (os->session[i].state && + os->session[i].stream == str) + os->session[i].stream = 0; + } + str->state = 0; + release_fe(os, str->fe); + if (str->ca) + release_ca(str->ca); +} + +static struct osstrm *alloc_stream(struct octoserve *os) +{ + int i; + struct osstrm *str; + + pthread_mutex_lock(&os->lock); + for (i = 0; i < MAX_STREAM; i++) { + str = &os->stream[i]; + if (str->state == 0) { + memset(str, 0, sizeof(struct osstrm)); + str->os = os; + str->nr = i + 1; + str->state = 1; + str->sport = 8000 + 2 * i; + str->sport2 = 8000 + 2 * i + 1; + pthread_mutex_unlock(&os->lock); + dbgprintf(DEBUG_SYS, "Allocated stream %d\n", str->nr); + return str; + } + } + pthread_mutex_unlock(&os->lock); + return NULL; +} + +static struct osstrm *get_stream(struct octoserve *os, int id) +{ + int i; + struct osstrm *str, *r = NULL; + + pthread_mutex_lock(&os->lock); + for (i = 0; i < MAX_STREAM; i++) { + str = &os->stream[i]; + if (str->state && str->nr == id) { + r = str; + break; + } + } + pthread_mutex_unlock(&os->lock); + return r; +} + +static void *release_session(struct ossess *oss) +{ + struct octoserve *os = oss->os; + int i; + + dbgprintf(DEBUG_SYS, "release session nr %d id %010d\n", oss->nr, oss->id); + pthread_mutex_lock(&os->lock); + mc_del(oss); + if (oss->stream) { + if (oss->stream->session == oss) + release_stream(oss->stream); + } + for (i = 0; i < MAX_CONNECT; i++) { + if (os->con[i].state && + os->con[i].session == oss) + os->con[i].session = 0; + } + if (oss->nsfd >= 0) { + dbgprintf(DEBUG_SYS, "close NS\n"); + close(oss->nsfd); + } + oss->playing = 0; + oss->state = 0; + pthread_mutex_unlock(&os->lock); +} + +static struct ossess *get_session(struct octoserve *os, uint32_t id) +{ + int i; + struct ossess *oss; + + pthread_mutex_lock(&os->lock); + for (i = 0; i < MAX_SESSION; i++) { + oss = &os->session[i]; + if (oss->state && oss->id == id) { + pthread_mutex_unlock(&os->lock); + return oss; + } + } + pthread_mutex_unlock(&os->lock); + return NULL; +} + +static void check_mccs(struct ossess *sess) +{ + time_t tdiff, t; + + if (!sess->trans.mcast) + return; + + tdiff = time(&t) - sess->mcc_time; + switch (sess->mcc_state) { + case 1: + if (tdiff >= 1) { + sess->mcc_state = 2; + /* all replying clients get new tag */ + sess->mcc_tag++; + send_igmp_query(sess->os, sess->trans.mcip, 10); + sess->mcc_time = t; + printf("%u: mcc_state 1 done, tag = %d\n", t, sess->mcc_tag); + } + break; + case 2: + if (tdiff >= 1) { + sess->mcc_state = 3; + send_igmp_query(sess->os, sess->trans.mcip, 10); + printf("%u: mcc_state 2 done, tag = %d\n", t, sess->mcc_tag); + } + break; + case 3: + if (tdiff >= 4) { + sess->mcc_state = 0; + sess->mcc_time = t; + printf("%u: mcc_state 2 done, tag = %d\n", t, sess->mcc_tag); + } + break; + case 0: + break; + } + mc_check(sess); +} + +void session_timeout(struct ossess *sess) +{ + time(&sess->timeout); + sess->timeout += sess->timeout_len; + dbgprintf(DEBUG_RTSP, "new timeout %d\n", sess->timeout); +} + +void check_session_timeouts(struct octoserve *os) +{ + time_t t; + int i; + struct ossess *sess; + + time(&t); + pthread_mutex_lock(&os->lock); + for (i = 0; i < MAX_SESSION; i++) { + sess = &os->session[i]; + check_mccs(sess); + + if (sess->state && + sess->timeout < t) { + struct oscon *con; + int j; + + /* also count open connections referencing this session, + for VLC, mplayer, ... which do not send keep alives */ + for (j = 0; j < MAX_CONNECT; j++) { + con = &os->con[j]; + if (con->state && con->session && + con->session == sess) { + session_timeout(sess); + break; + } + } + if (j == MAX_CONNECT) + release_session(&os->session[i]); + } + } + pthread_mutex_unlock(&os->lock); +} + +static uint32_t get_id(struct octoserve *os) +{ + uint32_t id, i; + struct ossess *oss; + + while (1) { + id = random(); + for (i = 0; i < MAX_SESSION; i++) { + oss = &os->session[i]; + if (oss->state && oss->id == id) + break; + } + if (i == MAX_SESSION) + return id; + } +} + +static struct ossess *alloc_session(struct octoserve *os) +{ + int i; + struct ossess *oss; + + pthread_mutex_lock(&os->lock); + for (i = 0; i < MAX_SESSION; i++) { + oss = &os->session[i]; + if (oss->state == 0) { + memset(oss, 0, sizeof(struct ossess)); + oss->os = os; + oss->nr = i; + oss->id = get_id(os); + os->sessionid++; + oss->state = 1; + oss->nsfd = -1; + oss->timeout_len = 60; + session_timeout(oss); + LIST_INIT(&oss->mccs); + time(&oss->mcc_time); + dbgprintf(DEBUG_SYS, + "Allocated session nr=%d id=%d\n", + oss->nr, oss->id); + pthread_mutex_unlock(&os->lock); + return oss; + } + } + pthread_mutex_unlock(&os->lock); + return NULL; +} + +static void *release_con(struct oscon *con) +{ + close(con->sock); + con->state = 0; + dbgprintf(DEBUG_SYS, "released con %d\n", con->nr); +} + +static struct oscon *alloc_con(struct octoserve *os) +{ + int i; + struct oscon *con; + + for (i = 0; i < MAX_CONNECT; i++) { + con = &os->con[i]; + if (con->state == 0) { + memset(con, 0, sizeof(struct oscon)); + con->os = os; + con->nr = i; + con->state = 1; + return con; + } + } + return NULL; +} + +int die(char *msg) +{ + printf("%s\n", msg); + exit(-1); +} + +void sigchld_handler(int s) +{ + while (wait(NULL) > 0); +} + +static void send_option(struct oscon *con) +{ + uint8_t buf[256], opt[256] ={ 0 }; + int len; + + if (con->session) + snprintf(opt, sizeof(opt), "Session: %010d\r\n", con->session->id); + + len = snprintf(buf, sizeof(buf), + "RTSP/1.0 200 OK\r\n" + "CSeq: %d\r\n" + "Public: OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN\r\n" + "%s" + "\r\n", + con->seq, opt); + if (len > 0 && len < sizeof(buf)) { + sendlen(con->sock, buf, len); + dbgprintf(DEBUG_RTSP, "Send: %s\n", buf); + } +} + +char *pol2str[] = {"", "v", "h", "r", "l", NULL}; +char *msys2str [] = {"", "undef", "dvbc", "dvbcb", "dvbt", "dss", "dvbs", "dvbs2", "dvbh", + "isdbt", "isdbs", "isdbc", "atsc", "atscmh", "dtmb", "cmmb", "dab", + "dvbt2", "turbo", "dvbcc", "dvbc2", NULL}; +char *mtype2str [] = {"", "qpsk", "16qam", "32qam", + "64qam", "128qam", "256qam", + "autoqam", "8vsb", "16vsb", "8psk", + "16apsk", "32apsk", "dqpsk", "4qamnr", NULL}; +char *pilot2str [] = {"", "on", "off", "auto", NULL}; +char *roll2str [] = {"", "0.35", "0.20", "0.25", NULL}; +char *fec2str [] = {"", "none", "12", "23", "34", "56", "78", "89", "35", "45", "910", "25", NULL}; +char *bw2str [] = {"", "8", "7", "6", "auto", "5", "10", "1.712", NULL }; +char *tmode2str [] = { "", "2k", "8k", "auto", "4k", "1k", "16k", "32k", "c1", "c3780", NULL}; +char *gi2str [] = { "", "132", "116", "18", "14", "auto", "1128", "19128", "19256", "pn420", "pn595", "pn945", NULL}; +char *num2str [] = {"", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL}; + +#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) + +static int session_string(struct ossess *sess, char *msg, int mlen) +{ + struct dvbfe *fe; + char pids[512]; + struct dvb_params *p; + int pid, len, len2, plen; + int level = 0, lock = 0, quality = 0, tuner = 0; + int all; + struct osstrm *str = sess->stream; + + if (!sess->state || !str) + return -1; + if (str->fe){ + level = str->fe->level; + lock = str->fe->lock; + quality = str->fe->quality; + tuner = str->fe->nr; + } + p = &sess->p; + + for (pid = 0, all = 1; pid < 1024; pid++) { + if (p->pid[pid] != 0xff) { + all = 0; + break; + } + } + if (all) + snprintf(pids, sizeof(pids), "=all"); + else { + for (pid = 0, plen = 0; pid < 8192; pid++) { + if (p->pid[pid >> 3] & (1 << (pid & 7))) { + len2 = snprintf(pids + plen, sizeof(pids) - plen, + ",%u", pid); + if (len2 < 0) + return -1; + if (plen + len2 >= 200) + break; + plen += len2; + } + } + pids[0] = '='; + if (!plen) + snprintf(pids, sizeof(pids), "=none"); + } + + switch(p->param[PARAM_MSYS] - 1) { + case SYS_DVBS: + case SYS_DVBS2: + len = snprintf(msg, mlen, + "ver=1.0;src=%u;tuner=%u,%u,%u,%u,%u,%s,%s,%s,%s,%s,%u,%s;pids%s", + p->param[PARAM_SRC], tuner, + level, lock, quality, + p->param[PARAM_FREQ] / 1000, + pol2str[p->param[PARAM_POL]], + msys2str[p->param[PARAM_MSYS]], + mtype2str[p->param[PARAM_MTYPE]], + pilot2str[p->param[PARAM_PLTS]], + roll2str[p->param[PARAM_RO]], + p->param[PARAM_SR], + fec2str[p->param[PARAM_FEC]], + pids); + break; + case SYS_DVBT: + case SYS_DVBT2: + len = snprintf(msg, mlen, + "ver=1.1;tuner=%u,%u,%u,%u,%u.%03u,%s,%s,%s,%s,%s,%s,%u,%u,%u;pids%s", + tuner, level, lock, quality, + p->param[PARAM_FREQ] / 1000, + p->param[PARAM_FREQ] % 1000, + bw2str[p->param[PARAM_BW]], + msys2str[p->param[PARAM_MSYS]], + tmode2str[p->param[PARAM_TMODE]], + mtype2str[p->param[PARAM_MTYPE]], + gi2str[p->param[PARAM_GI]], + fec2str[p->param[PARAM_FEC]], + p->param[PARAM_PLP], + p->param[PARAM_T2ID], + p->param[PARAM_SM], + pids); + break; + case SYS_DVBC_ANNEX_A: + case (SYS_DVBC_ANNEX_C + 1): +#if 0 + len = snprintf(msg, mlen, + "ver=0.9;tuner=%u,%u,%u,%u,%u.%03u,%u,%s,%s;pids%s", + tuner, level, lock, quality, + p->param[PARAM_FREQ] / 1000, + p->param[PARAM_FREQ] % 1000, + p->param[PARAM_SR], + msys2str[p->param[PARAM_MSYS]], + mtype2str[p->param[PARAM_MTYPE]], + pids); +#else + len = snprintf(msg, mlen, + "ver=1.2;tuner=%u,%u,%u,%u,%u.%03u,%u,%s,%s,%u,%u,%u,%u;pids%s", + tuner, level, lock, quality, + p->param[PARAM_FREQ] / 1000, + p->param[PARAM_FREQ] % 1000, + p->param[PARAM_BW_HZ] / 1000000, + msys2str[p->param[PARAM_MSYS]], + mtype2str[p->param[PARAM_MTYPE]], + p->param[PARAM_SR], + p->param[PARAM_C2TFT], + p->param[PARAM_DS], + p->param[PARAM_PLP], + pids); +#endif + break; + } + + if (len >= mlen) + return -1; + return len; +} + +static int send_describe(struct oscon *con, int only) +{ + struct osstrm *str; + struct ostrans *t; + uint8_t buf[4096], buf2[1024], buf3[1024]; + int len, len2, i; + int start = 0, end = MAX_STREAM; + char *p; + + p = con->url; + while (*p && *p != ' ') + p++; + *p = 0; + +#if 1 + for (i = 0; i < MAX_STREAM; i++) { + str = &con->os->stream[i]; + if (str->state) + break; + } + if (i == MAX_STREAM) + return -404; +#endif + if (only >= 0) { + start = only - 1; + end = only; + } + len = snprintf(buf, sizeof(buf), + "v=0\r\n" + "o=- 5678901234 1 IN %s %s\r\n" + "s=SatIPServer:1 %d,%d,%d\r\n" + "t=0 0\r\n", + con->trans.family == AF_INET ? "IP4" : "IP6", + con->sadr_ip, + con->os->dvbs2num, + con->os->dvbtnum + con->os->dvbt2num, + con->os->dvbcnum + con->os->dvbc2num + ); + if (len <= 0 || len >= sizeof(buf)) + return -500; + for (i = start; i < end; i++) { + char *adr = "0.0.0.0", abuf[32]; + int alen; + + str = &con->os->stream[i]; + if (!str->state) + continue; + t = &str->session->trans; + + session_string(str->session, buf3, sizeof(buf3)); + + if (t->mcast) { + alen = snprintf(abuf, sizeof(abuf), + "%d.%d.%d.%d/%u", + t->mcip[0], + t->mcip[1], + t->mcip[2], + t->mcip[3], + t->ttl); + if (alen < 0) + return -500; + adr = abuf; + } + + len2 = snprintf(buf + len, sizeof(buf) - len, + "m=video %d %s 33\r\n" + "c=IN %s %s\r\n" + "a=control:stream=%d\r\n" + "a=fmtp:33 %s\r\n" + "a=%s\r\n", + t->mcast ? t->cport : 0, + t->rtp ? "RTP/AVP" : "UDP", + t->family == AF_INET ? "IP4" : "IP6", + adr, + str->nr, + buf3, + str->session->playing ? "sendonly" : "inactive" + ); + if (len2 <= 0 || len2 >= sizeof(buf) - len) + return -500; + len += len2; + } + len2=sprintf(buf2, "RTSP/1.0 200 OK\r\nCSeq: %d\r\n" + "Content-Type: application/sdp\r\n" + "Content-Base: rtsp://%s/\r\n" + "Content-Length: %d\r\n" + "\r\n", + con->seq, con->sadr_ip, len); + + sendlen(con->sock, buf2, len2); + sendlen(con->sock, buf, len); + dbgprintf(DEBUG_RTSP, "Send:\n%s", buf2); + dbgprintf(DEBUG_RTSP, "%s\n", buf); + return 0; +} + +static void send_describe2(struct oscon *con, char *url) +{ + uint8_t buf[1024], buf2[1024], *p; + int len, len2; + + //while (*url && *url != '?') + //url++; + p = url; + while (*p && *p != ' ') + p++; + *p = 0; + + len = snprintf(buf, sizeof(buf), + "v=0\r\n" + "o=- 9876543210 1 IN IP4 %s\r\n" + "s=MPEG TS\r\n" + "t=0 0\r\n" + "m=video 0 RTP/AVP 33\r\n" + "c=IN IP4 0.0.0.0\r\n" + "a=control:%s\r\n", + con->sadr_ip, + url + ); + if (len <= 0 || len >= sizeof(buf)) + return; + len2=sprintf(buf2, "RTSP/1.0 200 OK\r\nCSeq: %d\r\nContent-Type: application/sdp\r\n" + "Content-Length: %d\r\n\r\n", con->seq, len); + + sendlen(con->sock, buf2, len2); + sendlen(con->sock, buf, len); + dbgprintf(DEBUG_RTSP, "Send:\n%s", buf2); + dbgprintf(DEBUG_RTSP, "%s\n", buf); +} + +#define MAX_PID 32 + +static int getsparam(char *b, char *name, char *q[], struct dvb_params *p, int type) +{ + int s, l = strlen(name), m; + + if (strncasecmp(b, name, l)) + return 0; + b += l; + if (b[0] == '&' || b[0] == ' ' || !b[m]) + return l; + for (s = 1; q[s]; s++) { + m = strlen(q[s]); + if (!strncasecmp(b, q[s], m) && + (b[m] == '&' || b[m] == ' ' || !b[m])) { + p->param[type] = s; + p->set |= (1UL << type); + dbgprintf(DEBUG_SYS, "%s%d(%s), ", name, p->param[type], q[s]); + return l + m; + } + } + return -1; +} + +static int parse_url(struct oscon *con, int streamonly) +{ + struct dvb_params *p = &con->p; + char *url, *end; + struct ossess *oss; + uint32_t pid; + int s, l; + + dbgprintf(DEBUG_SYS, "parsing URL : %s\n", con->url); + memset(p, 0, sizeof(struct dvb_params)); + + for (url = con->url; *url == ' '; url++); + if (strncasecmp(url, "rtsp://", 7)) + return -1; + for (url += 7; *url != '/'; url++) + if (*url == '\0') + return 0; + url++; + if (*url == '\0' || *url == ' ') + return 0; + if (*url != '?') { + if (strncasecmp(url, "stream=", 7)) + return -1; + url += 7; + errno = 0; + p->param[PARAM_STREAMID] = strtoul(url, &end, 10); + if (errno) + return -1; + p->set |= (1UL << PARAM_STREAMID); + dbgprintf(DEBUG_SYS, "streamid = %d, ", p->param[PARAM_STREAMID]); + url = end; + } + if (*url != '\0' && *url != ' ' && *url != '?') + return -1; + if (!streamonly && *url == '?') { + do { + url++; + if (!strncasecmp(url, "src=", 4)) { + url += 4; + errno = 0; + p->param[PARAM_SRC] = strtoul(url, &end, 10); + if (url == end) + return -1; + p->set |= (1UL << PARAM_SRC); + dbgprintf(DEBUG_SYS, "src=%d, ", p->param[PARAM_SRC]); + } else if (!strncasecmp(url, "fe=", 3)) { + url += 3; + p->param[PARAM_FE] = strtoul(url, &end, 10); + if (end == url) + break; + p->set |= (1UL << PARAM_FE); + dbgprintf(DEBUG_SYS, "fe=%d, ", p->param[PARAM_FE]); + } else if (!strncasecmp(url, "c2tft=", 6)) { + url += 6; + p->param[PARAM_C2TFT] = strtoul(url, &end, 10); + if (end == url) + break; + p->set |= (1UL << PARAM_C2TFT); + dbgprintf(DEBUG_SYS, "c2tft=%d, ", p->param[PARAM_C2TFT]); + } else if (!strncasecmp(url, "ds=", 3)) { + url += 3; + p->param[PARAM_DS] = strtoul(url, &end, 10); + if (end == url) + break; + p->set |= (1UL << PARAM_DS); + dbgprintf(DEBUG_SYS, "ds=%d, ", p->param[PARAM_C2TFT]); + } else if (!strncasecmp(url, "plp=", 4)) { + url += 4; + p->param[PARAM_PLP] = strtoul(url, &end, 10); + if (end == url) + break; + p->set |= (1UL << PARAM_PLP); + dbgprintf(DEBUG_SYS, "plp=%d, ", p->param[PARAM_PLP]); + } else if (!strncasecmp(url, "specinv=", 8)) { + url += 8; + p->param[PARAM_SPECINV] = strtoul(url, &end, 10); + if (end == url) + break; + p->set |= (1UL << PARAM_SPECINV); + dbgprintf(DEBUG_SYS, "plp=%d, ", p->param[PARAM_PLP]); + } else if (!strncasecmp(url, "sm=", 3)) { + url += 3; + p->param[PARAM_SM] = strtoul(url, &end, 10); + if (end == url) + break; + p->set |= (1UL << PARAM_SM); + dbgprintf(DEBUG_SYS, "sm=%d, ", p->param[PARAM_SM]); + } else if (!strncasecmp(url, "t2id=", 5)) { + url += 5; + p->param[PARAM_T2ID] = strtoul(url, &end, 10); + if (end == url) + break; + p->set |= (1UL << PARAM_T2ID); + dbgprintf(DEBUG_SYS, "t2id=%d, ", p->param[PARAM_T2ID]); + } else if (!strncasecmp(url, "freq=", 5)) { + float f; + + url += 5; + f = strtof(url, &end); + p->param[PARAM_FREQ] = f * 1000.0; + if (url == end) + return -1; + p->set |= (1UL << PARAM_FREQ); + dbgprintf(DEBUG_SYS, "freq=%u.%03u, ", + p->param[PARAM_FREQ] / 1000, + p->param[PARAM_FREQ] % 1000); + } else if ((l = getsparam(url, "pol=", pol2str, p, PARAM_POL))) { + if (l < 0) + return l; + end = url + l; + } else if ((l = getsparam(url, "msys=", msys2str, p, PARAM_MSYS))) { + if (l < 0) + return l; + end = url + l; + } else if ((l = getsparam(url, "ro=", roll2str, p, PARAM_RO))) { + if (l < 0) + return l; + end = url + l; + } else if ((l = getsparam(url, "mtype=", mtype2str, p, PARAM_MTYPE))) { + if (l < 0) + return l; + end = url + l; + } else if ((l = getsparam(url, "gi=", gi2str, p, PARAM_GI))) { + if (l < 0) + return l; + end = url + l; + } else if ((l = getsparam(url, "tmode=", tmode2str, p, PARAM_TMODE))) { + if (l < 0) + return l; + end = url + l; + } else if ((l = getsparam(url, "plts=", pilot2str, p, PARAM_PLTS))) { + if (l < 0) + return l; + end = url + l; + } else if (!strncasecmp(url, "sr=", 3)) { + url += 3; + p->param[PARAM_SR] = strtoul(url, &end, 10); + p->set |= (1UL << PARAM_SR); + dbgprintf(DEBUG_SYS, "sr=%d, ", p->param[PARAM_SR]); +#if 0 + } else if ((l = getsparam(url, "bw=", bw2str, p, PARAM_BW))) { + if (l < 0) + return l; + end = url + l; +#else + } else if (!strncasecmp(url, "bw=", 3)) { + float f; + + url += 3; + f = strtof(url, &end); + p->param[PARAM_BW_HZ] = f * 1000000.0; + if (f == 5.0) + p->param[PARAM_BW] = BANDWIDTH_5_MHZ; + else if (f == 6.0) + p->param[PARAM_BW] = BANDWIDTH_6_MHZ; + else if (f == 7.0) + p->param[PARAM_BW] = BANDWIDTH_7_MHZ; + else if (f == 8.0) + p->param[PARAM_BW] = BANDWIDTH_8_MHZ; + else if (f == 10.0) + p->param[PARAM_BW] = BANDWIDTH_10_MHZ; + else if (f == 1.712) + p->param[PARAM_BW] = BANDWIDTH_1_712_MHZ; + else + return -1; + p->param[PARAM_BW]++; + if (url == end) + return -1; + p->set |= (1UL << PARAM_BW); + p->set |= (1UL << PARAM_BW_HZ); +#endif + } else if ((l = getsparam(url, "fec=", fec2str, p, PARAM_FEC))) { + if (l < 0) + return l; + end = url + l; + } else if (!strncasecmp(url, "pids=", 5)) { + if (p->set & ((1UL << PARAM_APID) | (1UL << PARAM_DPID))) + return -1; + url += 5; + memset(p->pid, 0, 0x400); + do { + pid = strtoul(url, &end, 10); + if (url == end) { + if (!strncasecmp(url, "all", 3)) { + memset(p->pid, 0xff, 0x400); + end = url + 3; + } else if (!strncasecmp(url, "none", 4)) { + memset(p->pid, 0x00, 0x400); + end = url + 4; + } else + return -1; + } else { + if (pid > 8191) + return -1; + p->pid[pid >> 3] |= (1 << (pid & 7)); + } + url = end; + } while (*(url++) == ','); + p->set |= (1UL << PARAM_PID); + } else if (!strncasecmp(url, "addpids=", 8)) { + if (p->set & (1UL << PARAM_PID)) + return -1; + url += 8; + do { + pid = strtoul(url, &end, 10); + if (url == end) + return -1; + url = end; + p->pid[pid >> 3] |= (1 << (pid & 7)); + dbgprintf(DEBUG_SYS, "add PID=%d, ", pid); + } while (*(url++) == ','); + p->set |= (1UL << PARAM_APID); + } else if (!strncasecmp(url, "delpids=", 8)) { + if (p->set & (1UL << PARAM_PID)) + return -1; + url += 8; + do { + pid = strtoul(url, &end, 10); + if (url == end) + return -1; + url = end; + p->dpid[pid >> 3] |= (1 << (pid & 7)); + dbgprintf(DEBUG_SYS, "del PID=%d, ", pid); + } while (*(url++) == ','); + p->set |= (1UL << PARAM_DPID); + } else if (!strncasecmp(url, "x_pmt=", 6)) { + uint32_t pmt, sid, num = 0; + + url += 6; + do { + pmt = strtoul(url, &end, 10); + if (url == end || pmt >= 8192) + return -1; + if (*end == '.') { + url = end + 1; + sid = strtoul(url, &end, 10); + if (url == end) + return -1; + pmt |= (sid << 16); + } + if (num < MAX_PMT) + p->pmt[num++] = pmt; + dbgprintf(DEBUG_SYS, "+PMT=%08x, ", pmt); + url = end; + } while (*(url++) == ','); + p->set |= (1UL << PARAM_PMT); + } else if (!strncasecmp(url, "x_ci=", 5)) { + url += 5; + p->param[PARAM_CI] = strtoul(url, &end, 10); + if (url == end) + return -1; + p->set |= (1UL << PARAM_CI); + dbgprintf(DEBUG_SYS, "ci=%d, ", p->param[PARAM_CI]); + } else { + dbgprintf(DEBUG_SYS, "unknown parameter %s\n", url); + while (*url != '&' && *url && *url != ' ') + url++; + end = url; + /* ignore unknown parameters: return -1; */ + } + url = end; + } while (*url == '&'); + } + while (*url == '/') + url++; + if (*url != ' ') + return -1; + while (*url == ' ') + url++; + if (strncasecmp(url, "RTSP/1.0", 8)) + return -1; + dbgprintf(DEBUG_SYS, "\n"); + return 0; +} + +static int set_rtcp_msg(struct ossess *sess) +{ + char rtcp[512 - 96 - 102]; + int len; + struct dvb_ns_rtcp rtcpm = { .msg = rtcp}; + + if (!sess->state) + return -1; + len = session_string(sess, rtcp, sizeof(rtcp)); + if (len <= 0) + return -1; + rtcpm.len = len; + dbgprintf(DEBUG_RTSP, "%s\n", rtcp); + if (sess->nsfd < 0) + return -1; + return ioctl(sess->nsfd, NS_SET_RTCP_MSG, &rtcpm); +} + +static int set_rtcp_msgs(struct osstrm *str) +{ + char rtcp[512 - 96 - 102]; + int len; + struct dvb_ns_rtcp rtcpm = { .msg = rtcp}; + int i; + struct ossess *sess; + + if (!str->state) + return -1; + for (i = 0; i < MAX_SESSION; i++) { + sess = &str->os->session[i]; + if (!sess->state) + continue; + len = session_string(sess, rtcp, sizeof(rtcp)); + if (len <= 0) + continue; + rtcpm.len = len; + dbgprintf(DEBUG_RTSP, "%s\n", rtcp); + + if (sess->stream && (sess->stream == str) && (sess->nsfd > 0)) + ioctl(sess->nsfd, NS_SET_RTCP_MSG, &rtcpm); + } + return 0; +} + +static int set_ns(struct ossess *sess, struct dvb_ns_params *nsp) +{ + struct osstrm *str = sess->stream; + int fd = sess->nsfd; + uint8_t *pids = sess->p.pid; + + if (fd < 0) + return 0; + dbgprintf(DEBUG_SYS, "%s\n", __FUNCTION__); + ioctl(fd, NS_SET_NET, nsp); + set_rtcp_msg(sess); + ioctl(fd, NS_SET_PIDS, &pids); + return 0; +} + +static int get_ns(struct ossess *sess) +{ + struct dvbfe *fe = sess->stream->fe; + char fname[80]; + + sprintf(fname, "/dev/dvb/adapter%d/ns%d", fe->anum, fe->fnum); + sess->nsfd = open(fname, O_RDWR); + if (sess->nsfd < 0 && errno != 2) { + dbgprintf(DEBUG_SYS, "no ns free\n"); + return -1; + } + dbgprintf(DEBUG_SYS, "got fd %d, for %s\n", sess->nsfd, fname); + return 0; +} + +static int setup_nsp(struct ostrans *trans, struct dvb_ns_params *nsp) +{ + void *adr; + + memset(nsp, 0, sizeof(struct dvb_ns_params)); + memcpy(nsp->dmac, trans->cmac, 6); + memcpy(nsp->smac, trans->smac, 6); + nsp->smac[5] |= 1; + nsp->sport = trans->sport; + nsp->sport2 = trans->sport2; + nsp->dport = trans->cport; + nsp->dport2 = trans->cport2; + if (trans->rtp) { + nsp->flags = DVB_NS_RTP | DVB_NS_RTCP; + if (!(trans->flags & TRANS_NO_RTP_TO)) + nsp->flags |= DVB_NS_RTP_TO; + } + nsp->qos = 5; + nsp->vlan = 0; + nsp->ttl = 64; + dbgprintf(DEBUG_SYS, "ports: %d-%d %d-%d\n", + nsp->sport, nsp->sport2, nsp->dport, nsp->dport2); + + memcpy(nsp->sip, trans->sip, 16); + memcpy(nsp->dip, trans->cip, 16); + + if (trans->mcast) { + uint8_t *mac = adr; + + memcpy(nsp->dmac, trans->mcmac, 6); + memcpy(nsp->dip, trans->mcip, 16); + + nsp->ttl = trans->ttl ? trans->ttl : 2; + + //dump(nsp->dmac, 6); + //dump(nsp->dip, 16); + dbgprintf(DEBUG_SYS, "MC STREAM\n"); + } + memcpy(nsp->ssrc, trans->ssrc, 4); + return 0; +} + +static int merge_pids(struct dvb_params *op, struct dvb_params *p) +{ + int i; + + if (p->set & (1UL << PARAM_PID)) + for (i = 0 ; i < 1024 ; i++) + op->pid[i] = p->pid[i]; + if (p->set & (1UL << PARAM_APID)) + for (i = 0 ; i < 1024 ; i++) + op->pid[i] |= p->pid[i]; + if (p->set & (1UL << PARAM_DPID)) + for (i = 0 ; i < 1024 ; i++) + op->pid[i] &= ~p->dpid[i]; +} + +static int merge_params(struct dvb_params *op, struct dvb_params *p) +{ + int i; + + if (p->set & 0xfff8) { + for (i = PARAM_FE ; i < PARAM_PID ; i++) + if (p->set & (1UL << i)) { + op->param[i] = p->param[i]; + dbgprintf(DEBUG_SYS, "para %d = %d\n", i, p->param[i]); + op->set |= (1UL << i); + } + } +} + +static int setup_session(struct oscon *con, int newtrans) +{ + struct dvbfe *fe; + struct dvb_ns_params nsp; + struct ossess *sess = con->session; + struct dvb_params *p = &con->p; + struct dvb_params *sp = &sess->p; + struct ostrans *trans = &con->trans; + struct osstrm *str = sess->stream; + + if (!str) + return -500; + merge_pids(sp, p); + if (str->session == sess) { /* stream owner */ + merge_params(sp, p); + + if (str->fe && (sp->set & (1UL << PARAM_FE)) && + (sp->param[PARAM_FE] != str->fe->nr)) { + release_fe(con->os, str->fe); + if (sess->nsfd >= 0) + close(sess->nsfd); + } + if (!str->fe) { + if (!(sp->set & (1UL << PARAM_MSYS))) + return 0; + if (sp->set & (1UL << PARAM_FE)) + fe = alloc_fe_num(sess->os, + sp->param[PARAM_FE] - 1, + sp->param[PARAM_MSYS] - 1); + else + fe = alloc_fe(sess->os, + sp->param[PARAM_MSYS] - 1); + if (!fe) { + dbgprintf(DEBUG_SYS, "no fe\n"); + return -404; + } + str->fe = fe; + dvb_tune(str->fe, sp); + } else if (p->set & 0xffff8) { + dvb_tune(str->fe, sp); + } + } + if (sess->nsfd < 0) { +#ifndef IGNORE_NS + if (get_ns(sess) < 0) + return -455; +#endif + newtrans = 1; + } + if (newtrans) { + if (setup_nsp(&sess->trans, &nsp) < 0) + return -1; + if (set_ns(sess, &nsp) < 0) + return -1; + } else if (p->set & ((1UL << PARAM_PID) | (1UL << PARAM_APID) | (1UL << PARAM_DPID))) { + uint8_t *pids = (sp->pid); + + if (sess->nsfd >= 0) + ioctl(sess->nsfd, NS_SET_PIDS, &pids); + } + if (p->set & ((1UL << PARAM_CI))) { + if (p->param[PARAM_CI] == 0 && str->ca) + release_ca(str->ca); + if (!str->ca) { + if (sess->playing) + return -455; + str->ca = alloc_ca_num(str, p->param[PARAM_CI] - 1); + } + if (!str->ca) + return -455; + } + if (p->set & ((1UL << PARAM_PMT))) { + if (!str->ca) { + if (sess->playing) + return -455; + str->ca = alloc_ca(str); + } + if (!str->ca) + return -455; + if (str->ca) + set_pmt(str->ca, p->pmt); + } + if (con->session->trans.mcast) { + if (con->os->has_switch) + update_switch_vec(sess); + } + return 0; +} + +static int stop_session(struct ossess *sess) +{ + if (!sess->playing) + return 0; + sess->playing &= ~1; + if (sess->playing) + return 0; + printf("stopping session %d\n", sess->nr); + if (sess->nsfd >= 0) + ioctl(sess->nsfd, NS_STOP); + return 0; +} + +static int start_session(struct ossess *sess) +{ + if (sess->playing) + return 0; + dbgprintf(DEBUG_SYS, "START\n"); + printf("start session %d\n", sess->nr); + if (sess->stream->ca) { + uint8_t canum = sess->stream->ca->nr - 1; + if (sess->nsfd >= 0) + ioctl(sess->nsfd, NS_SET_CI, &canum); + } + if (sess->nsfd >= 0) + ioctl(sess->nsfd, NS_START); + sess->playing |= 1; + return 0; +} + +static int play_session(struct oscon *con) +{ + int res; + struct ossess *sess = con->session; + struct dvb_params *p = &con->p; + struct ostrans *trans = &con->trans; + struct octoserve *os = sess->os; + + if (p) { + res = setup_session(con, 0); + if (res < 0) + return res; + } +#ifndef IGNORE_NS + if (sess->nsfd < 0) + return -455; +#endif + dbgprintf(DEBUG_SYS, "%s fd %d\n", __FUNCTION__, sess->nsfd); + pthread_mutex_lock(&os->lock); + start_session(sess); + sess->playing |= 2; + pthread_mutex_unlock(&os->lock); + return 0; +} + +static struct ossess *match_session(struct octoserve *os, uint8_t *group) +{ + struct ossess *sess; + int i; + + for (i = 0; i < MAX_SESSION; i++) { + sess = &os->session[i]; + if (!sess->state || !sess->trans.mcast) + continue; + if (!memcmp(sess->trans.mcip, group, 4)) + return sess; + } + return NULL; +} + +void mc_check(struct ossess *sess) +{ + struct osmcc *mcc, *next; + struct octoserve *os = sess->os; + + if (sess->mcc_state && (os->igmp_mode & 1)) + return; + pthread_mutex_lock(&os->lock); + for (mcc = sess->mccs.lh_first; mcc; mcc = next) { + next = mcc->mcc.le_next; + if (((sess->mcc_state == 0) && (sess->mcc_tag != mcc->tag)) || + (((os->igmp_mode & 1) == 0) && (os->igmp_tag != mcc->gtag))) { + printf("removed client at %u.%u.%u.%u\n", + mcc->ip[0], mcc->ip[1], mcc->ip[2], mcc->ip[3]); + printf("mcc_tags: %d %d\n", sess->mcc_tag, mcc->tag); + printf("gtags: %d %d\n", os->igmp_tag, mcc->gtag); + LIST_REMOVE(mcc, mcc); + free(mcc); + } + } + if (os->has_switch) + update_switch_vec(sess); + if (!sess->mccs.lh_first) + stop_session(sess); + pthread_mutex_unlock(&os->lock); +} + +void mc_del(struct ossess *sess) +{ + struct osmcc *mcc, *next; + struct octoserve *os = sess->os; + + pthread_mutex_lock(&os->lock); + for (mcc = sess->mccs.lh_first; mcc; mcc = next) { + next = mcc->mcc.le_next; + LIST_REMOVE(mcc, mcc); + free(mcc); + } + if (os->has_switch) + update_switch_vec(sess); + pthread_mutex_unlock(&os->lock); +} + +static void killall_sessions(struct octoserve *os) +{ + struct ossess *sess; + int i; + + for (i = 0; i < MAX_SESSION; i++) { + sess = &os->session[i]; + if (!sess->state) + continue; + release_session(sess); + } +} + +void mc_join(struct octoserve *os, uint8_t *ip, uint8_t *mac, uint8_t *group) +{ + struct ossess *sess; + struct osmcc *mcc, *newmcc; + + pthread_mutex_lock(&os->lock); + if ((sess = match_session(os, group)) == NULL) + goto out; + + printf("matched session %d to join %u.%u.%u.%u\n", + sess->nr, ip[0], ip[1], ip[2], ip[3]); + for (mcc = sess->mccs.lh_first; mcc; mcc = mcc->mcc.le_next) + if (!memcmp(ip, mcc->ip, 4)) { + mcc->tag = sess->mcc_tag; + mcc->gtag = os->igmp_tag; + printf("already in list, tag = %08x, gtag = %08x\n", mcc->tag, mcc->gtag); + goto out; + } + newmcc = malloc(sizeof(struct osmcc)); + if (!newmcc) { + printf("Could not allocate new multicast client entry\n"); + goto out; + } + memset(newmcc, 0, sizeof(struct osmcc)); + LIST_INSERT_HEAD(&sess->mccs, newmcc, mcc); + memcpy(newmcc->ip, ip, 4); + newmcc->tag = sess->mcc_tag; + newmcc->gtag = os->igmp_tag; + if (mac) { + int port; + + memcpy(newmcc->mac, mac, 6); + if (os->has_switch) + port = switch_get_port(newmcc->mac); + else + port = 0; + printf("New client at port %02x\n", port); + if (port >= 0) { + newmcc->port_vec = port; + sess->mcc_port_vec |= port; + } + if (os->has_switch) + update_switch_vec(sess); + } + if (!sess->playing) + start_session(sess); +out: + pthread_mutex_unlock(&os->lock); +} + +void mc_query(struct ossess *sess) +{ + /* query in group if anybody still there */ + if (!sess->mcc_state) { + time(&sess->mcc_time); + sess->mcc_state = 1; + } +} + +void mc_leave(struct octoserve *os, uint8_t *ip, uint8_t *group) +{ + struct ossess *sess; + struct osmcc *mcc, *next; + + pthread_mutex_lock(&os->lock); + if ((sess = match_session(os, group)) == NULL) + goto out; + + printf("matched session %d to leave %u.%u.%u.%u\n", + sess->nr, ip[0], ip[1], ip[2], ip[3]); + mc_query(sess); + + for (mcc = sess->mccs.lh_first; mcc; mcc = next) { + next = mcc->mcc.le_next; + if (!memcmp(ip, mcc->ip, 4)) { + LIST_REMOVE(mcc, mcc); + free(mcc); +#if 0 + if (!sess->mccs.lh_first) + stop_session(sess); + mc_query(sess); +#endif + break; + } + } + if (os->has_switch) + update_switch_vec(sess); +out: + pthread_mutex_unlock(&os->lock); +} + +static void send_play(struct oscon *con) +{ + uint8_t buf[1024]; + int len; + + dbgprintf(DEBUG_SYS, "%s\n", __FUNCTION__); + len = sprintf(buf, + "RTSP/1.0 200 OK\r\n" + "CSeq: %d\r\n" + "Session: %010d\r\n" + "RTP-Info: url=%s\r\n" + "\r\n", con->seq, con->session->id, con->url); + sendlen(con->sock, buf, len); + dbgprintf(DEBUG_RTSP, "Send: %s\n", buf); +} + +static void send_teardown(struct oscon *con) +{ + uint8_t buf[256]; + int len; + + len=sprintf(buf, + "RTSP/1.0 200 OK\r\n" + "CSeq: %d\r\n" + "Session: %010d\r\n" + "\r\n", con->seq, con->session->id); + sendlen(con->sock, buf, len); + dbgprintf(DEBUG_RTSP, "Send: %s\n", buf); +} + +static int parse_transport(struct oscon *con, char *line) +{ + char *end, *arg; + struct ostrans *t = &con->trans; + int ttlset = 0; + + dbgprintf(DEBUG_RTSP, "parse: %s\n", line); + + for (arg = line; *arg == ' '; arg++); + + do { + printf("arg:%s\n", arg); + if (!strncasecmp(arg, "RTP/AVP/UDP", 11)) { + t->rtp = 1; + end = arg + 11; + } else if (!strncasecmp(arg, "RTP/AVP", 7)) { + t->rtp = 1; + end = arg + 7; + } else if (!strncasecmp(arg, "UDP", 3)) { + t->rtp = 0; + end = arg + 3; + } else if (!strncasecmp(arg, "unicast", 7)) { + t->mcast = 0; + end = arg + 7; + } else if (!strncasecmp(arg, "multicast", 9)) { + t->mcast = 1; + end = arg + 9; + } else if (!strncasecmp(arg, "client_port=", 12)) { + arg += 12; + t->cport = strtoul(arg, &end, 10); + if (*end == '-') + t->cport2 = strtoul(end + 1, &end, 10); + else + t->cport2 = 0; + } else if (!strncasecmp(arg, "port=", 5)) { + arg += 5; + t->cport = strtoul(arg, &end, 10); + if (*end == '-') + t->cport2 = strtoul(end + 1, &end, 10); + else + t->cport2 = 0; + } else if (!strncasecmp(arg, "interleaved=", 12)) { + return -461; + arg += 12; + strtoul(arg, &end, 10); + strtoul(end + 1, &end, 10); + } else if (!strncasecmp(arg, "ttl=", 4)) { + arg += 4; + t->ttl = strtoul(arg, &end, 10); + ttlset = 1; + } else if (!strncasecmp(arg, "destination=", 12)) { + char c; + + arg += 12; + end = arg; + while (*end && *end != ';' && *end != ' ') + end++; + c = *end; + *end = 0; + inet_pton(AF_INET, arg, &t->mcip); + t->mcmac[0] = 0x01; + t->mcmac[1] = 0x00; + t->mcmac[2] = 0x5e; + t->mcmac[3] = t->mcip[1] & 0x7f; + t->mcmac[4] = t->mcip[2]; + t->mcmac[5] = t->mcip[3]; + *end = c; + t->flags |= TRANS_ALT_DEST; + } else + return -461; + arg = end; + if (*arg != ';' && *arg != ' ' && *arg != 0) + return -461; + } while (*(arg++) == ';'); + + if (t->flags & TRANS_ALT_DEST && !t->mcast) { + ip2mac(t->mcip, t->mcmac); + + } + if (!t->ttl && !ttlset) + t->ttl = 2; + dbgprintf(DEBUG_RTSP, "parsed\n"); + return 0; +} + +static int parse_x_octonet(struct oscon *con, char *line) +{ + char *end, *arg; + + dbgprintf(DEBUG_RTSP, "parse: %s\n", line); + + for (arg = line; *arg == ' '; arg++); + + do { + if (!strncasecmp(arg, "switch=", 7)) { + uint32_t port; + + arg += 7; + do { + port = strtoul(arg, &end, 10); + if (arg == end) + return -1; + arg = end; + if (port < 7) + con->x_ports |= 1 << (port - 1); + } while (*(arg++) == ','); + printf("x_ports = %02x\n", con->x_ports); + } else + return -1; + arg = end; + } while (*(arg++) == ';'); + dbgprintf(DEBUG_RTSP, "parsed\n"); + return 0; +} + +void send_setup(struct oscon *con) +{ + uint8_t buf[256]; + int len; + struct ostrans *t = &con->session->trans; + + if (t->mcast) + len = sprintf(buf, + "RTSP/1.0 200 OK\r\n" + "CSeq: %d\r\nSession: %010d;timeout=%u\r\n" + "Transport: %s;multicast;destination=%d.%d.%d.%d;" + "port=%d-%d;ttl=%d;source=%s\r\n" + "com.ses.streamID: %d\r\n\r\n", + con->seq, con->session->id, con->session->timeout_len, + t->rtp ? "RTP/AVP" : "UDP", + t->mcip[0], t->mcip[1], t->mcip[2], t->mcip[3], + t->cport, t->cport2, t->ttl, + con->sadr_ip, con->session->stream->nr + ); + else + len = sprintf(buf, + "RTSP/1.0 200 OK\r\n" + "CSeq: %d\r\nSession: %010d;timeout=%u\r\n" + "Transport: %s;unicast;client_port=%d-%d;server_port=%d-%d\r\n" + "com.ses.streamID: %d\r\n\r\n", + con->seq, con->session->id, con->session->timeout_len, + t->rtp ? "RTP/AVP" : "UDP", + t->cport, t->cport2, + con->session->stream->sport, + con->session->stream->sport2, + con->session->stream->nr + ); + sendlen(con->sock, buf, len); + dbgprintf(DEBUG_RTSP, "Send: %s\n", buf); +} + +static void cpyarg(char *d, char *s) +{ + while (*s == ' ') + s++; + strcpy(d, s); +} + +static int proc_line(struct oscon *con) +{ + char *line = con->buf; + int res; + + if (con->ln == 0) { + if (!strncasecmp(line, "OPTIONS", 7)) { + cpyarg(con->url, line + 7); + con->cmd = M_OPTIONS; + } else if (!strncasecmp(line, "DESCRIBE", 8)) { + cpyarg(con->url, line + 8); + con->cmd = M_DESCRIBE; + } else if (!strncasecmp(line, "SETUP", 5)) { + cpyarg(con->url, line + 5); + con->cmd = M_SETUP; + } else if (!strncasecmp(line, "PLAY", 4)) { + cpyarg(con->url, line + 4); + con->cmd = M_PLAY; + } else if (!strncasecmp(line, "TEARDOWN", 8)) { + cpyarg(con->url, line + 8); + con->cmd = M_TEARDOWN; + } else { + con->cmd = M_UNKNOWN; + return -1; + } + return 0; + } + + if (line[0] == '\0') { /* last line */ + if (con->error) { + send_error(con, con->error); + } else { + switch (con->cmd) { + case M_OPTIONS: + if (con->session_parsed && !con->session) + send_error(con, 404); + else + send_option(con); + break; + case M_DESCRIBE: + { + int only = -1; + + if (parse_url(con, 0) < 0) { + send_error(con, 400); + break; + } + if (con->p.set & ~(1UL << PARAM_STREAMID)) { + send_describe2(con, con->url); + break; + } + if (con->p.set & (1UL << PARAM_STREAMID)) + only = con->p.param[PARAM_STREAMID]; + res = send_describe(con, only); + if (res < 0) + send_error(con, -res); + break; + } + case M_SETUP: + { + struct osstrm *str = 0; + int newtrans = 0; + + if (!con->transport_parsed) { + /* no proper transport params given */ + send_error(con, 400); + break; + } + if (con->session_parsed && !con->session) { + /* no session with given ID found */ + send_error(con, 454); + break; + } + if (parse_url(con, 0) < 0) { + /* invalid params in URL */ + send_error(con, 400); + break; + } + if (con->p.set & (1UL << PARAM_STREAMID)) { + dbgprintf(DEBUG_SYS, "existing stream %d\n", + con->p.param[PARAM_STREAMID]); + str = get_stream(con->os, con->p.param[PARAM_STREAMID]); + if (!str) { + /* no stream with given ID */ + send_error(con, 400); + break; + } + if (con->session && con->session != str->session) { + /* if we already have a session ID we + have to be stream owner */ + send_error(con, 400); + break; + } + } + if (!con->session) { + /* alloc new session */ + con->session = alloc_session(con->os); + if (!con->session) { + send_error(con, 400); + break; + } + if (!con->session->stream) { + if (str) { + /* use existing stream and stream params*/ + con->session->stream = str; + if (con->session->stream->session) { + memcpy(&con->session->p, + &con->session->stream->session->p, + sizeof(struct dvb_params)); + } + } else { + con->session->stream = alloc_stream(con->os); + if (!con->session->stream) { + send_error(con, 400); + break; + } + con->session->stream->session = con->session; + } + } + newtrans = 1; + } + if (newtrans || + con->session->trans.mcast != con->trans.mcast || + con->session->trans.cport != con->trans.cport || + con->session->trans.cport2 != con->trans.cport2 || + con->session->trans.flags != con->trans.flags || + con->session->trans.ttl != con->trans.ttl) { + con->trans.sport = con->session->stream->sport; + con->trans.sport2 = con->session->stream->sport2; + + /* set transport struct according to session + and transport parameters */ + if (con->trans.mcast && con->trans.cport == 0) { + con->trans.cport = con->trans.sport; + con->trans.cport2 = con->trans.sport2; + } + + if (con->trans.mcast && + !(con->trans.flags & TRANS_ALT_DEST)) { + uint8_t mac[6] = { 0x01, 0x00, 0x5e, + con->os->ssdp.devid & 0x7f, 1, + con->session->stream->nr }; + uint8_t ip[4] = { 239, con->os->ssdp.devid, 1, + con->session->stream->nr }; + + memcpy(con->trans.mcmac, mac, 6); + memcpy(con->trans.mcip, ip, 4); + } + con->session->trans = con->trans; + newtrans = 1; + } + res = setup_session(con, newtrans); + if (res < 0) { + release_session(con->session); + send_error(con, -res); + } else + send_setup(con); + break; + } + case M_PLAY: + if (!con->session || !con->session->stream) { + send_error(con, 400); + break; + } + if (parse_url(con, 0) < 0) { + send_error(con, 400); + break; + } + if (con->x_octonet_parsed) { + con->session->port_vec = con->x_ports; + printf("port_vec = %02x\n", con->session->port_vec); + } + res = play_session(con); + if (res < 0) + send_error(con, -res); + else + send_play(con); + break; + case M_TEARDOWN: + if (parse_url(con, 0) < 0) { + send_error(con, 400); + break; + } + if (!con->session) { + send_error(con, 404); + break; + } + send_teardown(con); + release_session(con->session); + con->session = 0; + break; + default: + send_error(con, 501); + break; + } + } + con->cmd = M_NONE; + con->transport_parsed = 0; + con->session_parsed = 0; + con->error = 0; + con->ln = -1; + return 0; + } + + if (!strncasecmp(line, "CSeq:", 5)) { + con->seq = strtoul(line + 5, NULL, 10); + //printf("CSeq = %d\n", con->seq); + } else if (!strncasecmp(line, "Transport:", 10)) { + res = parse_transport(con, line + 10); + if (res < 0) { + con->error = -res; + } else + con->transport_parsed = 1; + } else if (!strncasecmp(line, "Session:", 8)) { + uint32_t sid = strtoul(line + 8, NULL, 10); + + con->session = get_session(con->os, sid); + if (con->session) + session_timeout(con->session); + con->session_parsed = 1; + } else if (!strncasecmp(line, "User-Agent:", 11)) { + char *p = line + 11; + + while (*p == ' ') + p++; + if (!strncasecmp(p, "libvlc", 6)) + con->trans.flags |= TRANS_NO_RTP_TO; + } else if (!strncasecmp(line, "x_octonet:", 10)) { + char *p = line + 10; + + while (*p == ' ') + p++; + parse_x_octonet(con, p); + con->x_octonet_parsed = 1; + } else + ;//con->error = 551; + return 0; +} + +static const char *intop(int af, struct sockaddr *sa, char *dst, socklen_t size, uint8_t *ip) +{ + void *adr; + + if (af == AF_INET) + adr = &((struct sockaddr_in *) sa)->sin_addr; + else if (af == AF_INET6) + adr = &((struct sockaddr_in6 *) sa)->sin6_addr; + else + return NULL; + + memcpy(ip, adr, af == AF_INET ? 4 : 16); + return inet_ntop(af, adr, dst, size); +} + +static void get_ips(struct oscon *con) +{ + con->slen = sizeof(con->sadr); + con->clen = sizeof(con->cadr); + getsockname(con->sock, (struct sockaddr *) &con->sadr, &con->slen); + intop(con->trans.family, &con->sadr, con->sadr_ip, INET6_ADDRSTRLEN, con->trans.sip); + getpeername(con->sock, (struct sockaddr *) &con->cadr, &con->clen); + intop(con->trans.family, &con->cadr, con->cadr_ip, INET6_ADDRSTRLEN, con->trans.cip); +} + +static int same_ip(struct sockaddr *sa, struct sockaddr *sa2) +{ + unsigned short af = sa->sa_family; + + if (af != sa2->sa_family) + return -1; + if (af == AF_INET) + return memcmp(&((struct sockaddr_in *) sa)->sin_addr, + &((struct sockaddr_in *) sa2)->sin_addr, 4); + else if (af == AF_INET6) + return memcmp(&((struct sockaddr_in6 *) sa)->sin6_addr, + &((struct sockaddr_in6 *) sa2)->sin6_addr, 16); + else + return -1; +} + +static void init_con(struct oscon *con) +{ + int one = 1, idle = 20, intvl = 20, cnt = 3; + + get_ips(con); + if (!same_ip(&con->sadr, &con->cadr)) + memcpy(con->trans.cmac, con->os->mac, 6); + else + get_mac(con->os->ifname, &con->cadr, con->trans.cmac); + memcpy(con->trans.smac, con->os->mac, 6); + con->bufp = 0; + con->ln = 0; + con->session = 0; + setsockopt(con->sock, SOL_SOCKET, SO_KEEPALIVE, &one, sizeof(one)); +#if 1 + setsockopt(con->sock, SOL_TCP, TCP_KEEPIDLE, &idle, sizeof(idle)); + setsockopt(con->sock, SOL_TCP, TCP_KEEPINTVL, &intvl, sizeof(intvl)); + setsockopt(con->sock, SOL_TCP, TCP_KEEPCNT, &cnt, sizeof(cnt)); +#else + setsockopt(con->sock, IPPROTO_TCP, TCP_KEEPIDLE, &idle, sizeof(idle)); + setsockopt(con->sock, IPPROTO_TCP, TCP_KEEPINTVL, &intvl, sizeof(intvl)); + setsockopt(con->sock, IPPROTO_TCP, TCP_KEEPCNT, &cnt, sizeof(cnt)); + +#endif +} + +int con_loop(struct oscon *con) +{ + uint8_t buf[1024]; + int len, i, res; + + len = recv(con->sock, buf, 1024, 0); + if (len == 0) + goto release; + if (len < 0) { + if (errno != EAGAIN) + goto release; + return 0; + } + dump(buf, len); + //printf("received %d bytes\n", len); + for (i = 0; i < len; i++) { + // FIXME send URI too long + if (con->bufp >= 8192) { + release_con(con); + return -1; + } + con->buf[con->bufp++] = buf[i]; + if (buf[i] == '\n') { + if (con->bufp < 2 || + con->buf[con->bufp - 2] != '\r') { + release_con(con); + return -1; + } + con->buf[con->bufp - 2] = 0; + if (con->buf[0]) + dbgprintf(DEBUG_SYS, "%d:%d:%d: %s\n", + con->nr, con->ln, + con->bufp, con->buf); + res = proc_line(con); + con->ln++; + con->bufp = 0; + } + } + return 0; +release: + release_con(con); + return -1; +} + +void handle_con(struct oscon *con) +{ + while (con_loop(con) >= 0); +} + +int set_nonblock(int fd) +{ + int fl = fcntl(fd, F_GETFL); + + if (fl < 0) + return fl; + return fcntl(fd, F_SETFL, fl | O_NONBLOCK); +} + +int set_block(int fd) +{ + int fl = fcntl(fd, F_GETFL); + + if (fl < 0) + return fl; + return fcntl(fd, F_SETFL, fl & ~O_NONBLOCK); +} + +void check_frontends(struct octoserve *os) +{ + int i; + struct dvbfe *fe; + uint16_t sig, snr; + fe_status_t stat; + + for (i = 0; i < os->dvbfe_num; i++) { + fe = &os->dvbfe[i]; + if (fe->state != 1) + continue; + if (ioctl(fe->fd, FE_READ_STATUS, &stat) < 0) + continue; + if (ioctl(fe->fd, FE_READ_SIGNAL_STRENGTH, &sig) < 0) + continue; + if (ioctl(fe->fd, FE_READ_SNR, &snr) < 0) + continue; + fe->stat = stat; + fe->lock = (stat == 0x1f) ? 1 : 0; + fe->level = sig >> 8; + fe->quality = snr >> 12; + dbgprintf(DEBUG_DVB, "fe%d: stat=%02x str=%04x snr=%04x\n", fe->nr, stat, sig, snr); + } +} + +static int check_streams(struct octoserve *os) +{ + int i; + struct osstrm *str; + + for (i = 0; i < MAX_STREAM; i++) { + str = &os->stream[i]; + if (!str->state) + continue; + set_rtcp_msgs(str); + } + return 0; +} + + +static int alloc_igmp_socket(struct octoserve *os) +{ + struct ip_mreq imr; + struct sockaddr_in sadr; + uint8_t one = 1; + + os->igmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_IGMP); + + set_nonblock(os->igmp_sock); + get_ifa(os->ifname, AF_INET, (struct sockaddr *) &sadr); + imr.imr_interface.s_addr = sadr.sin_addr.s_addr; + imr.imr_multiaddr.s_addr = inet_addr("224.0.0.22"); + setsockopt(os->igmp_sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, + &imr, sizeof(imr)); + setsockopt(os->igmp_sock, IPPROTO_IP, IP_MULTICAST_TTL, + &one, sizeof(one)); + setsockopt(os->igmp_sock, IPPROTO_IP, IP_ROUTER_ALERT, + &one, sizeof(one)); + time(&os->igmp_time); + /* first query after 125-94=31 seconds */ + os->igmp_mode = 0; + os->igmp_time -= 94; + os->igmp_robust = 1; + return 0; +} + +static int alloc_igmp_raw_socket(struct octoserve *os) +{ + struct ifreq ifr; + int s, n, i; + struct sockaddr cadr; + socklen_t len = sizeof(cadr); + uint8_t buf[4096]; + struct sock_filter bpf_igmp[] = { + { 0x28, 0, 0, 0x0000000c }, + { 0x15, 0, 3, 0x00000800 }, + { 0x30, 0, 0, 0x00000017 }, + { 0x15, 0, 1, 0x00000002 }, + { 0x6, 0, 0, 0x0000ffff }, + { 0x6, 0, 0, 0x00000000 }, + }; + struct sock_fprog sfprog; + + sfprog.len = ARRAY_SIZE(bpf_igmp); + sfprog.filter = bpf_igmp; + + s = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP)); + set_nonblock(s); + + memset (&ifr, 0, sizeof(struct ifreq)); + strncpy(ifr.ifr_name, os->ifname, IFNAMSIZ); + ioctl(s, SIOCGIFFLAGS, &ifr); + ifr.ifr_flags |= IFF_PROMISC; + ioctl(s, SIOCSIFFLAGS, &ifr); + + n = setsockopt(s, SOL_SOCKET, SO_ATTACH_FILTER, &sfprog, sizeof(sfprog)); + if (n < 0) { + printf("could not set filter\n"); + } + +#if 0 + printf("raw = %d\n", s); + for (i = 0; i < 5; i++) { + n = recvfrom(s, buf, sizeof(buf), 0, NULL, NULL); + printf("raw = %d, n = %d, errno = %d\n", s, n, errno); + dump(buf, n); + } + close (s); +#endif + os->igmp_rsock = s; + return 0; +} + +static void os_serve(struct octoserve *os) +{ + struct sigaction sa; + fd_set fds; + int mfd, i; + struct timeval timeout; + time_t t, u; + + signal(SIGPIPE, SIG_IGN); + signal(SIGHUP, SIG_IGN); + sa.sa_handler = sigchld_handler; + sigemptyset(&sa.sa_mask); + sa.sa_flags = SA_RESTART; + + if (sigaction(SIGCHLD, &sa, NULL) == -1) + die("Error in sigaction"); + + os->rtsp_sock = streamsock("554", AF_INET, &os->rtsp_sadr); + sockname(&os->rtsp_sadr, os->rtsp_ip); + dbgprintf(DEBUG_SYS, "rtsp_ip: %s, %d\n", os->rtsp_ip, os->rtsp_sock); + if (listen(os->rtsp_sock, 20) < 0) { + dbgprintf(DEBUG_SYS, "listen error"); + return; + } + set_nonblock(os->rtsp_sock); + + alloc_igmp_raw_socket(os); + alloc_igmp_socket(os); + +#if 0 + { + struct ipv6_mreq imr; + + memset(&imr, 0, sizeof(imr)); + imr.ipv6mr_interface = if_nametoindex(os->ifname); + inet_pton(AF_INET6, "FF02::16", &imr.ipv6mr_multiaddr); + setsockopt(os->mld_sock, IPPROTO_IPV6, IPV6_JOIN_GROUP, + &imr, sizeof(imr)); + } +#endif + time(&t); + while (!os->exit) { + int csock, ncon; + struct sockaddr cadr; + socklen_t clen = sizeof(cadr); + uint8_t buf[2048]; + int num, n; + + time(&u); + if (u > t) { + t = u; + check_session_timeouts(os); + //check_frontends(os); + check_streams(os); + check_igmp(os); + } + + timeout.tv_sec = 0; + timeout.tv_usec = 500000; + + FD_ZERO(&fds); + mfd = 0; + add_fd(os->rtsp_sock, &mfd, &fds); + //add_fd(os->igmp_sock, &mfd, &fds); + add_fd(os->igmp_rsock, &mfd, &fds); + //add_fd(os->mld_sock, &mfd, &fds); + for (i = 0, ncon = 0; i < MAX_CONNECT; i++) { + if (os->con[i].state) { + ncon++; + add_fd(os->con[i].sock, &mfd, &fds); + } + } + //printf("serve_loop: %d cons, mfd=%d\n", ncon, mfd); + num = select(mfd + 1, &fds, NULL, NULL, &timeout); + if (num < 0) + break; + if (FD_ISSET(os->igmp_sock, &fds)) { + n = recvfrom(os->igmp_sock, buf, sizeof(buf), 0, &cadr, &clen); + if (n > 0) + proc_igmp(os, buf, n, NULL); + } + if (FD_ISSET(os->igmp_rsock, &fds)) { + n = recvfrom(os->igmp_rsock, buf, sizeof(buf), 0, &cadr, &clen); + if (n > 14) + proc_igmp(os, buf + 14, n - 14, buf); + } + if (FD_ISSET(os->mld_sock, &fds)) { + n = recvfrom(os->mld_sock, buf, sizeof(buf), 0, &cadr, &clen); + printf("n = %d\n", n); + if (n > 0) + ;//dump(buf, n); + } +#ifndef MULTI_THREADED + for (i = 0; i < MAX_CONNECT; i++) + if (os->con[i].state && + FD_ISSET(os->con[i].sock, &fds)) + con_loop(&os->con[i]); +#endif + + if (FD_ISSET(os->rtsp_sock, &fds)) { + struct oscon *con; + + csock = accept(os->rtsp_sock, &cadr, &clen); + if (csock < 0) { + dbgprintf(DEBUG_SYS, "Could not accept\n"); + continue; + } + con = alloc_con(os); + if (!con) { + dbgprintf(DEBUG_SYS, "Could not alloc new connection\n"); + continue; + } + con->sock = csock; + con->trans.family = AF_INET; + init_con(con); + dbgprintf(DEBUG_SYS, "sock %d con %d on %s\n", + con->sock, con->nr, con->cadr_ip); +#ifdef MULTI_THREADED + pthread_create(&con->pt, NULL, (void *) handle_con, con); + set_block(csock); +#else + set_nonblock(csock); +#endif + } + } + killall_sessions(os); +} + +static struct octoserve *os_init(char *ifname, int nossdp, int nodms, int nodvbt, int noswitch) +{ + struct octoserve *os; + struct os_ssdp *ss; + struct ifreq ifr; + int s; + pthread_mutexattr_t mta; + + os = malloc(sizeof(*os)); + if (!os) + return NULL; + dbgprintf(DEBUG_SYS, "allocated octoserve struct, %d bytes\n", sizeof(*os)); + memset(os, 0, sizeof(struct octoserve)); + + pthread_mutexattr_init(&mta); + pthread_mutexattr_settype(&mta, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&os->lock, &mta); + + os->ifname = ifname; + os->sessionid = random(); + + if (get_ifa(ifname, AF_INET, &os->ssdp.sadr) < 0) { + perror("no such interface:"); + free(os); + return NULL; + } + get_ifa(ifname, AF_INET6, &os->ssdp.sadr6); + sockname(&os->ssdp.sadr, os->ssdp.ip); + sockname(&os->ssdp.sadr6, os->ssdp.ip6); + + strcpy(ifr.ifr_name, os->ifname); + s = socket(AF_INET, SOCK_DGRAM, 0); + ioctl(s, SIOCGIFHWADDR, &ifr); + close(s); + memcpy(os->mac, ifr.ifr_hwaddr.sa_data, 6); + dbgprintf(DEBUG_NET, "MAC %s=%02x:%02x:%02x:%02x:%02x:%02x\n", + os->ifname, + os->mac[0], os->mac[1], os->mac[2], + os->mac[3], os->mac[4], os->mac[5]); + if (os->has_switch) + switch_get_port(os->mac); + + init_dvb(os, nodvbt, noswitch); + + ss = &os->ssdp; + if (init_ssdp(os, &os->ssdp, debug, nossdp, nodms) < 0) { + release_dvb(os); + free(os); + return NULL; + } +#if 0 + if (init_http(os, debug) < 0) { + release_dvb(os); + free(os); + return NULL; + } +#endif + return os; +} + +struct octoserve *os; + +void term_action(int sig) +{ + printf("EXIT\n"); + os->exit = 1; +} + +static int set_termaction(void) +{ + struct sigaction term; + + memset(&term, 0, sizeof(term)); + term.sa_handler = term_action; + sigemptyset(&term.sa_mask); + term.sa_flags = 0; + sigaction(SIGINT, &term, NULL); + + memset(&term, 0, sizeof(term)); + term.sa_handler = term_action; + sigemptyset(&term.sa_mask); + term.sa_flags = 0; + sigaction(SIGTERM, &term, NULL); +} + +static int fexists(char *fn) +{ + struct stat b; + + return (!stat(fn, &b)); +} + +static void awrite(char *fn, char *txt) +{ + FILE *f = fopen(fn, "w"); + + if (f) + fprintf(f, "%s", txt); +} + +int main(int argc, char **argv) +{ + int nodms = 0, nossdp = 0, nodvbt = 0, vlan = 0, noswitch = 0; + + printf("Octoserve " OCTOSERVE_VERSION + ", Copyright (C) 2012-15 Digital Devices GmbH\n"); + debug = 0; + while (1) { + int option_index = 0; + int c; + static struct option long_options[] = { + {"debug", required_argument, 0, 'd'}, + {"nossdp", no_argument, 0, 'n'}, + {"nodms", no_argument, 0, 'm'}, + {"nodvbt", no_argument, 0, 't'}, + {"noswitch", no_argument, 0, 's'}, + {"help", no_argument , 0, 'h'}, + {0, 0, 0, 0} + }; + c = getopt_long(argc, argv, + "d:hnmt", + long_options, &option_index); + if (c==-1) + break; + + switch (c) { + case 'd': + debug = strtoul(optarg, NULL, 16); + break; + case 'n': + nossdp = 1; + break; + case 'm': + nodms = 1; + break; + case 't': + nodvbt = 1; + break; + case 's': + noswitch = 1; + break; + case 'h': + default: + break; + + } + } + if (optind < argc) { + printf("Warning: unused arguments\n"); + } + if (fexists("/config/nodms.enabled")) + nodms = 1; + if (fexists("/config/noswitch.enabled")) + noswitch = 1; + if (fexists("/config/nodvbt.enabled")) + nodvbt = 1; + if (fexists("/config/vlan.enabled")) { + awrite("/sys/class/ddbridge/ddbridge0/vlan", "1"); + vlan = 1; + } else + awrite("/sys/class/ddbridge/ddbridge0/vlan", "0"); + printf("nodms = %d, nodvbt = %d, vlan = %d\n", nodms, nodvbt, vlan); + + os = os_init("eth0", nossdp, nodms, nodvbt, noswitch); + if (!os) + return -1; + set_termaction(); + + os->has_switch = switch_test(); + if (os->has_switch) + printf("Switch detected\n"); + else + printf("No switch detected\n"); + + os_serve(os); + if (!nossdp) + pthread_join(os->ssdp.pt, NULL); + release_dvb(os); + free(os); +} diff --git a/octoserve/octoserve.h b/octoserve/octoserve.h new file mode 100644 index 0000000..a4e5f88 --- /dev/null +++ b/octoserve/octoserve.h @@ -0,0 +1,522 @@ +/* + (C) 2012-13 Digital Devices GmbH. + + This file is part of the octoserve SAT>IP server. + + Octoserve 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 3 of the License, or + (at your option) any later version. + + Octoserve is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with octoserve. If not, see . +*/ + +#ifndef _OCTOSERVE_H_ +#define _OCTOSERVE_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "version.h" +#include "ns.h" + +#define DEBUG_RTSP 1 +#define DEBUG_SSDP 2 +#define DEBUG_NET 4 +#define DEBUG_SYS 8 +#define DEBUG_DVB 16 +#define DEBUG_IGMP 32 +#define DEBUG_SWITCH 64 + +#define dbgprintf(_mask_, ...) \ + do { if (debug & _mask_) fprintf(stderr, __VA_ARGS__); } while (0) + + +#define SYS_DVBC2 19 + +struct ddb_reg { + __u32 reg; + __u32 val; +}; + +struct ddb_id { + __u16 vendor; + __u16 device; + __u16 subvendor; + __u16 subdevice; + __u32 hw; + __u32 regmap; +}; + +struct ddb_mdio { + __u8 adr; + __u8 reg; + __u16 val; +}; + +struct ddb_mem { + __u32 off; + __u8 *buf; + __u32 len; +}; + +#define DDB_MAGIC 'd' +#define IOCTL_DDB_FLASHIO _IOWR(DDB_MAGIC, 0x00, struct ddb_flashio) +#define IOCTL_DDB_GPIO_IN _IOWR(DDB_MAGIC, 0x01, struct ddb_gpio) +#define IOCTL_DDB_GPIO_OUT _IOWR(DDB_MAGIC, 0x02, struct ddb_gpio) +#define IOCTL_DDB_ID _IOR(DDB_MAGIC, 0x03, struct ddb_id) +#define IOCTL_DDB_READ_REG _IOWR(DDB_MAGIC, 0x04, struct ddb_reg) +#define IOCTL_DDB_WRITE_REG _IOW(DDB_MAGIC, 0x05, struct ddb_reg) +#define IOCTL_DDB_READ_MEM _IOWR(DDB_MAGIC, 0x06, struct ddb_mem) +#define IOCTL_DDB_WRITE_MEM _IOR(DDB_MAGIC, 0x07, struct ddb_mem) +#define IOCTL_DDB_READ_MDIO _IOWR(DDB_MAGIC, 0x08, struct ddb_mdio) +#define IOCTL_DDB_WRITE_MDIO _IOR(DDB_MAGIC, 0x09, struct ddb_mdio) + +struct rtsp_error { + int number; + char *name; +}; + +#define PARAM_STREAMID 0 +#define PARAM_FE 1 +#define PARAM_SRC 3 +#define PARAM_FEC 4 +#define PARAM_FREQ 5 +#define PARAM_SR 6 +#define PARAM_POL 7 +#define PARAM_RO 8 + +#define PARAM_MSYS 9 + +#define PARAM_MTYPE 10 +#define PARAM_PLTS 11 +#define PARAM_BW 12 +#define PARAM_BW_HZ 13 +#define PARAM_TMODE 14 +#define PARAM_GI 15 +#define PARAM_PLP 16 +#define PARAM_T2ID 17 +#define PARAM_SM 18 +#define PARAM_C2TFT 19 +#define PARAM_DS 20 +#define PARAM_SPECINV 21 + + +#define PARAM_CI 27 +#define PARAM_PMT 28 +#define PARAM_PID 29 +#define PARAM_APID 30 +#define PARAM_DPID 31 + +#define MAX_PMT 16 + +struct dvb_params { + uint32_t param[32]; + uint32_t set; + uint8_t pid[1024]; + uint8_t dpid[1024]; + uint32_t pmt[MAX_PMT]; +}; + +#define MAX_SOURCE 4 + +struct dvbfe { + struct octoserve *os; + struct osstrm *stream; + pthread_t pt; + + int fd; + int dmx; + uint32_t type; + int anum; + int fnum; + int state; + int nr; + int do_switch; + int has_switch; + uint32_t input[4]; + + uint32_t lof1[MAX_SOURCE]; + uint32_t lof2[MAX_SOURCE]; + uint32_t lofs[MAX_SOURCE]; + uint32_t prev_delay[MAX_SOURCE]; + + int scif_type; + int scif_slot; + uint32_t scif_freq; + + fe_status_t stat; + uint32_t level; + uint32_t lock; + uint32_t quality; + int first; + + uint32_t tune; + uint32_t param[32]; + + uint32_t n_tune; + uint32_t n_param[32]; + + pthread_mutex_t mutex; +}; + +struct dvbca { + struct octoserve *os; + struct osstrm *stream; + int fd; + uint32_t type; + int anum; + int fnum; + int state; + int nr; + int input; + + pthread_t pt; + pthread_t poll_pt; + + pthread_mutex_t mutex; + + struct en50221_transport_layer *tl; + struct en50221_session_layer *sl; + struct en50221_stdcam *stdcam; + int resource_ready; + int sentpmt; + int moveca; + int ca_pmt_version[MAX_PMT]; + int data_pmt_version; + + int setpmt; + uint32_t pmt[MAX_PMT]; + uint32_t pmt_new[MAX_PMT]; + uint32_t pmt_old[MAX_PMT]; + + int mmi_state; + uint8_t mmi_buf[16]; + int mmi_bufp; + int sock; +}; + +#define MAX_DVB_FE 16 +#define MAX_DVB_CA 4 +#define MAX_CONNECT 32 +#define MAX_SESSION 12 +#define MAX_STREAM 12 + +struct ostrans { + int cport; + int cport2; + int sport; + int sport2; + int mcast; + int family; + int ttl; + int rtp; + + uint8_t sip[16]; + uint8_t smac[6]; + uint8_t cip[16]; + uint8_t cmac[6]; + + uint8_t mcip[16]; + uint8_t mcmac[6]; + + uint8_t ssrc[4]; + uint32_t flags; +#define TRANS_NO_RTP_TO 1 +#define TRANS_ALT_DEST 2 +}; + +struct osmcc { + LIST_ENTRY(osmcc) mcc; + + uint8_t ip[4]; + int32_t port_vec; + uint8_t mac[6]; + uint32_t tag; + uint32_t gtag; +}; + +LIST_HEAD(osmcchead, osmcc); + +struct osstrm { + struct octoserve *os; + struct ossess *session; /* owner */ + struct dvbfe *fe; + struct dvbca *ca; + int nr; + int state; + + int sport; + int sport2; +}; + +struct ossess { + struct octoserve *os; + struct osstrm *stream; + uint32_t id; + int state; + int playing; + int nr; + + uint32_t timeout_len; + time_t timeout; + + int nsfd; + struct ostrans trans; + struct dvb_params p; + + struct osmcchead mccs; + uint32_t mcc_tag; + time_t mcc_time; + uint32_t mcc_state; + uint32_t mcc_port_vec; + uint32_t mcc_port_vec_set; + uint32_t port_vec; + uint32_t port_vec_set; +}; + +enum { + M_NONE = 0, + M_OPTIONS = 1, + M_DESCRIBE = 2, + M_SETUP = 3, + M_PLAY = 4, + M_TEARDOWN = 5, + M_ERROR = 16, + M_UNKNOWN = 17, +}; + +struct oscon { + struct octoserve *os; + struct ossess *session; + int state; + pthread_t pt; + int sock; + int nr; + + struct ostrans trans; + + struct sockaddr cadr; + char cadr_ip[INET6_ADDRSTRLEN]; + socklen_t clen; + + struct sockaddr sadr; + char sadr_ip[INET6_ADDRSTRLEN]; + socklen_t slen; + + int seq; + int transport_parsed; + int session_parsed; + int x_octonet_parsed; + uint32_t x_ports; + int error; + + int cmd; + uint8_t buf[8192]; + uint32_t bufp; + int ln; + + struct dvb_params p; + + uint8_t url[8192]; +}; + +#define UPNP_DEV_MAX 10 + +struct upnp_dev { + char *nt; + char *loc; + char *uuid; + char *server; +}; + +struct os_ssdp { + struct octoserve *os; + pthread_t pt; + + int sock; + struct sockaddr sadr; + char ip[INET6_ADDRSTRLEN]; + + int sock6; + struct sockaddr sadr6; + char ip6[INET6_ADDRSTRLEN]; + + uint8_t uuid[16]; + char uuid_str[42]; + char uuid_str2[42]; + + struct sockaddr cadr; + uint16_t csport; + int csock; + int v6; + + int alive; + int bootid; + int configid; + uint8_t devid; + + char *server; + time_t annt; + + int setup; + time_t setupt; + + int http_sock; + struct sockaddr http_sadr; + + int http_sock6; + struct sockaddr http_sadr6; + + struct upnp_dev dev[UPNP_DEV_MAX]; + int dev_num; +}; + +struct os_http { + struct octoserve *os; + pthread_t pt; + + int sock; + struct sockaddr sadr; + char ip[INET6_ADDRSTRLEN]; + + int sock6; + struct sockaddr sadr6; + char ip6[INET6_ADDRSTRLEN]; + + struct sockaddr cadr; + int csock; +}; + +struct octoserve { + struct os_ssdp ssdp; + struct os_http http; + + int exit; + char *ifname; + uint8_t mac[6]; + + int scif_type; + int has_feswitch; + int do_feswitch; + + int dvbfe_num; + struct dvbfe dvbfe[MAX_DVB_FE]; + int dvbca_num; + struct dvbca dvbca[MAX_DVB_CA]; + uint32_t dvbs2num; + uint32_t dvbtnum; + uint32_t dvbt2num; + uint32_t dvbcnum; + uint32_t dvbc2num; + + struct oscon con[MAX_CONNECT]; + struct ossess session[MAX_SESSION]; + struct osstrm stream[MAX_STREAM]; + pthread_mutex_t lock; + pthread_mutex_t uni_lock; + pthread_t ci_pt; + + int rtsp_sock; + struct sockaddr rtsp_sadr; + char rtsp_ip[INET6_ADDRSTRLEN]; + + int rtsp_sock6; + struct sockaddr rtsp_sadr6; + char rtsp_ip6[INET6_ADDRSTRLEN]; + + uint32_t sessionid; + + int igmp_sock; + int igmp_rsock; + time_t igmp_time; + uint32_t igmp_mode; + uint32_t igmp_tag; + uint32_t igmp_timeout; + uint32_t igmp_robust; + + int mld_sock; + int has_switch; + int strict; +}; + +int streamsock(const char *port, int family, struct sockaddr *sadr); +void sockname(struct sockaddr *sadr, char *name); +int get_ifa(const char *ifname, int iffam, struct sockaddr *sadr); +int init_ssdp(struct octoserve *os, struct os_ssdp *ss, uint32_t d, int nossdp, int nodms); +int dvb_tune(struct dvbfe *fe, struct dvb_params *p); +int init_dvb(struct octoserve *os, int nodvbt, int noswitch); +int release_dvb(struct octoserve *os); +void parse_config(struct octoserve *os, char *sec, + void (*cb)(struct octoserve *, char *, char *)); +void handle_http(struct os_ssdp *ss); +void sadr2str(const struct sockaddr *sadr, char *s, size_t len); +void dump(const uint8_t *b, int l); + +void proc_igmp(struct octoserve *os, uint8_t *b, int l, uint8_t *mh); +void mc_join(struct octoserve *os, uint8_t *ip, uint8_t *mac, uint8_t *group); +void mc_leave(struct octoserve *os, uint8_t *ip, uint8_t *group); +void mc_check(struct ossess *sess); +void mc_del(struct ossess *sess); + +void send_igmp_query(struct octoserve *os, uint8_t *group, uint8_t timeout); +void check_igmp(struct octoserve *os); + +int switch_test(void); +int swich_get_port(uint8_t mac[6]); + +int sectest(void); +void handle_fe(struct dvbfe *fe); + +int set_pmt(struct dvbca *ca, uint32_t *pmt); + +int set_nonblock(int fd); +int sendlen(int sock, char *buf, int len); +int sendstring(int sock, char *fmt, ...); + +#endif diff --git a/octoserve/ssdp b/octoserve/ssdp new file mode 100644 index 0000000..94a09d3 --- /dev/null +++ b/octoserve/ssdp @@ -0,0 +1,6 @@ +SSDP: 192.168.2.177 +00: M-SEARCH * HTTP/1.1 +01: Host:239.255.255.250:1900 +02: Man:"ssdp:discover" +03: ST:urn:ses-com:device:SatIPServer:1 +04: MX:3 diff --git a/octoserve/ssdp.c b/octoserve/ssdp.c new file mode 100644 index 0000000..c23f1c4 --- /dev/null +++ b/octoserve/ssdp.c @@ -0,0 +1,697 @@ +/* + (C) 2012-14 Digital Devices GmbH. + + This file is part of the octoserve SAT>IP server. + + Octoserve 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 3 of the License, or + (at your option) any later version. + + Octoserve is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with octoserve. If not, see . +*/ + +#include "octoserve.h" + +extern struct rtsp_error rtsp_errors; + +extern uint32_t debug; + +static void ssdp_reset_setup(struct os_ssdp *ss) +{ + ss->setup = 0; + time(&ss->setupt); + ss->setupt += 5; + time(&ss->annt); +} + +static int read_id(char *type, uint32_t *id) +{ + int fd, len; + char name[80]; + + len = snprintf(name, 80, "/config/%s.id", type); + if (len < 0 || len == 80) + return -1; + fd = open(name, O_RDONLY); + if (fd < 0) + return -1; + printf("read id from %s\n", name); + len = read(fd, name, 80); + name[len] = 0; + *id = strtol(name, NULL, 10); + printf("%s.id = %d\n", type, *id); + return 0; +} + +static int write_id(char *type, uint32_t id) +{ + int fd, len; + char name[80]; + + len = snprintf(name, 80, "/config/%s.id", type); + if (len < 0 || len == 80) + return -1; + fd = open(name, O_WRONLY|O_CREAT|O_TRUNC, 00644); + if (fd < 0) + return -1; + printf("write id = %d to %s\n", id, name); + len = snprintf(name, 80, "%d", id); + write(fd, name, len); + close(fd); + return 0; +} + +static int ssdp_msg(struct os_ssdp *ss, char *buf, int n, int notify, int nr, int v6, int send_id) +{ + int len; + uint8_t *u = ss->uuid; + char uuid[37]; + char *header = notify ? + "NOTIFY * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\n" : + "HTTP/1.1 200 OK\r\n"; + char id[32]; + + if (send_id) { + len = snprintf(id, sizeof(id), + "DEVICEID.SES.COM: %d", + ss->devid); + if (len < 0 || len >= sizeof(id)) + return -1; + } else + id[0] = 0; + + if (ss->alive) { + len = snprintf(buf, n, + "%s" + "CACHE-CONTROL: max-age=1800\r\n" + "LOCATION: http://%s%s\r\n" + "NT: %s\r\n" + "NTS: ssdp:%s\r\n" + "SERVER: %s\r\n" + "USN: %s%s%s\r\n" + "BOOTID.UPNP.ORG: %d\r\n" + "CONFIGID.UPNP.ORG: %d\r\n" + "%s\r\n" + "\r\n", + header, + v6 ? ss->ip6 : ss->ip, + ss->dev[nr].loc, + ss->dev[nr].nt[0] ? ss->dev[nr].nt : ss->dev[nr].uuid, + "alive", + ss->dev[nr].server, + ss->dev[nr].uuid, ss->dev[nr].nt[0] ? "::" : "", ss->dev[nr].nt, + ss->bootid, ss->configid, + id + ); + } else { + dbgprintf(DEBUG_SSDP, "BYEBYE\n"); + + len = snprintf(buf, n, + "%s" + "NT: %s\r\n" + "NTS: ssdp:byebye\r\n" + "USN: %s%s%s\r\n" + "BOOTID.UPNP.ORG: %d\r\n" + "CONFIGID.UPNP.ORG: %d\r\n" + "\r\n", + header, + ss->dev[nr].nt[0] ? ss->dev[nr].nt : ss->dev[nr].uuid, + ss->dev[nr].uuid, ss->dev[nr].nt[0] ? "::" : "", ss->dev[nr].nt, + ss->bootid, ss->configid + ); + + } + return len; +} + +static int sendto_port(int sock, const void *buf, size_t len, + struct sockaddr_in *cadr, uint16_t port) +{ + struct sockaddr_in adr = *cadr; + + adr.sin_port = htons(port); + return sendto(sock, buf, len, 0, (struct sockaddr *) &adr, sizeof(adr)); +} + +static int send_ssdp_msg(struct os_ssdp *ss, int nr, int notify) +{ + uint8_t buf[2048]; + int len; + + len = ssdp_msg(ss, buf, sizeof(buf), notify, nr, 0, nr < 3); + + if (len < 0 || len >= sizeof(buf)) + return -1; + if (notify) { + struct sockaddr_in insadr; + + memset(&insadr, 0, sizeof(insadr)); + insadr.sin_family = AF_INET; + insadr.sin_port = htons(1900); + insadr.sin_addr.s_addr = inet_addr("239.255.255.250"); + return sendto(ss->sock, buf, len, 0, (struct sockaddr *) &insadr, sizeof(insadr)); + } else + return sendto(ss->sock, buf, len, 0, &ss->cadr, sizeof(struct sockaddr)); +} + +static int ssdp_announce(struct octoserve *os, int alive, int notify) +{ + struct os_ssdp *ss = &os->ssdp; + uint8_t buf[2048]; + int len, nr, res; + int s = os->ssdp.sock; + uint8_t *u = ss->uuid; + time_t t; + + if (notify) { + time(&t); + if (!ss->setup) + if (t >= ss->setupt) { + ss->setup = 1; + dbgprintf(DEBUG_SSDP, "END SSDP SETUP\n"); + } + if (ss->alive == alive && t < ss->annt) + return 0; + ss->alive = alive; + ss->annt = t + 900; //FIXME: +/- random + } + for (nr = 0; nr < ss->dev_num; nr++) { + send_ssdp_msg(ss, nr, notify); + } +} + +static int ssdp_defend(struct os_ssdp *ss) +{ + char buf[2048], host[64]; + int len; + int s = ss->v6 ? ss->sock6 : ss->sock; + + sockname(&ss->cadr, host); + printf("defend against HOST:%s\n", host); + + len = snprintf(buf, sizeof(buf), + "M-SEARCH * HTTP/1.1\r\n" + "HOST: %s:1900\r\n" + "MAN: \"ssdp:discover\"\r\n" + "ST: urn:ses-com:device:SatIPServer:1\r\n" + "USER-AGENT: %s\r\n" + "DEVICEID.SES.COM: %d\r\n" + "\r\n", + ss->v6 ? ss->ip6 : ss->ip, + ss->server, + ss->devid); + if (len < 0 || len >= sizeof(buf)) + return -1; + return sendto(s, buf, len, 0, &ss->cadr, sizeof(ss->cadr)); + //return sendto_port(ss->sock, buf, len, &ss->cadr, ss->csport); +} + +static int send_reply_msearch(struct os_ssdp *ss, int mc, int send_id, int nr) +{ + char buf[2048], id[32]; + int len, res; + int v6 = ss->v6; + int s = v6 ? ss->sock6 : ss->sock; + + dbgprintf(DEBUG_SSDP, "send msearch reply nr=%d\n", nr); + if (send_id) { + len = snprintf(id, sizeof(id), + "DEVICEID.SES.COM: %d\r\n", + ss->devid); + if (len < 0 || len >= sizeof(id)) + return -1; + } else + id[0] = 0; + len = snprintf(buf, sizeof(buf), + "HTTP/1.1 200 OK\r\n" + "CACHE-CONTROL: max-age=1800\r\n" + "EXT:\r\n" + "LOCATION: http://%s%s\r\n" + "SERVER: %s\r\n" + "ST: %s\r\n" + "USN: %s%s%s\r\n" + "BOOTID.UPNP.ORG: %d\r\n" + "CONFIGID.UPNP.ORG: %d\r\n" + "%s" + "\r\n", + ss->v6 ? ss->ip6 : ss->ip, + ss->dev[nr].loc, + ss->dev[nr].server, + ss->dev[nr].nt[0] ? ss->dev[nr].nt : ss->dev[nr].uuid, + ss->dev[nr].uuid, ss->dev[nr].nt[0] ? "::" : "", ss->dev[nr].nt, + ss->bootid, ss->configid, id + ); + if (len < 0 || len >= sizeof(buf)) + return -1; + dbgprintf(DEBUG_SSDP, "sending:\n%s", buf); + if (mc) { + struct sockaddr_in insadr; + + memset(&insadr, 0, sizeof(insadr)); + insadr.sin_family = AF_INET; + insadr.sin_port = htons(1900); + insadr.sin_addr.s_addr = inet_addr("239.255.255.250"); + res = sendto(s, buf, len, 0, (struct sockaddr *) &insadr, sizeof(insadr)); + } else + res = sendto(s, buf, len, 0, &ss->cadr, sizeof(struct sockaddr)); + //res = sendto_port(ss->sock, buf, len, &ss->cadr, ss->csport); + return res; +} + +static int ssdp_msearch(struct os_ssdp *ss, int mc, char *st) +{ + int nr, len = strlen(st), type = 0; + uint8_t *u = ss->uuid; + + if (!len) + return 0; + if (!strncasecmp(st, "ssdp:all", 8)) + type = 1; + else if (!strncasecmp(st, "uuid:", 5)) + type = 2; + dbgprintf(DEBUG_SSDP, "msearch mc=%u, st=%s (type=%u)\n", mc, st, type); + + for (nr = 0; nr < ss->dev_num; nr++) { + if ((type == 1) || + ((type == 2) && !ss->dev[nr].nt[0] && + !strncasecmp(ss->dev[nr].uuid, st, len)) || + ((type == 0) && !strncasecmp(ss->dev[nr].nt, st, len))) + send_reply_msearch(ss, mc, nr < 3, nr); + } + return 0; +} + +static void handle_ssdp(struct octoserve *os, char *m, int ml) +{ + struct os_ssdp *ss = &os->ssdp; + int ln, ll, tl, as, al; + char *l, *le, *me = m + ml, *st = NULL; + int type = 0; + int htype = 0; + int devid = -1; + int mx = -1; + uint8_t uu[16]; + char host[64]; + char str[INET_ADDRSTRLEN]; + int sport = 1900, hport = 1900; + + dbgprintf(DEBUG_SSDP, + "\n********************************************************************************\n"); + inet_ntop(AF_INET, &((struct sockaddr_in *) &ss->cadr)->sin_addr, str, INET_ADDRSTRLEN); + dbgprintf(DEBUG_SSDP, "\nSSDP: %s\n", str); + + memset(uu, 0, 16); + + for (l = m, ln = -1; l < me; l += ll + 1) { + for (le = l; *le != '\r' && *le != '\n' && le < me; le++); + ll = le - l; + if (!ll) + continue; + *le = 0; + ln++; + dbgprintf(DEBUG_SSDP, "%02d: %s\n", ln, l); + if (ln == 0) { + if (!strncasecmp(l, "M-SEARCH * HTTP/1.1", ll)) { + type = 1; + continue; + } + if (!strncasecmp(l, "NOTIFY * HTTP/1.1", ll)) { + type = 2; + continue; + } + if (!strncasecmp(l, "HTTP/1.1 200 OK", ll)) { + type = 3; + continue; + } + dbgprintf(DEBUG_SSDP, "unknown header\n"); + return; + } + for (tl = 0; tl < ll && l[tl] != ':'; tl++); + if (tl == ll) + return; + for (as = tl + 1; as < ll && isspace(l[as]); as++); + al = ll - as; + + if (tl == 4 && !strncasecmp(l, "HOST", 4)) { + char *h, *p; + + if (!strncmp(l + as, "239.255.255.250:1900", al)) + htype = 1; + else + htype = 2; + h = host; + p = l + as; + while (*p && *p != ':') + *(h++) = *(p++); + *h = 0; + p++; + hport = atoi(p); + } + if (tl == 2 && !strncasecmp(l, "MX", tl)) { + mx = atoi(l + as); + continue; + } + if (tl == 2 && !strncasecmp(l, "ST", tl)) { + st = l + as; + continue; + } + if (tl == 16 && !memcmp(l, "DEVICEID.SES.COM", tl)) { + devid = atoi(l + as); + //dbgprintf(DEBUG_SSDP, "sat>ip device id %d\n", devid); + continue; + } + if (tl = 19 && !memcmp(l, "SEARCHPORT.UPNP.ORG", tl)) { + sport = atoi(l + as); + dbgprintf(DEBUG_SSDP, "searchport %d\n", sport); + continue; + } + if (tl == 3 && !memcmp(l, "USN", tl) && !memcmp(l+5, "uuid:", 5)) { + int n; + + //printf("USN: %s\n", l+5); + sscanf(l+10, "%2hhx%2hhx%2hhx%2hhx-%2hhx%2hhx-" + "%2hhx%2hhx-%2hhx%2hhx-%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx%n", + &uu[0], &uu[1], &uu[2], &uu[3], + &uu[4], &uu[5], &uu[6], &uu[7], + &uu[8], &uu[9], &uu[10], &uu[11], + &uu[12], &uu[13], &uu[14], &uu[15], &n); + /* ignore message from myself */ + if (!memcmp(uu, ss->uuid, 16)) + dbgprintf(DEBUG_SSDP, "that's me!\n"); + continue; + } + } + ss->csport = sport; + dbgprintf(DEBUG_SSDP, "host=%s, hport=%u, type=%d, htype=%d mx=%d\n", host, hport, type, htype, mx); + /* M-SEARCH */ + if (ss->setup) { + if (type == 1 && mx > 0) { + ssdp_msearch(ss, 0, st); + } + /* NOTIFY */ + if (type == 2 && devid == ss->devid && memcmp(uu, ss->uuid, 16)) { + ssdp_defend(ss); + } + } else { + if (type == 1 && htype == 2 && ss->devid == devid) { + send_reply_msearch(ss, 0, 1, 2); + ss->devid++; + write_id("device", ss->devid); + dbgprintf(DEBUG_SSDP, "new device id %d \n", ss->devid); + ssdp_reset_setup(ss); + } + } +} + + +#define SSDP_MCAST "239.255.255.250" +#define SSDP_MCAST_LL "FF02::C" +#define SSDP_MCAST_SL "FF05::C" + +static int ssdp_mc_add(int s, const char *ifname, int add, int v6) +{ + if (v6) { + struct ipv6_mreq imr; + unsigned int ifindex = if_nametoindex(ifname); + + memset(&imr, 0, sizeof(imr)); + inet_pton(AF_INET6, SSDP_MCAST_LL, &imr.ipv6mr_multiaddr); + imr.ipv6mr_interface = ifindex; + if (setsockopt(s, IPPROTO_IPV6, add ? IPV6_JOIN_GROUP : IPV6_LEAVE_GROUP, + &imr, sizeof(imr)) < 0) + return -1; + inet_pton(AF_INET6, SSDP_MCAST_SL, &imr.ipv6mr_multiaddr); + if (setsockopt(s, IPPROTO_IPV6, add ? IPV6_JOIN_GROUP : IPV6_LEAVE_GROUP, + &imr, sizeof(imr)) < 0) + return -1; + } else { + struct ip_mreq imr; + struct sockaddr_in sadr; + unsigned char ttl = 2, one = 1, zero = 0; + + get_ifa(ifname, AF_INET, (struct sockaddr *) &sadr); + imr.imr_multiaddr.s_addr = inet_addr(SSDP_MCAST); + imr.imr_interface.s_addr = sadr.sin_addr.s_addr; + + if (setsockopt(s, IPPROTO_IP, add ? IP_ADD_MEMBERSHIP : IP_DROP_MEMBERSHIP, + &imr, sizeof(imr)) < 0) + return -1; + setsockopt(s, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)); + //setsockopt(s, IPPROTO_IP, IP_MULTICAST_LOOP, &zero, sizeof(zero)); + } + printf("mc_add OK\n"); + return 0; +} + +static int ssdpsock(const char *ifnam, int family, struct sockaddr *sadr) +{ + int one=1, sock; + struct addrinfo *ais, *ai, hints = { + .ai_flags = AI_PASSIVE, + .ai_family = family, + .ai_socktype = SOCK_DGRAM, + .ai_protocol = 0, + .ai_addrlen = 0, + .ai_addr = sadr, + .ai_canonname = NULL, + .ai_next = NULL, + }; + + if (getaddrinfo(NULL, "1900", &hints, &ais) < 0) + return -1; + for (ai = ais; ai; ai = ai->ai_next) { + sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if (sock == -1) + continue; + //dump(ai->ai_addr, sizeof(*ai->ai_addr)); + if (!setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) && + !bind(sock, ai->ai_addr, ai->ai_addrlen)) + break; + close(sock); + } + freeaddrinfo(ais); + ssdp_mc_add(sock, ifnam, 1, family == AF_INET6 ? 1 : 0); + return sock; +} + +static void add_fd(int fd, int *mfd, fd_set *fds) +{ + FD_SET(fd, fds); + if (fd > *mfd) + *mfd = fd; +} + +static void ssdp_loop(struct octoserve *os) +{ + struct os_ssdp *ss = &os->ssdp; + int num; + int mfd; + fd_set fds; + struct timeval timeout; + char buf[1501]; + + ss->http_sock = streamsock("8888", AF_INET, &ss->http_sadr); + if (listen(ss->http_sock, 10) < 0) { + printf("listen error"); + return; + } + ssdp_reset_setup(ss); + + while (!os->exit) { + ssdp_announce(os, 1, 1); + + timeout.tv_sec = 1; + timeout.tv_usec = 0; + + FD_ZERO(&fds); + mfd = 0; + add_fd(ss->sock, &mfd, &fds); + //add_fd(ss->sock6, &mfd, &fds); + add_fd(ss->http_sock, &mfd, &fds); + + num = select(mfd + 1, &fds, NULL, NULL, &timeout); + if (num < 0) + break; + if (FD_ISSET(ss->sock, &fds)) { + socklen_t len; + int n; + + len = sizeof(ss->cadr); + n = recvfrom(ss->sock, buf, sizeof(buf) - 1, 0, &ss->cadr, &len); + ss->v6 = 0; + if (n > 0) + handle_ssdp(os, buf, n); + } + if (FD_ISSET(ss->http_sock, &fds)) { + socklen_t len; + pthread_t pt; + + //ss->csock = accept4(ss->http_sock, &ss->cadr, &len, SOCK_NONBLOCK); + ss->csock = accept(ss->http_sock, &ss->cadr, &len); + handle_http(ss); + } + } + ssdp_announce(os, 0, 1); +} + +static void ssdp_search(int s) +{ + struct sockaddr_in insadr; + char ms[] = "M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\n" + "MAN: \"ssdp:discover\"\r\nMX: 5\r\nST: ssdp:all\r\n\r\n"; + + memset(&insadr, 0, sizeof(insadr)); + insadr.sin_family = AF_INET; + insadr.sin_port = htons(1900); + insadr.sin_addr.s_addr = inet_addr("239.255.255.250"); + sendto(s, &ms[0], sizeof(ms) - 1, 0, + (struct sockaddr *) &insadr, sizeof(insadr)); +} + +void ssdp_thread(struct octoserve *os) +{ + //ssdp_search(s); + ssdp_loop(os); +} + +static uint64_t get_us(void) +{ + struct timeval tv; + gettimeofday(&tv, 0); + return ((uint64_t) tv.tv_sec * 1000000ULL + (uint64_t) tv.tv_usec); +} + +static void create_uuid(uint8_t *u, uint8_t *mac) +{ + uint8_t uu[10] = { 0xdd, 0x84, 0x8d, 0x00, 0x26, + 0xec, 0x11, 0xeb, 0x80, 0x00 }; + + memcpy(u, uu, 10); + memcpy(u + 10, mac, 6); +} + +static void create_uuid_old(uint8_t *u, uint8_t *mac) +{ + uint64_t us, ns; + int i; + + memcpy(u + 10, mac, 6); + + us = get_us(); + ns = us * 1000ULL + 122192928000000000ULL; + + u[0] = ns >> 24; + u[1] = ns >> 16; + u[2] = ns >> 8; + u[3] = ns; + u[4] = ns >> 40; + u[5] = ns >> 32; + u[6] = ns >> 56; + u[7] = ns >> 48; + + u[8] = 0; + u[9] = 0; + + u[6] = (u[6] & 0x0f) | 0x10; + u[8] = (u[8] & 0x3f) | 0x80; +} + +static int add_dev(struct os_ssdp *ss, char *nt, char *loc, char *uuid, char *server) +{ + int n = ss->dev_num; + + if (n == UPNP_DEV_MAX) + return -1; + ss->dev[n].nt = nt; + ss->dev[n].loc = loc; + ss->dev[n].uuid = uuid; + ss->dev[n].server = server; + ss->dev_num++; +} + + +int init_ssdp(struct octoserve *os, struct os_ssdp *ss, uint32_t d, int nossdp, int nodms) +{ + time_t t; + uint8_t *u, mac[6]; + struct ifreq ifr; + uint32_t id; + int stat; + char *dms = "Linux/3.17.7 DLNADOC/1.50 UPnP/1.0 OctopusNet-DMS/1.0"; + + debug = d; + ss->os = os; + ss->server = "Linux/3.17.7 UPnP/1.1 OctopusNet/" OCTOSERVE_VERSION; + stat = read_id("device", &id); + if (stat < 0) { + ss->devid = 5; + write_id("device", ss->devid); + } else + ss->devid = id; + stat = read_id("boot", &id); + if (stat < 0) + ss->bootid = 0; + else + ss->bootid = id + 1; + write_id("boot", ss->bootid); + + ss->configid = 1; + + get_ifa(os->ifname, AF_INET, &os->ssdp.sadr); + get_ifa(os->ifname, AF_INET6, &os->ssdp.sadr6); + sockname(&os->ssdp.sadr, os->ssdp.ip); + sockname(&os->ssdp.sadr6, os->ssdp.ip6); + + if (!nossdp) { + ss->sock = ssdpsock(os->ifname, AF_INET, &os->ssdp.sadr); + if (ss->sock < 0) + return -1; + + ss->sock6 = ssdpsock(os->ifname, AF_INET6, &os->ssdp.sadr); + if (ss->sock6 < 0) + return -1; + + strcpy(ifr.ifr_name, os->ifname); + ioctl(ss->sock, SIOCGIFHWADDR, &ifr); + memcpy(mac, ifr.ifr_hwaddr.sa_data, 6); + + create_uuid(ss->uuid, mac); + u = ss->uuid; + + snprintf(ss->uuid_str, 42, + "uuid:%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", + u[0], u[1], u[2], u[3], u[4], u[5], u[6], u[7], + u[8], u[9], u[10], u[11], u[12], u[13], u[14], u[15]); + + snprintf(ss->uuid_str2, 42, + "uuid:f0287290-e1e1-11e2-9a21-%02x%02x%02x%02x%02x%02x", + u[10], u[11], u[12], u[13], u[14], u[15]); + + add_dev(ss, "upnp:rootdevice", "/octoserve/octonet.xml", ss->uuid_str, ss->server); + add_dev(ss, "", "/octoserve/octonet.xml", ss->uuid_str, ss->server); + add_dev(ss, "urn:ses-com:device:SatIPServer:1", "/octoserve/octonet.xml", + ss->uuid_str, ss->server); + + if (!nodms) { + add_dev(ss, "upnp:rootdevice", ":8080/dms.xml", ss->uuid_str2, dms); + add_dev(ss, "", ":8080/dms.xml", ss->uuid_str2, dms); + add_dev(ss, "urn:schemas-upnp-org:device:MediaServer:1", ":8080/dms.xml", + ss->uuid_str2, dms); + add_dev(ss, "urn:schemas-upnp-org:service:ConnectionManager:1", + ":8080/dms.xml", ss->uuid_str2, dms); + add_dev(ss, "urn:schemas-upnp-org:service:ContentDirectory:1", + ":8080/dms.xml", ss->uuid_str2, dms); + add_dev(ss, "urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1", + ":8080/dms.xml", ss->uuid_str2, dms); + } + pthread_create(&os->ssdp.pt, NULL, (void *) ssdp_thread, os); + } + return 0; +} diff --git a/octoserve/switch.c b/octoserve/switch.c new file mode 100644 index 0000000..5a0227d --- /dev/null +++ b/octoserve/switch.c @@ -0,0 +1,196 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "octoserve.h" + +extern uint32_t debug; + +int readreg(int fd, uint32_t reg, uint32_t *val) +{ + struct ddb_reg ddbreg = { .reg = reg }; + int ret; + + ret = ioctl(fd, IOCTL_DDB_READ_REG, &ddbreg); + if (ret < 0) + return ret; + if (val) + *val = ddbreg.val; + return 0; +} + +int writereg(int fd, uint32_t reg, uint32_t val) +{ + struct ddb_reg ddbreg = { .reg = reg, .val = val}; + + return ioctl(fd, IOCTL_DDB_WRITE_REG, &ddbreg); +} + +uint16_t mdio_readreg(int fd, uint8_t adr, uint8_t reg, uint16_t *val) +{ +#if 0 + uint32_t tmp; + + writereg(fd, 0x24, adr); + writereg(fd, 0x28, reg); + writereg(fd, 0x20, 0x07); + do { + readreg(fd, 0x20, &tmp); + } while (tmp & 0x02); + readreg(fd, 0x2c, &tmp); + *val = tmp; +#else + struct ddb_mdio mdio = { .adr = adr, .reg = reg}; + ioctl(fd, IOCTL_DDB_READ_MDIO, &mdio); + *val = mdio.val; +#endif + return *val; +} + +int mdio_writereg(int fd, uint8_t adr, uint8_t reg, uint16_t val) +{ +#if 0 + uint32_t tmp = val; + + writereg(fd, 0x24, adr); + writereg(fd, 0x28, reg); + writereg(fd, 0x2c, tmp); + writereg(fd, 0x20, 0x03); + do { + readreg(fd, 0x20, &tmp); + } while (tmp & 0x02); + return 0; +#else + struct ddb_mdio mdio = { .adr = adr, .reg = reg, .val = val}; + return ioctl(fd, IOCTL_DDB_WRITE_MDIO, &mdio); +#endif +} + +int mdio_wait_switch(int fd, uint8_t adr, uint8_t reg) +{ + uint16_t val; + + do { + mdio_readreg(fd, adr, reg, &val); + } while (val & 0x8000); +} + +int mdio_open() +{ + return open("/dev/ddbridge/card0", O_RDWR); +} + +int mdio_close(int fd) +{ + close(fd); +} + +int switch_get_port(uint8_t mac[6]) +{ + int fd = mdio_open(); + uint16_t vector, state; + uint16_t r0c, aw1, aw2, aw3; + uint16_t w1, w2, w3; + uint64_t m = ((uint64_t) mac[0] << 40) | ((uint64_t) mac[1] << 32) | ((uint64_t) mac[2] << 24) | + ((uint64_t) mac[3] << 16) | ((uint64_t) mac[4] << 8) | (uint64_t) mac[5]; + w1 = (mac[0] << 8) | mac[1]; + w2 = (mac[2] << 8) | mac[3]; + w3 = (mac[4] << 8) | mac[5]; + + m--; + mdio_writereg(fd, 0x1b, 0x0d, (m >> 32) & 0xffff); + mdio_writereg(fd, 0x1b, 0x0e, (m >> 16) & 0xffff); + mdio_writereg(fd, 0x1b, 0x0f, (m >> 0) & 0xffff); + mdio_writereg(fd, 0x1b, 0x0b, 0xc000); + mdio_wait_switch(fd, 0x1b, 0x0b); + mdio_readreg(fd, 0x1b, 0x0c, &r0c); + + if (!(r0c & 0x0f)) { + mdio_close(fd); + return -1; + } + vector = (r0c >> 4) & 0x7f; + state = r0c & 0x0f; + + mdio_readreg(fd, 0x1b, 0x0d, &aw1); + mdio_readreg(fd, 0x1b, 0x0e, &aw2); + mdio_readreg(fd, 0x1b, 0x0f, &aw3); + mdio_close(fd); + + if (w1 == aw1 && w2 == aw2 && w3 == aw3) { + dbgprintf(DEBUG_SWITCH, "%02x: %02x:%02x:%02x:%02x:%02x:%02x %d\n", + vector, + aw1 >> 8, aw1 & 0xff, + aw2 >> 8, aw2 & 0xff, + aw3 >> 8, aw3 & 0xff, + state); + return vector; + } + return -1; +} + +int switch_set_multicast(uint8_t mac[6], uint8_t vec) +{ + int fd = mdio_open(); + + dbgprintf(DEBUG_SWITCH, "switch_set_multicast %02x:%02x:%02x:%02x:%02x:%02x = %02x\n", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], vec); + if (fd < 0) + return -1; + if (vec) + mdio_writereg(fd, 0x1b, 0x0c, (vec << 4) | 7); + else + mdio_writereg(fd, 0x1b, 0x0c, 0); + mdio_writereg(fd, 0x1b, 0x0d, ((uint16_t) mac[0] << 8) | mac[1]); + mdio_writereg(fd, 0x1b, 0x0e, ((uint16_t) mac[2] << 8) | mac[3]); + mdio_writereg(fd, 0x1b, 0x0f, ((uint16_t) mac[4] << 8) | mac[5]); + mdio_writereg(fd, 0x1b, 0x0b, 0xb000); + mdio_wait_switch(fd, 0x1b, 0x0b); + mdio_close(fd); + return 0; +} + +int switch_test(void) +{ + int fd = mdio_open(); + int res; + + res = mdio_writereg(fd, 0x1b, 0x0d, 0xffff); + if (res < 0) + return 0; + mdio_writereg(fd, 0x1b, 0x0e, 0xffff); + mdio_writereg(fd, 0x1b, 0x0f, 0xffff); + + while (1) { + uint16_t r0c, aw1, aw2, aw3; + uint16_t vector, state; + + mdio_writereg(fd, 0x1b, 0x0b, 0xc000); + mdio_wait_switch(fd, 0x1b, 0x0b); + mdio_readreg(fd, 0x1b, 0x0c, &r0c); + if (!(r0c & 0x0f)) + break; + vector = (r0c >> 4) & 0x7f; + state = r0c & 0x0f; + + mdio_readreg(fd, 0x1b, 0x0d, &aw1); + mdio_readreg(fd, 0x1b, 0x0e, &aw2); + mdio_readreg(fd, 0x1b, 0x0f, &aw3); + + dbgprintf(DEBUG_SWITCH, "%02x: %02x:%02x:%02x:%02x:%02x:%02x %d\n", + vector, + aw1 >> 8, aw1 & 0xff, + aw2 >> 8, aw2 & 0xff, + aw3 >> 8, aw3 & 0xff, + state); + } + mdio_close(fd); + return 1; +} diff --git a/octoserve/var/channels/DataBase.lua b/octoserve/var/channels/DataBase.lua new file mode 100644 index 0000000..5e595f9 --- /dev/null +++ b/octoserve/var/channels/DataBase.lua @@ -0,0 +1,130 @@ + +local DataBase = {} + +local SourceList = {} +local ChannelList = {} + +local function AddSource(refid,title,system,src) + table.insert(SourceList, { refid = refid, title = title, src = src, system = system } ) +end + +local function AddChannel(sourceid,title,request,tracks) + table.insert(ChannelList, { refid = sourceid, title = title, request = request, tracks = tracks } ) +end + +local function ReadFile(sourceid,file,system) + while true do + line = file:read() + if not line then break end + local cat,title,sys,freq,sr,pol,mtype,bw,ds,plp,t2lite,radio,enc,pids,tracks + local request = "" + + if system == "dvbs" or system == "dvbs2" then + cat,title,sys,freq,sr,pol,radio,enc,pids,tracks = string.match(line,'%"(.*)%",%"(.*)%",%"(.*)%",(%d+),(%d+),%"(.*)%",(%d+),(%d+),%"P(.*)%",%"A(.*)%"') + if not tracks then break end + if sys == "dvbs" or "dvbs2" then + pids = string.gsub(pids,":",",") + tracks = string.gsub(tracks,":",",") + request = "freq="..freq.."&pol="..pol.."&msys="..sys.."&sr="..sr.."&pids=0,"..pids + end + elseif system == "dvbc" then + cat,title,sys,freq,sr,mtype,radio,enc,pids,tracks = string.match(line,'%"(.*)%",%"(.*)%",%"(.*)%",(%d+),(%d+),%"(.*)%",(%d+),(%d+),%"P(.*)%",%"A(.*)%"') + if not tracks then break end + pids = string.gsub(pids,":",",") + tracks = string.gsub(tracks,":",",") + local f = string.sub(freq,1,3).."."..string.sub(freq,4,6) + if sys == "dvbc" then + request = "freq="..f.."&msys=dvbc&sr="..sr.."&mtype="..mtype.."&pids=0,"..pids + end + elseif system == "dvbc2" then + cat,title,sys,freq,bw,ds,plp,mtype,radio,enc,pids,tracks = string.match(line,'%"(.*)%",%"(.*)%",%"(.*)%",(%d+),(%d+),(%d+),(%d+),%"(.*)%",(%d+),(%d+),%"P(.*)%",%"A(.*)%"') + if not tracks then break end + pids = string.gsub(pids,":",",") + tracks = string.gsub(tracks,":",",") + local f = string.sub(freq,1,3).."."..string.sub(freq,4,6) + if sys == "dvbc" then + request = "freq="..f.."&msys=dvbc&sr="..bw.."&mtype="..ds.."&pids=0,"..pids + elseif sys == "dvbc2" then + request = "freq="..f.."&msys=dvbc2&bw="..bw.."&x_ds="..ds.."&plp="..plp.."&pids=0,"..pids + end + elseif system == "dvbt" or system == "dvbt2" then + cat,title,sys,freq,bw,plp,t2lite,radio,enc,pids,tracks = string.match(line,'%"(.*)%",%"(.*)%",%"(.*)%",(%d+),(%d+),(%d+),(%d+),(%d+),(%d+),%"P(.*)%",%"A(.*)%"') + if not tracks then break end + pids = string.gsub(pids,":",",") + tracks = string.gsub(tracks,":",",") + local f = string.sub(freq,1,3).."."..string.sub(freq,4,6) + if sys == "dvbt" then + request = "freq="..f.."&msys=dvbt&bw="..bw.."&pids=0,"..pids + elseif sys == "dvbt2" then + if bw == "1" then bw = "1.712" end + request = "freq="..f.."&msys=dvbt2&bw="..bw.."&plp="..plp.."&pids=0,"..pids + end + end + + if request ~= "" then + if enc ~= "0" then request = request.."&x_pmt="..enc end + AddChannel(sourceid,title,request, tracks) + end + end + + file:close() +end + +local function OpenCSV(name,line1) + local file = io.open("/config/channels/"..name..".csv","r") + if file then + local line = file:read() + line = string.gsub(line,'"','') + if string.match(line,line1) then + return file + end + file:close() + end + file = io.open("/var/channels/"..name..".csv","r") + if file then + local line = file:read() + end + return file +end + +local srcfile = OpenCSV("sourcelist","KEY,CSVFILE,NAME,SYSTEM,SRC") +if srcfile then + while true do + line = srcfile:read() + if not line then break end + local key,csvfile,name,system,src = string.match(line,'%"(.*)%",%"(.*)%",%"(.*)%",%"(.*)%",(%d+)') + if not key or not csvfile or not name or not system or not src then + break + end + if system == "dvbs" or system == "dvbs2" then + AddSource(key,name,system,src) + elseif system == "dvbc" or system == "dvbc2" or system == "dvbt" or system == "dvbt2" then + AddSource(key,name,system,nil) + else + csvfile = nil + end + if csvfile then + local header = "?" + if system == "dvbs" or system == "dvbs2" then + header = "CATEGORY,TITLE,SYSTEM,FREQ,SR,POL,RADIO,ENC,PIDS,TRACKS" + elseif system == "dvbc" then + header = "CATEGORY,TITLE,SYSTEM,FREQ,SR,MOD,RADIO,ENC,PIDS,TRACKS" + elseif system == "dvbc2" then + header = "CATEGORY,TITLE,SYSTEM,FREQ,BW/SR,DS,PLP,MOD,RADIO,ENC,PIDS,TRACKS" + elseif system == "dvbt" or system == "dvbt2" then + header = "CATEGORY,TITLE,SYSTEM,FREQ,BW,PLP,LITE,RADIO,ENC,PIDS,TRACKS" + end + + local file = OpenCSV(csvfile,header) + if file then + ReadFile(key,file,system) + end + end + end + srcfile:close() +end + +DataBase.SourceList = SourceList +DataBase.ChannelList = ChannelList + +return DataBase \ No newline at end of file diff --git a/octoserve/var/channels/a19e.csv b/octoserve/var/channels/a19e.csv new file mode 100644 index 0000000..ad745db --- /dev/null +++ b/octoserve/var/channels/a19e.csv @@ -0,0 +1,523 @@ +CATEGORY,TITLE,SYSTEM,FREQ,SR,POL/MOD,RADIO,ENC,PIDS,TRACKS +"Unknown","Service 30818","dvbs2",10729,22000,"v",0,0,"P1042:169:134:135","A134:135" +"Unknown","Service 30819","dvbs2",10729,22000,"v",0,0,"P1043:171:146:147","A146:147" +"ARD","tagesschau24","dvbs",10743,22000,"h",0,0,"P100:101:104:102","A102" +"ARD","Einsfestival","dvbs",10743,22000,"h",0,0,"P200:201:204:202:203:206","A202:203:206" +"ARD","EinsPlus","dvbs",10743,22000,"h",0,0,"P300:301:304:302:303:306","A302:303:306" +"ARD","arte","dvbs",10743,22000,"h",0,0,"P400:401:404:402:403:407:408","A402:403:407:408" +"ARD","PHOENIX","dvbs",10743,22000,"h",0,0,"P500:501:504:502:503","A502:503" +"ARD","Test-R","dvbs",10743,22000,"h",0,0,"P600:401:402","A402" +"PRISA TV","LTC","dvbs",10758,22000,"v",0,0,"P1027:163:92","A92" +"Unknown","Service 29862","dvbs",10758,22000,"v",0,0,"P1036:4166","A" +"BetaDigital","ANIXE HD","dvbs2",10773,22000,"h",0,0,"P96:255:259","A259" +"BetaDigital","QVC HD","dvbs2",10773,22000,"h",0,0,"P99:1023:35:1027","A1027" +"BetaDigital","HSE24 HD","dvbs2",10773,22000,"h",0,0,"P100:1279:36:1283","A1283" +"BetaDigital","SES 75","dvbs2",10773,22000,"h",0,0,"P106:2815","A" +"BetaDigital","SOPHIA TV","dvbs2",10773,22000,"h",0,0,"P107:3071:3072","A3072" +"PRISA TV","TAQUILLA X","dvbs",10788,22000,"v",0,0,"P1035:173:132:144","A132:144" +"TXY","TAQUILLA XY","dvbs",10788,22000,"v",0,0,"P1031:160:80:81","A80:81" +"PRISA TV","TAQUILLA X","dvbs",10788,22000,"v",0,0,"P1036:174:136:145","A136:145" +"BetaDigital","HSE24 EXTRA HD","dvbs2",10802,22000,"h",0,0,"P97:511:33:515","A515" +"BetaDigital","1-2-3.tv HD","dvbs2",10802,22000,"h",0,0,"P98:767:34:771","A771" +"BetaDigital","QVC PLUS HD","dvbs2",10802,22000,"h",0,0,"P100:1279:36:1283","A1283" +"Unknown","Service 29953","dvbs2",10817,22000,"v",0,0,"P1027:163:98","A98" +"Unknown","Service 29962","dvbs2",10817,22000,"v",0,0,"P1031:163:98","A98" +"DIGITAL+","C+ RADIOS","dvbs",10847,22000,"v",0,0,"P1076:163:400:262:257:260:256:258:259:261:268:269:263:267:265:266:264","A400:262:257:260:256:258:259:261:268:269:263:267:265:266:264" +"DIGITAL+","C+ PORTADA","dvbs",10847,22000,"v",0,0,"P1083:171:124","A124" +"Unknown","Service 30118","dvbs",10847,22000,"v",0,0,"P1093:163:400:254","A400:254" +"DIGITAL+","CANAL+ GUÍA","dvbs",10847,22000,"v",0,0,"P1096:163:400:254","A400:254" +"Digital +","Service 30122","dvbs",10847,22000,"v",0,0,"P1097:163:400:254","A400:254" +"DIGITAL+","Service 30123","dvbs",10847,22000,"v",0,0,"P1098:163:400:254","A400:254" +"Digital +","Service 30126","dvbs",10847,22000,"v",0,0,"P1029:163:400:254","A400:254" +"DIGITAL+","Service 30127","dvbs",10847,22000,"v",0,0,"P1026:163:400:254","A400:254" +"DIGITAL+","C+ TAQUILLA","dvbs",10847,22000,"v",0,0,"P1099:163:400:254","A400:254" +"DIGITAL+","BAR+","dvbs",10847,22000,"v",0,0,"P1031:163:400:254","A400:254" +"DIGITAL+","C+ TAQUILLA","dvbs",10847,22000,"v",0,0,"P1038:163:400:254","A400:254" +"DIGITAL+","C+ PORTADA","dvbs",10847,22000,"v",0,0,"P1024:171:124","A124" +"DIGITAL+","Service 30151","dvbs",10847,22000,"v",0,0,"P1025:163:400:254","A400:254" +"DIGITAL+","Service 30154","dvbs",10847,22000,"v",0,0,"P1028:163:400:254","A400:254" +"DIGITAL+","Service 30156","dvbs",10847,22000,"v",0,0,"P1030:163:400:254","A400:254" +"DIGITAL +","Service 30158","dvbs",10847,22000,"v",0,0,"P1032:163:400:254","A400:254" +"Digital +","Service 30159","dvbs",10847,22000,"v",0,0,"P1033:163:400:254","A400:254" +"DIGITAL+","CONTRATO","dvbs",10847,22000,"v",0,0,"P1043:163:400:254","A400:254" +"DIGITAL+","TEST TÉCNICO","dvbs",10847,22000,"v",0,0,"P1047","A" +"DIGITAL+","TEST_CSD1","dvbs",10847,22000,"v",0,0,"P1048:163","A" +"DIGITAL+","TEST_CSD2","dvbs",10847,22000,"v",0,0,"P1049:163:400","A400" +"DIGITAL+","TEST_CSD3","dvbs",10847,22000,"v",0,0,"P1050:163","A" +"DIGITAL+","TEST_CSD4","dvbs",10847,22000,"v",0,0,"P1051:163:400:254","A400:254" +"DIGITAL+","TEST_CSD5","dvbs",10847,22000,"v",0,0,"P1052:161:84","A84" +"DIGITAL+","Service 30179","dvbs",10847,22000,"v",0,0,"P1053:163:400:254","A400:254" +"Digital+","Service 30189","dvbs",10847,22000,"v",0,0,"P1063:163:400:254","A400:254" +"Digital +","Service 30190","dvbs",10847,22000,"v",0,0,"P1064:163:400:254","A400:254" +"DIGITAL+","Service 30191","dvbs",10847,22000,"v",0,0,"P1065:163:400:254","A400:254" +"Digital+","Service 30193","dvbs",10847,22000,"v",0,0,"P1067:163:400:254","A400:254" +"Digital+","Service 30194","dvbs",10847,22000,"v",0,0,"P1068:163:400:254","A400:254" +"Contactanos","Service 30195","dvbs",10847,22000,"v",0,0,"P1069:163:400:254","A400:254" +"Unknown","Service 30196","dvbs",10847,22000,"v",0,0,"P1070:163:400:254","A400:254" +"DIGITAL +","Service 30197","dvbs",10847,22000,"v",0,0,"P1071:163:400:254","A400:254" +"PRISA TV","GUÍA FÁCIL","dvbs",10847,22000,"v",0,0,"P1072:163:400:254","A400:254" +"Unknown","Service 30600","dvbs",10876,22000,"v",0,0,"P1024:165:100","A100" +"Unknown","Service 30604","dvbs",10876,22000,"v",0,0,"P1028:165:100","A100" +"Unknown","Service 30616","dvbs",10876,22000,"v",0,0,"P1042:171:124","A124" +"ARD","rbb Brandenburg HD","dvbs2",10891,22000,"h",0,0,"P5300:5311:5314:5312:5313:5316","A5312:5313:5316" +"ARD","rbb Berlin HD","dvbs2",10891,22000,"h",0,0,"P5310:5311:5314:5312:5313:5316","A5312:5313:5316" +"ARD","MDR Sachsen HD","dvbs2",10891,22000,"h",0,0,"P5320:5331:5334:5332:5333:5336","A5332:5333:5336" +"ARD","MDR S-Anhalt HD","dvbs2",10891,22000,"h",0,0,"P5330:5331:5334:5332:5333:5336","A5332:5333:5336" +"ARD","MDR Thüringen HD","dvbs2",10891,22000,"h",0,0,"P5340:5331:5334:5332:5333:5336","A5332:5333:5336" +"ARD","hr-fernsehen HD","dvbs2",10891,22000,"h",0,0,"P5350:5351:5354:5352:5353:5356","A5352:5353:5356" +"BetaDigital","mediaspar HD","dvbs2",10964,22000,"h",0,0,"P98:767:771","A771" +"BetaDigital","QVC BEAUTY & STYLE HD","dvbs2",10964,22000,"h",0,0,"P101:1535:37:1539","A1539" +"DIGITAL+","Service 30660","dvbs",10979,22000,"v",0,0,"P1034","A" +"SES","SES UHD Demo Channel","dvbs2",10993,22000,"h",0,0,"P256:110:120","A120" +"SES ASTRA","Astra Ultra HD Demo","dvbs2",10993,22000,"h",0,0,"P257:210:220","A220" +"ASTRA","SES","dvbs",11023,22000,"h",0,0,"P2090:2091:2092:2093","A2092:2093" +"ARD","tagesschau24 HD","dvbs2",11052,22000,"h",0,0,"P5400:5401:5404:5402:5406","A5402:5406" +"ARD","Einsfestival HD","dvbs2",11052,22000,"h",0,0,"P5410:5411:5414:5412:5413:5416","A5412:5413:5416" +"ARD","EinsPlus HD","dvbs2",11052,22000,"h",0,0,"P5420:5421:5424:5422:5423:5426","A5422:5423:5426" +"Telefonica Servicios Audiovisuales","TELESUR","dvbs",11067,22000,"v",0,0,"P35:2101:2102","A2102" +"TSA","TBN Enlace","dvbs",11067,22000,"v",0,0,"P1802:8002:8102","A8102" +"TSA","TVGA","dvbs",11067,22000,"v",0,0,"P39:1701:53:1702","A1702" +"TSA","I24 NEWS","dvbs",11067,22000,"v",0,0,"P1824:1081:1082","A1082" +"Telefonica Servicios Audiovisuales","ASTRA SEXY SAT 1","dvbs",11067,22000,"v",0,0,"P41:1901:1902","A1902" +"DIGITAL+","C+ MULTI-X","dvbs2",11097,22000,"v",0,0,"P1024:167:108:109:110","A108:109:110" +"DIGITAL+","MULTI-X","dvbs2",11097,22000,"v",0,0,"P1039:174:136:137","A136:137" +"DIGITAL+","MULTI-X","dvbs2",11097,22000,"v",0,0,"P1037:165:100:101","A100:101" +"DIGITAL+","MULTI-X","dvbs2",11097,22000,"v",0,0,"P1040:176:144:145","A144:145" +".",".","dvbs2",11111,22000,"h",0,0,"P","A" +".",".","dvbs2",11111,22000,"h",0,0,"P","A" +".",".","dvbs2",11111,22000,"h",0,0,"P","A" +".",".","dvbs2",11111,22000,"h",0,0,"P","A" +".",".","dvbs",11112,22000,"h",0,0,"P","A" +".",".","dvbs",11112,22000,"h",0,0,"P","A" +".",".","dvbs",11112,22000,"h",0,0,"P","A" +".",".","dvbs",11112,22000,"h",0,0,"P","A" +"Unknown","Service 30505","dvbs",11156,22000,"v",0,0,"P1029:166:50:104:105","A104:105" +"PRISA TV","FASHION TV","dvbs",11156,22000,"v",0,0,"P1034:165:100","A100" +"Unknown","Service 30517","dvbs",11156,22000,"v",0,0,"P1041:166:50:104:105","A104:105" +"SKY","Sky INFO","dvbs2",11170,22000,"h",0,0,"P97:511:32:515","A515" +"SKY","Sky INFO","dvbs",11171,22000,"h",0,0,"P97:511:32:515","A515" +"SES ASTRA","TV TRWAM","dvbs2",11186,21666,"v",0,0,"P8020:33:273:3606","A3606" +"SES ASTRA","BVN TV","dvbs2",11186,21666,"v",0,0,"P2116:525:40:122","A122" +"SES ASTRA","TV TRWAM","dvbs",11185,22000,"v",0,0,"P8020:33:273:3606","A3606" +"SES ASTRA","BVN TV","dvbs",11185,22000,"v",0,0,"P2116:525:40:122","A122" +"~","Volksmusik","dvbs",11243,22000,"h",0,0,"P222:2220:2221","A2221" +"ORS","Bibel TV HD","dvbs",11243,22000,"h",0,0,"P224:2240:2245:2241","A2241" +"~","Schau TV","dvbs",11243,22000,"h",0,0,"P225:2250:2255:2251","A2251" +"~","Starparadies AT","dvbs",11243,22000,"h",0,0,"P226:2260:2261","A2261" +"~","DAF Neu","dvbs",11243,22000,"h",0,0,"P227:2270:2271","A2271" +"ORS","MELODIE TV","dvbs",11243,22000,"h",0,0,"P229:2290:2291","A2291" +"ORS","Service 13230","dvbs",11243,22000,"h",0,0,"P230","A" +"ORS","Service 13231","dvbs",11243,22000,"h",0,0,"P231","A" +"ORS","Service 13232","dvbs",11243,22000,"h",0,0,"P232","A" +"ORS","Service 13233","dvbs",11243,22000,"h",0,0,"P233","A" +"ORF","flimmit","dvbs2",11273,22000,"h",0,0,"P310:3100","A" +"ORF","Aristo.TV","dvbs2",11273,22000,"h",0,0,"P311:3110:3111","A3111" +"ServusTV","ServusTV HD Oesterreich","dvbs2",11302,22000,"h",0,0,"P109:3583:3588:3584:3585:3587:3589","A3584:3585:3587:3589" +"ServusTV","ServusTV HD Deutschland","dvbs2",11302,22000,"h",0,0,"P110:4920:4925:4921:4922:4924:4926","A4921:4922:4924:4926" +"ServusTV","PVoD","dvbs2",11302,22000,"h",0,0,"P111","A" +"ZDFvision","3sat HD","dvbs2",11347,22000,"v",0,0,"P6500:6510:6530:6520:6521:6523:6522","A6520:6521:6523:6522" +"ZDFvision","KiKA HD","dvbs2",11347,22000,"v",0,0,"P6600:6610:6630:6620:6621:6622","A6620:6621:6622" +"ZDFvision","ZDFinfo HD","dvbs2",11347,22000,"v",0,0,"P6700:6710:6730:6720:6721:6723:6722","A6720:6721:6723:6722" +"ZDFvision","ZDF HD","dvbs2",11361,22000,"h",0,0,"P6100:6110:6130:6120:6121:6123:6122","A6120:6121:6123:6122" +"ZDFvision","zdf_neo HD","dvbs2",11361,22000,"h",0,0,"P6300:6310:6330:6320:6321:6323:6322","A6320:6321:6323:6322" +"ZDFvision","zdf.kultur HD","dvbs2",11361,22000,"h",0,0,"P6400:6410:6430:6420:6421:6423:6422","A6420:6421:6423:6422" +"GlobeCast","RT HD","dvbs2",11376,22000,"v",0,0,"P1010:1011:1012:1013","A1012:1013" +"GLOBECAST","RT Esp HD","dvbs2",11376,22000,"v",0,0,"P1020:1021:1022:1023","A1022:1023" +"GLOBECAST","RT Esp HD","dvbs2",11376,22000,"v",0,0,"P1120:1021:1022:1023","A1022:1023" +"BetaDigital","RTL 2 CH","dvbs",11391,22000,"h",0,0,"P96:255:32:256","A256" +"BetaDigital","Fashion Television","dvbs",11420,22000,"h",0,0,"P103:2047:2048","A2048" +"BetaDigital","SOPHIA TV","dvbs",11420,22000,"h",0,0,"P108:3327:3328","A3328" +"BetaDigital","Die Neue Zeit TV","dvbs",11420,22000,"h",0,0,"P109:3583:3584","A3584" +"BetaDigital","Club-Hot TV","dvbs",11420,22000,"h",0,0,"P117:479:3807:480","A480" +"BetaDigital","6Live 24 TV","dvbs",11420,22000,"h",0,0,"P121:1503:1504","A1504" +"BetaDigital","Reife Damen TV","dvbs",11420,22000,"h",0,0,"P122:1759:3807:1760","A1760" +"BetaDigital","Lust und Liebe TV","dvbs",11420,22000,"h",0,0,"P126:2783:2784","A2784" +"BetaDigital","Telefonchat-24 TV","dvbs",11420,22000,"h",0,0,"P130:3807:3808","A3808" +"BetaDigital","Beate Uhse Sexy-Sat","dvbs",11420,22000,"h",0,0,"P133:751:3807:752","A752" +"BetaDigital","Hot Girls TV","dvbs",11420,22000,"h",0,0,"P135:1263:3807:1264","A1264" +"BetaDigital","GayBoys LIVE","dvbs",11420,22000,"h",0,0,"P138:2031:2032","A2032" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital","SES 05","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital","SES 06","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital","SES 07","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital","SES 09","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital","SES 10","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"BetaDigital",".","dvbs",11420,22000,"h",0,0,"P","A" +"CSAT","OFFRES CANAL READY","dvbs",11479,22000,"v",0,0,"P1284:164:96","A96" +"ARD","Das Erste HD","dvbs2",11493,22000,"h",0,0,"P5100:5101:5104:5102:5103:5106","A5102:5103:5106" +"ARD","arte HD","dvbs2",11493,22000,"h",0,0,"P5110:5111:5114:5112:5113:5116:5117","A5112:5113:5116:5117" +"ARD","SWR BW HD","dvbs2",11493,22000,"h",0,0,"P5120:5121:5124:5122:5123:5126","A5122:5123:5126" +"ARD","SWR RP HD","dvbs2",11493,22000,"h",0,0,"P5130:5121:5134:5122:5123:5126","A5122:5123:5126" +"Orange TV","SSU Samsung","dvbs",11508,22000,"v",0,0,"P705","A" +"GLOBECAST","Cubavision Internacional","dvbs",11508,22000,"v",0,0,"P758:708:728","A728" +"GLOBECAST","Al Jazeera Channel","dvbs",11508,22000,"v",0,0,"P759:709:729","A729" +"GLOBECAST","RedeRecord","dvbs",11508,22000,"v",0,0,"P760:710:730","A730" +"GLOBECAST","Arirang TV","dvbs",11508,22000,"v",0,0,"P761:711:731","A731" +"GlobeCast","Al Jazeera English","dvbs",11508,22000,"v",0,0,"P762:712:732","A732" +"GlobeCast","RT Esp","dvbs",11508,22000,"v",0,0,"P1250:1450:1550","A1550" +"GLOBECAST","NHK World TV","dvbs",11508,22000,"v",0,0,"P764:714:734","A734" +"BetaDigital","a.tv","dvbs",11523,22000,"h",0,0,"P96:255:256","A256" +"BetaDigital","Franken Fernsehen","dvbs",11523,22000,"h",0,0,"P97:511:512","A512" +"BetaDigital","intv","dvbs",11523,22000,"h",0,0,"P98:767:768","A768" +"BetaDigital","Ulm-Allgäu","dvbs",11523,22000,"h",0,0,"P99:1023:1024","A1024" +"BetaDigital","münchen.tv","dvbs",11523,22000,"h",0,0,"P100:1279:1280","A1280" +"BetaDigital","rfo Regional Oberbayern","dvbs",11523,22000,"h",0,0,"P101:1535:1536","A1536" +"BetaDigital","Mainfranken","dvbs",11523,22000,"h",0,0,"P102:1791:1792","A1792" +"BetaDigital","TV Oberfranken","dvbs",11523,22000,"h",0,0,"P103:2047:2048","A2048" +"BetaDigital","TVA-OTV","dvbs",11523,22000,"h",0,0,"P104:2303:2304","A2304" +"BetaDigital","Niederbayern","dvbs",11523,22000,"h",0,0,"P105:2559:2560","A2560" +"BetaDigital","Lokal TV Portal","dvbs",11523,22000,"h",0,0,"P144:4607:4608","A4608" +"GLOBECAST","Russia Today","dvbs",11538,22000,"v",0,0,"P654:604:624","A624" +"GLOBECAST","France 24","dvbs",11538,22000,"v",0,0,"P201:605:6701:625","A625" +"GLOBECAST","France 24","dvbs",11538,22000,"v",0,0,"P202:606:6702:626","A626" +"GLOBECAST","France 24","dvbs",11538,22000,"v",0,0,"P660:610:6710:630","A630" +"GLOBECAST","CCTV9 Documentary","dvbs",11538,22000,"v",0,0,"P662:612:632","A632" +"GLOBECAST","CCTV F","dvbs",11538,22000,"v",0,0,"P663:613:633","A633" +"GLOBECAST","CCTV NEWS","dvbs",11538,22000,"v",0,0,"P664:614:634","A634" +"GlobeCast","TV5MONDE EUROPE","dvbs",11538,22000,"v",0,0,"P665:615:835:635","A635" +"ARD","BR Süd HD","dvbs2",11582,22000,"h",0,0,"P5200:5201:5204:5202:5203:5206","A5202:5203:5206" +"ARD","BR Nord HD","dvbs2",11582,22000,"h",0,0,"P5210:5201:5204:5202:5203:5206","A5202:5203:5206" +"ARD","NDR FS NDS HD","dvbs2",11582,22000,"h",0,0,"P5220:5221:5224:5222:5223:5226","A5222:5223:5226" +"ARD","NDR FS MV HD","dvbs2",11582,22000,"h",0,0,"P5230:5221:5224:5222:5223:5226","A5222:5223:5226" +"ARD","NDR FS HH HD","dvbs2",11582,22000,"h",0,0,"P5240:5221:5224:5222:5223:5226","A5222:5223:5226" +"ARD","NDR FS SH HD","dvbs2",11582,22000,"h",0,0,"P5250:5221:5224:5222:5223:5226","A5222:5223:5226" +"ARD","PHOENIX HD","dvbs2",11582,22000,"h",0,0,"P5260:5261:5264:5262:5263","A5262:5263" +"CNBC","CNBC Europe","dvbs",11597,22000,"v",0,0,"P1838:307:308","A308" +"BBC","BBC World","dvbs",11597,22000,"v",0,0,"P1858:163:92","A92" +"Groupe M6","M6 BOUTIQUE LA CHAINE","dvbs",11597,22000,"v",0,0,"P1100:1120:130","A130" +"Bloomberg TV","Bloomberg Europe TV","dvbs",11597,22000,"v",0,0,"P1090:1360:1320","A1320" +"SES ASTRA","Sonlife Broadcasting Network","dvbs",11597,22000,"v",0,0,"P1050:1051:1052:1053","A1052:1053" +"TDA","Algerie 3","dvbs",11597,22000,"v",0,0,"P256:514:670","A670" +"TDA","Canal Algerie","dvbs",11597,22000,"v",0,0,"P257:515:680","A680" +"SES ASTRA","ASTRA 3D demo","dvbs",11611,22000,"h",0,0,"P32:33:36","A36" +"SES ASTRA","TRT Turk","dvbs",11611,22000,"h",0,0,"P45:2011:2016:4004","A4004" +"Sitcom","ALICE","dvbs",11611,22000,"h",0,0,"P129:2064:2068","A2068" +"Unknown","TURKSHOW TV","dvbs",11611,22000,"h",0,0,"P1100:1101:1102","A1102" +"RTVE","TVE INTERNACIONAL EUROPA","dvbs",11626,22000,"v",0,0,"P3520:3521:3525:3522:3527","A3522:3527" +"RTVE","CANAL 24 HORAS","dvbs",11626,22000,"v",0,0,"P3568:3569:3575:3570:3571","A3570:3571" +"SES","CNN Int.","dvbs",11626,22000,"v",0,0,"P3946:165:100","A100" +"BetaDigital","TWOJ","dvbs",11641,22000,"h",0,0,"P96:255:256","A256" +"ProSiebenSat.1","SAT.1 Gold Österreich","dvbs2",11670,22000,"h",0,0,"P106:2815:42:2816","A2816" +"ProSiebenSat.1","Pro7 MAXX Austria","dvbs2",11670,22000,"h",0,0,"P107:3071:43:3072","A3072" +"ProSiebenSat.1",".","dvbs2",11670,22000,"h",0,0,"P","A" +"DIGITAL+","C+ DEP 2 HD","dvbs",11685,22000,"v",0,0,"P1026:175","A" +"PRISA TV","YOMVI","dvbs",11685,22000,"v",0,0,"P1027:163:254:92","A254:92" +"Unknown","Service 30205","dvbs",11685,22000,"v",0,0,"P1052:166:104","A104" +"Unknown","Service 30213","dvbs",11685,22000,"v",0,0,"P1032:175","A" +"PRISA TV","AXN WHITE HD","dvbs",11685,22000,"v",0,0,"P1033:175","A" +"DIGITAL+","MEZZO LIVEHD","dvbs",11685,22000,"v",0,0,"P1037:175","A" +"Unknown","Service 30216","dvbs",11685,22000,"v",0,0,"P1039:175","A" +"CANAL+","NICKELODEONHD","dvbs",11685,22000,"v",0,0,"P1050:175","A" +"DIGITAL+","C+ LIGA HD","dvbs",11685,22000,"v",0,0,"P1040:175","A" +"DIGITAL+","CANAL+1 HD","dvbs",11685,22000,"v",0,0,"P1041:175","A" +"DIGITAL+","C+ ACCIÓN HD","dvbs",11685,22000,"v",0,0,"P1042:175","A" +"DIGITAL+","C+COMEDIA HD","dvbs",11685,22000,"v",0,0,"P1043:175","A" +"DIGITAL+","C+ DCINE HD","dvbs",11685,22000,"v",0,0,"P1044:175","A" +"DIGITAL+","C+XTRA HD","dvbs",11685,22000,"v",0,0,"P1045:175","A" +"Unknown","Service 30231","dvbs",11685,22000,"v",0,0,"P1046:175","A" +"DIGITAL+","C+ FÚTBOL HD","dvbs",11685,22000,"v",0,0,"P1047:175","A" +"DIGITAL+","C+ DEPORT HD","dvbs",11685,22000,"v",0,0,"P1048:175","A" +"PRISA TV","RTESPAÑOL HD","dvbs",11685,22000,"v",0,0,"P1049:175","A" +"DIGITAL+","CALLE 13 HD","dvbs",11685,22000,"v",0,0,"P1055:175","A" +"DIGITAL+","FOX HD","dvbs",11685,22000,"v",0,0,"P1056:175","A" +"DIGITAL+","AXN HD","dvbs",11685,22000,"v",0,0,"P1057:175","A" +"DIGITAL+","NAT GEO HD","dvbs",11685,22000,"v",0,0,"P1058:175","A" +"PRISA TV","COMEDYCENTRALHD","dvbs",11685,22000,"v",0,0,"P1059:175","A" +"DIGITAL+","MEZZO LIVEHD","dvbs",11685,22000,"v",0,0,"P1060:175","A" +"DIGITAL+","CANAL+ 3D","dvbs",11685,22000,"v",0,0,"P1061:175","A" +"DIGITAL+","TAQUILLA HD","dvbs",11685,22000,"v",0,0,"P1062:175","A" +"DIGITAL+","VIAJAR HD","dvbs",11685,22000,"v",0,0,"P1063:175","A" +"DIGITAL+","COSMO HD","dvbs",11685,22000,"v",0,0,"P1064:175","A" +"DIGITAL+","HOLLYWOOD HD","dvbs",11685,22000,"v",0,0,"P1065:175","A" +"DIGITAL +","TNT HD","dvbs",11685,22000,"v",0,0,"P1066:175","A" +"DIGITAL+","NG WILD HD","dvbs",11685,22000,"v",0,0,"P1067:175","A" +"DIGITAL+","SYFY HD","dvbs",11685,22000,"v",0,0,"P1068:175","A" +"DIGITAL+","DISNEY CH HD","dvbs",11685,22000,"v",0,0,"P1069:175","A" +"PRISATV","C+LCAMPEON2","dvbs",11685,22000,"v",0,0,"P1070:175","A" +"PRISATV","C+LCAMPEONES","dvbs",11685,22000,"v",0,0,"P1071:175","A" +"PRISA TV","C+L.MULTI HD","dvbs",11685,22000,"v",0,0,"P1072:175","A" +"PRISA TV","TAQUILLA HD2","dvbs",11685,22000,"v",0,0,"P1073:175","A" +"PRISA TV","FOX LIFE HD","dvbs",11685,22000,"v",0,0,"P1074:175","A" +"PRISA TV","C+LCAMPEON3","dvbs",11685,22000,"v",0,0,"P1075:175","A" +"PRISA TV","C+ GOLF HD","dvbs",11685,22000,"v",0,0,"P1076:175","A" +"PRISA TV","CANAL+ 2 HD","dvbs",11685,22000,"v",0,0,"P1077:175","A" +"DIGITAL+","C+ XTRA HD","dvbs",11685,22000,"v",0,0,"P1078:175","A" +"Unknown","TCM HD","dvbs",11685,22000,"v",0,0,"P1079:175","A" +"PRISA TV","C+ SERIES HD","dvbs",11685,22000,"v",0,0,"P1080:175","A" +"MTV Networks Europe","VH1.","dvbs",11739,27500,"v",0,0,"P341:3061:8190:3062","A3062" +"MTV Networks Europe","VH1 Classic.","dvbs",11739,27500,"v",0,0,"P327:3071:8190:3072","A3072" +"MTV Networks Europe","Test Channel 1","dvbs",11739,27500,"v",0,0,"P","A" +"CNN","CNN Int.","dvbs",11778,27500,"v",0,0,"P3946:165:100","A100" +"ARD","Das Erste","dvbs",11836,27500,"h",0,0,"P100:101:104:102:103:106","A102:103:106" +"ARD","Bayerisches FS Süd","dvbs",11836,27500,"h",0,0,"P200:201:204:202:203:206","A202:203:206" +"ARD","hr-fernsehen","dvbs",11836,27500,"h",0,0,"P300:301:304:302:303","A302:303" +"ARD","Bayerisches FS Nord","dvbs",11836,27500,"h",0,0,"P500:201:204:202:203:206","A202:203:206" +"ARD","WDR Köln","dvbs",11836,27500,"h",0,0,"P600:601:604:602:603","A602:603" +"ARD","SWR Fernsehen BW","dvbs",11836,27500,"h",0,0,"P800:801:804:802:803:806","A802:803:806" +"CSAT","iTELE","dvbs",11856,27500,"v",0,0,"P200:210:241:221","A221" +"CSAT","iTELE","dvbs",11856,27500,"v",0,0,"P201:210:241:221","A221" +"CSAT","CANAL+ DECALE","dvbs",11895,27500,"v",0,0,"P500:510:541:521:522","A521:522" +"CSAT","Service 8361","dvbs",11895,27500,"v",0,0,"P1700","A" +"CSAT","D17","dvbs",11934,27500,"v",0,0,"P400:410:441:421:422","A421:422" +"CSAT","TV5MONDE","dvbs",11934,27500,"v",0,0,"P1000:1010:1041:1021","A1021" +"CSAT","D17","dvbs",11934,27500,"v",0,0,"P401:410:441:421:422","A421:422" +"ZDFvision","ZDF","dvbs",11953,27500,"h",0,0,"P100:110:130:120:121:122:125","A120:121:122:125" +"ZDFvision","3sat","dvbs",11953,27500,"h",0,0,"P200:210:230:220:221:222:225","A220:221:222:225" +"ZDFvision","KiKA","dvbs",11953,27500,"h",0,0,"P300:310:330:320:321:325","A320:321:325" +"ZDFvision","ZDFinfo","dvbs",11953,27500,"h",0,0,"P600:610:630:620:621:622:625","A620:621:622:625" +"ZDFvision","zdf_neo","dvbs",11953,27500,"h",0,0,"P650:660:680:670:671:672:675","A670:671:672:675" +"ZDFvision","zdf.kultur","dvbs",11953,27500,"h",0,0,"P1100:1110:1130:1120:1121:1122:1125","A1120:1121:1122:1125" +"MTV Networks Europe","Comedy Central/VIVA","dvbs",11973,27500,"v",0,0,"P416:4061:8190:4064:4062","A4062" +"MTV Networks Europe","Nickelodeon","dvbs",11973,27500,"v",0,0,"P420:4101:8190:4104:4102:4103","A4102:4103" +"MTV Networks Europe","Test Channel 2","dvbs",11973,27500,"v",0,0,"P","A" +"MTV Networks Europe","Test Channel 3","dvbs",11973,27500,"v",0,0,"P","A" +"Unknown","CANAL+ DECALE HD","dvbs2",12012,29700,"v",0,0,"P1281:161:86:87","A86:87" +"Unknown","Service 8822","dvbs2",12012,29700,"v",0,0,"P1301:161:86:87","A86:87" +"SKY","Sky Select","dvbs",12031,27500,"h",0,0,"P103:2815:2816","A2816" +"ProSiebenSat.1","ProSieben Schweiz","dvbs",12051,27500,"v",0,0,"P32:289:33:290:292","A290:292" +"ProSiebenSat.1","ProSieben Austria","dvbs",12051,27500,"v",0,0,"P1025:161:36:84:85","A84:85" +"ProSiebenSat.1","Kabel 1 Schweiz","dvbs",12051,27500,"v",0,0,"P1026:162:165:163","A163" +"ProSiebenSat.1","Kabel 1 Austria","dvbs",12051,27500,"v",0,0,"P1027:166:169:167","A167" +"ProSiebenSat.1","SAT.1 A","dvbs",12051,27500,"v",0,0,"P1028:800:802:801:803","A801:803" +"ProSiebenSat.1","SAT.1 CH","dvbs",12051,27500,"v",0,0,"P101:1535:38:1536:1539","A1536:1539" +"ProSiebenSat.1","SAT.1 HH/SH","dvbs",12051,27500,"v",0,0,"P103:2047:40:2048:2051","A2048:2051" +"ProSiebenSat.1","SAT.1 NS/Bremen","dvbs",12051,27500,"v",0,0,"P104:2047:40:2048:2051","A2048:2051" +"ProSiebenSat.1","SAT.1 RhlPf/Hessen","dvbs",12051,27500,"v",0,0,"P105:2047:40:2048:2051","A2048:2051" +"ProSiebenSat.1",".","dvbs",12051,27500,"v",0,0,"P","A" +"ARD","rbb Brandenburg","dvbs",12109,27500,"h",0,0,"P500:601:604:602:603","A602:603" +"ARD","rbb Berlin","dvbs",12109,27500,"h",0,0,"P600:601:604:602:603","A602:603" +"ARD","ARD-TEST-1","dvbs",12109,27500,"h",0,0,"P2100:601:604:602:2602","A602:2602" +"ARD","NDR FS MV","dvbs",12109,27500,"h",0,0,"P2400:2601:2604:2602:2603","A2602:2603" +"ARD","NDR FS HH","dvbs",12109,27500,"h",0,0,"P2500:2601:2604:2602:2603","A2602:2603" +"ARD","NDR FS NDS","dvbs",12109,27500,"h",0,0,"P2600:2601:2604:2602:2603","A2602:2603" +"ARD","NDR FS SH","dvbs",12109,27500,"h",0,0,"P2700:2601:2604:2602:2603","A2602:2603" +"ARD","MDR Sachsen","dvbs",12109,27500,"h",0,0,"P2800:2901:2904:2902:2903","A2902:2903" +"ARD","MDR S-Anhalt","dvbs",12109,27500,"h",0,0,"P2900:2901:2904:2902:2903","A2902:2903" +"ARD","MDR Thüringen","dvbs",12109,27500,"h",0,0,"P3000:2901:2904:2902:2903","A2902:2903" +"ARD","SWR Fernsehen RP","dvbs",12109,27500,"h",0,0,"P3100:3101:3104:3102:3103:3106","A3102:3103:3106" +"BetaDigital","N24 Austria","dvbs",12148,27500,"h",0,0,"P98:255:256","A256" +"BetaDigital","Beauty TV","dvbs",12148,27500,"h",0,0,"P100:3071:3072","A3072" +"MTV Networks","Comedy Central / VIVA AT","dvbs",12148,27500,"h",0,0,"P106:1535:33:1536","A1536" +"MTV Networks","NICKELODEON AT","dvbs",12148,27500,"h",0,0,"P107:1791:34:1792:1793","A1792:1793" +"BetaDigital","DELUXE MUSIC","dvbs",12148,27500,"h",0,0,"P99:3327:3328","A3328" +"BetaDigital","BB-MV Lokal-TV","dvbs",12148,27500,"h",0,0,"P103:2559:2560","A2560" +"BetaDigital","HOPE Channel deutsch","dvbs",12148,27500,"h",0,0,"P105:511:512","A512" +"BetaDigital","DMAX Austria","dvbs",12148,27500,"h",0,0,"P115:3583:45:3584","A3584" +"BetaDigital","JML Shop","dvbs",12148,27500,"h",0,0,"P108:2303:2304","A2304" +"BetaDigital","pearl.tv Shop","dvbs",12148,27500,"h",0,0,"P96:2047:2048","A2048" +"BetaDigital","RNF","dvbs",12148,27500,"h",0,0,"P122:1104:38:1105","A1105" +"BetaDigital","Channel21","dvbs",12148,27500,"h",0,0,"P113:1023:35:1024","A1024" +"BetaDigital","GOD Channel","dvbs",12148,27500,"h",0,0,"P97:767:768","A768" +"BetaDigital","MediaShop- Meine Einkaufswelt","dvbs",12148,27500,"h",0,0,"P114:1279:1280","A1280" +"BetaDigital",".","dvbs",12148,27500,"h",0,0,"P","A" +"RTL World","RTL Television","dvbs",12187,27500,"h",0,0,"P44:163:105:104:106","A104:106" +"RTL World","RTL Regional NRW","dvbs",12187,27500,"h",0,0,"P54:163:105:104","A104" +"RTL World","RTL HB NDS","dvbs",12187,27500,"h",0,0,"P55:163:105:104","A104" +"RTL World","RTL FS","dvbs",12187,27500,"h",0,0,"P56:163:105:104","A104" +"RTL World","RTL2","dvbs",12187,27500,"h",0,0,"P46:166:68:128","A128" +"RTL World","SUPER RTL","dvbs",12187,27500,"h",0,0,"P45:165:65:120","A120" +"RTL","SUPER RTL CH","dvbs",12187,27500,"h",0,0,"P52:172:82:145","A145" +"RTL World","VOX","dvbs",12187,27500,"h",0,0,"P47:167:71:136","A136" +"RTL","RTLNITRO","dvbs",12187,27500,"h",0,0,"P53:173:84:146","A146" +"RTL World","Channel 21","dvbs",12187,27500,"h",0,0,"P41:168:70:137","A137" +"RTL World","n-tv","dvbs",12187,27500,"h",0,0,"P48:169:80:73","A73" +"CBC","Channel 21 ALT","dvbs",12187,27500,"h",0,0,"P49:168:70:137","A137" +"RTL","RTL Austria","dvbs",12226,27500,"h",0,0,"P200:201:203:202","A202" +"RTL","VOX Austria","dvbs",12226,27500,"h",0,0,"P300:301:303:302","A302" +"RTL","RTL2 Austria","dvbs",12226,27500,"h",0,0,"P400:401:403:402","A402" +"RTL","SUPER RTL A","dvbs",12226,27500,"h",0,0,"P500:501:503:502","A502" +"SES Astra","Eurosport Deutschland","dvbs",12226,27500,"h",0,0,"P280:101:102:103","A103" +"SES Astra","HSE24 EXTRA","dvbs",12226,27500,"h",0,0,"P259:512:576:660","A660" +"Globecast","EuroNews","dvbs",12226,27500,"h",0,0,"P260:2432:2433:2434:2435:2436:2437:2438:2439:2440:2441:2442","A2433:2434:2435:2436:2437:2438:2439:2440:2441:2442" +"RTL","VOX CH","dvbs",12226,27500,"h",0,0,"P600:601:603:602","A602" +"CBC","RTL CH","dvbs",12226,27500,"h",0,0,"P610:611:614:612:613","A612:613" +"ARD","SR Fernsehen","dvbs",12265,27500,"h",0,0,"P1300:1301:1304:1302:1303","A1302:1303" +"ARD","ARD-alpha","dvbs",12265,27500,"h",0,0,"P1400:1401:1404:1402:1403:1406","A1402:1403:1406" +"CSAT","MOSAIQUE","dvbs",12324,27500,"v",0,0,"P1282:162:1906:1901:1902:1903:1904:1905:1907:1908:1909:1910:1911:1912:1913:1914:1915:1916:1917:1918:1919:1920","A1906:1901:1902:1903:1904:1905:1907:1908:1909:1910:1911:1912:1913:1914:1915:1916:1917:1918:1919:1920" +"Unknown","Service 8625","dvbs",12324,27500,"v",0,0,"P1304:162:1912","A1912" +"CSAT","MOSAIQUE","dvbs",12324,27500,"v",0,0,"P1301:162:1912","A1912" +"CSAT","MOSAIQUE","dvbs",12324,27500,"v",0,0,"P1303:162:1912","A1912" +"CSAT","MOSA 5","dvbs",12324,27500,"v",0,0,"P1289:172:1990:1981:1982:1983:1984:1985:1986:1987:1988:1989:1991:1992:1993:1994:1995:1996:1997:1998:1999:2000","A1990:1981:1982:1983:1984:1985:1986:1987:1988:1989:1991:1992:1993:1994:1995:1996:1997:1998:1999:2000" +"Unknown","Service 8615","dvbs",12324,27500,"v",0,0,"P1294:2047","A" +"CSAT","MOSA 4","dvbs",12324,27500,"v",0,0,"P1293:166:1961:1962:1963:1964:1965:1966:1967:1968:1969:1970:1971:1972:1973:1974:1975:1976:1977:1978:1979:1980","A1961:1962:1963:1964:1965:1966:1967:1968:1969:1970:1971:1972:1973:1974:1975:1976:1977:1978:1979:1980" +"CSAT","MOSA 3","dvbs",12324,27500,"v",0,0,"P1284:164:1941:1942:1943:1944:1945:1946:1947:1948:1949:1950:1951:1952:1953:1954:1955:1956:1957:1958:1959:1960","A1941:1942:1943:1944:1945:1946:1947:1948:1949:1950:1951:1952:1953:1954:1955:1956:1957:1958:1959:1960" +"CSAT","MOSA 2","dvbs",12324,27500,"v",0,0,"P1283:163:1921:1922:1923:1924:1925:1926:1927:1928:1929:1930:1931:1932:1933:1934:1935:1936:1937:1938:1939:1940","A1921:1922:1923:1924:1925:1926:1927:1928:1929:1930:1931:1932:1933:1934:1935:1936:1937:1938:1939:1940" +"CSAT","PASS PINK X","dvbs",12363,27500,"v",0,0,"P1345:2047","A" +"CSAT","CANALPLAY","dvbs",12363,27500,"v",0,0,"P1313:2047","A" +"CSAT","CAMPUS","dvbs",12363,27500,"v",0,0,"P1288:2047","A" +"CSAT","CAMPUS","dvbs",12363,27500,"v",0,0,"P1287:2047","A" +"CSAT","PASS XXL DORCEL","dvbs",12363,27500,"v",0,0,"P1342:2047","A" +"CSAT","PASS SERIES","dvbs",12363,27500,"v",0,0,"P1341:2047","A" +"CSAT","CSAT A LA DEMANDE","dvbs",12363,27500,"v",0,0,"P1308:2047","A" +"CSAT","C+ A LA DEMANDE","dvbs",12363,27500,"v",0,0,"P1285:2047","A" +"Unknown","CANALPLAY","dvbs",12363,27500,"v",0,0,"P1327:2049:2048","A2048" +"CSAT","CANALPLAY VOD","dvbs",12363,27500,"v",0,0,"P1311:2047","A" +"CSAT","6PLAY","dvbs",12363,27500,"v",0,0,"P1310:2047","A" +"CSAT","CSAT A LA DEMANDE","dvbs",12363,27500,"v",0,0,"P1303:2047","A" +"CSAT","C+ A LA DEMANDE","dvbs",12363,27500,"v",0,0,"P1284:2047","A" +"CSAT","LCP","dvbs",12402,27500,"v",0,0,"P700:710:741:721","A721" +"CSAT","ARTE","dvbs",12402,27500,"v",0,0,"P1200:1210:1241:1221:1222:1224:1223","A1221:1222:1224:1223" +"CSAT","LCP","dvbs",12402,27500,"v",0,0,"P701:710:741:721","A721" +"CSAT","ARTE","dvbs",12402,27500,"v",0,0,"P1201:1210:1241:1221:1222:1224:1223","A1221:1222:1224:1223" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4050:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4051:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4052:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4053:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4054:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4055:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4056:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4057:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4058:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4059:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4060:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4061:4910","A" +"Unknown","DECODEUR","dvbs",12402,27500,"v",0,0,"P4062:4910","A" +"Unknown","Service 8763","dvbs",12402,27500,"v",0,0,"P4063:4910","A" +"Unknown","Service 8764","dvbs",12402,27500,"v",0,0,"P4064:4910","A" +"ARD","WDR Bielefeld","dvbs",12421,27500,"h",0,0,"P300:501:504:502:503","A502:503" +"ARD","WDR Dortmund","dvbs",12421,27500,"h",0,0,"P400:501:504:502:503","A502:503" +"ARD","WDR Düsseldorf","dvbs",12421,27500,"h",0,0,"P500:501:504:502:503","A502:503" +"ARD","WDR Essen","dvbs",12421,27500,"h",0,0,"P600:501:504:502:503","A502:503" +"ARD","WDR Münster","dvbs",12421,27500,"h",0,0,"P700:501:504:502:503","A502:503" +"ARD","WDR Siegen","dvbs",12421,27500,"h",0,0,"P800:501:504:502:503","A502:503" +"ARD","WDR HD Köln","dvbs",12421,27500,"h",0,0,"P5500:5501:5504:5502:5503:5506","A5502:5503:5506" +"ARD","WDR HD Bielefeld","dvbs",12421,27500,"h",0,0,"P5510:5501:5504:5502:5503:5506","A5502:5503:5506" +"ARD","WDR HD Dortmund","dvbs",12421,27500,"h",0,0,"P5520:5501:5504:5502:5503:5506","A5502:5503:5506" +"ARD","WDR HD Düsseldorf","dvbs",12421,27500,"h",0,0,"P5530:5501:5504:5502:5503:5506","A5502:5503:5506" +"ARD","WDR HD Essen","dvbs",12421,27500,"h",0,0,"P5540:5501:5504:5502:5503:5506","A5502:5503:5506" +"ARD","WDR HD Münster","dvbs",12421,27500,"h",0,0,"P5550:5501:5504:5502:5503:5506","A5502:5503:5506" +"ARD","WDR HD Siegen","dvbs",12421,27500,"h",0,0,"P5560:5501:5504:5502:5503:5506","A5502:5503:5506" +"ARD","Radio Bremen TV","dvbs",12421,27500,"h",0,0,"P1200:1201:1204:1202","A1202" +"ARD","WDR Test A","dvbs",12421,27500,"h",0,0,"P1500:501:504:502:503","A502:503" +"BetaDigital","ManouLenz.tv","dvbs",12460,27500,"h",0,0,"P97:511:512","A512" +"BetaDigital","EWTN katholisches TV","dvbs",12460,27500,"h",0,0,"P100:1023:1024:1025","A1024:1025" +"BetaDigital","QVC BEAUTY&STYLE","dvbs",12460,27500,"h",0,0,"P102:1791:38:1792","A1792" +"BetaDigital","joiz","dvbs",12460,27500,"h",0,0,"P101:1279:1280","A1280" +"BetaDigital","Sparhandy TV","dvbs",12460,27500,"h",0,0,"P108:3071:3072","A3072" +"BetaDigital","1-2-3.tv","dvbs",12460,27500,"h",0,0,"P105:2815:32:2816","A2816" +"BetaDigital","ANIXE SD","dvbs",12460,27500,"h",0,0,"P107:3311:3312","A3312" +"BetaDigital","TLC","dvbs",12460,27500,"h",0,0,"P103:1535:37:1536","A1536" +"ProSiebenSat.1","SIXX","dvbs",12460,27500,"h",0,0,"P99:767:35:768","A768" +"BetaDigital","Disney Channel","dvbs",12460,27500,"h",0,0,"P115:2047:36:2048:2051","A2048:2051" +"BetaDigital","QVC","dvbs",12460,27500,"h",0,0,"P96:255:33:256","A256" +"BetaDigital","Sonnenklar TV","dvbs",12480,27500,"v",0,0,"P97:2303:40:2304","A2304" +"BetaDigital","HSE24","dvbs",12480,27500,"v",0,0,"P104:1279:37:1280","A1280" +"BetaDigital","mediasparTV Homeshopping","dvbs",12480,27500,"v",0,0,"P106:1791:1792","A1792" +"BetaDigital","REGIO TV","dvbs",12480,27500,"v",0,0,"P107:2047:2048","A2048" +"BetaDigital","TELE 5","dvbs",12480,27500,"v",0,0,"P99:1535:38:1536","A1536" +"BetaDigital","DMAX","dvbs",12480,27500,"v",0,0,"P108:3327:44:3328","A3328" +"BetaDigital","EBRU TV","dvbs",12480,27500,"v",0,0,"P109:2815:2816","A2816" +"BetaDigital","HSE24 TREND","dvbs",12480,27500,"v",0,0,"P110:3071:36:3072","A3072" +"BetaDigital","AstroTV","dvbs",12480,27500,"v",0,0,"P98:2559:2560","A2560" +"BetaDigital","e8 television","dvbs",12480,27500,"v",0,0,"P102:767:768","A768" +"BetaDigital","MediaShop- Neuheiten","dvbs",12480,27500,"v",0,0,"P100:255:256","A256" +"BetaDigital","meinTVshop","dvbs",12480,27500,"v",0,0,"P101:511:512","A512" +"BetaDigital","SPORT1","dvbs",12480,27500,"v",0,0,"P103:1023:39:1024","A1024" +"M7 Group","CD/TVV info&nieuws","dvbs",12515,22000,"h",0,0,"P2116:525:8190:120","A120" +"Unknown","Service 9298","dvbs",12522,22000,"v",0,0,"P1340:1010","A" +"Unknown","Service 9205","dvbs",12522,22000,"v",0,0,"P1284:164:96","A96" +"ProSiebenSat.1","SAT.1","dvbs",12544,22000,"h",0,0,"P96:255:32:256:259","A256:259" +"ProSiebenSat.1","ProSieben","dvbs",12544,22000,"h",0,0,"P97:511:33:512:515","A512:515" +"ProSiebenSat.1","kabel eins","dvbs",12544,22000,"h",0,0,"P98:767:34:768","A768" +"ProSiebenSat.1","N24","dvbs",12544,22000,"h",0,0,"P99:1023:35:1024","A1024" +"ProSiebenSat.1","SAT.1 Gold","dvbs",12544,22000,"h",0,0,"P100:1279:36:1280","A1280" +"ProSiebenSat.1","ProSieben MAXX","dvbs",12544,22000,"h",0,0,"P101:1535:37:1536","A1536" +"ProSiebenSat.1","SAT.1 Bayern","dvbs",12544,22000,"h",0,0,"P103:255:32:256:259","A256:259" +"ProSiebenSat.1","SAT.1 NRW","dvbs",12544,22000,"h",0,0,"P104:255:32:256:259","A256:259" +"SES ASTRA","QVC PLUS","dvbs",12551,22000,"v",0,0,"P1060:168:146:144","A144" +"SES ASTRA","QVC Deutschland","dvbs",12551,22000,"v",0,0,"P1030:165:167:166","A166" +"SES ASTRA","Bibel TV","dvbs",12551,22000,"v",0,0,"P32:33:36:34","A34" +"SES ASTRA","eUrotic","dvbs",12551,22000,"v",0,0,"P47:460:470","A470" +"SES ASTRA","BFM TV","dvbs",12551,22000,"v",0,0,"P2170:2171:345:2172","A2172" +"SES ASTRA","BFM TV","dvbs",12551,22000,"v",0,0,"P2170:2171:345:2172","A2172" +"SES ASTRA","BFM Business","dvbs",12551,22000,"v",0,0,"P1059:39:38","A38" +"SES ASTRA","CashTV","dvbs",12551,22000,"v",0,0,"P1070:1071:1072","A1072" +"SES ASTRA","8 MONT-BLANC","dvbs",12551,22000,"v",0,0,"P","A" +"BetaDigital","sonnenklar.TV HD","dvbs2",12574,22000,"h",0,0,"P96:255:32:259","A259" +"BetaDigital","Juwelo HD","dvbs2",12574,22000,"h",0,0,"P99:1023:1024","A1024" +"BetaDigital","pearl.tv HD Shop","dvbs2",12574,22000,"h",0,0,"P100:1279:1280","A1280" +"BetaDigital","TecTime TV","dvbs2",12574,22000,"h",0,0,"P107:3071:3072","A3072" +"CSAT","A LA DEMANDE","dvbs",12581,22000,"v",0,0,"P1283:163:92","A92" +"SES ASTRA","STB Comag","dvbs",12603,22000,"h",0,0,"P7266","A" +"SES ASTRA","Sky News Intl","dvbs",12603,22000,"h",0,0,"P7290:1290:2290","A2290" +"ARD","WDR Aachen","dvbs",12603,22000,"h",0,0,"P3400:3401:3804:3402:3403","A3402:3403" +"ARD","WDR Wuppertal","dvbs",12603,22000,"h",0,0,"P3500:3401:3804:3402:3403","A3402:3403" +"ARD","WDR Bonn","dvbs",12603,22000,"h",0,0,"P3600:3401:3804:3402:3403","A3402:3403" +"ARD","WDR Duisburg","dvbs",12603,22000,"h",0,0,"P3700:3401:3804:3402:3403","A3402:3403" +"ARD","WDR HD Aachen","dvbs",12603,22000,"h",0,0,"P5600:5601:5604:5602:5603:5606","A5602:5603:5606" +"ARD","WDR HD Wuppertal","dvbs",12603,22000,"h",0,0,"P5610:5601:5604:5602:5603:5606","A5602:5603:5606" +"ARD","WDR HD Bonn","dvbs",12603,22000,"h",0,0,"P5620:5601:5604:5602:5603:5606","A5602:5603:5606" +"ARD","WDR HD Duisburg","dvbs",12603,22000,"h",0,0,"P5630:5601:5604:5602:5603:5606","A5602:5603:5606" +"MEDIA BROADCAST","MEDIA BROADCAST - Test 7","dvbs",12633,22000,"h",0,0,"P100:1113:1114","A1114" +"MEDIA BROADCAST","K-TV","dvbs",12633,22000,"h",0,0,"P102:202:502:302","A302" +"MEDIA BROADCAST","Deutsches Musik Fernsehen","dvbs",12633,22000,"h",0,0,"P105:53:504:54","A54" +"MEDIA BROADCAST","Lustkanal24 TV","dvbs",12633,22000,"h",0,0,"P106:206:306","A306" +"MEDIA BROADCAST","MEDIA BROADCAST - Test 6","dvbs",12633,22000,"h",0,0,"P107:1113:1114","A1114" +"MEDIA BROADCAST","Sexy Club TV","dvbs",12633,22000,"h",0,0,"P112:212:206:312","A312" +"MEDIA BROADCAST","rhein main tv","dvbs",12633,22000,"h",0,0,"P108:208:508:308","A308" +"MEDIA BROADCAST","Deutsche Girls 24 TV","dvbs",12633,22000,"h",0,0,"P115:215:206:315","A315" +"MEDIA BROADCAST","Juwelo TV","dvbs",12633,22000,"h",0,0,"P116:1041:1042","A1042" +"MEDIA BROADCAST","Dreamgirls24 TV","dvbs",12633,22000,"h",0,0,"P118:218:206:318","A318" +"MEDIA BROADCAST","Erotiksat24 TV","dvbs",12633,22000,"h",0,0,"P119:219:206:319","A319" +"MEDIA BROADCAST","123-Damenwahl","dvbs",12633,22000,"h",0,0,"P120:220:206:320","A320" +"MEDIA BROADCAST","MEDIA BROADCAST - Test 5","dvbs",12633,22000,"h",0,0,"P121:1113:1114","A1114" +"MEDIA BROADCAST","Maennersache TV","dvbs",12633,22000,"h",0,0,"P122:222:322","A322" +"MEDIA BROADCAST","Date Line","dvbs",12633,22000,"h",0,0,"P123:223:323","A323" +"MEDIA BROADCAST","Fotohandy","dvbs",12633,22000,"h",0,0,"P124:224:324","A324" +"MEDIA BROADCAST","Mobile Sex","dvbs",12633,22000,"h",0,0,"P125:225:325","A325" +"MEDIA BROADCAST","SEX-Kontakte","dvbs",12633,22000,"h",0,0,"P126:226:326","A326" +"MEDIA BROADCAST","Eros TV","dvbs",12633,22000,"h",0,0,"P127:227:206:327","A327" +"MEDIA BROADCAST","Achtung Sexy TV","dvbs",12633,22000,"h",0,0,"P128:228:206:328","A328" +"MEDIA BROADCAST","Traumfrauen TV","dvbs",12633,22000,"h",0,0,"P129:229:206:329","A329" +"MEDIA BROADCAST","Heiss und Sexy TV","dvbs",12633,22000,"h",0,0,"P130:230:206:330","A330" +"MEDIA BROADCAST","Shop24Direct","dvbs",12633,22000,"h",0,0,"P133:233:333","A333" +"MEDIA BROADCAST","nice","dvbs",12633,22000,"h",0,0,"P134:242:342","A342" +"MEDIA BROADCAST","Babestation24","dvbs",12633,22000,"h",0,0,"P135:235:335","A335" +"MEDIA BROADCAST","Fundorado TV","dvbs",12633,22000,"h",0,0,"P136:236:336","A336" +"MEDIA BROADCAST","EROTIKA TV - NEU!","dvbs",12633,22000,"h",0,0,"P139:239:339","A339" +"MEDIA BROADCAST","BunnyClub24","dvbs",12633,22000,"h",0,0,"P140:240:340","A340" +"MEDIA BROADCAST","Clipmobile","dvbs",12633,22000,"h",0,0,"P141:241:341","A341" +"MEDIA BROADCAST","MEDIA BROADCAST - Test 4","dvbs",12633,22000,"h",0,0,"P142:1113:1114","A1114" +"MEDIA BROADCAST","ALT - SUCHLAUF STARTEN","dvbs",12633,22000,"h",0,0,"P143:53:504:54","A54" +"MEDIA BROADCAST","multithek","dvbs",12633,22000,"h",0,0,"P144:244","A" +"MEDIA BROADCAST","MEDIA BROADCAST - Test 3","dvbs",12633,22000,"h",0,0,"P156:1113:1114","A1114" +"MEDIA BROADCAST","MEDIA BROADCAST - Test 2","dvbs",12633,22000,"h",0,0,"P157:1113:1114","A1114" +"MEDIA BROADCAST","MEDIA BROADCAST - Test 1","dvbs",12633,22000,"h",0,0,"P164:1113:1114","A1114" +"RTL","RTL NITRO A","dvbs",12662,22000,"h",0,0,"P1102:1020:1025:1021","A1021" +"~","Welt der Wunder","dvbs",12662,22000,"h",0,0,"P1103:1030:1031","A1031" +"~","LT1-OOE","dvbs",12662,22000,"h",0,0,"P1104:1040:1041","A1041" +"sevenonemedia","sixx Austria","dvbs",12662,22000,"h",0,0,"P1106:1060:1063:1061","A1061" +"~","VISIT-X.tv","dvbs",12662,22000,"h",0,0,"P1107:1070:1071","A1071" +"ServusTV","ServusTV Deutschland","dvbs",12662,22000,"h",0,0,"P1210:1110:1115:1111:1112","A1111:1112" +"ServusTV","ServusTV Oesterreich","dvbs",12662,22000,"h",0,0,"P1211:2110:2115:2111:2112","A2111:2112" +"~","L-TV/TVM","dvbs",12662,22000,"h",0,0,"P1213:2130:2131","A2131" +"~","BTV","dvbs",12662,22000,"h",0,0,"P1241:2410:2411","A2411" +"CSAT","MULTISPORTS","dvbs2",12669,22000,"v",0,0,"P1800","A" +"ORF","HITRADIO OE3","dvbs",12692,22000,"h",0,0,"P1003:130:131","A131" +"ORF","ORF2E","dvbs",12692,22000,"h",0,0,"P1004:170:505:171","A171" +"~","Service 13015","dvbs",12692,22000,"h",0,0,"P1005:150","A" +"~","Service 13016","dvbs",12692,22000,"h",0,0,"P1006:150","A" +"~","Service 13017","dvbs",12692,22000,"h",0,0,"P1007:150","A" +"~","Folx TV","dvbs",12692,22000,"h",0,0,"P1008:180:181","A181" +"~","RiC","dvbs",12692,22000,"h",0,0,"P1009:190:191","A191" +"GoTV","gotv","dvbs",12692,22000,"h",0,0,"P1021:3020:3021","A3021" diff --git a/octoserve/var/channels/e13e.csv b/octoserve/var/channels/e13e.csv new file mode 100644 index 0000000..54d828f --- /dev/null +++ b/octoserve/var/channels/e13e.csv @@ -0,0 +1,533 @@ +CATEGORY,TITLE,SYSTEM,FREQ,SR,POL,RADIO,ENC,PIDS,TRACKS +"Unknown","Service 4410","dvbs",10719,27500,"v",0,0,"P1010:169:108","A108" +"CYFRA +","4fun.TV","dvbs",10719,27500,"v",0,0,"P1004:163:516:92","A92" +"Arqiva","Islam TV","dvbs",10723,29900,"h",0,0,"P101:1001:1201","A1201" +"Arqiva","Truth TV","dvbs",10723,29900,"h",0,0,"P102:1002:1202","A1202" +"Arqiva","RTPi","dvbs",10723,29900,"h",0,0,"P103:1003:1103:1203","A1203" +"Arqiva","MTA INTL","dvbs",10723,29900,"h",0,0,"P104:1004:1104:1204:1304:1404:1504:1604:1704","A1104:1204:1304:1404:1504:1604:1704" +"Arqiva","Zagros","dvbs",10723,29900,"h",0,0,"P170:1070:1270:1370","A1270:1370" +"Arqiva","RTB Virgilio","dvbs",10723,29900,"h",0,0,"P173:1073:1273","A1273" +"Arqiva","Ariana Afghanistan","dvbs",10723,29900,"h",0,0,"P174:1074:1274","A1274" +"Arqiva","Andisheh TV","dvbs",10723,29900,"h",0,0,"P175:1075:1275","A1275" +"Arqiva","Hope Channel","dvbs",10723,29900,"h",0,0,"P177:1077:1277","A1277" +"Arqiva","IPN TV","dvbs",10723,29900,"h",0,0,"P178:1078:1278","A1278" +"Arqiva","ESTV","dvbs",10723,29900,"h",0,0,"P179:1079:1279","A1279" +"Cyfrowy Polsat S.A.","xxxVOD1","dvbs",10758,27500,"v",0,0,"P32","A" +"Cyfrowy Polsat S.A.","xxxVOD2","dvbs",10758,27500,"v",0,0,"P32","A" +"SkyItalia","Real Time +1","dvbs",10775,29900,"h",0,0,"P271:2516:2517:2518","A2517:2518" +"CYFRA +","POLONIA1","dvbs",10796,27500,"v",0,0,"P1006:165:100","A100" +"CYFRA +","TELE5","dvbs",10796,27500,"v",0,0,"P1005:164:96","A96" +"RRSat","BVN","dvbs",10815,27500,"h",0,0,"P1011:2011:3011","A3011" +"RRSat","Rojhelat","dvbs",10815,27500,"h",0,0,"P1022:2022:3022","A3022" +"RRSat","KURDsat","dvbs",10815,27500,"h",0,0,"P1018:2018:3018:4018","A3018:4018" +"RRSat","HCTV","dvbs",10815,27500,"h",0,0,"P1070:2070:3070","A3070" +"RRSat","Somalisat","dvbs",10815,27500,"h",0,0,"P1072:2072:3072","A3072" +"RRSat","CNL","dvbs",10815,27500,"h",0,0,"P1012:2012:3012","A3012" +"RRSat","MKTV sat","dvbs",10815,27500,"h",0,0,"P1019:2019:3019","A3019" +"RRSat","Nasch TV","dvbs",10815,27500,"h",0,0,"P1014:2014:3014","A3014" +"RRSat","Soyuz TV","dvbs",10815,27500,"h",0,0,"P1013:2013:3013","A3013" +"RRSat","Vozrojdenie.tv","dvbs",10815,27500,"h",0,0,"P1008:2008:3008","A3008" +"RRSat","Fashion TV","dvbs",10815,27500,"h",0,0,"P1015:2015:3015:4015","A3015:4015" +"RRSat","VTV4","dvbs",10815,27500,"h",0,0,"P1021:2021:3021","A3021" +"RRSat","Thai Global Network","dvbs",10815,27500,"h",0,0,"P1020:2020:3020","A3020" +"RRSat","3ABN International","dvbs",10815,27500,"h",0,0,"P1010:2010:3010","A3010" +"RRSat","The Word Network","dvbs",10815,27500,"h",0,0,"P1073:2073:3073","A3073" +"RRSat","Kanal Hayat","dvbs",10815,27500,"h",0,0,"P1076:2076:3076","A3076" +"RRSat","Armenia TV","dvbs",10815,27500,"h",0,0,"P1075:2075:3075","A3075" +"RRSat","TVK","dvbs",10815,27500,"h",0,0,"P1037:2037:3037","A3037" +"SkyItalia","Nuvolari","dvbs",10853,29900,"h",0,0,"P278:3116:3012:3117","A3117" +"SNRT","Al Aoula Inter","dvbs",10873,27500,"v",0,0,"P1024:1026:1027","A1027" +"SNRT","Al Aoula Inter+L","dvbs",10873,27500,"v",0,0,"P33:35:36","A36" +"SNRT","Arriadia","dvbs",10873,27500,"v",0,0,"P2560:2562:2563","A2563" +"SNRT","Arrabiaa","dvbs",10873,27500,"v",0,0,"P44:46:47","A47" +"SNRT","Al Maghribia","dvbs",10873,27500,"v",0,0,"P306:308:309","A309" +"SNRT","Assadissa","dvbs",10873,27500,"v",0,0,"P1536:1537:1538","A1538" +"SNRT","Tamazight","dvbs",10873,27500,"v",0,0,"P3840:3841:3842:3843","A3842:3843" +"Medi1","Medi1TV","dvbs",10873,27500,"v",0,0,"P2048:2050:2049","A2049" +"Cyfrowy Polsat S.A.","STARS.TV","dvbs",10911,27500,"v",0,0,"P32:259:515","A515" +"Cyfrowy Polsat S.A.","TVR HD","dvbs",10911,27500,"v",0,0,"P32:262:518","A518" +"Eutelsat","Eutelsat","dvbs",10911,27500,"v",0,0,"P32","A" +"Cyfrowy Polsat S.A.","TVR HD","dvbs",10911,27500,"v",0,0,"P32:262:518","A518" +"Globecast UK","Noursat","dvbs",10949,27500,"v",0,0,"P5198:5101:5111","A5111" +"Globecast UK","Al Hiwar","dvbs",10949,27500,"v",0,0,"P266:6501:6511","A6511" +"Globecast UK","DMC TV","dvbs",10949,27500,"v",0,0,"P264:6801:6811:6812:6813:6814","A6811:6812:6813:6814" +"Globecast UK","Miracle TV","dvbs",10949,27500,"v",0,0,"P6998:6901:6911","A6911" +"Globecast UK","iLike TV","dvbs",10949,27500,"v",0,0,"P7198:7101:111","A111" +"Globecast UK","Al Forat","dvbs",10949,27500,"v",0,0,"P268:7201:7211","A7211" +"Globecast UK","Al Fady","dvbs",10949,27500,"v",0,0,"P7398:7301:7311","A7311" +"Globecast UK","Sat 7 Pars","dvbs",10949,27500,"v",0,0,"P7898:7801:7811","A7811" +"Globecast UK","Velayat TV","dvbs",10949,27500,"v",0,0,"P7998:7901:7911","A7911" +"Globecast UK","Karbala Satellite Channel","dvbs",10949,27500,"v",0,0,"P6398:6301:6311:6312","A6311:6312" +"Globecast UK","Al Maaref","dvbs",10949,27500,"v",0,0,"P6698:6601:6611","A6611" +"Globecast UK","Ahl E Bait","dvbs",10949,27500,"v",0,0,"P6298:6201:6211","A6211" +"RAI","Rai 1","dvbs",10992,27500,"v",0,0,"P1104:512:576:650:694","A650:694" +"RAI","Rai 2","dvbs",10992,27500,"v",0,0,"P1105:513:577:651:695:696","A651:695:696" +"RAI","Rai 3","dvbs",10992,27500,"v",0,0,"P1106:514:578:652:697","A652:697" +"RAI","Rai News","dvbs",10992,27500,"v",0,0,"P1107:520:690","A690" +"Telespazio","Test_Enc 01","dvbs",11013,27500,"h",0,0,"P100:101:102","A102" +"Telespazio","Test_Enc 02","dvbs",11013,27500,"h",0,0,"P110:111:112","A112" +"Telespazio","Test_Enc 03","dvbs",11013,27500,"h",0,0,"P120:121:122","A122" +"Telespazio","Test_Enc 04","dvbs",11013,27500,"h",0,0,"P130:131:132","A132" +"GlobeCast","TV CORAN","dvbs",11034,27500,"v",0,0,"P100:120:130","A130" +"GlobeCast","TV TAMAZIGHT","dvbs",11034,27500,"v",0,0,"P200:220:230","A230" +"GlobeCast","Jewish News One","dvbs",11034,27500,"v",0,0,"P300:320:330:331:332:333:335:334:336:337","A330:331:332:333:335:334:336:337" +"GlobeCast","Shanson TV","dvbs",11034,27500,"v",0,0,"P400:420:430","A430" +"GlobeCast","2M Maroc","dvbs",11034,27500,"v",0,0,"P500:520:530","A530" +"GlobeCast","CCTV-News","dvbs",11034,27500,"v",0,0,"P600:620:630","A630" +"GlobeCast","Ganj E Hozour","dvbs",11034,27500,"v",0,0,"P1700:1720:1730","A1730" +"GlobeCast","RTR","dvbs",11034,27500,"v",0,0,"P800:820:830","A830" +"GlobeCast","Rossiya 24","dvbs",11034,27500,"v",0,0,"P1000:1020:1030","A1030" +"GlobeCast","TRT Turk","dvbs",11034,27500,"v",0,0,"P1200:1220:1240:1230","A1230" +"GlobeCast","Al Jazeera Intl","dvbs",11034,27500,"v",0,0,"P1400:1420:1430","A1430" +"GlobeCast","SHANT TV","dvbs",11034,27500,"v",0,0,"P700:720:710:730","A730" +"MEDIA BROADCAST","RTL 2 CH","dvbs",11054,27500,"h",0,0,"P400:410:440:420","A420" +"MEDIA BROADCAST","ZDF","dvbs",11054,27500,"h",0,0,"P1033:570:572:571","A571" +"MEDIA BROADCAST","nex1","dvbs",11054,27500,"h",0,0,"P2000:2010:2020","A2020" +"MEDIA BROADCAST","Persian Star 2","dvbs",11054,27500,"h",0,0,"P2100:2110:2120","A2120" +"MEDIA BROADCAST","MI-TV","dvbs",11054,27500,"h",0,0,"P56:57:58","A58" +"MEDIA BROADCAST","Al Beladi TV","dvbs",11054,27500,"h",0,0,"P2700:2710:2720","A2720" +"MEDIA BROADCAST","IRAN-FMTV","dvbs",11054,27500,"h",0,0,"P3000:3010:3020","A3020" +"MEDIA BROADCAST","MB SmartCast Test 2","dvbs",11054,27500,"h",0,0,"P3100:3110:3120","A3120" +"MEDIA BROADCAST","TMTV","dvbs",11054,27500,"h",0,0,"P3200:3210:3220","A3220" +"MEDIA BROADCAST","IRAN-MNTV","dvbs",11054,27500,"h",0,0,"P3500:3510:3520","A3520" +"MEDIA BROADCAST","Iran Music","dvbs",11054,27500,"h",0,0,"P3600:3610:3620","A3620" +"MEDIA BROADCAST","MB SmartCast Test 1","dvbs",11054,27500,"h",0,0,"P3900:3910:3920","A3920" +"MEDIA BROADCAST","4","dvbs",11054,27500,"h",0,0,"P4400:4410:4420","A4420" +"MEDIA BROADCAST","Persian Star 1","dvbs",11054,27500,"h",0,0,"P4900:4910:4920","A4920" +"Globecast UK","R1","dvbs",11117,27500,"v",0,0,"P6698:6601:6611","A6611" +"GlobeCast UK","Loveworld","dvbs",11117,27500,"v",0,0,"P6598:6501:6511","A6511" +"GlobeCast UK","CNBC PE Hot","dvbs",11117,27500,"v",0,0,"P6998:6901:6999:6911","A6911" +"Arqiva","Bloomberg European TV","dvbs",11137,27500,"h",0,0,"P265:3502:3582:3622","A3622" +"Arqiva","ITN","dvbs",11137,27500,"h",0,0,"P263:3503:3623","A3623" +"Arqiva","TV5MONDE FBS","dvbs",11137,27500,"h",0,0,"P717:3521:3601:3641","A3641" +"Arqiva","TV5MONDE EUROPE","dvbs",11137,27500,"h",0,0,"P719:3522:3602:3642","A3642" +"Arqiva","Kurdistan TV","dvbs",11137,27500,"h",0,0,"P258:3526:3646","A3646" +"Arqiva","NHK World","dvbs",11137,27500,"h",0,0,"P259:3527:3647","A3647" +"Arqiva","GEM TV","dvbs",11137,27500,"h",0,0,"P33:3533:3653","A3653" +"Arqiva","AB Channel","dvbs",11137,27500,"h",0,0,"P274:3534:3614:3654","A3654" +"Arqiva","SRI TV","dvbs",11137,27500,"h",0,0,"P275:3535:3655","A3655" +"Arqiva","Fadak TV","dvbs",11137,27500,"h",0,0,"P281:3541:3661","A3661" +"Arqiva","Wesal TV","dvbs",11137,27500,"h",0,0,"P282:3542:3662","A3662" +"Ariva","Gioielli per Tutti","dvbs",11137,27500,"h",0,0,"P283:3543:3663","A3663" +"Arqiva","IRAN B MARZ","dvbs",11137,27500,"h",0,0,"P285:3545:3665","A3665" +"Telespazio","Al Malakoot","dvbs",11179,27500,"h",0,0,"P1051:161:162","A162" +"Telespazio","Al Karma TV-ME","dvbs",11179,27500,"h",0,0,"P1052:640:625","A625" +"Harmonic","Channel One Tv","dvbs",11179,27500,"h",0,0,"P165:166:167","A167" +"Telespazio","TELEPADREPIO","dvbs",11179,27500,"h",0,0,"P1070:650:651","A651" +"Telespazio","Informazione TV","dvbs",11179,27500,"h",0,0,"P1015:620:621","A621" +"Telespazio","Made in Italy 1","dvbs",11179,27500,"h",0,0,"P1016:1490:1491","A1491" +"Telespazio","GBR","dvbs",11179,27500,"h",0,0,"P1049:710:711","A711" +"Telespazio","CTV AP","dvbs",11179,27500,"h",0,0,"P1551:554:564","A564" +"Telespazio","STERK TV","dvbs",11179,27500,"h",0,0,"P1724:821:822","A822" +"Telespazio","TRSP","dvbs",11179,27500,"h",0,0,"P1053:630:631","A631" +"Telespazio","Telemarket","dvbs",11179,27500,"h",0,0,"P1055:770:771","A771" +"Telespazio","ERDE UND MENSCH","dvbs",11179,27500,"h",0,0,"P1056:780:781","A781" +"Harmonic","Made in Italy","dvbs",11179,27500,"h",0,0,"P1057:1490:1491","A1491" +"Telespazio","Kanal Hayat","dvbs",11179,27500,"h",0,0,"P1089:530:531","A531" +"Telespazio","Payam-E-Afghan","dvbs",11179,27500,"h",0,0,"P1081:540:541","A541" +"Harmonic","RTA","dvbs",11179,27500,"h",0,0,"P1083:560:561","A561" +"Telespazio","Armenia TV","dvbs",11179,27500,"h",0,0,"P1084:570:571","A571" +"Telespazio","ACM Channel","dvbs",11179,27500,"h",0,0,"P1085:340:341","A341" +"Telespazio","Marjaeyat","dvbs",11179,27500,"h",0,0,"P1063:580:581","A581" +"Telespazio","Kentron Tv","dvbs",11179,27500,"h",0,0,"P1065:2018:3018","A3018" +"Telespazio","Khatereh","dvbs",11179,27500,"h",0,0,"P1041:512:612","A612" +"Telespazio","Ronahi TV","dvbs",11179,27500,"h",0,0,"P1725:725:726","A726" +"Telespazio","Daring tv! 133","dvbs",11179,27500,"h",0,0,"P1761","A" +"RRSat","Pro TV International","dvbs",11200,27500,"v",0,0,"P1001:2001:3001","A3001" +"RRSat","AL FAYHAA","dvbs",11200,27500,"v",0,0,"P270:271:272","A272" +"RRSat","Mohabat","dvbs",11200,27500,"v",0,0,"P372:370:371","A371" +"RRSat","CGN","dvbs",11200,27500,"v",0,0,"P1004:2004:3004","A3004" +"RRSat","Gali Kurdistan TV","dvbs",11200,27500,"v",0,0,"P1005:2005:3005:4005","A3005:4005" +"RRSat","MTA International","dvbs",11200,27500,"v",0,0,"P2560:366:367","A367" +"RRSat","Dieu TV","dvbs",11200,27500,"v",0,0,"P542:540:541","A541" +"RRSat","CBC TV","dvbs",11200,27500,"v",0,0,"P1008:2008:3008","A3008" +"RRSat","AZTV","dvbs",11200,27500,"v",0,0,"P1009:2009:3009","A3009" +"RRSat","SonLife Broadcasting Network","dvbs",11200,27500,"v",0,0,"P1015:2015:3015","A3015" +"RRSat","Eurotic TV","dvbs",11200,27500,"v",0,0,"P411:412:413","A413" +"RRSat","Belarus TV","dvbs",11200,27500,"v",0,0,"P1022:2022:3022","A3022" +"RRSat","Movie1","dvbs",11200,27500,"v",0,0,"P1026:2026:3026","A3026" +"RRSat","Altarek - The Way TV","dvbs",11200,27500,"v",0,0,"P1050:2050:3050","A3050" +"RRsat","Somaliland National TV","dvbs",11200,27500,"v",0,0,"P1055:2055:3055","A3055" +"RRSat","Suryoyo Sat","dvbs",11200,27500,"v",0,0,"P1060:2060:3060","A3060" +"RRSat","GUNAZ TV","dvbs",11200,27500,"v",0,0,"P1063:2063:3063","A3063" +"RRSat","Rainbow","dvbs",11200,27500,"v",0,0,"P1066:2066:3066","A3066" +"RRSat","negah e shoma","dvbs",11200,27500,"v",0,0,"P1067:2067:3067","A3067" +"RRSat","PNTV","dvbs",11200,27500,"v",0,0,"P1068:2068:3068","A3068" +"RRSat","World Fashion Channel","dvbs",11200,27500,"v",0,0,"P1069:2069:3069","A3069" +"TandbergTV","Cancao Nova","dvbs",11240,27500,"v",0,0,"P1050:720:721","A721" +"Eutelsat","France 24","dvbs",11240,27500,"v",0,0,"P244:245:246","A246" +"Eutelsat","France 24","dvbs",11240,27500,"v",0,0,"P247:248:249","A249" +"Eutelsat","A3","dvbs",11240,27500,"v",0,0,"P3940:3941:3942","A3942" +"Unknown","Canal Algerie","dvbs",11240,27500,"v",0,0,"P3950:3951:3952","A3952" +"Al Jazeera","JSC Sports Global","dvbs",11296,27500,"h",0,0,"P252:6302:6303:6305","A6303:6305" +"Arqiva","T.TV","dvbs",11317,27500,"v",0,0,"P124:1024:1224","A1224" +"Arqiva","Marjaeyat","dvbs",11317,27500,"v",0,0,"P125:1025:1225","A1225" +"Arqiva","AVA MOVIE","dvbs",11317,27500,"v",0,0,"P126:1026:1226","A1226" +"Arqiva","Rudaw","dvbs",11317,27500,"v",0,0,"P127:1027:1227:1327","A1227:1327" +"Arqiva","Russia Today","dvbs",11317,27500,"v",0,0,"P129:1029:1229","A1229" +"Arqiva","Imam Hussein 3","dvbs",11317,27500,"v",0,0,"P130:1030:1230","A1230" +"Arqiva","Russia Al-Yaum","dvbs",11317,27500,"v",0,0,"P132:1032:1232","A1232" +"Arqiva","Perspolis TV","dvbs",11317,27500,"v",0,0,"P33:1033:1233","A1233" +"Arqiva","Ghasedak TV","dvbs",11317,27500,"v",0,0,"P135:1035:1235","A1235" +"Arqiva","Tik TV","dvbs",11317,27500,"v",0,0,"P136:1036:1236","A1236" +"Unknown","Imam Hussein TV","dvbs",11317,27500,"v",0,0,"P137:1037:1237","A1237" +"Arqiva","Baqi TV","dvbs",11317,27500,"v",0,0,"P138:1038:1238","A1238" +"Arqiva","Al-Hayat","dvbs",11317,27500,"v",0,0,"P139:1039:1239","A1239" +"Arqiva","Manoto 1","dvbs",11317,27500,"v",0,0,"P150:1050:1250","A1250" +"Harmonic","Pars TV","dvbs",11317,27500,"v",0,0,"P160:1060:1260","A1260" +"Arqiva","Elite Shopping","dvbs",11317,27500,"v",0,0,"P170:1070:1270","A1270" +"Arqiva","Liguria TV","dvbs",11317,27500,"v",0,0,"P171:1071:1271","A1271" +"Arqiva","ASO SAT","dvbs",11317,27500,"v",0,0,"P172:1072:1272","A1272" +"Arqiva","Dance TV","dvbs",11317,27500,"v",0,0,"P173:1073:1273","A1273" +"Arqiva","Roma Sat","dvbs",11317,27500,"v",0,0,"P174:1073:1273","A1273" +"Arqiva","Mondo Shop","dvbs",11317,27500,"v",0,0,"P175:1073:1273","A1273" +"Arqiva","Mare TV","dvbs",11317,27500,"v",0,0,"P176:1073:1273","A1273" +"Arqiva","Dipre Art Channel","dvbs",11317,27500,"v",0,0,"P177:1073:1273","A1273" +"Arqiva","Il Sole","dvbs",11317,27500,"v",0,0,"P191","A" +"ARQIVA","Service-1 HD","dvbs",11334,27500,"h",0,0,"P301:1001:1002","A1002" +"TVN","Eska TV","dvbs",11393,27500,"v",0,0,"P264:516:690","A690" +"TVN","Mango 24","dvbs",11393,27500,"v",0,0,"P265:517:581:700","A700" +"ITI","MANGO 24_","dvbs",11393,27500,"v",0,0,"P288:517:581:700","A700" +"TVN","Upload","dvbs",11393,27500,"v",0,0,"P257","A" +"Satlink","VENETO LINK","dvbs",11471,27500,"v",0,0,"P43:851:852","A852" +"Satlink","Dunamis TV","dvbs",11471,27500,"v",0,0,"P150:151:152","A152" +"Satlink","FUEGO TV","dvbs",11471,27500,"v",0,0,"P1663:1661:1662","A1662" +"Satlink","RETECONOMY","dvbs",11471,27500,"v",0,0,"P49:1801:71","A71" +"Satlink","TELECOLORE","dvbs",11471,27500,"v",0,0,"P70:1811:1812","A1812" +"Satlink","Somali Channel","dvbs",11471,27500,"v",0,0,"P272:273:276","A276" +"Satlink","LA NUOVA TV","dvbs",11471,27500,"v",0,0,"P2180:851:852","A852" +"Harmonic","BLU LIVE","dvbs",11471,27500,"v",0,0,"P44:851:852","A852" +"Satlink","LINK TP 14","dvbs",11471,27500,"v",0,0,"P1650:851:852","A852" +"Satlink","BLU","dvbs",11471,27500,"v",0,0,"P850:851:852","A852" +"Satlink","DIRETTA TV","dvbs",11471,27500,"v",0,0,"P1870:1861:1862","A1862" +"Satlink","Napoli Mia","dvbs",11471,27500,"v",0,0,"P63:520:521","A521" +"Satlink","BLU SHOP","dvbs",11471,27500,"v",0,0,"P1640:851:852","A852" +"Satlink","TELENOVA","dvbs",11471,27500,"v",0,0,"P75:1841:1842","A1842" +"Satlink","I24 News English","dvbs",11471,27500,"v",0,0,"P2040:2041:2042","A2042" +"Satlink","SARSAT TV","dvbs",11471,27500,"v",0,0,"P2158:2143:2142","A2142" +"Satlink","SILVER TV","dvbs",11471,27500,"v",0,0,"P48:1661:1662","A1662" +"Satlink","ONE","dvbs",11471,27500,"v",0,0,"P1755:1756:1757","A1757" +"Satlink","JUSTICE TV","dvbs",11471,27500,"v",0,0,"P243:851:852","A852" +"Satlink","JUST ONE","dvbs",11471,27500,"v",0,0,"P1865:1756:1757","A1757" +"Satlink","Kalsan TV","dvbs",11471,27500,"v",0,0,"P400:401:402","A402" +"Satlink","CIAO SKY 899","dvbs",11471,27500,"v",0,0,"P1860:1861:1862","A1862" +"Satlink","LA9","dvbs",11471,27500,"v",0,0,"P2160:2161:2162","A2162" +"Satlink","FISHING TV","dvbs",11471,27500,"v",0,0,"P50:1745:1746","A1746" +"Satlink","EURSAT","dvbs",11471,27500,"v",0,0,"P1649:1661:1662","A1662" +"Satlink","TVA VICENZA","dvbs",11471,27500,"v",0,0,"P2170:2171:2172","A2172" +"Satlink","SUPERFLUO","dvbs",11471,27500,"v",0,0,"P1710:1861:1862","A1862" +"Satlink","STAR TV","dvbs",11471,27500,"v",0,0,"P140:141:142","A142" +"Satlink","NEW ONE","dvbs",11471,27500,"v",0,0,"P1730:1756:1757","A1757" +"Satlink","I24 News Arabic","dvbs",11471,27500,"v",0,0,"P2050:2051:2052","A2052" +"Satlink","VENUS TV","dvbs",11471,27500,"v",0,0,"P1648:1661:1662","A1662" +"Satlink","SUPER","dvbs",11471,27500,"v",0,0,"P2010:1861:1862","A1862" +"Satlink","ETV","dvbs",11471,27500,"v",0,0,"P130:131:132","A132" +"Satlink","Royal Somali TV","dvbs",11471,27500,"v",0,0,"P83:82:37","A37" +"Satlink","LAZIO CHANNEL","dvbs",11471,27500,"v",0,0,"P73:1661:1662","A1662" +"Satlink","CHAT","dvbs",11471,27500,"v",0,0,"P1800:1861:1862","A1862" +"Satlink","PIU TV","dvbs",11471,27500,"v",0,0,"P1910:1861:1862","A1862" +"Satlink","RETE ASTE","dvbs",11471,27500,"v",0,0,"P72:1831:1832","A1832" +"Satlink","LINK","dvbs",11471,27500,"v",0,0,"P2150:2151:2152","A2152" +"nc+","TV POLONIA","dvbs",11488,27500,"h",0,0,"P1001:160:500:80","A80" +"nc+","TV PULS","dvbs",11488,27500,"h",0,0,"P1042:171:512:124:125","A124:125" +"nc+","TVP Kultura","dvbs",11488,27500,"h",0,0,"P1043:172:513:128","A128" +"nc+","TVS","dvbs",11488,27500,"h",0,0,"P1002:161:508:84","A84" +"nc+","TVP Kultura","dvbs",11488,27500,"h",0,0,"P1013:172:513:128","A128" +"nc+","TV PULS","dvbs",11488,27500,"h",0,0,"P1012:171:512:124:125","A124:125" +"M-Three satcom","QVC","dvbs",11541,22000,"v",0,0,"P102:183:182","A182" +"M-Three satcom","EMPTY SERVICE","dvbs",11541,22000,"v",0,0,"P257","A" +"M-Three satcom","POLO TV","dvbs",11541,22000,"v",0,0,"P3623:6230:6231","A6231" +"M-Three satcom","POLO TV-1","dvbs",11541,22000,"v",0,0,"P3615:6230:6231","A6231" +"M-Three satcom","Romauno","dvbs",11541,22000,"v",0,0,"P3628:6280:6281","A6281" +"M-Three satcom","DAS ERSTE","dvbs",11541,22000,"v",0,0,"P3622:300:302:301","A301" +"TIMB","LA7ondemand","dvbs",11541,22000,"v",0,0,"P363","A" +"TIMB","CUBOVISION","dvbs",11541,22000,"v",0,0,"P3602","A" +"TIMB","HSE24","dvbs",11541,22000,"v",0,0,"P280:6250:6251","A6251" +"TIMB","DMAX","dvbs",11541,22000,"v",0,0,"P250:6270:6272:6271","A6271" +"RRSat","Wesal Haq","dvbs",11566,27500,"h",0,0,"P1014:2014:3014","A3014" +"OVERON","TBN Europe","dvbs",11566,27500,"h",0,0,"P1801:8001:8101","A8101" +"OVERON","TBN ITALIA","dvbs",11566,27500,"h",0,0,"P1803:8103:8003","A8003" +"OVERON","Church Channel","dvbs",11566,27500,"h",0,0,"P1804:8004:8104","A8104" +"OVERON","JCTV","dvbs",11566,27500,"h",0,0,"P1805:8005:8105","A8105" +"Unnamed","EL SHAFAA","dvbs",11566,27500,"h",0,0,"P1806:8006:8106","A8106" +"Overon","TBN Russia","dvbs",11566,27500,"h",0,0,"P1807:8007:8107","A8107" +"OVERON","Smile of a Child","dvbs",11566,27500,"h",0,0,"P1808:8008:8108","A8108" +"TBNFARSI","NEJAT TV","dvbs",11566,27500,"h",0,0,"P1809:8009:8109","A8109" +"Scopus","Pars TV","dvbs",11566,27500,"h",0,0,"P1810:8010:8110","A8110" +"Unknown","Service 811","dvbs",11566,27500,"h",0,0,"P1811:8011:8111","A8111" +"Overon","ChildRussia","dvbs",11566,27500,"h",0,0,"P1813:8013:8113","A8113" +"RRSat","NOOR TV","dvbs",11566,27500,"h",0,0,"P1815:8015:8115","A8115" +"RRSat","Shabakeh7","dvbs",11566,27500,"h",0,0,"P1817:8017:8117","A8117" +"RRSat","UNIVERSAL SOMALI TV","dvbs",11566,27500,"h",0,0,"P1821:8021:8121","A8121" +"RRSAT","Orient","dvbs",11566,27500,"h",0,0,"P1822:8022:8122","A8122" +"PITCOMM","IRAN E ARYAEE TV","dvbs",11566,27500,"h",0,0,"P1823:8023:8123","A8123" +"GlobeCast","Ahl Al Bhait","dvbs",11585,27500,"v",0,0,"P6126:1323:1333","A1333" +"GlobeCast","1+1 International","dvbs",11585,27500,"v",0,0,"P6125:1322:1332","A1332" +"GlobeCast","News 7","dvbs",11585,27500,"v",0,0,"P1227:1527:1528","A1528" +"GlobeCast","DAYSTAR TV","dvbs",11585,27500,"v",0,0,"P1204:1234:1244","A1244" +"GlobeCast",".Viva L'Italia Channel","dvbs",11585,27500,"v",0,0,"P516:1336:1346","A1346" +"GlobeCast","MADE IN ITALY","dvbs",11585,27500,"v",0,0,"P516:1336:1346","A1346" +"GlobeCast","KICC TV","dvbs",11585,27500,"v",0,0,"P601:1481:1482","A1482" +"GlobeCast","Ariana TV","dvbs",11585,27500,"v",0,0,"P506:1361:1362","A1362" +"GlobeCast","TISHK TV","dvbs",11585,27500,"v",0,0,"P1214:1414:1514","A1514" +"GlobeCast","EWTN UK","dvbs",11585,27500,"v",0,0,"P5008:1441:1442","A1442" +"TandbergTV","RBL.TV","dvbs",11585,27500,"v",0,0,"P1211:1411:1511","A1511" +"GLOBECAST","SAFO TV","dvbs",11585,27500,"v",0,0,"P","A" +"GlobeCast","Loveworld TV","dvbs",11585,27500,"v",0,0,"P","A" +"GlobeCast","TV9","dvbs",11585,27500,"v",0,0,"P","A" +"GlobeCast","!FunSpice","dvbs",11585,27500,"v",0,0,"P","A" +"MEDIA BROADCAST","MB SmartCast Test 9","dvbs",11604,27500,"h",0,0,"P500:3910:3920","A3920" +"MEDIA BROADCAST","DW Europe","dvbs",11604,27500,"h",0,0,"P700:1000:1003:1001","A1001" +"MEDIA BROADCAST","Arab-Girls.TV","dvbs",11604,27500,"h",0,0,"P1100:1110:1075:1120","A1120" +"MEDIA BROADCAST","4play games","dvbs",11604,27500,"h",0,0,"P1200:2410:1075:1220","A1220" +"MEDIA BROADCAST","arab-69.tv","dvbs",11604,27500,"h",0,0,"P1400:1075:1076","A1076" +"MEDIA BROADCAST","' ' Hot Arab Sex","dvbs",11604,27500,"h",0,0,"P1600:1080:1075:1081","A1081" +"MEDIA BROADCAST","121 Chat","dvbs",11604,27500,"h",0,0,"P1700:1086:1075:1087","A1087" +"MEDIA BROADCAST","Arab-Jins","dvbs",11604,27500,"h",0,0,"P1800:1090:1075:1091","A1091" +"MEDIA BROADCAST","Love TV","dvbs",11604,27500,"h",0,0,"P1810:1093:1075:1094","A1094" +"MEDIA BROADCAST","Lebnaniat TV.","dvbs",11604,27500,"h",0,0,"P1820:1097:1075:1098","A1098" +"MEDIA BROADCAST","Arab XXX","dvbs",11604,27500,"h",0,0,"P1900:1075:1920","A1920" +"MEDIA BROADCAST","7armanat Nar","dvbs",11604,27500,"h",0,0,"P2000:51:1075:52","A52" +"MEDIA BROADCAST","India Girls","dvbs",11604,27500,"h",0,0,"P2100:1080:1075:54","A54" +"MEDIA BROADCAST","+18 Love Girls","dvbs",11604,27500,"h",0,0,"P2200:1097:1075:2220","A2220" +"MEDIA BROADCAST","Sexy love girls","dvbs",11604,27500,"h",0,0,"P2300:2310:1075:2320","A2320" +"MEDIA BROADCAST",".arab babes","dvbs",11604,27500,"h",0,0,"P2400:2410:1075:2420","A2420" +"MEDIA BROADCAST","MB SmartCast Test 2","dvbs",11604,27500,"h",0,0,"P2500:3910:3920","A3920" +"MEDIA BROADCAST","MB SmartCast Test 8","dvbs",11604,27500,"h",0,0,"P2700:3910:3920","A3920" +"MEDIA BROADCAST","LOMBARDIA SAT","dvbs",11604,27500,"h",0,0,"P2800:2810:2820","A2820" +"MEDIA BROADCAST","KLIKSAT.farhad","dvbs",11604,27500,"h",0,0,"P2900:2910:2920","A2920" +"MEDIA BROADCAST","MB SmartCast Test 12","dvbs",11604,27500,"h",0,0,"P3200:3910:3920","A3920" +"MEDIA BROADCAST","MB SmartCast Test 14","dvbs",11604,27500,"h",0,0,"P3000:3910:3920","A3920" +"MEDIA BROADCAST","MB SmartCast Test 15","dvbs",11604,27500,"h",0,0,"P3600:3910:3920","A3920" +"MEDIA BROADCAST","TVRUS","dvbs",11604,27500,"h",0,0,"P3700:3710:3720","A3720" +"MEDIA BROADCAST","Juwelo","dvbs",11604,27500,"h",0,0,"P3800:3810:3820","A3820" +"MEDIA BROADCAST","MB SmartCast Test 1","dvbs",11604,27500,"h",0,0,"P3900:3910:3920","A3920" +"MEDIA BROADCAST","MB SmartCast Test 3","dvbs",11604,27500,"h",0,0,"P4200:3910:3920","A3920" +"MEDIA BROADCAST","MB SmartCast Test 4","dvbs",11604,27500,"h",0,0,"P4300:3910:3920","A3920" +"MEDIA BROADCAST","MB SmartCast Test 7","dvbs",11604,27500,"h",0,0,"P4500:3910:3920","A3920" +"MEDIA BROADCAST","MB SmartCast Test 5","dvbs",11604,27500,"h",0,0,"P4700:3910:3920","A3920" +"MEDIA BROADCAST","MB SmartCast Test 6","dvbs",11604,27500,"h",0,0,"P4800:3910:3920","A3920" +"MEDIA BROADCAST","MB SmartCast Test 16","dvbs",11604,27500,"h",0,0,"P5100:3910:3920","A3920" +"MEDIA BROADCAST","Persian Movie","dvbs",11604,27500,"h",0,0,"P6000:6010:6020","A6020" +"MEDIA BROADCAST","MB SmartCast Test 13","dvbs",11604,27500,"h",0,0,"P6200:3910:3920","A3920" +"MEDIA BROADCAST","MB SmartCast Test 10","dvbs",11604,27500,"h",0,0,"P6400:3910:3920","A3920" +"MEDIA BROADCAST","MB SmartCast Test 11","dvbs",11604,27500,"h",0,0,"P6500:3910:3920","A3920" +"MEDIA BROADCAST","IPN TV","dvbs",11604,27500,"h",0,0,"P","A" +"GLOBECAST","Pianeta TV","dvbs",11623,27500,"v",0,0,"P201:221:1024:241","A241" +"GlobeCast","MEDIATEXT.IT","dvbs",11623,27500,"v",0,0,"P202:222:242","A242" +"Unknown","ARTE","dvbs",11623,27500,"v",0,0,"P203:223:283:233:243:263:273","A233:243:263:273" +"GlobeCast","RTL 102.5 TV","dvbs",11623,27500,"v",0,0,"P203:224:244","A244" +"GlobeCast","Telepiù Channel","dvbs",11623,27500,"v",0,0,"P202:222:242","A242" +"GlobeCast","ITALIA_CHANNEL","dvbs",11623,27500,"v",0,0,"P206:226:246","A246" +"Unknown","TV_ROMANIA","dvbs",11623,27500,"v",0,0,"P207:227:287:247","A247" +"GlobeCast","Carisma_TV","dvbs",11623,27500,"v",0,0,"P4217:221:1024:241","A241" +"GlobeCast","ARTE OGGI TV","dvbs",11623,27500,"v",0,0,"P202:222:242","A242" +"GlobeCast","El Chourouk","dvbs",11623,27500,"v",0,0,"P210:230:250","A250" +"GlobeCast","Al Atlas","dvbs",11623,27500,"v",0,0,"P211:231:251","A251" +"Unknown","Arirang World","dvbs",11623,27500,"v",0,0,"P205:225:245","A245" +"GlobeCast","NESSMA MAGHREB MOYEN ORIENT","dvbs",11623,27500,"v",0,0,"P208:228:248","A248" +"GlobeCast","ETV Emilia R.","dvbs",11623,27500,"v",0,0,"P1202:221:241","A241" +"Unknown","ARTE","dvbs",11623,27500,"v",0,0,"P1203:223:283:233:243:263:273","A233:243:263:273" +"GlobeCast","RTG TV","dvbs",11623,27500,"v",0,0,"P335:235:2135:2137:2138","A2135:2137:2138" +"GlobeCast","METROSAT","dvbs",11623,27500,"v",0,0,"P738:221:241","A241" +"GlobeCast","Mediterraneo Sat","dvbs",11623,27500,"v",0,0,"P706:226:246","A246" +"GlobeCast","QUORE TV","dvbs",11623,27500,"v",0,0,"P747:226:246","A246" +"GlobeCast","Reality TV","dvbs",11623,27500,"v",0,0,"P748:221:1024:241","A241" +"BSS","KOMALA TV","dvbs",11642,27500,"h",0,0,"P1030:1031:1032","A1032" +"Unknown","AAA SPORT","dvbs",11642,27500,"h",0,0,"P1040:561:562","A562" +"BSS","Face 1","dvbs",11642,27500,"h",0,0,"P1050:1051:1052","A1052" +"BSS","AAA Family","dvbs",11642,27500,"h",0,0,"P560:561:562","A562" +"BSS","AAA Music","dvbs",11642,27500,"h",0,0,"P1070:1071:1072","A1072" +"BSS","KALEMEH FARSI","dvbs",11642,27500,"h",0,0,"P1200:1201:1202","A1202" +"BSS","Al Magharibia","dvbs",11642,27500,"h",0,0,"P1250:1251:1252","A1252" +"BSS","TV DISCO","dvbs",11642,27500,"h",0,0,"P1260:1261:1262","A1262" +"BSS","!mwala3a 3lik","dvbs",11642,27500,"h",0,0,"P1270:1271:1272","A1272" +"BSS","Anta 7iate","dvbs",11642,27500,"h",0,0,"P1280:1281:1282","A1282" +"BSS","Iran Fun","dvbs",11642,27500,"h",0,0,"P1290:1291:1292","A1292" +"BSS","Music Box Russia","dvbs",11642,27500,"h",0,0,"P1300:1301:1302","A1302" +"BSS","GOD TV","dvbs",11642,27500,"h",0,0,"P34:1321:1322","A1322" +"BSS","nar elhob","dvbs",11642,27500,"h",0,0,"P1340:1271:1272","A1272" +"BSS","lo3b whob","dvbs",11642,27500,"h",0,0,"P1360:1281:1282","A1282" +"BSS","GDG Channel","dvbs",11642,27500,"h",0,0,"P1430:1431:1432","A1432" +"Unknown","Wedding TV","dvbs",11642,27500,"h",0,0,"P1440:1441:1442","A1442" +"Unknown","Kurd Channel","dvbs",11642,27500,"h",0,0,"P1450:1451:1452","A1452" +"BSS","Hope Channel","dvbs",11642,27500,"h",0,0,"P1470:1471:1472:1473","A1472:1473" +"BSS","RVS Italy","dvbs",11642,27500,"h",0,0,"P1610:1471:1473","A1473" +"BSS","VENETO LINK","dvbs",11642,27500,"h",0,0,"P1620:1621:1622","A1622" +"BSS","ARTE CHIC","dvbs",11642,27500,"h",0,0,"P1630:1621:1622","A1622" +"BSS","SNTV","dvbs",11642,27500,"h",0,0,"P1700:1701:1702","A1702" +"Telespazio","Punto Sat","dvbs",11662,27500,"v",0,0,"P1695:334:335","A335" +"Telespazio","Challenger","dvbs",11662,27500,"v",0,0,"P1912:490:491:493","A491:493" +"Telespazio","Challenger","dvbs",11662,27500,"v",0,0,"P1913:490:491","A491" +"Telespazio","Informazione TV","dvbs",11662,27500,"v",0,0,"P1738:600:601","A601" +"Telespazio","Redlight 3D-HD!","dvbs",11662,27500,"v",0,0,"P611","A" +"Telespazio","Hustler 3D-HD!","dvbs",11662,27500,"v",0,0,"P612","A" +"Telespazio","TV Luna","dvbs",11662,27500,"v",0,0,"P1651","A" +"Telespazio","Sirio TV","dvbs",11662,27500,"v",0,0,"P1960:1920:1921","A1921" +"Telespazio","Sirio TV","dvbs",11662,27500,"v",0,0,"P1967:1920:1921","A1921" +"Telespazio","Sirio TV","dvbs",11662,27500,"v",0,0,"P1968:1920:1921","A1921" +"Telespazio","Sirio TV","dvbs",11662,27500,"v",0,0,"P1969:1920:1921","A1921" +"Telespazio","Tivu Tivu","dvbs",11662,27500,"v",0,0,"P1970:380:381","A381" +"Harmonic","Tivu Tivu","dvbs",11662,27500,"v",0,0,"P1971:380:381","A381" +"Harmonic","Tivu Tivu","dvbs",11662,27500,"v",0,0,"P1972:380:381","A381" +"Telespazio","Tivu Tivu","dvbs",11662,27500,"v",0,0,"P1973:380:381","A381" +"Telespazio","Tivu Tivu","dvbs",11662,27500,"v",0,0,"P1974:380:381","A381" +"Harmonic","Tivu Tivu","dvbs",11662,27500,"v",0,0,"P1975:380:381","A381" +"Telespazio","Tivu Tivu","dvbs",11662,27500,"v",0,0,"P1976:380:381","A381" +"Telespazio","Tivu Tivu","dvbs",11662,27500,"v",0,0,"P1977:380:381","A381" +"Telespazio","Tivu Tivu","dvbs",11662,27500,"v",0,0,"P1978:380:381","A381" +"Telespazio","Tivu Tivu","dvbs",11662,27500,"v",0,0,"P1979:380:381","A381" +"Eutelsat","Arte HD","dvbs",11681,27500,"h",0,0,"P570:571:572:573:574:577","A572:573:574:577" +"Telefonica Spain","TVE Internacional","dvbs",11727,27500,"v",0,0,"P33:2911:2913:2912:2915","A2912:2915" +"Telefonica Spain","Canal 24 Horas","dvbs",11727,27500,"v",0,0,"P34:3569:3571:3570:3573","A3570:3573" +"Telefonica Spain","TELESUR","dvbs",11727,27500,"v",0,0,"P43:3121:3122","A3122" +"TSA","SCT PROMO","dvbs",11727,27500,"v",0,0,"P56:41:36","A36" +"TSA","SCT PROMO b","dvbs",11727,27500,"v",0,0,"P62:41:36","A36" +"TSA","SCT PROMO c","dvbs",11727,27500,"v",0,0,"P63:41:36","A36" +"TSA","SCT PROMO d","dvbs",11727,27500,"v",0,0,"P64:41:36","A36" +"TSA","SCT PROMO e","dvbs",11727,27500,"v",0,0,"P35:41:36","A36" +"BBC World Service","BBC Arabic","dvbs",11727,27500,"v",0,0,"P6519:6781:6782","A6782" +"Du","Dubai TV","dvbs",11747,27500,"h",0,0,"P48:4130:4131:4132","A4131:4132" +"Du","Dubai Sports 3","dvbs",11747,27500,"h",0,0,"P49:4386:4387:4388","A4387:4388" +"Du","Sama Dubai","dvbs",11747,27500,"h",0,0,"P50:4642:4643","A4643" +"Du","AL SHARJAH","dvbs",11747,27500,"h",0,0,"P4340:4341:4342","A4342" +"Du","AD SPORT1","dvbs",11747,27500,"h",0,0,"P4370:4371:4372","A4372" +"Du","PMC","dvbs",11747,27500,"h",0,0,"P32:67:46","A46" +"Du","AL SHARQIYA","dvbs",11747,27500,"h",0,0,"P58:77:113","A113" +"Du","AL BAGHDADIA 2","dvbs",11747,27500,"h",0,0,"P4211:4222:4223","A4223" +"Du","AL BAGHDADIA","dvbs",11747,27500,"h",0,0,"P4251:4252:4253","A4253" +"Du","Al-Arabiya","dvbs",11747,27500,"h",0,0,"P35:515:643:671","A643:671" +"Du","MBC MAGHREB AL ARABIA","dvbs",11747,27500,"h",0,0,"P41:516:682","A682" +"Du","Sky News Arabia","dvbs",11747,27500,"h",0,0,"P4311:4312:4313","A4313" +"du","AL GHAD AL ARABY","dvbs",11747,27500,"h",0,0,"P4350:4351:4352","A4352" +"Rai","RaiMed","dvbs",11766,27500,"v",0,0,"P260:515:580:653","A653" +"Rai","Senato","dvbs",11766,27500,"v",0,0,"P1107:8190:588:92:660","A92:660" +"Rai","Rai Scuola","dvbs",11766,27500,"v",0,0,"P261:518:584:656","A656" +"Rai","TV2000","dvbs",11804,27500,"v",0,0,"P108:518:656","A656" +"Unknown","Service 3304","dvbs",11804,27500,"v",0,0,"P259:515:591:653","A653" +"Rai","Rai Gulp","dvbs",11804,27500,"v",0,0,"P126:522:590:663","A663" +"Rai","Rai Sport 1","dvbs",11804,27500,"v",0,0,"P128:512:581:650","A650" +"Rai","Rai Sport 2","dvbs",11804,27500,"v",0,0,"P104:516:579:654","A654" +"Rai","Rai Storia","dvbs",11804,27500,"v",0,0,"P103:514:583:652","A652" +"Rai","Camera Deputati","dvbs",11804,27500,"v",0,0,"P262:517:587:655","A655" +"Rai","RaiNettunoSat1","dvbs",11804,27500,"v",0,0,"P256:519:585:657","A657" +"NetMed","novasports7","dvbs",11823,27500,"h",0,0,"P269:519:8190:720:721","A720:721" +"NetMed","novasports7 Cy","dvbs",11823,27500,"h",0,0,"P271:519:8190:720:721","A720:721" +"SkyItalia","Real Time","dvbs",11958,27500,"v",0,0,"P1132:174:771:460:461","A460:461" +"JMC","TRT Belgesel","dvbs",12015,27500,"h",0,0,"P261:517:2309:277:700:701","A700:701" +"ART","IQRAA - ARABESQUE","dvbs",12015,27500,"h",0,0,"P264:520:136:730:1498","A730:1498" +"jmc","Iqraa Africa & Europe","dvbs",12015,27500,"h",0,0,"P258:521:182:731:732","A731:732" +"JMC","Algerie 3","dvbs",12015,27500,"h",0,0,"P272:525:142:5644","A5644" +"ART","Ictimai TV","dvbs",12015,27500,"h",0,0,"P273:524:140:5634","A5634" +"JMC","Canal Algerie","dvbs",12015,27500,"h",0,0,"P274:526:132:5654","A5654" +"JMC","RT DOC","dvbs",12015,27500,"h",0,0,"P397:1420:5664","A5664" +"JMC","Yemen TV","dvbs",12015,27500,"h",0,0,"P270:518:134:710","A710" +"JMC","Saudi Sports 1","dvbs",12015,27500,"h",0,0,"P281:776:150:1017","A1017" +"JMC","test","dvbs",12015,27500,"h",0,0,"P288:777:151:1018","A1018" +"Telespazio","Al Jazeera Documentary","dvbs",12111,27500,"v",0,0,"P1028:240:241","A241" +"Telespazio","Al Jazeera Mubasher","dvbs",12111,27500,"v",0,0,"P1029:250:251","A251" +"Telespazio","Al Jazeera","dvbs",12111,27500,"v",0,0,"P1031:270:271","A271" +"Telespazio","IP DATA","dvbs",12111,27500,"v",0,0,"P1065:1027","A" +"Telespazio","Telemarket for You","dvbs",12111,27500,"v",0,0,"P1038:329:328","A328" +"Telespazio","Antichità Chiossone","dvbs",12111,27500,"v",0,0,"P1139:3300:3310","A3310" +"Telespazio","S.NEU JERUSALEM","dvbs",12111,27500,"v",0,0,"P1173:345:346","A346" +"Harmonic","AL-MAYADEEN","dvbs",12111,27500,"v",0,0,"P1135:1403:2403","A2403" +"Telespazio","RIKSat","dvbs",12111,27500,"v",0,0,"P1194:108:2500:102","A102" +"Telespazio","ClassTv","dvbs",12111,27500,"v",0,0,"P1185:350:351","A351" +"Telespazio","Class Horse TV","dvbs",12111,27500,"v",0,0,"P1196:355:356","A356" +"Telespazio","TV Moda","dvbs",12111,27500,"v",0,0,"P1080:320:321","A321" +"Telespazio","Saamen Tv","dvbs",12111,27500,"v",0,0,"P1198:1168:1169","A1169" +"AH-EDP","Tunisie Nationale","dvbs",12149,27500,"v",0,0,"P42:112:114:113","A113" +"AH-EDP","Khabar TV","dvbs",12149,27500,"v",0,0,"P64:160:161","A161" +"AH-EDP","LIDER TV AZERBAIJAN","dvbs",12149,27500,"v",0,0,"P66:192:191:193:194","A193:194" +"AH-EDP","CCTV4","dvbs",12149,27500,"v",0,0,"P68:224:223:225","A225" +"EUTELSAT","SMtv San Marino","dvbs",12149,27500,"v",0,0,"P87:310:311","A311" +"People TV-Rete 7","People TV-Rete 7","dvbs",12149,27500,"v",0,0,"P1141:1142:1143","A1143" +"TandbergTV","CNC-002","dvbs",12149,27500,"v",0,0,"P3300:3304:3302:3303","A3303" +"Bahrain TV","Bahrain International","dvbs",12149,27500,"v",0,0,"P90:340:341","A341" +"BBC World Service","BBC Persian","dvbs",12149,27500,"v",0,0,"P111:410:411","A411" +"Scopus Network Technologies","BETHEL","dvbs",12149,27500,"v",0,0,"P88:420:421","A421" +"NetMed","ÂïõëÞ","dvbs",12169,27500,"h",0,0,"P278:517:8190:700","A700" +"Unknown","RFE/RL TV 1","dvbs",12226,27500,"v",0,0,"P5001:1160:1120:1122:1130:1132","A1120:1122:1130:1132" +"Unknown","VOA TV 240","dvbs",12226,27500,"v",0,0,"P5240:3260:3220:3222:3230:3232","A3220:3222:3230:3232" +"Unknown","VOA TV 241","dvbs",12226,27500,"v",0,0,"P5241:3260:3220:3230","A3220:3230" +"Unknown","VOA TV 242","dvbs",12226,27500,"v",0,0,"P5242:3260:3220:3232","A3220:3232" +"Unknown","VOA TV 251","dvbs",12226,27500,"v",0,0,"P5251:3260:3220:3230","A3220:3230" +"Unknown","VOA TV 252","dvbs",12226,27500,"v",0,0,"P5252:3260:3220:3232","A3220:3232" +"Unknown","DOS TV 340","dvbs",12226,27500,"v",0,0,"P5340:5060:5020","A5020" +"Unknown","Ch 500 - HD TEST","dvbs",12226,27500,"v",0,0,"P5500:560:32","A32" +"Unknown","VOA TV 100","dvbs",12226,27500,"v",0,0,"P5100:3260:3220:3222","A3220:3222" +"Unknown","AzadliqRadiosu TV 200","dvbs",12226,27500,"v",0,0,"P5200:1160:1120:1122","A1120:1122" +"Unknown","Alhurra TV 190","dvbs",12226,27500,"v",0,0,"P5190:1460:1420","A1420" +"Unknown","Alhurra TV 215","dvbs",12226,27500,"v",0,0,"P5215:1460:1420:1422","A1420:1422" +"Unknown","Radio Farda 223","dvbs",12226,27500,"v",0,0,"P5223:1560:1532","A1532" +"Unknown","Persian TV 225","dvbs",12226,27500,"v",0,0,"P5225:1660:1620:1622","A1620:1622" +"GlobeCast","Naba TV","dvbs",12245,27500,"h",0,0,"P33:112:122","A122" +"GlobeCast","Saudi Sport 2","dvbs",12245,27500,"h",0,0,"P113:123:133","A133" +"GlobeCast","Al sumariah","dvbs",12245,27500,"h",0,0,"P114:124:134","A134" +"GlobeCast","iTV","dvbs",12245,27500,"h",0,0,"P127:137:157","A157" +"GlobeCast","Al Etejah TV","dvbs",12245,27500,"h",0,0,"P1113:1123:1133","A1133" +"GlobeCast","AL BAGHDADIA","dvbs",12245,27500,"h",0,0,"P1115:1125:1135","A1135" +"GlobeCast","Saudi Arabian TV2","dvbs",12245,27500,"h",0,0,"P212:222:332","A332" +"GlobeCast","Samacom Test","dvbs",12245,27500,"h",0,0,"P","A" +"GlobeCast","Al Rasheed TV","dvbs",12245,27500,"h",0,0,"P","A" +"GlobeCast","KANAL 4","dvbs",12245,27500,"h",0,0,"P","A" +"GlobeCast","GEM Movie","dvbs",12245,27500,"h",0,0,"P","A" +"Cyfrowy Polsat S.A.","Blue Hustler","dvbs",12284,27500,"h",0,0,"P32","A" +"RIT","RIT-TV","dvbs",12322,27500,"h",0,0,"P32:33:34","A34" +"M-Three satcom","90 numeri sat","dvbs",12322,27500,"h",0,0,"P209:2090:2091","A2091" +"M-Three satcom","Bergamo TV","dvbs",12322,27500,"h",0,0,"P3931:3932:3933","A3933" +"M-Three satcom","Canale Aste","dvbs",12322,27500,"h",0,0,"P2062:2060:2061","A2061" +"Eutelsat","Romauno","dvbs",12322,27500,"h",0,0,"P5000:5010:5020","A5020" +"GlobeCast","Telepace","dvbs",12380,27500,"v",0,0,"P3017:3027:3037:3097","A3037:3097" +"GLOBECAST","AD AlOula","dvbs",12380,27500,"v",0,0,"P3014:3024:3034","A3034" +"GLOBECAST","ZAHRA TV","dvbs",12380,27500,"v",0,0,"P3019:3029:3039","A3039" +"GlobeCast","ERI TV","dvbs",12380,27500,"v",0,0,"P3110:3120:3130","A3130" +"GlobeCast","Saudi - Sunnah","dvbs",12380,27500,"v",0,0,"P3117:3127:3137","A3137" +"GlobeCast","KNN Channel","dvbs",12380,27500,"v",0,0,"P3108:3018:3048","A3048" +"GlobeCast","Libya Al Ahrar","dvbs",12380,27500,"v",0,0,"P3105:3025:3035","A3035" +"GlobeCast","Sat7 Plus","dvbs",12380,27500,"v",0,0,"P3013:3023:3033","A3033" +"GlobeCast","Al Etejah","dvbs",12380,27500,"v",0,0,"P3115:3215:3315","A3315" +"GlobeCast","AL SHARQIYA NEWS","dvbs",12380,27500,"v",0,0,"P3113:3213:3313","A3313" +"GlobeCast","ETV1","dvbs",12380,27500,"v",0,0,"P3100:3200:3300","A3300" +"Schweizer Radio und Fernsehen","SRF info","dvbs",12399,27500,"h",0,0,"P407:167:53:102:103:104","A102:103:104" +"RTV SLOVENIJA","SLO-TV3","dvbs",12520,27500,"v",0,0,"P82:218:202:219","A219" +"RTV SLOVENIJA","RBC-TV","dvbs",12520,27500,"v",0,0,"P32:603:604","A604" +"Telespazio","Canale ITALIA","dvbs",12558,27500,"v",0,0,"P1302:145:146","A146" +"Harmonic","Canale Italia 84","dvbs",12558,27500,"v",0,0,"P1303:245:246","A246" +"Telespazio","UnireSat by Teleippica","dvbs",12558,27500,"v",0,0,"P1310:1220:1221","A1221" +"Telespazio","TEF CHANNEL","dvbs",12558,27500,"v",0,0,"P1315:610:611:612","A611:612" +"Telespazio","THAQALLYN TV","dvbs",12558,27500,"v",0,0,"P33:52:50","A50" +"Telespazio","HODHOD Arabic","dvbs",12558,27500,"v",0,0,"P1323:1802:1803","A1803" +"Telespazio","HADI TV1","dvbs",12558,27500,"v",0,0,"P1345:72:73","A73" +"Telespazio","HADI TV3","dvbs",12558,27500,"v",0,0,"P420:410:411","A411" +"Telespazio","HADI TV4","dvbs",12558,27500,"v",0,0,"P1347:447:448","A448" +"Telespazio","RU TV","dvbs",12558,27500,"v",0,0,"P1349:2009:3009","A3009" +"Harmonic","Baraem+","dvbs",12558,27500,"v",0,0,"P2563:2851:2852","A2852" +"Harmonic","HODHOD FARSI","dvbs",12558,27500,"v",0,0,"P1360:360:361","A361" +"Telespazio","Jeem+","dvbs",12558,27500,"v",0,0,"P2819:2821:2822","A2822" +"GlobeCast","ARM_1","dvbs",12597,27500,"v",0,0,"P1025:161:84","A84" +"GlobeCast","BET","dvbs",12597,27500,"v",0,0,"P1026","A" +"GlobeCast","BBC World News","dvbs",12597,27500,"v",0,0,"P1027:163:92","A92" +"GlobeCast","SMNI","dvbs",12597,27500,"v",0,0,"P1056:4001:4011","A4011" +"Harmonic","1TVRUS Europe","dvbs",12597,27500,"v",0,0,"P1031:167:108","A108" +"GlobeCast","Euronews","dvbs",12597,27500,"v",0,0,"P1034:2221:768:2231:2232:2233:2234:2235:2236:2237:2238:2239:2240:2241:2242:2243:2246","A2231:2232:2233:2234:2235:2236:2237:2238:2239:2240:2241:2242:2243:2246" +"GlobeCast","Quadriga","dvbs",12597,27500,"v",0,0,"P1029","A" +"SkyItalia","Sky Calcio Info","dvbs",12616,29900,"h",0,0,"P1124:174","A" +"JMC","Qatar TV","dvbs",12654,27500,"h",0,0,"P5002:134:1220","A1220" +"ARABSAT","SAUDI1","dvbs",12654,27500,"h",0,0,"P5003:1360:1320","A1320" +"ARABSAT","KUWAIT","dvbs",12654,27500,"h",0,0,"P5004:1460:1420","A1420" +"Unknown","SUDAN TV","dvbs",12654,27500,"h",0,0,"P5032:1660:1620","A1620" +"ARABSAT","OMAN","dvbs",12654,27500,"h",0,0,"P5035:1760:1720","A1720" +"ARABSAT","ESC","dvbs",12654,27500,"h",0,0,"P5008:1860:1101:1206","A1206" +"ARABSAT","AL-IRAQIA TV","dvbs",12654,27500,"h",0,0,"P5061:1960:1920","A1920" +"ARABSAT","JORDAN TV","dvbs",12654,27500,"h",0,0,"P5049:4060:4020","A4020" +"ARABSAT","SAUDI-QURAN","dvbs",12654,27500,"h",0,0,"P5053:4260:4220","A4220" +"NILESAT","Libya Alwatnya","dvbs",12654,27500,"h",0,0,"P5054:4360:4320","A4320" +"SkyItalia","Sky Inside","dvbs",12673,29900,"v",0,0,"P286:2625:2626","A2626" +"SkyItalia","Sky Inside","dvbs",12673,29900,"v",0,0,"P310:2625:2626","A2626" +"SkyItalia","Sky Inside","dvbs",12673,29900,"v",0,0,"P312:2625:2626","A2626" +"SkyItalia","Sky Inside","dvbs",12673,29900,"v",0,0,"P313:2625:2626","A2626" +"Eutelsat","BFM TV","dvbs",12692,27500,"h",0,0,"P750:751:756:752","A752" +"AB SAT","BIS promo","dvbs",12692,27500,"h",0,0,"P417:117:217","A217" +"Eutelsat","TV8 Mont Blanc","dvbs",12692,27500,"h",0,0,"P820:821:822","A822" diff --git a/octoserve/var/channels/e9e.csv b/octoserve/var/channels/e9e.csv new file mode 100644 index 0000000..f5c79f4 --- /dev/null +++ b/octoserve/var/channels/e9e.csv @@ -0,0 +1,48 @@ +"CATEGORY","TITLE","SYSTEM","FREQ","SR","POL","RADIO","ENC","PIDS","TRACKS" +"???","Opap","dvbs",12265,27500,"v",0,0,"P368:468:130:768","A" +"Arqiva","ANN","dvbs",11727,27500,"v",0,0,"P260:2551:2552","A2552" +"Arqiva","Deepam TV","dvbs",11727,27500,"v",0,0,"P270:2701:2702","A2702" +"Arqiva","NTDTV","dvbs",11727,27500,"v",0,0,"P268:2631:2632","A2632" +"eVision","Duna","dvbs",12207,27500,"h",0,0,"P2713:2103:2501:2203","A2203" +"eVision","Duna HD","dvbs",11958,27500,"v",0,0,"P1713:1103:1501:1203","A1203" +"eVision","M1","dvbs",12207,27500,"h",0,0,"P2711:2111:2501","A" +"eVision","M1 HD","dvbs",11958,27500,"v",0,0,"P1711:1111:1501","A" +"eVision","M2","dvbs",12207,27500,"h",0,0,"P2712:2102:2501:2202","A2202" +"eVision","M2 HD","dvbs",11958,27500,"v",0,0,"P1712:1102:1501:1202","A1202" +"GlobeCast","777","dvbs",11938,27500,"h",0,0,"P109:1009:1109","A1109" +"GlobeCast","777-2","dvbs",11938,27500,"h",0,0,"P124:1024:1124","A1124" +"GlobeCast","CCTV9 DOCUMENTARY","dvbs",11938,27500,"h",0,0,"P111:1011:8190:1111","A1111" +"GlobeCast","Holy God","dvbs",11938,27500,"h",0,0,"P119:1019:1119","A1119" +"GlobeCast","Jaya TV","dvbs",11938,27500,"h",0,0,"P123:1231:1331","A1331" +"GlobeCast","JSTV","dvbs",11938,27500,"h",0,0,"P122:1003:1103","A1103" +"GlobeCast","M6 Suisse","dvbs",12034,27500,"v",0,0,"P5201:2010:2011:2012","A2011:2012" +"GlobeCast","M6 Suisse HD","dvbs",12034,27500,"v",0,0,"P5202:2020:2021:2022","A2021:2022" +"GlobeCast","NET 25 INTERNATIONAL","dvbs",11938,27500,"h",0,0,"P105:1005:1105","A1105" +"Globecast","Phoenix Info News","dvbs",12034,27500,"v",0,0,"P257:3531:3532","A3532" +"GlobeCast","PTV","dvbs",11938,27500,"h",0,0,"P102:1002:1102","A1102" +"GlobeCast","W9 Suisse","dvbs",12034,27500,"v",0,0,"P5203:2030:2031","A2031" +"GlobeCast","Walf TV","dvbs",11938,27500,"h",0,0,"P101:1001:1101","A1101" +"GlobeCast","YAARL TV","dvbs",11938,27500,"h",0,0,"P107:1007:1107","A1107" +"GlobeCast UK","CCTV-4","dvbs",11996,27500,"v",0,0,"P3998:3901:3999:3911","A3911" +"GlobeCast UK","CCTV-A","dvbs",11996,27500,"v",0,0,"P4298:4201:3999:4211","A4211" +"GlobeCast UK","CCTV-E","dvbs",11996,27500,"v",0,0,"P4098:4001:3999:4011","A4011" +"GlobeCast UK","CCTV-R","dvbs",11996,27500,"v",0,0,"P4198:4101:3999:4111","A4111" +"Harmonic","Parlamento","dvbs",12054,27500,"h",0,0,"P65:4129:4130","A4130" +"KabelKiosk","KabelKiosk - InfoKanal","dvbs",12360,27500,"h",0,0,"P2012:1121:1122","A1122" +"OTE","?????","dvbs",12149,27500,"v",0,0,"P305:405:505","A505" +"OTE","4E","dvbs",12149,27500,"v",0,0,"P312:412:512","A512" +"RRSat","!ana bintizarek","dvbs",11919,27500,"v",0,0,"P1023:2023:3023","A3023" +"RRSat","Angel TV","dvbs",11919,27500,"v",0,0,"P1036:2036:3036","A3036" +"RRSat","anta oana obs","dvbs",11919,27500,"v",0,0,"P1024:2024:3024","A3024" +"RRSat","DIVINE TV","dvbs",11919,27500,"v",0,0,"P1014:2014:3014","A3014" +"RRSat","NLM TV","dvbs",11919,27500,"v",0,0,"P1017:2017:3017","A3017" +"Satlink","Apostolic Oneness Network","dvbs",11900,27500,"h",0,0,"P256:512:63","A63" +"Telefonica Spain","Real Madrid TV","dvbs",12054,27500,"h",0,0,"P32:1113:1123","A1123" +"TS Pro","TF1 Suisse","dvbs",12034,27500,"v",0,0,"P200:210:230:220:221:222","A220:221:222" +"TSA","Record News","dvbs",12054,27500,"h",0,0,"P1029:1024:1040:1056","A1040:1056" +"Unknown","EbS","dvbs",11900,27500,"h",0,0,"P233:200:201:202:203:204:205:206:207:208:209:210:211:212:213:214:215:216:217:218:219:220","A201:202:203:204:205:206:207:208:209:210:211:212:213:214:215:216:217:218:219:220" +"Unknown","EbS+","dvbs",11900,27500,"h",0,0,"P433:400:401:402:403:404:405:406:407:408:409:410:411:412:413:414:415:416:417:418:419:420","A401:402:403:404:405:406:407:408:409:410:411:412:413:414:415:416:417:418:419:420" +"Unknown","Pentagon Channel","dvbs",11804,27500,"v",0,0,"P5008:810:800:802:804:806","A800:802:804:806" +"Unknown","Program-11","dvbs",11919,27500,"v",0,0,"P1026:2026:3026","A3026" +"Unknown","Program-9","dvbs",11919,27500,"v",0,0,"P1025:2025:3025","A3025" +"Unknown","TF1 HD Suisse","dvbs",12034,27500,"v",0,0,"P800:810:820:821:822","A820:821:822" diff --git a/octoserve/var/channels/kbw.csv b/octoserve/var/channels/kbw.csv new file mode 100644 index 0000000..c06af45 --- /dev/null +++ b/octoserve/var/channels/kbw.csv @@ -0,0 +1,121 @@ +"CATEGORY","TITLE","SYSTEM","FREQ","SR","MOD","RADIO","ENC","PIDS","TRACKS" +"1","1-2-3.tv","dvbc",122000,6900,"256qam",0,0,"P801:802:810:803","A803" +"3","3sat","dvbc",370000,6900,"256qam",0,0,"P200:210:230:220:221:222:225","A220:221:222:225" +"A","AJ Children","dvbc",826000,6900,"64qam",0,0,"P501:502:503","A503" +"A","Al Auola Inter","dvbc",818000,6900,"64qam",0,0,"P701:702:703","A703" +"A","Al Jazeera","dvbc",570000,6900,"256qam",0,0,"P701:702:703","A703" +"A","Al Jazeera International","dvbc",570000,6900,"256qam",0,0,"P201:202:203","A203" +"A","arirang","dvbc",826000,6900,"64qam",0,0,"P301:302:303","A303" +"A","arte","dvbc",362000,6900,"256qam",0,0,"P400:401:404:402:403","A402:403" +"A","Astro TV","dvbc",546000,6900,"256qam",0,0,"P1201:1202:1203","A1203" +"B","Bayerisches FS Nord","dvbc",346000,6900,"256qam",0,0,"P500:201:204:202:203:206","A202:203:206" +"B","Bayerisches FS Süd","dvbc",346000,6900,"256qam",0,0,"P200:201:204:202:203:206","A202:203:206" +"B","BBC PARLIAMENT","dvbc",610000,6900,"64qam",0,0,"P301:302:310:303","A303" +"B","BBC World News","dvbc",570000,6900,"256qam",0,0,"P901:902:903","A903" +"B","Bibel TV","dvbc",466000,6900,"256qam",0,0,"P901:902:910:903","A903" +"B","Bloomberg","dvbc",554000,6900,"256qam",0,0,"P401:402:410:403","A403" +"B","BR-alpha","dvbc",362000,6900,"256qam",0,0,"P1400:1401:1404:1402:1403:1406","A1402:1403:1406" +"B","BVN","dvbc",810000,6900,"64qam",0,0,"P1101:1102:1112:1110:1103","A1103" +"B","bw family","dvbc",130000,6900,"256qam",0,0,"P501:502:503:504","A503:504" +"C","Camera dei Deputati","dvbc",818000,6900,"64qam",0,0,"P201:202:210:203","A203" +"C","CCTV 9","dvbc",818000,6900,"64qam",0,0,"P1201:1202:1203","A1203" +"C","CCTV News","dvbc",570000,6900,"256qam",0,0,"P601:602:612:603","A603" +"C","Channel21","dvbc",122000,6900,"256qam",0,0,"P501:502:510:503","A503" +"C","CNN","dvbc",122000,6900,"256qam",0,0,"P901:902:903","A903" +"D","DAF-AnlegerTV","dvbc",818000,6900,"64qam",0,0,"P1301:1302:1303","A1303" +"D","Das Erste","dvbc",346000,6900,"256qam",0,0,"P100:101:104:102:103:106","A102:103:106" +"D","Das Erste HD","dvbc",362000,6900,"256qam",0,0,"P6000:6010:6030:6020:6021:6022","A6020:6021:6022" +"D","DAS VIERTE","dvbc",450000,6900,"256qam",0,0,"P101:102:110:103","A103" +"D","DELUXE MUSIC","dvbc",442000,6900,"256qam",0,0,"P601:602:603","A603" +"D","DIE NEUE ZEIT TV","dvbc",570000,6900,"256qam",0,0,"P1201:1202:1203","A1203" +"D","DM Digital","dvbc",738000,6900,"256qam",0,0,"P201:202:203","A203" +"D","DMAX","dvbc",122000,6900,"256qam",0,0,"P201:202:210:203","A203" +"D","DUNA","dvbc",810000,6900,"64qam",0,0,"P601:602:610:603","A603" +"D","DUNA II Atonomia","dvbc",810000,6900,"64qam",0,0,"P501:502:510:503","A503" +"E","EinsFestival","dvbc",362000,6900,"256qam",0,0,"P200:201:204:202:203:206","A202:203:206" +"E","EinsPlus","dvbc",362000,6900,"256qam",0,0,"P300:301:304:302:303:306","A302:303:306" +"E","ERF eins","dvbc",810000,6900,"64qam",0,0,"P301:302:303","A303" +"E","ETNO TV","dvbc",826000,6900,"64qam",0,0,"P601:602:603","A603" +"E","euronews","dvbc",426000,6900,"256qam",0,0,"P1101:1102:1110:1103:1104:1105:1106:1113:1114:1115:1116:1117:1118:1119:1120:1121","A1103:1104:1105:1106:1113:1114:1115:1116:1117:1118:1119:1120:1121" +"E","EUROSPORT","dvbc",450000,6900,"256qam",0,0,"P301:302:310:303","A303" +"F","France 24","dvbc",570000,6900,"256qam",0,0,"P101:102:103","A103" +"H","HABERTÜRK","dvbc",730000,6900,"256qam",0,0,"P1101:1102:1112:1103","A1103" +"H","HD Campus TV","dvbc",130000,6900,"256qam",0,0,"P301:302:312:303","A303" +"H","hr-fernsehen","dvbc",346000,6900,"256qam",0,0,"P300:301:304:302:303","A302:303" +"H","HSE24","dvbc",442000,6900,"256qam",0,0,"P801:802:810:803","A803" +"H","HSE24 EXTRA","dvbc",442000,6900,"256qam",0,0,"P1101:1102:1110:1103","A1103" +"I","iM1","dvbc",442000,6900,"256qam",0,0,"P401:402:403","A403" +"I","Info KabelBW","dvbc",130000,6900,"256qam",0,0,"P101:102:103","A103" +"J","Juwelo","dvbc",442000,6900,"256qam",0,0,"P501:502:503","A503" +"K","K-TV","dvbc",466000,6900,"256qam",0,0,"P1301:1302:1310:1303","A1303" +"K","kabel eins","dvbc",114000,6900,"256qam",0,0,"P601:602:610:603","A603" +"K","KabelBW Videothek","dvbc",610000,6900,"64qam",0,0,"P101:102:103","A103" +"K","KBW Test SD","dvbc",130000,6900,"256qam",0,0,"P401","A" +"K","Khabar TV","dvbc",818000,6900,"64qam",0,0,"P101:102:103","A103" +"K","KiKA","dvbc",370000,6900,"256qam",0,0,"P300:310:330:320:321:325","A320:321:325" +"M","MDR S-Anhalt","dvbc",354000,6900,"256qam",0,0,"P2900:2901:2904:2902:2903","A2902:2903" +"M","MDR Sachsen","dvbc",354000,6900,"256qam",0,0,"P2800:2901:2904:2902:2903","A2902:2903" +"M","MDR Thüringen","dvbc",354000,6900,"256qam",0,0,"P3000:2901:2904:2902:2903","A2902:2903" +"M","Mohajer","dvbc",818000,6900,"64qam",0,0,"P401:402:403","A403" +"N","n-tv","dvbc",114000,6900,"256qam",0,0,"P801:802:810:803","A803" +"N","N24","dvbc",114000,6900,"256qam",0,0,"P901:902:910:903","A903" +"N","NDR FS HH","dvbc",354000,6900,"256qam",0,0,"P2500:2601:2604:2602:2603","A2602:2603" +"N","NDR FS MV","dvbc",354000,6900,"256qam",0,0,"P2400:2601:2604:2602:2603","A2602:2603" +"N","NDR FS NDS","dvbc",354000,6900,"256qam",0,0,"P2600:2601:2604:2602:2603","A2602:2603" +"N","NDR FS SH","dvbc",354000,6900,"256qam",0,0,"P2700:2601:2604:2602:2603","A2602:2603" +"N","Nick/Comedy Central","dvbc",450000,6900,"256qam",0,0,"P201:202:5412:210:203","A203" +"O","OCKO","dvbc",810000,6900,"64qam",0,0,"P1201:1202:1210:1203","A1203" +"O","ORF2E","dvbc",738000,6900,"256qam",0,0,"P701:702:710:703","A703" +"P","PCNE Chinese","dvbc",810000,6900,"64qam",0,0,"P901:902:912:903:904","A903:904" +"P","PHOENIX","dvbc",362000,6900,"256qam",0,0,"P500:501:504:502:503","A502:503" +"P","Pro TV International","dvbc",818000,6900,"64qam",0,0,"P501:502:503","A503" +"P","ProSieben","dvbc",114000,6900,"256qam",0,0,"P301:302:310:303:307","A303:307" +"Q","QVC","dvbc",442000,6900,"256qam",0,0,"P701:702:710:703","A703" +"Q","QVC Beauty","dvbc",442000,6900,"256qam",0,0,"P1001:1002:1010:1003","A1003" +"Q","QVC HD","dvbc",762000,6900,"64qam",0,0,"P201:202:210:207","A207" +"Q","QVC Plus","dvbc",442000,6900,"256qam",0,0,"P301:302:310:303","A303" +"R","rbb Berlin","dvbc",354000,6900,"256qam",0,0,"P600:601:604:602:603","A602:603" +"R","rbb Brandenburg","dvbc",354000,6900,"256qam",0,0,"P500:601:604:602:603","A602:603" +"R","Record TV","dvbc",562000,6900,"256qam",0,0,"P1101:1102:1103","A1103" +"R","RTL NITRO","dvbc",122000,6900,"256qam",0,0,"P101:102:110:103","A103" +"R","RTL Television","dvbc",114000,6900,"256qam",0,0,"P101:102:110:103:107","A103:107" +"R","RTL2","dvbc",114000,6900,"256qam",0,0,"P501:502:510:503","A503" +"R","Russia Today","dvbc",570000,6900,"256qam",0,0,"P401:402:403","A403" +"S","SAT.1","dvbc",114000,6900,"256qam",0,0,"P201:202:210:203:207","A203:207" +"S","Sat.1 Gold","dvbc",122000,6900,"256qam",0,0,"P701:702:710:703","A703" +"S","Servus TV","dvbc",442000,6900,"256qam",0,0,"P101:102:110:103:104","A103:104" +"S","ServusTV HD","dvbc",762000,6900,"64qam",0,0,"P401:402:410:403:404:407","A403:404:407" +"S","SF1","dvbc",738000,6900,"256qam",0,0,"P501:502:510:503:504","A503:504" +"S","SF2","dvbc",738000,6900,"256qam",0,0,"P601:602:610:603:604","A603:604" +"S","SIXX","dvbc",122000,6900,"256qam",0,0,"P301:302:310:303","A303" +"S","Sky Select","dvbc",402000,6900,"256qam",0,0,"P103:2815:2816:2819","A2816:2819" +"S","SonLife","dvbc",818000,6900,"64qam",0,0,"P1001:1002:1003","A1003" +"S","sonnenklar.TV","dvbc",122000,6900,"256qam",0,0,"P401:402:410:403","A403" +"S","Souvenirs from earth","dvbc",554000,6900,"256qam",0,0,"P1101:1102:1103","A1103" +"S","Sparda Welt","dvbc",130000,6900,"256qam",0,0,"P201:202:203","A203" +"S","SPORT1","dvbc",450000,6900,"256qam",0,0,"P2101:2102:2110:2103","A2103" +"S","Super RTL","dvbc",114000,6900,"256qam",0,0,"P701:702:710:703","A703" +"S","SWR Fernsehen BW","dvbc",346000,6900,"256qam",0,0,"P800:801:804:802:803:806","A802:803:806" +"S","SWR Fernsehen RP","dvbc",354000,6900,"256qam",0,0,"P3100:3101:3104:3102:3103:3106","A3102:3103:3106" +"T","tagesschau24","dvbc",362000,6900,"256qam",0,0,"P100:101:104:102","A102" +"T","Tele 5","dvbc",450000,6900,"256qam",0,0,"P2201:2202:2210:2203","A2203" +"T","TF 1","dvbc",826000,6900,"64qam",0,0,"P101:102:110:103:104:105","A103:104:105" +"T","Thai Global Networks","dvbc",826000,6900,"64qam",0,0,"P401:402:403","A403" +"T","TRT Türk","dvbc",434000,6900,"256qam",0,0,"P1201:1202:1210:1203","A1203" +"T","TV 8","dvbc",826000,6900,"64qam",0,0,"P201:202:203","A203" +"T","TV Chile Nordic","dvbc",810000,6900,"64qam",0,0,"P201:202:203","A203" +"T","TV GALICIA","dvbc",810000,6900,"64qam",0,0,"P801:802:810:803","A803" +"T","TV ROMANIA International","dvbc",810000,6900,"64qam",0,0,"P401:402:410:403","A403" +"T","TV Südbaden","dvbc",130000,6900,"256qam",0,0,"P601:602:610:603","A603" +"T","TV Tunisia 1","dvbc",810000,6900,"64qam",0,0,"P701:702:710:703","A703" +"T","TV5MONDE Europe","dvbc",122000,6900,"256qam",0,0,"P1001:1002:1010:1003","A1003" +"V","Viva","dvbc",122000,6900,"256qam",0,0,"P601:602:612:610:603","A603" +"V","VOX","dvbc",114000,6900,"256qam",0,0,"P401:402:410:403","A403" +"W","WDR Köln","dvbc",346000,6900,"256qam",0,0,"P600:601:604:602:603","A602:603" +"W","World Fashion","dvbc",810000,6900,"64qam",0,0,"P1001:1002:1003","A1003" +"Z","ZDF","dvbc",370000,6900,"256qam",0,0,"P100:110:130:120:121:122:125","A120:121:122:125" +"Z","ZDF HD","dvbc",370000,6900,"256qam",0,0,"P6100:6110:6130:6120:6121:6122:6123","A6120:6121:6122:6123" +"Z","zdf_neo","dvbc",370000,6900,"256qam",0,0,"P650:660:680:670:671:672:675","A670:671:672:675" +"Z","zdf.kultur","dvbc",370000,6900,"256qam",0,0,"P1100:1110:1130:1120:1121:1122:1125","A1120:1121:1122:1125" +"Z","ZDFinfo","dvbc",370000,6900,"256qam",0,0,"P600:610:630:620:621:622:625","A620:621:622:625" +"Z","Zing","dvbc",810000,6900,"64qam",0,0,"P101:102:110:103","A103" diff --git a/octoserve/var/channels/kd.csv b/octoserve/var/channels/kd.csv new file mode 100644 index 0000000..02cfc10 --- /dev/null +++ b/octoserve/var/channels/kd.csv @@ -0,0 +1,66 @@ +CATEGORY,TITLE,SYSTEM,FREQ,SR,MOD,RADIO,ENC,PIDS,TRACKS +"Digital Free","arte HD","dvbc",114000,6900,"256qam",0,0,"P105:6661:6664:6662:6663","A6662:6663" +"ARD","Das Erste HD","dvbc",330000,6900,"256qam",0,0,"P5100:5101:5104:5102:5103","A5102:5103" +"ARD","BR-alpha","dvbc",330000,6900,"256qam",0,0,"P1400:1401:1404:1402:1403:1406","A1402:1403:1406" +"ARD","tagesschau24","dvbc",330000,6900,"256qam",0,0,"P100:101:104:102","A102" +"ARD","Einsfestival","dvbc",330000,6900,"256qam",0,0,"P200:201:204:202:203:206","A202:203:206" +"ARD","EinsPlus","dvbc",330000,6900,"256qam",0,0,"P300:301:304:302:303:306","A302:303:306" +"ARD","arte","dvbc",330000,6900,"256qam",0,0,"P400:401:404:402:403","A402:403" +"ARD","PHOENIX","dvbc",330000,6900,"256qam",0,0,"P500:501:504:502:503","A502:503" +"ARD","Das Erste","dvbc",338000,6900,"256qam",0,0,"P100:101:104:102:103:106","A102:103:106" +"ARD","Bayerisches FS Süd","dvbc",338000,6900,"256qam",0,0,"P200:201:204:202:203:206","A202:203:206" +"ARD","hr-fernsehen","dvbc",338000,6900,"256qam",0,0,"P300:301:304:302:303","A302:303" +"ARD","WDR Köln","dvbc",338000,6900,"256qam",0,0,"P600:601:604:602:603","A602:603" +"ARD","SWR Fernsehen RP","dvbc",338000,6900,"256qam",0,0,"P800:801:804:802:803:806","A802:803:806" +"SKY","Sky Select","dvbc",378000,6900,"256qam",0,0,"P103:2815:2816:2819","A2816:2819" +"Digital Free","Super RTL","dvbc",394000,6900,"256qam",0,0,"P111:1501:1504:1502","A1502" +"Digital Free","RTL II","dvbc",394000,6900,"256qam",0,0,"P112:1601:1604:1602","A1602" +"Digital Free","VOX","dvbc",394000,6900,"256qam",0,0,"P113:1701:1704:1702","A1702" +"Digital Free","n-tv","dvbc",394000,6900,"256qam",0,0,"P114:1901:1904:1902","A1902" +"Digital Free","SPORT1","dvbc",394000,6900,"256qam",0,0,"P116:2501:2504:2502","A2502" +"Digital Free","1-2-3.tv","dvbc",402000,6900,"256qam",0,0,"P103:1101:1104:1102","A1102" +"Digital Free","BBC World News","dvbc",402000,6900,"256qam",0,0,"P115:401:402","A402" +"Digital Free","RTL NITRO","dvbc",402000,6900,"256qam",0,0,"P105:981:984:982","A982" +"Digital Free","CNN","dvbc",402000,6900,"256qam",0,0,"P110:2251:2252","A2252" +"Digital Free","Servus TV","dvbc",402000,6900,"256qam",0,0,"P107:2371:2374:2372","A2372" +"Digital Free","EuroNews","dvbc",410000,6900,"256qam",0,0,"P111:2601:2622","A2622" +"Italienisch","EuroNews","dvbc",410000,6900,"256qam",0,0,"P106:2601:1202","A1202" +"Div. Sprachen","EuroNews","dvbc",410000,6900,"256qam",0,0,"P107:2601:1212","A1212" +"Div. Sprachen","EuroNews","dvbc",410000,6900,"256qam",0,0,"P108:2601:1222","A1222" +"Russisch","EuroNews","dvbc",410000,6900,"256qam",0,0,"P109:2601:1232","A1232" +"Digital Free","Channel21","dvbc",410000,6900,"256qam",0,0,"P114:2391:2394:2392","A2392" +"Digital Free","Juwelo TV","dvbc",410000,6900,"256qam",0,0,"P113:2361:2362","A2362" +"Digital Free","EuroNews","dvbc",410000,6900,"256qam",0,0,"P110:2601:2602","A2602" +"Digital Free","Bloomberg","dvbc",426000,6900,"256qam",0,0,"P102:421:422","A422" +"Digital Free","Bibel TV","dvbc",426000,6900,"256qam",0,0,"P106:731:734:732","A732" +"Digital Free","ERF eins","dvbc",426000,6900,"256qam",0,0,"P108:2411:2412","A2412" +"Digital Free","Das Vierte","dvbc",426000,6900,"256qam",0,0,"P107:2931:2934:2932","A2932" +"Digital Free","sonnenklar.TV","dvbc",426000,6900,"256qam",0,0,"P105:2271:2274:2272","A2272" +"Digital Free","sixx","dvbc",442000,6900,"256qam",0,0,"P104:1181:1184:1182","A1182" +"Digital Free","Tele 5","dvbc",442000,6900,"256qam",0,0,"P115:411:414:412","A412" +"Digital Free","Eurosport","dvbc",442000,6900,"256qam",0,0,"P113:2921:2924:2922","A2922" +"Digital Free","ProSieben","dvbc",442000,6900,"256qam",0,0,"P101:2201:2204:2202:2203","A2202:2203" +"Digital Free","kabel eins","dvbc",442000,6900,"256qam",0,0,"P109:2301:2304:2302","A2302" +"Digital Free","N24","dvbc",442000,6900,"256qam",0,0,"P114:2801:2804:2802","A2802" +"ZDFvision","ZDF HD","dvbc",450000,6900,"256qam",0,0,"P6100:6110:6130:6120:6121:6123","A6120:6121:6123" +"ZDFvision","ZDF","dvbc",450000,6900,"256qam",0,0,"P100:110:130:120:121:122:125","A120:121:122:125" +"ZDFvision","3sat","dvbc",450000,6900,"256qam",0,0,"P200:210:230:220:221:222:225","A220:221:222:225" +"ZDFvision","KiKA","dvbc",450000,6900,"256qam",0,0,"P300:310:330:320:321:325","A320:321:325" +"ZDFvision","ZDFinfo","dvbc",450000,6900,"256qam",0,0,"P600:610:630:620:621:622:625","A620:621:622:625" +"ZDFvision","zdf_neo","dvbc",450000,6900,"256qam",0,0,"P650:660:680:670:671:672:675","A670:671:672:675" +"ZDFvision","zdf.kultur","dvbc",450000,6900,"256qam",0,0,"P1100:1110:1130:1120:1121:1122:1125","A1120:1121:1122:1125" +"ARD","rbb Berlin","dvbc",458000,6900,"256qam",0,0,"P600:601:604:602:603","A602:603" +"ARD","NDR FS MV","dvbc",458000,6900,"256qam",0,0,"P2400:2401:2404:2402:2403","A2402:2403" +"ARD","MDR Sachsen","dvbc",458000,6900,"256qam",0,0,"P2800:2801:2804:2802:2803","A2802:2803" +"Digital Free","NICK/COMEDY CENTRAL","dvbc",466000,6900,"256qam",0,0,"P104:441:444:442","A442" +"Digital Free","VIVA","dvbc",466000,6900,"256qam",0,0,"P116:2941:2944:2942","A2942" +"Digital Free","QVC","dvbc",466000,6900,"256qam",0,0,"P101:2281:2284:2282","A2282" +"Digital Free","DMAX","dvbc",466000,6900,"256qam",0,0,"P115:2291:2294:2292","A2292" +"Digital Free","HSE24","dvbc",466000,6900,"256qam",0,0,"P103:2311:2314:2312","A2312" +"Digital Free","Kabel Digital Info","dvbc",538000,6900,"256qam",0,0,"P104:2741:2742","A2742" +"Digital Free","ANIXE SD","dvbc",538000,6900,"256qam",0,0,"P109:1001:1002","A1002" +"Digital Free","SAT.1 Gold","dvbc",538000,6900,"256qam",0,0,"P112:2431:2434:2432","A2432" +"Digital Free","Astro TV","dvbc",538000,6900,"256qam",0,0,"P101:2241:2242","A2242" +"Digital Free","Joiz!","dvbc",626000,6900,"256qam",0,0,"P103:6421:6422","A6422" +"Digital Free","ProSieben MAXX","dvbc",626000,6900,"256qam",0,0,"P104:6431:6434:6432:6433","A6432:6433" +"Digital Free","Deutsches Musikfernsehen","dvbc",626000,6900,"256qam",0,0,"P109:6501:6502","A6502" diff --git a/octoserve/var/channels/kdc2.csv b/octoserve/var/channels/kdc2.csv new file mode 100644 index 0000000..bda6b37 --- /dev/null +++ b/octoserve/var/channels/kdc2.csv @@ -0,0 +1,5 @@ +CATEGORY,TITLE,SYSTEM,FREQ,BW/SR,DS,PLP,MOD,RADIO,ENC,PIDS,TRACKS +"KDC2","KDG C2 Demo 1","dvbc2",793982,8,0,0,"",0,0,"P100:308:256","A256" +"KDC2","KDG C2 Demo 2","dvbc2",793982,8,0,0,"",0,0,"P100:308:256","A256" +"TEST","Test DS0","dvbc2",793982,8,0,0,"",0,0,"P100:308:256","A256" +"TEST","Test DS1","dvbc2",793982,8,1,257,"",0,0,"P32:256:272","A272" diff --git a/octoserve/var/channels/readme.txt b/octoserve/var/channels/readme.txt new file mode 100644 index 0000000..757d77e --- /dev/null +++ b/octoserve/var/channels/readme.txt @@ -0,0 +1,3 @@ + +File format is subject to change + diff --git a/octoserve/var/channels/sourcelist.csv b/octoserve/var/channels/sourcelist.csv new file mode 100644 index 0000000..a11cb6b --- /dev/null +++ b/octoserve/var/channels/sourcelist.csv @@ -0,0 +1,8 @@ +KEY,CSVFILE,NAME,SYSTEM,SRC +"KBW","kbw","KabelBW","dvbc",0 +"UM","um","UnityMedia","dvbc",0 +"KD","kd","Kabel Deutschland","dvbc",0 +"KDC2","kdc2","Kabel Deutschland C2","dvbc2",0 +"A19E","a19e","Astra 19E","dvbs",1 +"E9E","e9e","Eutelsat 9E","dvbs",1 +"E13E","e13e","Hotbird 13E","dvbs",1 \ No newline at end of file diff --git a/octoserve/var/channels/um.csv b/octoserve/var/channels/um.csv new file mode 100644 index 0000000..a8b3327 --- /dev/null +++ b/octoserve/var/channels/um.csv @@ -0,0 +1,104 @@ +CATEGORY,TITLE,SYSTEM,FREQ,SR,MOD,RADIO,ENC,PIDS,TRACKS +"Unitymedia","ProSieben MAXX","dvbc",113000,6900,"256qam",0,0,"P267:613:618:614","A614" +"Unitymedia","DAF - Anleger TV","dvbc",129000,6900,"256qam",0,0,"P264:583:584","A584" +"Unitymedia","Offener Kanal","dvbc",129000,6900,"256qam",0,0,"P263:573:574","A574" +"Unitymedia","Rhein-Main-TV","dvbc",129000,6900,"256qam",0,0,"P267:613:618:614","A614" +"Unitymedia","Unitymedia Infokanal","dvbc",129000,6900,"256qam",0,0,"P257:513:518:514","A514" +"SKY","Sky Select","dvbc",378000,6900,"256qam",0,0,"P103:2815:2816:2819","A2816:2819" +"ZDFvision","ZDF HD","dvbc",394000,6900,"256qam",0,0,"P6100:6110:6130:6120:6121:6122:6123","A6120:6121:6122:6123" +"ZDFvision","ZDF","dvbc",394000,6900,"256qam",0,0,"P100:110:130:120:121:122:125","A120:121:122:125" +"ZDFvision","3sat","dvbc",394000,6900,"256qam",0,0,"P200:210:230:220:221:222:225","A220:221:222:225" +"ZDFvision","KiKA","dvbc",394000,6900,"256qam",0,0,"P300:310:330:320:321:325","A320:321:325" +"ZDFvision","ZDFinfo","dvbc",394000,6900,"256qam",0,0,"P600:610:630:620:621:622:625","A620:621:622:625" +"ZDFvision","zdf_neo","dvbc",394000,6900,"256qam",0,0,"P650:660:680:670:671:672:675","A670:671:672:675" +"ZDFvision","zdf.kultur","dvbc",394000,6900,"256qam",0,0,"P1100:1110:1130:1120:1121:1122:1125","A1120:1121:1122:1125" +"Unitymedia","Lig TV","dvbc",402000,6900,"256qam",0,0,"P261:553","A" +"Unitymedia","Turkmax","dvbc",402000,6900,"256qam",0,0,"P266:603","A" +"Unitymedia","euronews","dvbc",402000,6900,"256qam",0,0,"P269:633:635:634:2241:2242:2243","A634:2241:2242:2243" +"Unitymedia","euronews","dvbc",402000,6900,"256qam",0,0,"P270:633:635:644:2241:2242:2243","A644:2241:2242:2243" +"Unitymedia","euronews","dvbc",402000,6900,"256qam",0,0,"P271:633:635:654:2241:2242:2243","A654:2241:2242:2243" +"Unitymedia","euronews","dvbc",402000,6900,"256qam",0,0,"P272:633:635:664:2241:2242:2243","A664:2241:2242:2243" +"Unitymedia","euronews","dvbc",402000,6900,"256qam",0,0,"P273:633:635:674:2241:2242:2243","A674:2241:2242:2243" +"Unitymedia","euronews","dvbc",402000,6900,"256qam",0,0,"P274:633:635:684:2241:2242:2243","A684:2241:2242:2243" +"Unitymedia","euronews","dvbc",402000,6900,"256qam",0,0,"P275:633:635:694:2241:2242:2243","A694:2241:2242:2243" +"Unitymedia","euronews","dvbc",402000,6900,"256qam",0,0,"P279:633:635:734:2241:2242:2243","A734:2241:2242:2243" +"Unitymedia","euronews","dvbc",402000,6900,"256qam",0,0,"P280:633:635:744:2241:2242:2243","A744:2241:2242:2243" +"Unitymedia","euronews","dvbc",402000,6900,"256qam",0,0,"P281:633:635:754:2241:2242:2243","A754:2241:2242:2243" +"ARD","Das Erste","dvbc",410000,6900,"256qam",0,0,"P100:101:104:102:103:106","A102:103:106" +"ARD","Bayerisches FS Süd","dvbc",410000,6900,"256qam",0,0,"P200:201:204:202:203:206","A202:203:206" +"ARD","hr-fernsehen","dvbc",410000,6900,"256qam",0,0,"P300:301:304:302:303","A302:303" +"ARD","Bayerisches FS Nord","dvbc",410000,6900,"256qam",0,0,"P500:201:204:202:203:206","A202:203:206" +"ARD","WDR Köln","dvbc",410000,6900,"256qam",0,0,"P600:601:604:602:603","A602:603" +"ARD","SWR Fernsehen BW","dvbc",410000,6900,"256qam",0,0,"P800:801:804:802:803:806","A802:803:806" +"ARD","Das Erste HD","dvbc",418000,6900,"256qam",0,0,"P6000:6010:6030:6020:6021:6022","A6020:6021:6022" +"ARD","BR-alpha","dvbc",418000,6900,"256qam",0,0,"P1400:1401:1404:1402:1403:1406","A1402:1403:1406" +"ARD","tagesschau24","dvbc",418000,6900,"256qam",0,0,"P100:101:104:102","A102" +"ARD","Einsfestival","dvbc",418000,6900,"256qam",0,0,"P200:201:204:202:203:206","A202:203:206" +"ARD","EinsPlus","dvbc",418000,6900,"256qam",0,0,"P300:301:304:302:303:306","A302:303:306" +"ARD","arte","dvbc",418000,6900,"256qam",0,0,"P400:401:404:402:403","A402:403" +"ARD","PHOENIX","dvbc",418000,6900,"256qam",0,0,"P500:501:504:502:503","A502:503" +"ARD","rbb Brandenburg","dvbc",426000,6900,"256qam",0,0,"P500:601:604:602:603","A602:603" +"ARD","rbb Berlin","dvbc",426000,6900,"256qam",0,0,"P600:601:604:602:603","A602:603" +"ARD","NDR FS MV","dvbc",426000,6900,"256qam",0,0,"P2400:2601:2604:2602:2603","A2602:2603" +"ARD","NDR FS HH","dvbc",426000,6900,"256qam",0,0,"P2500:2601:2604:2602:2603","A2602:2603" +"ARD","NDR FS NDS","dvbc",426000,6900,"256qam",0,0,"P2600:2601:2604:2602:2603","A2602:2603" +"ARD","NDR FS SH","dvbc",426000,6900,"256qam",0,0,"P2700:2601:2604:2602:2603","A2602:2603" +"ARD","MDR Sachsen","dvbc",426000,6900,"256qam",0,0,"P2800:2901:2904:2902:2903","A2902:2903" +"ARD","MDR S-Anhalt","dvbc",426000,6900,"256qam",0,0,"P2900:2901:2904:2902:2903","A2902:2903" +"ARD","MDR Thüringen","dvbc",426000,6900,"256qam",0,0,"P3000:2901:2904:2902:2903","A2902:2903" +"ARD","SWR Fernsehen RP","dvbc",426000,6900,"256qam",0,0,"P3100:3101:3104:3102:3103:3106","A3102:3103:3106" +"Unitymedia","TRT Türk","dvbc",434000,6900,"256qam",0,0,"P268:623:626:625:624","A624" +"Unitymedia","RTL Television","dvbc",442000,6900,"256qam",0,0,"P258:523:528:524:525","A524:525" +"Unitymedia","SAT.1","dvbc",442000,6900,"256qam",0,0,"P259:533:538:534:536","A534:536" +"Unitymedia","ProSieben","dvbc",442000,6900,"256qam",0,0,"P260:543:548:544:545","A544:545" +"Unitymedia","VOX","dvbc",442000,6900,"256qam",0,0,"P261:553:558:554","A554" +"Unitymedia","RTL2","dvbc",442000,6900,"256qam",0,0,"P262:563:568:564","A564" +"Unitymedia","kabel eins","dvbc",442000,6900,"256qam",0,0,"P263:573:578:574","A574" +"Unitymedia","Super RTL","dvbc",442000,6900,"256qam",0,0,"P265:583:588:584","A584" +"Unitymedia","n-tv","dvbc",442000,6900,"256qam",0,0,"P266:593:598:594","A594" +"Unitymedia","N24","dvbc",442000,6900,"256qam",0,0,"P267:603:608:604","A604" +"Unitymedia","DAS VIERTE","dvbc",450000,6900,"256qam",0,0,"P257:513:518:514","A514" +"Unitymedia","Nick/Comedy Central","dvbc",450000,6900,"256qam",0,0,"P259:533:539:538:534","A534" +"Unitymedia","EUROSPORT","dvbc",450000,6900,"256qam",0,0,"P260:543:548:544","A544" +"Unitymedia","SPORT1","dvbc",450000,6900,"256qam",0,0,"P278:723:728:724","A724" +"Unitymedia","Tele 5","dvbc",450000,6900,"256qam",0,0,"P279:733:738:734","A734" +"Unitymedia","Bibel TV","dvbc",466000,6900,"256qam",0,0,"P266:603:606:604","A604" +"Unitymedia","K-TV","dvbc",466000,6900,"256qam",0,0,"P261:553:558:554","A554" +"Unitymedia","Servus TV","dvbc",522000,6900,"256qam",0,0,"P262:563:568:564","A564" +"Unitymedia","HSE24 TREND","dvbc",522000,6900,"256qam",0,0,"P261:553:558:554","A554" +"Unitymedia","QVC Plus","dvbc",522000,6900,"256qam",0,0,"P257:513:518:514","A514" +"Unitymedia","iM1","dvbc",522000,6900,"256qam",0,0,"P258:523:524","A524" +"Unitymedia","Juwelo","dvbc",522000,6900,"256qam",0,0,"P259:533:534","A534" +"Unitymedia","QVC","dvbc",522000,6900,"256qam",0,0,"P263:573:578:574","A574" +"Unitymedia","HSE24","dvbc",522000,6900,"256qam",0,0,"P264:583:588:584","A584" +"Unitymedia","DELUXE MUSIC","dvbc",522000,6900,"256qam",0,0,"P260:543:544","A544" +"Unitymedia","HSE24 EXTRA","dvbc",522000,6900,"256qam",0,0,"P265:593:598:594","A594" +"Unitymedia","QVC Beauty","dvbc",522000,6900,"256qam",0,0,"P267:613:618:614","A614" +"Unitymedia","SIXX","dvbc",530000,6900,"256qam",0,0,"P263:573:578:574","A574" +"Unitymedia","Viva","dvbc",530000,6900,"256qam",0,0,"P257:513:519:518:514","A514" +"Unitymedia","Channel21","dvbc",530000,6900,"256qam",0,0,"P258:523:528:524","A524" +"Unitymedia","1-2-3.tv","dvbc",530000,6900,"256qam",0,0,"P259:533:538:534","A534" +"Unitymedia","DMAX","dvbc",530000,6900,"256qam",0,0,"P260:543:548:544","A544" +"Unitymedia","CNN","dvbc",530000,6900,"256qam",0,0,"P261:553:554","A554" +"Unitymedia","sonnenklar.TV","dvbc",530000,6900,"256qam",0,0,"P262:563:568:564","A564" +"Unitymedia","TV5MONDE Europe","dvbc",530000,6900,"256qam",0,0,"P264:583:588:584","A584" +"Unitymedia","SAT.1 Gold","dvbc",530000,6900,"256qam",0,0,"P266:603:608:604","A604" +"Unitymedia","RTL NITRO","dvbc",530000,6900,"256qam",0,0,"P267:613:618:614","A614" +"Unitymedia","SonLife","dvbc",538000,6900,"256qam",0,0,"P268:623:624","A624" +"Unitymedia","CCTV9","dvbc",538000,6900,"256qam",0,0,"P266:603:604","A604" +"Unitymedia","SKY News","dvbc",538000,6900,"256qam",0,0,"P264:583:584","A584" +"Unitymedia","Astro TV","dvbc",546000,6900,"256qam",0,0,"P268:623:628:624","A624" +"Unitymedia","joiz","dvbc",554000,6900,"256qam",0,0,"P257:513:514","A514" +"Unitymedia","Bloomberg","dvbc",554000,6900,"256qam",0,0,"P266:603:604","A604" +"Unitymedia","BBC World News","dvbc",570000,6900,"256qam",0,0,"P257:513:514","A514" +"Unitymedia","France 24","dvbc",570000,6900,"256qam",0,0,"P259:533:534","A534" +"Unitymedia","Al Jazeera International","dvbc",570000,6900,"256qam",0,0,"P260:543:544","A544" +"Unitymedia","Russia Today","dvbc",570000,6900,"256qam",0,0,"P261:553:554","A554" +"Unitymedia","CCTV News","dvbc",570000,6900,"256qam",0,0,"P262:563:564","A564" +"Unitymedia","Unitymedia Videothek","dvbc",610000,6900,"256qam",0,0,"P257:513:514","A514" +"Unitymedia","Mehr Programm","dvbc",610000,6900,"256qam",0,0,"P259:515","A" +"Unitymedia","Programm 25110","dvbc",746000,6900,"256qam",0,0,"P257:513","A" +"ARD","arte HD","dvbc",762000,6900,"64qam",0,0,"P257:513:518:514:515:516","A514:515:516" +"Unitymedia","ServusTV HD","dvbc",762000,6900,"64qam",0,0,"P258:523:528:524:525:526","A524:525:526" +"Unitymedia","QVC HD","dvbc",762000,6900,"64qam",0,0,"P259:533:538:534","A534" +"Unitymedia","HSE24 HD","dvbc",762000,6900,"64qam",0,0,"P260:543:548:544","A544" diff --git a/octoserve/var/dms/ConnectionManager.lua b/octoserve/var/dms/ConnectionManager.lua new file mode 100644 index 0000000..bb5e1b5 --- /dev/null +++ b/octoserve/var/dms/ConnectionManager.lua @@ -0,0 +1,90 @@ + +ConnectionManager = {} + +function ConnectionManager:Description() + t = "" + local f = io.open("ConnectionManager.xml","r") + if not f then os.exit() end + while true do + local line = f:read() + if not line then break end + t = t .. line .. "\r\n" + end + f:close() + return t +end + +local dlnaprofile = 'DLNA.ORG_PN=MPEG_TS;DLNA.ORG_OP=00;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000' +local dlnaschema = ' xmlns:dlna="urn:schemas-dlna-org:metadata-1-0"' + +if DisableDLNA then + dlnaprofile = '*' + dlnaschema = '' +end + +local Schema = 'xmlns:u="urn:schemas-upnp-org:service:ConnectionManager:1"' + + +local ProtocolInfo = 'rtsp-rtp-udp:*:video/mp2t:'..dlnaprofile + .. ','..'rtsp-rtp-udp:*:audio/mp2t:'..dlnaprofile + -- ','..'http-get:*:video/x-ms-wmv:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000' -- TEST + + +function ConnectionManager:Invoke(client,Attributes,Request) + local Action = string.match(Attributes["SOAPACTION"],".+%#([%a%d%-_]+)") + local Host = tostring(Attributes["host"]) + + print(Host,"ConnectionManager",Action) + + if Action == "GetProtocolInfo" then + UPnP:SendResponse(client,UPnP:CreateResponse(Schema,Action,{{ n = "Source", v = ProtocolInfo }, { n = "Sink", v = "" }})) + elseif Action == "GetCurrentConnectionIDs" then + UPnP:SendResponse(client,UPnP:CreateResponse(Schema,Action,{{ n = "ConnectionIDs", v = "0" }})) + elseif Action == "GetCurrentConnectionInfo" then + UPnP:SendSoapError(client,706) + else + UPnP:SendSoapError(client,401) + end + return +end + + +function ConnectionManager:Subscribe(client,callback,timeout) + local r = "HTTP/1.1 200 OK\r\n" + .. 'Content-Type: text/xml; charset="utf-8"\r\n' + .. "Server: "..UPnP.Server.."\r\n" + .. "SID: uuid:50c95801-e839-4b96-b7ae-779d989e1399\r\n" + .. "Timeout: Second-1800\r\n" + .. "Content-Length: 0\r\n" + .. "Connection: close\r\n" + .. "EXT:\r\n" + .. "\r\n" + client:send(r) + + local ipaddr,port = client:getpeername() + local Args = { { n = "SourceProtocolInfo", v = ProtocolInfo }, { n = "SourceProtocolInfo", v = "" }, { n = "CurrentConnectionIDs", v = "0" } } + UPnP:SendEvent(callback,"50c95801-e839-4b96-b7ae-779d989e1399",0,Args) +end + +function ConnectionManager:Renew(client,sid,timeout) + local r = "HTTP/1.1 200 OK\r\n" + .. 'Content-Type: text/xml; charset="utf-8"\r\n' + .. "Server: "..UPnP.Server.."\r\n" + .. "SID: uuid:50c95801-e839-4b96-b7ae-779d989e1399\r\n" + .. "Timeout: Second-1800\r\n" + .. "Content-Length: 0\r\n" + .. "Connection: close\r\n" + .. "EXT:\r\n" + .. "\r\n" + client:send(r) +end + +function ConnectionManager:Unsubscribe(client,sid) + local r = "HTTP/1.1 200 OK\r\n" + .. "Server: "..UPnP.Server.."\r\n" + .. "Connection: close\r\n" + .. "\r\n" + client:send(r) +end + +return ConnectionManager \ No newline at end of file diff --git a/octoserve/var/dms/ConnectionManager.xml b/octoserve/var/dms/ConnectionManager.xml new file mode 100644 index 0000000..05905ba --- /dev/null +++ b/octoserve/var/dms/ConnectionManager.xml @@ -0,0 +1,134 @@ + + + +1 +0 + + + + GetProtocolInfo + + + Source + out + SourceProtocolInfo + + + Sink + out + SinkProtocolInfo + + + + + GetCurrentConnectionIDs + + + ConnectionIDs + out + CurrentConnectionIDs + + + + + GetCurrentConnectionInfo + + + ConnectionID + in + A_ARG_TYPE_ConnectionID + + + RcsID + out + A_ARG_TYPE_RcsID + + + AVTransportID + out + A_ARG_TYPE_AVTransportID + + + ProtocolInfo + out + A_ARG_TYPE_ProtocolInfo + + + PeerConnectionManager + out + A_ARG_TYPE_ConnectionManager + + + PeerConnectionID + out + A_ARG_TYPE_ConnectionID + + + Direction + out + A_ARG_TYPE_Direction + + + Status + out + A_ARG_TYPE_ConnectionStatus + + + + + + + + SourceProtocolInfo + string + + + SinkProtocolInfo + string + + + CurrentConnectionIDs + string + + + A_ARG_TYPE_ConnectionStatus + string + + OK + ContentFormatMismatch + InsufficientBandwidth + UnreliableChannel + Unknown + + + + A_ARG_TYPE_ConnectionManager + string + + + A_ARG_TYPE_Direction + string + + Input + Output + + + + A_ARG_TYPE_ProtocolInfo + string + + + A_ARG_TYPE_ConnectionID + i4 + + + A_ARG_TYPE_AVTransportID + i4 + + + A_ARG_TYPE_RcsID + i4 + + + + \ No newline at end of file diff --git a/octoserve/var/dms/ContentDirectory.lua b/octoserve/var/dms/ContentDirectory.lua new file mode 100644 index 0000000..a5cf6fc --- /dev/null +++ b/octoserve/var/dms/ContentDirectory.lua @@ -0,0 +1,422 @@ + + +local ContentDirectory = {} + +local db = require("DataBase") + +-- local dlnaprofile = 'DLNA.ORG_PN=MPEG_TS;DLNA.ORG_OP=00;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=0D100000000000000000000000000000' +local dlnaprofile = 'DLNA.ORG_PN=MPEG_TS;DLNA.ORG_OP=00;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=8D100000000000000000000000000000' +local dlnaschema = ' xmlns:dlna="urn:schemas-dlna-org:metadata-1-0"' + +if DisableDLNA then + dlnaprofile = '*' + dlnaschema = '' +end + +local Schema = 'xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1"' + +local DIDLStart = '' -- '<?xml version="1.0" encoding="utf-8"?>' + ..'<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/"' + ..' xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/"' + ..' xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"' + -- .. dlnaschema + ..'>' +local DIDLEnd = '</DIDL-Lite>' + +-- State variables +local SystemUpdateID = 36 +-- --------------- +---------------------------------------------------------------------------------------------------------------------------------------- + +local AllFolders = {} +local RootFolders = {} +local Folders = {} +local AllItems = {} + +local i,f,vi,ai + +----- Hierarchical Folders + +RootFolders[#RootFolders+1] = { title = "All", id = "64" } +RootFolders[#RootFolders+1] = { title = "Audio", id = "1" } +RootFolders[#RootFolders+1] = { title = "Images", id = "3" } +RootFolders[#RootFolders+1] = { title = "Video", id = "2" } +for _,f in ipairs(RootFolders) do + f.VideoItems = {} + f.AudioItems = {} + f.ChildFolders = {} + AllFolders[f.id] = f +end +AllFolders["2"].ChildFolders = Folders +AllFolders["64"].ChildFolders = Folders + +---- + +for _,f in ipairs(db.SourceList) do + f.id = f.refid + f.VideoItems = {} + f.AudioItems = {} + f.ChildFolders = {} + table.insert(Folders,f) +-- table.insert(RootFolders,f) + AllFolders[f.id] = f +end + +for _,vi in ipairs(db.ChannelList) do + f = AllFolders[vi.refid] + vi.id = f.id.."$"..tostring(#f.VideoItems) + vi.src = f.src + vi.parentID = f.id + vi.request = string.gsub(vi.request,'&','&amp;') + vi.title = string.gsub(vi.title,'&','&amp;') + vi.title = string.gsub(vi.title,'<','&lt;') + vi.title = string.gsub(vi.title,'>','&gt;') + table.insert(f.VideoItems,vi) + AllItems[vi.id] = vi +end + +----- Add Stream Folder + +f = {} +f.id = "STRM" +f.title = "Current Streams" +f.VideoItems = {} +f.AudioItems = {} +f.ChildFolders = {} +table.insert(Folders,f) +AllFolders[f.id] = f +for i = 1,4,1 do + vi = { id = f.id.."$"..tostring(i-1), parentID = f.id, title = "Stream "..tostring(i), stream = tostring(i) } + table.insert(f.VideoItems,vi) + AllItems[vi.id] = vi +end + +---------------------------------------------------------------------------------------------------------------------------------------- + +local function Folder(title,id,parentid,childCount) + local F = '<container id="'..id..'" parentID="'..parentid..'"' + -- ..' childCount="'..childCount..'"' + ..' restricted="1"' + -- ..' searchable="1"' + ..'>' + ..'<dc:title>'..title..'</dc:title>' + ..'<upnp:class>object.container.storageFolder</upnp:class>' + ..'</container>' + return F +end + +local function VideoItem(Host,Item,nCompat) + local rtspreq = '' + if Item.stream then + rtspreq = 'stream='..Item.stream + else + -- Some clients don't like a long request url, or an url with '&' in it + -- Fail them for now + -- if nCompat then + -- rtspreq = "stream_99" + -- elseif Item.src then + if Item.src then + rtspreq = '?src='..Item.src..'&amp;'..Item.request + else + rtspreq = '?'..Item.request + end + end + + local didl = '<item id="'..Item.id..'" parentID="'..Item.parentID + didl = didl .. '" restricted="1">' + ..'<dc:title>'..Item.title..'</dc:title>' + ..'<upnp:class>object.item.videoItem.videoBroadcast</upnp:class>' + if Item.channelNr then + didl = didl ..'<upnp:channelNr>'..Item.channelNr..'</upnp:channelNr>' + end + didl = didl ..'<res' + ..' protocolInfo="rtsp-rtp-udp:*:video/mpeg:'..dlnaprofile..'">' + ..'rtsp://'..Host..':554/'..rtspreq + ..'</res>' + didl = didl ..'</item>' + return didl + +end + + +local function BrowseChildren(client,Host,Request,nCompat) + local ObjectID = UPnP:GetRequestParam(Request,"ObjectID") + local BrowseFlag = UPnP:GetRequestParam(Request,"BrowseFlag") + local Filter = UPnP:GetRequestParam(Request,"Filter") + local StartingIndex = tonumber(UPnP:GetRequestParam(Request,"StartingIndex")) + local RequestedCount = tonumber(UPnP:GetRequestParam(Request,"RequestedCount")) + print("BrowseChildren",ObjectID,Filter,StartingIndex,RequestedCount) + + local didl = DIDLStart; + local Error = 0 + local NumberReturned = 0 + local TotalMatches = 0 + local UpdateID = SystemUpdateID + local f,vi,ai + + if ObjectID == "0" then + if nCompat then + for _,f in ipairs(RootFolders) do + didl = didl..Folder(f.title,f.id,ObjectID,tostring(#f.VideoItems + #f.AudioItems + #f.ChildFolders)) + NumberReturned = NumberReturned + 1 + TotalMatches = TotalMatches +1 + end + else + for _,f in ipairs(Folders) do + didl = didl..Folder(f.title,f.id,ObjectID,tostring(#f.VideoItems + #f.AudioItems + #f.ChildFolders)) + NumberReturned = NumberReturned + 1 + TotalMatches = TotalMatches +1 + end + end + + else + local f = AllFolders[ObjectID] + if f then + + local Index = 0 + for i,cf in ipairs(f.ChildFolders) do + if Index >= StartingIndex and (RequestedCount == 0 or NumberReturned < RequestedCount) then + didl = didl..Folder(cf.title,cf.id,ObjectID,tostring(#cf.VideoItems + #cf.AudioItems + #cf.ChildFolders)) + NumberReturned = NumberReturned + 1 + end + Index = Index + 1 + TotalMatches = TotalMatches +1 + end + + for i,vi in ipairs(f.VideoItems) do + if Index >= StartingIndex and (RequestedCount == 0 or NumberReturned < RequestedCount) then + didl = didl..VideoItem(Host,vi,nCompat) + NumberReturned = NumberReturned + 1 + end + Index = Index + 1 + TotalMatches = TotalMatches +1 + end + + else + Error = 710 + end + end + + didl = didl..DIDLEnd + print("Returned",StartingIndex,NumberReturned,TotalMatches,Error) + + if Error == 0 then + local Args = { { n = "Result", v = didl }, { n = "NumberReturned", v = tostring(NumberReturned)}, + { n = "TotalMatches", v = tostring(TotalMatches)}, { n = "UpdateID", v = tostring(UpdateID) } } + UPnP:SendResponse(client,UPnP:CreateResponse(Schema,"Browse",Args)) + else + UPnP:SendSoapError(client,Error) + end + + return +end + +local function BrowseMetaData(client,Host,Request,nCompat) + local ObjectID = UPnP:GetRequestParam(Request,"ObjectID") + local didl = DIDLStart; + local UpdateID = SystemUpdateID + local Error = 0 + + if ObjectID == "0" then + local ChildCount = #Folders + if nCompat then ChildCount = #RootFolders end + didl = didl .. '<container id="1" parentID = "-1" childCount="'..tostring(ChildCount)..'" restricted="true">>' + .. '<:dc:title>OctopusNet</dc:title>' + ..'<upnp:class>object.container.storageFolder</upnp:class>' + ..'</container>' + else + local f = AllFolders[ObjectID] + if f then + didl = didl..Folder(f.title,f.id,ObjectID,tostring(#f.VideoItems + #f.AudioItems + #f.ChildFolders)) + else + local item = AllItems[ObjectID] + if item then + didl = didl..VideoItem(Host,item,nCompat) + else + Error = 710 + end + end + end + + didl = didl..DIDLEnd + + if Error == 0 then + local Args = { { n = "Result", v = didl }, { n = "NumberReturned", v = "1"}, + { n = "TotalMatches", v = "1"}, { n = "UpdateID", v = tostring(UpdateID) } } + UPnP:SendResponse(client,UPnP:CreateResponse(Schema,"Browse",Args)) + else + UPnP:SendSoapError(client,Error) + end + + didl = DIDLEnd; +end + +local function Search(client,Host,Request,nCompat) + local ContainerID = UPnP:GetRequestParam(Request,"ContainerID") + local SearchCriteria = UPnP:GetRequestParam(Request,"SearchCriteria") + local Filter = UPnP:GetRequestParam(Request,"Filter") + local StartingIndex = tonumber(UPnP:GetRequestParam(Request,"StartingIndex")) + local RequestedCount = tonumber(UPnP:GetRequestParam(Request,"RequestedCount")) + local SortCriteria = UPnP:GetRequestParam(Request,"SortCriteria") + print(SearchCriteria,ContainerID,Filter,StartingIndex,RequestedCount,SortCriteria) + + local didl = DIDLStart; + local Error = 0 + local NumberReturned = 0 + local TotalMatches = 0 + local UpdateID = SystemUpdateID + + if string.match(SearchCriteria,"videoItem") then + + if ContainerID == "0" then + if not nCompat or nCompat ~= "WMP" then + local Index = 0 + for _,vi in pairs(AllItems) do + if Index >= StartingIndex and (RequestedCount == 0 or NumberReturned < RequestedCount) then + didl = didl..VideoItem(Host,vi,nCompat) + NumberReturned = NumberReturned + 1 + end + Index = Index + 1 + TotalMatches = TotalMatches + 1 + -- if nCompat and TotalMatches > 19 then break end + end + end + + else + local f = AllFolders[ContainerID] + if f then + local src = f.src + if src then src = "src="..src.."&" else src = "" end + + local Index = 0 + for _,vi in ipairs(f.VideoItems) do + if Index >= StartingIndex and (RequestedCount == 0 or NumberReturned < RequestedCount) then + didl = didl..VideoItem(Host,vi,nCompat) + NumberReturned = NumberReturned + 1 + end + Index = Index + 1 + TotalMatches = TotalMatches +1 + end + else + Error = 710 + end + end + end + + didl = didl..DIDLEnd + -- didl = TestDidl + -- NumberReturned = 1 + -- TotalMatches = 1 + print("Returned",StartingIndex,NumberReturned,TotalMatches,Error) + + + if Error == 0 then + local Args = { { n = "Result", v = didl }, { n = "NumberReturned", v = tostring(NumberReturned)}, + { n = "TotalMatches", v = tostring(TotalMatches)}, { n = "UpdateID", v = tostring(UpdateID) } } + UPnP:SendResponse(client,UPnP:CreateResponse(Schema,"Search",Args)) + else + UPnP:SendSoapError(client,Error) + end + + return +end + +local function SendResult(client,Action,VarName,Result) + local Args = { { n = VarName, v = Result } } + UPnP:SendResponse(client,UPnP:CreateResponse(Schema,Action,Args)) +end + +function ContentDirectory:Invoke(client,Attributes,Request) + local Action = string.match(Attributes["SOAPACTION"],".+%#([%a%d%-_]+)") + local Host = tostring(Attributes["host"]) + + local Compability = nil + if Attributes["USER-AGENT"] then + if string.match(Attributes["USER-AGENT"],"Windows%-Media%-Player") then Compability = "WMP" + elseif string.match(Attributes["USER-AGENT"],"IPI%/1%.0") then Compability = "IPI" + end + end + print("Compability=",Compability) + + print(Host,"ContentDirectory",Action) + if Action == "Browse" then + local BrowseFlag = tostring(UPnP:GetRequestParam(Request,"BrowseFlag")) + if BrowseFlag == "BrowseDirectChildren" then + BrowseChildren(client,Host,Request,Compability) + elseif BrowseFlag == "BrowseMetadata" then + BrowseMetaData(client,Host,Request,Compability) + else + UPnP:SendSoapError(client,710) + end + elseif Action == "Search" then + Search(client,Host,Request,Compability) + -- elseif Action == "X_GetRemoteSharingStatus" then + -- SendResult(client,Action,"0") + elseif Action == "GetSortCapabilities" then + SendResult(client,Action,"SortCaps","dc:title,upnp:class,upnp:originalTrackNumber") + elseif Action == "GetSearchCapabilities" then + SendResult(client,Action,"SearchCaps","dc:title") + elseif Action == "GetSystemUpdateID" then + SendResult(client,Action,"Id","1") + else + UPnP:SendSoapError(client,401) + end +end + +function ContentDirectory:Subscribe(client,callback,timeout) + local r = "HTTP/1.1 200 OK\r\n" + .. 'Content-Type: text/xml; charset="utf-8"\r\n' + .. "Server: "..UPnP.Server.."\r\n" + .. "SID: uuid:50c95800-e839-4b96-b7ae-779d989e1399\r\n" + .. "Timeout: Second-1800\r\n" + .. "Content-Length: 0\r\n" + .. "Connection: close\r\n" + .. "EXT:\r\n" + .. "\r\n" + client:send(r) + + local ipaddr,port = client:getpeername() + local Args = { { n = "TransferIDs", v = "" }, { n = "SystemUpdateID", v = tostring(SystemUpdateID) } } + UPnP:SendEvent(callback,"50c95800-e839-4b96-b7ae-779d989e1399",0,Args) + +end + +function ContentDirectory:Renew(client,sid,timeout) + local r = "HTTP/1.1 200 OK\r\n" + .. 'Content-Type: text/xml; charset="utf-8"\r\n' + .. "Server: "..UPnP.Server.."\r\n" + .. "SID: uuid:50c95800-e839-4b96-b7ae-779d989e1399\r\n" + .. "Timeout: Second-1800\r\n" + .. "Content-Length: 0\r\n" + .. "Connection: close\r\n" + .. "EXT:\r\n" + .. "\r\n" + client:send(r) +end + +function ContentDirectory:Unsubscribe(client,sid) + local r = "HTTP/1.1 200 OK\r\n" + .. 'Content-Type: text/xml; charset="utf-8"\r\n' + .. "Server: "..UPnP.Server.."\r\n" + .. "Content-Length: 0\r\n" + .. "Connection: close\r\n" + .. "EXT:\r\n" + .. "\r\n" + client:send(r) +end + + +function ContentDirectory:Description() + t = "" + local f = io.open("ContentDirectory.xml","r") + if not f then os.exit() end + while true do + local line = f:read() + if not line then break end + t = t .. line .. "\r\n" + end + f:close() + return t +end + +return ContentDirectory \ No newline at end of file diff --git a/octoserve/var/dms/ContentDirectory.xml b/octoserve/var/dms/ContentDirectory.xml new file mode 100644 index 0000000..c353b92 --- /dev/null +++ b/octoserve/var/dms/ContentDirectory.xml @@ -0,0 +1,207 @@ + + + + 1 + 0 + + + + GetSearchCapabilities + + + SearchCaps + out + SearchCapabilities + + + + + GetSortCapabilities + + + SortCaps + out + SortCapabilities + + + + + GetSystemUpdateID + + + Id + out + SystemUpdateID + + + + + Browse + + + ObjectID + in + A_ARG_TYPE_ObjectID + + + BrowseFlag + in + A_ARG_TYPE_BrowseFlag + + + Filter + in + A_ARG_TYPE_Filter + + + StartingIndex + in + A_ARG_TYPE_Index + + + RequestedCount + in + A_ARG_TYPE_Count + + + SortCriteria + in + A_ARG_TYPE_SortCriteria + + + Result + out + A_ARG_TYPE_Result + + + NumberReturned + out + A_ARG_TYPE_Count + + + TotalMatches + out + A_ARG_TYPE_Count + + + UpdateID + out + A_ARG_TYPE_UpdateID + + + + + Search + + + ContainerID + in + A_ARG_TYPE_ObjectID + + + SearchCriteria + in + A_ARG_TYPE_SearchCriteria + + + Filter + in + A_ARG_TYPE_Filter + + + StartingIndex + in + A_ARG_TYPE_Index + + + RequestedCount + in + A_ARG_TYPE_Count + + + SortCriteria + in + A_ARG_TYPE_SortCriteria + + + Result + out + A_ARG_TYPE_Result + + + NumberReturned + out + A_ARG_TYPE_Count + + + TotalMatches + out + A_ARG_TYPE_Count + + + UpdateID + out + A_ARG_TYPE_UpdateID + + + + + + + TransferIDs + string + + + A_ARG_TYPE_ObjectID + string + + + A_ARG_TYPE_Result + string + + + A_ARG_TYPE_SearchCriteria + string + + + A_ARG_TYPE_BrowseFlag + string + + BrowseMetadata + BrowseDirectChildren + + + + A_ARG_TYPE_Filter + string + + + A_ARG_TYPE_SortCriteria + string + + + A_ARG_TYPE_Index + ui4 + + + A_ARG_TYPE_Count + ui4 + + + A_ARG_TYPE_UpdateID + ui4 + + + SearchCapabilities + string + + + SortCapabilities + string + + + SystemUpdateID + ui4 + + + \ No newline at end of file diff --git a/octoserve/var/dms/MediaReceiverRegistrar.lua b/octoserve/var/dms/MediaReceiverRegistrar.lua new file mode 100644 index 0000000..15bbc7c --- /dev/null +++ b/octoserve/var/dms/MediaReceiverRegistrar.lua @@ -0,0 +1,80 @@ + +MediaReceiverRegistrar = {} + +function MediaReceiverRegistrar:Description() + t = "" + local f = io.open("MediaReceiverRegistrar.xml","r") + if not f then os.exit() end + while true do + local line = f:read() + if not line then break end + t = t .. line .. "\r\n" + end + f:close() + return t +end + +local function SendResult(client,Action,Result) + local Args = { { n = "Result", v = Result } } + UPnP:SendResponse(client,UPnP:CreateResponse('xmlns:u="urn:microsoft-com:service:X_MS_MediaReceiverRegistrar:1"',Action,Args)) +end + + +function MediaReceiverRegistrar:Invoke(client,Attributes,Request) + local Action = string.match(Attributes["SOAPACTION"],".+%#(%a+)") + print("MediaReceiverRegistrar",Action) + if Action == "IsAuthorized" then + SendResult(client,Action,"1") + -- UPnP:SendSoapError(client,402) + elseif Action == "IsValidated" then + SendResult(client,Action,"1") + else + UPnP:SendSoapError(client,401) + end + return +end + + + + +function MediaReceiverRegistrar:Subscribe(client,callback,timeout) + local r = "HTTP/1.1 200 OK\r\n" + .. 'Content-Type: text/xml; charset="utf-8"\r\n' + .. "Server: "..UPnP.Server.."\r\n" + .. "SID: uuid:50c95802-e839-4b96-b7ae-779d989e1399\r\n" + .. "Timeout: Second-1800\r\n" + .. "Content-Length: 0\r\n" + .. "Connection: close\r\n" + .. "EXT:\r\n" + .. "\r\n" + client:send(r) + + local ipaddr,port = client:getpeername() + UPnP:SendEvent(callback,"50c95802-e839-4b96-b7ae-779d989e1399",0,{} ) +end + +function MediaReceiverRegistrar:Renew(client,sid,timeout) + local r = "HTTP/1.1 200 OK\r\n" + .. 'Content-Type: text/xml; charset="utf-8"\r\n' + .. "Server: "..UPnP.Server.."\r\n" + .. "SID: uuid:50c95802-e839-4b96-b7ae-779d989e1399\r\n" + .. "Timeout: Second-1800\r\n" + .. "Content-Length: 0\r\n" + .. "Connection: close\r\n" + .. "EXT:\r\n" + .. "\r\n" + client:send(r) +end + +function MediaReceiverRegistrar:Unsubscribe(client,sid) + local r = "HTTP/1.1 200 OK\r\n" + .. "Server: "..UPnP.Server.."\r\n" + .. "Connection: close\r\n" + .. "\r\n" + client:send(r) +end + + + + +return MediaReceiverRegistrar \ No newline at end of file diff --git a/octoserve/var/dms/MediaReceiverRegistrar.xml b/octoserve/var/dms/MediaReceiverRegistrar.xml new file mode 100644 index 0000000..660a377 --- /dev/null +++ b/octoserve/var/dms/MediaReceiverRegistrar.xml @@ -0,0 +1,73 @@ + + + + 1 + 0 + + + + IsAuthorized + + + DeviceID + in + A_ARG_TYPE_DeviceID + + + Result + out + A_ARG_TYPE_Result + + + + + IsValidated + + + DeviceID + in + A_ARG_TYPE_DeviceID + + + Result + out + A_ARG_TYPE_Result + + + + + + + A_ARG_TYPE_DeviceID + string + + + A_ARG_TYPE_RegistrationReqMsg + bin.base64 + + + A_ARG_TYPE_RegistrationRespMsg + bin.base64 + + + A_ARG_TYPE_Result + int + + + AuthorizationDeniedUpdateID + ui4 + + + AuthorizationGrantedUpdateID + ui4 + + + ValidationRevokedUpdateID + ui4 + + + ValidationSucceededUpdateID + ui4 + + + \ No newline at end of file diff --git a/octoserve/var/dms/SendEvent.lua b/octoserve/var/dms/SendEvent.lua new file mode 100644 index 0000000..54a82c4 --- /dev/null +++ b/octoserve/var/dms/SendEvent.lua @@ -0,0 +1,68 @@ +#!/usr/bin/lua + +local socket = require("socket") +local mime = require("mime") +local url = require("socket.url") + +print(#arg) +if #arg ~= 4 then + os.exit(1) +end + +local path, uuid, seq, b64 = unpack(arg) + +print(path,uuid,seq) +print(b64) + +local values = mime.unb64(b64) +if values == "nil" then + values ="" +end + +local evnt = ''.."\r\n" + .. ''.."\r\n" + .. "\r\n" + .. values + .. "\r\n" + .. "\r\n" + +-- socket.sleep(0.5) + +for p in string.gmatch(path,"<(.+)>") do + + local parsed_url = url.parse(p) + print(parsed_url.host,parsed_url.port,parsed_url.path) + + local ip = parsed_url.host + local port = parsed_url.port + local path = parsed_url.path + + if port and port ~= "0" then + print("send ",ip,port,path) + + local r = "NOTIFY "..path.." HTTP/1.1\r\n" + .. "Host: "..ip..":"..port.."\r\n" + .. "Content-Type: text/xml; charset=\"utf-8\"\r\n" + .. "Content-Length: "..string.format("%d",#evnt).."\r\n" + .. "NT: upnp:event\r\n" + .. "NTS: upnp:propchange\r\n" + .. "SID: uuid:"..uuid.."\r\n" + .. "SEQ: "..seq.."\r\n" + .. "\r\n" + .. evnt + + tcp = socket.tcp() + tcp:settimeout(2) + + if tcp:connect(ip,port) then + + tcp:send(r) + tcp:receive("*l") + tcp:close() + + break + end + tcp:close() + end + +end \ No newline at end of file diff --git a/octoserve/var/dms/UPnP.lua b/octoserve/var/dms/UPnP.lua new file mode 100644 index 0000000..928eeb8 --- /dev/null +++ b/octoserve/var/dms/UPnP.lua @@ -0,0 +1,220 @@ + +UPnP = {} + +local DebugFlag = false +local Server = "Linux/3.9 DLNADOC/1.50 UPnP/1.0 OctopusNet-DMS/1.0" + +if DisableDLNA then + Server = "Linux/3.9 UPnP/1.0 OctopusNet-DMS/1.0" +end + +function UPnP:SetDebug(f) + DebugFlag = f +end + +UPnP.Server = Server + +function UPnP:ParseHTTPHeader(header) + local linenum = 0 + local method,path,proto + local attributes = {} + + for line in string.gmatch(header,"(.-)\r\n") do + if not line then break end + if DebugFlag then print(string.format("%2d:%s",linenum,line)) end + if linenum == 0 then + method,path,proto = string.match(line,"(.+)%s+(.+)%s+(.+)") + else + local n,v = string.match(line,"([%a%-]+)%s*%:%s*(.*)") + if n and v then + attributes[string.upper(n)] = v + end + end + + linenum = linenum + 1 + end + return method,path,proto,attributes +end + + +function UPnP:ReadHTTPHeader(client) + + local linenum = 0 + local line, err = client:receive() + + if err then + if DebugFlag then print("HTTPHeader Error "..err) end + return + end + + if DebugFlag then print(string.format("%2d:%s",linenum,line)) end + local method,path,proto = string.match(line,"(.+)%s+(.+)%s+(.+)") + local attributes = {} + + while true do + local line, err = client:receive() + if err then + if DebugFlag then print("HTTPHeader Error "..err.." HTTP Line: "..tostring(linenum)) end + return + end + linenum = linenum + 1 + if DebugFlag then print(string.format("%2d:%s",linenum,line)) end + if line == "" then break end + + if linenum == 30 then + if DebugFlag then print("HTTPHeader Error "..tostring(linenum)) end + return + end + + local n,v = string.match(line,"([%a%-]+)%s*%:%s*(.*)") + if n and v then + attributes[string.upper(n)] = v + end + + end + + -- Add some preparsed params, Note lower case key + if attributes["HOST"] then + local Host,Port = string.match(attributes["HOST"],"(.+)%:(%d+)") + attributes["host"] = Host + attributes["port"] = Port + end + + return method,path,proto,attributes +end + +function UPnP:ReadHTTPBody(client,clen) + local Body = "" + local linenum = 0 + + if DebugFlag and clen then print(string.format("---- Length = %d",clen)) end + + Body, err = client:receive(clen) + + if err then + if DebugFlag then print("HTTPBody Error "..err) end + return + end + -- while true do + -- local line, err = client:receive() + -- if err then + -- if DebugFlag then print("Error "..err) end + -- return + -- end + -- linenum = linenum + 1 + -- if DebugFlag then print(string.format("%4d:%s",linenum,line)) end + -- if line == "" then break end + + -- if linenum == 300 then + -- if DebugFlag then print("Error "..linenum) end + -- return + -- end + -- Body = Body .. line .. "\n" + -- end + return Body +end + +function UPnP:ParseInvocation(soap,Service) +end + +function UPnP:CreateResponse(Service,Action,Args) + local n,v + local soap = ''..'\r\n' + .. "" + .. "" + for _,a in ipairs(Args) do + soap = soap .. "<"..a.n..">"..a.v.."" + end + soap = soap .. ""..'\r\n' + return soap +end + +function UPnP:SendResponse(client,Content) + local r = "HTTP/1.1 200 OK\r\n" + .. "Content-Type: text/xml; charset=\"utf-8\"\r\n" + .. "Connection: close\r\n" + .. "Content-Length: "..string.format("%d",#Content).."\r\n" + .. "Server: "..Server.."\r\n" + .. "Date: "..os.date("!%a, %d %b %Y %H:%M:%S GMT").."\r\n" + .. "EXT:\r\n" + .. "\r\n" + .. Content + + client:send(r) +end + +function UPnP:GetRequestParam(Request,Param) + return string.match(Request,"%<"..Param..".*%>%s*(.+)%s*%<%/"..Param.."%>") +end + +local SoapErrorDescription = {} +SoapErrorDescription[402] = "Invalid Args" + +function UPnP:SendSoapError(client,code) + local soap = '' + .. "" + .. "" + .. "" + .. "s:Client" + .. "UPnPError" + .. "" + .. '' + .. ''..code..'' + .. ''..tostring(SoapErrorDescription[code])..'' + .. '' + .. "" + .. "" + .. "" + .. "" + + local r = "HTTP/1.1 500 Internal Server Error\r\n" + .. "Content-Type: text/xml; charset=\"utf-8\"\r\n" + .. "Connection: close\r\n" + .. "Content-Length: "..string.format("%d",#soap).."\r\n" + .. "Server: "..Server.."\r\n" + .. "Date: "..os.date("!%a, %d %b %Y %H:%M:%S GMT").."\r\n" + .. "EXT:\r\n" + .. "\r\n" + .. soap + + client:send(r) +end + +function UPnP:SendHTTPError(client,code) + local r = "HTTP/1.1 " ..code.."\r\n" + .. "Content-Type: text/html\r\n" + .. "Connection: Close\r\n" + .. "Server: "..UPnP.Server.."\r\n" + .. "Date: "..os.date("!%a, %d %b %Y %H:%M:%S GMT").."\r\n" + .. "\r\n" + .. "Error "..code.."

Error "..code.."

\r\n" + client:send(r) +end + +function UPnP:SendEvent(path,uuid,seq,values) + local xml = "" + for _,v in ipairs(values) do + xml = xml .. "<"..v.n..">"..v.v.."\r\n" + end + if xml == "" then xml="nil" end + + local b64 = mime.b64(xml) + os.execute('lua SendEvent.lua "'..path..'" "'..uuid..'" "'..seq..'" "'..b64..'"&') +end + +function UPnP:SystemParameters(template) + local ifconfig = io.popen("ifconfig eth0") + assert(ifconfig) + local eth0 = ifconfig:read("*a") + ifconfig:close() + + local myip = string.match(eth0,"inet addr%:(%d+%.%d+%.%d+%.%d+)") + local hwaddr = string.match(eth0,"HWaddr (%x+%:%x+%:%x+%:%x+%:%x+%:%x+)") + local guidend = string.gsub(hwaddr,"%:","") + local sernbr = tonumber(string.sub(guidend,-6),16) + local uuid = string.lower(string.gsub(template,"000000000000",guidend)) + + return uuid,sernbr,myip +end + +return UPnP \ No newline at end of file diff --git a/octoserve/var/dms/dms.lua b/octoserve/var/dms/dms.lua new file mode 100755 index 0000000..4c4e82e --- /dev/null +++ b/octoserve/var/dms/dms.lua @@ -0,0 +1,190 @@ +#!/usr/bin/lua + +local ClientTimeout = 20 +local Backlog = 32 +DisableDLNA = true + +local socket = require("socket") +local mime = require("mime") + +local upnp = require("UPnP") +local cman = require("ConnectionManager") +local cdir = require("ContentDirectory") +local mreg = require("MediaReceiverRegistrar") + + + + +function sendXMLFile(client,data) + local r = "HTTP/1.1 200 OK\r\n" + .. 'Content-Type: text/xml; charset="utf-8"\r\n' + .. "Connection: close\r\n" + .. "Content-Length: "..string.format("%d",#data).."\r\n" + .. "Server: "..UPnP.Server.."\r\n" + .. "Date: "..os.date("!%a, %d %b %Y %H:%M:%S GMT").."\r\n" + .. "EXT:\r\n" + .. "\r\n" + .. data + client:send(r) +end + +function sendImage(client,path) + local p = string.gsub(path,"%.+",".") + if string.sub(p,1,7) == "/icons/" then + local f = io.open("."..p,"r") + if f then + local image = f:read(100000) + f:close() + local t = "jpeg" + if p.sub(p,-3) == "png" then t = "png" end + + local r = "HTTP/1.1 200 OK\r\n" + .. "Content-Type: image/"..t.."\r\n" + .. "Content-Length: "..string.format("%d",#image).."\r\n" + .. "Connection: Close\r\n" + .. "Server: "..UPnP.Server.."\r\n" + .. "Date: "..os.date("!%a, %d %b %Y %H:%M:%S GMT").."\r\n" + .. "\r\n" + .. image + client:send(r) + else + upnp:SendHTTPError(client,404) + end + else + upnp:SendHTTPError(client,404) + end +end + +function sendRedirect(client,host) + local r = "HTTP/1.1 200 OK\r\n" + .. "Content-Type: text/html\r\n" + .. "Connection: Close\r\n" + .. "Server: "..UPnP.Server.."\r\n" + .. "Refresh: 0; url=http://"..host.."/\r\n" + .. "\r\n" + .. '
Click\r\n' + client:send(r) +end + +function LoadFile(fname) + print(fname) + t = "" + local f = io.open(fname,"r") + if not f then os.exit() end + while true do + local line = f:read() + if not line then break end + t = t .. line .. "\r\n" + end + f:close() + return t +end + +upnp:SetDebug(true) + +local port = 8080 +-- local RootLocation = "http://10.0.4.31:8080/dms.xml" + +local uuid,sernbr,myip = upnp:SystemParameters("f0287290-e1e1-11e2-9a21-000000000000") + +local Desc = LoadFile("dms.xml") +Desc = string.gsub(Desc,"##(%a+)##",{ UUID = uuid, SERNBR = sernbr, HOST = myip }) + +if DisableDLNA then + Desc = string.gsub(Desc,"(%)","") +end + +local server = socket.tcp() +assert(server:setoption("reuseaddr", true)) +assert(server:bind("*", port)) + +local ip, port = server:getsockname() +print("Listen: " .. ip .. ":" .. port) + +assert(server:listen(Backlog)) + +while true do + local client = server:accept() + client:settimeout(ClientTimeout) + + local method,path,proto,attributes = upnp:ReadHTTPHeader(client) + if method then + if method == "GET" then + if path == "/dms.xml" then + sendXMLFile(client,Desc) + elseif path == "/cman.xml" then + sendXMLFile(client,cman:Description()) + elseif path == "/cdir.xml" then + sendXMLFile(client,cdir:Description()) + elseif path == "/mreg.xml" then + sendXMLFile(client,mreg:Description()) + elseif path == "/" then + sendRedirect(client,attributes["host"]) + else + sendImage(client,path) + end + elseif method == "SUBSCRIBE" then + if attributes["NT"] then + if attributes["NT"] == "upnp:event" and attributes["CALLBACK"] ~= "" then + if path == "/cde" then + cdir:Subscribe(client,attributes["CALLBACK"],attributes["TIMEOUT"]) + elseif path == "/cme" then + cman:Subscribe(client,attributes["CALLBACK"],attributes["TIMEOUT"]) + elseif path == "/mre" then + mreg:Subscribe(client,attributes["CALLBACK"],attributes["TIMEOUT"]) + else + upnp:SendSoapError(client,401) + end + else + upnp:SendSoapError(client,412) + end + else + if attributes["SID"] and attributes["SID"] ~= "" then + if path == "/cde" then + cdir:Renew(client,attributes["SID"],attributes["TIMEOUT"]) + elseif path == "/cme" then + cman:Renew(client,attributes["SID"],attributes["TIMEOUT"]) + elseif path == "/mre" then + mreg:Renew(client,attributes["SID"],attributes["TIMEOUT"]) + else + upnp:SendSoapError(client,401) + end + else + upnp:SendSoapError(client,412) + end + end + elseif method == "UNSUBSCRIBE" then + if attributes["SID"] and attributes["SID"] ~= "" then + if path == "/cde" then + cdir:Unsubscribe(client,attributes["SID"]) + elseif path == "/cme" then + cman:Unsubscribe(client,attributes["SID"]) + elseif path == "/mre" then + mreg:Unsubscribe(client,attributes["SID"]) + else + upnp:SendSoapError(client,401) + end + else + upnp:SendSoapError(client,412) + end + elseif method == "POST" then + local soap = upnp:ReadHTTPBody(client,attributes["CONTENT-LENGTH"]) + + if path == "/cdc" then + cdir:Invoke(client,attributes,soap) + elseif path == "/cmc" then + cman:Invoke(client,attributes,soap) + elseif path == "/mrc" then + mreg:Invoke(client,attributes,soap) + else + upnp:SendSoapError(client,404) + end + else + upnp:SendHTTPError(client,"500") + end + end + + client:close() + collectgarbage() + +end diff --git a/octoserve/var/dms/dms.xml b/octoserve/var/dms/dms.xml new file mode 100644 index 0000000..1e45289 --- /dev/null +++ b/octoserve/var/dms/dms.xml @@ -0,0 +1,74 @@ + + + + 1 + 0 + + + urn:schemas-upnp-org:device:MediaServer:1 + OctopusNet DMS + Digital Devices GmbH + http://www.digitaldevices.de + OctopusNet + OctopusNet DMS + 1 + + ##SERNBR## + uuid:##UUID## + DMS-1.50 + + + image/png + 120 + 120 + 24 + icons/dd-120.png + + + image/jpg + 120 + 120 + 24 + icons/dd-120.jpg + + + image/png + 48 + 48 + 24 + icons/dd-48.png + + + image/jpg + 48 + 48 + 24 + icons/dd-48.jpg + + + + + urn:schemas-upnp-org:service:ContentDirectory:1 + urn:upnp-org:serviceId:ContentDirectory + /cdir.xml + /cdc + /cde + + + urn:schemas-upnp-org:service:ConnectionManager:1 + urn:upnp-org:serviceId:ConnectionManager + /cman.xml + /cmc + /cme + + + urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1 + urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar + /mreg.xml + /mrc + /mre + + + //##HOST##/ + + diff --git a/octoserve/var/dms/icons/dd-120.jpg b/octoserve/var/dms/icons/dd-120.jpg new file mode 100644 index 0000000000000000000000000000000000000000..86bf2c7665e5aa716290819c17c141a7bfa59226 GIT binary patch literal 7855 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 literal 0 HcmV?d00001 diff --git a/octoserve/var/dms/icons/dd-120.png b/octoserve/var/dms/icons/dd-120.png new file mode 100644 index 0000000000000000000000000000000000000000..6c1356f3b1a47f1f34ad91278d919669b81dfc0e GIT binary patch literal 8962 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 literal 0 HcmV?d00001 diff --git a/octoserve/var/dms/icons/dd-48.jpg b/octoserve/var/dms/icons/dd-48.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b9984b5db105c435578ef308fd0bb7f4ee9aa89 GIT binary patch literal 4866 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 KMNUMnLSTYkUB8F` literal 0 HcmV?d00001 diff --git a/octoserve/var/dms/start.sh b/octoserve/var/dms/start.sh new file mode 100644 index 0000000..ebcbd92 --- /dev/null +++ b/octoserve/var/dms/start.sh @@ -0,0 +1,5 @@ +#!/usr/bin/lua + +killall lua +sleep 3 +lua dms.lua& diff --git a/octoserve/var/mcsetup/astra19e.csv b/octoserve/var/mcsetup/astra19e.csv new file mode 100644 index 0000000..6019189 --- /dev/null +++ b/octoserve/var/mcsetup/astra19e.csv @@ -0,0 +1,12 @@ +TITLE,REQUEST,PIDS,LANPORTS +"Das Erste","?src=1&freq=11837&msys=dvbs&sr=27500&pol=h","P0:100:101:104:102:103:106","" +"Bayerisches FS Nord","-","P0:500:201:204:202:203:206","" +"hr-fernsehen","-","P0:300:301:304:302:303","" +"SWR Fernsehen BW","-","P0:800:801:804:802:803:806","" +"WDR Köln","-","P0:600:601:604:602:603","" +"ZDF","?src=1&freq=11954&msys=dvbs&sr=27500&pol=h","P0:100:110:130:120:121:122:125","" +"zdf neo","-","P0:650:660:680:670:671:672:675","" +"zdf kultur","-","P0:1100:1110:1130:1120:1121:1122:1125","" +"ZDFInfo","-","P0:600:610:630:620:621:622:625","" +"KiKA","-","P0:300:310:330:320:321:325","L3:4:5" +"3sat","-","P0:200:210:230:220:221:222:225","" diff --git a/octoserve/var/mcsetup/kabelbw.csv b/octoserve/var/mcsetup/kabelbw.csv new file mode 100644 index 0000000..82e5e34 --- /dev/null +++ b/octoserve/var/mcsetup/kabelbw.csv @@ -0,0 +1,13 @@ +TITLE,REQUEST,PIDS,LANPORTS +"Das Erste","?freq=346&msys=dvbc&sr=6900&mtype=256qam","P0:100:101:104:102:103:106","" +"Bayerisches FS Nord","-","P0:500:201:204:202:203:206","" +"hr-fernsehen","-","P0:300:301:304:302:303","" +"SWR Fernsehen BW","-","P0:800:801:804:802:803:806","" +"WDR Köln","-","P0:600:601:604:602:603","" +"ZDF","?freq=370&msys=dvbc&sr=6900&mtype=256qam","P0:100:110:130:120:121:122:125","" +"ZDF HD","-","P0:6100:6110:6130:6120:6121:6122:6123","" +"zdf neo","-","P0:650:660:680:670:671:672:675","" +"zdf kultur","-","P0:1100:1110:1130:1120:1121:1122:1125","" +"ZDFInfo","-","P0:600:610:630:620:621:622:625","" +"KiKA","-","P0:300:310:330:320:321:325","L3:4:5" +"3sat","-","P0:200:210:230:220:221:222:225","" diff --git a/octoserve/var/mcsetup/kabelbw_udp.csv b/octoserve/var/mcsetup/kabelbw_udp.csv new file mode 100644 index 0000000..2e09ec2 --- /dev/null +++ b/octoserve/var/mcsetup/kabelbw_udp.csv @@ -0,0 +1,13 @@ +TITLE,REQUEST,PIDS,PROTO,IP,PORT,TTL,LANPORTS +"Das Erste","?freq=346&msys=dvbc&sr=6900&mtype=256qam","P0:100:101:104:102:103:106","UDP","239.7.7.100",1234,7,"" +"Bayerisches FS Nord","-","P0:500:201:204:202:203:206","UDP","239.7.7.101",1234,7,"" +"hr-fernsehen","-","P0:300:301:304:302:303","UDP","239.7.7.102",1234,7,"" +"SWR Fernsehen BW","-","P0:800:801:804:802:803:806","UDP","239.7.7.103",1234,7,"" +"WDR Köln","-","P0:600:601:604:602:603","UDP","239.7.7.104",1234,7,"" +"ZDF","?freq=370&msys=dvbc&sr=6900&mtype=256qam","P0:100:110:130:120:121:122:125","UDP","239.7.8.100",1234,7,"" +"ZDF HD","-","P0:6100:6110:6130:6120:6121:6122:6123","UDP","239.7.8.101",1234,7,"" +"zdf neo","-","P0:650:660:680:670:671:672:675","UDP","239.7.8.102",1234,7,"" +"zdf kultur","-","P0:1100:1110:1130:1120:1121:1122:1125","UDP","239.7.8.103",1234,7,"" +"ZDFInfo","-","P0:600:610:630:620:621:622:625","UDP","239.7.8.104",1234,7,"" +"KiKA","-","P0:300:310:330:320:321:325","UDP","239.7.8.105",1234,7,"L3:4:5" +"3sat","-","P0:200:210:230:220:221:222:225","UDP","239.7.8.106",1234,7,"" diff --git a/octoserve/var/mcsetup/mc.lua b/octoserve/var/mcsetup/mc.lua new file mode 100644 index 0000000..212e353 --- /dev/null +++ b/octoserve/var/mcsetup/mc.lua @@ -0,0 +1,251 @@ +#!/usr/bin/lua + +mc = {} + +local DebugFlag = true + +function mc.CheckSignal() + local tmp = io.open("/tmp/mc.signal") + if tmp then + tmp:close() + os.remove("/tmp/mc.signal") + return true + end + return nil +end + +function mc:ReadSetupFile(filename) + local list = {} + local file = io.open(filename,"r") + print(filename,file) + if file then + local line = file:read() + if line then + if DebugFlag then print(line) end + line = string.gsub(line,'"','') + if line:match("TITLE,REQUEST,PIDS,LANPORTS") then + while true do + line = file:read() + if not line then break end + if DebugFlag then print(line) end + local title,request,pids,lanports = line:match('%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%",%"L(%a-[%d%:]-)%"') + if not title then + title,request,pids = line:match('%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%"') + end + if not title or not request or not pids then + break + end + if pids == "" then break end + + pids = string.gsub(pids,":",",") + if lanports then + lanports = string.gsub(lanports,":",",") + if lanports == "" then lanports = nil end + if lanports == "all" then lanports = "1,2,3,4,5" end + end + local url + if request == "" or string.sub(request,1,1) ~= "?" then + url = "stream=%d?pids=" .. pids + else + url = request .. "&pids=" .. pids + end + table.insert(list,{ url = url, lanports = lanports }) + end + elseif line:match("TITLE,REQUEST,PIDS,PROTO,IP,PORT,TTL,LANPORTS") then + while true do + line = file:read() + if not line then break end + if DebugFlag then print(line) end + local title,request,pids,proto,ip,port,ttl,lanports = line:match('%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%",%"(%u%u%u)%",%"(%d*%.%d*%.%d*%.%d*)%",(%d*),(%d*),%"L(%a-[%d%:]-)%"') + if not title then + title,request,pids,proto,ip,port,ttl = line:match('%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%",%"(%u%u%u)%",%"(%d*%.%d*%.%d*%.%d*)%",(%d*),(%d*)') + end + if not title or not request or not pids then + break + end + if pids == "" then break end + if proto ~= "UDP" and proto ~= "RTP" then break end + + pids = string.gsub(pids,":",",") + if lanports then + lanports = string.gsub(lanports,":",",") + if lanports == "" then lanports = nil end + if lanports == "all" then lanports = "1,2,3,4,5" end + end + local url + if request == "" or string.sub(request,1,1) ~= "?" then + url = "stream=%d?pids=" .. pids + else + url = request .. "&pids=" .. pids + end + table.insert(list,{ url = url, proto = proto, ip = ip, port = port, ttl = ttl, lanports = lanports }) + end + end + end + file:close() + end + return list +end + +function mc:Setup(mclist,serverip,devid) + local streamid = 0 + local port = 6670 + local req = nil + local dest = 1 + local SessionList = {} + local entry + + for _,entry in ipairs(mclist) do + print("*************************************************************************") + req = entry.url + local rc = nil + local attributes = nil + local sdp = nil + local server = socket.tcp() + server:settimeout(2) + local cseq = 1 + if server:connect(serverip,554) then + --local transport = string.format("RTP/AVP;multicast;port=%d-%d;ttl=5",port,port + 1) + local destip = string.format("239.%d.2.%d",devid,dest); + local destport = port; + local ttl = 5 + if entry.ip then + destip = entry.ip + end + if entry.port then + destport = tonumber(entry.port) + end + if entry.ttl then + ttl = tonumber(entry.ttl) + end + local transport = nil + if entry.proto and entry.proto == "UDP" then + transport = string.format("UDP;multicast;destination=%s;port=%d;ttl=%d",destip,destport,ttl) + else + transport = string.format("RTP/AVP;multicast;destination=%s;port=%d-%d;ttl=%d",destip,destport,destport + 1,ttl) + end + + -- port = port + 2 + if string.match(req,"stream") then + if streamid > 0 then + req = string.format(req,streamid) + rtsp:SendRequest(server,serverip,"SETUP",req,cseq,transport) + rc,attributes,sdp = rtsp:ReadResponse(server) + cseq = cseq + 1 + if rc == "200" then + session = string.match(attributes["SESSION"],"^(%w*);") + table.insert(SessionList,{ id = session, streamid = streamid, lanports = entry.lanports }) + end + end + else + rtsp:SendRequest(server,serverip,"SETUP",req,cseq,transport) + rc,attributes,sdp = rtsp:ReadResponse(server) + cseq = cseq + 1 + if rc == "200" then + streamid = tonumber(attributes["COM.SES.STREAMID"]) + session = string.match(attributes["SESSION"],"^(%w*);") + table.insert(SessionList,{ id = session, streamid = streamid, lanports = entry.lanports }) + end + end + server:close() + else + print("Connect?") + break + end + if rc ~= "200" then + break + end + dest = dest + 1 + end + return SessionList +end + +function mc:Play(SessionList,serverip) + if #SessionList > 0 then + local index,session + for index,session in ipairs(SessionList) do + print("*************************************************************************",index) + if session.lanports then + local server = socket.tcp() + server:settimeout(2) + if server:connect(serverip,554) then + local req = string.format("stream=%d",session.streamid) + rtsp:SendRequest(server,serverip,"PLAY",req,1,session.id, "switch="..session.lanports) + local rc,attributes,sdp = rtsp:ReadResponse(server) + server:close() + end + end + end + end +end + +local function pKeepAlive(mc,SessionList,ip) + local index = 1 + local server = socket.tcp() + server:settimeout(2) + local cseq = 1 + print(SessionList,ip) + local status = 0 + if server:connect(ip,554) then + while status do + socket.select(nil, nil, 3) + if mc.CheckSignal() then + status = 2 + break + end + print("*************************************************",index,SessionList[index].id) + local err = rtsp:SendRequest(server,ip,"DESCRIBE",nil,cseq,SessionList[index].id) + if err then + print(err) + break + end + local rc,attributes,sdp = rtsp:ReadResponse(server) + if not rc or rc ~= "200" then + break + end + cseq = cseq + 1 + index = index + 1 + if index > #SessionList then + index = 1 + end + collectgarbage() + end + server:close() + end + return status +end + +function mc:KeepAlive(SessionList,serverip) + if #SessionList > 0 then + local rc,status = pcall(pKeepAlive,mc,SessionList,serverip) + if not rc then + print(status) + return 1 + else + return status + end + end + return 0 +end + +function mc:TearDown(SessionList,serverip) + if #SessionList > 0 then + local index,session + for index,session in ipairs(SessionList) do + print("*************************************************************************",index) + local server = socket.tcp() + server:settimeout(2) + if server:connect(serverip,554) then + local req = string.format("stream=%d",session.streamid) + rtsp:SendRequest(server,serverip,"TEARDOWN",req,1,session.id) + local rc,attributes,sdp = rtsp:ReadResponse(server) + server:close() + if rc ~= "200" then + print("error",rc) + end + end + end + end +end + +return mc diff --git a/octoserve/var/mcsetup/mcsetup.lua b/octoserve/var/mcsetup/mcsetup.lua new file mode 100755 index 0000000..9ce70c0 --- /dev/null +++ b/octoserve/var/mcsetup/mcsetup.lua @@ -0,0 +1,112 @@ +#!/usr/bin/lua + +local socket = require("socket") +local mime = require("mime") +local rtsp = require("rtsp") +local mc = require("mc") + +local ip = "10.0.4.53" +local devid = 5 +local DoPlay = true +local mclist = false +local configfile = "/config/mcsetup.csv" +local server = false + +local a +for _,a in ipairs(arg) do + if a == "server" then server = true end + if a == "noplay" then DoPlay = false end +end + +function GetIPAddr() + local myip = nil + local ifconfig = io.popen("ifconfig eth0") + if ifconfig then + local eth0 = ifconfig:read("*a") + ifconfig:close() + myip = string.match(eth0,"inet addr%:(%d+%.%d+%.%d+%.%d+)") + end + return myip +end + +function GetDevID() + local devid = nil + local tmp = io.open("/config/device.id") + if tmp then + devid = tonumber(tmp:read()) + tmp:close() + end + return devid +end + +function WaitSignal() + print("WaitSignal") + while true do + socket.select(nil,nil,1) + end + print("Exit WaitSignal") +end + +if server then + socket.select(nil,nil,10) +end + +while true do + + ip = GetIPAddr() + devid = GetDevID() + print(ip,devid) + + if devid and ip then + mclist = mc:ReadSetupFile(configfile) + print(mclist,#mclist) + if #mclist > 0 then + local SessionList = mc:Setup(mclist,ip,devid) + if #SessionList > 0 then + + if DoPlay then + mc:Play(SessionList,ip) + end + + local rc = mc:KeepAlive(SessionList,ip) + if rc > 0 then + mc:TearDown(SessionList,ip) + end + if rc == 1 then + break + end + if rc == 0 then + socket.select(nil,nil,10) + end + end + else + while not mc.CheckSignal() do + socket.select(nil,nil,1) + end + end + end + collectgarbage() +end + + + + -- local server = socket.tcp() + -- server:settimeout(2) + + -- local cseq = 1 + + -- if server:connect(ip,554) then + -- rtsp:SendRequest(server,ip,"DESCRIBE",nil,cseq) + -- local rc,attributes,sdp = rtsp:ReadResponse(server) + -- cseq = cseq + 1 + -- print(rc) + -- for n,a in pairs(attributes) do + -- print(n,a) + -- end + -- if sdp then + -- for i,a in ipairs(sdp) do + -- print(string.format("%2d:%s",i,a)) + -- end + -- end + -- server:close() + -- end diff --git a/octoserve/var/mcsetup/rtsp.lua b/octoserve/var/mcsetup/rtsp.lua new file mode 100644 index 0000000..4e10a61 --- /dev/null +++ b/octoserve/var/mcsetup/rtsp.lua @@ -0,0 +1,94 @@ +#!/usr/bin/lua + +rtsp = {} + +local DebugFlag = true +local CRLF = "\r\n" + +local function SplitLines(s) + local lines = {} + local line = nil + for line in string.gmatch(s,"(.-)"..CRLF) do + table.insert(lines,line) + end + return lines +end + +function rtsp:ReadResponse(server) + + local linenum = 0 + local line, err = server:receive() + + if err then + if DebugFlag then print("RTSP Error "..err) end + return + end + + if DebugFlag then print(string.format("%2d:%s",linenum,line)) end + local rc = string.match(line,"%s+(%d+)") + local attributes = {} + + while true do + local line, err = server:receive() + if err then + if DebugFlag then print("RTSP Error "..err.." Line: "..tostring(linenum)) end + return + end + linenum = linenum + 1 + if DebugFlag then print(string.format("%2d:%s",linenum,line)) end + if line == "" then break end + + if linenum == 30 then + if DebugFlag then print("RTSP Error "..tostring(linenum)) end + return + end + + local n,v = string.match(line,"([%a%-%.]+)%s*%:%s*(.*)") + if n and v then + attributes[string.upper(n)] = v + end + + end + + local sdp = nil + local ctype = attributes["CONTENT-TYPE"] + if ctype then + if string.lower(ctype) == "application/sdp" then + local clen = attributes["CONTENT-LENGTH"] + line, err = server:receive(tonumber(clen)) + if err then + if DebugFlag then print("RTSP Error "..err.." Line: "..tostring(linenum)) end + return + else + sdp = SplitLines(line) + end + end + end + return rc,attributes,sdp +end + +function rtsp:SendRequest(server,ip,command,request,cseq,session_transport,x_octonet) + if not request then request = "" end + local s = command .. " rtsp://"..ip..":554/"..request.." RTSP/1.0" .. CRLF + .. "User-Agent: DD_MCSetup" .. CRLF + if cseq then s = s .. "Cseq: ".. tostring(cseq)..CRLF end + if session_transport then + if command == "SETUP" then + s = s .. "Transport: "..session_transport..CRLF + else + s = s .. "Session:" ..session_transport..CRLF + end + end + if x_octonet then + s = s .. "x_octonet: "..x_octonet..CRLF + end + s = s .. CRLF + if DebugFlag then print(s) end + local r,err = server:send(s) + if not r then + return err + end + return nil +end + +return rtsp diff --git a/octoserve/var/mcsetup/unitymedia.csv b/octoserve/var/mcsetup/unitymedia.csv new file mode 100644 index 0000000..99211a1 --- /dev/null +++ b/octoserve/var/mcsetup/unitymedia.csv @@ -0,0 +1,13 @@ +TITLE,REQUEST,PIDS,LANPORTS +"Das Erste","?freq=410&msys=dvbc&sr=6900&mtype=256qam","P0:100:101:104:102:103:106","" +"Bayerisches FS Nord","-","P0:500:201:204:202:203:206","" +"hr-fernsehen","-","P0:300:301:304:302:303","" +"SWR Fernsehen BW","-","P0:800:801:804:802:803:806","" +"WDR Köln","-","P0:600:601:604:602:603","" +"ZDF","?freq=394&msys=dvbc&sr=6900&mtype=256qam","P0:100:110:130:120:121:122:125","" +"ZDF HD","-","P0:6100:6110:6130:6120:6121:6122:6123","" +"zdf neo","-","P0:650:660:680:670:671:672:675","" +"zdf kultur","-","P0:1100:1110:1130:1120:1121:1122:1125","" +"ZDFInfo","-","P0:600:610:630:620:621:622:625","" +"KiKA","-","P0:300:310:330:320:321:325","L3:4:5" +"3sat","-","P0:200:210:230:220:221:222:225","" diff --git a/octoserve/var/satip/www/icons/dd-120.jpg b/octoserve/var/satip/www/icons/dd-120.jpg new file mode 100644 index 0000000000000000000000000000000000000000..86bf2c7665e5aa716290819c17c141a7bfa59226 GIT binary patch literal 7855 zcmbW32V7H2x9BIG9(of5$PI~5@~tiobR1;-u?aVec%07GCTjhX3d_pX06#7${1w|Fds8AH3AR_1h`T^ zfHDo74WkL(0GOKtNdN#1fWx2wN+nKe)3#y;5b7`08~`g806$;=WQDC*|7NNVSo#Kq z2Zi|t1!GP1^|8UBLEeM_FF=`LaG>7fEv+q#OphD>@fZe^;{;+5lo^0PVtA;vu^!gp zlp_|^Po0w%Ab~spZXRL5<|mD84xVdjsE-Y!8XfSzggXD`hd;am!!jn8SnU7p_&0x9 zJc2{RsbN@B?G-(}!aS&)Lgj#{@ZbYIiOTHm{s#;_h?hN->L8W557_5Vmj1)$Pu4kL z&p@Il)#kwGV9!9$1MZ^og~$jmD#MObIW>~t6-DI{DvJa}1QMuBrZRh=ms=PBaE1eY zxR-}7m5)%FA=JiNpURrlq%ipWgWdnZ;a<^HKLOAW3O*A`@bL}DihD?4<<-^IuqIwn z0bb$ZGL~*0{%)b3SpA^DU^n6!0RD{mU=(0ISX(T0kyYf?Ra9gYWU0&lm;8^Ne_8#{ zaFE+SEq+=3SxKC4{?`3H_HSKKF#u{C)U~<%x6b`00QKhq;2!^5Cvpb>bP51<1OJGJ z^PpaQ!^49$ZHei|P>+ z5EK!L4GVVj@WRUc*CPIp2mZsYfA}G7?d9zi>P4hZWk;ZlWh4oDf9B5{Um@ zhX2E1|M1}e|Ey~&u$ArucDyWL9$*Ks)i(gnMh{@lh14F%UwJ!DYX=T?o;_y%&$_2F zwf~Rn|8s$6Q*WVR1Rv~yTHo3R>k$zedBD^?ad1HZI)Dc3fCmTwVIU4xh1gvr3vVEQl%m?O*^77B}lWx(=a#jr|P z6Ra0D44ZVhmICvI3A6^cxgLlD);nQ#ud>_Gx;6q3u zG!Ui;2ZRqI3XzJ)L)=HyBDxXp5p#%5BofJq6ho>aO^~OMe#o=PEaYuu6|xOEh@3@k zpin3tloUz}Wr1=-g`-kYH&KsKt*9Z?9EwasPlKURpfRFxq#@EI(d5xQq-miUqM4`J zp=G8OrPZLdp!K9ZLz_)oO4~#`Ks!gfL&riVMyEw*L+3}ANOyy-lCGQX6WuR*dU_#x zb$Tm$0(}Dg4f-eaFX^Z0e>1Q$NHXX%I5R{rTw*9=Xk+-u@Qaa=@i3zfqa$ND<0Zxi zjGc^=jASM@CRrv^CQqh#rUIrqrXi;9Xj-%=S{LntjzQ<4tI-4K6=quI!_4~3Zp?Aa z15&qF4{J8nSw_rm&W2i5-rE^ts4RLL8AL7>G_TtXquHt^rz0HH=G34>*$>FKz`OFLFmE^VJjp8lj?dDxM z#D3`LA&)~Dhn^i8=Y#S|@>%np@9pv zxI>sEf)Ozni4}PyGA>FhswV0ydR??vbnCF#Vf({rhwBe7h;fUVip7XM68j|1D2@{k z5ib@Wkw8kQN%%|LmUt%#l~k7Wl`N1Pkb+97ND-uNOASgRq}8Q~(#6uFG7K`hGLbTm zWTs^~Wsl1y$=1t$mlKh5l*^IpmD@j}d?esV>5&O}R{3M{N%BqdKNTbuJQNBPMidzp zjTGY*8x+@+q?Ejr3YEr`*_6$d)08`u_f%9>LRBhN7F9)5T~%+Xj;gV%S*m5Jy;Mi2 z>#4`9H>>~FP|*n2c&72=sLWCSqYsZRXo_iiX_jivY6)q%Y2DSD(#C4LYTwbG!U^Ks zaK*S89bp|$o%=fTx)Qp6x{r0g>mAVx)vMLp($~;Gr{87(GcY#DFz7dAHMBL%H=HyQ zGV(EcWJEGnHa=_IW`Zy=Gs!U-HRU(;FnwT3I;MK;+_5e*2D6i9`DQc6C69+5Z!(9P zA2Yvd{^^A13F3)*3t(Ytan<6prI=-i<#Q{fm8DgI)i-N->sagFlWZsPCm){Nw9&K4 zwwbUMw~esvutVE9+dZ(`vNy25Vn5{|=Wx!U?-cJT!l?#Fl%t*Fea8(aL#JG)IcH_( zROb(;#ZE_`e&xdJ65#RzkH)*UduB zT=dfNy5cqOt>t~id%;J`=c>=5FU~j5cZHx&$S17%nfMj?ZTVaHm-$ly>;tL-X#!mX z8;Pt$e_~gVKu~nhV6aqhYVcHuMo4Z5Dby_Vei$U|bXY?;JM}R2CPF;oe8hC5c4R>$ zIm#}oI+`V#82#pq$xSKzDG4dF=Z()lN@Yq7O&v`;npSiHet~eIKV32XX8L}H zXU6NyBbj-byICGtuP@49ym66o$@@}&wn}#4W#nbzkpzqNJS^Y&1oPGMyc ze^F-9_8r2VvAf21>xvH-=anE!B1^uN+LiX+Q@i)zKJWd^`+H@?vZ-?G@~#J}4<0<^ zdzk$Q`Y7Vj;$!E>?Z|q6zHSL@2f1(6ZD3l4H511ky}W&V34USW5s^{RXJV35&ZnkbNYA)(^;&M; z^&2JF$Lt|4%XIFPm@5@)OhlWSqe;6J6I6gfy`*rTy{KDeW z+RtC>8=G6?-`fXqK>+N}u>Okdzr@8tjSEW60UUJ@7X%u05I74QAt;Yz)wM#og|G=J zB+{_!<=lPRPAjZvP2zA59i-zFQJNNAI|%KM$o{>+lK!K}{tE2xxW)kk3_?vFj0NDp z-fnS*IQX|)V-U}77|EhDX|~Hno>ZCS&Vb)BwyUq5s6SNwO|3^kaWTimZ3a)4R9%^! zHp(HksKv?^Iz-V5Jze9dT`#xivA%rt2{DExUl!GDg%@AOket4J%rt0_H(TS~oMq^1 z8R&?4|LN4pT{ubs54hc(w# z)kXL2EQmJU*m`M2ZZ@N?u=;ayUo01{c>`sDo|NQWnW&a_Wk2WN~$bRUWP}ADCE3L&iGYD z^^I%jYD{8J^uUaL7k|LZ2uvoPTTT^y^JLF>?yaDnA%@6dqZF1Aj`roOD;7EA*^asv zF(&1k%KY)sk`yq$owA)CY)@dEe?BjqTzDtUC3i-#?iTYe%c#$u20v5l}4v79m*`=jvEcwnQF{B6E^WgQ$b@oH?3T~^8Wny{Qibz z9f3zA#eF)h9fP>H5*#gwYXb3H3-8W-7V8;Qspb~Q3_UH|%LjZUanJFtyQ~zDoEdvm zO5bNKXu9>nF2BTYygg}$0*H&rd-aAkjmIeUsrs%^`GI%8#vxn z|9mGd{ekn-4!vpxV-f3@!5q8_rI%aW-0xf18h9<(VR{Y;dULXG!d*m3Q6gBc4NV4QtsH-9_au z#!ppGGEzW_&put}jxJ%)K+jLktK5JUaoD0}VY9MJ%t+gNZD0~R|DX!9m)%M@il_NP z*vG6PX6{}55Z8BBslfUrjbO;3y!k%SQo1+MQZ+lGV+=tlxElLzJXy52i)FeZa@^db zJ!*)@Jo#nM(4y(Lv!*6{pNb}(UFR7Z$2-^2)A&`EX^V0Dwg*+@lU8PZq0moGEv(;O z>*3zNzWKTyZ)uFpd22X>Npj)YyQ?iQFg?J&IOwMlI6mj}y)S?QI;Ab%^F<0*>CuQ_ zQd$njbrf;NyJ52EE29;Db=gmHHB3HPj?ub$`W3rR4&zt4$4DB!XE!E57ADsc6H3m0 zv?q13rGYa)MWN{Vp;X-Q(JK=lV{OQp_fIh%ohht%JP;L76+)P#pyZ-vj}->kXV&U~5Rn*NctMXPD-c2r!Q^C#`v>QAEjW_JuG z1vfQ`=Z#LCa`t<-t2~%z9lEvM|EO}(c)(iN$>GL^@D=s>!oq*b1_J~>yZQ-G6D^#%p_KUpua!~vx* z*{$sR5?_?d(pK+0zjeFC?y65%xp~oXJwCRVtCP>G==VD?wb?!1`hipN=@Rpva^ve` zHKNOVJ7p<}-;Gbi*smLw5$eXZu0?*xBRNhOb{I0av8WG#V0C4Dm$uk&tnhuU?-k`^ zi;-5hl(xc3S>)h9-{|ncep|WX7-KOMfc&}tjsjRBTQA6JD&Bn*I_tcqR3CcodtV?! zLLpfe)u6nJL*u5#Xt_LF4wK97O|WcLtQRpU?QN$M#k8JtZx<2cR>?Q1+udRB);`Pc z{wzM8G`MBBR-?QFIR+F2u&)S!X_HQp_t6A&KP_|%S+RWFw zwYhEWG(k%gbFjVfR>(BLK|uI$CRQ_QGmH8+BOR-}cZmXgF6wvf9~zAftcafRUsW_1 zy#J!9{?bvig4Gj4Bj#{RoqM8&m!BPxer+`ORhDi?b#uO+x{Z^&aMcu$=ETT#p+zB@ zs9ubV^sVr^ZW-Zri$iGOa@g;g40WAGs_)IznNFDQxRZ}zGVqKmt`=E^^fi()$!7>N z6Y#zQ9<+s4oCp1_*f&;}J|J-Pnqj13G$;8)5Z8ibUm$<}WMymFK+w&{_c`~S9(Cw= zNxtN?={J78q|k`_P#b4Q-4VVNFja8<3q!Nh!?>X@wCiW8Zj@i2!JS_zkshyYx)kB$ z$wz?_&+8Pg~;2@jYRO@A=a~zJ9#@{Iu}*awjo2 zmbSRNaLIlfUXY5Ww)T-$1+cfq;*g7@iK%JoRa%GB9t-7lhCKP z@&;g$X%7gI0LZiSbj#IEc1XH|L`u@lj2EIC9+VX55&2&2WW``3UKEafDgUyit_) ze8R)(>*#D75_*?qV!AAOS1|CtGoJj&S>ZSRgLs1974BM^D|Wdv5p_EnPdubMrI~&x zhNXGxJzPOQ+*Pk^pUFl$_(c}$29{6sMlfxR@9^u(8ha$ERV7e!TucGA6tEgXeSt^* zYQsSG`6{cX$x6$F`1;gDnO9EfHr00ZFzKBGeUl}ElI=1g$oXO^W#Vk@+Tk$gS zMj@?}F2IJI$7cT^R+VbA?sv2z;}Fh{&e0ar@rmL7JFE;`YrgN4*FBl_=~GY2>Vo-5 z|M$ze4X<=PyO@Pl^o%3Q8A3M!bU&E8?w@ukF-4tu7QmqUG z@v_R$DZInyu4>&Vc!uq4IFaX+DO}*r=xkc|j}*t=T^5g7r|7eGnJ%O8-UA%{zoPB& zCZa6`?O|6O%~eRnc|Su>700sL#IvBEIl`8{FohpmS-+Ijf~UTOk}mGDl3bDn?wwns zH}C*;;p6X%m)HuU&QmwbJ(7$n!xy&T9Pw1 z%b%Z<>RAs;{!+))ZSW}{-Tosb&pLr$Iq=wQ7wLyuhYe}WpC?j7xQ~sEr4s1(mZI}6tGh;)F$*^PoduJVn*3CGk zKH)zb2QpJYqB?A&ihmS0bq|MJQMMZnFXE`rstxd#lA~YT(ipk=D@$skr1y7&z;4DC zCas8MT=j9HjrZYFSggj=HJ6&Mn(gci*|JfwCXde_<|Y-_X;85~`P*#mlZZiW0pF*K zEttWY3i=b7-yIh>bH>|>40PDzY}&{k7UbErf*JRoSlS(x=)IW$RKwcsy|VK|*cjF8 z!lqJaOJ>z4l~>L8a$Eg^(iJ3^U5=8?Nj)9<4e_o7E{*-W%*(Zfi^U0rA8B;H?tYe9 z%@BvpWM9CLj2>vqkhv_MuF0*^uk|lGx0<&GJRJ!P-=XObqW}SU9U(6*y1M9{dlt%9 zcR+kQG>$W_Yf}D0vuUN@^)FntpUn;Is%9=~fABXK)&Kqlj&P7((Lp-T`*xgXm}pro zzU=H(@z_pfupMsI$soz9HmLVdoEt#eKuDsYb_NhH&H$2W8O?I{$+MljdFhYG#+PD@ zp8CsN+_?S5-Gn%mOJ~aVU^+K9<8m}Mzts@Loh94vGp6rd-IZALp6HgCZe_h>ZTsBhaM!lW@p|ILS9I8|43E%>7bpC08jkYu{{R7W!qxx) literal 0 HcmV?d00001 diff --git a/octoserve/var/satip/www/icons/dd-120.png b/octoserve/var/satip/www/icons/dd-120.png new file mode 100644 index 0000000000000000000000000000000000000000..6c1356f3b1a47f1f34ad91278d919669b81dfc0e GIT binary patch literal 8962 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 literal 0 HcmV?d00001 diff --git a/octoserve/var/satip/www/icons/dd-48.jpg b/octoserve/var/satip/www/icons/dd-48.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b9984b5db105c435578ef308fd0bb7f4ee9aa89 GIT binary patch literal 4866 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 KMNUMnLSTYkUB8F` literal 0 HcmV?d00001 diff --git a/octoserve/var/www/BannerDD.jpg b/octoserve/var/www/BannerDD.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cdeed4b830e65b3f817ea40dc76edbff0e1235ce GIT binary patch literal 102158 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/octoserve/var/www/beta.html b/octoserve/var/www/beta.html new file mode 100644 index 0000000..db13e49 --- /dev/null +++ b/octoserve/var/www/beta.html @@ -0,0 +1,55 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + +
+ DD +
 
+
+ + + + + + +
+
+ + +
+
+
+ + +
+
+ +
+
 
+ + + diff --git a/octoserve/var/www/beta.lua b/octoserve/var/www/beta.lua new file mode 100644 index 0000000..274fc36 --- /dev/null +++ b/octoserve/var/www/beta.lua @@ -0,0 +1,31 @@ +#!/usr/bin/lua + +local host = os.getenv("HTTP_HOST") +local proto = os.getenv("SERVER_PROTOCOL") +local query = os.getenv("QUERY_STRING") + +function http_print(s) + if s then + io.stdout:write(tostring(s).."\r\n") + else + io.stdout:write("\r\n") + end +end + +local userver = "download.digital-devices.de/download/linux" + +if query == "set=beta" then + local file = io.open("/config/updateserver","w") + if file then + file:write(userver.."/beta/".."\n") + file:close() + end +elseif query == "set=std" then + os.remove("/config/updateserver") + os.execute("rm -f /config/octonet.*.img") + os.execute("rm -f /config/octonet.*.sha") +end + +http_print(proto.." 303") +http_print("Location: http://"..host.."/update.html") +http_print("") diff --git a/octoserve/var/www/browsertv.html b/octoserve/var/www/browsertv.html new file mode 100644 index 0000000..8daee8a --- /dev/null +++ b/octoserve/var/www/browsertv.html @@ -0,0 +1,367 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ DD +
 
+
+ + + + + + + + + +
+
+ + + + + +
 
+
+ Audio:  + + + + + +
+
+
+
+
+
+ + + + + + + + + + +
Source +
+ +
+
Channel +
+ +
+
+
+
+ +
+ + +
+
 
+ + + diff --git a/octoserve/var/www/btvchannels.lua b/octoserve/var/www/btvchannels.lua new file mode 100644 index 0000000..0a17e48 --- /dev/null +++ b/octoserve/var/www/btvchannels.lua @@ -0,0 +1,129 @@ +#!/usr/bin/lua + +local db = require("DataBase") + +local host = os.getenv("HTTP_HOST") +local proto = os.getenv("SERVER_PROTOCOL") +local query = os.getenv("QUERY_STRING") + +print(proto.." 200") +--print("Pragma: no-cache") +print("Content-Type: application/x-javascript") +print("") + +local SourceList = {} + +for _,f in ipairs(db.SourceList) do + f.ChannelList = {} + SourceList[f.refid] = f + print("// " .. f.refid .. " " .. f.title ) +end + +for _,c in ipairs(db.ChannelList) do + local f = SourceList[c.refid] + if f then + table.insert(f.ChannelList,c) + -- print("// " .. c.refid .. " " .. c.title .. " " .. c.request .. " " .. c.tracks ) + end +end + +local isat = 0 +local icable = 0 +local iter = 0 +local ichannel = 0 + +print("var SourceListSat = new Array();") +print("var SourceListCable = new Array();") +print("var SourceListTer = new Array();") + +for _,f in pairs(SourceList) do + if f.system == "dvbs" or f.system == "dvbs2" then + print("") + print(string.format("SourceListSat[%d] = new Object();",isat)) + print(string.format("SourceListSat[%d].name = '%s';",isat,f.title)) + print(string.format("SourceListSat[%d].ChannelList = new Array();",isat)) + + ichannel = 0 + for _,c in ipairs(f.ChannelList) do + print("") + print(string.format("SourceListSat[%d].ChannelList[%d] = new Object();",isat,ichannel)) + print(string.format("SourceListSat[%d].ChannelList[%d].name = '%s';",isat,ichannel,string.gsub(c.title,"'","\\'"))) + print(string.format("SourceListSat[%d].ChannelList[%d].request = '?src=%s&%s';",isat,ichannel,f.src,c.request)) + print(string.format("SourceListSat[%d].ChannelList[%d].tracks = new Array(%s);",isat,ichannel,c.tracks)) + ichannel = ichannel + 1 + end + isat = isat + 1 + end + if f.system == "dvbc" or f.system == "dvbc2" then + print("") + print(string.format("SourceListCable[%d] = new Object();",icable)) + print(string.format("SourceListCable[%d].name = '%s';",icable,f.title)) + print(string.format("SourceListCable[%d].ChannelList = new Array();",icable)) + + ichannel = 0 + for _,c in ipairs(f.ChannelList) do + print("") + print(string.format("SourceListCable[%d].ChannelList[%d] = new Object();",icable,ichannel)) + print(string.format("SourceListCable[%d].ChannelList[%d].name = '%s';",icable,ichannel,string.gsub(c.title,"'","\\'"))) + print(string.format("SourceListCable[%d].ChannelList[%d].request = '?%s';",icable,ichannel,c.request)) + print(string.format("SourceListCable[%d].ChannelList[%d].tracks = new Array(%s);",icable,ichannel,c.tracks)) + ichannel = ichannel + 1 + end + icable = icable + 1 + end +end + +-- var ChannelListSat = new Array(); + +-- ChannelListSat[0] = new Object(); +-- ChannelListSat[0].name = "Astra 19E: Das Erste HD"; +-- ChannelListSat[0].request = "?src=1&freq=11494&pol=h&msys=dvbs&sr=22000&pids=0,5100,5101,5102,5103,5106,5104,5105"; +-- ChannelListSat[0].tracks = new Array( 5102, 5103, 5106 ); + +-- ChannelListSat[1] = new Object(); +-- ChannelListSat[1].name = "Astra 19E: ZDF HD"; +-- ChannelListSat[1].request = "?src=1&freq=11362&pol=h&msys=dvbs&sr=22000&pids=0,6100,6110,6120,6121,6122,6123,6131,6130"; +-- ChannelListSat[1].tracks = new Array( 6120, 6121, 6123, 6122 ); + +-- ChannelListSat[2] = new Object(); +-- ChannelListSat[2].name = "Eutelsat 9E: TF1 HD Suisse"; +-- ChannelListSat[2].request = "?src=1&freq=12034&pol=v&msys=dvbs&sr=27500&pids=0,800,810,820,821,822,850,814,815"; +-- ChannelListSat[2].tracks = new Array( 820, 821, 822 ); + +-- ChannelListSat[3] = new Object(); +-- ChannelListSat[3].name = "Eutelsat 9E: FTV HD Europe"; +-- ChannelListSat[3].request = "?src=1&freq=11881&pol=v&msys=dvbs&sr=27500&pids=0,1001,2001,3001,4001"; +-- ChannelListSat[3].tracks = new Array( 3001, 4001 ); + + +-- var ChannelListCable = new Array(); + +-- ChannelListCable[0] = new Object(); +-- ChannelListCable[0].name = "KabelBW: Das Erste HD"; +-- ChannelListCable[0].request = "?freq=362&msys=dvbc&sr=6900&mtype=256qam&pids=0,6000,6010,6020,6021,6030,6022,6031"; +-- ChannelListCable[0].tracks = new Array( 6020, 6021, 6022 ); + +-- ChannelListCable[1] = new Object(); +-- ChannelListCable[1].name = "KabelBW: ZDF HD"; +-- ChannelListCable[1].request = "?freq=370&msys=dvbc&sr=6900&mtype=256qam&pids=0,6100,6110,6120,6121,6123,6130,6122,6131"; +-- ChannelListCable[1].tracks = new Array( 6120, 6121, 6123, 6122 ); + +-- ChannelListCable[2] = new Object(); +-- ChannelListCable[2].name = "UnityMedia: Das Erste HD"; +-- ChannelListCable[2].request = "?freq=418&msys=dvbc&sr=6900&mtype=256qam&pids=0,6000,6010,6020,6021,6030,6022,6031"; +-- ChannelListCable[2].tracks = new Array( 6020, 6021, 6022 ); + +-- ChannelListCable[3] = new Object(); +-- ChannelListCable[3].name = "UnityMedia: ZDF HD"; +-- ChannelListCable[3].request = "?freq=394&msys=dvbc&sr=6900&mtype=256qam&pids=0,0,6100,6110,6120,6121,6123,6130,6122,6131"; +-- ChannelListCable[3].tracks = new Array( 6120, 6121, 6123, 6122 ); + +-- ChannelListCable[4] = new Object(); +-- ChannelListCable[4].name = "KDG: Das Erste HD"; +-- ChannelListCable[4].request = "?freq=330&msys=dvbc&sr=6900&mtype=256qam&pids=0,5100,5101,5102,5103,5105,5104"; +-- ChannelListCable[4].tracks = new Array( 5102, 5103 ); + +-- ChannelListCable[5] = new Object(); +-- ChannelListCable[5].name = "KDG: ZDF HD"; +-- ChannelListCable[5].request = "?freq=450&msys=dvbc&sr=6900&mtype=256qam&pids=0,6100,6110,6120,6121,6130,6123,6131"; +-- ChannelListCable[5].tracks = new Array( 6120, 6121, 6123 ); diff --git a/octoserve/var/www/channellists.html b/octoserve/var/www/channellists.html new file mode 100644 index 0000000..07272ca --- /dev/null +++ b/octoserve/var/www/channellists.html @@ -0,0 +1,96 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + +
+ DD +
 
+
+ + + + + + + + + + + + + +
System Channel Database + + + + + +
+
+ + +
+
+
+ + +
+
+
User Channel Database + + + + + + +
+
+ + +
+
+
+ + +
+
+
+ +
+
+
+
+ + +
+
+ +
+
 
+ + + diff --git a/octoserve/var/www/delchannels.lua b/octoserve/var/www/delchannels.lua new file mode 100644 index 0000000..5481621 --- /dev/null +++ b/octoserve/var/www/delchannels.lua @@ -0,0 +1,32 @@ +#!/usr/bin/lua + +local host = os.getenv("HTTP_HOST") +local proto = os.getenv("SERVER_PROTOCOL") +local query = os.getenv("QUERY_STRING") + +if arg[1] then + query = arg[1] + if query == "get" then query = "" end + proto = "HTTP/1.0" + host = "local" +end + +function SendError(err,desc) + io.stdout:write(proto.." "..err.."\r\n") + io.stdout:write("\r\n") + local file = io.open("e404.html") + if file then + local tmp = file:read("*a") + tmp = string.gsub(tmp,"404 Not Found",err .. " " .. desc) + io.stdout:write(tmp) + file:close() + end +end + + +os.execute("rm -rf /config/channels") + +io.stdout:write(proto.." 303".."\r\n") +io.stdout:write("Location: http://"..host.."/reboot.html".."\r\n") +io.stdout:write("\r\n") + diff --git a/octoserve/var/www/dlchannels.lua b/octoserve/var/www/dlchannels.lua new file mode 100644 index 0000000..c669ef3 --- /dev/null +++ b/octoserve/var/www/dlchannels.lua @@ -0,0 +1,66 @@ +#!/usr/bin/lua + +local host = os.getenv("HTTP_HOST") +local proto = os.getenv("SERVER_PROTOCOL") +local query = os.getenv("QUERY_STRING") + +if arg[1] then + query = arg[1] + if query == "get" then query = "" end + proto = "HTTP/1.0" + host = "local" +end + +function SendError(err,desc) + io.stdout:write(proto.." "..err.."\r\n") + io.stdout:write("\r\n") + local file = io.open("e404.html") + if file then + local tmp = file:read("*a") + tmp = string.gsub(tmp,"404 Not Found",err .. " " .. desc) + io.stdout:write(tmp) + file:close() + end +end + +local path = nil +local tmp = "/var/tmp/xxxx" + +if string.match(query,"select=user") then + local file = io.open("/config/channels/sourcelist.csv") + if file then + path = "/config/channels" + file:close() + else + path = "/var/channels" + end +elseif string.match(query,"select=system") then + path = "/var/channels" +else + SendError("404","channel list not found") + return +end + +local gz = nil + +os.execute("cd ".. path .. ";tar -cf " .. tmp .. ".tar" .. " *.csv *.txt"); + +local p = io.popen("gzip -c " .. tmp .. ".tar") +if p then + gz = p:read("*a") + p:close() +end + +if gz then + io.stdout:write(proto.." 200" .."\r\n") + io.stdout:write("Pragma: no-cache".."\r\n") + io.stdout:write("Content-Type: application/gzip".."\r\n") + io.stdout:write('Content-Disposition: filename="channels.tar.gz"'.."\r\n") + io.stdout:write(string.format("Content-Length: %d",#gz).."\r\n") + io.stdout:write("\r\n") + io.stdout:write(gz) +else + SendError("500","internal error") +end + + diff --git a/octoserve/var/www/doupdate.html b/octoserve/var/www/doupdate.html new file mode 100644 index 0000000..bc71532 --- /dev/null +++ b/octoserve/var/www/doupdate.html @@ -0,0 +1,165 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + +
+ DD +
 
+
+ +

DO NOT TURN THE DEVICE OFF

+ + + + + + + +
  
+
+ +
+
+ + + +
+
 
+ + + diff --git a/octoserve/var/www/e404.html b/octoserve/var/www/e404.html new file mode 100644 index 0000000..5ae4aca --- /dev/null +++ b/octoserve/var/www/e404.html @@ -0,0 +1,41 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + + +
+ DD +
 
+
+ +

404 Not Found

+ +
+
 
+ + + diff --git a/octoserve/var/www/index.html b/octoserve/var/www/index.html new file mode 100644 index 0000000..3e971d2 --- /dev/null +++ b/octoserve/var/www/index.html @@ -0,0 +1,131 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ DD +
 
+
+ + + + + + + + + + + + +
+

OctopusNet + +

+
+ +
+
+ +
+
+ +
+
 
+ + + diff --git a/octoserve/var/www/licenses.html b/octoserve/var/www/licenses.html new file mode 100644 index 0000000..34b62ea --- /dev/null +++ b/octoserve/var/www/licenses.html @@ -0,0 +1,4996 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + +
+ DD +
 
+
+ + +
+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

buildroot: COPYING file
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+

Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +

+

Preamble +

+

The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. +

+

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. +

+

To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. +

+

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. +

+

We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. +

+

Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. +

+

Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. +

+

The precise terms and conditions for copying, distribution and +modification follow. +

+

GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +

+

0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". +

+

Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. +

+
    +
  1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. +
+

You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. +

+

2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: +

+
    +
  1. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. +
  2. You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. +
  3. If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) +
+

These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +

+

Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. +

+

In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. +

+

3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: +

+
    +
  1. Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, +
  2. Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, +
  3. Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) +
+

The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. +

+

If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. +

+

4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. +

+

5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. +

+

6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. +

+

7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. +

+

If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. +

+

It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. +

+

This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. +

+

8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. +

+

9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +

+

Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. +

+

10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. +

+

NO WARRANTY +

+

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. +

+

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +

+

END OF TERMS AND CONDITIONS +

+

How to Apply These Terms to Your New Programs +

+

If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. +

+

To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. +

+

<one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> +

+

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 WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +

+

You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +

+

Also add information on how to contact you by electronic and paper mail. +

+

If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: +

+

Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. +

+

The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. +

+

You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: +

+

Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. +

+

<signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice +

+

This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. +

+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

busybox: LICENSE file
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+

--- A note on GPL versions +

+

BusyBox is distributed under version 2 of the General Public License (included +in its entirety, below). Version 2 is the only version of this license which +this version of BusyBox (or modified versions derived from this one) may be +distributed under. +

+
+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+

Copyright (C) 1989, 1991 Free Software Foundation, Inc. +

51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +

+

Preamble +

+

The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. +

+

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. +

+

To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. +

+

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. +

+

We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. +

+

Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. +

+

Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. +

+

The precise terms and conditions for copying, distribution and +modification follow. + +


+ +

GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +

+

0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". +

+

Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. +

+
    +
  1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. +
+

You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. +

+

2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: +

+
    +
  1. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. +
  2. You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. +
  3. If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +
    + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +
+

Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. +

+

In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. +

+

3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: +

+
    +
  1. Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, +
  2. Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, +
  3. Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) +
+

The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. +

+

If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +


+ + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +

5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. +

+

6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. +

+

7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. +

+

If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. +

+

It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. +

+

This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +


+ + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +

9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +

+

Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. +

+

10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. +

+

NO WARRANTY +

+

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. +

+

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +

+

END OF TERMS AND CONDITIONS + +


+ + How to Apply These Terms to Your New Programs + +

If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. +

+

To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. +

+

<one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> +

+

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 WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +

+

You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +

+

Also add information on how to contact you by electronic and paper mail. +

+

If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: +

+

Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. +

+

The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. +

+

You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: +

+

Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. +

+

<signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice +

+

This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. +

+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

lua: COPYRIGHT file
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+

Lua License

+ +

Lua is licensed under the terms of the MIT license reproduced below. +This means that Lua is free software and can be used for both academic +and commercial purposes at absolutely no cost. +

+

For details and rationale, see http://www.lua.org/license.html . +

+
+ +

Copyright (C) 1994-2012 Lua.org, PUC-Rio. +

+

Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +

+

The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +

+
+ +

(end of COPYRIGHT) +

+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

mtd: COPYING file
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+

Copyright (C) 1989, 1991 Free Software Foundation, Inc. +

59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +

+

Preamble +

+

The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. +

+

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. +

+

To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. +

+

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. +

+

We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. +

+

Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. +

+

Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. +

+

The precise terms and conditions for copying, distribution and +modification follow. + +


+ +

GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +

+

0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". +

+

Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. +

+
    +
  1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. +
+

You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. +

+

2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: +

+
    +
  1. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. +
  2. You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. +
  3. If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +
    + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +
+

Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. +

+

In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. +

+

3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: +

+
    +
  1. Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, +
  2. Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, +
  3. Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) +
+

The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. +

+

If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +


+ + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +

5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. +

+

6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. +

+

7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. +

+

If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. +

+

It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. +

+

This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +


+ + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +

9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +

+

Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. +

+

10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. +

+

NO WARRANTY +

+

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. +

+

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +

+

END OF TERMS AND CONDITIONS + +


+ + How to Apply These Terms to Your New Programs + +

If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. +

+

To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. +

+

<one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> +

+

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 WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +

+

You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +

+

Also add information on how to contact you by electronic and paper mail. +

+

If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: +

+

Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. +

+

The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. +

+

You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: +

+

Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. +

+

<signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice +

+

This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. +

+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

uboot-tools: COPYING file
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+

U-Boot is Free Software. It is copyrighted by Wolfgang Denk and +many others who contributed code (see the actual source code for +details). You can redistribute U-Boot and/or modify it under the +terms of version 2 of the GNU General Public License as published by +the Free Software Foundation. Most of it can also be distributed, +at your option, under any later version of the GNU General Public +License -- see individual files for exceptions. +

+

NOTE! This license does not cover the so-called "standalone" +applications that use U-Boot services by means of the jump table +provided by U-Boot exactly for this purpose - this is merely +considered normal use of U-Boot, and does not fall under the +heading of "derived work". +

+

The header files "include/image.h" and "include/asm-*/u-boot.h" +define interfaces to U-Boot. Including these (unmodified) header +files in another file is considered normal use of U-Boot, and does +not fall under the heading of "derived work". +

+

Also note that the GPL below is copyrighted by the Free Software +Foundation, but the instance of code that it refers to (the U-Boot +source code) is copyrighted by me and others who actually wrote it. +-- Wolfgang Denk +

+
+ +
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+

Copyright (C) 1989, 1991 Free Software Foundation, Inc. +

59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +

+

Preamble +

+

The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. +

+

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. +

+

To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. +

+

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. +

+

We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. +

+

Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. +

+

Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. +

+

The precise terms and conditions for copying, distribution and +modification follow. + +


+ +

GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +

+

0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". +

+

Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. +

+
    +
  1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. +
+

You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. +

+

2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: +

+
    +
  1. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. +
  2. You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. +
  3. If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +
    + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +
+

Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. +

+

In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. +

+

3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: +

+
    +
  1. Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, +
  2. Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, +
  3. Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) +
+

The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. +

+

If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +


+ + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +

5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. +

+

6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. +

+

7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. +

+

If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. +

+

It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. +

+

This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +


+ + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +

9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +

+

Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. +

+

10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. +

+

NO WARRANTY +

+

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. +

+

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +

+

END OF TERMS AND CONDITIONS +

+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

ccache: LICENSE.txt file
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+

ccache copyright and license

+ +

Overall license

+ +

The license for ccache as a whole is as follows: +

+
+ 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 3 of the License, or (at your option) any later + version. + +

This program is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + PARTICULAR PURPOSE. See the GNU General Public License for more details. +

+

You should have received a copy of the GNU General Public License along with + this program; if not, write to the Free Software Foundation, Inc., 51 Franklin + Street, Fifth Floor, Boston, MA 02110-1301 USA +


+ +

The full license text can be found in GPL-3.0.txt and at +http://www.gnu.org/licenses/gpl-3.0.html. +

+

Copyright and authors

+ +

ccache is a collective work with contributions from many people, listed in +AUTHORS.txt and at http://ccache.samba.org/authors.html. Subsequent additions +by contributing authors are implicitly licensed to the public under the same +terms (GNU GPL version 3 or later), but the contributing authors retain +copyrights on their portions of the work. +

+

The copyright for ccache as a whole is as follows: +

+
+ Copyright (C) 2002-2007 Andrew Tridgell + Copyright (C) 2009-2011 Joel Rosdahl +
+ +

Files derived from other sources

+ +

The ccache distribution contain some files from other sources and some have +been modified for use in ccache. These files all carry attribution notices, and +may qualify as ``separate and independent works in themselves'' for purposes of +the GPL: that is, if separated from the ccache sources, they may be usable +under less restrictive terms. +

+

getopt_long.[hc]

+ +

This implementation of `getopt_long()` was copied from +http://www.postgresql.org[PostgreSQL] and has the following license text: +

+
+ Portions Copyright (c) 1987, 1993, 1994 + The Regents of the University of California. All rights reserved. + +

Portions Copyright (c) 2003
+ PostgreSQL Global Development Group +

+

Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: +

    +
  1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +
  2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +
  3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. +
+

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. +


+ +

hashtable*.[hc]

+ +

This code comes from http://www.cl.cam.ac.uk/~cwc22/hashtable/ with the +following license: +

+
+ Copyright (c) 2002, 2004, Christopher Clark + All rights reserved. + +

Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: +

+
    +
  • Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +
  • Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +
  • Neither the name of the original author; nor the names of any + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. +
+

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +


+ +

m4/feature_macros.m4

+ +

This Autoconf M4 snippet comes from http://www.python.org[Python] 2.6's +`configure.in` with the following license: +

+
+
    +
  1. HISTORY OF THE SOFTWARE +
    +
+

Python was created in the early 1990s by Guido van Rossum at Stichting + Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands + as a successor of a language called ABC. Guido remains Python's + principal author, although it includes many contributions from others. +

+

In 1995, Guido continued his work on Python at the Corporation for + National Research Initiatives (CNRI, see http://www.cnri.reston.va.us) + in Reston, Virginia where he released several versions of the + software. +

+

In May 2000, Guido and the Python core development team moved to + BeOpen.com to form the BeOpen PythonLabs team. In October of the same + year, the PythonLabs team moved to Digital Creations (now Zope + Corporation, see http://www.zope.com). In 2001, the Python Software + Foundation (PSF, see http://www.python.org/psf/) was formed, a + non-profit organization created specifically to own Python-related + Intellectual Property. Zope Corporation is a sponsoring member of + the PSF. +

+

All Python releases are Open Source (see http://www.opensource.org for + the Open Source Definition). Historically, most, but not all, Python + releases have also been GPL-compatible; the table below summarizes + the various releases. +

+
+      Release         Derived     Year        Owner       GPL-
+                      from                                compatible? (1)
+
+      0.9.0 thru 1.2              1991-1995   CWI         yes
+      1.3 thru 1.5.2  1.2         1995-1999   CNRI        yes
+      1.6             1.5.2       2000        CNRI        no
+      2.0             1.6         2000        BeOpen.com  no
+      1.6.1           1.6         2001        CNRI        yes (2)
+      2.1             2.0+1.6.1   2001        PSF         no
+      2.0.1           2.0+1.6.1   2001        PSF         yes
+      2.1.1           2.1+2.0.1   2001        PSF         yes
+      2.2             2.1.1       2001        PSF         yes
+      2.1.2           2.1.1       2002        PSF         yes
+      2.1.3           2.1.2       2002        PSF         yes
+      2.2.1           2.2         2002        PSF         yes
+      2.2.2           2.2.1       2002        PSF         yes
+      2.2.3           2.2.2       2003        PSF         yes
+      2.3             2.2.2       2002-2003   PSF         yes
+      2.3.1           2.3         2002-2003   PSF         yes
+      2.3.2           2.3.1       2002-2003   PSF         yes
+      2.3.3           2.3.2       2002-2003   PSF         yes
+      2.3.4           2.3.3       2004        PSF         yes
+      2.3.5           2.3.4       2005        PSF         yes
+      2.4             2.3         2004        PSF         yes
+      2.4.1           2.4         2005        PSF         yes
+      2.4.2           2.4.1       2005        PSF         yes
+      2.4.3           2.4.2       2006        PSF         yes
+      2.4.4           2.4.3       2006        PSF         yes
+      2.5             2.4         2006        PSF         yes
+      2.5.1           2.5         2007        PSF         yes
+      2.5.2           2.5.1       2008        PSF         yes
+      2.5.3           2.5.2       2008        PSF         yes
+      2.6             2.5         2008        PSF         yes
+      2.6.1           2.6         2008        PSF         yes
+
+
+
Footnotes
+
+
+

(1) GPL-compatible doesn't mean that we're distributing Python under +

+      the GPL.  All Python licenses, unlike the GPL, let you distribute
+      a modified version without making your changes open source.  The
+      GPL-compatible licenses make it possible to combine Python with
+      other software that is released under the GPL; the others don't.
+
+

(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, +

+      because its license has a choice of law clause.  According to
+      CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
+      is "not incompatible" with the GPL.
+
+

Thanks to the many outside volunteers who have worked under Guido's + direction to make these releases possible. +

+

B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON

+ +
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+ +
    +
  1. This LICENSE AGREEMENT is between the Python Software Foundation + ("PSF"), and the Individual or Organization ("Licensee") accessing and + otherwise using this software ("Python") in source or binary form and + its associated documentation. +
  2. Subject to the terms and conditions of this License Agreement, PSF hereby + grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, + analyze, test, perform and/or display publicly, prepare derivative works, + distribute, and otherwise use Python alone or in any derivative version, + provided, however, that PSF's License Agreement and PSF's notice of copyright, + i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Python + Software Foundation; All Rights Reserved" are retained in Python alone or in any + derivative version prepared by Licensee. +
  3. In the event Licensee prepares a derivative work that is based on + or incorporates Python or any part thereof, and wants to make + the derivative work available to others as provided herein, then + Licensee hereby agrees to include in any such work a brief summary of + the changes made to Python. +
  4. PSF is making Python available to Licensee on an "AS IS" + basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. +
  5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. +
  6. This License Agreement will automatically terminate upon a material + breach of its terms and conditions. +
  7. Nothing in this License Agreement shall be deemed to create any + relationship of agency, partnership, or joint venture between PSF and + Licensee. This License Agreement does not grant permission to use PSF + trademarks or trade name in a trademark sense to endorse or promote + products or services of Licensee, or any third party. +
  8. By copying, installing or otherwise using Python, Licensee + agrees to be bound by the terms and conditions of this License + Agreement. +
+
BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
+ +

BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 +

+
    +
  1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an + office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the + Individual or Organization ("Licensee") accessing and otherwise using + this software in source or binary form and its associated + documentation ("the Software"). +
  2. Subject to the terms and conditions of this BeOpen Python License + Agreement, BeOpen hereby grants Licensee a non-exclusive, + royalty-free, world-wide license to reproduce, analyze, test, perform + and/or display publicly, prepare derivative works, distribute, and + otherwise use the Software alone or in any derivative version, + provided, however, that the BeOpen Python License is retained in the + Software, alone or in any derivative version prepared by Licensee. +
  3. BeOpen is making the Software available to Licensee on an "AS IS" + basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. +
  4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. +
  5. This License Agreement will automatically terminate upon a material + breach of its terms and conditions. +
  6. This License Agreement shall be governed by and interpreted in all + respects by the law of the State of California, excluding conflict of + law provisions. Nothing in this License Agreement shall be deemed to + create any relationship of agency, partnership, or joint venture + between BeOpen and Licensee. This License Agreement does not grant + permission to use BeOpen trademarks or trade names in a trademark + sense to endorse or promote products or services of Licensee, or any + third party. As an exception, the "BeOpen Python" logos available at + http://www.pythonlabs.com/logos.html may be used according to the + permissions granted on that web page. +
  7. By copying, installing or otherwise using the software, Licensee + agrees to be bound by the terms and conditions of this License + Agreement. +
+
CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
+ +
    +
  1. This LICENSE AGREEMENT is between the Corporation for National + Research Initiatives, having an office at 1895 Preston White Drive, + Reston, VA 20191 ("CNRI"), and the Individual or Organization + ("Licensee") accessing and otherwise using Python 1.6.1 software in + source or binary form and its associated documentation. +
  2. Subject to the terms and conditions of this License Agreement, CNRI + hereby grants Licensee a nonexclusive, royalty-free, world-wide + license to reproduce, analyze, test, perform and/or display publicly, + prepare derivative works, distribute, and otherwise use Python 1.6.1 + alone or in any derivative version, provided, however, that CNRI's + License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) + 1995-2001 Corporation for National Research Initiatives; All Rights + Reserved" are retained in Python 1.6.1 alone or in any derivative + version prepared by Licensee. Alternately, in lieu of CNRI's License + Agreement, Licensee may substitute the following text (omitting the + quotes): "Python 1.6.1 is made available subject to the terms and + conditions in CNRI's License Agreement. This Agreement together with + Python 1.6.1 may be located on the Internet using the following + unique, persistent identifier (known as a handle): 1895.22/1013. This + Agreement may also be obtained from a proxy server on the Internet + using the following URL: http://hdl.handle.net/1895.22/1013". +
  3. In the event Licensee prepares a derivative work that is based on + or incorporates Python 1.6.1 or any part thereof, and wants to make + the derivative work available to others as provided herein, then + Licensee hereby agrees to include in any such work a brief summary of + the changes made to Python 1.6.1. +
  4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" + basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. +
  5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. +
  6. This License Agreement will automatically terminate upon a material + breach of its terms and conditions. +
  7. This License Agreement shall be governed by the federal + intellectual property law of the United States, including without + limitation the federal copyright law, and, to the extent such + U.S. federal law does not apply, by the law of the Commonwealth of + Virginia, excluding Virginia's conflict of law provisions. + Notwithstanding the foregoing, with regard to derivative works based + on Python 1.6.1 that incorporate non-separable material that was + previously distributed under the GNU General Public License (GPL), the + law of the Commonwealth of Virginia shall govern this License + Agreement only as to issues arising under or with respect to + Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this + License Agreement shall be deemed to create any relationship of + agency, partnership, or joint venture between CNRI and Licensee. This + License Agreement does not grant permission to use CNRI trademarks or + trade name in a trademark sense to endorse or promote products or + services of Licensee, or any third party. +
  8. By clicking on the "ACCEPT" button where indicated, or by copying, + installing or otherwise using Python 1.6.1, Licensee agrees to be + bound by the terms and conditions of this License Agreement. +
+

ACCEPT +

+
CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
+ +

Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, + The Netherlands. All rights reserved. +

+

Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of Stichting Mathematisch + Centrum or CWI not be used in advertising or publicity pertaining to + distribution of the software without specific, written prior + permission. +

+

STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +


+ +

murmurhashneutral2.[hc]

+ +

This fast hash implementation is released to the public domain by Austin +Appleby. See http://murmurhash.googlepages.com. +

+

snprintf.c and m4/snprintf.m4

+ +

This implementation of `snprintf()` and similar functions was downloaded from +http://www.jhweiss.de/software/snprintf.html and has the following license: +

+
+ Copyright (c) 1995 Patrick Powell. + +

This code is based on code written by Patrick Powell <papowell@astart.com>. + It may be used for any purpose as long as this notice remains intact on all + source code distributions. +

+

Copyright (c) 2008 Holger Weiss. +

+

This version of the code is maintained by Holger Weiss <holger@jhweiss.de>. + My changes to the code may freely be used, modified and/or redistributed for + any purpose. It would be nice if additions and fixes to this file (including + trivial code cleanups) would be sent back in order to let me include them in + the version available at <http://www.jhweiss.de/software/snprintf.html>. + However, this is not a requirement for using or redistributing (possibly + modified) versions of this file, nor is leaving this notice intact mandatory. +


+ +

zlib/*.[hc]

+ +

This is a bundled subset of zlib 1.2.3 from <http://www.zlib.net> with the +following license: +

+
+ Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler + +

This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. +

+

Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: +

+
    +
  1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +
  2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +
  3. This notice may not be removed or altered from any source distribution. +
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
+
+

The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt + (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). +


+ +

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

ccache: GPL-3.0.txt file
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+

Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +

+

Preamble +

+

The GNU General Public License is a free, copyleft license for +software and other kinds of works. +

+

The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. +

+

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. +

+

To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. +

+

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. +

+

Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. +

+

For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. +

+

Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. +

+

Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. +

+

The precise terms and conditions for copying, distribution and +modification follow. +

+

TERMS AND CONDITIONS +

+

0. Definitions. +

+

"This License" refers to version 3 of the GNU General Public License. +

+

"Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +

"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. +

+

To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. +

+

A "covered work" means either the unmodified Program or a work based +on the Program. +

+

To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. +

+

To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. +

+

An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. +

+
    +
  1. Source Code. +
+

The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. +

+

A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. +

+

The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. +

+

The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. +

+

The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. +

+

The Corresponding Source for a work in source code form is that +same work. +

+

2. Basic Permissions. +

+

All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. +

+

You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. +

+

Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. +

+

3. Protecting Users' Legal Rights From Anti-Circumvention Law. +

+

No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. +

+

When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. +

+

4. Conveying Verbatim Copies. +

+

You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. +

+

You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. +

+

5. Conveying Modified Source Versions. +

+

You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: +

+
    +
  1. The work must carry prominent notices stating that you modified + it, and giving a relevant date. +
  2. The work must carry prominent notices stating that it is + released under this License and any conditions added under section +
  3. This requirement modifies the requirement in section 4 to + "keep intact all notices". +
  4. You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. +
  5. If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. +
+

A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. +

+

6. Conveying Non-Source Forms. +

+

You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: +

+
    +
  1. Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. +
  2. Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. +
  3. Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. +
  4. Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. +
  5. Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. +
+

A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. +

+

A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. +

+

"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. +

+

If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). +

+

The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. +

+

Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. +

+

7. Additional Terms. +

+

"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. +

+

When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. +

+

Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: +

+
    +
  1. Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or +
  2. Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or +
  3. Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or +
  4. Limiting the use for publicity purposes of names of licensors or + authors of the material; or +
  5. Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or +
  6. Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. +
+

All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. +

+

If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. +

+

Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. +

+

8. Termination. +

+

You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). +

+

However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. +

+

Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. +

+

Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. +

+

9. Acceptance Not Required for Having Copies. +

+

You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. +

+

10. Automatic Licensing of Downstream Recipients. +

+

Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. +

+

An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. +

+

You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. +

+

11. Patents. +

+

A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". +

+

A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. +

+

Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. +

+

In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. +

+

If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +

If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. +

+

A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. +

+

Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. +

+

12. No Surrender of Others' Freedom. +

+

If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. +

+

13. Use with the GNU Affero General Public License. +

+

Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. +

+

14. Revised Versions of this License. +

+

The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +

+

Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. +

+

If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. +

+

Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. +

+

15. Disclaimer of Warranty. +

+

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. +

+

16. Limitation of Liability. +

+

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. +

+

17. Interpretation of Sections 15 and 16. +

+

If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. +

+

END OF TERMS AND CONDITIONS +

+

How to Apply These Terms to Your New Programs +

+

If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. +

+

To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. +

+

<one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> +

+

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 3 of the License, or + (at your option) any later version. +

+

This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +

+

You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +

+

Also add information on how to contact you by electronic and paper mail. +

+

If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: +

+

<program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. +

+

The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". +

+

You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. +

+

The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. +

+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

fakeroot: COPYING file
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+

Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +

+

Preamble +

+

The GNU General Public License is a free, copyleft license for +software and other kinds of works. +

+

The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. +

+

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. +

+

To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. +

+

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. +

+

Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. +

+

For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. +

+

Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. +

+

Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. +

+

The precise terms and conditions for copying, distribution and +modification follow. +

+

TERMS AND CONDITIONS +

+

0. Definitions. +

+

"This License" refers to version 3 of the GNU General Public License. +

+

"Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +

"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. +

+

To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. +

+

A "covered work" means either the unmodified Program or a work based +on the Program. +

+

To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. +

+

To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. +

+

An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. +

+
    +
  1. Source Code. +
+

The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. +

+

A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. +

+

The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. +

+

The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. +

+

The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. +

+

The Corresponding Source for a work in source code form is that +same work. +

+

2. Basic Permissions. +

+

All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. +

+

You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. +

+

Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. +

+

3. Protecting Users' Legal Rights From Anti-Circumvention Law. +

+

No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. +

+

When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. +

+

4. Conveying Verbatim Copies. +

+

You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. +

+

You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. +

+

5. Conveying Modified Source Versions. +

+

You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: +

+
    +
  1. The work must carry prominent notices stating that you modified + it, and giving a relevant date. +
  2. The work must carry prominent notices stating that it is + released under this License and any conditions added under section +
  3. This requirement modifies the requirement in section 4 to + "keep intact all notices". +
  4. You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. +
  5. If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. +
+

A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. +

+

6. Conveying Non-Source Forms. +

+

You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: +

+
    +
  1. Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. +
  2. Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. +
  3. Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. +
  4. Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. +
  5. Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. +
+

A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. +

+

A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. +

+

"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. +

+

If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). +

+

The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. +

+

Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. +

+

7. Additional Terms. +

+

"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. +

+

When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. +

+

Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: +

+
    +
  1. Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or +
  2. Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or +
  3. Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or +
  4. Limiting the use for publicity purposes of names of licensors or + authors of the material; or +
  5. Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or +
  6. Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. +
+

All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. +

+

If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. +

+

Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. +

+

8. Termination. +

+

You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). +

+

However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. +

+

Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. +

+

Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. +

+

9. Acceptance Not Required for Having Copies. +

+

You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. +

+

10. Automatic Licensing of Downstream Recipients. +

+

Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. +

+

An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. +

+

You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. +

+

11. Patents. +

+

A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". +

+

A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. +

+

Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. +

+

In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. +

+

If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +

If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. +

+

A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. +

+

Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. +

+

12. No Surrender of Others' Freedom. +

+

If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. +

+

13. Use with the GNU Affero General Public License. +

+

Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. +

+

14. Revised Versions of this License. +

+

The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +

+

Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. +

+

If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. +

+

Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. +

+

15. Disclaimer of Warranty. +

+

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. +

+

16. Limitation of Liability. +

+

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. +

+

17. Interpretation of Sections 15 and 16. +

+

If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. +

+

END OF TERMS AND CONDITIONS +

+

How to Apply These Terms to Your New Programs +

+

If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. +

+

To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. +

+

<one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> +

+

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 3 of the License, or + (at your option) any later version. +

+

This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +

+

You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +

+

Also add information on how to contact you by electronic and paper mail. +

+

If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: +

+

<program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. +

+

The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". +

+

You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. +

+

The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. +

+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

module-init-tools: COPYING file +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+

Copyright (C) 1989, 1991 Free Software Foundation, Inc. +

59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +

+

Preamble +

+

The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. +

+

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. +

+

To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. +

+

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. +

+

We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. +

+

Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. +

+

Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. +

+

The precise terms and conditions for copying, distribution and +modification follow. + +


+ +

GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +

+

0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". +

+

Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. +

+
    +
  1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. +
+

You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. +

+

2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: +

+
    +
  1. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. +
  2. You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. +
  3. If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +
    + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +
+

Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. +

+

In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. +

+

3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: +

+
    +
  1. Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, +
  2. Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, +
  3. Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) +
+

The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. +

+

If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +


+ + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +

5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. +

+

6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. +

+

7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. +

+

If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. +

+

It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. +

+

This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +


+ + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +

9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +

+

Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. +

+

10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. +

+

NO WARRANTY +

+

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. +

+

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +

+

END OF TERMS AND CONDITIONS + +


+ + How to Apply These Terms to Your New Programs + +

If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. +

+

To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. +

+

<one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> +

+

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 WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +

+

You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +

+

Also add information on how to contact you by electronic and paper mail. +

+

If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: +

+

Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. +

+

The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. +

+

You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: +

+

Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. +

+

<signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice +

+

This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. +

+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

uboot-tools: COPYING file
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+

U-Boot is Free Software. It is copyrighted by Wolfgang Denk and +many others who contributed code (see the actual source code for +details). You can redistribute U-Boot and/or modify it under the +terms of version 2 of the GNU General Public License as published by +the Free Software Foundation. Most of it can also be distributed, +at your option, under any later version of the GNU General Public +License -- see individual files for exceptions. +

+

NOTE! This license does not cover the so-called "standalone" +applications that use U-Boot services by means of the jump table +provided by U-Boot exactly for this purpose - this is merely +considered normal use of U-Boot, and does not fall under the +heading of "derived work". +

+

The header files "include/image.h" and "include/asm-*/u-boot.h" +define interfaces to U-Boot. Including these (unmodified) header +files in another file is considered normal use of U-Boot, and does +not fall under the heading of "derived work". +

+

Also note that the GPL below is copyrighted by the Free Software +Foundation, but the instance of code that it refers to (the U-Boot +source code) is copyrighted by me and others who actually wrote it. +-- Wolfgang Denk +

+
+ +
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+

Copyright (C) 1989, 1991 Free Software Foundation, Inc. +

59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +

+

Preamble +

+

The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. +

+

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. +

+

To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. +

+

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. +

+

We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. +

+

Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. +

+

Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. +

+

The precise terms and conditions for copying, distribution and +modification follow. + +


+ +

GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +

+

0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". +

+

Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. +

+
    +
  1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. +
+

You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. +

+

2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: +

+
    +
  1. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. +
  2. You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. +
  3. If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +
    + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +
+

Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. +

+

In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. +

+

3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: +

+
    +
  1. Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, +
  2. Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, +
  3. Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) +
+

The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. +

+

If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +


+ + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +

5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. +

+

6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. +

+

7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. +

+

If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. +

+

It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. +

+

This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +


+ + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +

9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +

+

Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. +

+

10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. +

+

NO WARRANTY +

+

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. +

+

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +

+

END OF TERMS AND CONDITIONS +

+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

autoconf: COPYINGv3 file
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+

Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +

+

Preamble +

+

The GNU General Public License is a free, copyleft license for +software and other kinds of works. +

+

The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. +

+

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. +

+

To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. +

+

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. +

+

Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. +

+

For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. +

+

Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. +

+

Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. +

+

The precise terms and conditions for copying, distribution and +modification follow. +

+

TERMS AND CONDITIONS +

+

0. Definitions. +

+

"This License" refers to version 3 of the GNU General Public License. +

+

"Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. +

+

"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. +

+

To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. +

+

A "covered work" means either the unmodified Program or a work based +on the Program. +

+

To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. +

+

To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. +

+

An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. +

+
    +
  1. Source Code. +
+

The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. +

+

A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. +

+

The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. +

+

The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. +

+

The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. +

+

The Corresponding Source for a work in source code form is that +same work. +

+

2. Basic Permissions. +

+

All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. +

+

You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. +

+

Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. +

+

3. Protecting Users' Legal Rights From Anti-Circumvention Law. +

+

No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. +

+

When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. +

+

4. Conveying Verbatim Copies. +

+

You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. +

+

You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. +

+

5. Conveying Modified Source Versions. +

+

You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: +

+
    +
  1. The work must carry prominent notices stating that you modified + it, and giving a relevant date. +
  2. The work must carry prominent notices stating that it is + released under this License and any conditions added under section +
  3. This requirement modifies the requirement in section 4 to + "keep intact all notices". +
  4. You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. +
  5. If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. +
+

A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. +

+

6. Conveying Non-Source Forms. +

+

You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: +

+
    +
  1. Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. +
  2. Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. +
  3. Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. +
  4. Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. +
  5. Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. +
+

A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. +

+

A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. +

+

"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. +

+

If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). +

+

The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. +

+

Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. +

+

7. Additional Terms. +

+

"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. +

+

When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. +

+

Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: +

+
    +
  1. Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or +
  2. Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or +
  3. Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or +
  4. Limiting the use for publicity purposes of names of licensors or + authors of the material; or +
  5. Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or +
  6. Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. +
+

All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. +

+

If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. +

+

Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. +

+

8. Termination. +

+

You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). +

+

However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. +

+

Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. +

+

Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. +

+

9. Acceptance Not Required for Having Copies. +

+

You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. +

+

10. Automatic Licensing of Downstream Recipients. +

+

Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. +

+

An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. +

+

You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. +

+

11. Patents. +

+

A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". +

+

A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. +

+

Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. +

+

In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. +

+

If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. +

+

If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. +

+

A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. +

+

Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. +

+

12. No Surrender of Others' Freedom. +

+

If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. +

+

13. Use with the GNU Affero General Public License. +

+

Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. +

+

14. Revised Versions of this License. +

+

The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +

+

Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. +

+

If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. +

+

Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. +

+

15. Disclaimer of Warranty. +

+

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. +

+

16. Limitation of Liability. +

+

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. +

+

17. Interpretation of Sections 15 and 16. +

+

If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. +

+

END OF TERMS AND CONDITIONS +

+

How to Apply These Terms to Your New Programs +

+

If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. +

+

To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. +

+

<one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> +

+

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 3 of the License, or + (at your option) any later version. +

+

This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +

+

You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +

+

Also add information on how to contact you by electronic and paper mail. +

+

If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: +

+

<program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. +

+

The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". +

+

You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. +

+

The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. +

+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

autoconf: COPYING.EXCEPTION file +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+
+                   AUTOCONF CONFIGURE SCRIPT EXCEPTION
+                       Version 3.0, 18 August 2009
+
+

Copyright (C) 2009 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +

+

This Exception is an additional permission under section 7 of the GNU +General Public License, version 3 ("GPLv3"). It applies to a given +file that bears a notice placed by the copyright holder of the file +stating that the file is governed by GPLv3 along with this Exception. +

+

The purpose of this Exception is to allow distribution of Autoconf's +typical output under terms of the recipient's choice (including +proprietary). +

+

0. Definitions +

+

"Covered Code" is the source or object code of a version of Autoconf +that is a covered work under this License. +

+

"Normally Copied Code" for a version of Autoconf means all parts of +its Covered Code which that version can copy from its code (i.e., not +from its input file) into its minimally verbose, non-debugging and +non-tracing output. +

+

"Ineligible Code" is Covered Code that is not Normally Copied Code. +

+
    +
  1. Grant of Additional Permission. +
+

You have permission to propagate output of Autoconf, even if such +propagation would otherwise violate the terms of GPLv3. However, if +by modifying Autoconf you cause any Ineligible Code of the version you +received to become Normally Copied Code of your modified version, then +you void this Exception for the resulting covered work. If you convey +that resulting covered work, you must remove this Exception in accordance +with the second paragraph of Section 7 of GPLv3. +

+

2. No Weakening of Autoconf Copyleft. +

+

The availability of this Exception does not imply any general presumption +that third-party software is unaffected by the copyleft requirements of +the license of Autoconf. +

+

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

automake: COPYING file
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +

+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+

Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +

+

Preamble +

+

The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. +

+

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. +

+

To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. +

+

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. +

+

We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. +

+

Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. +

+

Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. +

+

The precise terms and conditions for copying, distribution and +modification follow. +

+

GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +

+

0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". +

+

Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. +

+
    +
  1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. +
+

You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. +

+

2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: +

+
    +
  1. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. +
  2. You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. +
  3. If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) +
+

These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +

+

Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. +

+

In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. +

+

3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: +

+
    +
  1. Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, +
  2. Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, +
  3. Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) +
+

The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. +

+

If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. +

+

4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. +

+

5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. +

+

6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. +

+

7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. +

+

If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. +

+

It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. +

+

This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. +

+

8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. +

+

9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +

+

Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. +

+

10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. +

+

NO WARRANTY +

+

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. +

+

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +

+

END OF TERMS AND CONDITIONS +

+

How to Apply These Terms to Your New Programs +

+

If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. +

+

To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. +

+

<one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> +

+

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 WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +

+

You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +

+

Also add information on how to contact you by electronic and paper mail. +

+

If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: +

+

Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. +

+

The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. +

+

You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: +

+

Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. +

+

<signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice +

+

This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. +

+ +
+
 
+ + + diff --git a/octoserve/var/www/lnbsettings.html b/octoserve/var/www/lnbsettings.html new file mode 100644 index 0000000..71bd7fe --- /dev/null +++ b/octoserve/var/www/lnbsettings.html @@ -0,0 +1,381 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + + +
+ DD +
 
+
+ + + + + + + + +
Enable manual LNB configuration +
+ +
+
+
+
+ + +
+
+
+ +
+

Automatic LNB Selection

+
  • Ku Band: Universal LNB
  • + +
    + +
    +

    Manual LNB Selection

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Tuner   +
    + +
    +
     (empty for all)
    Source   +
    + +
    +
     (empty for all)
    LOF low   +
    + +
    +
     MHz
    LOF high   +
    + +
    +
     MHz (empty for unused)
    LOF switch   +
    + +
    +
     MHz (empty for unused)
    +
    + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    LNBTunerSourceLOF lowLOF highLOF switch 
    +
    + + + + + + + +
    +
     
    + + + diff --git a/octoserve/var/www/lnbsettings.lua b/octoserve/var/www/lnbsettings.lua new file mode 100644 index 0000000..ea4b2b2 --- /dev/null +++ b/octoserve/var/www/lnbsettings.lua @@ -0,0 +1,185 @@ +#!/usr/bin/lua + +function SaveOctoserveConf(Section,Values) + local ConfStart = "" + local f = io.open("/config/octoserve.conf","r") + local line + if f then + while true do + while true do + line = f:read() + if not line then break end + if string.match(line,"^%["..Section.."%]") then break end + ConfStart = ConfStart .. line .. "\n" + end + while true do + line = f:read() + if not line then break end + if not string.match(line,"^%["..Section.."%]") then + if string.match(line,"^%[%w+%]") then + ConfStart = ConfStart .. line .. "\n" + break + end + end + end + if not line then break end + end + f:close() + os.remove("/config/octoserve.bak") + os.rename("/config/octoserve.conf","/config/octoserve.bak") + end + + f = io.open("/config/octoserve.conf","w") + if ConfStart then + f:write(ConfStart) + end + f:write(Values) + f:close() +end + +function LoadOctoserveConf(Section) + local f = io.open("/config/octoserve.conf","r") + local line + local Sections = {} + local curSection = {} + if f then + while true do + while true do + line = f:read() + if not line then break end + if string.match(line,"^%["..Section.."%]") then + break + end + end + while true do + line = f:read() + if not line then break end + if string.match(line,"^%["..Section.."%]") then + if #curSection > 0 then + table.insert(Sections,curSection) + curSection = {} + end + else + if string.match(line,"^%[%w+%]") then + break + else + if #line > 0 and not string.match(line,"^%#") then + table.insert(curSection,line) + end + end + end + end + if #curSection > 0 then + table.insert(Sections,curSection) + curSection = {} + end + if not line then break end + end + f:close() + end + return Sections +end + + +local host = os.getenv("HTTP_HOST") +local proto = os.getenv("SERVER_PROTOCOL") +local query = os.getenv("QUERY_STRING") + +if arg[1] then + query = arg[1] + if query == "get" then query = "" end + proto = "HTTP/1.0" + host = "local" +end + +if query ~= "" then + local nextloc = "wait.html?5" + local params = io.stdin:read("*a") + local p,v + local auto = false + local conf = "" + + -- print(proto.." 200") + -- print("Pragma: no-cache") + -- print("Content-Type: text/plain") + -- print("") + + print(proto.." 303") + print("Location: http://"..host.."/"..nextloc) + print("") + + for p,v in string.gmatch(params,"(%a+)=([0123456789%.]+)") do + print(p,v) + if p == "auto" and p == "1" then + auto = true + break + end + if p == "LNB" then + local lnb,tuner,source,lof1,lof2,lofs = string.match(v,"(%d+)%.(%d+)%.(%d+)%.(%d+)%.(%d+)%.(%d+)") + + conf = conf .. "[LNB]\n" + conf = conf .. "#\n# LNB " .. lnb .. " Setting\n#\n" + if tuner > "0" then conf = conf .. string.format("Tuner=%d\n",tuner) end + if source > "0" then conf = conf .. string.format("Source=%d\n",source) end + conf = conf .. string.format("LOF1=%d\n",lof1) + if lof2 > "0" then conf = conf .. string.format("LOF2=%d\n",lof2) end + if lofs > "0" then conf = conf .. string.format("LOFS=%d\n",lofs) end + conf = conf .. "\n" + + end + end + + SaveOctoserveConf("LNB",conf) + os.execute("/etc/init.d/S99octo restartoctoserve&") +else + + print(proto.." 200") + print("Pragma: no-cache") + print("Content-Type: application/x-javascript") + print("") + + print("LNBList = new Array();") + + local i,lnb + local Conf = LoadOctoserveConf("LNB") + + i = 0 + for _,lnb in pairs(Conf) do + local Tuner = 0 + local Source = 0 + local LOF1 = 0 + local LOF2 = 0 + local LOFS = 0 + + for _,line in pairs(lnb) do + local n,v = string.match(line,"%s-(%w+)%s-=%s-(%d+)") + if n == "Tuner" then Tuner = v end + if n == "Source" then Source = v end + if n == "LOF1" then LOF1 = v end + if n == "LOF2" then LOF2 = v end + if n == "LOFS" then LOFS = v end + print("// " .. n .. " = " .. v); + end + + print(string.format("LNBList[%d] = new Object();" ,i)) + print(string.format("LNBList[%d].Tuner = %d;" ,i,Tuner )) + print(string.format("LNBList[%d].Source = %d;" ,i,Source)) + print(string.format("LNBList[%d].LOF1 = %d;" ,i,LOF1 )) + print(string.format("LNBList[%d].LOF2 = %d;" ,i,LOF2 )) + print(string.format("LNBList[%d].LOFS = %d;" ,i,LOFS )) + + + i = i + 1 + end + + -- print("LNBList[0] = new Object();") + -- print("LNBList[0].Tuner = 0;") + -- print("LNBList[0].Source = 0;") + -- print("LNBList[0].LOF1 = 9750;") + -- print("LNBList[0].LOF2 = 10600;") + -- print("LNBList[0].LOFS = 11700;") + + +end + + diff --git a/octoserve/var/www/ltest.lua b/octoserve/var/www/ltest.lua new file mode 100644 index 0000000..1096802 --- /dev/null +++ b/octoserve/var/www/ltest.lua @@ -0,0 +1,25 @@ +#!/usr/bin/lua + +-- HTTP header +print [[ +Content-Type: text/plain +Set-Cookie: foo=bar +Set-Cookie: wonder=always + +]] + +-- body of page + +-- find all environment variables using bash and a temporary file + +fname = os.tmpname () +os.execute ("/bin/sh -c set > " .. fname) +f = io.open (fname, "r") -- open it +s = f:read ("*a") -- read all of it +print (s) +f:close () -- close it +os.remove (fname) + +print("") +params = io.stdin:read("*a") +print(params) \ No newline at end of file diff --git a/octoserve/var/www/mclist.lua b/octoserve/var/www/mclist.lua new file mode 100644 index 0000000..5e8c13f --- /dev/null +++ b/octoserve/var/www/mclist.lua @@ -0,0 +1,107 @@ +#!/usr/bin/lua + +local host = os.getenv("HTTP_HOST") +local proto = os.getenv("SERVER_PROTOCOL") +local query = os.getenv("QUERY_STRING") +local method = os.getenv("REQUEST_METHOD") +local clength = os.getenv("CONTENT_LENGTH") +local ctype = os.getenv("CONTENT_TYPE") + +function http_print(s) + if s then + io.stdout:write(tostring(s).."\r\n") + else + io.stdout:write("\r\n") + end +end + +function GetDevID() + local devid = nil + local tmp = io.open("/config/device.id") + if tmp then + devid = tonumber(tmp:read()) + tmp:close() + end + return devid +end + +function ReadList() + local list = {} + local devid = GetDevID() + if not devid then return nil end + local file = io.open("/config/mcsetup.csv","r") + if file then + local line = file:read() + if line then + line = string.gsub(line,'"','') + if line:match("TITLE,REQUEST,PIDS,LANPORTS") then + local i = 1 + while i < 13 do + line = file:read() + if not line then break end + if DebugFlag then print(line) end + local title,request,pids,lanports = line:match('%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%",%"L(%a-[%d%:]-)%"') + if not title then + title,request,pids = line:match('%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%"') + end + if not title or not request or not pids then + break + end + if pids == "" then break end + if lanports then + if lanports == "" then lanports = nil end + end + + table.insert(list, { title = title, ip = "239."..devid..".2."..i, port = "6670", lanports = lanports } ) + i = i + 1 + end + elseif line:match("TITLE,REQUEST,PIDS,PROTO,IP,PORT,TTL,LANPORTS") then + while true do + line = file:read() + if not line then break end + if DebugFlag then print(line) end + local title,request,pids,proto,ip,port,ttl,lanports = line:match('%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%",%"(%u%u%u)%",%"(%d*%.%d*%.%d*%.%d*)%",(%d*),(%d*),%"L(%a-[%d%:]-)%"') + if not title then + title,request,pids,proto,ip,port,ttl = line:match('%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%",%"(%u%u%u)%",%"(%d*%.%d*%.%d*%.%d*)%",(%d*),(%d*)') + end + if not title or not request or not pids then + break + end + if pids == "" then break end + if proto ~= "UDP" and proto ~= "RTP" then break end + + pids = string.gsub(pids,":",",") + if lanports then + lanports = string.gsub(lanports,":",",") + if lanports == "" then lanports = nil end + if lanports == "all" then lanports = "1,2,3,4,5" end + end + local url + table.insert(list,{ title = title, proto = proto, ip = ip, port = port,lanports = lanports }) + end + end + end + file:close() + end + + return list +end + +local mclist = ReadList() + + +http_print("HTTP/1.1 200") +http_print("Pragma: no-cache") +http_print("Content-Type: application/x-javascript") +http_print() + +http_print('Multicast = new Array();') +local i,entry +for i,entry in ipairs(mclist) do + http_print(string.format("Multicast[%d] = new Object();",i-1)) + http_print(string.format("Multicast[%d].Title = '%s';",i-1,entry.title:gsub("'","\\'"))) + http_print(string.format("Multicast[%d].Dest = '%s:%s';",i-1,entry.ip,entry.port)) + if entry.lanports then + http_print(string.format("Multicast[%d].LanPorts = '%s';",i-1,entry.lanports:gsub(":"," "))) + end +end diff --git a/octoserve/var/www/menu.js b/octoserve/var/www/menu.js new file mode 100644 index 0000000..46f43dd --- /dev/null +++ b/octoserve/var/www/menu.js @@ -0,0 +1,104 @@ + +// + +MenuItems = new Array(); + +MenuItems[0] = new Object(); +MenuItems[0].Text = "Home"; +MenuItems[0].Link = "index.html"; + +MenuItems[1] = new Object(); +MenuItems[1].Text = "Browser TV"; +MenuItems[1].Link = "browsertv.html"; + +MenuItems[2] = new Object(); +MenuItems[2].Text = "Stream Status"; +MenuItems[2].Link = "streamstatus.html"; + +MenuItems[3] = new Object(); +MenuItems[3].Text = "Tuner Status"; +MenuItems[3].Link = "tunerstatus.html"; + +MenuItems[4] = new Object(); +MenuItems[4].Text = "Unicable Settings"; +MenuItems[4].Link = "scif.html"; + +MenuItems[5] = new Object(); +MenuItems[5].Text = "LNB Settings"; +MenuItems[5].Link = "lnbsettings.html"; + +MenuItems[6] = new Object(); +MenuItems[6].Text = "System Settings"; +MenuItems[6].Link = "system.html"; + +MenuItems[7] = new Object(); +MenuItems[7].Text = "Multicast Setup"; +MenuItems[7].Link = "multicast.html"; + +MenuItems[8] = new Object(); +MenuItems[8].Text = "Channel Lists"; +MenuItems[8].Link = "channellists.html"; + +MenuItems[9] = new Object(); +MenuItems[9].Text = "Update"; +MenuItems[9].Link = "update.html"; + +MenuItems[10] = new Object(); +MenuItems[10].Text = "Reboot"; +MenuItems[10].Link = "reboot.html"; + +MenuItems[11] = new Object(); +MenuItems[11].Text = "Licenses"; +MenuItems[11].Link = "licenses.html"; + +// add additional items here + +// --------------------------------------------------------------- +// Don't touch + +function CreateMenu() +{ + document.write(''); + for(i = 0; i < MenuItems.length; i++ ) + { + if( document.URL.indexOf(MenuItems[i].Link) < 0 ) + document.write(''); + else + document.write(''); + } + document.write(''); +} + +// -------------------------------------------------------------- + +var browserType = "unk"; +var browserLanguage = "en"; +var browserPlatform = "unk"; + +if( navigator.appVersion.indexOf("MSIE") >= 0 ) + browserType = "MSIE"; +else + browserType = "Netscape"; + +if( browserType == "MSIE" ) + browserLanguage = navigator.browserLanguage.substr(0,2); +else if( browserType == "Netscape" ) +{ + var nplat = navigator.platform.toLowerCase(); + browserLanguage = navigator.language.substr(0,2); + if( nplat.indexOf("win") == 0 ) + browserPlatform = "win"; + else if( nplat.indexOf("linux") >= 0 ) + browserPlatform = "linux"; + else if( nplat.indexOf("ipad") >= 0 ) + browserPlatform = "ipad"; +} + +// document.write(navigator.appName); +// document.write(navigator.appVersion); +// document.write(navigator.browserLanguage); +// document.write(navigator.language); +// document.write(navigator.platform); +// document.write(navigator.mimeTypes.length); +// document.write(navigator.plugins.length); +// document.write(window.ActiveXObject ? "AX" : "no AX"); diff --git a/octoserve/var/www/multicast.html b/octoserve/var/www/multicast.html new file mode 100644 index 0000000..e89fe38 --- /dev/null +++ b/octoserve/var/www/multicast.html @@ -0,0 +1,160 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + +
    + DD +
     
    +
    + +

    Static Multicast Setup

    +
    + + + + + + + + +
    StreamTitleDestinationLan-Ports
    +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Current Settings + +
    + + +
    +
    + M3U List + +
    + + +
    +
    + Samples + +
    + + + +
    +
    + Select Sample + +
    + + + +
    +
     
    +
    + + +
    +
     
    +
    + + +
    +
    + +
    +
     
    + + + diff --git a/octoserve/var/www/multicast.lua b/octoserve/var/www/multicast.lua new file mode 100644 index 0000000..6949f61 --- /dev/null +++ b/octoserve/var/www/multicast.lua @@ -0,0 +1,224 @@ +#!/usr/bin/lua + +local host = os.getenv("HTTP_HOST") +local proto = os.getenv("SERVER_PROTOCOL") +local query = os.getenv("QUERY_STRING") +local method = os.getenv("REQUEST_METHOD") +local clength = os.getenv("CONTENT_LENGTH") +local ctype = os.getenv("CONTENT_TYPE") + +function http_print(s) + if s then + io.stdout:write(tostring(s).."\r\n") + else + io.stdout:write("\r\n") + end +end + +if #arg> 0 then + method="GET" + query="select=m3u" + proto = "HTTP/1.0" +end + +function SendError(err,desc) + http_print(proto.." "..err) + http_print() + local file = io.open("e404.html") + if file then + local tmp = file:read("*a") + tmp = string.gsub(tmp,"404 Not Found",err .. " " .. desc) + http_print(tmp) + file:close() + end +end + +function GetDevID() + local devid = nil + local tmp = io.open("/config/device.id") + if tmp then + devid = tonumber(tmp:read()) + tmp:close() + end + return devid +end + +function CreateM3U() + local m3u = nil + local devid = GetDevID() + if not devid then return nil end + local file = io.open("/config/mcsetup.csv","r") + if file then + local line = file:read() + if line then + line = string.gsub(line,'"','') + if string.match(line,"TITLE,REQUEST,PIDS,LANPORTS") then + local i = 1 + m3u = "#EXTM3U".."\n" + while i < 13 do + line = file:read() + if not line then break end + if DebugFlag then print(line) end + local title,request,pids,lanports = string.match(line,'%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%",%"L(%a-[%d%:]-)%"') + if not title then + title,request,pids = string.match(line,'%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%"') + end + if not title or not request or not pids then + break + end + if pids == "" then break end + + m3u = m3u .. "#EXTINF:0,"..title.."\n" + .. "rtp://239."..devid..".2."..i..":6670\n" + i = i + 1 + end + elseif line:match("TITLE,REQUEST,PIDS,PROTO,IP,PORT,TTL,LANPORTS") then + local i = 1 + m3u = "#EXTM3U".."\n" + while i < 13 do + line = file:read() + if not line then break end + if DebugFlag then print(line) end + local title,request,pids,proto,ip,port,ttl,lanports = line:match('%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%",%"(%u%u%u)%",%"(%d*%.%d*%.%d*%.%d*)%",(%d*),(%d*),%"L(%a-[%d%:]-)%"') + if not title then + title,request,pids,proto,ip,port,ttl = line:match('%"(.*)%",%"(.*)%",%"P(%a-[%d%:]-)%",%"(%u%u%u)%",%"(%d*%.%d*%.%d*%.%d*)%",(%d*),(%d*)') + end + if not title or not request or not pids then + break + end + + if pids == "" then break end + if proto ~= "UDP" and proto ~= "RTP" then break end + if proto == "UDP" then ip = "@"..ip end + + m3u = m3u .. "#EXTINF:0,"..title.."\n" + .. proto:lower() .. "://"..ip..":"..port.."\n" + i = i + 1 + end + end + end + file:close() + end + + return m3u +end + +if method == "GET" then + local path = nil + local disposition = nil + local subtype="csv" + + if string.match(query,"select=sample") then + local name = string.match(query,"name=(%w+)") + if name then + path = "/var/mcsetup/"..name..".csv" + disposition = name..".csv" + else + SendError("404","Request Error") + return + end + elseif string.match(query,"select=current") then + path = "/config/mcsetup.csv" + disposition = "mcsetup.csv" + elseif string.match(query,"select=m3u") then + path = "m3u" + disposition = "mclist.m3u" + subtype = "m3u" + elseif string.match(query,"select=copy") then + local name = string.match(query,"name=(%w+)") + if name then + path = "/var/mcsetup/"..name..".csv" + disposition = "copy" + else + SendError("404","Request Error") + return + end + elseif string.match(query,"select=disable") then + disposition = "disable" + end + + if disposition == "disable" then + os.remove("/config/mcsetup.csv") + os.execute('echo "1" >/tmp/mc.tmp;mv -f /tmp/mc.tmp /tmp/mc.signal'); + http_print(proto.." 303") + http_print("Location: http://"..host.."/multicast.html") + http_print("") + return + end + + if disposition == "copy" then + os.execute("cp "..path.." /config/mcsetup.csv") + os.execute('echo "1" >/tmp/mc.tmp;mv -f /tmp/mc.tmp /tmp/mc.signal'); + http_print(proto.." 303") + http_print("Location: http://"..host.."/multicast.html") + http_print() + return + end + + local data = nil + if path == "m3u" then + data = CreateM3U() + else + local tmp = io.open(path,"r") + if tmp then + data = tmp:read("*a") + tmp:close() + end + + end + + if data then + http_print(proto.." 200" ) + http_print("Pragma: no-cache") + http_print("Content-Type: text/"..subtype) + http_print('Content-Disposition: filename="'..disposition..'"') + http_print(string.format("Content-Length: %d",#data)) + http_print() + http_print(data) + else + SendError("404",disposition.." not found") + end + +elseif method == "POST" and clength and ctype then + + if not string.match(ctype,"multipart/form%-data") then + SendError("404","??") + return + end + + local boundary = string.match(ctype,"boundary=(.*)") + if not boundary then + SendError("404","???") + return + end + + while true do + local line = io.stdin:read() + line = string.gsub(line,"\r","") + if line == "" then break end + end + + data = io.stdin:read(16384) + data = string.sub(data,1,#data - #boundary - 4) + if data:match("^\239\187\191") then data = data:sub(4) end + + data = string.gsub(data,"\r\n","\n") -- Windows -> Unix + data = string.gsub(data,"\r","\n") -- MAC -> Unix + + -- if data:match("^TITLE,REQUEST,PIDS,PROTO,IP,PORT,TTL,LANPORTS") then + if data:match("^TITLE,REQUEST,PIDS,LANPORTS") or data:match("^TITLE,REQUEST,PIDS,PROTO,IP,PORT,TTL,LANPORTS") then + file = io.open("/config/mcsetup.csv","w") + if file then + file:write(data) + file:close() + os.execute('echo "1" >/tmp/mc.tmp;mv -f /tmp/mc.tmp /tmp/mc.signal'); + end + end + + http_print(proto.." 303") + http_print("Location: http://"..host.."/multicast.html") + http_print() + +else + SendError("500","What") +end diff --git a/octoserve/var/www/reboot.html b/octoserve/var/www/reboot.html new file mode 100644 index 0000000..2fc65e0 --- /dev/null +++ b/octoserve/var/www/reboot.html @@ -0,0 +1,129 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + +
    + DD +
     
    +
    + + + + + + + + + + + + + + +
      
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    +
     
    + + + diff --git a/octoserve/var/www/reboot.lua b/octoserve/var/www/reboot.lua new file mode 100644 index 0000000..c885e2a --- /dev/null +++ b/octoserve/var/www/reboot.lua @@ -0,0 +1,34 @@ +#!/usr/bin/lua + + +print("HTTP/1.0 200 ") +print("Pragma: no-cache") +print("Content-Type: application/x-javascript") +print("") + +local query = os.getenv("QUERY_STRING") + +if( query == "sjiwjsiowjs" ) then + print("Rebooting = true") + local uImage = io.open("/boot/uImage") + if( uImage ) then + uImage:close() + else + -- Cleanup server home + os.execute("rm -rf /var/www/*") + os.execute("rm -rf /var/dms/*") + os.execute("rm -rf /var/channels/*") + end + + os.execute("/etc/init.d/S99octo stop") + os.execute("sync") + os.execute("reboot") +elseif( query == "restart_octo" ) then + print("Rebooting = true") + os.execute("/etc/init.d/S99octo restartoctonet") +elseif( query == "restart_dms" ) then + print("Rebooting = true") + os.execute("/etc/init.d/S92dms restart") +else + print("Rebooting = false") +end diff --git a/octoserve/var/www/scif.html b/octoserve/var/www/scif.html new file mode 100644 index 0000000..2ccce54 --- /dev/null +++ b/octoserve/var/www/scif.html @@ -0,0 +1,305 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + DD +
     
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
    + + Enable Unicable (EN 50494) + +
    +
    Manufacturer +
    + +
    +
    Unit +
    + +
    +
    Tuner 1 +
    + +
    +
    Tuner 2 +
    + +
    +
    Tuner 3 +
    + +
    +
    Tuner 4 +
    + +
    +
    Tuner 5 +
    + +
    +
    Tuner 6 +
    + +
    +
    Tuner 7 +
    + +
    +
    Tuner 8 +
    + +
    +
    +
    +
    + + +
    +
    +
    + + +
    +
     
    + + + diff --git a/octoserve/var/www/scifdb.lua b/octoserve/var/www/scifdb.lua new file mode 100644 index 0000000..1bd609c --- /dev/null +++ b/octoserve/var/www/scifdb.lua @@ -0,0 +1,85 @@ +#!/usr/bin/lua + +local SLAXML = require 'slaxdom' +local SCIFDataBase = io.open('SCIFDataBase.xml'):read("*a") +-- SLAXML:parse(SCIFDataBase,{stripWhitespace=true}) +local dom = SLAXML:dom(SCIFDataBase,{ simple=false,stripWhitespace=true }) + +local child +local unit + +local i +local j +local k +local l +local Frequency + +local ManufacturerList = {} +local ManufacturerArray = {} +local ManufacturerCount = 0 + +for i,child in ipairs(dom.kids) do + print (i,child.name) + if child.name == "SCIFDataBase" then + for j,unit in ipairs(child.kids) do + if unit.name == "OutdoorUnit" then + local Name = unit.attr["Name"]; + local Manufacturer = unit.attr["Manufacturer"]; + local Type = unit.attr["Type"]; + local Protocol = unit.attr["Protocol"]; + if not Protocol then Protocol = "" end + if not Manufacturer then Manufacturer = "" end + if not Type then Type = "LNB" end + -- print ( " ",Name,Manufacturer,Type) + local CurManu = ManufacturerList[Manufacturer] + if not CurManu then + CurManu = { UnitList = {}, UnitCount = 0, Name = Manufacturer } + ManufacturerCount = ManufacturerCount + 1 + ManufacturerList[Manufacturer] = CurManu + ManufacturerArray[ManufacturerCount] = CurManu + end + CurManu.UnitCount = CurManu.UnitCount + 1 + local CurUnit = { Name = Name, Type = Type, Frequencies = {} } + CurManu.UnitList[CurManu.UnitCount] = CurUnit + local fcount = 0 + for k,Frequency in ipairs(unit.kids) do + if Frequency.name == "UBSlot" then + fcount = fcount + 1 + CurUnit.Frequencies[fcount] = Frequency.attr["Frequency"] + + -- print(" -------------------------", Frequency.type, Frequency.name, Frequency.attr["Frequency"]) + end + end + end + end + end +end + +-- print(ManufacturerCount) + +print("HTTP/1.1 200 ") +print("Pragma: no-cache") +print("Content-Type: application/x-javascript") +print("") + +print("ManufacturerList = new Array();") + +for i,CurManu in ipairs(ManufacturerArray) do + print("") + print(string.format("ManufacturerList[%d] = new Object();",i-1)) + print(string.format("ManufacturerList[%d].Name = \"%s\";",i-1,CurManu.Name)) + print(string.format("ManufacturerList[%d].UnitList = new Array();",i-1)) + + for j,CurUnit in ipairs(CurManu.UnitList) do + print("") + print(string.format("ManufacturerList[%d].UnitList[%d] = new Object();",i-1,j-1)) + print(string.format("ManufacturerList[%d].UnitList[%d].Name = \"%s\";",i-1,j-1,CurUnit.Name)) + print(string.format("ManufacturerList[%d].UnitList[%d].Frequencies = new Array();",i-1,j-1)) + for k,Frequency in ipairs(CurUnit.Frequencies) do + print(string.format("ManufacturerList[%d].UnitList[%d].Frequencies[%d] = %d;",i-1,j-1,k-1,Frequency)) + end + end + + i = i + 1 +end +print("") \ No newline at end of file diff --git a/octoserve/var/www/scifsettings.lua b/octoserve/var/www/scifsettings.lua new file mode 100644 index 0000000..aa9d05e --- /dev/null +++ b/octoserve/var/www/scifsettings.lua @@ -0,0 +1,137 @@ +#!/usr/bin/lua + +function SaveOctoserveConf(Section,Values) + local ConfStart = "" + local ConfEnd = "" + local f = io.open("/config/octoserve.conf","r") + if f then + while true do + line = f:read() + if not line then break end + if string.match(line,"^%["..Section.."%]") then break end + ConfStart = ConfStart .. line .. "\n" + end + while true do + line = f:read() + if not line then break end + if string.match(line,"^%[%w+%]") then + ConfEnd = ConfEnd .. line .. "\n" + break + end + end + while true do + line = f:read() + if not line then break end + ConfEnd = ConfEnd .. line .. "\n" + end + f:close() + os.remove("/config/octoserve.bak") + os.rename("/config/octoserve.conf","/config/octoserve.bak") + end + + f = io.open("/config/octoserve.conf","w") + if ConfStart then + f:write(ConfStart) + end + f:write("["..Section.."]\n") + f:write(Values) + if ConfEnd then + f:write(ConfEnd) + end + f:close() +end + +function LoadOctoserveConf(Section) + local f = io.open("/config/octoserve.conf","r") + local Values = {} + local line + if f then + while true do + line = f:read() + if not line then break end + if string.match(line,"^%["..Section.."%]") then break end + end + while true do + line = f:read() + if not line then break end + if string.match(line,"^%[%w+%]") then break end + if not string.match(line,"^%#") then + table.insert(Values,line) + end + end + f:close() + end + return(Values) +end + + +local host = os.getenv("HTTP_HOST") +local proto = os.getenv("SERVER_PROTOCOL") +local query = os.getenv("QUERY_STRING") + +if query ~= "" then + + print(proto.." 303") + print("Location: http://"..host.."/wait.html?5") + print("") + + -- print(string.format("Set Unicable %s", query )) + + local Values = "" + + Values = Values.."# SCIF Settings\n" + Values = Values.."# Manufacturer = nn : Index to selected manaufacturer (only used in config webpage)\n" + Values = Values.."# Unit = nn : Index to selected unit (only used in config webpage)\n" + Values = Values.."# Type = nn : Type of unit: 1: EN 50494, 2: TS 50607\n" + Values = Values.."# TunerN = Slot,Frequency[,Pin] Slot = 1..nn, Frequency = 950..2150, Pin = 0-255\n" + Values = Values.."# Slot = 0 (no SCIF)\n" + Values = Values.."# Slot = 1..8 for EN 50494, 1..32 for TS 50607\n" + + if query ~= "reset" then + local params = {} + for w in string.gmatch(query,"(%u%w+%=%d+%,?%d*%,?%d*)") do + table.insert(params,w) + end + + -- TODO: More validation + for _,v in ipairs(params) do + Values = Values..v.."\n" + end + else + Values = Values.."Type=0\n" + Values = Values.."Tuner1=0\n" + Values = Values.."Tuner2=0\n" + Values = Values.."Tuner3=0\n" + Values = Values.."Tuner4=0\n" + Values = Values.."Tuner5=0\n" + Values = Values.."Tuner6=0\n" + Values = Values.."Tuner7=0\n" + Values = Values.."Tuner8=0\n" + end + + SaveOctoserveConf("scif",Values) + os.execute("/etc/init.d/S99octo restartoctoserve&") +else + print(proto.." 200") + print("Pragma: no-cache") + print("Content-Type: application/x-javascript") + print("") + + Values = LoadOctoserveConf("scif") + + print("Tuner = new Array();") + for _,v in pairs(Values) do + name,i,v1,v2,v3 = string.match(v,"(%a+)(%d-)%=(%d+)%,?(%d*)%,?(%d*)") + + if name == "Tuner" then + print(string.format("Tuner[%d] = new Object();",i-1)) + print(string.format("Tuner[%d].Slot = %d;",i-1,v1)) + if v2 == "" then v2 = 0 end + print(string.format("Tuner[%d].Freq = %d;",i-1,v2)) + if v3 == "" then v3 = -1 end + print(string.format("Tuner[%d].Pin = %d;",i-1,v3)) + else + print( name .. " = " .. v1 .. ";" ) + end + end +end diff --git a/octoserve/var/www/slaxdom.lua b/octoserve/var/www/slaxdom.lua new file mode 100644 index 0000000..61dbe0d --- /dev/null +++ b/octoserve/var/www/slaxdom.lua @@ -0,0 +1,49 @@ +-- Optional parser that creates a flat DOM from parsing +local SLAXML = require 'slaxml' +function SLAXML:dom(xml,opts) + if not opts then opts={} end + local rich = not opts.simple + local push, pop = table.insert, table.remove + local stack = {} + local doc = { type="document", name="#doc", kids={} } + local current = doc + local builder = SLAXML:parser{ + startElement = function(name,nsURI) + local el = { type="element", name=name, kids={}, el=rich and {} or nil, attr={}, nsURI=nsURI, parent=rich and current or nil } + if current==doc then + if doc.root then error(("Encountered element '%s' when the document already has a root '%s' element"):format(name,doc.root.name)) end + doc.root = el + end + push(current.kids,el) + if current.el then push(current.el,el) end + current = el + push(stack,el) + end, + attribute = function(name,value,nsURI) + if not current or current.type~="element" then error(("Encountered an attribute %s=%s but I wasn't inside an element"):format(name,value)) end + local attr = {type='attribute',name=name,nsURI=nsURI,value=value,parent=rich and current or nil} + if rich then current.attr[name] = value end + push(current.attr,attr) + end, + closeElement = function(name) + if current.name~=name or current.type~="element" then error(("Received a close element notification for '%s' but was inside a '%s' %s"):format(name,current.name,current.type)) end + pop(stack) + current = stack[#stack] + end, + text = function(value) + if current.type~='document' then + if current.type~="element" then error(("Received a text notification '%s' but was inside a %s"):format(value,current.type)) end + push(current.kids,{type='text',name='#text',value=value,parent=rich and current or nil}) + end + end, + comment = function(value) + push(current.kids,{type='comment',name='#comment',value=value,parent=rich and current or nil}) + end, + pi = function(name,value) + push(current.kids,{type='pi',name=name,value=value,parent=rich and current or nil}) + end + } + builder:parse(xml,opts) + return doc +end +return SLAXML \ No newline at end of file diff --git a/octoserve/var/www/slaxml.lua b/octoserve/var/www/slaxml.lua new file mode 100644 index 0000000..e7bedfa --- /dev/null +++ b/octoserve/var/www/slaxml.lua @@ -0,0 +1,219 @@ +--[=====================================================================[ +v0.5.1 Copyright © 2013 Gavin Kistner ; MIT Licensed +See http://github.com/Phrogz/SLAXML for details. +--]=====================================================================] +local SLAXML = { + VERSION = "0.5.1", + _call = { + pi = function(target,content) + print(string.format("",target,content)) + end, + comment = function(content) + print(string.format("",content)) + end, + startElement = function(name,nsURI) + print(string.format("<%s%s>",name,nsURI and (" ("..nsURI..")") or "")) + end, + attribute = function(name,value,nsURI) + print(string.format(" %s=%q%s",name,value,nsURI and (" ("..nsURI..")") or "")) + end, + text = function(text) + print(string.format(" text: %q",text)) + end, + closeElement = function(name,nsURI) + print(string.format("",name)) + end, + } +} + +function SLAXML:parser(callbacks) + return { _call=callbacks or self._call, parse=SLAXML.parse } +end + +function SLAXML:parse(xml,options) + if not options then options = { stripWhitespace=false } end + + -- Cache references for maximum speed + local find, sub, gsub, char, push, pop = string.find, string.sub, string.gsub, string.char, table.insert, table.remove + local first, last, match1, match2, match3, pos2, nsURI + local pos = 1 + local state = "text" + local textStart = 1 + local currentElement={} + local currentAttributes={} + local currentAttributeCt + local nsStack = {} + + local entityMap = { ["lt"]="<", ["gt"]=">", ["amp"]="&", ["quot"]='"', ["apos"]="'" } + local entitySwap = function(orig,n,s) return entityMap[s] or n=="#" and char(s) or orig end + local function unescape(str) return gsub( str, '(&(#?)([%d%a]+);)', entitySwap ) end + + local function finishText() + if first>textStart and self._call.text then + local text = sub(xml,textStart,first-1) + if options.stripWhitespace then + text = gsub(text,'^%s+','') + text = gsub(text,'%s+$','') + if #text==0 then text=nil end + end + if text then self._call.text(unescape(text)) end + end + end + + local function findPI() + first, last, match1, match2 = find( xml, '^<%?([:%a_][:%w_.-]*) ?(.-)%?>', pos ) + if first then + finishText() + if self._call.pi then self._call.pi(match1,match2) end + pos = last+1 + textStart = pos + return true + end + end + + local function findComment() + first, last, match1 = find( xml, '^', pos ) + if first then + finishText() + if self._call.comment then self._call.comment(match1) end + pos = last+1 + textStart = pos + return true + end + end + + local function nsForPrefix(prefix) + for i=#nsStack,1,-1 do if nsStack[i][prefix] then return nsStack[i][prefix] end end + error(("Cannot find namespace for prefix %s"):format(prefix)) + end + + local function startElement() + first, last, match1 = find( xml, '^<([%a_][%w_.-]*)', pos ) + if first then + currentElement[2] = nil + finishText() + pos = last+1 + first,last,match2 = find(xml, '^:([%a_][%w_.-]*)', pos ) + if first then + currentElement[1] = match2 + currentElement[2] = nsForPrefix(match1) + match1 = match2 + pos = last+1 + else + currentElement[1] = match1 + for i=#nsStack,1,-1 do if nsStack[i]['!'] then currentElement[2] = nsStack[i]['!']; break end end + end + currentAttributeCt = 0 + push(nsStack,{}) + return true + end + end + + local function findAttribute() + first, last, match1 = find( xml, '^%s+([:%a_][:%w_.-]*)%s*=%s*', pos ) + if first then + pos2 = last+1 + first, last, match2 = find( xml, '^"([^<"]*)"', pos2 ) -- FIXME: disallow non-entity ampersands + if first then + pos = last+1 + match2 = unescape(match2) + else + first, last, match2 = find( xml, "^'([^<']*)'", pos2 ) -- FIXME: disallow non-entity ampersands + if first then + pos = last+1 + match2 = unescape(match2) + end + end + end + if match1 and match2 then + local currentAttribute = {match1,match2} + local prefix,name = string.match(match1,'^([^:]+):([^:]+)$') + if prefix then + if prefix=='xmlns' then + nsStack[#nsStack][name] = match2 + else + currentAttribute[1] = name + currentAttribute[3] = nsForPrefix(prefix) + end + else + if match1=='xmlns' then + nsStack[#nsStack]['!'] = match2 + currentElement[2] = match2 + end + end + currentAttributeCt = currentAttributeCt + 1 + currentAttributes[currentAttributeCt] = currentAttribute + return true + end + end + + local function findCDATA() + first, last, match1 = find( xml, '^', pos ) + if first then + finishText() + if self._call.text then self._call.text(match1) end + pos = last+1 + textStart = pos + return true + end + end + + local function closeElement() + first, last, match1 = find( xml, '^%s*(/?)>', pos ) + if first then + state = "text" + pos = last+1 + textStart = pos + + if self._call.startElement then self._call.startElement(unpack(currentElement)) end + if self._call.attribute then + for i=1,currentAttributeCt do self._call.attribute(unpack(currentAttributes[i])) end end + + if match1=="/" then + pop(nsStack) + if self._call.closeElement then self._call.closeElement(unpack(currentElement)) end + end + return true + end + end + + local function findElementClose() + first, last, match1, match2 = find( xml, '^', pos ) + if first then + nsURI = nil + for i=#nsStack,1,-1 do if nsStack[i]['!'] then nsURI = nsStack[i]['!']; break end end + else + first, last, match2, match1 = find( xml, '^', pos ) + if first then nsURI = nsForPrefix(match2) end + end + if first then + finishText() + if self._call.closeElement then self._call.closeElement(match1,nsURI) end + pos = last+1 + textStart = pos + pop(nsStack) + return true + end + end + + while pos<#xml do + if state=="text" then + if not (findPI() or findComment() or findCDATA() or findElementClose()) then + if startElement() then + state = "attributes" + else + first, last = find( xml, '^[^<]+', pos ) + pos = (first and last or pos) + 1 + end + end + elseif state=="attributes" then + if not findAttribute() then + if not closeElement() then + error("Was in an element and couldn't find attributes or the close.") + end + end + end + end +end + +return SLAXML \ No newline at end of file diff --git a/octoserve/var/www/stream.lua b/octoserve/var/www/stream.lua new file mode 100644 index 0000000..197d42f --- /dev/null +++ b/octoserve/var/www/stream.lua @@ -0,0 +1,16 @@ +#!/usr/bin/lua + + +print("HTTP/1.0 200\r") +print("Content-type: application/sdp\r") +print("\r") + +local query = os.getenv("QUERY_STRING") + +print("v=0\r") +print("o=- 2890844526 2890842807 IN IP4 10.0.4.31\r") +print("s=RTSP Session\r") +print("t=0 0\r") +print("m=video 0 RTP/AVP 33\r") +print("a=control:stream=1\r") +print("a=fmtp:33\r") diff --git a/octoserve/var/www/streamstatus.html b/octoserve/var/www/streamstatus.html new file mode 100644 index 0000000..358e0e3 --- /dev/null +++ b/octoserve/var/www/streamstatus.html @@ -0,0 +1,158 @@ + + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + + +
    + DD +
     
    +
    + + + + + + + + + + + + + + + + + + + + + +
    StreamStatusInputClientRTP PacketsSpeed
    + + + +
    +
     
    + + + diff --git a/octoserve/var/www/style.css b/octoserve/var/www/style.css new file mode 100644 index 0000000..bf771ec --- /dev/null +++ b/octoserve/var/www/style.css @@ -0,0 +1,78 @@ +body { + color:#000000; + background-color:#000000; + margin:0; + font-family:Arial,sans-serif; +} + +.maintable { + color:#000000; + background-color:#FFFFFF; + text-align:center; + border:0; +} + +.maintd { + vertical-align:top; +} + +.menutable { + color:#000000; + background-color:#e0e0e0; + text-align:center; + border:5px; + width:95%; + font-size:120%; +} + +.menucur { + color:#e0e0e0; + background-color:#000000; +} + +.menutable a:link { text-decoration:none; color:#000000; } +.menutable a:visited { text-decoration:none; color:#000000; } + +.content { + color:#000000; + background-color:#FFFFF0; + text-align:left; + vertical-align:top; + border:5px; + font-size:100%; +} + +.table { + color:#000000; + text-align:center; + border:1px; +} + +.tableleft { + color:#000000; + float:center; + text-align:left; + border:1px; +} + +#streamstatus { + color:#000000; + text-align:center; + border:1px; + width:90%; +} + +td#streamstatus { + color:#000080; +} + +#tunerstatus { + color:#000000; + text-align:center; + border:1px; + width:60%; +} + +a img { + border:none; +} diff --git a/octoserve/var/www/system.html b/octoserve/var/www/system.html new file mode 100644 index 0000000..53a1949 --- /dev/null +++ b/octoserve/var/www/system.html @@ -0,0 +1,168 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + +
    + DD +
     
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Layer 2 Quality of Service +
    + +
    +
    See note below
    Telnet +
    + +
    +
    Enable it at your own risk
    NODMS +
    + +
    +
    Disable DMS announcement.
    NODVBT +
    + +
    +
    Disable DVBT announcement.
    No DVB switch +
    + +
    +
    Disable DVB switch emulation on S8.
    +
    +
    + + + +
    +
    +
    +
    +

    Layer 2 Quality of Service

    + This is defined in the IEEE 802.1Q VLAN standard, and provides QoS in a local network.
    + For it to work all components in the LAN must either be transparent to it or need to support it. +
  • hubs: always transparent.
  • +
  • dumb switches: usually transparent, better ones use it to prioritise the traffic.
  • +
  • smart switches: depends on setting.
  • +
  • PCs and the like: newer systems support it by default, for older systems check the LAN adapter settings.
  • +
  • WLAN access points: depends on firmware and model. OpenWRT based devices usually work.
  • +
    + Dies ist im IEEE 802.1Q VLAN Standard definiert und erlaubt QoS im lokalem Netz.
    + Damit es funktioniert müssen alle Netzwerkkompenenten im LAN entweder transparent sein oder es unterstützen. +
  • Hubs: sind immer transparent
  • +
  • Dumb Switches: normalerweise transparent, bessere prioritisieren damit den Datenverkehr
  • +
  • Smart Switches: hängt von den Einstellungen ab
  • +
  • PCs und dergleichen: neue Systeme unterstützten es defaultmässig, für ältere in den Einstellungen der Netzwerkarte nachschauen
  • +
  • WLAN Accesspoints: hängt von Modell und deren Firmware ab. OpenWRT basierte Geräte unterstützen es normalerweise
  • +
    + +
    +
     
    + + + + + diff --git a/octoserve/var/www/systeminfo.lua b/octoserve/var/www/systeminfo.lua new file mode 100644 index 0000000..82b8c0a --- /dev/null +++ b/octoserve/var/www/systeminfo.lua @@ -0,0 +1,60 @@ +#!/usr/bin/lua + +local host = os.getenv("HTTP_HOST") +local proto = os.getenv("SERVER_PROTOCOL") +local query = os.getenv("QUERY_STRING") + +function http_print(s) + io.stdout:write(s.."\r\n") +end + +http_print("HTTP/1.1 200") +http_print("Pragma: no-cache") +http_print("Content-Type: application/x-javascript") +--http_print("Content-Type: text/plain") +http_print("") + +local ddtest = io.popen("ddtest reg 0+4","r") +local ddo = ddtest:read("*a") +ddtest:close() + +local registers = {} +for v in string.gmatch(ddo,"%((%-?%d+)%)") do + table.insert(registers,v) +end + +local tmp = io.popen("uname -r -m","r") +local tmp1 = tmp:read() +tmp:close() + +-- local uname = string.match(tmp1,"Linux (%.+)") +-- http_print(tmp1) +-- http_print(uname) +local uname = tmp1 + +tmp = io.popen("ls /config/*.img","r") +local fwimg = tmp:read("*a") +tmp:close() + +local images = {} +for v in string.gmatch(fwimg,"%.(%d+)%.") do + table.insert(images,v) +end +local fwdate = ""; +if images[1] then fwdate = images[1] end + +beta = "false" +tmp = io.open("/config/updateserver") +if tmp then + beta = "true" + tmp:close() +end + +http_print(string.format("var linuxver = \"%s\";",uname)) +http_print(string.format("var fpgaver = \"%d.%d\";",(registers[1] / 65536) % 65536,registers[1] % 65536)) +http_print(string.format("var fpgatype = \"%0X\";",registers[3] / 65536)) +-- http_print(string.format("var fpgaver = \"%d.%d\";",registers[1] >> 16,registers[1] & 0xffff)) +-- http_print(string.format("var fpgatype = \"%0X\";",registers[3] >> 16)) +http_print(string.format("var fwdate = \"%s\";",fwdate)) +http_print(string.format("var host = \"%s\";",host)) +http_print(string.format("var beta = %s;",beta)) diff --git a/octoserve/var/www/systemsettings.lua b/octoserve/var/www/systemsettings.lua new file mode 100644 index 0000000..96b65f3 --- /dev/null +++ b/octoserve/var/www/systemsettings.lua @@ -0,0 +1,130 @@ +#!/usr/bin/lua + +function SaveOctoserveConf(Section,Values) + local ConfStart + local ConfEnd + local f = io.open("/config/octoserve.conf","r") + if f then + local CurConf = f:read("*a") + f:close() + ConfStart,ConfEnd = string.match(CurConf,"(.-)%["..Section.."%].+\n(%[.+)") + os.remove("/config/octoserve.bak") + os.rename("/config/octoserve.conf","/config/octoserve.bak") + end + + f = io.open("/config/octoserve.conf","w") + if ConfStart then + f:write(ConfStart) + end + f:write("["..Section.."]\n") + f:write(Values) + if ConfEnd then + f:write(ConfEnd) + end + f:close() +end + +function ReadSetting(name) + local enabled = false + local tmp = io.open("/config/"..name..".enabled","r") + if tmp then + enabled = true + end + return(enabled) +end + +function WriteSetting(name,enabled) + local wasenabled = false + if os.remove("/config/"..name..".enabled") then wasenabled = true end + if( enabled ) then + local f = io.open("/config/"..name..".enabled","w") + if f then + f:write("1") + f:close() + end + end + return enabled ~= wasenabled +end + + +local host = os.getenv("HTTP_HOST") +local proto = os.getenv("SERVER_PROTOCOL") +local query = os.getenv("QUERY_STRING") + +if arg[1] then + query = arg[1] + proto = "HTTP/1.0" + host = "local" +end + +if query ~= "" then + os.execute("echo \""..query.."\" >/tmp/query") + local params = {} + for w in string.gmatch(query,"(%a%w+%=%d+%,?%d*%,?%d*)") do + table.insert(params,w) + end + + -- TODO: More validation + local nextloc = "index.html" + local restart = 0; + for _,v in ipairs(params) do + name,value = string.match(v,"(%w+)%=(%d+)") + if( WriteSetting(name,value == "1") ) then + if name == "telnet" then + os.rename("/etc/securetty","/etc/securetty.bak"); -- temp fix to allow root login on telnet + os.execute("/etc/init.d/S91telnet restart") + end +-- if name == "vlan" then os.execute("/etc/init.d/S99octo restartoctonet&") end +-- if name == "nodms" then os.execute("/etc/init.d/S99octo restartoctonet&") end +-- if name == "nodvbt" then os.execute("/etc/init.d/S99octo restartoctonet&") end + if name == "vlan" then restart = 1 end + if name == "nodms" then restart = 1 end + if name == "nodvbt" then restart = 1 end + if name == "noswitch" then restart = 1 end + nextloc = "wait.html?5" + end + end + if restart == 1 then os.execute("/etc/init.d/S99octo restartoctonet&") end + print(proto.." 303") + print("Location: http://"..host.."/"..nextloc) + print("") +else + + print(proto.." 200") + print("Pragma: no-cache") + print("Content-Type: application/x-javascript") + print("") + + if ReadSetting("telnet") then + print("telnetEnabled = true;") + else + print("telnetEnabled = false;") + end + + if ReadSetting("vlan") then + print("vlanEnabled = true;") + else + print("vlanEnabled = false;") + end + + if ReadSetting("nodms") then + print("nodmsEnabled = true;") + else + print("nodmsEnabled = false;") + end + + if ReadSetting("nodvbt") then + print("nodvbtEnabled = true;") + else + print("nodvbtEnabled = false;") + end + + if ReadSetting("noswitch") then + print("noswitchEnabled = true;") + else + print("noswitchEnabled = false;") + end + +end + + diff --git a/octoserve/var/www/template.html b/octoserve/var/www/template.html new file mode 100644 index 0000000..5f4ffc1 --- /dev/null +++ b/octoserve/var/www/template.html @@ -0,0 +1,63 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + +
    + DD +
     
    +
    + + + bla bla +

    + bla bla +

    + bla bla +

    + bla bla +

    + bla bla +

    + bla bla +

    + bla bla +

    + bla bla +

    + bla bla +

    + bla bla +

    + bla bla + + + +

    +
     
    + + + diff --git a/octoserve/var/www/tunerstatus.html b/octoserve/var/www/tunerstatus.html new file mode 100644 index 0000000..ff86576 --- /dev/null +++ b/octoserve/var/www/tunerstatus.html @@ -0,0 +1,118 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + + +
    + DD +
     
    +
    + + + + + + + + + + + +
    + Tuner + + Lock + + Strength + + Quality +
    + + + +
    +
     
    + + + diff --git a/octoserve/var/www/update.html b/octoserve/var/www/update.html new file mode 100644 index 0000000..99369ce --- /dev/null +++ b/octoserve/var/www/update.html @@ -0,0 +1,136 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + + + + +
    + DD +
     
    +
    + + + + + + + + + + + +
    Check for firmware/system update: +
    + +
    +
      
    + + + +
    +
     
    + + + diff --git a/octoserve/var/www/update.lua b/octoserve/var/www/update.lua new file mode 100644 index 0000000..bd410e1 --- /dev/null +++ b/octoserve/var/www/update.lua @@ -0,0 +1,143 @@ +#!/usr/bin/lua + +local query = "" +local DoUpdate = false +local DoCheck = false + +if arg[1] then + if arg[1] == "doupdate" then + DoUpdate = true + DoCheck = true + else + query = arg[1] + end +else + query = os.getenv("QUERY_STRING") +end + +if query == "check" then + DoCheck = true +end + +local userver = "download.digital-devices.de/download/linux" +local NewImage = "octonet.0000000000.img" +local CurImage = "octonet.0000000000.img" + +if DoCheck then + + local tmp = io.open("/config/updateserver") + if tmp then + userver = tmp:read() + tmp:close() + end + + local tmp = io.popen(string.format("wget http://%s/octonet/ -q -O -",userver),"r") + local serverdir = tmp:read("*a") + tmp:close() + + local tmp = io.popen("ls /config/octonet.*.img","r") + local configdir = tmp:read("*a") + tmp:close() + + for v in string.gmatch(serverdir,"\"(octonet%.%d+%.img)\"") do + if v > NewImage then + NewImage = v + end + end + + for v in string.gmatch(configdir,"(octonet%.%d+%.img)") do + if v > CurImage then + CurImage = v + end + end +end + +if DoUpdate then + if NewImage > CurImage then + os.execute("echo CheckDone >/tmp/updatestatus") + os.remove("/config/tmpimage") + local wgetstatus = os.execute(string.format("wget -q -P /config http://%s/octonet/%s -O /config/tmpimage >/dev/null 2>/dev/null",userver,NewImage)) + if wgetstatus == 0 then + local ShaFile = string.gsub(NewImage,".img",".sha") + wgetstatus = os.execute(string.format("wget -q -P /config http://%s/octonet/%s -O /config/%s >/dev/null 2>/dev/null",userver,ShaFile,ShaFile)) + os.execute("echo DownloadDone >/tmp/updatestatus") + if wgetstatus == 0 then + local tmp = io.popen(string.format("sha256sum /config/tmpimage","r")) + local csum1 = tmp:read() + tmp:close() + local csum2 = io.open(string.format("/config/%s",ShaFile)):read() + csum1 = string.match(csum1,"(%x+)") + csum2 = string.match(csum2,"(%x+)") + if csum1 == csum2 then + os.execute("lua /etc/switch/swsetup.lua gb yb"); + os.rename("/config/tmpimage",string.format("/config/%s",NewImage)) + os.remove(string.format("/config/%s",CurImage)) + os.remove(string.format("/config/%s",string.gsub(CurImage,".img",".sha"))) + os.remove("/boot/uImage") + os.execute("echo VerifyDone >/tmp/updatestatus") + else + print("Error") + os.remove("/config/tmpimage") + os.remove(string.format("/config/%s",ShaFile)) + os.execute("echo VerifyError >/tmp/updatestatus") + return + end + else + os.remove("/config/tmpimage") + os.remove(string.format("/config/%s",ShaFile)) + os.execute("echo DownloadError >/tmp/updatestatus") + end + else + os.remove("/config/tmpimage") + os.execute("echo DownloadError >/tmp/updatestatus") + end + else + os.execute("echo CheckError >/tmp/updatestatus") + end + return +end + +print("HTTP/1.0 200 ") +print("Pragma: no-cache") +print("Content-Type: application/x-javascript") +print("") + +if query == "check" then + + if NewImage > CurImage then + print(string.format("UpdateInfo = \"%s\";",string.match(NewImage,"octonet%.(%d+)"))) + else + print("UpdateInfo = \"\";") + end + print("CheckDone = true;") +elseif query == "update" then + os.remove("/tmp/updatestatus") + print("UpdateStarted = true;") + os.execute("lua update.lua doupdate >/dev/null 2>/dev/null &") +elseif query == "updatestatus" then + local tmp = io.open("/tmp/updatestatus") + local updatestatus = "" + if tmp then + updatestatus = tmp:read() + tmp:close() + end + if updatestatus == "CheckDone" then + print("CheckDone = true;") + elseif updatestatus == "DownloadDone" then + print("DownloadDone = true;") + elseif updatestatus == "VerifyDone" then + print("VerifyDone = true;") + elseif string.match(updatestatus,"(Error)") then + print(string.format("UpdateInfo = \'%s\';",updatestatus)) + print("UpdateError = true;") + end +else + print(string.format("UpdateInfo = \'%s\';",query)) + print("UpdateError = true;") +end + + + + + + diff --git a/octoserve/var/www/uplchannels.lua b/octoserve/var/www/uplchannels.lua new file mode 100644 index 0000000..ea40a29 --- /dev/null +++ b/octoserve/var/www/uplchannels.lua @@ -0,0 +1,82 @@ +#!/usr/bin/lua + +local host = os.getenv("HTTP_HOST") +local proto = os.getenv("SERVER_PROTOCOL") +local query = os.getenv("QUERY_STRING") +local method = os.getenv("REQUEST_METHOD") +local clength = os.getenv("CONTENT_LENGTH") +local ctype = os.getenv("CONTENT_TYPE") + +if arg[1] then + query = arg[1] + if query == "get" then query = "" end + proto = "HTTP/1.0" + host = "local" +end + +function SendError(err,desc) + io.stdout:write(proto.." "..err.."\r\n") + io.stdout:write("Content-Type: text/html".."\r\n") + io.stdout:write("\r\n") + local file = io.open("e404.html") + if file then + local tmp = file:read("*a") + tmp = string.gsub(tmp,"404 Not Found",err .. " " .. desc) + io.stdout:write(tmp) + file:close() + end +end + +local path = nil +local tmp = "/var/tmp/xxxx" + +if method ~= "POST" or not clength or not ctype then + SendError("404","?") + return +end + +if not string.match(ctype,"multipart/form%-data") then + SendError("404","??") + return +end + +local boundary = string.match(ctype,"boundary=(.*)") +if not boundary then + SendError("404","???") + return +end + +local filename = nil + +while true do + local line = io.stdin:read() + line = string.gsub(line,"\r","") + if line == "" then break end + if not filename then + filename = string.match(line,'filename=%"(.*)%"') + end +end + +data = io.stdin:read("*a") +data = string.sub(data,1,#data - #boundary - 4) + +local file = io.open("/tmp/"..filename,"w") +if file then + file:write(data) + file:close() +end + +if string.match(filename,"%.tar%.gz$") then + os.execute("rm -rf /config/channels;mkdir /config/channels;cd /config/channels;gunzip -c /tmp/"..filename.."|tar -xf -"); +elseif string.match(filename,"%.zip$") then + os.execute("rm -rf /config/channels;mkdir /config/channels;cd /config/channels;unzip -q /tmp/"..filename); +end + +os.remove("/tmp/"..filename) + +-- TODO validate + +io.stdout:write(proto.." 303".."\r\n") +io.stdout:write("Location: http://"..host.."/reboot.html") +io.stdout:write("\r\n") + diff --git a/octoserve/var/www/wait.html b/octoserve/var/www/wait.html new file mode 100644 index 0000000..a48ac31 --- /dev/null +++ b/octoserve/var/www/wait.html @@ -0,0 +1,61 @@ + + + + +OctopusNet + + + + + + + + + + + + + + + + + + + + + +
    + DD +
     
    +
    + +

     

    + +
    +
     
    + + + diff --git a/octoserve/version.h b/octoserve/version.h new file mode 100644 index 0000000..7c351f0 --- /dev/null +++ b/octoserve/version.h @@ -0,0 +1,23 @@ +/* + (C) 2012-13 Digital Devices GmbH. + + This file is part of the octoserve SAT>IP server. + + Octoserve 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 3 of the License, or + (at your option) any later version. + + Octoserve is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with octoserve. If not, see . +*/ + +#ifndef _OCTOSERVE_VERSION_ +#define _OCTOSERVE_VERSION_ +#define OCTOSERVE_VERSION "1.0.46" +#endif diff --git a/u-boot.patch b/u-boot.patch new file mode 100644 index 0000000..96e07a9 --- /dev/null +++ b/u-boot.patch @@ -0,0 +1,1073 @@ +diff --git a/board/DigitalDevices/naxy400/Makefile b/board/DigitalDevices/naxy400/Makefile +new file mode 100644 +index 0000000..d4ba028 +--- /dev/null ++++ b/board/DigitalDevices/naxy400/Makefile +@@ -0,0 +1,2 @@ ++obj-y += naxy400.o ++ +diff --git a/board/DigitalDevices/naxy400/naxy400.c b/board/DigitalDevices/naxy400/naxy400.c +new file mode 100644 +index 0000000..73d1b20 +--- /dev/null ++++ b/board/DigitalDevices/naxy400/naxy400.c +@@ -0,0 +1,269 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_MACB) ++#include ++#endif ++#include ++#include ++ ++DECLARE_GLOBAL_DATA_PTR; ++ ++void octonet_fpga_init(void) ++{ ++ struct at91_smc *smc = (struct at91_smc *) ATMEL_BASE_SMC; ++ struct at91_pmc *pmc = (struct at91_smc *) ATMEL_BASE_PMC; ++ struct at91_port *pioc = (struct at91_port *) ATMEL_BASE_PIOC; ++ u32 hw, reg; ++ ++ writel(0x00000000, &smc->cs[0].setup); ++ writel(0x09090909, &smc->cs[0].pulse); ++ writel(0x000b000b, &smc->cs[0].cycle); ++ writel(0x10001000, &smc->cs[0].mode); ++ ++ writel(0x00000000, &smc->cs[2].setup); ++ writel(0x09090909, &smc->cs[2].pulse); ++ writel(0x000b000b, &smc->cs[2].cycle); ++ writel(0x10001000, &smc->cs[2].mode); ++ ++ //writel(0x00002000, &pioc->pdr); ++ writel(0x00002000, 0xfffff604); ++ ++ hw = readl(ATMEL_BASE_CS2); ++ reg = readl(ATMEL_BASE_CS2 + 4); ++ printf("FPGA: HW=%08x, REG=%08x\n", hw, reg); ++ ++ /* Disable MDIO, IRQ, ether output */ ++ writel(0, ATMEL_BASE_CS2 + 0x20); ++ writel(0, ATMEL_BASE_CS2 + 0x20); ++ writel(0, ATMEL_BASE_CS2 + 0x100); ++ ++ at91_set_a_periph(AT91_PIO_PORTD, 26, 0); ++ writel(0x00000100, &pmc->pck[0]); ++ writel(AT91_PMC_PCK0, &pmc->scer); ++ ++ at91_set_gpio_output(AT91_PIN_PD11, 1); ++ at91_set_gpio_output(AT91_PIN_PD10, 1); ++ at91_set_gpio_output(AT91_PIN_PD12, 1); ++} ++ ++#ifdef CONFIG_CMD_NAND ++void at91sam9m10g45ek_nand_hw_init(void) ++{ ++ struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC; ++ struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX; ++ struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; ++ unsigned long csa; ++ ++ /* Enable CS3 */ ++ csa = readl(&matrix->ebicsa); ++ csa |= AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA; ++ writel(csa, &matrix->ebicsa); ++ ++ /* Configure SMC CS3 for NAND/SmartMedia */ ++ writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) | ++ AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0), ++ &smc->cs[3].setup); ++ writel(AT91_SMC_PULSE_NWE(4) | AT91_SMC_PULSE_NCS_WR(3) | ++ AT91_SMC_PULSE_NRD(3) | AT91_SMC_PULSE_NCS_RD(2), ++ &smc->cs[3].pulse); ++ writel(AT91_SMC_CYCLE_NWE(7) | AT91_SMC_CYCLE_NRD(4), ++ &smc->cs[3].cycle); ++ writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE | ++ AT91_SMC_MODE_EXNW_DISABLE | ++#ifdef CONFIG_SYS_NAND_DBW_16 ++ AT91_SMC_MODE_DBW_16 | ++#else /* CONFIG_SYS_NAND_DBW_8 */ ++ AT91_SMC_MODE_DBW_8 | ++#endif ++ AT91_SMC_MODE_TDF_CYCLE(3), ++ &smc->cs[3].mode); ++ ++ writel(1 << ATMEL_ID_PIOC, &pmc->pcer); ++ ++ /* Configure RDY/BSY */ ++ at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1); ++ ++ /* Enable NandFlash */ ++ at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1); ++} ++#endif ++ ++#ifdef CONFIG_CMD_USB ++static void at91sam9m10g45ek_usb_hw_init(void) ++{ ++ struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; ++ ++ writel(1 << ATMEL_ID_PIODE, &pmc->pcer); ++ ++ at91_set_gpio_output(AT91_PIN_PD1, 0); ++ at91_set_gpio_output(AT91_PIN_PD3, 0); ++} ++#endif ++ ++#ifdef CONFIG_MACB ++static void at91sam9m10g45ek_macb_hw_init(void) ++{ ++ struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; ++ struct at91_port *pioa = (struct at91_port *)ATMEL_BASE_PIOA; ++ struct at91_rstc *rstc = (struct at91_rstc *)ATMEL_BASE_RSTC; ++ unsigned long erstl; ++ ++ /* Enable clock */ ++ writel(1 << ATMEL_ID_EMAC, &pmc->pcer); ++ ++ /* ++ * Disable pull-up on: ++ * RXDV (PA15) => PHY normal mode (not Test mode) ++ * ERX0 (PA12) => PHY ADDR0 ++ * ERX1 (PA13) => PHY ADDR1 => PHYADDR = 0x0 ++ * ++ * PHY has internal pull-down ++ */ ++ writel(pin_to_mask(AT91_PIN_PA15) | ++ pin_to_mask(AT91_PIN_PA12) | ++ pin_to_mask(AT91_PIN_PA13), ++ &pioa->pudr); ++ ++#if 0 ++ erstl = readl(&rstc->mr) & AT91_RSTC_MR_ERSTL_MASK; ++ ++ /* Need to reset PHY -> 500ms reset */ ++ writel(AT91_RSTC_KEY | AT91_RSTC_MR_ERSTL(13) | ++ AT91_RSTC_MR_URSTEN, &rstc->mr); ++ ++ writel(AT91_RSTC_KEY | AT91_RSTC_CR_EXTRST, &rstc->cr); ++ ++ /* Wait for end hardware reset */ ++ while (!(readl(&rstc->sr) & AT91_RSTC_SR_NRSTL)) ++ ; ++ ++ /* Restore NRST value */ ++ writel(AT91_RSTC_KEY | erstl | AT91_RSTC_MR_URSTEN, ++ &rstc->mr); ++#endif ++ /* Re-enable pull-up */ ++ writel(pin_to_mask(AT91_PIN_PA15) | ++ pin_to_mask(AT91_PIN_PA12) | ++ pin_to_mask(AT91_PIN_PA13), ++ &pioa->puer); ++ ++ /* And the pins. */ ++ at91_macb_hw_init(); ++} ++#endif ++ ++int board_early_init_f(void) ++{ ++ at91_seriald_hw_init(); ++ return 0; ++} ++ ++void setmac() ++{ ++ unsigned char mac[6]; ++ char buf[12]; ++ u32 macreg = readl(ATMEL_BASE_CS2 + 12); ++ ++ if (eth_getenv_enetaddr("ethaddr", mac)) ++ return; ++ ++ //printf("macreg = %08x\n", macreg); ++ if ((macreg & 0xff) == 1) { ++ mac[0] = 0x54; ++ mac[1] = 0x84; ++ mac[2] = 0x7b; ++ mac[3] = (macreg >> 8) & 0xff; ++ mac[4] = (macreg >> 16) & 0xff; ++ mac[5] = (macreg >> 24) & 0xff; ++ //sprintf(buf, "%02x:%02x:%02x:%02x:%02x:%02x", ++ // mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); ++ //setenv("ethaddr", buf); ++ eth_setenv_enetaddr("ethaddr", mac); ++ //printf("MAC = %s\n", buf); ++ } ++} ++ ++int misc_init_r(void) ++{ ++ setmac(); ++ return 0; ++} ++ ++int board_init(void) ++{ ++ console_init_f(); ++ gd->bd->bi_arch_number = MACH_TYPE_NAXY400; ++ gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; ++ ++#ifdef CONFIG_CMD_NAND ++ at91sam9m10g45ek_nand_hw_init(); ++#endif ++#ifdef CONFIG_CMD_USB ++ at91sam9m10g45ek_usb_hw_init(); ++#endif ++#ifdef CONFIG_MACB ++ at91sam9m10g45ek_macb_hw_init(); ++#endif ++ octonet_fpga_init(); ++ spi_init(); ++ ++ // icache_enable(); ++ // dcache_enable(); ++ return 0; ++} ++ ++int dram_init(void) ++{ ++ gd->ram_size = get_ram_size((void *) CONFIG_SYS_SDRAM_BASE, ++ CONFIG_SYS_SDRAM_SIZE); ++ return 0; ++} ++ ++#ifdef CONFIG_RESET_PHY_R ++void reset_phy(void) ++{ ++} ++#endif ++ ++int board_eth_init(bd_t *bis) ++{ ++ int rc = 0; ++ ++#ifdef CONFIG_MACB ++ rc = macb_eth_initialize(0, (void *)ATMEL_BASE_EMAC, 0x00); ++#endif ++ return rc; ++} ++ +diff --git a/boards.cfg b/boards.cfg +index 1ba2081..e58f542 100644 +--- a/boards.cfg ++++ b/boards.cfg +@@ -141,6 +141,8 @@ Active arm arm926ejs at91 ronetix pm9261 + Active arm arm926ejs at91 ronetix pm9263 pm9263 pm9263:AT91SAM9263 Ilko Iliev + Active arm arm926ejs at91 ronetix pm9g45 pm9g45 pm9g45:AT91SAM9G45 Ilko Iliev + Active arm arm926ejs at91 siemens corvus corvus corvus:AT91SAM9M10G45,SYS_USE_NANDFLASH Heiko Schocher ++Active arm arm926ejs at91 DigitalDevices naxy400 naxy400 naxy400:AT91SAM9M10G45,SYS_USE_NANDFLASH Ralph Metzler ++#naxy400 arm arm926ejs naxy400 DigitalDevices at91 naxy400:AT91SAM9G45,SYS_USE_NANDFLASH + Active arm arm926ejs at91 siemens taurus axm taurus:AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM Heiko Schocher + Active arm arm926ejs at91 siemens taurus taurus taurus:AT91SAM9G20,MACH_TYPE=2067,BOARD_TAURUS Heiko Schocher + Active arm arm926ejs at91 taskit stamp9g20 portuxg20 stamp9g20:AT91SAM9G20,PORTUXG20 Markus Hubig +diff --git a/drivers/gpio/at91_gpio.c b/drivers/gpio/at91_gpio.c +index 6517af1..9ae7855 100644 +--- a/drivers/gpio/at91_gpio.c ++++ b/drivers/gpio/at91_gpio.c +@@ -395,3 +395,9 @@ int gpio_set_value(unsigned gpio, int value) + + return 0; + } ++ ++void gpio_toggle_value(unsigned gpio) ++{ ++ gpio_set_value(gpio, !gpio_get_value(gpio)); ++} ++ +diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c +index e73834d..c24021e 100644 +--- a/drivers/mtd/nand/atmel_nand.c ++++ b/drivers/mtd/nand/atmel_nand.c +@@ -1393,6 +1393,8 @@ int atmel_nand_chip_init(int devnum, ulong base_addr) + + #ifdef CONFIG_NAND_ECC_BCH + nand->ecc.mode = NAND_ECC_SOFT_BCH; ++ nand->ecc.size = 512; ++ nand->ecc.bytes = 13; + #else + nand->ecc.mode = NAND_ECC_SOFT; + #endif +diff --git a/drivers/net/macb.c b/drivers/net/macb.c +index 01a94a4..cafbbd2 100644 +--- a/drivers/net/macb.c ++++ b/drivers/net/macb.c +@@ -132,6 +132,33 @@ static void macb_mdio_write(struct macb_device *macb, u8 reg, u16 value) + macb_writel(macb, NCR, netctl); + } + ++static void macb_mdio_swrite(struct macb_device *macb, u8 adr, u8 reg, u16 value) ++{ ++ unsigned long netctl; ++ unsigned long netstat; ++ unsigned long frame; ++ ++ netctl = macb_readl(macb, NCR); ++ netctl |= MACB_BIT(MPE); ++ macb_writel(macb, NCR, netctl); ++ ++ frame = (MACB_BF(SOF, 1) ++ | MACB_BF(RW, 1) ++ | MACB_BF(PHYA, adr) ++ | MACB_BF(REGA, reg) ++ | MACB_BF(CODE, 2) ++ | MACB_BF(DATA, value)); ++ macb_writel(macb, MAN, frame); ++ ++ do { ++ netstat = macb_readl(macb, NSR); ++ } while (!(netstat & MACB_BIT(IDLE))); ++ ++ netctl = macb_readl(macb, NCR); ++ netctl &= ~MACB_BIT(MPE); ++ macb_writel(macb, NCR, netctl); ++} ++ + static u16 macb_mdio_read(struct macb_device *macb, u8 reg) + { + unsigned long netctl; +@@ -169,16 +196,51 @@ void __weak arch_get_mdio_control(const char *name) + + #if defined(CONFIG_CMD_MII) || defined(CONFIG_PHYLIB) + ++static u16 macb_mdio_sread(struct macb_device *macb, u8 adr, u8 reg) ++{ ++ unsigned long netctl; ++ unsigned long netstat; ++ unsigned long frame; ++ ++ netctl = macb_readl(macb, NCR); ++ netctl |= MACB_BIT(MPE); ++ macb_writel(macb, NCR, netctl); ++ ++ frame = (MACB_BF(SOF, 1) ++ | MACB_BF(RW, 2) ++ | MACB_BF(PHYA, adr) ++ | MACB_BF(REGA, reg) ++ | MACB_BF(CODE, 2)); ++ macb_writel(macb, MAN, frame); ++ ++ do { ++ netstat = macb_readl(macb, NSR); ++ } while (!(netstat & MACB_BIT(IDLE))); ++ ++ frame = macb_readl(macb, MAN); ++ ++ netctl = macb_readl(macb, NCR); ++ netctl &= ~MACB_BIT(MPE); ++ macb_writel(macb, NCR, netctl); ++ ++ return MACB_BFEXT(DATA, frame); ++} ++ ++ + int macb_miiphy_read(const char *devname, u8 phy_adr, u8 reg, u16 *value) + { + struct eth_device *dev = eth_get_dev_by_name(devname); + struct macb_device *macb = to_macb(dev); + +- if (macb->phy_addr != phy_adr) +- return -1; ++ //if ( macb->phy_addr != phy_adr ) ++ // return -1; + ++#if 0 + arch_get_mdio_control(devname); + *value = macb_mdio_read(macb, reg); ++#else ++ *value = macb_mdio_sread(macb, phy_adr, reg); ++#endif + + return 0; + } +@@ -188,11 +250,15 @@ int macb_miiphy_write(const char *devname, u8 phy_adr, u8 reg, u16 value) + struct eth_device *dev = eth_get_dev_by_name(devname); + struct macb_device *macb = to_macb(dev); + +- if (macb->phy_addr != phy_adr) +- return -1; ++ //if ( macb->phy_addr != phy_adr ) ++ //return -1; + ++#if 0 + arch_get_mdio_control(devname); + macb_mdio_write(macb, reg, value); ++#else ++ macb_mdio_swrite(macb, phy_adr, reg, value); ++#endif + + return 0; + } +@@ -353,7 +419,6 @@ static int macb_recv(struct eth_device *netdev) + macb->rx_buffer, taillen); + buffer = (void *)NetRxPackets[0]; + } +- + NetReceive(buffer, length); + if (++rx_tail >= MACB_RX_RING_SIZE) + rx_tail = 0; +@@ -534,6 +599,56 @@ static int macb_phy_init(struct macb_device *macb) + return 1; + } + ++static void swrite(struct macb_device *macb, u8 phy, u8 reg, u16 value) ++{ ++ u16 val; ++ ++ while (0x8000 & macb_mdio_sread(macb, 0x1c, 0x18)); ++ macb_mdio_swrite(macb, 0x1c, 0x19, value); ++ macb_mdio_swrite(macb, 0x1c, 0x18, 0x9400|(phy<<5)|reg); ++} ++ ++static int mdio_switch_init(struct macb_device *macb) ++{ ++ int phy; ++ ++ macb_mdio_swrite(macb, 0x16, 0x01, 0xc003); ++ macb_mdio_swrite(macb, 0x16, 0x08, 0x8080); ++ for (phy=0; phy<=4; phy++) { ++ swrite(macb, phy, 0x00, 0x1140); ++ swrite(macb, phy, 0x16, 0x0000); ++ swrite(macb, phy, 0x10, 0x3360); ++ } ++ for (phy=0; phy<=6; phy++) ++ macb_mdio_swrite(macb, 0x10|phy, 0x04, 0x007f); ++} ++ ++static int macb_switch_init(struct macb_device *macb) ++{ ++ struct eth_device *netdev = &macb->netdev; ++ u32 ncfgr; ++ u16 status, adv, lpa; ++ int speed, duplex; ++ ++ speed = 1; ++ duplex = 1; ++ printf("%s: link up, %sMbps %s-duplex\n", ++ netdev->name, ++ speed ? "100" : "10", ++ duplex ? "full" : "half"); ++ ++ ncfgr = macb_readl(macb, NCFGR); ++ ncfgr &= ~(MACB_BIT(SPD) | MACB_BIT(FD)); ++ if (speed) ++ ncfgr |= MACB_BIT(SPD); ++ if (duplex) ++ ncfgr |= MACB_BIT(FD); ++ macb_writel(macb, NCFGR, ncfgr); ++ ++ //mdio_switch_init(macb); ++ return 1; ++} ++ + static int macb_init(struct eth_device *netdev, bd_t *bd) + { + struct macb_device *macb = to_macb(netdev); +@@ -596,9 +711,17 @@ static int macb_init(struct eth_device *netdev, bd_t *bd) + #endif /* CONFIG_RMII */ + } + ++ ++#ifdef CONFIG_OCTONET ++#if 1 ++ macb_writel(macb, USRIO, MACB_BIT(CLKEN)); ++ if (!macb_switch_init(macb)) ++ return -1; ++#endif ++#else + if (!macb_phy_init(macb)) + return -1; +- ++#endif + /* Enable TX and RX */ + macb_writel(macb, NCR, MACB_BIT(TE) | MACB_BIT(RE)); + +@@ -694,6 +817,21 @@ static u32 macb_dbw(struct macb_device *macb) + } + } + ++void octo_mac_read(u8 *mac) ++{ ++ u32 macreg = readl(0x3000000c); ++ ++ //printf("macreg = %08x\n", macreg); ++ if ((macreg & 0xff) == 1) { ++ mac[0] = 0x54; ++ mac[1] = 0x84; ++ mac[2] = 0x7b; ++ mac[3] = (macreg >> 8) & 0xff; ++ mac[4] = (macreg >> 16) & 0xff; ++ mac[5] = (macreg >> 24) & 0xff; ++ } ++} ++ + int macb_eth_initialize(int id, void *regs, unsigned int phy_addr) + { + struct macb_device *macb; +@@ -726,6 +864,9 @@ int macb_eth_initialize(int id, void *regs, unsigned int phy_addr) + else + sprintf(netdev->name, "macb%d", id); + ++#ifdef CONFIG_OCTONET ++ //octo_mac_read(netdev->enetaddr); ++#endif + netdev->init = macb_init; + netdev->halt = macb_halt; + netdev->send = macb_send; +@@ -751,6 +892,7 @@ int macb_eth_initialize(int id, void *regs, unsigned int phy_addr) + miiphy_register(netdev->name, macb_miiphy_read, macb_miiphy_write); + macb->bus = miiphy_get_dev_by_name(netdev->name); + #endif ++ mdio_switch_init(macb); + return 0; + } + +diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile +index f02c35a..4e2531a 100644 +--- a/drivers/spi/Makefile ++++ b/drivers/spi/Makefile +@@ -42,3 +42,4 @@ obj-$(CONFIG_TI_QSPI) += ti_qspi.o + obj-$(CONFIG_XILINX_SPI) += xilinx_spi.o + obj-$(CONFIG_ZYNQ_SPI) += zynq_spi.o + obj-$(CONFIG_FSL_QSPI) += fsl_qspi.o ++obj-$(CONFIG_OCTONET_SPI) += octonet_spi.o +diff --git a/drivers/spi/octonet_spi.c b/drivers/spi/octonet_spi.c +new file mode 100644 +index 0000000..5fca502 +--- /dev/null ++++ b/drivers/spi/octonet_spi.c +@@ -0,0 +1,258 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++struct octonet_spi_slave { ++ struct spi_slave slave; ++ u32 base; ++}; ++#define to_octonet_spi_slave(s) container_of(s, struct octonet_spi_slave, slave) ++ ++void spi_init (void) ++{ ++ //printf("OCTONET spi init\n"); ++} ++ ++struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, ++ unsigned int max_hz, unsigned int mode) ++{ ++ struct octonet_spi_slave *os; ++ ++ if (bus || cs) ++ return NULL; ++ ++ printf("OCTONET spi setup\n"); ++ os = malloc(sizeof(struct octonet_spi_slave)); ++ if (!os) ++ return NULL; ++ ++ os->slave.bus = bus; ++ os->slave.cs = cs; ++ os->base = 0; ++ ++ return &os->slave; ++} ++ ++void spi_free_slave(struct spi_slave *slave) ++{ ++ struct octonet_spi_slave *os = to_octonet_spi_slave(slave); ++ ++ free(os); ++} ++ ++int spi_claim_bus(struct spi_slave *slave) ++{ ++ return 0; ++} ++ ++void spi_release_bus(struct spi_slave *slave) ++{ ++} ++ ++#define SPI_CONTROL 0x30000010 ++#define SPI_DATA 0x30000014 ++ ++int spi_xfer2(struct spi_slave *slave, unsigned int bitlen, ++ const void *out, void *in, unsigned long flags) ++{ ++ u32 data, shift; ++ u32 wlen, rlen; ++ u8 *wbuf = out; ++ u8 *rbuf = in; ++ ++ printf("OCTONET spi xfer %08x %08x %d\n", (u32) wbuf, (u32) rbuf, bitlen); ++ ++ if (bitlen % 8) ++ return -1; ++ rlen = wlen = 0; ++ if (out) ++ wlen = bitlen / 8; ++ if (in) ++ rlen = bitlen / 8; ++ //printf("wlen = %d, rlen = %d, %02x\n", wlen, rlen, flags); ++ ++ if (!wlen && !rlen && (flags & SPI_XFER_END)) { ++ writel(0x0003 | ((1 << (8 + 3)) & 0x1f00), SPI_CONTROL); ++ writel(0xffffffff, SPI_DATA); ++ while (readl(SPI_CONTROL) & 0x0004) ++ ; ++ return 0; ++ } ++ ++ ++ if (wlen==1) ++ printf("%02x\n", wbuf[0]); ++ ++ ++ if (wlen > 4) ++ writel(1, SPI_CONTROL); ++ while (wlen > 4) { ++ data = (wbuf[0]<<24) | (wbuf[1]<<16) | (wbuf[2]<<8) | wbuf[3]; ++ wbuf += 4; ++ wlen -= 4; ++ writel(data, SPI_DATA); ++ while (readl(SPI_CONTROL) & 0x0004) ++ ; ++ } ++ ++ if (wlen) { ++ if (rlen || !(flags & SPI_XFER_END)) ++ writel(0x0001 | ((wlen << (8 + 3)) & 0x1f00), SPI_CONTROL); ++ else ++ writel(0x0003 | ((wlen << (8 + 3)) & 0x1f00), SPI_CONTROL); ++ ++ data = 0; ++ shift = ((4 - wlen) * 8); ++ while (wlen) { ++ data <<= 8; ++ data |= *wbuf; ++ wlen--; ++ wbuf++; ++ } ++ if (shift) ++ data <<= shift; ++ writel(data, SPI_DATA); ++ while (readl(SPI_CONTROL) & 0x0004) ++ ; ++ } ++ ++ if (!rlen) ++ return 0; ++ if (rlen > 4) ++ writel(1, SPI_CONTROL); ++ ++ while (rlen > 4) { ++ writel(0xffffffff, SPI_DATA); ++ while (readl(SPI_CONTROL) & 0x0004) ++ ; ++ data = readl(SPI_DATA); ++ rbuf[0] = (data>>24)&0xff; ++ rbuf[1] = (data>>16)&0xff; ++ rbuf[2] = (data>>8)&0xff; ++ rbuf[3] = data&0xff; ++ rbuf += 4; ++ rlen -= 4; ++ } ++ ++ if (flags & SPI_XFER_END) ++ writel(0x0003 | ((rlen << (8 + 3)) & 0x1F00), SPI_CONTROL); ++ else ++ writel(0x0001 | ((rlen << (8 + 3)) & 0x1F00), SPI_CONTROL); ++ ++ writel(0xffffffff, SPI_DATA); ++ while (readl(SPI_CONTROL) & 0x0004) ++ ; ++ data = readl(SPI_DATA); ++ ++ if (rlen < 4) ++ data <<= ((4 - rlen) * 8); ++ ++ while (rlen > 0) { ++ *rbuf = ((data >> 24) & 0xff); ++ data <<= 8; ++ rbuf++; ++ rlen--; ++ } ++ rbuf = in; ++ printf("%02x %02x %02x %02x %02x\n", rbuf[0], rbuf[1], rbuf[2], rbuf[3], rbuf[4]); ++ return(0); ++} ++ ++int spi_xfer(struct spi_slave *slave, unsigned int bitlen, ++ const void *out, void *in, unsigned long flags) ++{ ++ u32 data, shift; ++ u32 wlen, len; ++ u8 *wbuf = out; ++ u8 *rbuf = in; ++ ++ //printf("OCTONET spi xfer %08x %08x %d %d\n", (u32) wbuf, (u32) rbuf, bitlen/8, flags); ++ ++ if (!bitlen) { ++ if (flags & SPI_XFER_END) { ++ writel(0x0003 | ((1 << (8 + 3)) & 0x1f00), SPI_CONTROL); ++ writel(0xffffffff, SPI_DATA); ++ while (readl(SPI_CONTROL) & 0x0004) ++ ; ++ } ++ writel(0, SPI_CONTROL); ++ return 0; ++ } ++ if (bitlen % 8) ++ return -1; ++ len = bitlen / 8; ++ ++#if 0 ++ if (wbuf && len==1) ++ printf("%02x\n", wbuf[0]); ++#endif ++ ++ if (len > 4) { ++ writel(1, SPI_CONTROL); ++ while (len > 4) { ++ if (wbuf) { ++ data = (wbuf[0]<<24) | (wbuf[1]<<16) | (wbuf[2]<<8) | wbuf[3]; ++ wbuf += 4; ++ } else ++ data = 0xffffffff; ++ writel(data, SPI_DATA); ++ while (readl(SPI_CONTROL) & 0x0004) ++ ; ++ data = readl(SPI_DATA); ++ if (rbuf) { ++ data = readl(SPI_DATA); ++ rbuf[0] = (data>>24)&0xff; ++ rbuf[1] = (data>>16)&0xff; ++ rbuf[2] = (data>>8)&0xff; ++ rbuf[3] = data&0xff; ++ rbuf += 4; ++ } ++ len -= 4; ++ } ++ } ++ if (flags & SPI_XFER_END) ++ writel(0x0003 | ((len << (8 + 3)) & 0x1f00), SPI_CONTROL); ++ else ++ writel(0x0001 | ((len << (8 + 3)) & 0x1f00), SPI_CONTROL); ++ ++ wlen = len; ++ if (wbuf) { ++ data = 0; ++ shift = ((4 - wlen) * 8); ++ while (wlen) { ++ data <<= 8; ++ data |= *wbuf; ++ wlen--; ++ wbuf++; ++ } ++ if (shift) ++ data <<= shift; ++ } else ++ data = 0xffffffff; ++ writel(data, SPI_DATA); ++ while (readl(SPI_CONTROL) & 0x0004) ++ ; ++ data = readl(SPI_DATA); ++ ++ if (rbuf) { ++ data <<= ((4 - len) * 8); ++ while (len > 0) { ++ *rbuf = ((data >> 24) & 0xff); ++ data <<= 8; ++ rbuf++; ++ len--; ++ } ++ } ++ writel(0, SPI_CONTROL); ++ ++#if 0 ++ if (in) { ++ rbuf = in; ++ printf("%02x %02x %02x %02x %02x\n", rbuf[0], rbuf[1], rbuf[2], rbuf[3], rbuf[4]); ++ } ++#endif ++ return(0); ++} +diff --git a/include/configs/naxy400.h b/include/configs/naxy400.h +new file mode 100644 +index 0000000..91cd9e9 +--- /dev/null ++++ b/include/configs/naxy400.h +@@ -0,0 +1,237 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop ++ * Lead Tech Design ++ * ++ * Configuation settings for the AT91SAM9M10G45EK board(and AT91SAM9G45EKES). ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * 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 WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#ifndef __CONFIG_H ++#define __CONFIG_H ++ ++#include ++ ++#define CONFIG_SYS_TEXT_BASE 0x73000000 ++#define CONFIG_SYS_GENERIC_BOARD 1 ++ ++#define CONFIG_AT91_LEGACY ++#define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */ ++ ++/* ARM asynchronous clock */ ++#define CONFIG_SYS_AT91_SLOW_CLOCK 32768 ++#define CONFIG_SYS_AT91_MAIN_CLOCK 12000000 /* from 12 MHz crystal */ ++#define CONFIG_SYS_HZ 1000 ++ ++#define CONFIG_AT91SAM9M10G45EK ++#define CONFIG_AT91FAMILY ++#define CONFIG_ARCH_CPU_INIT ++#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */ ++ ++#define CONFIG_CMDLINE_TAG /* enable passing of ATAGs */ ++#define CONFIG_SETUP_MEMORY_TAGS ++#define CONFIG_INITRD_TAG ++#define CONFIG_SKIP_LOWLEVEL_INIT ++#define CONFIG_BOARD_EARLY_INIT_F ++#define CONFIG_DISPLAY_CPUINFO ++ ++/* general purpose I/O */ ++#define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */ ++#define CONFIG_AT91_GPIO ++#define CONFIG_AT91_GPIO_PULLUP 1 /* keep pullups on peripheral pins */ ++ ++/* serial console */ ++#define CONFIG_ATMEL_USART ++#define CONFIG_USART_BASE ATMEL_BASE_DBGU ++#define CONFIG_USART_ID ATMEL_ID_SYS ++ ++#define CONFIG_BOOTDELAY 1 ++ ++/* ++ * BOOTP options ++ */ ++#define CONFIG_BOOTP_BOOTFILESIZE ++#define CONFIG_BOOTP_BOOTPATH ++#define CONFIG_BOOTP_GATEWAY ++#define CONFIG_BOOTP_HOSTNAME ++ ++/* ++ * Command line configuration. ++ */ ++#include ++#undef CONFIG_CMD_BDI ++#undef CONFIG_CMD_FPGA ++#undef CONFIG_CMD_IMI ++#undef CONFIG_CMD_IMLS ++#undef CONFIG_CMD_LOADS ++#undef CONFIG_CMD_SOURCE ++#undef CONFIG_CMD_XIMG ++ ++#define CONFIG_CMD_PING ++#define CONFIG_CMD_DHCP ++#define CONFIG_CMD_NAND ++#define CONFIG_CMD_USB ++#define CONFIG_CMD_FAT ++#define CONFIG_CMD_EXT2 ++#define CONFIG_CMD_EXT4 ++ ++#define CONFIG_CMD_CACHE ++#define CONFIG_CMD_GPIO ++ ++/* SDRAM */ ++#define CONFIG_NR_DRAM_BANKS 1 ++#define CONFIG_SYS_SDRAM_BASE ATMEL_BASE_CS6 ++#define CONFIG_SYS_SDRAM_SIZE 0x04000000 ++ ++#define CONFIG_SYS_INIT_SP_ADDR \ ++ (CONFIG_SYS_SDRAM_BASE + 4 * 1024 - GENERATED_GBL_DATA_SIZE) ++ ++/* No NOR flash */ ++#define CONFIG_SYS_NO_FLASH ++ ++#define CONFIG_SPI_FLASH ++#define CONFIG_SPI_FLASH_SST ++#define CONFIG_OCTONET_SPI ++#define CONFIG_CMD_SF ++ ++ ++/* NAND flash */ ++#ifdef CONFIG_CMD_NAND ++#define CONFIG_NAND_ATMEL ++#define CONFIG_SYS_MAX_NAND_DEVICE 1 ++#define CONFIG_SYS_NAND_BASE ATMEL_BASE_CS3 ++#define CONFIG_SYS_NAND_ONFI_DETECTION ++//#define CONFIG_SYS_NAND_DBW_16 ++/* our ALE is AD21 */ ++#define CONFIG_SYS_NAND_MASK_ALE (1 << 21) ++/* our CLE is AD22 */ ++#define CONFIG_SYS_NAND_MASK_CLE (1 << 22) ++#define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PC14 ++#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PC8 ++#define CONFIG_NAND_ECC_BCH ++#define CONFIG_BCH ++//#define CONFIG_PMECC_CAP 2 ++//#define CONFIG_PMECC_SECTOR_SIZE 512 ++ ++#if 1 ++#define CONFIG_CMD_UBI ++#define CONFIG_CMD_UBIFS ++#define CONFIG_CMD_MTDPARTS ++#define CONFIG_RBTREE ++#define CONFIG_MTD_DEVICE ++#define CONFIG_MTD_PARTITIONS ++#define CONFIG_LZO ++#define CONFIG_CMD_NAND_TRIMFFS ++#endif ++ ++#endif ++ ++/* Ethernet */ ++#define CONFIG_CMD_MII ++#define CONFIG_MACB ++#define CONFIG_NET_RETRY_COUNT 20 ++#define CONFIG_RESET_PHY_R ++#define CONFIG_OCTONET ++ ++#ifdef CONFIG_CMD_USB ++/* USB */ ++#define CONFIG_USB_EHCI ++#define CONFIG_USB_EHCI_ATMEL ++#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 2 ++#define CONFIG_USB_STORAGE ++#endif ++#define CONFIG_DOS_PARTITION ++ ++#define CONFIG_SYS_LOAD_ADDR 0x72000000 /* load address */ ++ ++#define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE ++#define CONFIG_SYS_MEMTEST_END 0x23e00000 ++ ++/* bootstrap + u-boot + env in nandflash */ ++#define CONFIG_ENV_IS_IN_NAND ++#define CONFIG_ENV_OFFSET 0xa0000 ++#define CONFIG_ENV_OFFSET_REDUND 0xc0000 ++#define CONFIG_ENV_SIZE 0x20000 ++ ++#define CONFIG_ENV_OVERWRITE ++ ++#if 0 ++#define CONFIG_BOOTCOMMAND "tftp lx.on;bootm" ++#define CONFIG_BOOTARGS \ ++ "root=/dev/nfs nfsroot=/usr3/DOCKSTAR/192.168.2.97.big ip=dhcp console=ttyS0,115200 earlyprintk " ++ ++#define CONFIG_EXTRA_ENV_SETTINGS \ ++ "newbit=sf probe; tftp net.bit; sf erase 10000 a0000; sf write 72000000 10000 a0000\0" \ ++ "newsbs=sf probe; tftp bs.on; sf erase 4000 2000; sf write 72000000 4000 2000\0" \ ++ "newsub=sf probe; tftp ub.on; sf erase b0000 80000; sf write 72000000 b0000 80000\0" \ ++ "newbs=tftp bsn.on; nand erase 0 20000; nand write 72000000 0 20000\0" \ ++ "newub=tftp ub.on; nand erase 20000 80000; nand write 72000000 20000 80000\0" \ ++ "ipaddr=192.168.2.80\0" \ ++ "nandboot=nand read 72000000 100000 800000; bootm\0" \ ++ "serverip=192.168.2.32\0" ++ ++#else ++ ++#define CONFIG_BOOTCOMMAND "nand erase 0 800000; usb start; usb start; fatload usb 0 72000000 bs.nand; nand write 72000000 0 20000; fatload usb 0 72000000 ub.on; nand write 72000000 20000 80000; fatload usb 0 72000000 uimage; nand write 72000000 100000 800000; setenv bootcmd $nandboot; save" ++//#define CONFIG_BOOTARGS "ip=dhcp console=ttyS0,115200 earlyprintk " ++#define CONFIG_BOOTARGS "ubi.mtd=2 root=ubi0:rootfs ro rootfstype=ubifs console=ttyS0,115200" ++ ++#define CONFIG_EXTRA_ENV_SETTINGS \ ++ "recover=if gpio input 64; then nand erase 2000000 e000000; fi\0" \ ++ "fallback=nand read 72000000 100000 800000; bootm\0" \ ++ "ubiboot=ubi part ubi && ubifsmount ubi:rootfs && ubifsload 72000000 /boot/uImage && bootm\0" \ ++ "nandboot=dcache on; run recover; run ubiboot; run fallback\0" \ ++ "mtdids=nand0=nand_mtd\0" \ ++ "mtdparts=mtdparts=nand_mtd:0x2000000@0x000000(boot),0xe000000@0x2000000(ubi)\0" \ ++ "newbit=sf probe && tftp net.bit && sf erase 10000 a0000 && sf write 72000000 10000 a0000\0" \ ++ "newsbs=sf probe && tftp bs.on && sf erase 4000 2000 && sf write 72000000 4000 2000\0" \ ++ "newsub=sf probe && tftp ub.on && sf erase b0000 80000 && sf write 72000000 b0000 80000\0" \ ++ "newbs=tftp bsn.on; nand erase 0 20000; nand write 72000000 0 20000\0" \ ++ "newub=tftp ub.on && nand erase 20000 80000 && nand write 72000000 20000 80000\0" ++#endif ++ ++ ++#define CONFIG_BAUDRATE 115200 ++ ++#define CONFIG_SYS_PROMPT "OctoNet> " ++#define CONFIG_SYS_CBSIZE 256 ++#define CONFIG_SYS_MAXARGS 16 ++#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16) ++#define CONFIG_SYS_LONGHELP ++#define CONFIG_CMDLINE_EDITING ++#define CONFIG_AUTO_COMPLETE ++#define CONFIG_SYS_HUSH_PARSER ++ ++ ++/* ++ * Size of malloc() pool ++ */ ++//#define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000) ++#define CONFIG_SYS_MALLOC_LEN 0x400000 ++ ++#define CONFIG_STACKSIZE (32*1024) /* regular stack */ ++ ++#ifdef CONFIG_USE_IRQ ++#error CONFIG_USE_IRQ not supported ++#endif ++ ++#define CONFIG_MISC_INIT_R ++ ++#endif