1
0
mirror of https://github.com/DigitalDevices/octonet.git synced 2023-10-10 13:36:52 +02:00

added octoserve

This commit is contained in:
mvoelkel 2015-08-05 22:22:06 +02:00
parent 68a450d10a
commit 6eb38bb69b
93 changed files with 21879 additions and 0 deletions

16
octoserve/Makefile Normal file
View File

@ -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

BIN
octoserve/boot/bs.img Executable file

Binary file not shown.

BIN
octoserve/boot/fpga.img Normal file

Binary file not shown.

BIN
octoserve/boot/fpga_gtl.img Normal file

Binary file not shown.

56
octoserve/config.c Normal file
View File

@ -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 <http://www.gnu.org/licenses/>.
*/
#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);
}

1368
octoserve/dvb.c Normal file

File diff suppressed because it is too large Load Diff

674
octoserve/gpl.txt Normal file
View File

@ -0,0 +1,674 @@
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:
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.
<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>.

441
octoserve/http.c Normal file
View File

@ -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 <http://www.gnu.org/licenses/>.
*/
#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"
"<root xmlns=\"urn:schemas-upnp-org:device-1-0\" configId=\"%d\">\r\n"
"<specVersion>\r\n<major>1</major>\r\n<minor>1</minor>\r\n</specVersion>\r\n"
"<device>\r\n"
"<deviceType>urn:ses-com:device:SatIPServer:1</deviceType>\r\n"
"<friendlyName>OctopusNet</friendlyName>\r\n"
"<manufacturer>DigitalDevices</manufacturer>\r\n"
"<manufacturerURL>http://www.digitaldevices.de/</manufacturerURL>\r\n"
"<modelDescription>OctopusNet</modelDescription>\r\n"
"<modelName>OctopusNet</modelName>\r\n"
"<modelNumber>1.0</modelNumber>\r\n"
"<modelURL>http://www.digitaldevices.de/OctopusNet.html</modelURL>\r\n"
"<serialNumber>%d</serialNumber>\r\n"
"<UDN>%s</UDN>\r\n"
//"<UPC>Universal Product Code</UPC>\r\n"
"<iconList>\r\n"
"<icon>\r\n<mimetype>image/png</mimetype>\r\n"
"<width>120</width>\r\n<height>120</height>\r\n"
"<depth>24</depth>\r\n<url>www/icons/dd-120.png</url>\r\n"
"</icon>\r\n"
"<icon>\r\n<mimetype>image/jpg</mimetype>\r\n"
"<width>120</width>\r\n<height>120</height>\r\n"
"<depth>24</depth>\r\n<url>www/icons/dd-120.jpg</url>\r\n"
"</icon>\r\n"
"<icon>\r\n<mimetype>image/png</mimetype>\r\n"
"<width>48</width>\r\n<height>48</height>\r\n"
"<depth>24</depth>\r\n<url>www/icons/dd-48.png</url>\r\n"
"</icon>\r\n"
"<icon>\r\n<mimetype>image/jpg</mimetype>\r\n"
"<width>48</width>\r\n<height>48</height>\r\n"
"<depth>24</depth>\r\n<url>www/icons/dd-48.jpg</url>\r\n"
"</icon>\r\n"
"</iconList>\r\n"
"<presentationURL>../index.html</presentationURL>\r\n"
"<satip:X_SATIPCAP xmlns:satip=\"urn:ses-com:satip\">%s</satip:X_SATIPCAP>\r\n"
"</device>\r\n"
"</root>\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);
}

255
octoserve/igmp.c Normal file
View File

@ -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 <http://www.gnu.org/licenses/>.
*/
#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;
}
}

68
octoserve/ns.h Normal file
View File

@ -0,0 +1,68 @@
#ifndef _UAPI_DVBNS_H_
#define _UAPI_DVBNS_H_
#include <linux/types.h>
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_*/

140
octoserve/ntools.c Normal file
View File

@ -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 <http://www.gnu.org/licenses/>.
*/
#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);
}

2596
octoserve/octoserve.c Normal file

File diff suppressed because it is too large Load Diff

522
octoserve/octoserve.h Normal file
View File

@ -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 <http://www.gnu.org/licenses/>.
*/
#ifndef _OCTOSERVE_H_
#define _OCTOSERVE_H_
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <stdarg.h>
#include <string.h>
#include <signal.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/queue.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <signal.h>
#include <dirent.h>
#include <pthread.h>
#include <ifaddrs.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <resolv.h>
#include <netdb.h>
#include <net/if.h>
#include <net/ethernet.h>
#include <net/if_arp.h>
#include <netinet/tcp.h>
#include <linux/dvb/dmx.h>
#include <linux/dvb/frontend.h>
#include <linux/dvb/video.h>
#include <linux/dvb/net.h>
#include <linux/mii.h>
#include <linux/sockios.h>
#include <linux/filter.h>
#include <time.h>
#include <libdvben50221/en50221_stdcam.h>
#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

6
octoserve/ssdp Normal file
View File

@ -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

697
octoserve/ssdp.c Normal file
View File

@ -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 <http://www.gnu.org/licenses/>.
*/
#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;
}

196
octoserve/switch.c Normal file
View File

@ -0,0 +1,196 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <getopt.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <sys/ioctl.h>
#include <linux/types.h>
#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;
}

View File

@ -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

View File

@ -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"
1 CATEGORY TITLE SYSTEM FREQ SR POL/MOD RADIO ENC PIDS TRACKS
2 Unknown Service 30818 dvbs2 10729 22000 v 0 0 P1042:169:134:135 A134:135
3 Unknown Service 30819 dvbs2 10729 22000 v 0 0 P1043:171:146:147 A146:147
4 ARD tagesschau24 dvbs 10743 22000 h 0 0 P100:101:104:102 A102
5 ARD Einsfestival dvbs 10743 22000 h 0 0 P200:201:204:202:203:206 A202:203:206
6 ARD EinsPlus dvbs 10743 22000 h 0 0 P300:301:304:302:303:306 A302:303:306
7 ARD arte dvbs 10743 22000 h 0 0 P400:401:404:402:403:407:408 A402:403:407:408
8 ARD PHOENIX dvbs 10743 22000 h 0 0 P500:501:504:502:503 A502:503
9 ARD Test-R dvbs 10743 22000 h 0 0 P600:401:402 A402
10 PRISA TV LTC dvbs 10758 22000 v 0 0 P1027:163:92 A92
11 Unknown Service 29862 dvbs 10758 22000 v 0 0 P1036:4166 A
12 BetaDigital ANIXE HD dvbs2 10773 22000 h 0 0 P96:255:259 A259
13 BetaDigital QVC HD dvbs2 10773 22000 h 0 0 P99:1023:35:1027 A1027
14 BetaDigital HSE24 HD dvbs2 10773 22000 h 0 0 P100:1279:36:1283 A1283
15 BetaDigital SES 75 dvbs2 10773 22000 h 0 0 P106:2815 A
16 BetaDigital SOPHIA TV dvbs2 10773 22000 h 0 0 P107:3071:3072 A3072
17 PRISA TV TAQUILLA X dvbs 10788 22000 v 0 0 P1035:173:132:144 A132:144
18 TXY TAQUILLA XY dvbs 10788 22000 v 0 0 P1031:160:80:81 A80:81
19 PRISA TV TAQUILLA X dvbs 10788 22000 v 0 0 P1036:174:136:145 A136:145
20 BetaDigital HSE24 EXTRA HD dvbs2 10802 22000 h 0 0 P97:511:33:515 A515
21 BetaDigital 1-2-3.tv HD dvbs2 10802 22000 h 0 0 P98:767:34:771 A771
22 BetaDigital QVC PLUS HD dvbs2 10802 22000 h 0 0 P100:1279:36:1283 A1283
23 Unknown Service 29953 dvbs2 10817 22000 v 0 0 P1027:163:98 A98
24 Unknown Service 29962 dvbs2 10817 22000 v 0 0 P1031:163:98 A98
25 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
26 DIGITAL+ C+ PORTADA dvbs 10847 22000 v 0 0 P1083:171:124 A124
27 Unknown Service 30118 dvbs 10847 22000 v 0 0 P1093:163:400:254 A400:254
28 DIGITAL+ CANAL+ GUÍA dvbs 10847 22000 v 0 0 P1096:163:400:254 A400:254
29 Digital + Service 30122 dvbs 10847 22000 v 0 0 P1097:163:400:254 A400:254
30 DIGITAL+ Service 30123 dvbs 10847 22000 v 0 0 P1098:163:400:254 A400:254
31 Digital + Service 30126 dvbs 10847 22000 v 0 0 P1029:163:400:254 A400:254
32 DIGITAL+ Service 30127 dvbs 10847 22000 v 0 0 P1026:163:400:254 A400:254
33 DIGITAL+ C+ TAQUILLA dvbs 10847 22000 v 0 0 P1099:163:400:254 A400:254
34 DIGITAL+ BAR+ dvbs 10847 22000 v 0 0 P1031:163:400:254 A400:254
35 DIGITAL+ C+ TAQUILLA dvbs 10847 22000 v 0 0 P1038:163:400:254 A400:254
36 DIGITAL+ C+ PORTADA dvbs 10847 22000 v 0 0 P1024:171:124 A124
37 DIGITAL+ Service 30151 dvbs 10847 22000 v 0 0 P1025:163:400:254 A400:254
38 DIGITAL+ Service 30154 dvbs 10847 22000 v 0 0 P1028:163:400:254 A400:254
39 DIGITAL+ Service 30156 dvbs 10847 22000 v 0 0 P1030:163:400:254 A400:254
40 DIGITAL + Service 30158 dvbs 10847 22000 v 0 0 P1032:163:400:254 A400:254
41 Digital + Service 30159 dvbs 10847 22000 v 0 0 P1033:163:400:254 A400:254
42 DIGITAL+ CONTRATO dvbs 10847 22000 v 0 0 P1043:163:400:254 A400:254
43 DIGITAL+ TEST TÉCNICO dvbs 10847 22000 v 0 0 P1047 A
44 DIGITAL+ TEST_CSD1 dvbs 10847 22000 v 0 0 P1048:163 A
45 DIGITAL+ TEST_CSD2 dvbs 10847 22000 v 0 0 P1049:163:400 A400
46 DIGITAL+ TEST_CSD3 dvbs 10847 22000 v 0 0 P1050:163 A
47 DIGITAL+ TEST_CSD4 dvbs 10847 22000 v 0 0 P1051:163:400:254 A400:254
48 DIGITAL+ TEST_CSD5 dvbs 10847 22000 v 0 0 P1052:161:84 A84
49 DIGITAL+ Service 30179 dvbs 10847 22000 v 0 0 P1053:163:400:254 A400:254
50 Digital+ Service 30189 dvbs 10847 22000 v 0 0 P1063:163:400:254 A400:254
51 Digital + Service 30190 dvbs 10847 22000 v 0 0 P1064:163:400:254 A400:254
52 DIGITAL+ Service 30191 dvbs 10847 22000 v 0 0 P1065:163:400:254 A400:254
53 Digital+ Service 30193 dvbs 10847 22000 v 0 0 P1067:163:400:254 A400:254
54 Digital+ Service 30194 dvbs 10847 22000 v 0 0 P1068:163:400:254 A400:254
55 Contactanos Service 30195 dvbs 10847 22000 v 0 0 P1069:163:400:254 A400:254
56 Unknown Service 30196 dvbs 10847 22000 v 0 0 P1070:163:400:254 A400:254
57 DIGITAL + Service 30197 dvbs 10847 22000 v 0 0 P1071:163:400:254 A400:254
58 PRISA TV GUÍA FÁCIL dvbs 10847 22000 v 0 0 P1072:163:400:254 A400:254
59 Unknown Service 30600 dvbs 10876 22000 v 0 0 P1024:165:100 A100
60 Unknown Service 30604 dvbs 10876 22000 v 0 0 P1028:165:100 A100
61 Unknown Service 30616 dvbs 10876 22000 v 0 0 P1042:171:124 A124
62 ARD rbb Brandenburg HD dvbs2 10891 22000 h 0 0 P5300:5311:5314:5312:5313:5316 A5312:5313:5316
63 ARD rbb Berlin HD dvbs2 10891 22000 h 0 0 P5310:5311:5314:5312:5313:5316 A5312:5313:5316
64 ARD MDR Sachsen HD dvbs2 10891 22000 h 0 0 P5320:5331:5334:5332:5333:5336 A5332:5333:5336
65 ARD MDR S-Anhalt HD dvbs2 10891 22000 h 0 0 P5330:5331:5334:5332:5333:5336 A5332:5333:5336
66 ARD MDR Thüringen HD dvbs2 10891 22000 h 0 0 P5340:5331:5334:5332:5333:5336 A5332:5333:5336
67 ARD hr-fernsehen HD dvbs2 10891 22000 h 0 0 P5350:5351:5354:5352:5353:5356 A5352:5353:5356
68 BetaDigital mediaspar HD dvbs2 10964 22000 h 0 0 P98:767:771 A771
69 BetaDigital QVC BEAUTY & STYLE HD dvbs2 10964 22000 h 0 0 P101:1535:37:1539 A1539
70 DIGITAL+ Service 30660 dvbs 10979 22000 v 0 0 P1034 A
71 SES SES UHD Demo Channel dvbs2 10993 22000 h 0 0 P256:110:120 A120
72 SES ASTRA Astra Ultra HD Demo dvbs2 10993 22000 h 0 0 P257:210:220 A220
73 ASTRA SES dvbs 11023 22000 h 0 0 P2090:2091:2092:2093 A2092:2093
74 ARD tagesschau24 HD dvbs2 11052 22000 h 0 0 P5400:5401:5404:5402:5406 A5402:5406
75 ARD Einsfestival HD dvbs2 11052 22000 h 0 0 P5410:5411:5414:5412:5413:5416 A5412:5413:5416
76 ARD EinsPlus HD dvbs2 11052 22000 h 0 0 P5420:5421:5424:5422:5423:5426 A5422:5423:5426
77 Telefonica Servicios Audiovisuales TELESUR dvbs 11067 22000 v 0 0 P35:2101:2102 A2102
78 TSA TBN Enlace dvbs 11067 22000 v 0 0 P1802:8002:8102 A8102
79 TSA TVGA dvbs 11067 22000 v 0 0 P39:1701:53:1702 A1702
80 TSA I24 NEWS dvbs 11067 22000 v 0 0 P1824:1081:1082 A1082
81 Telefonica Servicios Audiovisuales ASTRA SEXY SAT 1 dvbs 11067 22000 v 0 0 P41:1901:1902 A1902
82 DIGITAL+ C+ MULTI-X dvbs2 11097 22000 v 0 0 P1024:167:108:109:110 A108:109:110
83 DIGITAL+ MULTI-X dvbs2 11097 22000 v 0 0 P1039:174:136:137 A136:137
84 DIGITAL+ MULTI-X dvbs2 11097 22000 v 0 0 P1037:165:100:101 A100:101
85 DIGITAL+ MULTI-X dvbs2 11097 22000 v 0 0 P1040:176:144:145 A144:145
86 . . dvbs2 11111 22000 h 0 0 P A
87 . . dvbs2 11111 22000 h 0 0 P A
88 . . dvbs2 11111 22000 h 0 0 P A
89 . . dvbs2 11111 22000 h 0 0 P A
90 . . dvbs 11112 22000 h 0 0 P A
91 . . dvbs 11112 22000 h 0 0 P A
92 . . dvbs 11112 22000 h 0 0 P A
93 . . dvbs 11112 22000 h 0 0 P A
94 Unknown Service 30505 dvbs 11156 22000 v 0 0 P1029:166:50:104:105 A104:105
95 PRISA TV FASHION TV dvbs 11156 22000 v 0 0 P1034:165:100 A100
96 Unknown Service 30517 dvbs 11156 22000 v 0 0 P1041:166:50:104:105 A104:105
97 SKY Sky INFO dvbs2 11170 22000 h 0 0 P97:511:32:515 A515
98 SKY Sky INFO dvbs 11171 22000 h 0 0 P97:511:32:515 A515
99 SES ASTRA TV TRWAM dvbs2 11186 21666 v 0 0 P8020:33:273:3606 A3606
100 SES ASTRA BVN TV dvbs2 11186 21666 v 0 0 P2116:525:40:122 A122
101 SES ASTRA TV TRWAM dvbs 11185 22000 v 0 0 P8020:33:273:3606 A3606
102 SES ASTRA BVN TV dvbs 11185 22000 v 0 0 P2116:525:40:122 A122
103 ~ Volksmusik dvbs 11243 22000 h 0 0 P222:2220:2221 A2221
104 ORS Bibel TV HD dvbs 11243 22000 h 0 0 P224:2240:2245:2241 A2241
105 ~ Schau TV dvbs 11243 22000 h 0 0 P225:2250:2255:2251 A2251
106 ~ Starparadies AT dvbs 11243 22000 h 0 0 P226:2260:2261 A2261
107 ~ DAF Neu dvbs 11243 22000 h 0 0 P227:2270:2271 A2271
108 ORS MELODIE TV dvbs 11243 22000 h 0 0 P229:2290:2291 A2291
109 ORS Service 13230 dvbs 11243 22000 h 0 0 P230 A
110 ORS Service 13231 dvbs 11243 22000 h 0 0 P231 A
111 ORS Service 13232 dvbs 11243 22000 h 0 0 P232 A
112 ORS Service 13233 dvbs 11243 22000 h 0 0 P233 A
113 ORF flimmit dvbs2 11273 22000 h 0 0 P310:3100 A
114 ORF Aristo.TV dvbs2 11273 22000 h 0 0 P311:3110:3111 A3111
115 ServusTV ServusTV HD Oesterreich dvbs2 11302 22000 h 0 0 P109:3583:3588:3584:3585:3587:3589 A3584:3585:3587:3589
116 ServusTV ServusTV HD Deutschland dvbs2 11302 22000 h 0 0 P110:4920:4925:4921:4922:4924:4926 A4921:4922:4924:4926
117 ServusTV PVoD dvbs2 11302 22000 h 0 0 P111 A
118 ZDFvision 3sat HD dvbs2 11347 22000 v 0 0 P6500:6510:6530:6520:6521:6523:6522 A6520:6521:6523:6522
119 ZDFvision KiKA HD dvbs2 11347 22000 v 0 0 P6600:6610:6630:6620:6621:6622 A6620:6621:6622
120 ZDFvision ZDFinfo HD dvbs2 11347 22000 v 0 0 P6700:6710:6730:6720:6721:6723:6722 A6720:6721:6723:6722
121 ZDFvision ZDF HD dvbs2 11361 22000 h 0 0 P6100:6110:6130:6120:6121:6123:6122 A6120:6121:6123:6122
122 ZDFvision zdf_neo HD dvbs2 11361 22000 h 0 0 P6300:6310:6330:6320:6321:6323:6322 A6320:6321:6323:6322
123 ZDFvision zdf.kultur HD dvbs2 11361 22000 h 0 0 P6400:6410:6430:6420:6421:6423:6422 A6420:6421:6423:6422
124 GlobeCast RT HD dvbs2 11376 22000 v 0 0 P1010:1011:1012:1013 A1012:1013
125 GLOBECAST RT Esp HD dvbs2 11376 22000 v 0 0 P1020:1021:1022:1023 A1022:1023
126 GLOBECAST RT Esp HD dvbs2 11376 22000 v 0 0 P1120:1021:1022:1023 A1022:1023
127 BetaDigital RTL 2 CH dvbs 11391 22000 h 0 0 P96:255:32:256 A256
128 BetaDigital Fashion Television dvbs 11420 22000 h 0 0 P103:2047:2048 A2048
129 BetaDigital SOPHIA TV dvbs 11420 22000 h 0 0 P108:3327:3328 A3328
130 BetaDigital Die Neue Zeit TV dvbs 11420 22000 h 0 0 P109:3583:3584 A3584
131 BetaDigital Club-Hot TV dvbs 11420 22000 h 0 0 P117:479:3807:480 A480
132 BetaDigital 6Live 24 TV dvbs 11420 22000 h 0 0 P121:1503:1504 A1504
133 BetaDigital Reife Damen TV dvbs 11420 22000 h 0 0 P122:1759:3807:1760 A1760
134 BetaDigital Lust und Liebe TV dvbs 11420 22000 h 0 0 P126:2783:2784 A2784
135 BetaDigital Telefonchat-24 TV dvbs 11420 22000 h 0 0 P130:3807:3808 A3808
136 BetaDigital Beate Uhse Sexy-Sat dvbs 11420 22000 h 0 0 P133:751:3807:752 A752
137 BetaDigital Hot Girls TV dvbs 11420 22000 h 0 0 P135:1263:3807:1264 A1264
138 BetaDigital GayBoys LIVE dvbs 11420 22000 h 0 0 P138:2031:2032 A2032
139 BetaDigital . dvbs 11420 22000 h 0 0 P A
140 BetaDigital . dvbs 11420 22000 h 0 0 P A
141 BetaDigital . dvbs 11420 22000 h 0 0 P A
142 BetaDigital . dvbs 11420 22000 h 0 0 P A
143 BetaDigital . dvbs 11420 22000 h 0 0 P A
144 BetaDigital . dvbs 11420 22000 h 0 0 P A
145 BetaDigital SES 05 dvbs 11420 22000 h 0 0 P A
146 BetaDigital . dvbs 11420 22000 h 0 0 P A
147 BetaDigital SES 06 dvbs 11420 22000 h 0 0 P A
148 BetaDigital SES 07 dvbs 11420 22000 h 0 0 P A
149 BetaDigital SES 09 dvbs 11420 22000 h 0 0 P A
150 BetaDigital SES 10 dvbs 11420 22000 h 0 0 P A
151 BetaDigital . dvbs 11420 22000 h 0 0 P A
152 BetaDigital . dvbs 11420 22000 h 0 0 P A
153 BetaDigital . dvbs 11420 22000 h 0 0 P A
154 BetaDigital . dvbs 11420 22000 h 0 0 P A
155 BetaDigital . dvbs 11420 22000 h 0 0 P A
156 BetaDigital . dvbs 11420 22000 h 0 0 P A
157 BetaDigital . dvbs 11420 22000 h 0 0 P A
158 BetaDigital . dvbs 11420 22000 h 0 0 P A
159 BetaDigital . dvbs 11420 22000 h 0 0 P A
160 BetaDigital . dvbs 11420 22000 h 0 0 P A
161 BetaDigital . dvbs 11420 22000 h 0 0 P A
162 BetaDigital . dvbs 11420 22000 h 0 0 P A
163 BetaDigital . dvbs 11420 22000 h 0 0 P A
164 BetaDigital . dvbs 11420 22000 h 0 0 P A
165 BetaDigital . dvbs 11420 22000 h 0 0 P A
166 CSAT OFFRES CANAL READY dvbs 11479 22000 v 0 0 P1284:164:96 A96
167 ARD Das Erste HD dvbs2 11493 22000 h 0 0 P5100:5101:5104:5102:5103:5106 A5102:5103:5106
168 ARD arte HD dvbs2 11493 22000 h 0 0 P5110:5111:5114:5112:5113:5116:5117 A5112:5113:5116:5117
169 ARD SWR BW HD dvbs2 11493 22000 h 0 0 P5120:5121:5124:5122:5123:5126 A5122:5123:5126
170 ARD SWR RP HD dvbs2 11493 22000 h 0 0 P5130:5121:5134:5122:5123:5126 A5122:5123:5126
171 Orange TV SSU Samsung dvbs 11508 22000 v 0 0 P705 A
172 GLOBECAST Cubavision Internacional dvbs 11508 22000 v 0 0 P758:708:728 A728
173 GLOBECAST Al Jazeera Channel dvbs 11508 22000 v 0 0 P759:709:729 A729
174 GLOBECAST RedeRecord dvbs 11508 22000 v 0 0 P760:710:730 A730
175 GLOBECAST Arirang TV dvbs 11508 22000 v 0 0 P761:711:731 A731
176 GlobeCast Al Jazeera English dvbs 11508 22000 v 0 0 P762:712:732 A732
177 GlobeCast RT Esp dvbs 11508 22000 v 0 0 P1250:1450:1550 A1550
178 GLOBECAST NHK World TV dvbs 11508 22000 v 0 0 P764:714:734 A734
179 BetaDigital a.tv dvbs 11523 22000 h 0 0 P96:255:256 A256
180 BetaDigital Franken Fernsehen dvbs 11523 22000 h 0 0 P97:511:512 A512
181 BetaDigital intv dvbs 11523 22000 h 0 0 P98:767:768 A768
182 BetaDigital Ulm-Allgäu dvbs 11523 22000 h 0 0 P99:1023:1024 A1024
183 BetaDigital münchen.tv dvbs 11523 22000 h 0 0 P100:1279:1280 A1280
184 BetaDigital rfo Regional Oberbayern dvbs 11523 22000 h 0 0 P101:1535:1536 A1536
185 BetaDigital Mainfranken dvbs 11523 22000 h 0 0 P102:1791:1792 A1792
186 BetaDigital TV Oberfranken dvbs 11523 22000 h 0 0 P103:2047:2048 A2048
187 BetaDigital TVA-OTV dvbs 11523 22000 h 0 0 P104:2303:2304 A2304
188 BetaDigital Niederbayern dvbs 11523 22000 h 0 0 P105:2559:2560 A2560
189 BetaDigital Lokal TV Portal dvbs 11523 22000 h 0 0 P144:4607:4608 A4608
190 GLOBECAST Russia Today dvbs 11538 22000 v 0 0 P654:604:624 A624
191 GLOBECAST France 24 dvbs 11538 22000 v 0 0 P201:605:6701:625 A625
192 GLOBECAST France 24 dvbs 11538 22000 v 0 0 P202:606:6702:626 A626
193 GLOBECAST France 24 dvbs 11538 22000 v 0 0 P660:610:6710:630 A630
194 GLOBECAST CCTV9 Documentary dvbs 11538 22000 v 0 0 P662:612:632 A632
195 GLOBECAST CCTV F dvbs 11538 22000 v 0 0 P663:613:633 A633
196 GLOBECAST CCTV NEWS dvbs 11538 22000 v 0 0 P664:614:634 A634
197 GlobeCast TV5MONDE EUROPE dvbs 11538 22000 v 0 0 P665:615:835:635 A635
198 ARD BR Süd HD dvbs2 11582 22000 h 0 0 P5200:5201:5204:5202:5203:5206 A5202:5203:5206
199 ARD BR Nord HD dvbs2 11582 22000 h 0 0 P5210:5201:5204:5202:5203:5206 A5202:5203:5206
200 ARD NDR FS NDS HD dvbs2 11582 22000 h 0 0 P5220:5221:5224:5222:5223:5226 A5222:5223:5226
201 ARD NDR FS MV HD dvbs2 11582 22000 h 0 0 P5230:5221:5224:5222:5223:5226 A5222:5223:5226
202 ARD NDR FS HH HD dvbs2 11582 22000 h 0 0 P5240:5221:5224:5222:5223:5226 A5222:5223:5226
203 ARD NDR FS SH HD dvbs2 11582 22000 h 0 0 P5250:5221:5224:5222:5223:5226 A5222:5223:5226
204 ARD PHOENIX HD dvbs2 11582 22000 h 0 0 P5260:5261:5264:5262:5263 A5262:5263
205 CNBC CNBC Europe dvbs 11597 22000 v 0 0 P1838:307:308 A308
206 BBC BBC World dvbs 11597 22000 v 0 0 P1858:163:92 A92
207 Groupe M6 M6 BOUTIQUE LA CHAINE dvbs 11597 22000 v 0 0 P1100:1120:130 A130
208 Bloomberg TV Bloomberg Europe TV dvbs 11597 22000 v 0 0 P1090:1360:1320 A1320
209 SES ASTRA Sonlife Broadcasting Network dvbs 11597 22000 v 0 0 P1050:1051:1052:1053 A1052:1053
210 TDA Algerie 3 dvbs 11597 22000 v 0 0 P256:514:670 A670
211 TDA Canal Algerie dvbs 11597 22000 v 0 0 P257:515:680 A680
212 SES ASTRA ASTRA 3D demo dvbs 11611 22000 h 0 0 P32:33:36 A36
213 SES ASTRA TRT Turk dvbs 11611 22000 h 0 0 P45:2011:2016:4004 A4004
214 Sitcom ALICE dvbs 11611 22000 h 0 0 P129:2064:2068 A2068
215 Unknown TURKSHOW TV dvbs 11611 22000 h 0 0 P1100:1101:1102 A1102
216 RTVE TVE INTERNACIONAL EUROPA dvbs 11626 22000 v 0 0 P3520:3521:3525:3522:3527 A3522:3527
217 RTVE CANAL 24 HORAS dvbs 11626 22000 v 0 0 P3568:3569:3575:3570:3571 A3570:3571
218 SES CNN Int. dvbs 11626 22000 v 0 0 P3946:165:100 A100
219 BetaDigital TWOJ dvbs 11641 22000 h 0 0 P96:255:256 A256
220 ProSiebenSat.1 SAT.1 Gold Österreich dvbs2 11670 22000 h 0 0 P106:2815:42:2816 A2816
221 ProSiebenSat.1 Pro7 MAXX Austria dvbs2 11670 22000 h 0 0 P107:3071:43:3072 A3072
222 ProSiebenSat.1 . dvbs2 11670 22000 h 0 0 P A
223 DIGITAL+ C+ DEP 2 HD dvbs 11685 22000 v 0 0 P1026:175 A
224 PRISA TV YOMVI dvbs 11685 22000 v 0 0 P1027:163:254:92 A254:92
225 Unknown Service 30205 dvbs 11685 22000 v 0 0 P1052:166:104 A104
226 Unknown Service 30213 dvbs 11685 22000 v 0 0 P1032:175 A
227 PRISA TV AXN WHITE HD dvbs 11685 22000 v 0 0 P1033:175 A
228 DIGITAL+ MEZZO LIVEHD dvbs 11685 22000 v 0 0 P1037:175 A
229 Unknown Service 30216 dvbs 11685 22000 v 0 0 P1039:175 A
230 CANAL+ NICKELODEONHD dvbs 11685 22000 v 0 0 P1050:175 A
231 DIGITAL+ C+ LIGA HD dvbs 11685 22000 v 0 0 P1040:175 A
232 DIGITAL+ CANAL+1 HD dvbs 11685 22000 v 0 0 P1041:175 A
233 DIGITAL+ C+ ACCIÓN HD dvbs 11685 22000 v 0 0 P1042:175 A
234 DIGITAL+ C+COMEDIA HD dvbs 11685 22000 v 0 0 P1043:175 A
235 DIGITAL+ C+ DCINE HD dvbs 11685 22000 v 0 0 P1044:175 A
236 DIGITAL+ C+XTRA HD dvbs 11685 22000 v 0 0 P1045:175 A
237 Unknown Service 30231 dvbs 11685 22000 v 0 0 P1046:175 A
238 DIGITAL+ C+ FÚTBOL HD dvbs 11685 22000 v 0 0 P1047:175 A
239 DIGITAL+ C+ DEPORT HD dvbs 11685 22000 v 0 0 P1048:175 A
240 PRISA TV RTESPAÑOL HD dvbs 11685 22000 v 0 0 P1049:175 A
241 DIGITAL+ CALLE 13 HD dvbs 11685 22000 v 0 0 P1055:175 A
242 DIGITAL+ FOX HD dvbs 11685 22000 v 0 0 P1056:175 A
243 DIGITAL+ AXN HD dvbs 11685 22000 v 0 0 P1057:175 A
244 DIGITAL+ NAT GEO HD dvbs 11685 22000 v 0 0 P1058:175 A
245 PRISA TV COMEDYCENTRALHD dvbs 11685 22000 v 0 0 P1059:175 A
246 DIGITAL+ MEZZO LIVEHD dvbs 11685 22000 v 0 0 P1060:175 A
247 DIGITAL+ CANAL+ 3D dvbs 11685 22000 v 0 0 P1061:175 A
248 DIGITAL+ TAQUILLA HD dvbs 11685 22000 v 0 0 P1062:175 A
249 DIGITAL+ VIAJAR HD dvbs 11685 22000 v 0 0 P1063:175 A
250 DIGITAL+ COSMO HD dvbs 11685 22000 v 0 0 P1064:175 A
251 DIGITAL+ HOLLYWOOD HD dvbs 11685 22000 v 0 0 P1065:175 A
252 DIGITAL + TNT HD dvbs 11685 22000 v 0 0 P1066:175 A
253 DIGITAL+ NG WILD HD dvbs 11685 22000 v 0 0 P1067:175 A
254 DIGITAL+ SYFY HD dvbs 11685 22000 v 0 0 P1068:175 A
255 DIGITAL+ DISNEY CH HD dvbs 11685 22000 v 0 0 P1069:175 A
256 PRISATV C+LCAMPEON2 dvbs 11685 22000 v 0 0 P1070:175 A
257 PRISATV C+LCAMPEONES dvbs 11685 22000 v 0 0 P1071:175 A
258 PRISA TV C+L.MULTI HD dvbs 11685 22000 v 0 0 P1072:175 A
259 PRISA TV TAQUILLA HD2 dvbs 11685 22000 v 0 0 P1073:175 A
260 PRISA TV FOX LIFE HD dvbs 11685 22000 v 0 0 P1074:175 A
261 PRISA TV C+LCAMPEON3 dvbs 11685 22000 v 0 0 P1075:175 A
262 PRISA TV C+ GOLF HD dvbs 11685 22000 v 0 0 P1076:175 A
263 PRISA TV CANAL+ 2 HD dvbs 11685 22000 v 0 0 P1077:175 A
264 DIGITAL+ C+ XTRA HD dvbs 11685 22000 v 0 0 P1078:175 A
265 Unknown TCM HD dvbs 11685 22000 v 0 0 P1079:175 A
266 PRISA TV C+ SERIES HD dvbs 11685 22000 v 0 0 P1080:175 A
267 MTV Networks Europe VH1. dvbs 11739 27500 v 0 0 P341:3061:8190:3062 A3062
268 MTV Networks Europe VH1 Classic. dvbs 11739 27500 v 0 0 P327:3071:8190:3072 A3072
269 MTV Networks Europe Test Channel 1 dvbs 11739 27500 v 0 0 P A
270 CNN CNN Int. dvbs 11778 27500 v 0 0 P3946:165:100 A100
271 ARD Das Erste dvbs 11836 27500 h 0 0 P100:101:104:102:103:106 A102:103:106
272 ARD Bayerisches FS Süd dvbs 11836 27500 h 0 0 P200:201:204:202:203:206 A202:203:206
273 ARD hr-fernsehen dvbs 11836 27500 h 0 0 P300:301:304:302:303 A302:303
274 ARD Bayerisches FS Nord dvbs 11836 27500 h 0 0 P500:201:204:202:203:206 A202:203:206
275 ARD WDR Köln dvbs 11836 27500 h 0 0 P600:601:604:602:603 A602:603
276 ARD SWR Fernsehen BW dvbs 11836 27500 h 0 0 P800:801:804:802:803:806 A802:803:806
277 CSAT iTELE dvbs 11856 27500 v 0 0 P200:210:241:221 A221
278 CSAT iTELE dvbs 11856 27500 v 0 0 P201:210:241:221 A221
279 CSAT CANAL+ DECALE dvbs 11895 27500 v 0 0 P500:510:541:521:522 A521:522
280 CSAT Service 8361 dvbs 11895 27500 v 0 0 P1700 A
281 CSAT D17 dvbs 11934 27500 v 0 0 P400:410:441:421:422 A421:422
282 CSAT TV5MONDE dvbs 11934 27500 v 0 0 P1000:1010:1041:1021 A1021
283 CSAT D17 dvbs 11934 27500 v 0 0 P401:410:441:421:422 A421:422
284 ZDFvision ZDF dvbs 11953 27500 h 0 0 P100:110:130:120:121:122:125 A120:121:122:125
285 ZDFvision 3sat dvbs 11953 27500 h 0 0 P200:210:230:220:221:222:225 A220:221:222:225
286 ZDFvision KiKA dvbs 11953 27500 h 0 0 P300:310:330:320:321:325 A320:321:325
287 ZDFvision ZDFinfo dvbs 11953 27500 h 0 0 P600:610:630:620:621:622:625 A620:621:622:625
288 ZDFvision zdf_neo dvbs 11953 27500 h 0 0 P650:660:680:670:671:672:675 A670:671:672:675
289 ZDFvision zdf.kultur dvbs 11953 27500 h 0 0 P1100:1110:1130:1120:1121:1122:1125 A1120:1121:1122:1125
290 MTV Networks Europe Comedy Central/VIVA dvbs 11973 27500 v 0 0 P416:4061:8190:4064:4062 A4062
291 MTV Networks Europe Nickelodeon dvbs 11973 27500 v 0 0 P420:4101:8190:4104:4102:4103 A4102:4103
292 MTV Networks Europe Test Channel 2 dvbs 11973 27500 v 0 0 P A
293 MTV Networks Europe Test Channel 3 dvbs 11973 27500 v 0 0 P A
294 Unknown CANAL+ DECALE HD dvbs2 12012 29700 v 0 0 P1281:161:86:87 A86:87
295 Unknown Service 8822 dvbs2 12012 29700 v 0 0 P1301:161:86:87 A86:87
296 SKY Sky Select dvbs 12031 27500 h 0 0 P103:2815:2816 A2816
297 ProSiebenSat.1 ProSieben Schweiz dvbs 12051 27500 v 0 0 P32:289:33:290:292 A290:292
298 ProSiebenSat.1 ProSieben Austria dvbs 12051 27500 v 0 0 P1025:161:36:84:85 A84:85
299 ProSiebenSat.1 Kabel 1 Schweiz dvbs 12051 27500 v 0 0 P1026:162:165:163 A163
300 ProSiebenSat.1 Kabel 1 Austria dvbs 12051 27500 v 0 0 P1027:166:169:167 A167
301 ProSiebenSat.1 SAT.1 A dvbs 12051 27500 v 0 0 P1028:800:802:801:803 A801:803
302 ProSiebenSat.1 SAT.1 CH dvbs 12051 27500 v 0 0 P101:1535:38:1536:1539 A1536:1539
303 ProSiebenSat.1 SAT.1 HH/SH dvbs 12051 27500 v 0 0 P103:2047:40:2048:2051 A2048:2051
304 ProSiebenSat.1 SAT.1 NS/Bremen dvbs 12051 27500 v 0 0 P104:2047:40:2048:2051 A2048:2051
305 ProSiebenSat.1 SAT.1 RhlPf/Hessen dvbs 12051 27500 v 0 0 P105:2047:40:2048:2051 A2048:2051
306 ProSiebenSat.1 . dvbs 12051 27500 v 0 0 P A
307 ARD rbb Brandenburg dvbs 12109 27500 h 0 0 P500:601:604:602:603 A602:603
308 ARD rbb Berlin dvbs 12109 27500 h 0 0 P600:601:604:602:603 A602:603
309 ARD ARD-TEST-1 dvbs 12109 27500 h 0 0 P2100:601:604:602:2602 A602:2602
310 ARD NDR FS MV dvbs 12109 27500 h 0 0 P2400:2601:2604:2602:2603 A2602:2603
311 ARD NDR FS HH dvbs 12109 27500 h 0 0 P2500:2601:2604:2602:2603 A2602:2603
312 ARD NDR FS NDS dvbs 12109 27500 h 0 0 P2600:2601:2604:2602:2603 A2602:2603
313 ARD NDR FS SH dvbs 12109 27500 h 0 0 P2700:2601:2604:2602:2603 A2602:2603
314 ARD MDR Sachsen dvbs 12109 27500 h 0 0 P2800:2901:2904:2902:2903 A2902:2903
315 ARD MDR S-Anhalt dvbs 12109 27500 h 0 0 P2900:2901:2904:2902:2903 A2902:2903
316 ARD MDR Thüringen dvbs 12109 27500 h 0 0 P3000:2901:2904:2902:2903 A2902:2903
317 ARD SWR Fernsehen RP dvbs 12109 27500 h 0 0 P3100:3101:3104:3102:3103:3106 A3102:3103:3106
318 BetaDigital N24 Austria dvbs 12148 27500 h 0 0 P98:255:256 A256
319 BetaDigital Beauty TV dvbs 12148 27500 h 0 0 P100:3071:3072 A3072
320 MTV Networks Comedy Central / VIVA AT dvbs 12148 27500 h 0 0 P106:1535:33:1536 A1536
321 MTV Networks NICKELODEON AT dvbs 12148 27500 h 0 0 P107:1791:34:1792:1793 A1792:1793
322 BetaDigital DELUXE MUSIC dvbs 12148 27500 h 0 0 P99:3327:3328 A3328
323 BetaDigital BB-MV Lokal-TV dvbs 12148 27500 h 0 0 P103:2559:2560 A2560
324 BetaDigital HOPE Channel deutsch dvbs 12148 27500 h 0 0 P105:511:512 A512
325 BetaDigital DMAX Austria dvbs 12148 27500 h 0 0 P115:3583:45:3584 A3584
326 BetaDigital JML Shop dvbs 12148 27500 h 0 0 P108:2303:2304 A2304
327 BetaDigital pearl.tv Shop dvbs 12148 27500 h 0 0 P96:2047:2048 A2048
328 BetaDigital RNF dvbs 12148 27500 h 0 0 P122:1104:38:1105 A1105
329 BetaDigital Channel21 dvbs 12148 27500 h 0 0 P113:1023:35:1024 A1024
330 BetaDigital GOD Channel dvbs 12148 27500 h 0 0 P97:767:768 A768
331 BetaDigital MediaShop- Meine Einkaufswelt dvbs 12148 27500 h 0 0 P114:1279:1280 A1280
332 BetaDigital . dvbs 12148 27500 h 0 0 P A
333 RTL World RTL Television dvbs 12187 27500 h 0 0 P44:163:105:104:106 A104:106
334 RTL World RTL Regional NRW dvbs 12187 27500 h 0 0 P54:163:105:104 A104
335 RTL World RTL HB NDS dvbs 12187 27500 h 0 0 P55:163:105:104 A104
336 RTL World RTL FS dvbs 12187 27500 h 0 0 P56:163:105:104 A104
337 RTL World RTL2 dvbs 12187 27500 h 0 0 P46:166:68:128 A128
338 RTL World SUPER RTL dvbs 12187 27500 h 0 0 P45:165:65:120 A120
339 RTL SUPER RTL CH dvbs 12187 27500 h 0 0 P52:172:82:145 A145
340 RTL World VOX dvbs 12187 27500 h 0 0 P47:167:71:136 A136
341 RTL RTLNITRO dvbs 12187 27500 h 0 0 P53:173:84:146 A146
342 RTL World Channel 21 dvbs 12187 27500 h 0 0 P41:168:70:137 A137
343 RTL World n-tv dvbs 12187 27500 h 0 0 P48:169:80:73 A73
344 CBC Channel 21 ALT dvbs 12187 27500 h 0 0 P49:168:70:137 A137
345 RTL RTL Austria dvbs 12226 27500 h 0 0 P200:201:203:202 A202
346 RTL VOX Austria dvbs 12226 27500 h 0 0 P300:301:303:302 A302
347 RTL RTL2 Austria dvbs 12226 27500 h 0 0 P400:401:403:402 A402
348 RTL SUPER RTL A dvbs 12226 27500 h 0 0 P500:501:503:502 A502
349 SES Astra Eurosport Deutschland dvbs 12226 27500 h 0 0 P280:101:102:103 A103
350 SES Astra HSE24 EXTRA dvbs 12226 27500 h 0 0 P259:512:576:660 A660
351 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
352 RTL VOX CH dvbs 12226 27500 h 0 0 P600:601:603:602 A602
353 CBC RTL CH dvbs 12226 27500 h 0 0 P610:611:614:612:613 A612:613
354 ARD SR Fernsehen dvbs 12265 27500 h 0 0 P1300:1301:1304:1302:1303 A1302:1303
355 ARD ARD-alpha dvbs 12265 27500 h 0 0 P1400:1401:1404:1402:1403:1406 A1402:1403:1406
356 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
357 Unknown Service 8625 dvbs 12324 27500 v 0 0 P1304:162:1912 A1912
358 CSAT MOSAIQUE dvbs 12324 27500 v 0 0 P1301:162:1912 A1912
359 CSAT MOSAIQUE dvbs 12324 27500 v 0 0 P1303:162:1912 A1912
360 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
361 Unknown Service 8615 dvbs 12324 27500 v 0 0 P1294:2047 A
362 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
363 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
364 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
365 CSAT PASS PINK X dvbs 12363 27500 v 0 0 P1345:2047 A
366 CSAT CANALPLAY dvbs 12363 27500 v 0 0 P1313:2047 A
367 CSAT CAMPUS dvbs 12363 27500 v 0 0 P1288:2047 A
368 CSAT CAMPUS dvbs 12363 27500 v 0 0 P1287:2047 A
369 CSAT PASS XXL DORCEL dvbs 12363 27500 v 0 0 P1342:2047 A
370 CSAT PASS SERIES dvbs 12363 27500 v 0 0 P1341:2047 A
371 CSAT CSAT A LA DEMANDE dvbs 12363 27500 v 0 0 P1308:2047 A
372 CSAT C+ A LA DEMANDE dvbs 12363 27500 v 0 0 P1285:2047 A
373 Unknown CANALPLAY dvbs 12363 27500 v 0 0 P1327:2049:2048 A2048
374 CSAT CANALPLAY VOD dvbs 12363 27500 v 0 0 P1311:2047 A
375 CSAT 6PLAY dvbs 12363 27500 v 0 0 P1310:2047 A
376 CSAT CSAT A LA DEMANDE dvbs 12363 27500 v 0 0 P1303:2047 A
377 CSAT C+ A LA DEMANDE dvbs 12363 27500 v 0 0 P1284:2047 A
378 CSAT LCP dvbs 12402 27500 v 0 0 P700:710:741:721 A721
379 CSAT ARTE dvbs 12402 27500 v 0 0 P1200:1210:1241:1221:1222:1224:1223 A1221:1222:1224:1223
380 CSAT LCP dvbs 12402 27500 v 0 0 P701:710:741:721 A721
381 CSAT ARTE dvbs 12402 27500 v 0 0 P1201:1210:1241:1221:1222:1224:1223 A1221:1222:1224:1223
382 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4050:4910 A
383 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4051:4910 A
384 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4052:4910 A
385 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4053:4910 A
386 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4054:4910 A
387 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4055:4910 A
388 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4056:4910 A
389 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4057:4910 A
390 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4058:4910 A
391 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4059:4910 A
392 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4060:4910 A
393 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4061:4910 A
394 Unknown DECODEUR dvbs 12402 27500 v 0 0 P4062:4910 A
395 Unknown Service 8763 dvbs 12402 27500 v 0 0 P4063:4910 A
396 Unknown Service 8764 dvbs 12402 27500 v 0 0 P4064:4910 A
397 ARD WDR Bielefeld dvbs 12421 27500 h 0 0 P300:501:504:502:503 A502:503
398 ARD WDR Dortmund dvbs 12421 27500 h 0 0 P400:501:504:502:503 A502:503
399 ARD WDR Düsseldorf dvbs 12421 27500 h 0 0 P500:501:504:502:503 A502:503
400 ARD WDR Essen dvbs 12421 27500 h 0 0 P600:501:504:502:503 A502:503
401 ARD WDR Münster dvbs 12421 27500 h 0 0 P700:501:504:502:503 A502:503
402 ARD WDR Siegen dvbs 12421 27500 h 0 0 P800:501:504:502:503 A502:503
403 ARD WDR HD Köln dvbs 12421 27500 h 0 0 P5500:5501:5504:5502:5503:5506 A5502:5503:5506
404 ARD WDR HD Bielefeld dvbs 12421 27500 h 0 0 P5510:5501:5504:5502:5503:5506 A5502:5503:5506
405 ARD WDR HD Dortmund dvbs 12421 27500 h 0 0 P5520:5501:5504:5502:5503:5506 A5502:5503:5506
406 ARD WDR HD Düsseldorf dvbs 12421 27500 h 0 0 P5530:5501:5504:5502:5503:5506 A5502:5503:5506
407 ARD WDR HD Essen dvbs 12421 27500 h 0 0 P5540:5501:5504:5502:5503:5506 A5502:5503:5506
408 ARD WDR HD Münster dvbs 12421 27500 h 0 0 P5550:5501:5504:5502:5503:5506 A5502:5503:5506
409 ARD WDR HD Siegen dvbs 12421 27500 h 0 0 P5560:5501:5504:5502:5503:5506 A5502:5503:5506
410 ARD Radio Bremen TV dvbs 12421 27500 h 0 0 P1200:1201:1204:1202 A1202
411 ARD WDR Test A dvbs 12421 27500 h 0 0 P1500:501:504:502:503 A502:503
412 BetaDigital ManouLenz.tv dvbs 12460 27500 h 0 0 P97:511:512 A512
413 BetaDigital EWTN katholisches TV dvbs 12460 27500 h 0 0 P100:1023:1024:1025 A1024:1025
414 BetaDigital QVC BEAUTY&STYLE dvbs 12460 27500 h 0 0 P102:1791:38:1792 A1792
415 BetaDigital joiz dvbs 12460 27500 h 0 0 P101:1279:1280 A1280
416 BetaDigital Sparhandy TV dvbs 12460 27500 h 0 0 P108:3071:3072 A3072
417 BetaDigital 1-2-3.tv dvbs 12460 27500 h 0 0 P105:2815:32:2816 A2816
418 BetaDigital ANIXE SD dvbs 12460 27500 h 0 0 P107:3311:3312 A3312
419 BetaDigital TLC dvbs 12460 27500 h 0 0 P103:1535:37:1536 A1536
420 ProSiebenSat.1 SIXX dvbs 12460 27500 h 0 0 P99:767:35:768 A768
421 BetaDigital Disney Channel dvbs 12460 27500 h 0 0 P115:2047:36:2048:2051 A2048:2051
422 BetaDigital QVC dvbs 12460 27500 h 0 0 P96:255:33:256 A256
423 BetaDigital Sonnenklar TV dvbs 12480 27500 v 0 0 P97:2303:40:2304 A2304
424 BetaDigital HSE24 dvbs 12480 27500 v 0 0 P104:1279:37:1280 A1280
425 BetaDigital mediasparTV Homeshopping dvbs 12480 27500 v 0 0 P106:1791:1792 A1792
426 BetaDigital REGIO TV dvbs 12480 27500 v 0 0 P107:2047:2048 A2048
427 BetaDigital TELE 5 dvbs 12480 27500 v 0 0 P99:1535:38:1536 A1536
428 BetaDigital DMAX dvbs 12480 27500 v 0 0 P108:3327:44:3328 A3328
429 BetaDigital EBRU TV dvbs 12480 27500 v 0 0 P109:2815:2816 A2816
430 BetaDigital HSE24 TREND dvbs 12480 27500 v 0 0 P110:3071:36:3072 A3072
431 BetaDigital AstroTV dvbs 12480 27500 v 0 0 P98:2559:2560 A2560
432 BetaDigital e8 television dvbs 12480 27500 v 0 0 P102:767:768 A768
433 BetaDigital MediaShop- Neuheiten dvbs 12480 27500 v 0 0 P100:255:256 A256
434 BetaDigital meinTVshop dvbs 12480 27500 v 0 0 P101:511:512 A512
435 BetaDigital SPORT1 dvbs 12480 27500 v 0 0 P103:1023:39:1024 A1024
436 M7 Group CD/TVV info&nieuws dvbs 12515 22000 h 0 0 P2116:525:8190:120 A120
437 Unknown Service 9298 dvbs 12522 22000 v 0 0 P1340:1010 A
438 Unknown Service 9205 dvbs 12522 22000 v 0 0 P1284:164:96 A96
439 ProSiebenSat.1 SAT.1 dvbs 12544 22000 h 0 0 P96:255:32:256:259 A256:259
440 ProSiebenSat.1 ProSieben dvbs 12544 22000 h 0 0 P97:511:33:512:515 A512:515
441 ProSiebenSat.1 kabel eins dvbs 12544 22000 h 0 0 P98:767:34:768 A768
442 ProSiebenSat.1 N24 dvbs 12544 22000 h 0 0 P99:1023:35:1024 A1024
443 ProSiebenSat.1 SAT.1 Gold dvbs 12544 22000 h 0 0 P100:1279:36:1280 A1280
444 ProSiebenSat.1 ProSieben MAXX dvbs 12544 22000 h 0 0 P101:1535:37:1536 A1536
445 ProSiebenSat.1 SAT.1 Bayern dvbs 12544 22000 h 0 0 P103:255:32:256:259 A256:259
446 ProSiebenSat.1 SAT.1 NRW dvbs 12544 22000 h 0 0 P104:255:32:256:259 A256:259
447 SES ASTRA QVC PLUS dvbs 12551 22000 v 0 0 P1060:168:146:144 A144
448 SES ASTRA QVC Deutschland dvbs 12551 22000 v 0 0 P1030:165:167:166 A166
449 SES ASTRA Bibel TV dvbs 12551 22000 v 0 0 P32:33:36:34 A34
450 SES ASTRA eUrotic dvbs 12551 22000 v 0 0 P47:460:470 A470
451 SES ASTRA BFM TV dvbs 12551 22000 v 0 0 P2170:2171:345:2172 A2172
452 SES ASTRA BFM TV dvbs 12551 22000 v 0 0 P2170:2171:345:2172 A2172
453 SES ASTRA BFM Business dvbs 12551 22000 v 0 0 P1059:39:38 A38
454 SES ASTRA CashTV dvbs 12551 22000 v 0 0 P1070:1071:1072 A1072
455 SES ASTRA 8 MONT-BLANC dvbs 12551 22000 v 0 0 P A
456 BetaDigital sonnenklar.TV HD dvbs2 12574 22000 h 0 0 P96:255:32:259 A259
457 BetaDigital Juwelo HD dvbs2 12574 22000 h 0 0 P99:1023:1024 A1024
458 BetaDigital pearl.tv HD Shop dvbs2 12574 22000 h 0 0 P100:1279:1280 A1280
459 BetaDigital TecTime TV dvbs2 12574 22000 h 0 0 P107:3071:3072 A3072
460 CSAT A LA DEMANDE dvbs 12581 22000 v 0 0 P1283:163:92 A92
461 SES ASTRA STB Comag dvbs 12603 22000 h 0 0 P7266 A
462 SES ASTRA Sky News Intl dvbs 12603 22000 h 0 0 P7290:1290:2290 A2290
463 ARD WDR Aachen dvbs 12603 22000 h 0 0 P3400:3401:3804:3402:3403 A3402:3403
464 ARD WDR Wuppertal dvbs 12603 22000 h 0 0 P3500:3401:3804:3402:3403 A3402:3403
465 ARD WDR Bonn dvbs 12603 22000 h 0 0 P3600:3401:3804:3402:3403 A3402:3403
466 ARD WDR Duisburg dvbs 12603 22000 h 0 0 P3700:3401:3804:3402:3403 A3402:3403
467 ARD WDR HD Aachen dvbs 12603 22000 h 0 0 P5600:5601:5604:5602:5603:5606 A5602:5603:5606
468 ARD WDR HD Wuppertal dvbs 12603 22000 h 0 0 P5610:5601:5604:5602:5603:5606 A5602:5603:5606
469 ARD WDR HD Bonn dvbs 12603 22000 h 0 0 P5620:5601:5604:5602:5603:5606 A5602:5603:5606
470 ARD WDR HD Duisburg dvbs 12603 22000 h 0 0 P5630:5601:5604:5602:5603:5606 A5602:5603:5606
471 MEDIA BROADCAST MEDIA BROADCAST - Test 7 dvbs 12633 22000 h 0 0 P100:1113:1114 A1114
472 MEDIA BROADCAST K-TV dvbs 12633 22000 h 0 0 P102:202:502:302 A302
473 MEDIA BROADCAST Deutsches Musik Fernsehen dvbs 12633 22000 h 0 0 P105:53:504:54 A54
474 MEDIA BROADCAST Lustkanal24 TV dvbs 12633 22000 h 0 0 P106:206:306 A306
475 MEDIA BROADCAST MEDIA BROADCAST - Test 6 dvbs 12633 22000 h 0 0 P107:1113:1114 A1114
476 MEDIA BROADCAST Sexy Club TV dvbs 12633 22000 h 0 0 P112:212:206:312 A312
477 MEDIA BROADCAST rhein main tv dvbs 12633 22000 h 0 0 P108:208:508:308 A308
478 MEDIA BROADCAST Deutsche Girls 24 TV dvbs 12633 22000 h 0 0 P115:215:206:315 A315
479 MEDIA BROADCAST Juwelo TV dvbs 12633 22000 h 0 0 P116:1041:1042 A1042
480 MEDIA BROADCAST Dreamgirls24 TV dvbs 12633 22000 h 0 0 P118:218:206:318 A318
481 MEDIA BROADCAST Erotiksat24 TV dvbs 12633 22000 h 0 0 P119:219:206:319 A319
482 MEDIA BROADCAST 123-Damenwahl dvbs 12633 22000 h 0 0 P120:220:206:320 A320
483 MEDIA BROADCAST MEDIA BROADCAST - Test 5 dvbs 12633 22000 h 0 0 P121:1113:1114 A1114
484 MEDIA BROADCAST Maennersache TV dvbs 12633 22000 h 0 0 P122:222:322 A322
485 MEDIA BROADCAST Date Line dvbs 12633 22000 h 0 0 P123:223:323 A323
486 MEDIA BROADCAST Fotohandy dvbs 12633 22000 h 0 0 P124:224:324 A324
487 MEDIA BROADCAST Mobile Sex dvbs 12633 22000 h 0 0 P125:225:325 A325
488 MEDIA BROADCAST SEX-Kontakte dvbs 12633 22000 h 0 0 P126:226:326 A326
489 MEDIA BROADCAST Eros TV dvbs 12633 22000 h 0 0 P127:227:206:327 A327
490 MEDIA BROADCAST Achtung Sexy TV dvbs 12633 22000 h 0 0 P128:228:206:328 A328
491 MEDIA BROADCAST Traumfrauen TV dvbs 12633 22000 h 0 0 P129:229:206:329 A329
492 MEDIA BROADCAST Heiss und Sexy TV dvbs 12633 22000 h 0 0 P130:230:206:330 A330
493 MEDIA BROADCAST Shop24Direct dvbs 12633 22000 h 0 0 P133:233:333 A333
494 MEDIA BROADCAST nice dvbs 12633 22000 h 0 0 P134:242:342 A342
495 MEDIA BROADCAST Babestation24 dvbs 12633 22000 h 0 0 P135:235:335 A335
496 MEDIA BROADCAST Fundorado TV dvbs 12633 22000 h 0 0 P136:236:336 A336
497 MEDIA BROADCAST EROTIKA TV - NEU! dvbs 12633 22000 h 0 0 P139:239:339 A339
498 MEDIA BROADCAST BunnyClub24 dvbs 12633 22000 h 0 0 P140:240:340 A340
499 MEDIA BROADCAST Clipmobile dvbs 12633 22000 h 0 0 P141:241:341 A341
500 MEDIA BROADCAST MEDIA BROADCAST - Test 4 dvbs 12633 22000 h 0 0 P142:1113:1114 A1114
501 MEDIA BROADCAST ALT - SUCHLAUF STARTEN dvbs 12633 22000 h 0 0 P143:53:504:54 A54
502 MEDIA BROADCAST multithek dvbs 12633 22000 h 0 0 P144:244 A
503 MEDIA BROADCAST MEDIA BROADCAST - Test 3 dvbs 12633 22000 h 0 0 P156:1113:1114 A1114
504 MEDIA BROADCAST MEDIA BROADCAST - Test 2 dvbs 12633 22000 h 0 0 P157:1113:1114 A1114
505 MEDIA BROADCAST MEDIA BROADCAST - Test 1 dvbs 12633 22000 h 0 0 P164:1113:1114 A1114
506 RTL RTL NITRO A dvbs 12662 22000 h 0 0 P1102:1020:1025:1021 A1021
507 ~ Welt der Wunder dvbs 12662 22000 h 0 0 P1103:1030:1031 A1031
508 ~ LT1-OOE dvbs 12662 22000 h 0 0 P1104:1040:1041 A1041
509 sevenonemedia sixx Austria dvbs 12662 22000 h 0 0 P1106:1060:1063:1061 A1061
510 ~ VISIT-X.tv dvbs 12662 22000 h 0 0 P1107:1070:1071 A1071
511 ServusTV ServusTV Deutschland dvbs 12662 22000 h 0 0 P1210:1110:1115:1111:1112 A1111:1112
512 ServusTV ServusTV Oesterreich dvbs 12662 22000 h 0 0 P1211:2110:2115:2111:2112 A2111:2112
513 ~ L-TV/TVM dvbs 12662 22000 h 0 0 P1213:2130:2131 A2131
514 ~ BTV dvbs 12662 22000 h 0 0 P1241:2410:2411 A2411
515 CSAT MULTISPORTS dvbs2 12669 22000 v 0 0 P1800 A
516 ORF HITRADIO OE3 dvbs 12692 22000 h 0 0 P1003:130:131 A131
517 ORF ORF2E dvbs 12692 22000 h 0 0 P1004:170:505:171 A171
518 ~ Service 13015 dvbs 12692 22000 h 0 0 P1005:150 A
519 ~ Service 13016 dvbs 12692 22000 h 0 0 P1006:150 A
520 ~ Service 13017 dvbs 12692 22000 h 0 0 P1007:150 A
521 ~ Folx TV dvbs 12692 22000 h 0 0 P1008:180:181 A181
522 ~ RiC dvbs 12692 22000 h 0 0 P1009:190:191 A191
523 GoTV gotv dvbs 12692 22000 h 0 0 P1021:3020:3021 A3021

View File

@ -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"
1 CATEGORY TITLE SYSTEM FREQ SR POL RADIO ENC PIDS TRACKS
2 Unknown Service 4410 dvbs 10719 27500 v 0 0 P1010:169:108 A108
3 CYFRA + 4fun.TV dvbs 10719 27500 v 0 0 P1004:163:516:92 A92
4 Arqiva Islam TV dvbs 10723 29900 h 0 0 P101:1001:1201 A1201
5 Arqiva Truth TV dvbs 10723 29900 h 0 0 P102:1002:1202 A1202
6 Arqiva RTPi dvbs 10723 29900 h 0 0 P103:1003:1103:1203 A1203
7 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
8 Arqiva Zagros dvbs 10723 29900 h 0 0 P170:1070:1270:1370 A1270:1370
9 Arqiva RTB Virgilio dvbs 10723 29900 h 0 0 P173:1073:1273 A1273
10 Arqiva Ariana Afghanistan dvbs 10723 29900 h 0 0 P174:1074:1274 A1274
11 Arqiva Andisheh TV dvbs 10723 29900 h 0 0 P175:1075:1275 A1275
12 Arqiva Hope Channel dvbs 10723 29900 h 0 0 P177:1077:1277 A1277
13 Arqiva IPN TV dvbs 10723 29900 h 0 0 P178:1078:1278 A1278
14 Arqiva ESTV dvbs 10723 29900 h 0 0 P179:1079:1279 A1279
15 Cyfrowy Polsat S.A. xxxVOD1 dvbs 10758 27500 v 0 0 P32 A
16 Cyfrowy Polsat S.A. xxxVOD2 dvbs 10758 27500 v 0 0 P32 A
17 SkyItalia Real Time +1 dvbs 10775 29900 h 0 0 P271:2516:2517:2518 A2517:2518
18 CYFRA + POLONIA1 dvbs 10796 27500 v 0 0 P1006:165:100 A100
19 CYFRA + TELE5 dvbs 10796 27500 v 0 0 P1005:164:96 A96
20 RRSat BVN dvbs 10815 27500 h 0 0 P1011:2011:3011 A3011
21 RRSat Rojhelat dvbs 10815 27500 h 0 0 P1022:2022:3022 A3022
22 RRSat KURDsat dvbs 10815 27500 h 0 0 P1018:2018:3018:4018 A3018:4018
23 RRSat HCTV dvbs 10815 27500 h 0 0 P1070:2070:3070 A3070
24 RRSat Somalisat dvbs 10815 27500 h 0 0 P1072:2072:3072 A3072
25 RRSat CNL dvbs 10815 27500 h 0 0 P1012:2012:3012 A3012
26 RRSat MKTV sat dvbs 10815 27500 h 0 0 P1019:2019:3019 A3019
27 RRSat Nasch TV dvbs 10815 27500 h 0 0 P1014:2014:3014 A3014
28 RRSat Soyuz TV dvbs 10815 27500 h 0 0 P1013:2013:3013 A3013
29 RRSat Vozrojdenie.tv dvbs 10815 27500 h 0 0 P1008:2008:3008 A3008
30 RRSat Fashion TV dvbs 10815 27500 h 0 0 P1015:2015:3015:4015 A3015:4015
31 RRSat VTV4 dvbs 10815 27500 h 0 0 P1021:2021:3021 A3021
32 RRSat Thai Global Network dvbs 10815 27500 h 0 0 P1020:2020:3020 A3020
33 RRSat 3ABN International dvbs 10815 27500 h 0 0 P1010:2010:3010 A3010
34 RRSat The Word Network dvbs 10815 27500 h 0 0 P1073:2073:3073 A3073
35 RRSat Kanal Hayat dvbs 10815 27500 h 0 0 P1076:2076:3076 A3076
36 RRSat Armenia TV dvbs 10815 27500 h 0 0 P1075:2075:3075 A3075
37 RRSat TVK dvbs 10815 27500 h 0 0 P1037:2037:3037 A3037
38 SkyItalia Nuvolari dvbs 10853 29900 h 0 0 P278:3116:3012:3117 A3117
39 SNRT Al Aoula Inter dvbs 10873 27500 v 0 0 P1024:1026:1027 A1027
40 SNRT Al Aoula Inter+L dvbs 10873 27500 v 0 0 P33:35:36 A36
41 SNRT Arriadia dvbs 10873 27500 v 0 0 P2560:2562:2563 A2563
42 SNRT Arrabiaa dvbs 10873 27500 v 0 0 P44:46:47 A47
43 SNRT Al Maghribia dvbs 10873 27500 v 0 0 P306:308:309 A309
44 SNRT Assadissa dvbs 10873 27500 v 0 0 P1536:1537:1538 A1538
45 SNRT Tamazight dvbs 10873 27500 v 0 0 P3840:3841:3842:3843 A3842:3843
46 Medi1 Medi1TV dvbs 10873 27500 v 0 0 P2048:2050:2049 A2049
47 Cyfrowy Polsat S.A. STARS.TV dvbs 10911 27500 v 0 0 P32:259:515 A515
48 Cyfrowy Polsat S.A. TVR HD dvbs 10911 27500 v 0 0 P32:262:518 A518
49 Eutelsat Eutelsat dvbs 10911 27500 v 0 0 P32 A
50 Cyfrowy Polsat S.A. TVR HD dvbs 10911 27500 v 0 0 P32:262:518 A518
51 Globecast UK Noursat dvbs 10949 27500 v 0 0 P5198:5101:5111 A5111
52 Globecast UK Al Hiwar dvbs 10949 27500 v 0 0 P266:6501:6511 A6511
53 Globecast UK DMC TV dvbs 10949 27500 v 0 0 P264:6801:6811:6812:6813:6814 A6811:6812:6813:6814
54 Globecast UK Miracle TV dvbs 10949 27500 v 0 0 P6998:6901:6911 A6911
55 Globecast UK iLike TV dvbs 10949 27500 v 0 0 P7198:7101:111 A111
56 Globecast UK Al Forat dvbs 10949 27500 v 0 0 P268:7201:7211 A7211
57 Globecast UK Al Fady dvbs 10949 27500 v 0 0 P7398:7301:7311 A7311
58 Globecast UK Sat 7 Pars dvbs 10949 27500 v 0 0 P7898:7801:7811 A7811
59 Globecast UK Velayat TV dvbs 10949 27500 v 0 0 P7998:7901:7911 A7911
60 Globecast UK Karbala Satellite Channel dvbs 10949 27500 v 0 0 P6398:6301:6311:6312 A6311:6312
61 Globecast UK Al Maaref dvbs 10949 27500 v 0 0 P6698:6601:6611 A6611
62 Globecast UK Ahl E Bait dvbs 10949 27500 v 0 0 P6298:6201:6211 A6211
63 RAI Rai 1 dvbs 10992 27500 v 0 0 P1104:512:576:650:694 A650:694
64 RAI Rai 2 dvbs 10992 27500 v 0 0 P1105:513:577:651:695:696 A651:695:696
65 RAI Rai 3 dvbs 10992 27500 v 0 0 P1106:514:578:652:697 A652:697
66 RAI Rai News dvbs 10992 27500 v 0 0 P1107:520:690 A690
67 Telespazio Test_Enc 01 dvbs 11013 27500 h 0 0 P100:101:102 A102
68 Telespazio Test_Enc 02 dvbs 11013 27500 h 0 0 P110:111:112 A112
69 Telespazio Test_Enc 03 dvbs 11013 27500 h 0 0 P120:121:122 A122
70 Telespazio Test_Enc 04 dvbs 11013 27500 h 0 0 P130:131:132 A132
71 GlobeCast TV CORAN dvbs 11034 27500 v 0 0 P100:120:130 A130
72 GlobeCast TV TAMAZIGHT dvbs 11034 27500 v 0 0 P200:220:230 A230
73 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
74 GlobeCast Shanson TV dvbs 11034 27500 v 0 0 P400:420:430 A430
75 GlobeCast 2M Maroc dvbs 11034 27500 v 0 0 P500:520:530 A530
76 GlobeCast CCTV-News dvbs 11034 27500 v 0 0 P600:620:630 A630
77 GlobeCast Ganj E Hozour dvbs 11034 27500 v 0 0 P1700:1720:1730 A1730
78 GlobeCast RTR dvbs 11034 27500 v 0 0 P800:820:830 A830
79 GlobeCast Rossiya 24 dvbs 11034 27500 v 0 0 P1000:1020:1030 A1030
80 GlobeCast TRT Turk dvbs 11034 27500 v 0 0 P1200:1220:1240:1230 A1230
81 GlobeCast Al Jazeera Intl dvbs 11034 27500 v 0 0 P1400:1420:1430 A1430
82 GlobeCast SHANT TV dvbs 11034 27500 v 0 0 P700:720:710:730 A730
83 MEDIA BROADCAST RTL 2 CH dvbs 11054 27500 h 0 0 P400:410:440:420 A420
84 MEDIA BROADCAST ZDF dvbs 11054 27500 h 0 0 P1033:570:572:571 A571
85 MEDIA BROADCAST nex1 dvbs 11054 27500 h 0 0 P2000:2010:2020 A2020
86 MEDIA BROADCAST Persian Star 2 dvbs 11054 27500 h 0 0 P2100:2110:2120 A2120
87 MEDIA BROADCAST MI-TV dvbs 11054 27500 h 0 0 P56:57:58 A58
88 MEDIA BROADCAST Al Beladi TV dvbs 11054 27500 h 0 0 P2700:2710:2720 A2720
89 MEDIA BROADCAST IRAN-FMTV dvbs 11054 27500 h 0 0 P3000:3010:3020 A3020
90 MEDIA BROADCAST MB SmartCast Test 2 dvbs 11054 27500 h 0 0 P3100:3110:3120 A3120
91 MEDIA BROADCAST TMTV dvbs 11054 27500 h 0 0 P3200:3210:3220 A3220
92 MEDIA BROADCAST IRAN-MNTV dvbs 11054 27500 h 0 0 P3500:3510:3520 A3520
93 MEDIA BROADCAST Iran Music dvbs 11054 27500 h 0 0 P3600:3610:3620 A3620
94 MEDIA BROADCAST MB SmartCast Test 1 dvbs 11054 27500 h 0 0 P3900:3910:3920 A3920
95 MEDIA BROADCAST 4 dvbs 11054 27500 h 0 0 P4400:4410:4420 A4420
96 MEDIA BROADCAST Persian Star 1 dvbs 11054 27500 h 0 0 P4900:4910:4920 A4920
97 Globecast UK R1 dvbs 11117 27500 v 0 0 P6698:6601:6611 A6611
98 GlobeCast UK Loveworld dvbs 11117 27500 v 0 0 P6598:6501:6511 A6511
99 GlobeCast UK CNBC PE Hot dvbs 11117 27500 v 0 0 P6998:6901:6999:6911 A6911
100 Arqiva Bloomberg European TV dvbs 11137 27500 h 0 0 P265:3502:3582:3622 A3622
101 Arqiva ITN dvbs 11137 27500 h 0 0 P263:3503:3623 A3623
102 Arqiva TV5MONDE FBS dvbs 11137 27500 h 0 0 P717:3521:3601:3641 A3641
103 Arqiva TV5MONDE EUROPE dvbs 11137 27500 h 0 0 P719:3522:3602:3642 A3642
104 Arqiva Kurdistan TV dvbs 11137 27500 h 0 0 P258:3526:3646 A3646
105 Arqiva NHK World dvbs 11137 27500 h 0 0 P259:3527:3647 A3647
106 Arqiva GEM TV dvbs 11137 27500 h 0 0 P33:3533:3653 A3653
107 Arqiva AB Channel dvbs 11137 27500 h 0 0 P274:3534:3614:3654 A3654
108 Arqiva SRI TV dvbs 11137 27500 h 0 0 P275:3535:3655 A3655
109 Arqiva Fadak TV dvbs 11137 27500 h 0 0 P281:3541:3661 A3661
110 Arqiva Wesal TV dvbs 11137 27500 h 0 0 P282:3542:3662 A3662
111 Ariva Gioielli per Tutti dvbs 11137 27500 h 0 0 P283:3543:3663 A3663
112 Arqiva IRAN B MARZ dvbs 11137 27500 h 0 0 P285:3545:3665 A3665
113 Telespazio Al Malakoot dvbs 11179 27500 h 0 0 P1051:161:162 A162
114 Telespazio Al Karma TV-ME dvbs 11179 27500 h 0 0 P1052:640:625 A625
115 Harmonic Channel One Tv dvbs 11179 27500 h 0 0 P165:166:167 A167
116 Telespazio TELEPADREPIO dvbs 11179 27500 h 0 0 P1070:650:651 A651
117 Telespazio Informazione TV dvbs 11179 27500 h 0 0 P1015:620:621 A621
118 Telespazio Made in Italy 1 dvbs 11179 27500 h 0 0 P1016:1490:1491 A1491
119 Telespazio GBR dvbs 11179 27500 h 0 0 P1049:710:711 A711
120 Telespazio CTV AP dvbs 11179 27500 h 0 0 P1551:554:564 A564
121 Telespazio STERK TV dvbs 11179 27500 h 0 0 P1724:821:822 A822
122 Telespazio TRSP dvbs 11179 27500 h 0 0 P1053:630:631 A631
123 Telespazio Telemarket dvbs 11179 27500 h 0 0 P1055:770:771 A771
124 Telespazio ERDE UND MENSCH dvbs 11179 27500 h 0 0 P1056:780:781 A781
125 Harmonic Made in Italy dvbs 11179 27500 h 0 0 P1057:1490:1491 A1491
126 Telespazio Kanal Hayat dvbs 11179 27500 h 0 0 P1089:530:531 A531
127 Telespazio Payam-E-Afghan dvbs 11179 27500 h 0 0 P1081:540:541 A541
128 Harmonic RTA dvbs 11179 27500 h 0 0 P1083:560:561 A561
129 Telespazio Armenia TV dvbs 11179 27500 h 0 0 P1084:570:571 A571
130 Telespazio ACM Channel dvbs 11179 27500 h 0 0 P1085:340:341 A341
131 Telespazio Marjaeyat dvbs 11179 27500 h 0 0 P1063:580:581 A581
132 Telespazio Kentron Tv dvbs 11179 27500 h 0 0 P1065:2018:3018 A3018
133 Telespazio Khatereh dvbs 11179 27500 h 0 0 P1041:512:612 A612
134 Telespazio Ronahi TV dvbs 11179 27500 h 0 0 P1725:725:726 A726
135 Telespazio Daring tv! 133 dvbs 11179 27500 h 0 0 P1761 A
136 RRSat Pro TV International dvbs 11200 27500 v 0 0 P1001:2001:3001 A3001
137 RRSat AL FAYHAA dvbs 11200 27500 v 0 0 P270:271:272 A272
138 RRSat Mohabat dvbs 11200 27500 v 0 0 P372:370:371 A371
139 RRSat CGN dvbs 11200 27500 v 0 0 P1004:2004:3004 A3004
140 RRSat Gali Kurdistan TV dvbs 11200 27500 v 0 0 P1005:2005:3005:4005 A3005:4005
141 RRSat MTA International dvbs 11200 27500 v 0 0 P2560:366:367 A367
142 RRSat Dieu TV dvbs 11200 27500 v 0 0 P542:540:541 A541
143 RRSat CBC TV dvbs 11200 27500 v 0 0 P1008:2008:3008 A3008
144 RRSat AZTV dvbs 11200 27500 v 0 0 P1009:2009:3009 A3009
145 RRSat SonLife Broadcasting Network dvbs 11200 27500 v 0 0 P1015:2015:3015 A3015
146 RRSat Eurotic TV dvbs 11200 27500 v 0 0 P411:412:413 A413
147 RRSat Belarus TV dvbs 11200 27500 v 0 0 P1022:2022:3022 A3022
148 RRSat Movie1 dvbs 11200 27500 v 0 0 P1026:2026:3026 A3026
149 RRSat Altarek - The Way TV dvbs 11200 27500 v 0 0 P1050:2050:3050 A3050
150 RRsat Somaliland National TV dvbs 11200 27500 v 0 0 P1055:2055:3055 A3055
151 RRSat Suryoyo Sat dvbs 11200 27500 v 0 0 P1060:2060:3060 A3060
152 RRSat GUNAZ TV dvbs 11200 27500 v 0 0 P1063:2063:3063 A3063
153 RRSat Rainbow dvbs 11200 27500 v 0 0 P1066:2066:3066 A3066
154 RRSat negah e shoma dvbs 11200 27500 v 0 0 P1067:2067:3067 A3067
155 RRSat PNTV dvbs 11200 27500 v 0 0 P1068:2068:3068 A3068
156 RRSat World Fashion Channel dvbs 11200 27500 v 0 0 P1069:2069:3069 A3069
157 TandbergTV Cancao Nova dvbs 11240 27500 v 0 0 P1050:720:721 A721
158 Eutelsat France 24 dvbs 11240 27500 v 0 0 P244:245:246 A246
159 Eutelsat France 24 dvbs 11240 27500 v 0 0 P247:248:249 A249
160 Eutelsat A3 dvbs 11240 27500 v 0 0 P3940:3941:3942 A3942
161 Unknown Canal Algerie dvbs 11240 27500 v 0 0 P3950:3951:3952 A3952
162 Al Jazeera JSC Sports Global dvbs 11296 27500 h 0 0 P252:6302:6303:6305 A6303:6305
163 Arqiva T.TV dvbs 11317 27500 v 0 0 P124:1024:1224 A1224
164 Arqiva Marjaeyat dvbs 11317 27500 v 0 0 P125:1025:1225 A1225
165 Arqiva AVA MOVIE dvbs 11317 27500 v 0 0 P126:1026:1226 A1226
166 Arqiva Rudaw dvbs 11317 27500 v 0 0 P127:1027:1227:1327 A1227:1327
167 Arqiva Russia Today dvbs 11317 27500 v 0 0 P129:1029:1229 A1229
168 Arqiva Imam Hussein 3 dvbs 11317 27500 v 0 0 P130:1030:1230 A1230
169 Arqiva Russia Al-Yaum dvbs 11317 27500 v 0 0 P132:1032:1232 A1232
170 Arqiva Perspolis TV dvbs 11317 27500 v 0 0 P33:1033:1233 A1233
171 Arqiva Ghasedak TV dvbs 11317 27500 v 0 0 P135:1035:1235 A1235
172 Arqiva Tik TV dvbs 11317 27500 v 0 0 P136:1036:1236 A1236
173 Unknown Imam Hussein TV dvbs 11317 27500 v 0 0 P137:1037:1237 A1237
174 Arqiva Baqi TV dvbs 11317 27500 v 0 0 P138:1038:1238 A1238
175 Arqiva Al-Hayat dvbs 11317 27500 v 0 0 P139:1039:1239 A1239
176 Arqiva Manoto 1 dvbs 11317 27500 v 0 0 P150:1050:1250 A1250
177 Harmonic Pars TV dvbs 11317 27500 v 0 0 P160:1060:1260 A1260
178 Arqiva Elite Shopping dvbs 11317 27500 v 0 0 P170:1070:1270 A1270
179 Arqiva Liguria TV dvbs 11317 27500 v 0 0 P171:1071:1271 A1271
180 Arqiva ASO SAT dvbs 11317 27500 v 0 0 P172:1072:1272 A1272
181 Arqiva Dance TV dvbs 11317 27500 v 0 0 P173:1073:1273 A1273
182 Arqiva Roma Sat dvbs 11317 27500 v 0 0 P174:1073:1273 A1273
183 Arqiva Mondo Shop dvbs 11317 27500 v 0 0 P175:1073:1273 A1273
184 Arqiva Mare TV dvbs 11317 27500 v 0 0 P176:1073:1273 A1273
185 Arqiva Dipre Art Channel dvbs 11317 27500 v 0 0 P177:1073:1273 A1273
186 Arqiva Il Sole dvbs 11317 27500 v 0 0 P191 A
187 ARQIVA Service-1 HD dvbs 11334 27500 h 0 0 P301:1001:1002 A1002
188 TVN Eska TV dvbs 11393 27500 v 0 0 P264:516:690 A690
189 TVN Mango 24 dvbs 11393 27500 v 0 0 P265:517:581:700 A700
190 ITI MANGO 24_ dvbs 11393 27500 v 0 0 P288:517:581:700 A700
191 TVN Upload dvbs 11393 27500 v 0 0 P257 A
192 Satlink VENETO LINK dvbs 11471 27500 v 0 0 P43:851:852 A852
193 Satlink Dunamis TV dvbs 11471 27500 v 0 0 P150:151:152 A152
194 Satlink FUEGO TV dvbs 11471 27500 v 0 0 P1663:1661:1662 A1662
195 Satlink RETECONOMY dvbs 11471 27500 v 0 0 P49:1801:71 A71
196 Satlink TELECOLORE dvbs 11471 27500 v 0 0 P70:1811:1812 A1812
197 Satlink Somali Channel dvbs 11471 27500 v 0 0 P272:273:276 A276
198 Satlink LA NUOVA TV dvbs 11471 27500 v 0 0 P2180:851:852 A852
199 Harmonic BLU LIVE dvbs 11471 27500 v 0 0 P44:851:852 A852
200 Satlink LINK TP 14 dvbs 11471 27500 v 0 0 P1650:851:852 A852
201 Satlink BLU dvbs 11471 27500 v 0 0 P850:851:852 A852
202 Satlink DIRETTA TV dvbs 11471 27500 v 0 0 P1870:1861:1862 A1862
203 Satlink Napoli Mia dvbs 11471 27500 v 0 0 P63:520:521 A521
204 Satlink BLU SHOP dvbs 11471 27500 v 0 0 P1640:851:852 A852
205 Satlink TELENOVA dvbs 11471 27500 v 0 0 P75:1841:1842 A1842
206 Satlink I24 News English dvbs 11471 27500 v 0 0 P2040:2041:2042 A2042
207 Satlink SARSAT TV dvbs 11471 27500 v 0 0 P2158:2143:2142 A2142
208 Satlink SILVER TV dvbs 11471 27500 v 0 0 P48:1661:1662 A1662
209 Satlink ONE dvbs 11471 27500 v 0 0 P1755:1756:1757 A1757
210 Satlink JUSTICE TV dvbs 11471 27500 v 0 0 P243:851:852 A852
211 Satlink JUST ONE dvbs 11471 27500 v 0 0 P1865:1756:1757 A1757
212 Satlink Kalsan TV dvbs 11471 27500 v 0 0 P400:401:402 A402
213 Satlink CIAO SKY 899 dvbs 11471 27500 v 0 0 P1860:1861:1862 A1862
214 Satlink LA9 dvbs 11471 27500 v 0 0 P2160:2161:2162 A2162
215 Satlink FISHING TV dvbs 11471 27500 v 0 0 P50:1745:1746 A1746
216 Satlink EURSAT dvbs 11471 27500 v 0 0 P1649:1661:1662 A1662
217 Satlink TVA VICENZA dvbs 11471 27500 v 0 0 P2170:2171:2172 A2172
218 Satlink SUPERFLUO dvbs 11471 27500 v 0 0 P1710:1861:1862 A1862
219 Satlink STAR TV dvbs 11471 27500 v 0 0 P140:141:142 A142
220 Satlink NEW ONE dvbs 11471 27500 v 0 0 P1730:1756:1757 A1757
221 Satlink I24 News Arabic dvbs 11471 27500 v 0 0 P2050:2051:2052 A2052
222 Satlink VENUS TV dvbs 11471 27500 v 0 0 P1648:1661:1662 A1662
223 Satlink SUPER dvbs 11471 27500 v 0 0 P2010:1861:1862 A1862
224 Satlink ETV dvbs 11471 27500 v 0 0 P130:131:132 A132
225 Satlink Royal Somali TV dvbs 11471 27500 v 0 0 P83:82:37 A37
226 Satlink LAZIO CHANNEL dvbs 11471 27500 v 0 0 P73:1661:1662 A1662
227 Satlink CHAT dvbs 11471 27500 v 0 0 P1800:1861:1862 A1862
228 Satlink PIU TV dvbs 11471 27500 v 0 0 P1910:1861:1862 A1862
229 Satlink RETE ASTE dvbs 11471 27500 v 0 0 P72:1831:1832 A1832
230 Satlink LINK dvbs 11471 27500 v 0 0 P2150:2151:2152 A2152
231 nc+ TV POLONIA dvbs 11488 27500 h 0 0 P1001:160:500:80 A80
232 nc+ TV PULS dvbs 11488 27500 h 0 0 P1042:171:512:124:125 A124:125
233 nc+ TVP Kultura dvbs 11488 27500 h 0 0 P1043:172:513:128 A128
234 nc+ TVS dvbs 11488 27500 h 0 0 P1002:161:508:84 A84
235 nc+ TVP Kultura dvbs 11488 27500 h 0 0 P1013:172:513:128 A128
236 nc+ TV PULS dvbs 11488 27500 h 0 0 P1012:171:512:124:125 A124:125
237 M-Three satcom QVC dvbs 11541 22000 v 0 0 P102:183:182 A182
238 M-Three satcom EMPTY SERVICE dvbs 11541 22000 v 0 0 P257 A
239 M-Three satcom POLO TV dvbs 11541 22000 v 0 0 P3623:6230:6231 A6231
240 M-Three satcom POLO TV-1 dvbs 11541 22000 v 0 0 P3615:6230:6231 A6231
241 M-Three satcom Romauno dvbs 11541 22000 v 0 0 P3628:6280:6281 A6281
242 M-Three satcom DAS ERSTE dvbs 11541 22000 v 0 0 P3622:300:302:301 A301
243 TIMB LA7ondemand dvbs 11541 22000 v 0 0 P363 A
244 TIMB CUBOVISION dvbs 11541 22000 v 0 0 P3602 A
245 TIMB HSE24 dvbs 11541 22000 v 0 0 P280:6250:6251 A6251
246 TIMB DMAX dvbs 11541 22000 v 0 0 P250:6270:6272:6271 A6271
247 RRSat Wesal Haq dvbs 11566 27500 h 0 0 P1014:2014:3014 A3014
248 OVERON TBN Europe dvbs 11566 27500 h 0 0 P1801:8001:8101 A8101
249 OVERON TBN ITALIA dvbs 11566 27500 h 0 0 P1803:8103:8003 A8003
250 OVERON Church Channel dvbs 11566 27500 h 0 0 P1804:8004:8104 A8104
251 OVERON JCTV dvbs 11566 27500 h 0 0 P1805:8005:8105 A8105
252 Unnamed EL SHAFAA dvbs 11566 27500 h 0 0 P1806:8006:8106 A8106
253 Overon TBN Russia dvbs 11566 27500 h 0 0 P1807:8007:8107 A8107
254 OVERON Smile of a Child dvbs 11566 27500 h 0 0 P1808:8008:8108 A8108
255 TBNFARSI NEJAT TV dvbs 11566 27500 h 0 0 P1809:8009:8109 A8109
256 Scopus Pars TV dvbs 11566 27500 h 0 0 P1810:8010:8110 A8110
257 Unknown Service 811 dvbs 11566 27500 h 0 0 P1811:8011:8111 A8111
258 Overon ChildRussia dvbs 11566 27500 h 0 0 P1813:8013:8113 A8113
259 RRSat NOOR TV dvbs 11566 27500 h 0 0 P1815:8015:8115 A8115
260 RRSat Shabakeh7 dvbs 11566 27500 h 0 0 P1817:8017:8117 A8117
261 RRSat UNIVERSAL SOMALI TV dvbs 11566 27500 h 0 0 P1821:8021:8121 A8121
262 RRSAT Orient dvbs 11566 27500 h 0 0 P1822:8022:8122 A8122
263 PITCOMM IRAN E ARYAEE TV dvbs 11566 27500 h 0 0 P1823:8023:8123 A8123
264 GlobeCast Ahl Al Bhait dvbs 11585 27500 v 0 0 P6126:1323:1333 A1333
265 GlobeCast 1+1 International dvbs 11585 27500 v 0 0 P6125:1322:1332 A1332
266 GlobeCast News 7 dvbs 11585 27500 v 0 0 P1227:1527:1528 A1528
267 GlobeCast DAYSTAR TV dvbs 11585 27500 v 0 0 P1204:1234:1244 A1244
268 GlobeCast .Viva L'Italia Channel dvbs 11585 27500 v 0 0 P516:1336:1346 A1346
269 GlobeCast MADE IN ITALY dvbs 11585 27500 v 0 0 P516:1336:1346 A1346
270 GlobeCast KICC TV dvbs 11585 27500 v 0 0 P601:1481:1482 A1482
271 GlobeCast Ariana TV dvbs 11585 27500 v 0 0 P506:1361:1362 A1362
272 GlobeCast TISHK TV dvbs 11585 27500 v 0 0 P1214:1414:1514 A1514
273 GlobeCast EWTN UK dvbs 11585 27500 v 0 0 P5008:1441:1442 A1442
274 TandbergTV RBL.TV dvbs 11585 27500 v 0 0 P1211:1411:1511 A1511
275 GLOBECAST SAFO TV dvbs 11585 27500 v 0 0 P A
276 GlobeCast Loveworld TV dvbs 11585 27500 v 0 0 P A
277 GlobeCast TV9 dvbs 11585 27500 v 0 0 P A
278 GlobeCast !FunSpice dvbs 11585 27500 v 0 0 P A
279 MEDIA BROADCAST MB SmartCast Test 9 dvbs 11604 27500 h 0 0 P500:3910:3920 A3920
280 MEDIA BROADCAST DW Europe dvbs 11604 27500 h 0 0 P700:1000:1003:1001 A1001
281 MEDIA BROADCAST Arab-Girls.TV dvbs 11604 27500 h 0 0 P1100:1110:1075:1120 A1120
282 MEDIA BROADCAST 4play games dvbs 11604 27500 h 0 0 P1200:2410:1075:1220 A1220
283 MEDIA BROADCAST arab-69.tv dvbs 11604 27500 h 0 0 P1400:1075:1076 A1076
284 MEDIA BROADCAST ' ' Hot Arab Sex dvbs 11604 27500 h 0 0 P1600:1080:1075:1081 A1081
285 MEDIA BROADCAST 121 Chat dvbs 11604 27500 h 0 0 P1700:1086:1075:1087 A1087
286 MEDIA BROADCAST Arab-Jins dvbs 11604 27500 h 0 0 P1800:1090:1075:1091 A1091
287 MEDIA BROADCAST Love TV dvbs 11604 27500 h 0 0 P1810:1093:1075:1094 A1094
288 MEDIA BROADCAST Lebnaniat TV. dvbs 11604 27500 h 0 0 P1820:1097:1075:1098 A1098
289 MEDIA BROADCAST Arab XXX dvbs 11604 27500 h 0 0 P1900:1075:1920 A1920
290 MEDIA BROADCAST 7armanat Nar dvbs 11604 27500 h 0 0 P2000:51:1075:52 A52
291 MEDIA BROADCAST India Girls dvbs 11604 27500 h 0 0 P2100:1080:1075:54 A54
292 MEDIA BROADCAST +18 Love Girls dvbs 11604 27500 h 0 0 P2200:1097:1075:2220 A2220
293 MEDIA BROADCAST Sexy love girls dvbs 11604 27500 h 0 0 P2300:2310:1075:2320 A2320
294 MEDIA BROADCAST .arab babes dvbs 11604 27500 h 0 0 P2400:2410:1075:2420 A2420
295 MEDIA BROADCAST MB SmartCast Test 2 dvbs 11604 27500 h 0 0 P2500:3910:3920 A3920
296 MEDIA BROADCAST MB SmartCast Test 8 dvbs 11604 27500 h 0 0 P2700:3910:3920 A3920
297 MEDIA BROADCAST LOMBARDIA SAT dvbs 11604 27500 h 0 0 P2800:2810:2820 A2820
298 MEDIA BROADCAST KLIKSAT.farhad dvbs 11604 27500 h 0 0 P2900:2910:2920 A2920
299 MEDIA BROADCAST MB SmartCast Test 12 dvbs 11604 27500 h 0 0 P3200:3910:3920 A3920
300 MEDIA BROADCAST MB SmartCast Test 14 dvbs 11604 27500 h 0 0 P3000:3910:3920 A3920
301 MEDIA BROADCAST MB SmartCast Test 15 dvbs 11604 27500 h 0 0 P3600:3910:3920 A3920
302 MEDIA BROADCAST TVRUS dvbs 11604 27500 h 0 0 P3700:3710:3720 A3720
303 MEDIA BROADCAST Juwelo dvbs 11604 27500 h 0 0 P3800:3810:3820 A3820
304 MEDIA BROADCAST MB SmartCast Test 1 dvbs 11604 27500 h 0 0 P3900:3910:3920 A3920
305 MEDIA BROADCAST MB SmartCast Test 3 dvbs 11604 27500 h 0 0 P4200:3910:3920 A3920
306 MEDIA BROADCAST MB SmartCast Test 4 dvbs 11604 27500 h 0 0 P4300:3910:3920 A3920
307 MEDIA BROADCAST MB SmartCast Test 7 dvbs 11604 27500 h 0 0 P4500:3910:3920 A3920
308 MEDIA BROADCAST MB SmartCast Test 5 dvbs 11604 27500 h 0 0 P4700:3910:3920 A3920
309 MEDIA BROADCAST MB SmartCast Test 6 dvbs 11604 27500 h 0 0 P4800:3910:3920 A3920
310 MEDIA BROADCAST MB SmartCast Test 16 dvbs 11604 27500 h 0 0 P5100:3910:3920 A3920
311 MEDIA BROADCAST Persian Movie dvbs 11604 27500 h 0 0 P6000:6010:6020 A6020
312 MEDIA BROADCAST MB SmartCast Test 13 dvbs 11604 27500 h 0 0 P6200:3910:3920 A3920
313 MEDIA BROADCAST MB SmartCast Test 10 dvbs 11604 27500 h 0 0 P6400:3910:3920 A3920
314 MEDIA BROADCAST MB SmartCast Test 11 dvbs 11604 27500 h 0 0 P6500:3910:3920 A3920
315 MEDIA BROADCAST IPN TV dvbs 11604 27500 h 0 0 P A
316 GLOBECAST Pianeta TV dvbs 11623 27500 v 0 0 P201:221:1024:241 A241
317 GlobeCast MEDIATEXT.IT dvbs 11623 27500 v 0 0 P202:222:242 A242
318 Unknown ARTE dvbs 11623 27500 v 0 0 P203:223:283:233:243:263:273 A233:243:263:273
319 GlobeCast RTL 102.5 TV dvbs 11623 27500 v 0 0 P203:224:244 A244
320 GlobeCast Telepiù Channel dvbs 11623 27500 v 0 0 P202:222:242 A242
321 GlobeCast ITALIA_CHANNEL dvbs 11623 27500 v 0 0 P206:226:246 A246
322 Unknown TV_ROMANIA dvbs 11623 27500 v 0 0 P207:227:287:247 A247
323 GlobeCast Carisma_TV dvbs 11623 27500 v 0 0 P4217:221:1024:241 A241
324 GlobeCast ARTE OGGI TV dvbs 11623 27500 v 0 0 P202:222:242 A242
325 GlobeCast El Chourouk dvbs 11623 27500 v 0 0 P210:230:250 A250
326 GlobeCast Al Atlas dvbs 11623 27500 v 0 0 P211:231:251 A251
327 Unknown Arirang World dvbs 11623 27500 v 0 0 P205:225:245 A245
328 GlobeCast NESSMA MAGHREB MOYEN ORIENT dvbs 11623 27500 v 0 0 P208:228:248 A248
329 GlobeCast ETV Emilia R. dvbs 11623 27500 v 0 0 P1202:221:241 A241
330 Unknown ARTE dvbs 11623 27500 v 0 0 P1203:223:283:233:243:263:273 A233:243:263:273
331 GlobeCast RTG TV dvbs 11623 27500 v 0 0 P335:235:2135:2137:2138 A2135:2137:2138
332 GlobeCast METROSAT dvbs 11623 27500 v 0 0 P738:221:241 A241
333 GlobeCast Mediterraneo Sat dvbs 11623 27500 v 0 0 P706:226:246 A246
334 GlobeCast QUORE TV dvbs 11623 27500 v 0 0 P747:226:246 A246
335 GlobeCast Reality TV dvbs 11623 27500 v 0 0 P748:221:1024:241 A241
336 BSS KOMALA TV dvbs 11642 27500 h 0 0 P1030:1031:1032 A1032
337 Unknown AAA SPORT dvbs 11642 27500 h 0 0 P1040:561:562 A562
338 BSS Face 1 dvbs 11642 27500 h 0 0 P1050:1051:1052 A1052
339 BSS AAA Family dvbs 11642 27500 h 0 0 P560:561:562 A562
340 BSS AAA Music dvbs 11642 27500 h 0 0 P1070:1071:1072 A1072
341 BSS KALEMEH FARSI dvbs 11642 27500 h 0 0 P1200:1201:1202 A1202
342 BSS Al Magharibia dvbs 11642 27500 h 0 0 P1250:1251:1252 A1252
343 BSS TV DISCO dvbs 11642 27500 h 0 0 P1260:1261:1262 A1262
344 BSS !mwala3a 3lik dvbs 11642 27500 h 0 0 P1270:1271:1272 A1272
345 BSS Anta 7iate dvbs 11642 27500 h 0 0 P1280:1281:1282 A1282
346 BSS Iran Fun dvbs 11642 27500 h 0 0 P1290:1291:1292 A1292
347 BSS Music Box Russia dvbs 11642 27500 h 0 0 P1300:1301:1302 A1302
348 BSS GOD TV dvbs 11642 27500 h 0 0 P34:1321:1322 A1322
349 BSS nar elhob dvbs 11642 27500 h 0 0 P1340:1271:1272 A1272
350 BSS lo3b whob dvbs 11642 27500 h 0 0 P1360:1281:1282 A1282
351 BSS GDG Channel dvbs 11642 27500 h 0 0 P1430:1431:1432 A1432
352 Unknown Wedding TV dvbs 11642 27500 h 0 0 P1440:1441:1442 A1442
353 Unknown Kurd Channel dvbs 11642 27500 h 0 0 P1450:1451:1452 A1452
354 BSS Hope Channel dvbs 11642 27500 h 0 0 P1470:1471:1472:1473 A1472:1473
355 BSS RVS Italy dvbs 11642 27500 h 0 0 P1610:1471:1473 A1473
356 BSS VENETO LINK dvbs 11642 27500 h 0 0 P1620:1621:1622 A1622
357 BSS ARTE CHIC dvbs 11642 27500 h 0 0 P1630:1621:1622 A1622
358 BSS SNTV dvbs 11642 27500 h 0 0 P1700:1701:1702 A1702
359 Telespazio Punto Sat dvbs 11662 27500 v 0 0 P1695:334:335 A335
360 Telespazio Challenger dvbs 11662 27500 v 0 0 P1912:490:491:493 A491:493
361 Telespazio Challenger dvbs 11662 27500 v 0 0 P1913:490:491 A491
362 Telespazio Informazione TV dvbs 11662 27500 v 0 0 P1738:600:601 A601
363 Telespazio Redlight 3D-HD! dvbs 11662 27500 v 0 0 P611 A
364 Telespazio Hustler 3D-HD! dvbs 11662 27500 v 0 0 P612 A
365 Telespazio TV Luna dvbs 11662 27500 v 0 0 P1651 A
366 Telespazio Sirio TV dvbs 11662 27500 v 0 0 P1960:1920:1921 A1921
367 Telespazio Sirio TV dvbs 11662 27500 v 0 0 P1967:1920:1921 A1921
368 Telespazio Sirio TV dvbs 11662 27500 v 0 0 P1968:1920:1921 A1921
369 Telespazio Sirio TV dvbs 11662 27500 v 0 0 P1969:1920:1921 A1921
370 Telespazio Tivu Tivu dvbs 11662 27500 v 0 0 P1970:380:381 A381
371 Harmonic Tivu Tivu dvbs 11662 27500 v 0 0 P1971:380:381 A381
372 Harmonic Tivu Tivu dvbs 11662 27500 v 0 0 P1972:380:381 A381
373 Telespazio Tivu Tivu dvbs 11662 27500 v 0 0 P1973:380:381 A381
374 Telespazio Tivu Tivu dvbs 11662 27500 v 0 0 P1974:380:381 A381
375 Harmonic Tivu Tivu dvbs 11662 27500 v 0 0 P1975:380:381 A381
376 Telespazio Tivu Tivu dvbs 11662 27500 v 0 0 P1976:380:381 A381
377 Telespazio Tivu Tivu dvbs 11662 27500 v 0 0 P1977:380:381 A381
378 Telespazio Tivu Tivu dvbs 11662 27500 v 0 0 P1978:380:381 A381
379 Telespazio Tivu Tivu dvbs 11662 27500 v 0 0 P1979:380:381 A381
380 Eutelsat Arte HD dvbs 11681 27500 h 0 0 P570:571:572:573:574:577 A572:573:574:577
381 Telefonica Spain TVE Internacional dvbs 11727 27500 v 0 0 P33:2911:2913:2912:2915 A2912:2915
382 Telefonica Spain Canal 24 Horas dvbs 11727 27500 v 0 0 P34:3569:3571:3570:3573 A3570:3573
383 Telefonica Spain TELESUR dvbs 11727 27500 v 0 0 P43:3121:3122 A3122
384 TSA SCT PROMO dvbs 11727 27500 v 0 0 P56:41:36 A36
385 TSA SCT PROMO b dvbs 11727 27500 v 0 0 P62:41:36 A36
386 TSA SCT PROMO c dvbs 11727 27500 v 0 0 P63:41:36 A36
387 TSA SCT PROMO d dvbs 11727 27500 v 0 0 P64:41:36 A36
388 TSA SCT PROMO e dvbs 11727 27500 v 0 0 P35:41:36 A36
389 BBC World Service BBC Arabic dvbs 11727 27500 v 0 0 P6519:6781:6782 A6782
390 Du Dubai TV dvbs 11747 27500 h 0 0 P48:4130:4131:4132 A4131:4132
391 Du Dubai Sports 3 dvbs 11747 27500 h 0 0 P49:4386:4387:4388 A4387:4388
392 Du Sama Dubai dvbs 11747 27500 h 0 0 P50:4642:4643 A4643
393 Du AL SHARJAH dvbs 11747 27500 h 0 0 P4340:4341:4342 A4342
394 Du AD SPORT1 dvbs 11747 27500 h 0 0 P4370:4371:4372 A4372
395 Du PMC dvbs 11747 27500 h 0 0 P32:67:46 A46
396 Du AL SHARQIYA dvbs 11747 27500 h 0 0 P58:77:113 A113
397 Du AL BAGHDADIA 2 dvbs 11747 27500 h 0 0 P4211:4222:4223 A4223
398 Du AL BAGHDADIA dvbs 11747 27500 h 0 0 P4251:4252:4253 A4253
399 Du Al-Arabiya dvbs 11747 27500 h 0 0 P35:515:643:671 A643:671
400 Du MBC MAGHREB AL ARABIA dvbs 11747 27500 h 0 0 P41:516:682 A682
401 Du Sky News Arabia dvbs 11747 27500 h 0 0 P4311:4312:4313 A4313
402 du AL GHAD AL ARABY dvbs 11747 27500 h 0 0 P4350:4351:4352 A4352
403 Rai RaiMed dvbs 11766 27500 v 0 0 P260:515:580:653 A653
404 Rai Senato dvbs 11766 27500 v 0 0 P1107:8190:588:92:660 A92:660
405 Rai Rai Scuola dvbs 11766 27500 v 0 0 P261:518:584:656 A656
406 Rai TV2000 dvbs 11804 27500 v 0 0 P108:518:656 A656
407 Unknown Service 3304 dvbs 11804 27500 v 0 0 P259:515:591:653 A653
408 Rai Rai Gulp dvbs 11804 27500 v 0 0 P126:522:590:663 A663
409 Rai Rai Sport 1 dvbs 11804 27500 v 0 0 P128:512:581:650 A650
410 Rai Rai Sport 2 dvbs 11804 27500 v 0 0 P104:516:579:654 A654
411 Rai Rai Storia dvbs 11804 27500 v 0 0 P103:514:583:652 A652
412 Rai Camera Deputati dvbs 11804 27500 v 0 0 P262:517:587:655 A655
413 Rai RaiNettunoSat1 dvbs 11804 27500 v 0 0 P256:519:585:657 A657
414 NetMed novasports7 dvbs 11823 27500 h 0 0 P269:519:8190:720:721 A720:721
415 NetMed novasports7 Cy dvbs 11823 27500 h 0 0 P271:519:8190:720:721 A720:721
416 SkyItalia Real Time dvbs 11958 27500 v 0 0 P1132:174:771:460:461 A460:461
417 JMC TRT Belgesel dvbs 12015 27500 h 0 0 P261:517:2309:277:700:701 A700:701
418 ART IQRAA - ARABESQUE dvbs 12015 27500 h 0 0 P264:520:136:730:1498 A730:1498
419 jmc Iqraa Africa & Europe dvbs 12015 27500 h 0 0 P258:521:182:731:732 A731:732
420 JMC Algerie 3 dvbs 12015 27500 h 0 0 P272:525:142:5644 A5644
421 ART Ictimai TV dvbs 12015 27500 h 0 0 P273:524:140:5634 A5634
422 JMC Canal Algerie dvbs 12015 27500 h 0 0 P274:526:132:5654 A5654
423 JMC RT DOC dvbs 12015 27500 h 0 0 P397:1420:5664 A5664
424 JMC Yemen TV dvbs 12015 27500 h 0 0 P270:518:134:710 A710
425 JMC Saudi Sports 1 dvbs 12015 27500 h 0 0 P281:776:150:1017 A1017
426 JMC test dvbs 12015 27500 h 0 0 P288:777:151:1018 A1018
427 Telespazio Al Jazeera Documentary dvbs 12111 27500 v 0 0 P1028:240:241 A241
428 Telespazio Al Jazeera Mubasher dvbs 12111 27500 v 0 0 P1029:250:251 A251
429 Telespazio Al Jazeera dvbs 12111 27500 v 0 0 P1031:270:271 A271
430 Telespazio IP DATA dvbs 12111 27500 v 0 0 P1065:1027 A
431 Telespazio Telemarket for You dvbs 12111 27500 v 0 0 P1038:329:328 A328
432 Telespazio Antichità Chiossone dvbs 12111 27500 v 0 0 P1139:3300:3310 A3310
433 Telespazio S.NEU JERUSALEM dvbs 12111 27500 v 0 0 P1173:345:346 A346
434 Harmonic AL-MAYADEEN dvbs 12111 27500 v 0 0 P1135:1403:2403 A2403
435 Telespazio RIKSat dvbs 12111 27500 v 0 0 P1194:108:2500:102 A102
436 Telespazio ClassTv dvbs 12111 27500 v 0 0 P1185:350:351 A351
437 Telespazio Class Horse TV dvbs 12111 27500 v 0 0 P1196:355:356 A356
438 Telespazio TV Moda dvbs 12111 27500 v 0 0 P1080:320:321 A321
439 Telespazio Saamen Tv dvbs 12111 27500 v 0 0 P1198:1168:1169 A1169
440 AH-EDP Tunisie Nationale dvbs 12149 27500 v 0 0 P42:112:114:113 A113
441 AH-EDP Khabar TV dvbs 12149 27500 v 0 0 P64:160:161 A161
442 AH-EDP LIDER TV AZERBAIJAN dvbs 12149 27500 v 0 0 P66:192:191:193:194 A193:194
443 AH-EDP CCTV4 dvbs 12149 27500 v 0 0 P68:224:223:225 A225
444 EUTELSAT SMtv San Marino dvbs 12149 27500 v 0 0 P87:310:311 A311
445 People TV-Rete 7 People TV-Rete 7 dvbs 12149 27500 v 0 0 P1141:1142:1143 A1143
446 TandbergTV CNC-002 dvbs 12149 27500 v 0 0 P3300:3304:3302:3303 A3303
447 Bahrain TV Bahrain International dvbs 12149 27500 v 0 0 P90:340:341 A341
448 BBC World Service BBC Persian dvbs 12149 27500 v 0 0 P111:410:411 A411
449 Scopus Network Technologies BETHEL dvbs 12149 27500 v 0 0 P88:420:421 A421
450 NetMed ÂïõëÞ dvbs 12169 27500 h 0 0 P278:517:8190:700 A700
451 Unknown RFE/RL TV 1 dvbs 12226 27500 v 0 0 P5001:1160:1120:1122:1130:1132 A1120:1122:1130:1132
452 Unknown VOA TV 240 dvbs 12226 27500 v 0 0 P5240:3260:3220:3222:3230:3232 A3220:3222:3230:3232
453 Unknown VOA TV 241 dvbs 12226 27500 v 0 0 P5241:3260:3220:3230 A3220:3230
454 Unknown VOA TV 242 dvbs 12226 27500 v 0 0 P5242:3260:3220:3232 A3220:3232
455 Unknown VOA TV 251 dvbs 12226 27500 v 0 0 P5251:3260:3220:3230 A3220:3230
456 Unknown VOA TV 252 dvbs 12226 27500 v 0 0 P5252:3260:3220:3232 A3220:3232
457 Unknown DOS TV 340 dvbs 12226 27500 v 0 0 P5340:5060:5020 A5020
458 Unknown Ch 500 - HD TEST dvbs 12226 27500 v 0 0 P5500:560:32 A32
459 Unknown VOA TV 100 dvbs 12226 27500 v 0 0 P5100:3260:3220:3222 A3220:3222
460 Unknown AzadliqRadiosu TV 200 dvbs 12226 27500 v 0 0 P5200:1160:1120:1122 A1120:1122
461 Unknown Alhurra TV 190 dvbs 12226 27500 v 0 0 P5190:1460:1420 A1420
462 Unknown Alhurra TV 215 dvbs 12226 27500 v 0 0 P5215:1460:1420:1422 A1420:1422
463 Unknown Radio Farda 223 dvbs 12226 27500 v 0 0 P5223:1560:1532 A1532
464 Unknown Persian TV 225 dvbs 12226 27500 v 0 0 P5225:1660:1620:1622 A1620:1622
465 GlobeCast Naba TV dvbs 12245 27500 h 0 0 P33:112:122 A122
466 GlobeCast Saudi Sport 2 dvbs 12245 27500 h 0 0 P113:123:133 A133
467 GlobeCast Al sumariah dvbs 12245 27500 h 0 0 P114:124:134 A134
468 GlobeCast iTV dvbs 12245 27500 h 0 0 P127:137:157 A157
469 GlobeCast Al Etejah TV dvbs 12245 27500 h 0 0 P1113:1123:1133 A1133
470 GlobeCast AL BAGHDADIA dvbs 12245 27500 h 0 0 P1115:1125:1135 A1135
471 GlobeCast Saudi Arabian TV2 dvbs 12245 27500 h 0 0 P212:222:332 A332
472 GlobeCast Samacom Test dvbs 12245 27500 h 0 0 P A
473 GlobeCast Al Rasheed TV dvbs 12245 27500 h 0 0 P A
474 GlobeCast KANAL 4 dvbs 12245 27500 h 0 0 P A
475 GlobeCast GEM Movie dvbs 12245 27500 h 0 0 P A
476 Cyfrowy Polsat S.A. Blue Hustler dvbs 12284 27500 h 0 0 P32 A
477 RIT RIT-TV dvbs 12322 27500 h 0 0 P32:33:34 A34
478 M-Three satcom 90 numeri sat dvbs 12322 27500 h 0 0 P209:2090:2091 A2091
479 M-Three satcom Bergamo TV dvbs 12322 27500 h 0 0 P3931:3932:3933 A3933
480 M-Three satcom Canale Aste dvbs 12322 27500 h 0 0 P2062:2060:2061 A2061
481 Eutelsat Romauno dvbs 12322 27500 h 0 0 P5000:5010:5020 A5020
482 GlobeCast Telepace dvbs 12380 27500 v 0 0 P3017:3027:3037:3097 A3037:3097
483 GLOBECAST AD AlOula dvbs 12380 27500 v 0 0 P3014:3024:3034 A3034
484 GLOBECAST ZAHRA TV dvbs 12380 27500 v 0 0 P3019:3029:3039 A3039
485 GlobeCast ERI TV dvbs 12380 27500 v 0 0 P3110:3120:3130 A3130
486 GlobeCast Saudi - Sunnah dvbs 12380 27500 v 0 0 P3117:3127:3137 A3137
487 GlobeCast KNN Channel dvbs 12380 27500 v 0 0 P3108:3018:3048 A3048
488 GlobeCast Libya Al Ahrar dvbs 12380 27500 v 0 0 P3105:3025:3035 A3035
489 GlobeCast Sat7 Plus dvbs 12380 27500 v 0 0 P3013:3023:3033 A3033
490 GlobeCast Al Etejah dvbs 12380 27500 v 0 0 P3115:3215:3315 A3315
491 GlobeCast AL SHARQIYA NEWS dvbs 12380 27500 v 0 0 P3113:3213:3313 A3313
492 GlobeCast ETV1 dvbs 12380 27500 v 0 0 P3100:3200:3300 A3300
493 Schweizer Radio und Fernsehen SRF info dvbs 12399 27500 h 0 0 P407:167:53:102:103:104 A102:103:104
494 RTV SLOVENIJA SLO-TV3 dvbs 12520 27500 v 0 0 P82:218:202:219 A219
495 RTV SLOVENIJA RBC-TV dvbs 12520 27500 v 0 0 P32:603:604 A604
496 Telespazio Canale ITALIA dvbs 12558 27500 v 0 0 P1302:145:146 A146
497 Harmonic Canale Italia 84 dvbs 12558 27500 v 0 0 P1303:245:246 A246
498 Telespazio UnireSat by Teleippica dvbs 12558 27500 v 0 0 P1310:1220:1221 A1221
499 Telespazio TEF CHANNEL dvbs 12558 27500 v 0 0 P1315:610:611:612 A611:612
500 Telespazio THAQALLYN TV dvbs 12558 27500 v 0 0 P33:52:50 A50
501 Telespazio HODHOD Arabic dvbs 12558 27500 v 0 0 P1323:1802:1803 A1803
502 Telespazio HADI TV1 dvbs 12558 27500 v 0 0 P1345:72:73 A73
503 Telespazio HADI TV3 dvbs 12558 27500 v 0 0 P420:410:411 A411
504 Telespazio HADI TV4 dvbs 12558 27500 v 0 0 P1347:447:448 A448
505 Telespazio RU TV dvbs 12558 27500 v 0 0 P1349:2009:3009 A3009
506 Harmonic Baraem+ dvbs 12558 27500 v 0 0 P2563:2851:2852 A2852
507 Harmonic HODHOD FARSI dvbs 12558 27500 v 0 0 P1360:360:361 A361
508 Telespazio Jeem+ dvbs 12558 27500 v 0 0 P2819:2821:2822 A2822
509 GlobeCast ARM_1 dvbs 12597 27500 v 0 0 P1025:161:84 A84
510 GlobeCast BET dvbs 12597 27500 v 0 0 P1026 A
511 GlobeCast BBC World News dvbs 12597 27500 v 0 0 P1027:163:92 A92
512 GlobeCast SMNI dvbs 12597 27500 v 0 0 P1056:4001:4011 A4011
513 Harmonic 1TVRUS Europe dvbs 12597 27500 v 0 0 P1031:167:108 A108
514 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
515 GlobeCast Quadriga dvbs 12597 27500 v 0 0 P1029 A
516 SkyItalia Sky Calcio Info dvbs 12616 29900 h 0 0 P1124:174 A
517 JMC Qatar TV dvbs 12654 27500 h 0 0 P5002:134:1220 A1220
518 ARABSAT SAUDI1 dvbs 12654 27500 h 0 0 P5003:1360:1320 A1320
519 ARABSAT KUWAIT dvbs 12654 27500 h 0 0 P5004:1460:1420 A1420
520 Unknown SUDAN TV dvbs 12654 27500 h 0 0 P5032:1660:1620 A1620
521 ARABSAT OMAN dvbs 12654 27500 h 0 0 P5035:1760:1720 A1720
522 ARABSAT ESC dvbs 12654 27500 h 0 0 P5008:1860:1101:1206 A1206
523 ARABSAT AL-IRAQIA TV dvbs 12654 27500 h 0 0 P5061:1960:1920 A1920
524 ARABSAT JORDAN TV dvbs 12654 27500 h 0 0 P5049:4060:4020 A4020
525 ARABSAT SAUDI-QURAN dvbs 12654 27500 h 0 0 P5053:4260:4220 A4220
526 NILESAT Libya Alwatnya dvbs 12654 27500 h 0 0 P5054:4360:4320 A4320
527 SkyItalia Sky Inside dvbs 12673 29900 v 0 0 P286:2625:2626 A2626
528 SkyItalia Sky Inside dvbs 12673 29900 v 0 0 P310:2625:2626 A2626
529 SkyItalia Sky Inside dvbs 12673 29900 v 0 0 P312:2625:2626 A2626
530 SkyItalia Sky Inside dvbs 12673 29900 v 0 0 P313:2625:2626 A2626
531 Eutelsat BFM TV dvbs 12692 27500 h 0 0 P750:751:756:752 A752
532 AB SAT BIS promo dvbs 12692 27500 h 0 0 P417:117:217 A217
533 Eutelsat TV8 Mont Blanc dvbs 12692 27500 h 0 0 P820:821:822 A822

View File

@ -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"
1 CATEGORY TITLE SYSTEM FREQ SR POL RADIO ENC PIDS TRACKS
2 ??? Opap dvbs 12265 27500 v 0 0 P368:468:130:768 A
3 Arqiva ANN dvbs 11727 27500 v 0 0 P260:2551:2552 A2552
4 Arqiva Deepam TV dvbs 11727 27500 v 0 0 P270:2701:2702 A2702
5 Arqiva NTDTV dvbs 11727 27500 v 0 0 P268:2631:2632 A2632
6 eVision Duna dvbs 12207 27500 h 0 0 P2713:2103:2501:2203 A2203
7 eVision Duna HD dvbs 11958 27500 v 0 0 P1713:1103:1501:1203 A1203
8 eVision M1 dvbs 12207 27500 h 0 0 P2711:2111:2501 A
9 eVision M1 HD dvbs 11958 27500 v 0 0 P1711:1111:1501 A
10 eVision M2 dvbs 12207 27500 h 0 0 P2712:2102:2501:2202 A2202
11 eVision M2 HD dvbs 11958 27500 v 0 0 P1712:1102:1501:1202 A1202
12 GlobeCast 777 dvbs 11938 27500 h 0 0 P109:1009:1109 A1109
13 GlobeCast 777-2 dvbs 11938 27500 h 0 0 P124:1024:1124 A1124
14 GlobeCast CCTV9 DOCUMENTARY dvbs 11938 27500 h 0 0 P111:1011:8190:1111 A1111
15 GlobeCast Holy God dvbs 11938 27500 h 0 0 P119:1019:1119 A1119
16 GlobeCast Jaya TV dvbs 11938 27500 h 0 0 P123:1231:1331 A1331
17 GlobeCast JSTV dvbs 11938 27500 h 0 0 P122:1003:1103 A1103
18 GlobeCast M6 Suisse dvbs 12034 27500 v 0 0 P5201:2010:2011:2012 A2011:2012
19 GlobeCast M6 Suisse HD dvbs 12034 27500 v 0 0 P5202:2020:2021:2022 A2021:2022
20 GlobeCast NET 25 INTERNATIONAL dvbs 11938 27500 h 0 0 P105:1005:1105 A1105
21 Globecast Phoenix Info News dvbs 12034 27500 v 0 0 P257:3531:3532 A3532
22 GlobeCast PTV dvbs 11938 27500 h 0 0 P102:1002:1102 A1102
23 GlobeCast W9 Suisse dvbs 12034 27500 v 0 0 P5203:2030:2031 A2031
24 GlobeCast Walf TV dvbs 11938 27500 h 0 0 P101:1001:1101 A1101
25 GlobeCast YAARL TV dvbs 11938 27500 h 0 0 P107:1007:1107 A1107
26 GlobeCast UK CCTV-4 dvbs 11996 27500 v 0 0 P3998:3901:3999:3911 A3911
27 GlobeCast UK CCTV-A dvbs 11996 27500 v 0 0 P4298:4201:3999:4211 A4211
28 GlobeCast UK CCTV-E dvbs 11996 27500 v 0 0 P4098:4001:3999:4011 A4011
29 GlobeCast UK CCTV-R dvbs 11996 27500 v 0 0 P4198:4101:3999:4111 A4111
30 Harmonic Parlamento dvbs 12054 27500 h 0 0 P65:4129:4130 A4130
31 KabelKiosk KabelKiosk - InfoKanal dvbs 12360 27500 h 0 0 P2012:1121:1122 A1122
32 OTE ????? dvbs 12149 27500 v 0 0 P305:405:505 A505
33 OTE 4E dvbs 12149 27500 v 0 0 P312:412:512 A512
34 RRSat !ana bintizarek dvbs 11919 27500 v 0 0 P1023:2023:3023 A3023
35 RRSat Angel TV dvbs 11919 27500 v 0 0 P1036:2036:3036 A3036
36 RRSat anta oana obs dvbs 11919 27500 v 0 0 P1024:2024:3024 A3024
37 RRSat DIVINE TV dvbs 11919 27500 v 0 0 P1014:2014:3014 A3014
38 RRSat NLM TV dvbs 11919 27500 v 0 0 P1017:2017:3017 A3017
39 Satlink Apostolic Oneness Network dvbs 11900 27500 h 0 0 P256:512:63 A63
40 Telefonica Spain Real Madrid TV dvbs 12054 27500 h 0 0 P32:1113:1123 A1123
41 TS Pro TF1 Suisse dvbs 12034 27500 v 0 0 P200:210:230:220:221:222 A220:221:222
42 TSA Record News dvbs 12054 27500 h 0 0 P1029:1024:1040:1056 A1040:1056
43 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
44 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
45 Unknown Pentagon Channel dvbs 11804 27500 v 0 0 P5008:810:800:802:804:806 A800:802:804:806
46 Unknown Program-11 dvbs 11919 27500 v 0 0 P1026:2026:3026 A3026
47 Unknown Program-9 dvbs 11919 27500 v 0 0 P1025:2025:3025 A3025
48 Unknown TF1 HD Suisse dvbs 12034 27500 v 0 0 P800:810:820:821:822 A820:821:822

View File

@ -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"
1 CATEGORY TITLE SYSTEM FREQ SR MOD RADIO ENC PIDS TRACKS
2 1 1-2-3.tv dvbc 122000 6900 256qam 0 0 P801:802:810:803 A803
3 3 3sat dvbc 370000 6900 256qam 0 0 P200:210:230:220:221:222:225 A220:221:222:225
4 A AJ Children dvbc 826000 6900 64qam 0 0 P501:502:503 A503
5 A Al Auola Inter dvbc 818000 6900 64qam 0 0 P701:702:703 A703
6 A Al Jazeera dvbc 570000 6900 256qam 0 0 P701:702:703 A703
7 A Al Jazeera International dvbc 570000 6900 256qam 0 0 P201:202:203 A203
8 A arirang dvbc 826000 6900 64qam 0 0 P301:302:303 A303
9 A arte dvbc 362000 6900 256qam 0 0 P400:401:404:402:403 A402:403
10 A Astro TV dvbc 546000 6900 256qam 0 0 P1201:1202:1203 A1203
11 B Bayerisches FS Nord dvbc 346000 6900 256qam 0 0 P500:201:204:202:203:206 A202:203:206
12 B Bayerisches FS Süd dvbc 346000 6900 256qam 0 0 P200:201:204:202:203:206 A202:203:206
13 B BBC PARLIAMENT dvbc 610000 6900 64qam 0 0 P301:302:310:303 A303
14 B BBC World News dvbc 570000 6900 256qam 0 0 P901:902:903 A903
15 B Bibel TV dvbc 466000 6900 256qam 0 0 P901:902:910:903 A903
16 B Bloomberg dvbc 554000 6900 256qam 0 0 P401:402:410:403 A403
17 B BR-alpha dvbc 362000 6900 256qam 0 0 P1400:1401:1404:1402:1403:1406 A1402:1403:1406
18 B BVN dvbc 810000 6900 64qam 0 0 P1101:1102:1112:1110:1103 A1103
19 B bw family dvbc 130000 6900 256qam 0 0 P501:502:503:504 A503:504
20 C Camera dei Deputati dvbc 818000 6900 64qam 0 0 P201:202:210:203 A203
21 C CCTV 9 dvbc 818000 6900 64qam 0 0 P1201:1202:1203 A1203
22 C CCTV News dvbc 570000 6900 256qam 0 0 P601:602:612:603 A603
23 C Channel21 dvbc 122000 6900 256qam 0 0 P501:502:510:503 A503
24 C CNN dvbc 122000 6900 256qam 0 0 P901:902:903 A903
25 D DAF-AnlegerTV dvbc 818000 6900 64qam 0 0 P1301:1302:1303 A1303
26 D Das Erste dvbc 346000 6900 256qam 0 0 P100:101:104:102:103:106 A102:103:106
27 D Das Erste HD dvbc 362000 6900 256qam 0 0 P6000:6010:6030:6020:6021:6022 A6020:6021:6022
28 D DAS VIERTE dvbc 450000 6900 256qam 0 0 P101:102:110:103 A103
29 D DELUXE MUSIC dvbc 442000 6900 256qam 0 0 P601:602:603 A603
30 D DIE NEUE ZEIT TV dvbc 570000 6900 256qam 0 0 P1201:1202:1203 A1203
31 D DM Digital dvbc 738000 6900 256qam 0 0 P201:202:203 A203
32 D DMAX dvbc 122000 6900 256qam 0 0 P201:202:210:203 A203
33 D DUNA dvbc 810000 6900 64qam 0 0 P601:602:610:603 A603
34 D DUNA II Atonomia dvbc 810000 6900 64qam 0 0 P501:502:510:503 A503
35 E EinsFestival dvbc 362000 6900 256qam 0 0 P200:201:204:202:203:206 A202:203:206
36 E EinsPlus dvbc 362000 6900 256qam 0 0 P300:301:304:302:303:306 A302:303:306
37 E ERF eins dvbc 810000 6900 64qam 0 0 P301:302:303 A303
38 E ETNO TV dvbc 826000 6900 64qam 0 0 P601:602:603 A603
39 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
40 E EUROSPORT dvbc 450000 6900 256qam 0 0 P301:302:310:303 A303
41 F France 24 dvbc 570000 6900 256qam 0 0 P101:102:103 A103
42 H HABERTÜRK dvbc 730000 6900 256qam 0 0 P1101:1102:1112:1103 A1103
43 H HD Campus TV dvbc 130000 6900 256qam 0 0 P301:302:312:303 A303
44 H hr-fernsehen dvbc 346000 6900 256qam 0 0 P300:301:304:302:303 A302:303
45 H HSE24 dvbc 442000 6900 256qam 0 0 P801:802:810:803 A803
46 H HSE24 EXTRA dvbc 442000 6900 256qam 0 0 P1101:1102:1110:1103 A1103
47 I iM1 dvbc 442000 6900 256qam 0 0 P401:402:403 A403
48 I Info KabelBW dvbc 130000 6900 256qam 0 0 P101:102:103 A103
49 J Juwelo dvbc 442000 6900 256qam 0 0 P501:502:503 A503
50 K K-TV dvbc 466000 6900 256qam 0 0 P1301:1302:1310:1303 A1303
51 K kabel eins dvbc 114000 6900 256qam 0 0 P601:602:610:603 A603
52 K KabelBW Videothek dvbc 610000 6900 64qam 0 0 P101:102:103 A103
53 K KBW Test SD dvbc 130000 6900 256qam 0 0 P401 A
54 K Khabar TV dvbc 818000 6900 64qam 0 0 P101:102:103 A103
55 K KiKA dvbc 370000 6900 256qam 0 0 P300:310:330:320:321:325 A320:321:325
56 M MDR S-Anhalt dvbc 354000 6900 256qam 0 0 P2900:2901:2904:2902:2903 A2902:2903
57 M MDR Sachsen dvbc 354000 6900 256qam 0 0 P2800:2901:2904:2902:2903 A2902:2903
58 M MDR Thüringen dvbc 354000 6900 256qam 0 0 P3000:2901:2904:2902:2903 A2902:2903
59 M Mohajer dvbc 818000 6900 64qam 0 0 P401:402:403 A403
60 N n-tv dvbc 114000 6900 256qam 0 0 P801:802:810:803 A803
61 N N24 dvbc 114000 6900 256qam 0 0 P901:902:910:903 A903
62 N NDR FS HH dvbc 354000 6900 256qam 0 0 P2500:2601:2604:2602:2603 A2602:2603
63 N NDR FS MV dvbc 354000 6900 256qam 0 0 P2400:2601:2604:2602:2603 A2602:2603
64 N NDR FS NDS dvbc 354000 6900 256qam 0 0 P2600:2601:2604:2602:2603 A2602:2603
65 N NDR FS SH dvbc 354000 6900 256qam 0 0 P2700:2601:2604:2602:2603 A2602:2603
66 N Nick/Comedy Central dvbc 450000 6900 256qam 0 0 P201:202:5412:210:203 A203
67 O OCKO dvbc 810000 6900 64qam 0 0 P1201:1202:1210:1203 A1203
68 O ORF2E dvbc 738000 6900 256qam 0 0 P701:702:710:703 A703
69 P PCNE Chinese dvbc 810000 6900 64qam 0 0 P901:902:912:903:904 A903:904
70 P PHOENIX dvbc 362000 6900 256qam 0 0 P500:501:504:502:503 A502:503
71 P Pro TV International dvbc 818000 6900 64qam 0 0 P501:502:503 A503
72 P ProSieben dvbc 114000 6900 256qam 0 0 P301:302:310:303:307 A303:307
73 Q QVC dvbc 442000 6900 256qam 0 0 P701:702:710:703 A703
74 Q QVC Beauty dvbc 442000 6900 256qam 0 0 P1001:1002:1010:1003 A1003
75 Q QVC HD dvbc 762000 6900 64qam 0 0 P201:202:210:207 A207
76 Q QVC Plus dvbc 442000 6900 256qam 0 0 P301:302:310:303 A303
77 R rbb Berlin dvbc 354000 6900 256qam 0 0 P600:601:604:602:603 A602:603
78 R rbb Brandenburg dvbc 354000 6900 256qam 0 0 P500:601:604:602:603 A602:603
79 R Record TV dvbc 562000 6900 256qam 0 0 P1101:1102:1103 A1103
80 R RTL NITRO dvbc 122000 6900 256qam 0 0 P101:102:110:103 A103
81 R RTL Television dvbc 114000 6900 256qam 0 0 P101:102:110:103:107 A103:107
82 R RTL2 dvbc 114000 6900 256qam 0 0 P501:502:510:503 A503
83 R Russia Today dvbc 570000 6900 256qam 0 0 P401:402:403 A403
84 S SAT.1 dvbc 114000 6900 256qam 0 0 P201:202:210:203:207 A203:207
85 S Sat.1 Gold dvbc 122000 6900 256qam 0 0 P701:702:710:703 A703
86 S Servus TV dvbc 442000 6900 256qam 0 0 P101:102:110:103:104 A103:104
87 S ServusTV HD dvbc 762000 6900 64qam 0 0 P401:402:410:403:404:407 A403:404:407
88 S SF1 dvbc 738000 6900 256qam 0 0 P501:502:510:503:504 A503:504
89 S SF2 dvbc 738000 6900 256qam 0 0 P601:602:610:603:604 A603:604
90 S SIXX dvbc 122000 6900 256qam 0 0 P301:302:310:303 A303
91 S Sky Select dvbc 402000 6900 256qam 0 0 P103:2815:2816:2819 A2816:2819
92 S SonLife dvbc 818000 6900 64qam 0 0 P1001:1002:1003 A1003
93 S sonnenklar.TV dvbc 122000 6900 256qam 0 0 P401:402:410:403 A403
94 S Souvenirs from earth dvbc 554000 6900 256qam 0 0 P1101:1102:1103 A1103
95 S Sparda Welt dvbc 130000 6900 256qam 0 0 P201:202:203 A203
96 S SPORT1 dvbc 450000 6900 256qam 0 0 P2101:2102:2110:2103 A2103
97 S Super RTL dvbc 114000 6900 256qam 0 0 P701:702:710:703 A703
98 S SWR Fernsehen BW dvbc 346000 6900 256qam 0 0 P800:801:804:802:803:806 A802:803:806
99 S SWR Fernsehen RP dvbc 354000 6900 256qam 0 0 P3100:3101:3104:3102:3103:3106 A3102:3103:3106
100 T tagesschau24 dvbc 362000 6900 256qam 0 0 P100:101:104:102 A102
101 T Tele 5 dvbc 450000 6900 256qam 0 0 P2201:2202:2210:2203 A2203
102 T TF 1 dvbc 826000 6900 64qam 0 0 P101:102:110:103:104:105 A103:104:105
103 T Thai Global Networks dvbc 826000 6900 64qam 0 0 P401:402:403 A403
104 T TRT Türk dvbc 434000 6900 256qam 0 0 P1201:1202:1210:1203 A1203
105 T TV 8 dvbc 826000 6900 64qam 0 0 P201:202:203 A203
106 T TV Chile Nordic dvbc 810000 6900 64qam 0 0 P201:202:203 A203
107 T TV GALICIA dvbc 810000 6900 64qam 0 0 P801:802:810:803 A803
108 T TV ROMANIA International dvbc 810000 6900 64qam 0 0 P401:402:410:403 A403
109 T TV Südbaden dvbc 130000 6900 256qam 0 0 P601:602:610:603 A603
110 T TV Tunisia 1 dvbc 810000 6900 64qam 0 0 P701:702:710:703 A703
111 T TV5MONDE Europe dvbc 122000 6900 256qam 0 0 P1001:1002:1010:1003 A1003
112 V Viva dvbc 122000 6900 256qam 0 0 P601:602:612:610:603 A603
113 V VOX dvbc 114000 6900 256qam 0 0 P401:402:410:403 A403
114 W WDR Köln dvbc 346000 6900 256qam 0 0 P600:601:604:602:603 A602:603
115 W World Fashion dvbc 810000 6900 64qam 0 0 P1001:1002:1003 A1003
116 Z ZDF dvbc 370000 6900 256qam 0 0 P100:110:130:120:121:122:125 A120:121:122:125
117 Z ZDF HD dvbc 370000 6900 256qam 0 0 P6100:6110:6130:6120:6121:6122:6123 A6120:6121:6122:6123
118 Z zdf_neo dvbc 370000 6900 256qam 0 0 P650:660:680:670:671:672:675 A670:671:672:675
119 Z zdf.kultur dvbc 370000 6900 256qam 0 0 P1100:1110:1130:1120:1121:1122:1125 A1120:1121:1122:1125
120 Z ZDFinfo dvbc 370000 6900 256qam 0 0 P600:610:630:620:621:622:625 A620:621:622:625
121 Z Zing dvbc 810000 6900 64qam 0 0 P101:102:110:103 A103

View File

@ -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"
1 CATEGORY TITLE SYSTEM FREQ SR MOD RADIO ENC PIDS TRACKS
2 Digital Free arte HD dvbc 114000 6900 256qam 0 0 P105:6661:6664:6662:6663 A6662:6663
3 ARD Das Erste HD dvbc 330000 6900 256qam 0 0 P5100:5101:5104:5102:5103 A5102:5103
4 ARD BR-alpha dvbc 330000 6900 256qam 0 0 P1400:1401:1404:1402:1403:1406 A1402:1403:1406
5 ARD tagesschau24 dvbc 330000 6900 256qam 0 0 P100:101:104:102 A102
6 ARD Einsfestival dvbc 330000 6900 256qam 0 0 P200:201:204:202:203:206 A202:203:206
7 ARD EinsPlus dvbc 330000 6900 256qam 0 0 P300:301:304:302:303:306 A302:303:306
8 ARD arte dvbc 330000 6900 256qam 0 0 P400:401:404:402:403 A402:403
9 ARD PHOENIX dvbc 330000 6900 256qam 0 0 P500:501:504:502:503 A502:503
10 ARD Das Erste dvbc 338000 6900 256qam 0 0 P100:101:104:102:103:106 A102:103:106
11 ARD Bayerisches FS Süd dvbc 338000 6900 256qam 0 0 P200:201:204:202:203:206 A202:203:206
12 ARD hr-fernsehen dvbc 338000 6900 256qam 0 0 P300:301:304:302:303 A302:303
13 ARD WDR Köln dvbc 338000 6900 256qam 0 0 P600:601:604:602:603 A602:603
14 ARD SWR Fernsehen RP dvbc 338000 6900 256qam 0 0 P800:801:804:802:803:806 A802:803:806
15 SKY Sky Select dvbc 378000 6900 256qam 0 0 P103:2815:2816:2819 A2816:2819
16 Digital Free Super RTL dvbc 394000 6900 256qam 0 0 P111:1501:1504:1502 A1502
17 Digital Free RTL II dvbc 394000 6900 256qam 0 0 P112:1601:1604:1602 A1602
18 Digital Free VOX dvbc 394000 6900 256qam 0 0 P113:1701:1704:1702 A1702
19 Digital Free n-tv dvbc 394000 6900 256qam 0 0 P114:1901:1904:1902 A1902
20 Digital Free SPORT1 dvbc 394000 6900 256qam 0 0 P116:2501:2504:2502 A2502
21 Digital Free 1-2-3.tv dvbc 402000 6900 256qam 0 0 P103:1101:1104:1102 A1102
22 Digital Free BBC World News dvbc 402000 6900 256qam 0 0 P115:401:402 A402
23 Digital Free RTL NITRO dvbc 402000 6900 256qam 0 0 P105:981:984:982 A982
24 Digital Free CNN dvbc 402000 6900 256qam 0 0 P110:2251:2252 A2252
25 Digital Free Servus TV dvbc 402000 6900 256qam 0 0 P107:2371:2374:2372 A2372
26 Digital Free EuroNews dvbc 410000 6900 256qam 0 0 P111:2601:2622 A2622
27 Italienisch EuroNews dvbc 410000 6900 256qam 0 0 P106:2601:1202 A1202
28 Div. Sprachen EuroNews dvbc 410000 6900 256qam 0 0 P107:2601:1212 A1212
29 Div. Sprachen EuroNews dvbc 410000 6900 256qam 0 0 P108:2601:1222 A1222
30 Russisch EuroNews dvbc 410000 6900 256qam 0 0 P109:2601:1232 A1232
31 Digital Free Channel21 dvbc 410000 6900 256qam 0 0 P114:2391:2394:2392 A2392
32 Digital Free Juwelo TV dvbc 410000 6900 256qam 0 0 P113:2361:2362 A2362
33 Digital Free EuroNews dvbc 410000 6900 256qam 0 0 P110:2601:2602 A2602
34 Digital Free Bloomberg dvbc 426000 6900 256qam 0 0 P102:421:422 A422
35 Digital Free Bibel TV dvbc 426000 6900 256qam 0 0 P106:731:734:732 A732
36 Digital Free ERF eins dvbc 426000 6900 256qam 0 0 P108:2411:2412 A2412
37 Digital Free Das Vierte dvbc 426000 6900 256qam 0 0 P107:2931:2934:2932 A2932
38 Digital Free sonnenklar.TV dvbc 426000 6900 256qam 0 0 P105:2271:2274:2272 A2272
39 Digital Free sixx dvbc 442000 6900 256qam 0 0 P104:1181:1184:1182 A1182
40 Digital Free Tele 5 dvbc 442000 6900 256qam 0 0 P115:411:414:412 A412
41 Digital Free Eurosport dvbc 442000 6900 256qam 0 0 P113:2921:2924:2922 A2922
42 Digital Free ProSieben dvbc 442000 6900 256qam 0 0 P101:2201:2204:2202:2203 A2202:2203
43 Digital Free kabel eins dvbc 442000 6900 256qam 0 0 P109:2301:2304:2302 A2302
44 Digital Free N24 dvbc 442000 6900 256qam 0 0 P114:2801:2804:2802 A2802
45 ZDFvision ZDF HD dvbc 450000 6900 256qam 0 0 P6100:6110:6130:6120:6121:6123 A6120:6121:6123
46 ZDFvision ZDF dvbc 450000 6900 256qam 0 0 P100:110:130:120:121:122:125 A120:121:122:125
47 ZDFvision 3sat dvbc 450000 6900 256qam 0 0 P200:210:230:220:221:222:225 A220:221:222:225
48 ZDFvision KiKA dvbc 450000 6900 256qam 0 0 P300:310:330:320:321:325 A320:321:325
49 ZDFvision ZDFinfo dvbc 450000 6900 256qam 0 0 P600:610:630:620:621:622:625 A620:621:622:625
50 ZDFvision zdf_neo dvbc 450000 6900 256qam 0 0 P650:660:680:670:671:672:675 A670:671:672:675
51 ZDFvision zdf.kultur dvbc 450000 6900 256qam 0 0 P1100:1110:1130:1120:1121:1122:1125 A1120:1121:1122:1125
52 ARD rbb Berlin dvbc 458000 6900 256qam 0 0 P600:601:604:602:603 A602:603
53 ARD NDR FS MV dvbc 458000 6900 256qam 0 0 P2400:2401:2404:2402:2403 A2402:2403
54 ARD MDR Sachsen dvbc 458000 6900 256qam 0 0 P2800:2801:2804:2802:2803 A2802:2803
55 Digital Free NICK/COMEDY CENTRAL dvbc 466000 6900 256qam 0 0 P104:441:444:442 A442
56 Digital Free VIVA dvbc 466000 6900 256qam 0 0 P116:2941:2944:2942 A2942
57 Digital Free QVC dvbc 466000 6900 256qam 0 0 P101:2281:2284:2282 A2282
58 Digital Free DMAX dvbc 466000 6900 256qam 0 0 P115:2291:2294:2292 A2292
59 Digital Free HSE24 dvbc 466000 6900 256qam 0 0 P103:2311:2314:2312 A2312
60 Digital Free Kabel Digital Info dvbc 538000 6900 256qam 0 0 P104:2741:2742 A2742
61 Digital Free ANIXE SD dvbc 538000 6900 256qam 0 0 P109:1001:1002 A1002
62 Digital Free SAT.1 Gold dvbc 538000 6900 256qam 0 0 P112:2431:2434:2432 A2432
63 Digital Free Astro TV dvbc 538000 6900 256qam 0 0 P101:2241:2242 A2242
64 Digital Free Joiz! dvbc 626000 6900 256qam 0 0 P103:6421:6422 A6422
65 Digital Free ProSieben MAXX dvbc 626000 6900 256qam 0 0 P104:6431:6434:6432:6433 A6432:6433
66 Digital Free Deutsches Musikfernsehen dvbc 626000 6900 256qam 0 0 P109:6501:6502 A6502

View File

@ -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"
1 CATEGORY TITLE SYSTEM FREQ BW/SR DS PLP MOD RADIO ENC PIDS TRACKS
2 KDC2 KDG C2 Demo 1 dvbc2 793982 8 0 0 0 0 P100:308:256 A256
3 KDC2 KDG C2 Demo 2 dvbc2 793982 8 0 0 0 0 P100:308:256 A256
4 TEST Test DS0 dvbc2 793982 8 0 0 0 0 P100:308:256 A256
5 TEST Test DS1 dvbc2 793982 8 1 257 0 0 P32:256:272 A272

View File

@ -0,0 +1,3 @@
File format is subject to change

View File

@ -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
1 KEY CSVFILE NAME SYSTEM SRC
2 KBW kbw KabelBW dvbc 0
3 UM um UnityMedia dvbc 0
4 KD kd Kabel Deutschland dvbc 0
5 KDC2 kdc2 Kabel Deutschland C2 dvbc2 0
6 A19E a19e Astra 19E dvbs 1
7 E9E e9e Eutelsat 9E dvbs 1
8 E13E e13e Hotbird 13E dvbs 1

View File

@ -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"
1 CATEGORY TITLE SYSTEM FREQ SR MOD RADIO ENC PIDS TRACKS
2 Unitymedia ProSieben MAXX dvbc 113000 6900 256qam 0 0 P267:613:618:614 A614
3 Unitymedia DAF - Anleger TV dvbc 129000 6900 256qam 0 0 P264:583:584 A584
4 Unitymedia Offener Kanal dvbc 129000 6900 256qam 0 0 P263:573:574 A574
5 Unitymedia Rhein-Main-TV dvbc 129000 6900 256qam 0 0 P267:613:618:614 A614
6 Unitymedia Unitymedia Infokanal dvbc 129000 6900 256qam 0 0 P257:513:518:514 A514
7 SKY Sky Select dvbc 378000 6900 256qam 0 0 P103:2815:2816:2819 A2816:2819
8 ZDFvision ZDF HD dvbc 394000 6900 256qam 0 0 P6100:6110:6130:6120:6121:6122:6123 A6120:6121:6122:6123
9 ZDFvision ZDF dvbc 394000 6900 256qam 0 0 P100:110:130:120:121:122:125 A120:121:122:125
10 ZDFvision 3sat dvbc 394000 6900 256qam 0 0 P200:210:230:220:221:222:225 A220:221:222:225
11 ZDFvision KiKA dvbc 394000 6900 256qam 0 0 P300:310:330:320:321:325 A320:321:325
12 ZDFvision ZDFinfo dvbc 394000 6900 256qam 0 0 P600:610:630:620:621:622:625 A620:621:622:625
13 ZDFvision zdf_neo dvbc 394000 6900 256qam 0 0 P650:660:680:670:671:672:675 A670:671:672:675
14 ZDFvision zdf.kultur dvbc 394000 6900 256qam 0 0 P1100:1110:1130:1120:1121:1122:1125 A1120:1121:1122:1125
15 Unitymedia Lig TV dvbc 402000 6900 256qam 0 0 P261:553 A
16 Unitymedia Turkmax dvbc 402000 6900 256qam 0 0 P266:603 A
17 Unitymedia euronews dvbc 402000 6900 256qam 0 0 P269:633:635:634:2241:2242:2243 A634:2241:2242:2243
18 Unitymedia euronews dvbc 402000 6900 256qam 0 0 P270:633:635:644:2241:2242:2243 A644:2241:2242:2243
19 Unitymedia euronews dvbc 402000 6900 256qam 0 0 P271:633:635:654:2241:2242:2243 A654:2241:2242:2243
20 Unitymedia euronews dvbc 402000 6900 256qam 0 0 P272:633:635:664:2241:2242:2243 A664:2241:2242:2243
21 Unitymedia euronews dvbc 402000 6900 256qam 0 0 P273:633:635:674:2241:2242:2243 A674:2241:2242:2243
22 Unitymedia euronews dvbc 402000 6900 256qam 0 0 P274:633:635:684:2241:2242:2243 A684:2241:2242:2243
23 Unitymedia euronews dvbc 402000 6900 256qam 0 0 P275:633:635:694:2241:2242:2243 A694:2241:2242:2243
24 Unitymedia euronews dvbc 402000 6900 256qam 0 0 P279:633:635:734:2241:2242:2243 A734:2241:2242:2243
25 Unitymedia euronews dvbc 402000 6900 256qam 0 0 P280:633:635:744:2241:2242:2243 A744:2241:2242:2243
26 Unitymedia euronews dvbc 402000 6900 256qam 0 0 P281:633:635:754:2241:2242:2243 A754:2241:2242:2243
27 ARD Das Erste dvbc 410000 6900 256qam 0 0 P100:101:104:102:103:106 A102:103:106
28 ARD Bayerisches FS Süd dvbc 410000 6900 256qam 0 0 P200:201:204:202:203:206 A202:203:206
29 ARD hr-fernsehen dvbc 410000 6900 256qam 0 0 P300:301:304:302:303 A302:303
30 ARD Bayerisches FS Nord dvbc 410000 6900 256qam 0 0 P500:201:204:202:203:206 A202:203:206
31 ARD WDR Köln dvbc 410000 6900 256qam 0 0 P600:601:604:602:603 A602:603
32 ARD SWR Fernsehen BW dvbc 410000 6900 256qam 0 0 P800:801:804:802:803:806 A802:803:806
33 ARD Das Erste HD dvbc 418000 6900 256qam 0 0 P6000:6010:6030:6020:6021:6022 A6020:6021:6022
34 ARD BR-alpha dvbc 418000 6900 256qam 0 0 P1400:1401:1404:1402:1403:1406 A1402:1403:1406
35 ARD tagesschau24 dvbc 418000 6900 256qam 0 0 P100:101:104:102 A102
36 ARD Einsfestival dvbc 418000 6900 256qam 0 0 P200:201:204:202:203:206 A202:203:206
37 ARD EinsPlus dvbc 418000 6900 256qam 0 0 P300:301:304:302:303:306 A302:303:306
38 ARD arte dvbc 418000 6900 256qam 0 0 P400:401:404:402:403 A402:403
39 ARD PHOENIX dvbc 418000 6900 256qam 0 0 P500:501:504:502:503 A502:503
40 ARD rbb Brandenburg dvbc 426000 6900 256qam 0 0 P500:601:604:602:603 A602:603
41 ARD rbb Berlin dvbc 426000 6900 256qam 0 0 P600:601:604:602:603 A602:603
42 ARD NDR FS MV dvbc 426000 6900 256qam 0 0 P2400:2601:2604:2602:2603 A2602:2603
43 ARD NDR FS HH dvbc 426000 6900 256qam 0 0 P2500:2601:2604:2602:2603 A2602:2603
44 ARD NDR FS NDS dvbc 426000 6900 256qam 0 0 P2600:2601:2604:2602:2603 A2602:2603
45 ARD NDR FS SH dvbc 426000 6900 256qam 0 0 P2700:2601:2604:2602:2603 A2602:2603
46 ARD MDR Sachsen dvbc 426000 6900 256qam 0 0 P2800:2901:2904:2902:2903 A2902:2903
47 ARD MDR S-Anhalt dvbc 426000 6900 256qam 0 0 P2900:2901:2904:2902:2903 A2902:2903
48 ARD MDR Thüringen dvbc 426000 6900 256qam 0 0 P3000:2901:2904:2902:2903 A2902:2903
49 ARD SWR Fernsehen RP dvbc 426000 6900 256qam 0 0 P3100:3101:3104:3102:3103:3106 A3102:3103:3106
50 Unitymedia TRT Türk dvbc 434000 6900 256qam 0 0 P268:623:626:625:624 A624
51 Unitymedia RTL Television dvbc 442000 6900 256qam 0 0 P258:523:528:524:525 A524:525
52 Unitymedia SAT.1 dvbc 442000 6900 256qam 0 0 P259:533:538:534:536 A534:536
53 Unitymedia ProSieben dvbc 442000 6900 256qam 0 0 P260:543:548:544:545 A544:545
54 Unitymedia VOX dvbc 442000 6900 256qam 0 0 P261:553:558:554 A554
55 Unitymedia RTL2 dvbc 442000 6900 256qam 0 0 P262:563:568:564 A564
56 Unitymedia kabel eins dvbc 442000 6900 256qam 0 0 P263:573:578:574 A574
57 Unitymedia Super RTL dvbc 442000 6900 256qam 0 0 P265:583:588:584 A584
58 Unitymedia n-tv dvbc 442000 6900 256qam 0 0 P266:593:598:594 A594
59 Unitymedia N24 dvbc 442000 6900 256qam 0 0 P267:603:608:604 A604
60 Unitymedia DAS VIERTE dvbc 450000 6900 256qam 0 0 P257:513:518:514 A514
61 Unitymedia Nick/Comedy Central dvbc 450000 6900 256qam 0 0 P259:533:539:538:534 A534
62 Unitymedia EUROSPORT dvbc 450000 6900 256qam 0 0 P260:543:548:544 A544
63 Unitymedia SPORT1 dvbc 450000 6900 256qam 0 0 P278:723:728:724 A724
64 Unitymedia Tele 5 dvbc 450000 6900 256qam 0 0 P279:733:738:734 A734
65 Unitymedia Bibel TV dvbc 466000 6900 256qam 0 0 P266:603:606:604 A604
66 Unitymedia K-TV dvbc 466000 6900 256qam 0 0 P261:553:558:554 A554
67 Unitymedia Servus TV dvbc 522000 6900 256qam 0 0 P262:563:568:564 A564
68 Unitymedia HSE24 TREND dvbc 522000 6900 256qam 0 0 P261:553:558:554 A554
69 Unitymedia QVC Plus dvbc 522000 6900 256qam 0 0 P257:513:518:514 A514
70 Unitymedia iM1 dvbc 522000 6900 256qam 0 0 P258:523:524 A524
71 Unitymedia Juwelo dvbc 522000 6900 256qam 0 0 P259:533:534 A534
72 Unitymedia QVC dvbc 522000 6900 256qam 0 0 P263:573:578:574 A574
73 Unitymedia HSE24 dvbc 522000 6900 256qam 0 0 P264:583:588:584 A584
74 Unitymedia DELUXE MUSIC dvbc 522000 6900 256qam 0 0 P260:543:544 A544
75 Unitymedia HSE24 EXTRA dvbc 522000 6900 256qam 0 0 P265:593:598:594 A594
76 Unitymedia QVC Beauty dvbc 522000 6900 256qam 0 0 P267:613:618:614 A614
77 Unitymedia SIXX dvbc 530000 6900 256qam 0 0 P263:573:578:574 A574
78 Unitymedia Viva dvbc 530000 6900 256qam 0 0 P257:513:519:518:514 A514
79 Unitymedia Channel21 dvbc 530000 6900 256qam 0 0 P258:523:528:524 A524
80 Unitymedia 1-2-3.tv dvbc 530000 6900 256qam 0 0 P259:533:538:534 A534
81 Unitymedia DMAX dvbc 530000 6900 256qam 0 0 P260:543:548:544 A544
82 Unitymedia CNN dvbc 530000 6900 256qam 0 0 P261:553:554 A554
83 Unitymedia sonnenklar.TV dvbc 530000 6900 256qam 0 0 P262:563:568:564 A564
84 Unitymedia TV5MONDE Europe dvbc 530000 6900 256qam 0 0 P264:583:588:584 A584
85 Unitymedia SAT.1 Gold dvbc 530000 6900 256qam 0 0 P266:603:608:604 A604
86 Unitymedia RTL NITRO dvbc 530000 6900 256qam 0 0 P267:613:618:614 A614
87 Unitymedia SonLife dvbc 538000 6900 256qam 0 0 P268:623:624 A624
88 Unitymedia CCTV9 dvbc 538000 6900 256qam 0 0 P266:603:604 A604
89 Unitymedia SKY News dvbc 538000 6900 256qam 0 0 P264:583:584 A584
90 Unitymedia Astro TV dvbc 546000 6900 256qam 0 0 P268:623:628:624 A624
91 Unitymedia joiz dvbc 554000 6900 256qam 0 0 P257:513:514 A514
92 Unitymedia Bloomberg dvbc 554000 6900 256qam 0 0 P266:603:604 A604
93 Unitymedia BBC World News dvbc 570000 6900 256qam 0 0 P257:513:514 A514
94 Unitymedia France 24 dvbc 570000 6900 256qam 0 0 P259:533:534 A534
95 Unitymedia Al Jazeera International dvbc 570000 6900 256qam 0 0 P260:543:544 A544
96 Unitymedia Russia Today dvbc 570000 6900 256qam 0 0 P261:553:554 A554
97 Unitymedia CCTV News dvbc 570000 6900 256qam 0 0 P262:563:564 A564
98 Unitymedia Unitymedia Videothek dvbc 610000 6900 256qam 0 0 P257:513:514 A514
99 Unitymedia Mehr Programm dvbc 610000 6900 256qam 0 0 P259:515 A
100 Unitymedia Programm 25110 dvbc 746000 6900 256qam 0 0 P257:513 A
101 ARD arte HD dvbc 762000 6900 64qam 0 0 P257:513:518:514:515:516 A514:515:516
102 Unitymedia ServusTV HD dvbc 762000 6900 64qam 0 0 P258:523:528:524:525:526 A524:525:526
103 Unitymedia QVC HD dvbc 762000 6900 64qam 0 0 P259:533:538:534 A534
104 Unitymedia HSE24 HD dvbc 762000 6900 64qam 0 0 P260:543:548:544 A544

View File

@ -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

View File

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8"?>
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<actionList>
<action>
<name>GetProtocolInfo</name>
<argumentList>
<argument>
<name>Source</name>
<direction>out</direction>
<relatedStateVariable>SourceProtocolInfo</relatedStateVariable>
</argument>
<argument>
<name>Sink</name>
<direction>out</direction>
<relatedStateVariable>SinkProtocolInfo</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetCurrentConnectionIDs</name>
<argumentList>
<argument>
<name>ConnectionIDs</name>
<direction>out</direction>
<relatedStateVariable>CurrentConnectionIDs</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetCurrentConnectionInfo</name>
<argumentList>
<argument>
<name>ConnectionID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_ConnectionID</relatedStateVariable>
</argument>
<argument>
<name>RcsID</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_RcsID</relatedStateVariable>
</argument>
<argument>
<name>AVTransportID</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_AVTransportID</relatedStateVariable>
</argument>
<argument>
<name>ProtocolInfo</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_ProtocolInfo</relatedStateVariable>
</argument>
<argument>
<name>PeerConnectionManager</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_ConnectionManager</relatedStateVariable>
</argument>
<argument>
<name>PeerConnectionID</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_ConnectionID</relatedStateVariable>
</argument>
<argument>
<name>Direction</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Direction</relatedStateVariable>
</argument>
<argument>
<name>Status</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_ConnectionStatus</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="yes">
<name>SourceProtocolInfo</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>SinkProtocolInfo</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>CurrentConnectionIDs</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_ConnectionStatus</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>OK</allowedValue>
<allowedValue>ContentFormatMismatch</allowedValue>
<allowedValue>InsufficientBandwidth</allowedValue>
<allowedValue>UnreliableChannel</allowedValue>
<allowedValue>Unknown</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_ConnectionManager</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Direction</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>Input</allowedValue>
<allowedValue>Output</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_ProtocolInfo</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_ConnectionID</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_AVTransportID</name>
<dataType>i4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_RcsID</name>
<dataType>i4</dataType>
</stateVariable>
</serviceStateTable>
</scpd>

View File

@ -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 = '' -- '&lt;?xml version="1.0" encoding="utf-8"?&gt;'
..'&lt;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
..'&gt;'
local DIDLEnd = '&lt;/DIDL-Lite&gt;'
-- 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;amp;')
vi.title = string.gsub(vi.title,'&','&amp;amp;')
vi.title = string.gsub(vi.title,'<','&amp;lt;')
vi.title = string.gsub(vi.title,'>','&amp;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 = '&lt;container id="'..id..'" parentID="'..parentid..'"'
-- ..' childCount="'..childCount..'"'
..' restricted="1"'
-- ..' searchable="1"'
..'&gt;'
..'&lt;dc:title&gt;'..title..'&lt;/dc:title&gt;'
..'&lt;upnp:class&gt;object.container.storageFolder&lt;/upnp:class&gt;'
..'&lt;/container&gt;'
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;amp;'..Item.request
else
rtspreq = '?'..Item.request
end
end
local didl = '&lt;item id="'..Item.id..'" parentID="'..Item.parentID
didl = didl .. '" restricted="1"&gt;'
..'&lt;dc:title&gt;'..Item.title..'&lt;/dc:title&gt;'
..'&lt;upnp:class&gt;object.item.videoItem.videoBroadcast&lt;/upnp:class&gt;'
if Item.channelNr then
didl = didl ..'&lt;upnp:channelNr&gt;'..Item.channelNr..'&lt;/upnp:channelNr&gt;'
end
didl = didl ..'&lt;res'
..' protocolInfo="rtsp-rtp-udp:*:video/mpeg:'..dlnaprofile..'"&gt;'
..'rtsp://'..Host..':554/'..rtspreq
..'&lt;/res&gt;'
didl = didl ..'&lt;/item&gt;'
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 .. '&lt;container id="1" parentID = "-1" childCount="'..tostring(ChildCount)..'" restricted="true"&gt>'
.. '&lt:dc:title&gt;OctopusNet&lt;/dc:title&gt;'
..'&lt;upnp:class&gt;object.container.storageFolder&lt;/upnp:class&gt;'
..'&lt;/container&gt;'
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

View File

@ -0,0 +1,207 @@
<?xml version="1.0" encoding="UTF-8"?>
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<actionList>
<action>
<name>GetSearchCapabilities</name>
<argumentList>
<argument>
<name>SearchCaps</name>
<direction>out</direction>
<relatedStateVariable>SearchCapabilities</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetSortCapabilities</name>
<argumentList>
<argument>
<name>SortCaps</name>
<direction>out</direction>
<relatedStateVariable>SortCapabilities</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetSystemUpdateID</name>
<argumentList>
<argument>
<name>Id</name>
<direction>out</direction>
<relatedStateVariable>SystemUpdateID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Browse</name>
<argumentList>
<argument>
<name>ObjectID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_ObjectID</relatedStateVariable>
</argument>
<argument>
<name>BrowseFlag</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_BrowseFlag</relatedStateVariable>
</argument>
<argument>
<name>Filter</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Filter</relatedStateVariable>
</argument>
<argument>
<name>StartingIndex</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Index</relatedStateVariable>
</argument>
<argument>
<name>RequestedCount</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Count</relatedStateVariable>
</argument>
<argument>
<name>SortCriteria</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_SortCriteria</relatedStateVariable>
</argument>
<argument>
<name>Result</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Result</relatedStateVariable>
</argument>
<argument>
<name>NumberReturned</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Count</relatedStateVariable>
</argument>
<argument>
<name>TotalMatches</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Count</relatedStateVariable>
</argument>
<argument>
<name>UpdateID</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_UpdateID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Search</name>
<argumentList>
<argument>
<name>ContainerID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_ObjectID</relatedStateVariable>
</argument>
<argument>
<name>SearchCriteria</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_SearchCriteria</relatedStateVariable>
</argument>
<argument>
<name>Filter</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Filter</relatedStateVariable>
</argument>
<argument>
<name>StartingIndex</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Index</relatedStateVariable>
</argument>
<argument>
<name>RequestedCount</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_Count</relatedStateVariable>
</argument>
<argument>
<name>SortCriteria</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_SortCriteria</relatedStateVariable>
</argument>
<argument>
<name>Result</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Result</relatedStateVariable>
</argument>
<argument>
<name>NumberReturned</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Count</relatedStateVariable>
</argument>
<argument>
<name>TotalMatches</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Count</relatedStateVariable>
</argument>
<argument>
<name>UpdateID</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_UpdateID</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="yes">
<name>TransferIDs</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_ObjectID</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Result</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_SearchCriteria</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_BrowseFlag</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>BrowseMetadata</allowedValue>
<allowedValue>BrowseDirectChildren</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Filter</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_SortCriteria</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Index</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Count</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_UpdateID</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>SearchCapabilities</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>SortCapabilities</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>SystemUpdateID</name>
<dataType>ui4</dataType>
</stateVariable>
</serviceStateTable>
</scpd>

View File

@ -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

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<actionList>
<action>
<name>IsAuthorized</name>
<argumentList>
<argument>
<name>DeviceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_DeviceID</relatedStateVariable>
</argument>
<argument>
<name>Result</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Result</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>IsValidated</name>
<argumentList>
<argument>
<name>DeviceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_DeviceID</relatedStateVariable>
</argument>
<argument>
<name>Result</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_Result</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_DeviceID</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_RegistrationReqMsg</name>
<dataType>bin.base64</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_RegistrationRespMsg</name>
<dataType>bin.base64</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_Result</name>
<dataType>int</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AuthorizationDeniedUpdateID</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AuthorizationGrantedUpdateID</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>ValidationRevokedUpdateID</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>ValidationSucceededUpdateID</name>
<dataType>ui4</dataType>
</stateVariable>
</serviceStateTable>
</scpd>

View File

@ -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 = '<?xml version="1.0" encoding="utf-8"?>'.."\r\n"
.. '<a:propertyset xmlns:a="urn:schemas-upnp-org:event-1-0/">'.."\r\n"
.. "<a:property>\r\n"
.. values
.. "</a:property>\r\n"
.. "</a:propertyset>\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

220
octoserve/var/dms/UPnP.lua Normal file
View File

@ -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 = '<?xml version="1.0" encoding="utf-8"?>'..'\r\n'
.. "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">"
.. "<s:Body><u:"..Action.."Response "..Service..">"
for _,a in ipairs(Args) do
soap = soap .. "<"..a.n..">"..a.v.."</"..a.n..">"
end
soap = soap .. "</u:"..Action.."Response></s:Body></s:Envelope>"..'\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 = '<?xml version="1.0" encoding="utf-8"?>'
.. "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">"
.. "<s:Body>"
.. "<s:Fault>"
.. "<s:faultcode>s:Client</s:faultcode>"
.. "<s:faultstring>UPnPError</s:faultstring>"
.. "<s:detail>"
.. '<UPnPError xmlns="urn:shemas-upnp-org:control-1-0">'
.. '<errorCode>'..code..'</errorCode>'
.. '<errorDescription>'..tostring(SoapErrorDescription[code])..'</errorDescription>'
.. '</UPnPError>'
.. "</s:detail>"
.. "</s:fault>"
.. "</s:Body>"
.. "</s:Envelope>"
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"
.. "<html><head><title>Error "..code.."</title></head><body><h1>Error "..code.."</h1></body></html>\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.."</"..v.n..">\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

190
octoserve/var/dms/dms.lua Executable file
View File

@ -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"
.. '<html><body><a href="http://'..host..'/">Click</a></body></html>\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,"(%<dlna:.+DOC%>)","")
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

74
octoserve/var/dms/dms.xml Normal file
View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>
<friendlyName>OctopusNet DMS</friendlyName>
<manufacturer>Digital Devices GmbH</manufacturer>
<manufacturerURL>http://www.digitaldevices.de</manufacturerURL>
<modelDescription>OctopusNet</modelDescription>
<modelName>OctopusNet DMS</modelName>
<modelNumber>1</modelNumber>
<!-- <modelURL>http://www.digitaldevices.de</modelURL> -->
<serialNumber>##SERNBR##</serialNumber>
<UDN>uuid:##UUID##</UDN>
<dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMS-1.50</dlna:X_DLNADOC>
<iconList>
<icon>
<mimetype>image/png</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>icons/dd-120.png</url>
</icon>
<icon>
<mimetype>image/jpg</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>icons/dd-120.jpg</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>icons/dd-48.png</url>
</icon>
<icon>
<mimetype>image/jpg</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>icons/dd-48.jpg</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId>
<SCPDURL>/cdir.xml</SCPDURL>
<controlURL>/cdc</controlURL>
<eventSubURL>/cde</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>/cman.xml</SCPDURL>
<controlURL>/cmc</controlURL>
<eventSubURL>/cme</eventSubURL>
</service>
<service>
<serviceType>urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1</serviceType>
<serviceId>urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar</serviceId>
<SCPDURL>/mreg.xml</SCPDURL>
<controlURL>/mrc</controlURL>
<eventSubURL>/mre</eventSubURL>
</service>
</serviceList>
<presentationURL>//##HOST##/</presentationURL>
</device>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,5 @@
#!/usr/bin/lua
killall lua
sleep 3
lua dms.lua&

View File

@ -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",""
1 TITLE REQUEST PIDS LANPORTS
2 Das Erste ?src=1&freq=11837&msys=dvbs&sr=27500&pol=h P0:100:101:104:102:103:106
3 Bayerisches FS Nord - P0:500:201:204:202:203:206
4 hr-fernsehen - P0:300:301:304:302:303
5 SWR Fernsehen BW - P0:800:801:804:802:803:806
6 WDR Köln - P0:600:601:604:602:603
7 ZDF ?src=1&freq=11954&msys=dvbs&sr=27500&pol=h P0:100:110:130:120:121:122:125
8 zdf neo - P0:650:660:680:670:671:672:675
9 zdf kultur - P0:1100:1110:1130:1120:1121:1122:1125
10 ZDFInfo - P0:600:610:630:620:621:622:625
11 KiKA - P0:300:310:330:320:321:325 L3:4:5
12 3sat - P0:200:210:230:220:221:222:225

View File

@ -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",""
1 TITLE REQUEST PIDS LANPORTS
2 Das Erste ?freq=346&msys=dvbc&sr=6900&mtype=256qam P0:100:101:104:102:103:106
3 Bayerisches FS Nord - P0:500:201:204:202:203:206
4 hr-fernsehen - P0:300:301:304:302:303
5 SWR Fernsehen BW - P0:800:801:804:802:803:806
6 WDR Köln - P0:600:601:604:602:603
7 ZDF ?freq=370&msys=dvbc&sr=6900&mtype=256qam P0:100:110:130:120:121:122:125
8 ZDF HD - P0:6100:6110:6130:6120:6121:6122:6123
9 zdf neo - P0:650:660:680:670:671:672:675
10 zdf kultur - P0:1100:1110:1130:1120:1121:1122:1125
11 ZDFInfo - P0:600:610:630:620:621:622:625
12 KiKA - P0:300:310:330:320:321:325 L3:4:5
13 3sat - P0:200:210:230:220:221:222:225

View File

@ -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,""
1 TITLE REQUEST PIDS PROTO IP PORT TTL LANPORTS
2 Das Erste ?freq=346&msys=dvbc&sr=6900&mtype=256qam P0:100:101:104:102:103:106 UDP 239.7.7.100 1234 7
3 Bayerisches FS Nord - P0:500:201:204:202:203:206 UDP 239.7.7.101 1234 7
4 hr-fernsehen - P0:300:301:304:302:303 UDP 239.7.7.102 1234 7
5 SWR Fernsehen BW - P0:800:801:804:802:803:806 UDP 239.7.7.103 1234 7
6 WDR Köln - P0:600:601:604:602:603 UDP 239.7.7.104 1234 7
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
8 ZDF HD - P0:6100:6110:6130:6120:6121:6122:6123 UDP 239.7.8.101 1234 7
9 zdf neo - P0:650:660:680:670:671:672:675 UDP 239.7.8.102 1234 7
10 zdf kultur - P0:1100:1110:1130:1120:1121:1122:1125 UDP 239.7.8.103 1234 7
11 ZDFInfo - P0:600:610:630:620:621:622:625 UDP 239.7.8.104 1234 7
12 KiKA - P0:300:310:330:320:321:325 UDP 239.7.8.105 1234 7 L3:4:5
13 3sat - P0:200:210:230:220:221:222:225 UDP 239.7.8.106 1234 7

View File

@ -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

112
octoserve/var/mcsetup/mcsetup.lua Executable file
View File

@ -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

View File

@ -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

View File

@ -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",""
1 TITLE REQUEST PIDS LANPORTS
2 Das Erste ?freq=410&msys=dvbc&sr=6900&mtype=256qam P0:100:101:104:102:103:106
3 Bayerisches FS Nord - P0:500:201:204:202:203:206
4 hr-fernsehen - P0:300:301:304:302:303
5 SWR Fernsehen BW - P0:800:801:804:802:803:806
6 WDR Köln - P0:600:601:604:602:603
7 ZDF ?freq=394&msys=dvbc&sr=6900&mtype=256qam P0:100:110:130:120:121:122:125
8 ZDF HD - P0:6100:6110:6130:6120:6121:6122:6123
9 zdf neo - P0:650:660:680:670:671:672:675
10 zdf kultur - P0:1100:1110:1130:1120:1121:1122:1125
11 ZDFInfo - P0:600:610:630:620:621:622:625
12 KiKA - P0:300:310:330:320:321:325 L3:4:5
13 3sat - P0:200:210:230:220:221:222:225

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

View File

@ -0,0 +1,670 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- (c)2012 Digital Devices GmbH. All rights reserved -->
<!-- $Id: SCIFDataBase.xml 590 2014-12-11 13:07:00Z manfred $ -->
<SCIFDataBase xmlns="http://schemas.DigitalDevices.de/SCIFDataBase">
<OutdoorUnit Name="IDLP-40UNIDQ+S" Manufacturer="Inverto" Type="LNB">
<UBSlot Frequency="1680"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="2040"/>
<UBSlot Frequency="1210"/>
</OutdoorUnit>
<OutdoorUnit Name="IDLQ-QUDL41-UNI2L-OPP" Manufacturer="Inverto" Type="LNB">
<UBSlot Frequency="1210"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="1680"/>
<UBSlot Frequency="2040"/>
</OutdoorUnit>
<OutdoorUnit Name="IDLB-QUDL41-UNI1L-1PP" Manufacturer="Inverto" Type="LNB">
<UBSlot Frequency="1210"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="1680"/>
<UBSlot Frequency="2040"/>
</OutdoorUnit>
<OutdoorUnit Name="IDLP-USS200-CU010-8PP" Manufacturer="Inverto" Type="Switch">
<UBSlot Frequency="1076"/>
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
</OutdoorUnit>
<OutdoorUnit Name="IDLP-USS111-CU010-8PP" Manufacturer="Inverto" Type="Switch">
<UBSlot Frequency="1076"/>
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
</OutdoorUnit>
<OutdoorUnit Name="IDLP-UST101-CU010-4PP" Manufacturer="Inverto" Type="Switch">
<UBSlot Frequency="1210"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="1680"/>
<UBSlot Frequency="2040"/>
</OutdoorUnit>
<OutdoorUnit Name="TechniRouter 5/1x8" Manufacturer="TechniSat" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="TechniRouter 9/1x8" Manufacturer="TechniSat" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="TechniRouter 5/2x4" Manufacturer="TechniSat" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
</OutdoorUnit>
<OutdoorUnit Name="TechniRouter 9/2x4" Manufacturer="TechniSat" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
</OutdoorUnit>
<OutdoorUnit Name="TechniRouter Mini 2/1x2" Manufacturer="TechniSat" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
</OutdoorUnit>
<OutdoorUnit Name="EXR 1581/2581" Manufacturer="Kathrein" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="EXR 1981/2981" Manufacturer="Kathrein" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="EXR 1541/2541" Manufacturer="Kathrein" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
</OutdoorUnit>
<OutdoorUnit Name="EXR 1542/2542" Manufacturer="Kathrein" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
</OutdoorUnit>
<OutdoorUnit Name="EXR 1942/2942" Manufacturer="Kathrein" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
</OutdoorUnit>
<OutdoorUnit Name="EXU 908" Manufacturer="Kathrein" Type="Switch" PinProtected="true">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="UAS 481" Manufacturer="Kathrein" Type="LNB">
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
</OutdoorUnit>
<OutdoorUnit Name="EXR 501" Manufacturer="Kathrein" Type="Switch">
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
</OutdoorUnit>
<OutdoorUnit Name="EXR 551" Manufacturer="Kathrein" Type="Switch">
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
</OutdoorUnit>
<OutdoorUnit Name="EXR 552" Manufacturer="Kathrein" Type="Switch">
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
</OutdoorUnit>
<OutdoorUnit Name="DY 64 1810/2410" Manufacturer="Wisi" Type="Switch">
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
<UBSlot Frequency="1892"/>
</OutdoorUnit>
<OutdoorUnit Name="DY 68 1810/2410" Manufacturer="Wisi" Type="Switch">
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
<UBSlot Frequency="1892"/>
</OutdoorUnit>
<OutdoorUnit Name="OC 05" Manufacturer="Wisi" Type="LNB">
<UBSlot Frequency="1210"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="1680"/>
<UBSlot Frequency="2040"/>
</OutdoorUnit>
<OutdoorUnit Name="DUR-Line VDU583NT" Manufacturer="Dura-Sat" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
</OutdoorUnit>
<OutdoorUnit Name="DUR-Line VDU563NT" Manufacturer="Dura-Sat" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
</OutdoorUnit>
<OutdoorUnit Name="DUR-Line VDU543NT" Manufacturer="Dura-Sat" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
</OutdoorUnit>
<OutdoorUnit Name="UCP3" Manufacturer="Dura-Sat" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
</OutdoorUnit>
<OutdoorUnit Name="DUR-Line UCP18" Manufacturer="Dura-Sat" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="Dur-Line LNB" Manufacturer="Dura-Sat" Type="LNB">
<UBSlot Frequency="1210"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="1680"/>
<UBSlot Frequency="2040"/>
</OutdoorUnit>
<OutdoorUnit Name="SMUC 58-NT/DC" Manufacturer="Resch" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="SMUC 98-NT/DC" Manufacturer="Resch" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="SUM 514 K" Manufacturer="DCT DELTA" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
</OutdoorUnit>
<OutdoorUnit Name="SUM 516 K" Manufacturer="DCT DELTA" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
</OutdoorUnit>
<OutdoorUnit Name="SUM 518" Manufacturer="DCT DELTA" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="SUM 918" Manufacturer="DCT DELTA" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="SUM 928" Manufacturer="DCT DELTA" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="DELEinkSUM518" Manufacturer="Profiline" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="DELEinkSUM918" Manufacturer="Profiline" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="DELEinkSUM928" Manufacturer="Profiline" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="SCRQD" Manufacturer="E-Tronix" Type="LNB">
<UBSlot Frequency="1210"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="1680"/>
<UBSlot Frequency="2040"/>
</OutdoorUnit>
<OutdoorUnit Name="LNB UNIC" Manufacturer="Radix" Type="LNB">
<UBSlot Frequency="1680"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="2040"/>
<UBSlot Frequency="1210"/>
</OutdoorUnit>
<OutdoorUnit Name="TMU 518" Manufacturer="Hirschmann" Type="Switch">
<UBSlot Frequency="1076"/>
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
</OutdoorUnit>
<OutdoorUnit Name="KR 5-1-8 UNI" Manufacturer="Kreiling" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="MS8/1(8)PIN-4" Manufacturer="EMP Centauri" Type="Switch">
<UBSlot Frequency="1080"/>
<UBSlot Frequency="1176"/>
<UBSlot Frequency="1237"/>
<UBSlot Frequency="1413"/>
<UBSlot Frequency="1555"/>
<UBSlot Frequency="1668"/>
<UBSlot Frequency="1842"/>
<UBSlot Frequency="1960"/>
</OutdoorUnit>
<OutdoorUnit Name="P.200-P" Manufacturer="EMP Centauri" Type="Switch">
<UBSlot Frequency="1080"/>
<UBSlot Frequency="1176"/>
<UBSlot Frequency="1237"/>
<UBSlot Frequency="1413"/>
<UBSlot Frequency="1555"/>
<UBSlot Frequency="1668"/>
<UBSlot Frequency="1842"/>
<UBSlot Frequency="1960"/>
</OutdoorUnit>
<OutdoorUnit Name="SMUC 58-NT" Manufacturer="Switch Master" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="SMUC 58-DC" Manufacturer="Switch Master" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="SMUC 98-NT" Manufacturer="Switch Master" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="SMUC 98-DC" Manufacturer="Switch Master" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="DPA 51" Manufacturer="SMART electronic" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="SES 56-09" Manufacturer="Axing" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
</OutdoorUnit>
<OutdoorUnit Name="SES 556-09/-19" Manufacturer="Axing" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
</OutdoorUnit>
<OutdoorUnit Name="MSU 518 NG/K" Manufacturer="Preisner" Type="Switch">
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
<UBSlot Frequency="1892"/>
</OutdoorUnit>
<OutdoorUnit Name="SAM 81 KT" Manufacturer="Arcon" Type="Switch">
<UBSlot Frequency="1076"/>
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
</OutdoorUnit>
<OutdoorUnit Name="SDUC 502/902" Manufacturer="Grundig SAT Systems" Type="Switch">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="SUS 5581/33 NF (8x1 Mode)" Manufacturer="Spaun" Type="Switch">
<UBSlot Frequency="1068"/>
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
</OutdoorUnit>
<OutdoorUnit Name="SUS 5581/33 NF (3x3 Mode, Output 1)" Manufacturer="Spaun" Type="Switch">
<UBSlot Frequency="1068"/>
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
</OutdoorUnit>
<OutdoorUnit Name="SUS 5581/33 NF (3x3 Mode, Output 2)" Manufacturer="Spaun" Type="Switch">
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
</OutdoorUnit>
<OutdoorUnit Name="SUS 5581/33 NF (3x3 Mode, Output 3)" Manufacturer="Spaun" Type="Switch">
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="SUS 5581/33 NF Legacy (8x1 Mode)" Manufacturer="Spaun" Type="Switch">
<UBSlot Frequency="974"/>
<UBSlot Frequency="1076"/>
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
</OutdoorUnit>
<OutdoorUnit Name="SUS 5581/33 NF Legacy (3x3 Mode, Output 1)" Manufacturer="Spaun" Type="Switch">
<UBSlot Frequency="974"/>
<UBSlot Frequency="1076"/>
<UBSlot Frequency="1178"/>
</OutdoorUnit>
<OutdoorUnit Name="SUS 5581/33 NF Legacy (3x3 Mode, Output 2)" Manufacturer="Spaun" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
</OutdoorUnit>
<OutdoorUnit Name="SUS 5581/33 NF Legacy (3x3 Mode, Output 3)" Manufacturer="Spaun" Type="Switch">
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
</OutdoorUnit>
<OutdoorUnit Name="SAS 3NT" Manufacturer="SAS 3NT" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
</OutdoorUnit>
<OutdoorUnit Name="SPS1008-3NT" Manufacturer="STG Kommunikation" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
</OutdoorUnit>
<OutdoorUnit Name="JPSxxxx-3A/T/TN" Manufacturer="Jultec" Type="Switch" Protocol="EN50607">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
</OutdoorUnit>
<OutdoorUnit Name="JPSxxxx-6A/T/TN" Manufacturer="Jultec" Type="Switch" Protocol="EN50607">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
</OutdoorUnit>
<OutdoorUnit Name="JPSxxxx-8A/T/TN" Manufacturer="Jultec" Type="Switch" Protocol="EN50607">
<UBSlot Frequency="1076"/>
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
</OutdoorUnit>
<OutdoorUnit Name="JPSxxxx-12AN/TN " Manufacturer="Jultec" Type="Switch" Protocol="EN50607">
<UBSlot Frequency="974"/>
<UBSlot Frequency="1076"/>
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
<UBSlot Frequency="1892"/>
<UBSlot Frequency="1994"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="JRS0502-2+4T" Manufacturer="Jultec" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
</OutdoorUnit>
<OutdoorUnit Name="JRS0504-2A/T" Manufacturer="Jultec" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
</OutdoorUnit>
<OutdoorUnit Name="JRS0904-2A/T" Manufacturer="Jultec" Type="Switch">
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
</OutdoorUnit>
<OutdoorUnit Name="GT-S3SCR4" Manufacturer="GT-SAT" Type="LNB">
<UBSlot Frequency="1210"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="1680"/>
<UBSlot Frequency="2040"/>
</OutdoorUnit>
<OutdoorUnit Name="GT-S2SCR4" Manufacturer="GT-SAT" Type="LNB">
<UBSlot Frequency="1210"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="1680"/>
<UBSlot Frequency="2040"/>
</OutdoorUnit>
<OutdoorUnit Name="GT-S1SCR4" Manufacturer="GT-SAT" Type="LNB">
<UBSlot Frequency="1210"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="1680"/>
<UBSlot Frequency="2040"/>
</OutdoorUnit>
<OutdoorUnit Name="GT-DLNB1T" Manufacturer="GT-SAT" Type="LNB" Protocol="EN50607">
<UBSlot Frequency="975"/>
<UBSlot Frequency="1025"/>
<UBSlot Frequency="1075"/>
<UBSlot Frequency="1125"/>
<UBSlot Frequency="1175"/>
<UBSlot Frequency="1225"/>
<UBSlot Frequency="1275"/>
<UBSlot Frequency="1325"/>
<UBSlot Frequency="1375"/>
<UBSlot Frequency="1425"/>
<UBSlot Frequency="1475"/>
<UBSlot Frequency="1525"/>
<UBSlot Frequency="1575"/>
<UBSlot Frequency="1625"/>
<UBSlot Frequency="1675"/>
<UBSlot Frequency="1725"/>
<UBSlot Frequency="1775"/>
<UBSlot Frequency="1825"/>
<UBSlot Frequency="1875"/>
<UBSlot Frequency="1925"/>
<UBSlot Frequency="1975"/>
<UBSlot Frequency="2025"/>
<UBSlot Frequency="2075"/>
<UBSlot Frequency="2125"/>
</OutdoorUnit>
<OutdoorUnit Name="4 Slots (1680,1420,2040,1210)">
<UBSlot Frequency="1680"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="2040"/>
<UBSlot Frequency="1210"/>
</OutdoorUnit>
<OutdoorUnit Name="4 Slots (1210,1420,1680,2040)">
<UBSlot Frequency="1210"/>
<UBSlot Frequency="1420"/>
<UBSlot Frequency="1680"/>
<UBSlot Frequency="2040"/>
</OutdoorUnit>
<OutdoorUnit Name="4 Slots (1284,1400,1516,1632)">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
</OutdoorUnit>
<OutdoorUnit Name="8 Slots (1284,1400,1516,...)">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="8 Slots (1284,1400,1516,...) Pin protected" PinProtected="true">
<UBSlot Frequency="1284"/>
<UBSlot Frequency="1400"/>
<UBSlot Frequency="1516"/>
<UBSlot Frequency="1632"/>
<UBSlot Frequency="1748"/>
<UBSlot Frequency="1864"/>
<UBSlot Frequency="1980"/>
<UBSlot Frequency="2096"/>
</OutdoorUnit>
<OutdoorUnit Name="8 Slots (1076,1178,1280,...)">
<UBSlot Frequency="1076"/>
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
</OutdoorUnit>
<OutdoorUnit Name="8 Slots (1178,1280,1382...)">
<UBSlot Frequency="1178"/>
<UBSlot Frequency="1280"/>
<UBSlot Frequency="1382"/>
<UBSlot Frequency="1484"/>
<UBSlot Frequency="1586"/>
<UBSlot Frequency="1688"/>
<UBSlot Frequency="1790"/>
<UBSlot Frequency="1892"/>
</OutdoorUnit>
</SCIFDataBase>

View File

@ -0,0 +1,55 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<!-- Add page scripts here -->
<script type="text/javascript">
</script>
</head>
<body>
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
<table cellpadding="2px" align="center">
<tr>
<td>
<form action="beta.lua" method="get">
<input type="hidden" name="set" value="beta" >
<input type="submit" value="Select Beta Update Server">
</form>
</td>
<td>
<form action="beta.lua" method="get">
<input type="hidden" name="set" value="std" >
<input type="submit" value="Select Standard Update Server">
</form>
</td>
</tr>
</table>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -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("")

View File

@ -0,0 +1,367 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<script type="text/javascript" src="/systeminfo.lua"></script>
<script type="text/javascript">Octoserve = false;</script>
<script type="text/javascript" src="/octoserve/serverinfo.js"></script>
<script type="text/javascript" src="/btvchannels.lua"></script>
<!-- Add page scripts here -->
<script type="text/javascript">
var VLCPluginValid = false;
var VLCPlugin;
var RTSPLink = false;
if( browserType == "Netscape" )
{
if( browserPlatform == "ipad" )
{
RTSPLink = true;
}
else
{
for(var i = 0; i < navigator.plugins.length; i++ )
{
var t = navigator.plugins[i].name + " " + navigator.plugins[i].version;
if( navigator.plugins[i].name == "VLC Web Plugin" )
{
VLCPlugin = navigator.plugins[i];
if( browserPlatform == "win" )
{
if( navigator.plugins[i].version >= "2.0.6.0" ) VLCPluginValid = true;
}
else if( browserPlatform == "linux" )
{
VLCPluginValid = true;
}
break;
}
}
}
}
var CurTracks = new Array();
var SelectedSource = 0;
var SelectedChannel = 0;
var SourceList = new Array();
function PlayEvent()
{
// var vlc = document.getElementById("vlcplayer");
// var vlc = getVLC("vlcplayer");
var vlc = vlcplayer;
var options = new Array();
var t = "rtsp://"+host+"/"+this.PlayRequest;
vlc.playlist.clear();
var id = vlc.playlist.add(t, this.PlayName, options);
vlc.playlist.playItem(id);
CurTracks = this.PlayTracks;
document.getElementById("nowplaying").firstChild.nodeValue = this.PlayName;
document.getElementById("ac0").disabled = CurTracks.length < 1;
document.getElementById("ac1").disabled = CurTracks.length < 2;
document.getElementById("ac2").disabled = CurTracks.length < 3;
document.getElementById("ac3").disabled = CurTracks.length < 4;
}
function SetAudioChannel(ac)
{
var vlc = vlcplayer;
if( ac < CurTracks.length ) vlc.audio.track = CurTracks[ac];
}
function MuteAudio()
{
var vlc = vlcplayer;
vlc.audio.mute = !vlc.audio.mute;
}
function AddRow(table,name,request,tracks)
{
var row = document.createElement("tr");
var col = document.createElement("td");
var txt = document.createTextNode(name);
col.appendChild(txt);
row.appendChild(col);
col = document.createElement("td");
if( RTSPLink )
{
var t = "rtsp://"+host+"/"+request;
var a = document.createElement("a");
a.setAttribute("href",t);
a.appendChild(document.createTextNode("Play"));
col.appendChild(a);
}
else
{
var form = document.createElement("form");
form.setAttribute("action", "");
var field = document.createElement("input");
field.setAttribute("type", "button");
field.setAttribute("value", "Play");
//field.setAttribute("onclick", "Play("+name+","+request+")");
//field.onclick = "Play("+name+","+request+")";
field.PlayName = name;
field.PlayRequest = request;
field.PlayTracks = tracks;
field.addEventListener("click",PlayEvent);
form.appendChild(field);
col.appendChild(form);
}
row.appendChild(col);
table.appendChild(row);
}
function NameCompare(a,b)
{
if( a.name.toUpperCase() < b.name.toUpperCase() ) return -1;
if( a.name.toUpperCase() > b.name.toUpperCase() ) return 1;
return 0;
}
function OnLoad()
{
if( !RTSPLink )
{
document.getElementById("Play").style.display = "none";
}
if( VLCPluginValid || RTSPLink )
{
var hasCable = false;
var hasSat = false;
for(var i = 0; i < Octoserve.TunerList.length; i++ )
{
if( Octoserve.TunerList[i] )
{
if( Octoserve.TunerList[i].Desc.indexOf("C/T") >= 0 ) hasCable = true;
if( Octoserve.TunerList[i].Desc.indexOf("C/C2") >= 0 ) hasCable = true;
if( Octoserve.TunerList[i].Desc.indexOf("S/S2") >= 0 ) hasSat = true;
}
}
document.Source.Select.length = 0;
var index = 0
if( hasSat )
{
SourceListSat.sort(NameCompare);
for(var i = 0; i < SourceListSat.length; i++ )
{
SourceList[index] = SourceListSat[i];
document.Source.Select.options[index] = new Option(SourceListSat[i].name,index, false, true);
index = index + 1;
}
}
if( hasCable )
{
SourceListCable.sort(NameCompare);
for(var i = 0; i < SourceListCable.length; i++ )
{
SourceList[index] = SourceListCable[i];
document.Source.Select.options[index] = new Option(SourceListCable[i].name,index, false, true);
index = index + 1;
}
}
for(var i = 0; i < SourceList.length; i++ )
{
SourceList[i].ChannelList.sort(NameCompare);
}
document.Source.Select.selectedIndex = 0;
SetSource(0);
}
else
{
document.getElementById("channeltable").style.display = "none";
}
}
function CreatePlugin()
{
document.getElementById("ControlPlugin").style.display = "none";
if( browserType == "Netscape" )
{
if( RTSPLink )
{
document.write('NOTE: Requires VLC App or similar with RTSP support');
return;
}
else if( VLCPlugin && !VLCPluginValid )
{
document.write("Invalid VLC Plugin found: "+ VLCPlugin.version + "<br/>" + browserPlatform + "<br/>");
document.write('Check for new Version on <a href="http://www.videolan.org">VLC Mediaplayer</a>');
return;
}
if( VLCPluginValid )
{
document.getElementById("ControlPlugin").style.display = "block";
document.write('<embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" width="640" height="480" id="vlcplayer">');
document.write('</embed>');
}
else
{
if ( browserPlatform == "win" || browserPlatform == "linux" )
{
document.write('Install <a href="http://www.videolan.org">VLC Mediaplayer</a> for in Browser TV');
}
}
}
else if (browserType == "MSIE" )
{
document.write('Install <a href="http://www.mozilla.org">Firefox</a> and <a href="http://www.videolan.org">VLC Mediaplayer</a> for in Browser TV:&nbsp');
return;
}
}
function SetSource(SourceIndex)
{
SelectedSource = SourceIndex;
document.Channel.Select.length = 0;
var i = -1;
for( j = 0; j < SourceList[SourceIndex].ChannelList.length; j++ )
{
document.Channel.Select.options[j] = new Option(SourceList[SourceIndex].ChannelList[j].name,j, false, true);
if( i < 0 && SourceList[SourceIndex].ChannelList[j].name.toUpperCase() >= "DAS ERSTE" ) i = j;
}
if( i < 0 ) i = 0;
document.Channel.Select.selectedIndex = i;
SetChannel(i);
}
function SetChannel(ChannelIndex)
{
SelectedChannel = ChannelIndex;
var a = document.getElementById("Play");
if( RTSPLink )
{
var t = "rtsp://"+host+"/"+SourceList[SelectedSource].ChannelList[ChannelIndex].request;
a.href = t;
}
else
{
var t = "rtsp://"+host+"/"+SourceList[SelectedSource].ChannelList[ChannelIndex].request;
var vlc = vlcplayer;
var options = new Array();
vlc.playlist.clear();
var id = vlc.playlist.add(t, SourceList[SelectedSource].ChannelList[ChannelIndex].name, options);
vlc.playlist.playItem(id);
CurTracks = SourceList[SelectedSource].ChannelList[ChannelIndex].tracks;
document.getElementById("nowplaying").firstChild.nodeValue = SourceList[SelectedSource].ChannelList[ChannelIndex].name;
document.getElementById("ac0").disabled = CurTracks.length < 1;
document.getElementById("ac1").disabled = CurTracks.length < 2;
document.getElementById("ac2").disabled = CurTracks.length < 3;
document.getElementById("ac3").disabled = CurTracks.length < 4;
}
}
</script>
</head>
<body onload="OnLoad()">
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
<table cellpadding="2px" align="center">
<tr><td>
<div id="ControlPlugin">
<table width="100%">
<tr>
<td><div align="left" id="nowplaying">&nbsp;</div></td>
<td><div align="right">
<form action="">
Audio:&nbsp;
<input id="ac0" type="Button" Value="1" onclick="SetAudioChannel(0)"/>
<input id="ac1" type="Button" Value="2" onclick="SetAudioChannel(1)"/>
<input id="ac2" type="Button" Value="3" onclick="SetAudioChannel(2)"/>
<input id="ac3" type="Button" Value="4" onclick="SetAudioChannel(3)"/>
<input type="Button" Value="Mute" onclick="MuteAudio()"/>
</form>
</div></td>
</tr>
</table>
</div>
</td></tr>
<tr><td>
<script type="text/javascript">CreatePlugin();</script></td>
</td></tr>
<tr><td>
<div id="channeltable">
<table cellpadding="2px" align="center">
<tr>
<td>Source</td>
<td>
<form name="Source" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetSource(document.Source.Select.selectedIndex)" >
</select>
</form>
</td>
</tr>
<tr>
<td>Channel</td>
<td>
<form name="Channel" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetChannel(document.Channel.Select.selectedIndex)">
</select>
</form>
</td>
</tr>
</table>
</div>
</td></tr>
<tr><td>
<div id="playlink" align="center" >
<a id="Play" href="">Play</a>
</div>
</td></tr>
</table>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -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 );

View File

@ -0,0 +1,96 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<!-- Add page scripts here -->
<script type="text/javascript">
</script>
</head>
<body>
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
<table cellpadding="2px" align="center">
<tr>
<td>System Channel Database</td>
<td>
<table>
<tr>
<td>
<form action="dlchannels.lua" method="get">
<input type="submit" value="Download tar.gz" >
<input type="hidden" name="select" value="system" >
</form>
</td>
<td>
<form action="dlchannels.lua" method="get">
<input type="submit" value="Download zip" disabled >
<input type="hidden" name="select" value="system" >
</form>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>User Channel Database</td>
<td>
<table>
<tr>
<td>
<form action="dlchannels.lua" method="get">
<input type="submit" value="Download tar.gz">
<input type="hidden" name="select" value="user" >
</form>
</td>
<td>
<form action="dlchannels.lua" method="get">
<input type="submit" value="Download zip" disabled >
<input type="hidden" name="select" value="user" >
</form>
</td>
<td>
<form action="delchannels.lua" method="get">
<input type="submit" value="Delete">
</form>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<form action="uplchannels.lua" method="post" enctype="multipart/form-data">
<input type="file" name="filename" value="*.gz" size="30" accept="application/zip,application/gzip">
<input type="submit" value="Upload">
</form>
</td>
</tr>
</table>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -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")

View File

@ -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

View File

@ -0,0 +1,165 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<!-- Add page scripts here -->
<script type="text/javascript">
CheckDone = false;
DownloadDone = false;
VerifyDone = false;
UpdateError = false;
WaitCounter = 30;
UpdateInfo = "";
function FWVersion(fwdate)
{
// Jahr, Monat, Tag, Stunden, Minuten
// date = new Date("20"+fwdate.substr(0,2),fwdate.substr(2,2)-1,fwdate.substr(4,2),fwdate.substr(6,2),fwdate.substr(8,2),"0");
date = new Date(1);
date.setUTCDate(fwdate.substr(4,2));
date.setUTCFullYear("20"+fwdate.substr(0,2));
date.setUTCMonth(fwdate.substr(2,2)-1);
date.setUTCHours(fwdate.substr(6,2));
date.setUTCMinutes(fwdate.substr(8,2));
ds = date.toGMTString();
return ds.substring(5,ds.length-7);
}
function CheckUpdateStatus()
{
script = document.getElementById("script1");
head = document.getElementsByTagName('head')[0];
head.removeChild(script);
newscript = document.createElement('script');
newscript.id = "script1";
newscript.type = "text/javascript";
newscript.src = "/update.lua?updatestatus";
head.appendChild(newscript);
if( UpdateError )
{
document.getElementById("UpdateButton").disabled = false;
document.getElementById("UpdateButton").value = "Continue";
document.getElementById("updatestatus").firstChild.nodeValue = UpdateInfo;
}
else if( VerifyDone )
{
document.getElementById("UpdateButton").disabled = false;
document.getElementById("UpdateButton").value = "Reboot";
document.getElementById("updatestatus").firstChild.nodeValue = "";
}
else if( DownloadDone )
{
document.getElementById("updatestatus").firstChild.nodeValue = "***** Verifying ******";
DownloadDone = false;
window.setTimeout(CheckUpdateStatus,250);
}
else if( CheckDone )
{
document.getElementById("updatestatus").firstChild.nodeValue = "***** Downloading ******";
CheckDone = false;
window.setTimeout(CheckUpdateStatus,250);
}
else
window.setTimeout(CheckUpdateStatus,250);
}
function DoUpdate()
{
CheckDone = false;
document.getElementById("updatestatus").firstChild.nodeValue = "***** Checking ******";
head = document.getElementsByTagName('head')[0];
newscript = document.createElement('script');
newscript.id = "script1";
newscript.type = "text/javascript";
newscript.src = "/update.lua?update";
head.appendChild(newscript);
window.setTimeout(CheckUpdateStatus,250);
}
function Reboot()
{
document.getElementById("UpdateButton").disabled = true;
if( UpdateError )
{
location.replace('/index.html');
}
else
{
head = document.getElementsByTagName('head')[0];
newscript = document.createElement('script');
newscript.id = "script2";
newscript.type = "text/javascript";
newscript.src = "/reboot.lua?sjiwjsiowjs";
head.appendChild(newscript);
WaitCounter = 70;
document.getElementById("updatestatus").firstChild.nodeValue = WaitCounter;
window.setTimeout(Wait,1000);
}
}
function Wait()
{
document.getElementById("updatestatus").firstChild.nodeValue = WaitCounter;
if( WaitCounter == 0 )
{
location.replace('/index.html');
}
else
{
WaitCounter = WaitCounter - 1;
window.setTimeout(Wait,1000);
}
}
</script>
</head>
<body onload="DoUpdate()">
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<img src="/BannerDD.jpg" alt="DD" width="910" height="130" />
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"></td>
<td class="content">
<div>
<!-- Begin Content -->
<h1 align="center">DO NOT TURN THE DEVICE OFF</h1>
<table class="table" align="center">
<tr>
<td id="updatestatus">&nbsp;&nbsp;</td>
</tr>
<tr>
<td>
<form action="">
<input id="UpdateButton" type="Button" value="Continue" disabled="true" onclick="Reboot()" />
</form>
</td>
<tr>
</table>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -0,0 +1,41 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<!-- Add page scripts here -->
<script type="text/javascript">
</script>
</head>
<body>
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
<H1>404 Not Found</H1>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -0,0 +1,131 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<script type="text/javascript" src="/systeminfo.lua"></script>
<script type="text/javascript">Octoserve = false;</script>
<script type="text/javascript" src="/octoserve/serverinfo.js"></script>
<!-- Add page scripts here -->
<script type="text/javascript">
function FWVersion(fwdate)
{
if( fwdate.length > 0 )
{
// Jahr, Monat, Tag, Stunden, Minuten
// date = new Date("20"+fwdate.substr(0,2),fwdate.substr(2,2)-1,fwdate.substr(4,2),fwdate.substr(6,2),fwdate.substr(8,2),"0");
var date = new Date(1);
date.setUTCDate(fwdate.substr(4,2));
date.setUTCFullYear("20"+fwdate.substr(0,2));
date.setUTCMonth(fwdate.substr(2,2)-1);
date.setUTCHours(fwdate.substr(6,2));
date.setUTCMinutes(fwdate.substr(8,2));
var ds = date.toGMTString();
return (ds.substring(5,ds.length-7));
}
return ("?");
}
function AddRow(table,td)
{
var row = document.createElement("tr");
for(var i = 0; i < td.length; i++ )
{
var col = document.createElement("td");
var txt = document.createTextNode(td[i]);
col.appendChild(txt);
row.appendChild(col);
}
table.appendChild(row);
}
function OnLoad()
{
var infotable = document.getElementById("infotable");
var tunertable = document.getElementById("tunertable");
AddRow(infotable, new Array("FW Date",FWVersion(fwdate)) );
AddRow(infotable, new Array("MAC",Octoserve.MAC) );
AddRow(infotable, new Array("Linux",linuxver) );
if( Octoserve )
AddRow(infotable, new Array("SAT>IP Server",Octoserve.Version) );
else
AddRow(infotable, new Array("SAT>IP Server","ERROR") );
AddRow(infotable, new Array("FPGA",fpgatype+"-"+fpgaver) );
if( Octoserve )
{
AddRow(infotable, new Array("Boot ID",Octoserve.BootID) );
AddRow(infotable, new Array("Device ID",Octoserve.DeviceID) );
for(var i = 0; i < Octoserve.TunerList.length; i++ )
{
if( Octoserve.TunerList[i] )
AddRow(tunertable, new Array("Tuner " + (i+1)," ",Octoserve.TunerList[i].Desc) );
}
}
}
</script>
</head>
<body onload="OnLoad()">
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
<table cellpadding="2px" align="center" width="100%">
<colgroup>
<col width="50%">
<col width="50%">
</colgroup>
<tr><td colspan="2">
<h1 align="center">OctopusNet
<script type="text/javascript">
if( Octoserve )
document.write(Octoserve.Version);
if( beta )
document.write(" BETA");
</script>
</h1>
</td></tr>
<tr>
<td>
<table id="infotable" cellpadding="2px" align="center">
</table>
</td>
<td>
<table id="tunertable" cellpadding="2px" align="center">
</table>
</td>
</tr>
</table>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,381 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<script type="text/javascript" src="/lnbsettings.lua"></script>
<!-- Add page scripts here -->
<script type="text/javascript">
function SaveSettings()
{
var Mode = document.getElementById("ModeButton").checked;
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "/lnbsettings.lua?set");
var field = document.createElement("input");
field.setAttribute("type", "hidden");
field.setAttribute("name", "auto");
field.setAttribute("value", Mode ? "0" : "1");
form.appendChild(field);
if( Mode )
{
var table = document.getElementById("LNBTable");
var Rows = table.getElementsByTagName("tr");
for(var i = 1; i < Rows.length; i++)
{
var Cols = Rows[i].getElementsByTagName("td");
field = document.createElement("input");
field.setAttribute("type", "hidden");
field.setAttribute("name", "LNB");
var value = i.toString();
for( var j = 1; j < 6; j++ )
{
var curValue = Cols[j].firstChild.nodeValue;
if( curValue == "-" ) curValue = "0";
value = value + "." + curValue;
}
field.setAttribute("value", value);
form.appendChild(field);
}
}
document.body.appendChild(form); // really needed?
form.submit();
return false;
}
function CreateRow(LNB,Tuner,Source,LOF1,LOF2,LOFS)
{
var row = document.createElement("tr");
var col;
var txt;
col = document.createElement("td");
txt = document.createTextNode(LNB+1);
col.appendChild(txt);
row.appendChild(col);
col = document.createElement("td");
txt = document.createTextNode(Tuner > 0 ? Tuner : "-");
col.appendChild(txt);
row.appendChild(col);
col = document.createElement("td");
txt = document.createTextNode(Source > 0 ? Source : "-");
col.appendChild(txt);
row.appendChild(col);
col = document.createElement("td");
txt = document.createTextNode(LOF1 > 0 ? LOF1 : "?");
col.appendChild(txt);
row.appendChild(col);
col = document.createElement("td");
txt = document.createTextNode(LOF2 > 0 ? LOF2 : "-");
col.appendChild(txt);
row.appendChild(col);
col = document.createElement("td");
txt = document.createTextNode(LOFS > 0 ? LOFS : "-");
col.appendChild(txt);
row.appendChild(col);
return row;
}
function InsertRow(Tuner,Source,LOF1,LOF2,LOFS)
{
var table = document.getElementById("LNBTable");
var Rows = table.getElementsByTagName("tr");
var LNB = 0;
var Replace = false;
var curRow = null;
for(var i = 1; i < Rows.length; i++)
{
var Cols = Rows[i].getElementsByTagName("td");
var curTuner = Cols[1].firstChild.nodeValue;
var curSource = Cols[2].firstChild.nodeValue;
if( curTuner == "-" ) curTuner = 0;
if( curSource == "-" ) curSource = 0;
if( curTuner == Tuner && curSource == Source )
{
Cols[3].firstChild.nodeValue = LOF1 > 0 ? LOF1 : "?";
Cols[4].firstChild.nodeValue = LOF2 > 0 ? LOF2 : "-";
Cols[5].firstChild.nodeValue = LOFS > 0 ? LOFS : "-";
return false;
}
if( (Tuner == curTuner && curSource > Source ) || curTuner > Tuner )
{
curRow = Rows[i];
break;
}
LNB = LNB + 1;
}
var newRow = CreateRow(LNB,Tuner,Source,LOF1,LOF2,LOFS);
if( curRow == null )
table.appendChild(newRow);
else
{
for( var i = LNB + 1; i < Rows.length; i++ )
{
Rows[i].getElementsByTagName("td")[0].firstChild.nodeValue = i + 1;
}
table.insertBefore(newRow,curRow);
}
}
function ClearLNB()
{
document.getElementById("SetButton").disabled = false;
var table = document.getElementById("LNBTable");
while( true )
{
var Rows = table.getElementsByTagName("tr");
if( Rows.length <= 1 ) break;
table.removeChild(Rows[1]);
}
}
function AddLNB()
{
document.getElementById("SetButton").disabled = false;
var Tuner = document.getElementById("Tuner").value;
var Source = document.getElementById("Source").value;
var LOF1 = document.getElementById("LOF1").value;
var LOF2 = document.getElementById("LOF2").value;
var LOFS = document.getElementById("LOFS").value;
if( Tuner == "" ) Tuner = 0;
else Tuner = parseInt(Tuner);
if( Source == "" ) Source = 0;
else Source = parseInt(Source);
LOF1 = parseInt(LOF1);
if( LOF2 == "" ) LOF2 = 0;
else LOF2 = parseInt(LOF2);
if( LOFS == "" ) LOFS = 0;
else LOFS = parseInt(LOFS);
if( isNaN(Tuner) || isNaN(Source) || isNaN(LOF1) || isNaN(LOF2) || isNaN(LOFS) ) return; // Error
if( Tuner > 0 && Source == 0 ) return; // Error
if( Tuner > 8 || Source > 4 ) return;
InsertRow(Tuner,Source,LOF1,LOF2,LOFS);
}
function ChangeMode()
{
var t = document.getElementById("SetButton");
document.getElementById("SetButton").disabled = false;
if( document.getElementById("ModeButton").checked )
{
document.getElementById("AutoSetting").style.display = "none";
document.getElementById("ManualSetting").style.display = "block";
}
else
{
document.getElementById("AutoSetting").style.display = "block";
document.getElementById("ManualSetting").style.display = "none";
}
}
function OnLoad()
{
document.getElementById("SetButton").disabled = true;
if( LNBList.length > 0 )
{
document.getElementById("ModeButton").checked = true;
document.getElementById("AutoSetting").style.display = "none";
document.getElementById("ManualSetting").style.display = "block";
var table = document.getElementById("LNBTable");
for(var i = 0; i < LNBList.length; i++ )
{
var Row = CreateRow(i,LNBList[i].Tuner,LNBList[i].Source,LNBList[i].LOF1,LNBList[i].LOF2,LNBList[i].LOFS);
table.appendChild(Row);
}
}
else
{
document.getElementById("ModeButton").checked = false;
document.getElementById("AutoSetting").style.display = "block";
document.getElementById("ManualSetting").style.display = "none";
}
}
</script>
</head>
<body onload="OnLoad()">
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
<table class="tableleft" align="center" cellspacing="2px">
<tr>
<td>Enable manual LNB configuration</td>
<td>
<form action="">
<input id="ModeButton" type="checkbox" value="Check" checked="false" onclick="ChangeMode()" />
</form>
</td>
<tr>
<tr><td colspan="2" align="right">
<div style="width: 300px">
<form action="">
<input type="Button" value="Cancel" onclick="location.replace('index.html')" >
<input id="SetButton" type="Button" value="Set" onclick="SaveSettings()" >
</form>
</div>
</td></tr>
</table>
<div id="AutoSetting" style="margin:20px; clear:both">
<h3>Automatic LNB Selection</h3>
<li><b>Ku Band:</b> Universal LNB</li>
<!--
<li><b>C Band:</b> Standard LNB with LOF = 5150 MHz</li>
<li><b>Ka Band:</b> Soarsat LNB with LOF = 21200 MHz</li>
-->
</div>
<div id="ManualSetting" style="margin:20px; clear:both">
<h3>Manual LNB Selection</h3>
<table align="center">
<tr>
<td>Tuner&nbsp;&nbsp;</td>
<td>
<form action="">
<input id="Tuner" type="text" value="" maxlength="2" onclick=""/>
</form>
</td>
<td>&nbsp;(empty for all)</td>
</tr>
<tr>
<td>Source&nbsp;&nbsp;</td>
<td>
<form action="">
<input id="Source" type="text" value="" maxlength="1" onclick=""/>
</form>
</td>
<td>&nbsp;(empty for all)</td>
</tr>
<tr>
<td>LOF low&nbsp;&nbsp;</td>
<td>
<form action="">
<input id="LOF1" type="text" value="9750" maxlength="5" align="right" onclick=""/>
</form>
</td>
<td>&nbsp;MHz</td>
</tr>
<tr>
<td>LOF high&nbsp;&nbsp;</td>
<td>
<form action="">
<input id="LOF2" type="text" value="10600" maxlength="5" onclick=""/>
</form>
</td>
<td>&nbsp;MHz (empty for unused)</td>
</tr>
<tr>
<td>LOF switch&nbsp;&nbsp;</td>
<td>
<form action="">
<input id="LOFS" type="text" value="11700" maxlength="5" onclick=""/>
</form>
</td>
<td>&nbsp;MHz (empty for unused)</td>
</tr>
<tr><td colspan="2" align="right">
<form action="">
<input id="ClearButton" type="Button" value="Clear" onclick="ClearLNB()" >
<input id="AddButton" type="Button" value="Add" onclick="AddLNB()" >
</form>
</div>
</td></tr>
</table>
<table>
<colgroup>
<col width="60px"/>
<col width="70px"/>
<col width="70px"/>
<col width="100px"/>
<col width="100px"/>
<col width="100px"/>
<col width="110px"/>
</colgroup>
<tbody id="LNBTable">
<tr>
<th>LNB</th>
<th>Tuner</th>
<th>Source</th>
<th>LOF low</th>
<th>LOF high</th>
<th>LOF switch</th>
<th>&nbsp;</th>
</tr>
</tbody>
</table>
</div>
<!---
<form action="">
<input id="UpdateButton" type="Button" value="Test" onclick="DoPost(Test)" />
</form>
-->
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -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

View File

@ -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)

View File

@ -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

104
octoserve/var/www/menu.js Normal file
View File

@ -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('<table class="menutable" align="center">');
for(i = 0; i < MenuItems.length; i++ )
{
if( document.URL.indexOf(MenuItems[i].Link) < 0 )
document.write('<tr><td><a href="/'+MenuItems[i].Link+'">'+MenuItems[i].Text+'</a></td></tr>');
else
document.write('<tr><td class="menucur">'+MenuItems[i].Text+'</td></tr>');
}
document.write('</table>');
}
// --------------------------------------------------------------
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");

View File

@ -0,0 +1,160 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<script type="text/javascript" src="/mclist.lua"></script>
<!-- Add page scripts here -->
<script type="text/javascript">
function OnLoad()
{
if( Multicast.length == 0 )
{
document.getElementById("dlcurrent").disabled = true;
document.getElementById("dlm3u").disabled = true;
document.getElementById("MulticastTable").style.display = "none";
}
}
function WriteMCTable()
{
if( Multicast.length > 0 )
{
for(var i = 0; i < Multicast.length; i = i + 1)
{
document.write('<tr>')
document.write('<td>'+(i+1)+'</td>')
document.write('<td>'+Multicast[i].Title+'</td>')
document.write('<td>'+Multicast[i].Dest+'</td>')
if( Multicast[i].LanPorts )
document.write('<td>'+Multicast[i].LanPorts+'</td>')
else
document.write('<td>&nbsp;</td>')
document.write('</tr>')
}
}
}
</script>
</head>
<body onload="OnLoad()">
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
<h1 align="center">Static Multicast Setup</h1>
<div id="MulticastTable">
<table cellpadding="2px" align="center" width="80%">
<tr>
<th>Stream</th>
<th>Title</th>
<th>Destination</th>
<th>Lan-Ports</th>
</tr>
<script type="text/javascript">WriteMCTable();</script>
</table>
<p/>
</div>
<table cellpadding="2px" align="center" width="80%">
<tr>
<td>
Current Settings
</td>
<td>
<form action="multicast.lua" method="get">
<input id="dlcurrent" type="submit" value="Download" ></input>
<input type="hidden" name="select" value="current" ></input>
</form>
</td>
</tr>
<tr>
<td>
M3U List
</td>
<td>
<form action="multicast.lua" method="get">
<input id="dlm3u" type="submit" value="Download" ></input>
<input type="hidden" name="select" value="m3u" ></input>
</form>
</td>
</tr>
<tr>
<td>
Samples
</td>
<td>
<form action="multicast.lua" method="get">
<select name="name" size="1" style="width: 300px">
<option value="astra19e">Astra 19.2</option>
<option value="kabelbw">Kabel BW</option>
<option value="unitymedia">Unity Media</option>
</select>
<input type="hidden" name="select" value="sample" ></input>
<input type="submit" value="Download" ></input>
</form>
</td>
</tr>
<tr>
<td>
Select Sample
</td>
<td>
<form action="multicast.lua" method="get">
<select name="name" size="1" style="width: 300px">
<option value="astra19e">Astra 19.2</option>
<option value="kabelbw">Kabel BW</option>
<option value="unitymedia">Unity Media</option>
</select>
<input type="hidden" name="select" value="copy" ></input>
<input type="submit" value="Select & Enable" ></input>
</form>
</td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</tr>
<td colspan="2">
<form action="multicast.lua" method="post" enctype="multipart/form-data">
<input type="file" name="filename" value="*.csv" size="30" accept="text/csv">
<input type="submit" value="Upload & Enable">
</form>
</td>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2">
<form action="multicast.lua" method="get">
<input type="submit" value="Disable" ></input>
<input type="hidden" name="select" value="disable" ></input>
</form>
</td>
</tr>
</table>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -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

View File

@ -0,0 +1,129 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<!-- Add page scripts here -->
<script type="text/javascript">
function DisableButtons()
{
document.getElementById("RebootButton").disabled = true;
document.getElementById("RestartOctoButton").disabled = true;
document.getElementById("RestartDMSButton").disabled = true;
}
function Reboot()
{
DisableButtons();
head = document.getElementsByTagName('head')[0];
newscript = document.createElement('script');
newscript.id = "script2";
newscript.type = "text/javascript";
newscript.src = "/reboot.lua?sjiwjsiowjs";
head.appendChild(newscript);
WaitCounter = 20;
document.getElementById("updatestatus").firstChild.nodeValue = WaitCounter;
window.setTimeout(Wait,1000);
}
function RestartOcto()
{
DisableButtons();
head = document.getElementsByTagName('head')[0];
newscript = document.createElement('script');
newscript.id = "script2";
newscript.type = "text/javascript";
newscript.src = "/reboot.lua?restart_octo";
head.appendChild(newscript);
WaitCounter = 4;
document.getElementById("updatestatus").firstChild.nodeValue = WaitCounter;
window.setTimeout(Wait,1000);
}
function RestartDMS()
{
DisableButtons();
head = document.getElementsByTagName('head')[0];
newscript = document.createElement('script');
newscript.id = "script2";
newscript.type = "text/javascript";
newscript.src = "/reboot.lua?restart_dms";
head.appendChild(newscript);
WaitCounter = 4;
document.getElementById("updatestatus").firstChild.nodeValue = WaitCounter;
window.setTimeout(Wait,1000);
}
function Wait()
{
document.getElementById("updatestatus").firstChild.nodeValue = WaitCounter;
if( WaitCounter == 0 )
{
location.replace('/index.html');
}
else
{
WaitCounter = WaitCounter - 1;
window.setTimeout(Wait,1000);
}
}
</script>
</head>
<body>
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
<table class="table" align="center">
<tr>
<td id="updatestatus">&nbsp;&nbsp;</td>
</tr>
<tr>
<td>
<form action="">
<input id="RebootButton" type="Button" value="Reboot" onclick="Reboot()" />
</form>
</td>
<tr>
<tr>
<td>
<form action="">
<input id="RestartOctoButton" type="Button" value="Restart Server" onclick="RestartOcto()" />
</form>
</td>
<tr>
<tr>
<td>
<form action="">
<input id="RestartDMSButton" type="Button" value="Restart DMS" onclick="RestartDMS()" />
</form>
</td>
<tr>
</table>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -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

305
octoserve/var/www/scif.html Normal file
View File

@ -0,0 +1,305 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<script type="text/javascript" src="/scifdb.lua"></script>
<script type="text/javascript" src="/scifsettings.lua"></script>
<!-- Add page scripts here -->
<script type="text/javascript">
SCIFEnabled = false;
SelectedManufacturer = 0;
SelectedUnit = 0;
TunerList = new Array();
function SetManufacturer(ManuIndex)
{
if( SCIFEnabled ) document.getElementById("SetButton").disabled = false;
SelectedManufacturer = ManuIndex;
document.Unit.Select.length = 0;
for( j = 0; j < ManufacturerList[ManuIndex].UnitList.length; j++ )
{
document.Unit.Select.options[j] = new Option(ManufacturerList[ManuIndex].UnitList[j].Name,j, false, true);
}
SetUnit(ManufacturerList[ManuIndex].UnitList.length-1);
}
function SetUnit(UnitIndex)
{
if( SCIFEnabled ) document.getElementById("SetButton").disabled = false;
SelectedUnit = UnitIndex;
for( i = 0; i < TunerList.length; i++ )
{
TunerList[i].Select.length = 1;
CurUnit = ManufacturerList[SelectedManufacturer].UnitList[UnitIndex];
for( j = 0; j < CurUnit.Frequencies.length; j++ )
{
TunerList[i].Select.options[j+1] = new Option('Slot ' + (j+1) + ': ' + CurUnit.Frequencies[j] + ' MHz',j+1,false,true);
}
if( i < CurUnit.Frequencies.length )
{
TunerList[i].Select.options[i+1].selected = true;
}
else
{
TunerList[i].Select.options[0].selected = true;
}
}
}
function SetSlot(Tuner,SlotIndex)
{
if( SCIFEnabled ) document.getElementById("SetButton").disabled = false;
}
function SaveSettings()
{
if( SCIFEnabled )
{
param = 'Manufacturer='+SelectedManufacturer+'&Unit='+SelectedUnit+'&Type=1';
for( i = 0; i < TunerList.length; i++ )
{
param += '&Tuner'+(i+1)+'=';
CurUnit = ManufacturerList[SelectedManufacturer].UnitList[SelectedUnit];
SelectedFrequency = TunerList[i].Select.selectedIndex;
if( SelectedFrequency > 0 )
param += SelectedFrequency + ',' + CurUnit.Frequencies[SelectedFrequency-1];
else
param += '0';
}
location.replace('/scifsettings.lua?'+param);
}
else
{
location.replace('/scifsettings.lua?reset');
}
}
function SetEnable()
{
SCIFEnabled = document.getElementById("EnableButton").checked;
document.getElementById("SetButton").disabled = false;
}
function OnLoad()
{
SCIFEnabled = false;
TunerList[0] = document.Tuner1;
TunerList[1] = document.Tuner2;
TunerList[2] = document.Tuner3;
TunerList[3] = document.Tuner4;
TunerList[4] = document.Tuner5;
TunerList[5] = document.Tuner6;
TunerList[6] = document.Tuner7;
TunerList[7] = document.Tuner8;
document.Manufacturer.Select.length = 0;
for( i = 0; i < ManufacturerList.length ; i++ )
{
ManuName = ManufacturerList[i].Name;
if( ManuName == '' ) ManuName = "-----------------";
document.Manufacturer.Select.options[i] = new Option(ManuName,i, false, true);
}
for( i = 0; i < Tuner.length; i++ )
{
if( Tuner[i].Slot > 0 ) SCIFEnabled = true;
}
if( SCIFEnabled )
{
document.Manufacturer.Select.selectedIndex = Manufacturer;
SetManufacturer(Manufacturer);
document.Unit.Select.selectedIndex = Unit;
SetUnit(Unit);
for( i = 0; i < Tuner.length; i++ )
{
if( i < TunerList.length )
{
TunerList[i].Select.selectedIndex = Tuner[i].Slot;
}
}
}
else
{
document.Manufacturer.Select.selectedIndex = document.Manufacturer.Select.length - 1;
SetManufacturer(document.Manufacturer.Select.length - 1);
}
document.getElementById("EnableButton").checked = SCIFEnabled;
document.getElementById("SetButton").disabled = true;
}
</script>
</head>
<body onload="OnLoad()">
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
<table align="center">
<tr>
<td>&nbsp;</td>
<td>
<form action="">
<input id="EnableButton" type="checkbox" value="Check" checked="false" onclick="SetEnable()">
Enable Unicable (EN 50494)
</input>
</form>
</td>
</tr>
<tr>
<td>Manufacturer</td>
<td>
<form name="Manufacturer" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetManufacturer(document.Manufacturer.Select.selectedIndex)" >
<option>----</option>
</select>
</form>
</td>
</tr>
<tr>
<td>Unit</td>
<td>
<form name="Unit" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetUnit(document.Unit.Select.selectedIndex)">
<option>----</option>
</select>
</form>
</td>
</tr>
<tr>
<td>Tuner 1</td>
<td>
<form name="Tuner1" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetSlot(1,document.Tuner1.Select.selectedIndex)">
<option>----</option>
</select>
</form>
</td>
</tr>
<tr>
<td>Tuner 2</td>
<td>
<form name="Tuner2" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetSlot(2,document.Tuner2.Select.selectedIndex)">
<option>----</option>
</select>
</form>
</td>
</tr>
<tr>
<td>Tuner 3</td>
<td>
<form name="Tuner3" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetSlot(3,document.Tuner3.Select.selectedIndex)">
<option>----</option>
</select>
</form>
</td>
</tr>
<tr>
<td>Tuner 4</td>
<td>
<form name="Tuner4" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetSlot(4,document.Tuner4.Select.selectedIndex)">
<option>----</option>
</select>
</form>
</td>
</tr>
<tr>
<td>Tuner 5</td>
<td>
<form name="Tuner5" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetSlot(5,document.Tuner5.Select.selectedIndex)">
<option>----</option>
</select>
</form>
</td>
</tr>
<tr>
<td>Tuner 6</td>
<td>
<form name="Tuner6" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetSlot(6,document.Tuner6.Select.selectedIndex)">
<option>----</option>
</select>
</form>
</td>
</tr>
<tr>
<td>Tuner 7</td>
<td>
<form name="Tuner7" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetSlot(7,document.Tuner7.Select.selectedIndex)">
<option>----</option>
</select>
</form>
</td>
</tr>
<tr>
<td>Tuner 8</td>
<td>
<form name="Tuner8" action="">
<select name="Select" size="1" style="width: 300px" onchange="SetSlot(8,document.Tuner8.Select.selectedIndex)">
<option>----</option>
</select>
</form>
</td>
</tr>
<tr><td colspan="2" align="right">
<div style="width: 300px">
<form name="SetUnicable" action="">
<input type="Button" value="Cancel" onclick="location.replace('index.html')" >
<input id="SetButton" type="Button" value="Set" onclick="SaveSettings()" >
</form>
</div>
</td></tr>
</table>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -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("")

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,219 @@
--[=====================================================================[
v0.5.1 Copyright © 2013 Gavin Kistner <!@phrogz.net>; MIT Licensed
See http://github.com/Phrogz/SLAXML for details.
--]=====================================================================]
local SLAXML = {
VERSION = "0.5.1",
_call = {
pi = function(target,content)
print(string.format("<?%s %s?>",target,content))
end,
comment = function(content)
print(string.format("<!-- %s -->",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("</%s>",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, '^<!%[CDATA%[(.-)%]%]>', 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, '^</([%a_][%w_.-]*)%s*>', 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, '^</([%a_][%w_.-]*):([%a_][%w_.-]*)%s*>', 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

View File

@ -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")

View File

@ -0,0 +1,158 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Pragma" content="no-cache" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add additional scripts and settings here -->
<script id=script1 type="text/javascript" src="/octoserve/streamstatus.js"></script>
<!-- Add page scripts here -->
<script type="text/javascript">
var LastTimeStamp = 0;
var LastBytes;
function Diff(a,b)
{
if( b < 0 && a > 0 )
{
return b - a + 4294967296;
}
else
return b - a;
}
function Show()
{
for(var i = 0; i < StreamList.length ; i++ )
{
if( StreamList[i].Status == "Active" )
{
document.getElementById("elStatus"+i).firstChild.nodeValue = "Running";
document.getElementById("elInput"+i).firstChild.nodeValue = StreamList[i].Input + 1;
document.getElementById("elClient"+i).firstChild.nodeValue = StreamList[i].Client;
document.getElementById("elPackets"+i).firstChild.nodeValue = StreamList[i].Packets;
var TimeDiff = Diff(LastTimeStamp,TimeStamp);
var BytesDiff = Diff(LastBytes[i],StreamList[i].Bytes);
if( TimeDiff > 0 && BytesDiff > 0 )
{
var Speed = 8000 * BytesDiff / TimeDiff;
document.getElementById("elSpeed"+i).firstChild.nodeValue = Speed.toFixed(0);
LastBytes[i] = StreamList[i].Bytes;
}
else
document.getElementById("elSpeed"+i).firstChild.nodeValue = "";
}
else
{
document.getElementById("elStatus"+i).firstChild.nodeValue = "Stopped";
document.getElementById("elInput"+i).firstChild.nodeValue = "";
document.getElementById("elClient"+i).firstChild.nodeValue = "";
document.getElementById("elPackets"+i).firstChild.nodeValue = "";
document.getElementById("elSpeed"+i).firstChild.nodeValue = "";
LastBytes[i] = 0;
}
}
LastTimeStamp = TimeStamp;
}
function renew()
{
script = document.getElementById("script1");
head = document.getElementsByTagName('head')[0];
head.removeChild(script);
newscript = document.createElement('script');
newscript.id = "script1";
newscript.type = script.type;
newscript.src = script.src;
head.appendChild(newscript);
Show();
window.setTimeout(renew,1000);
}
function OnLoad()
{
LastBytes = new Array();
LastTimeStamp = TimeStamp;
for( var i = 0; i < StreamList.length; i++ )
{
LastBytes[i] = 0;
if( StreamList[i].Status == "Active" )
{
LastBytes[i] = StreamList[i].Bytes;
}
}
Show();
window.setTimeout(renew,1000);
}
</script>
</head>
<body onload="OnLoad()">
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="maintd">
<div class="content">
<!-- Begin Content -->
<table id="streamstatus" align="center">
<colgroup>
<col width="80px"/>
<col width="80px"/>
<col width="80px"/>
<col width="100px"/>
<col width="130px"/>
<col width="170px"/>
</colgroup>
<tr>
<th>Stream</th>
<th>Status</th>
<th>Input</th>
<th>Client</th>
<th>RTP Packets</th>
<th>Speed</th>
</tr>
<script type="text/javascript">
for( i = 0; i < StreamList.length ; i++ )
{
document.write('<tr>');
document.write('<td>' + (i+1) + '</td>');
document.write('<td id="elStatus'+i+'">&nbsp;</td>');
document.write('<td id="elInput'+i+'">&nbsp;</td>');
document.write('<td id="elClient'+i+'">&nbsp;</td>');
document.write('<td id="elPackets'+i+'">&nbsp;</td>');
document.write('<td id="elSpeed'+i+'">&nbsp;</td>');
document.write('</tr>');
}
</script>
</table>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -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;
}

View File

@ -0,0 +1,168 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<script type="text/javascript" src="/systemsettings.lua"></script>
<!-- Add page scripts here -->
<script type="text/javascript">
function SaveSettings()
{
param = "";
param += "telnet=" + (telnetEnabled?"1":"0");
param += "&";
param += "vlan=" + (vlanEnabled?"1":"0");
param += "&";
param += "nodms=" + (nodmsEnabled?"1":"0");
param += "&";
param += "nodvbt=" + (nodvbtEnabled?"1":"0");
param += "&";
param += "noswitch=" + (noswitchEnabled?"1":"0");
location.replace('/systemsettings.lua?'+param);
}
function ClearSettings()
{
telnetEnabled = false;
vlanEnabled = false;
nodmsEnabled = false;
nodvbtEnabled = false;
noswitchEnabled = false;
SaveSettings();
}
function OnLoad()
{
document.getElementById("QOSButton").checked = vlanEnabled;
document.getElementById("TelnetButton").checked = telnetEnabled;
document.getElementById("NODMSButton").checked = nodmsEnabled;
document.getElementById("NODVBTButton").checked = nodvbtEnabled;
document.getElementById("NOSwitchButton").checked = noswitchEnabled;
}
function Change()
{
vlanEnabled = document.getElementById("QOSButton").checked;
telnetEnabled = document.getElementById("TelnetButton").checked;
nodmsEnabled = document.getElementById("NODMSButton").checked;
nodvbtEnabled = document.getElementById("NODVBTButton").checked;
noswitchEnabled = document.getElementById("NOSwitchButton").checked;
document.getElementById("SetButton").disabled = false;
}
</script>
</head>
<body onload="OnLoad()">
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
<table class="tableleft" align="center" cellspacing="2px">
<tr>
<td>Layer 2 Quality of Service</td>
<td>
<form action="">
<input id="QOSButton" type="checkbox" value="Check" checked="false" onclick="Change()" />
</form>
</td>
<td>See note below</td>
<tr>
<tr>
<td>Telnet</td>
<td>
<form action="">
<input id="TelnetButton" type="checkbox" value="Check" checked="false" onclick="Change()" />
</form>
</td>
<td>Enable it at your own risk</td>
<tr>
<tr>
<td>NODMS</td>
<td>
<form action="">
<input id="NODMSButton" type="checkbox" value="Check" checked="false" onclick="Change()" />
</form>
</td>
<td>Disable DMS announcement.</td>
<tr>
<tr>
<td>NODVBT</td>
<td>
<form action="">
<input id="NODVBTButton" type="checkbox" value="Check" checked="false" onclick="Change()" />
</form>
</td>
<td>Disable DVBT announcement.</td>
<tr>
<tr>
<td>No DVB switch</td>
<td>
<form action="">
<input id="NOSwitchButton" type="checkbox" value="Check" checked="false" onclick="Change()" />
</form>
</td>
<td>Disable DVB switch emulation on S8.</td>
<tr>
<tr>
<td colspan="2" align="right">
<div style="width: 300px">
<form action="">
<input type="Button" value="Cancel" onclick="location.replace('index.html')" >
<input type="Button" value="Reset" onclick="ClearSettings()" >
<input id="SetButton" type="Button" disabled="true" value="Set" onclick="SaveSettings()" >
</form>
</div>
</td>
</tr>
</table>
<div style="margin:20px; clear:both">
<h3>Layer 2 Quality of Service</h3>
This is defined in the <b>IEEE 802.1Q</b> VLAN standard, and provides QoS in a local network.<br/>
For it to work all components in the LAN must either be transparent to it or need to support it.
<li><b>hubs:</b> always transparent.</li>
<li><b>dumb switches:</b> usually transparent, better ones use it to prioritise the traffic.</li>
<li><b>smart switches:</b> depends on setting.</li>
<li><b>PCs and the like:</b> newer systems support it by default, for older systems check the LAN adapter settings.</li>
<li><b>WLAN access points:</b> depends on firmware and model. OpenWRT based devices usually work.</li>
<br>
Dies ist im <b>IEEE 802.1Q</b> VLAN Standard definiert und erlaubt QoS im lokalem Netz.<br/>
Damit es funktioniert m&uuml;ssen alle Netzwerkkompenenten im LAN entweder transparent sein oder es unterst&uuml;tzen.
<li><b>Hubs:</b> sind immer transparent</li>
<li><b>Dumb Switches:</b> normalerweise transparent, bessere prioritisieren damit den Datenverkehr</li>
<li><b>Smart Switches:</b> h&auml;ngt von den Einstellungen ab</li>
<li><b>PCs und dergleichen:</b> neue Systeme unterst&uuml;tzten es defaultmässig, für &auml;ltere in den Einstellungen der Netzwerkarte nachschauen</li>
<li><b>WLAN Accesspoints:</b> h&auml;ngt von Modell und deren Firmware ab. OpenWRT basierte Ger&auml;te unterst&uuml;tzen es normalerweise</li>
</div>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>
</html>

View File

@ -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))

View File

@ -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

View File

@ -0,0 +1,63 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<!-- Add page scripts here -->
<script type="text/javascript">
</script>
</head>
<body>
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
bla bla
<p/>
bla bla
<p/>
bla bla
<p/>
bla bla
<p/>
bla bla
<p/>
bla bla
<p/>
bla bla
<p/>
bla bla
<p/>
bla bla
<p/>
bla bla
<p/>
bla bla
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -0,0 +1,118 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add additional scripts and settings here -->
<meta http-equiv="Pragma" content="no-cache" />
<script id=script1 type="text/javascript" src="/octoserve/tunerstatus.js"></script>
<!-- Add page scripts here -->
<script type="text/javascript">
function Show()
{
for( i = 0; i < TunerList.length ; i++ )
{
if( TunerList[i].Active )
{
if( TunerList[i].Lock )
{
document.getElementById("elStatus"+i).firstChild.nodeValue = "Locked";
document.getElementById("elStrength"+i).firstChild.nodeValue = TunerList[i].Strength;
document.getElementById("elQuality"+i).firstChild.nodeValue = TunerList[i].Quality;
}
else
{
document.getElementById("elStatus"+i).firstChild.nodeValue = "No Signal";
document.getElementById("elStrength"+i).firstChild.nodeValue = "";
document.getElementById("elQuality"+i).firstChild.nodeValue = "";
}
}
else
{
document.getElementById("elStatus"+i).firstChild.nodeValue = "";
document.getElementById("elStrength"+i).firstChild.nodeValue = "";
document.getElementById("elQuality"+i).firstChild.nodeValue = "";
}
}
}
function renew()
{
script = document.getElementById("script1");
head = document.getElementsByTagName('head')[0];
head.removeChild(script);
newscript = document.createElement('script');
newscript.id = "script1";
newscript.type = script.type;
newscript.src = script.src;
head.appendChild(newscript);
Show();
window.setTimeout(renew,1000);
}
</script>
</head>
<body>
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="maintd">
<div class="content">
<!-- Begin Content -->
<table id="tunerstatus" align="center">
<tr>
<th>
Tuner
</th>
<th>
Lock
</th>
<th>
Strength
</th>
<th>
Quality
</th>
</tr>
<script type="text/javascript">
for( i = 0; i < TunerList.length ; i++ )
{
document.write('<tr>');
document.write('<td>' + (i+1) + '</td>');
document.write('<td id="elStatus'+i+'">&nbsp;</td>');
document.write('<td id="elStrength'+i+'">&nbsp;</td>');
document.write('<td id="elQuality'+i+'">&nbsp;</td>');
document.write('</tr>');
}
Show();
window.setTimeout(renew,1000);
</script>
</table>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -0,0 +1,136 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/menu.js"></script>
<!-- Add included scripts here -->
<script type="text/javascript" src="/systeminfo.lua"></script>
<!-- Add page scripts here -->
<script type="text/javascript">
isChecking = false;
UpdateInfo = "";
CheckDone = false;
UpdateAvailable = false;
function FWVersion(fwdate)
{
if( fwdate.length > 0 )
{
// Jahr, Monat, Tag, Stunden, Minuten
// date = new Date("20"+fwdate.substr(0,2),fwdate.substr(2,2)-1,fwdate.substr(4,2),fwdate.substr(6,2),fwdate.substr(8,2),"0");
var date = new Date(1);
date.setUTCDate(fwdate.substr(4,2));
date.setUTCFullYear("20"+fwdate.substr(0,2));
date.setUTCMonth(fwdate.substr(2,2)-1);
date.setUTCHours(fwdate.substr(6,2));
date.setUTCMinutes(fwdate.substr(8,2));
var ds = date.toGMTString();
return (ds.substring(5,ds.length-7));
}
return ("?");
}
function CheckUpdateDone()
{
if( CheckDone )
{
script = document.getElementById("script1");
head = document.getElementsByTagName('head')[0];
head.removeChild(script);
if( UpdateInfo != "" )
{
document.getElementById("UpdateButton").value = "Update";
document.getElementById("updatemsg").firstChild.nodeValue = "New firmware/system package available";
document.getElementById("updatestatus").firstChild.nodeValue = "Version: " + FWVersion(UpdateInfo);
UpdateAvailable = true;
}
else
document.getElementById("updatestatus").firstChild.nodeValue = "No update available";
isChecking = false;
document.getElementById("UpdateButton").disabled = false;
}
else
{
window.setTimeout(CheckUpdateDone,100);
}
}
function CheckUpdate()
{
if( !isChecking )
{
document.getElementById("UpdateButton").disabled = true;
isChecking = true;
if( UpdateAvailable )
{
location.replace('/doupdate.html');
}
else
{
CheckDone = false;
document.getElementById("updatestatus").firstChild.nodeValue = "***** Checking ******";
head = document.getElementsByTagName('head')[0];
newscript = document.createElement('script');
newscript.id = "script1";
newscript.type = "text/javascript";
newscript.src = "/update.lua?check";
head.appendChild(newscript);
window.setTimeout(CheckUpdateDone,100);
}
}
}
</script>
</head>
<body>
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<a href="http://www.digitaldevices.de"><img src="/BannerDD.jpg" alt="DD" width="910" height="130" /></a>
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"><script type="text/javascript">CreateMenu();</script></td>
<td class="content">
<div>
<!-- Begin Content -->
<table class="table" align="center">
<tr>
<td id="updatemsg">Check for firmware/system update:</td>
<td>
<form action="">
<input id="UpdateButton" type="Button" value="Check" onclick="CheckUpdate()" />
</form>
</td>
<tr>
<tr>
<td id="updatestatus">&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

View File

@ -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

View File

@ -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")

View File

@ -0,0 +1,61 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>OctopusNet</title>
<link rel="stylesheet" type="text/css" href="/style.css">
<!-- Add page scripts here -->
<script type="text/javascript">
function Wait()
{
if( WaitCounter == 0 )
{
location.replace('/index.html');
}
else
{
WaitCounter = WaitCounter - 1;
document.getElementById("waitcounter").firstChild.nodeValue = WaitCounter;
window.setTimeout(Wait,1000);
}
}
function OnLoad()
{
WaitCounter = 5;
document.getElementById("waitcounter").firstChild.nodeValue = WaitCounter;
window.setTimeout(Wait,1000);
}
</script>
</head>
<body onload="OnLoad()">
<table class="maintable" align="center">
<colgroup>
<col width="182px"/>
<col width="728px"/>
</colgroup>
<tr><td class="maintd" colspan="2">
<img src="/BannerDD.jpg" alt="DD" width="910" height="130" />
</td></tr>
<tr><td class="maintd" colspan="2">&nbsp;</td></tr>
<tr>
<td class="maintd"></script></td>
<td class="content">
<div>
<!-- Begin Content -->
<h1 id="waitcounter" align="center">&nbsp;</h1>
<!-- End Content -->
</div>
</td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
</table>
</body>
</html>

23
octoserve/version.h Normal file
View File

@ -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 <http://www.gnu.org/licenses/>.
*/
#ifndef _OCTOSERVE_VERSION_
#define _OCTOSERVE_VERSION_
#define OCTOSERVE_VERSION "1.0.46"
#endif

1073
u-boot.patch Normal file

File diff suppressed because it is too large Load Diff