mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-31 01:11:12 +02:00
our current experimental Neutrino branch
git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@27 e54a6e83-5905-42d5-8d5c-058d10e6a962
This commit is contained in:
21
src/nhttpd/AUTHORS
Normal file
21
src/nhttpd/AUTHORS
Normal file
@@ -0,0 +1,21 @@
|
||||
AUTHORS
|
||||
of Neutrino Webserver
|
||||
in order of appearance (bottom up)
|
||||
|
||||
|
||||
Johannes Golombek [yjogol@cvs.tuxbox.org]
|
||||
Bengt Martensson [barf@cvs.tuxbox.org]
|
||||
Jacek Jendrzej [metallica@cvs.tuxbox.org]
|
||||
Henning Behrend [sat_man@cvs.tuxbox.org]
|
||||
Axel Buehning [diemade@cvs.tuxbox.org]
|
||||
Michael Schuele [chakazulu@cvs.tuxbox.org]
|
||||
Peter Reich [digi_casi@cvs.tuxbox.org]
|
||||
H.Heinold [heinold@physik.tu-cottbus.de]
|
||||
Sven Traenkle [zwen@cvs.tuxbox.org]
|
||||
gagga <gagga@berlios.de>
|
||||
wjoost <wjoost@berlios.de>
|
||||
Ralf Gandy <thegoodguy@berlios.de>
|
||||
Michael Lantzen <leahcim@berlios.de>
|
||||
Andreas Oberritter <obi@berlios.de>
|
||||
Dirk Szymanski [dirch@cvs.tuxbox.org]
|
||||
Steffen Hehn <mcclean@berlios.de>
|
340
src/nhttpd/COPYING
Normal file
340
src/nhttpd/COPYING
Normal file
@@ -0,0 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
18
src/nhttpd/Makefile.am
Normal file
18
src/nhttpd/Makefile.am
Normal file
@@ -0,0 +1,18 @@
|
||||
SUBDIRS = yhttpd_core yhttpd_mods tuxboxapi web
|
||||
|
||||
AM_CPPFLAGS = -fno-rtti -fno-exceptions
|
||||
|
||||
INCLUDES = \
|
||||
-I$(top_srcdir)/lib \
|
||||
-I$(top_srcdir)/src \
|
||||
-I$(top_srcdir)/src/zapit/include \
|
||||
-I$(top_srcdir)/src/nhttpd/yhttpd_core \
|
||||
-I$(top_srcdir)/src/nhttpd/yhttpd_mods \
|
||||
-I$(top_srcdir)/src/nhttpd/tuxboxapi \
|
||||
-I$(top_srcdir)/lib/libeventserver \
|
||||
-I$(top_srcdir)/lib/libconfigfile \
|
||||
-I$(top_srcdir)/lib/connection \
|
||||
@FREETYPE_CFLAGS@
|
||||
|
||||
noinst_LIBRARIES = libnhttpd.a
|
||||
libnhttpd_a_SOURCES = yhttpd.cpp
|
18
src/nhttpd/README
Normal file
18
src/nhttpd/README
Normal file
@@ -0,0 +1,18 @@
|
||||
------------------------------------------------------------------------------
|
||||
nhttpd Version 3.x = (yhttpd 3.x + tuxboxapi)
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
13.09.2006 (yjogol)
|
||||
-------------------
|
||||
Starting with Version 3.0 the nhttpd source code was splitted into
|
||||
a core Webserver (yhttpd_core), extension modules (yhttpd_mods) and the
|
||||
tuxbox specific code (tuxboxapi).
|
||||
|
||||
The yhttpd_core and yhttp_mods are completly rewritten.
|
||||
All Neutrino specific code was reorganized into yParser- and ControlAPI-code.
|
||||
|
||||
The Hook-System (extension modules) encapsulate all requests and responses
|
||||
for the tuxboxapi. So both tuxboxapi and yhttpd can be developed seperatlly and
|
||||
independ from each other.
|
||||
|
||||
Look at yhttpd_core/README
|
320
src/nhttpd/doc/Changelog.txt
Normal file
320
src/nhttpd/doc/Changelog.txt
Normal file
@@ -0,0 +1,320 @@
|
||||
Severity id Headline Build
|
||||
|
||||
5-Enhancement JG200000540 nhttpd: new: /y/cache-info view and clear cache nhttpd 3.0.5
|
||||
5-Enhancement JG200000553 Live: Support for Non-compatible HTTP1.1-Clients like JtG-Servernhttpd 3.0.5
|
||||
5-Enhancement JG200000548 nhttpd: new hooks for Upload handling n httpd 3.0.5
|
||||
5-Enhancement JG200000549 nhttpd: mod_auth new Base64 algorism nhttpd 3.0.5
|
||||
5-Enhancement JG200000545 nhttpd: upload POST works with SSL now nhttpd 3.0.5
|
||||
5-Enhancement JG200000528 nhttpd: Autentication: new implemented nhttpd 3.0.5
|
||||
5-Enhancement JG200000538 nhttpd: yParser Cache nhttpd 3.0.5
|
||||
5-Enhancement JG200000544 nhttpd: new format of nhttpd.conf nhttpd 3.0.5
|
||||
5-Enhancement JG200000541 nhttpd: new /y/server-config nhttpd 3.0.5
|
||||
5-Enhancement JG200000550 nhttpd: add SSL support nhttpd 3.0.5
|
||||
5-Enhancement JG200000542 nhttpd: new module mod_cache for caching dynamic content nhttpd 3.0.5
|
||||
5-Enhancement JG200000543 nhttpd: new module mod_weblog CLF and ELF logging nhttpd 3.0.5
|
||||
5-Enhancement JG200000547 nhttpd: more Features for HTTP1.1 support nhttpd 3.0.5
|
||||
5-Enhancement JG200000546 nhttpd: new Socket multiplexing for multi-threading nhttpd 3.0.5
|
||||
5-Enhancement JG200000536 nhttpd: Upload Progress .. nhttpd 3.0.5
|
||||
|
||||
5-Enhancement JG200000552 Settings: Support for new nhttpd.conf Format R2.2.0
|
||||
5-Enhancement JG200000530 nhttpd: Webserver (yhhtpd) rewritten nhttpd 3.0.0
|
||||
5-Enhancement JG200000529 nhttpd: split nhttpd in yhttpd_core, yhttpd_mods, neutrinoAPI nhttpd 3.0.0
|
||||
5-Enhancement JG200000527 Bouquet: Bouquet-Editor moved to tools R2.1.0
|
||||
5-Enhancement JG200000523 Bouquet-Editor: new implemented R2.1.0
|
||||
5-Enhancement JG200000526 Bouquet: EPG-List: new implemented R2.1.0
|
||||
5-Enhancement JG200000534 Boxcontrol: Use /control/standby to determine standby status R2.1.0
|
||||
5-Enhancement JG200000440 Timer: ANNOUNCE_TIME_1=-120 at Rec from EPG .. R2.1.0
|
||||
5-Enhancement JG200000524 Timer: TimerList new implemented R2.1.0
|
||||
5-Enhancement JG200000531 Timer: use RecordingSafty in Timer-Prog R2.1.0
|
||||
5-Enhancement JG200000525 Timer: add/modify Timer: new implemented R2.1.0
|
||||
4-Minor JG200000522 Tools: Flash fix reboot button R2.1.0
|
||||
|
||||
5-Enhancement JG200000511 GUI: disable AutoMount if ManagementIP does not match R2.0.2
|
||||
4-Minor JG200000519 Live: VLC Snapshot with IE works again R2.0.2
|
||||
5-Enhancement JG200000512 Live: fix: Fullscreen-Button (IE) does not work R2.0.2
|
||||
5-Enhancement JG200000518 Live: add EPG-Button for Popup R2.0.2
|
||||
3-Average JG200000517 Record: fixed: Record without transcoding works again R2.0.2
|
||||
5-Enhancement JG200000514 Settings: Diverse: add EPG-Settings R2.0.2
|
||||
5-Enhancement JG200000513 Settings: Diverse: add Virtual zap R2.0.2
|
||||
|
||||
3-Average JG200000504 fix: call dboxshot correctly if installed in /var/bin (in Remote OSD) R2.0.1
|
||||
3-Average JG200000506 Live: fixed Problems switching channels in LiveTV/Radio R2.0.1
|
||||
5-Enhancement JG200000507 Live: MiniEPG only on demand R2.0.1
|
||||
|
||||
5-Enhancement JG200000478 Boxcontrol: OSD Screenshot: Support for dboxshot R2.0.0
|
||||
5-Enhancement JG200000480 Boxcontrol: Control: Live lock / unlock R2.0.0
|
||||
5-Enhancement JG200000482 Boxcontrol: Control: new: Standby Status R2.0.0
|
||||
5-Enhancement JG200000483 EPG: Link to IMDB R2.0.0
|
||||
5-Enhancement JG200000498 Boxcontrol: add SPTS Status R2.0.0
|
||||
5-Enhancement JG200000497 Boxcontrol: New RC-Imake: Nokia-Remote R2.0.0
|
||||
5-Enhancement JG200000494 Boxcontrol: Control: Add optical Output on/off/status R2.0.0
|
||||
4-Minor JG200000392 GUI: initialize Volumen correctly .. R2.0.0
|
||||
5-Enhancement JG200000331 GUI: all Pages W3C XHTML 1.0 conform .. R2.0.0
|
||||
5-Enhancement JG200000465 GUI: new volumen control R2.0.0
|
||||
5-Enhancement JG200000459 GUI: new yWeb 2.0 Layout R2.0.0
|
||||
5-Enhancement JG200000254 GUI: Show channel-logos (if mounted) R2.0.0
|
||||
5-Enhancement JG200000455 GUI: Help: New Item to Wiki R2.0.0
|
||||
5-Enhancement JG200000449 GUI: show actual time in main menu R2.0.0
|
||||
5-Enhancement JG200000439 GUI: show custom text in Menue to identify box (if you have several boxes) R2.0.0
|
||||
5-Enhancement JG200000468 Info: add external Links for getting help R2.0.0
|
||||
5-Enhancement JG200000473 Live: Radio-Streaming with VLC (0.8.5) New! R2.0.0
|
||||
5-Enhancement JG200000500 Live: Transcode: own dialogue and more settings R2.0.0
|
||||
5-Enhancement JG200000464 Live: Mini EPG for actual channel R2.0.0
|
||||
5-Enhancement JG200000484 Live: dont show bouquet if set to hidden R2.0.0
|
||||
5-Enhancement JG200000408 Live: deinterlace & http-caching R2.0.0
|
||||
5-Enhancement JG200000492 Live: Set Timer from Mini EPG R2.0.0
|
||||
5-Enhancement JG200000457 Record: Transcode while recording R2.0.0
|
||||
5-Enhancement JG200000443 Record: new option: display off R2.0.0
|
||||
5-Enhancement JG200000458 Record: add Profiles for transcoding (iPodVideo, custom...) R2.0.0
|
||||
5-Enhancement JG200000474 Record: Radio-Recording & Transcoding (VLC) to mp3, iPod, custom R2.0.0
|
||||
5-Enhancement JG200000477 Record: Radio-Recording & Transcoding (mp3, iPod, custom) R2.0.0
|
||||
5-Enhancement JG200000456 Settings: Backup & Restore settings R2.0.0
|
||||
5-Enhancement JG200000475 Settings: new direct recording Filename template R2.0.0
|
||||
5-Enhancement JG200000496 settings: remove support antiservices.xml R2.0.0
|
||||
5-Enhancement JG200000479 Settings: New Menu for Live-Settings R2.0.0
|
||||
5-Enhancement JG200000487 Settings: WebServer: new ExtrasDocRoot/URL R2.0.0
|
||||
5-Enhancement JG200000134 Timer: new: EPG+ R2.0.0
|
||||
5-Enhancement JG200000452 Timer: SyncTimer: Switch to TV only from radio-mode R2.0.0
|
||||
5-Enhancement JG200000490 Timer: EPG+ add set timer and zapto R2.0.0
|
||||
4-Minor JG200000137 Tools: Message to box displays special charachers correct R2.0.0
|
||||
5-Enhancement JG200000448 Tools: Wake on Lan fix Javascript Error R2.0.0
|
||||
5-Enhancement JG200000470 Tools: Flash image: add Demo mode R2.0.0
|
||||
5-Enhancement JG200000469 Tools: Flash image: new dialogs R2.0.0
|
||||
5-Enhancement JG200000476 Tools: AutoMount (Warmduscher Interface) R2.0.0
|
||||
|
||||
3-Average JG200000485 nhttpd: fixed: yvars now in WebserverRequest (multi-threading) nhttpd 2.2.4
|
||||
5-Enhancement JG200000463 nhttpd: add EPG data in XML format nhttpd 2.2.4
|
||||
5-Enhancement JG200000486 nhttpd: add caching for blocks nhttpd 2.2.4
|
||||
5-Enhancement JG200000488 nhttpd: Set Timer, zapto,epg: Channel_name with multiple values .. nhttpd 2.2.4
|
||||
5-Enhancement JG200000491 nhttpd: new: XML-Format for bouquets nhttpd 2.2.4
|
||||
5-Enhancement JG200000495 nhttpd: new: zapto?getallsubchannels nhttpd 2.2.4
|
||||
|
||||
5-Enhancement JG200000399 Boxcontrol: view box record-status .. R1.5.0
|
||||
3-Average JG200000424 Bouquetedit: fixed probs with Firefox 1.5 editing problems R1.5.0
|
||||
5-Enhancement JG200000414 GUI: Links to Wiki R1.5.0
|
||||
3-Average JG200000420 Live: fixed Stream-URL problems with yadd & Firefox R1.5.0
|
||||
5-Enhancement JG200000432 Live: Radio works with yadds R1.5.0
|
||||
5-Enhancement JG200000351 LiveView: Build Stream-URL with ClientAddr (for NAT, Remapping) R1.5.0
|
||||
4-Minor JG200000433 Settings: WOL fixed Javascript Errors R1.5.0
|
||||
5-Enhancement JG200000394 Settings: add: Neutrino direct recording settings ... R1.5.0
|
||||
5-Enhancement JG200000417 Settings: WebServer: add HostedDocumentRoot R1.5.0
|
||||
5-Enhancement JG200000418 Settings: WebServer: add NoAuthClient R1.5.0
|
||||
5-Enhancement JG200000373 Settings: yWeb speed up using caching R1.5.0
|
||||
5-Enhancement JG200000434 Settings: WOL Link to yWeb-Settings R1.5.0
|
||||
5-Enhancement JG200000435 Settings: About: Links to Wiki R1.5.0
|
||||
5-Enhancement JG200000425 Timer: SyncTimer: added start and stop deplay from recording settings R1.5.0
|
||||
5-Enhancement JG200000405 Timer: Sync Timer: add rec_dir R1.5.0
|
||||
5-Enhancement JG200000231 Timer: tvinfo.de download & TimerSync R1.5.0
|
||||
5-Enhancement JG200000398 Timer: new timer default now: record R1.5.0
|
||||
4-Minor JG200000410 Tools: Sagem RC is displayed in primary menu R1.5.0
|
||||
5-Enhancement JG200000415 Tools: new: Check Installation R1.5.0
|
||||
5-Enhancement JG200000348 Tools: Info: use echo -e to advoid escaped newline output R1.5.0
|
||||
|
||||
5-Enhancement JG200000438 nhttpd: add Timer: rec_dir from neutrino.conf as default nhttpd 2.2.3
|
||||
5-Enhancement JG200000423 nhttpd: fixed lost Data in POST-Method (Mozilla/Firefox) nhttpd 2.2.2
|
||||
5-Enhancement JG200000422 nhttpd: No Authentication with new NoAuthClient fixed nhttpd 2.2.2
|
||||
5-Enhancement JG200000428 nhttpd: ini-set caching: clear config on open nhttpd 2.2.2
|
||||
|
||||
5-Enhancement JG200000294 nhttpd: Host other Webs (Root defined at HostedDocumentRoot in nhttpd.conf) nhttpd 2.2.1
|
||||
5-Enhancement JG200000388 nhttpd: set IP with no authentication (e.g. for JtG etc) nhttpd 2.2.1
|
||||
5-Enhancement JG200000416 nhttdp: zapto mit channel_name nhttpd 2.2.1
|
||||
|
||||
3-Average JG200000369 Live: fixed problems switching Radio-Channels R1.4.3
|
||||
4-Minor JG200000355 nhttpd: change port now used in Scripts R1.4.3
|
||||
4-Minor JG200000365 Settings: fixed: upload cam-alpha.bin now named correctly R1.4.3
|
||||
5-Enhancement JG200000366 settings: add port to WebServer settings R1.4.3
|
||||
5-Enhancement JG200000367 gui: add remote control for Sagem R1.4.3
|
||||
5-Enhancement JG200000389 tools: restart sectionsd R1.4.3
|
||||
5-Enhancement JG200000391 flash: fixed reboot after flashing R1.4.3
|
||||
|
||||
4-Minor JG200000359 tools: fix reboot after flash R1.4.2
|
||||
5-Enhancement JG200000332 Live: record: filepath settings at settings->yWeb R1.4.2
|
||||
5-Enhancement JG200000337 bouquets: start bouquetlist at actual bouquet R1.4.2
|
||||
5-Enhancement JG200000360 bouquet: text in black again R1.4.2
|
||||
|
||||
5-Enhancement JG200000127 flash download: button for delete download-image in /tmp R1.4.1
|
||||
5-Enhancement JG200000339 nhttpd: new: file-action:<filename>;<action>;<content> R1.4.1
|
||||
5-Enhancement JG200000340 new: Neutrino-Settings: pictureviewer R1.4.1
|
||||
5-Enhancement JG200000341 new: Neutrino-Settings: Audioplayer R1.4.1
|
||||
5-Enhancement JG200000342 new: Neutrino-Settings: Movieplayer R1.4.1
|
||||
5-Enhancement JG200000343 new: Neutrino-Settings: Diverse R1.4.1
|
||||
5-Enhancement JG200000344 new: Neutrino-Settings: Boot Options R1.4.1
|
||||
5-Enhancement JG200000345 new: Neutrino-Settings: Parental R1.4.1
|
||||
5-Enhancement JG200000346 new: Neutrino-Settings: Recording R1.4.1
|
||||
5-Enhancement JG200000347 Timer: add recordingDir R1.4.1
|
||||
|
||||
3-Average JG200000156 Flash: Error in mtd list if length!=5 R1.4.0
|
||||
5-Enhancement JG200000326 Flash: New Dialogs R1.4.0
|
||||
5-Enhancement JG200000233 Tools: new: Wake on LAN for 3 MACs R1.4.0
|
||||
5-Enhancement JG200000246 mount: do mount at mount list R1.4.0
|
||||
5-Enhancement JG200000247 mount: new: unmount list R1.4.0
|
||||
5-Enhancement JG200000305 infos: /proc/cpuinfo, meminfo, version... R1.4.0
|
||||
5-Enhancement JG200000271 nhttpd: ycgi: new: include-block:<filename>;<blockname>;<default> R1.4.0
|
||||
5-Enhancement JG200000314 nhttpd: ycgi: new: ini-set:<filename>;<varname>;<value> R1.4.0
|
||||
5-Enhancement JG200000234 nhttpd: ycgi: new: if-file-exists:<filename>~<true>~<false> R1.4.0
|
||||
5-Enhancement JG200000315 nhttpd: ycgi: new: if-not-equal R1.4.0
|
||||
5-Enhancement JG200000317 nhttpd: ycgi: new: add var-set, var-get for local ycgi varables R1.4.0
|
||||
5-Enhancement JG200000318 Live: Experimental: Change VLC audio channel R1.4.0
|
||||
5-Enhancement JG200000311 Live: record (Expert Mode ActiveX).. R1.4.0
|
||||
5-Enhancement JG200000312 Live: record: mux type = ts, ps R1.4.0
|
||||
5-Enhancement JG200000319 Live: Expert Mode: Take VLC Snapshot R1.4.0
|
||||
5-Enhancement JG200000320 after change Web Password: reload nhttpd.conf R1.4.0
|
||||
5-Enhancement JG200000325 General from-dialog updates R1.4.0
|
||||
5-Enhancement JG200000327 New: OSD Snapshot with fbshot R1.4.0
|
||||
5-Enhancement JG200000316 Management IP for some dialogs required R1.4.0
|
||||
|
||||
3-Average JG200000308 nhttpd: re-write file upload handling (solved: problems with pre-send data - mozilla engines) R1.3.6
|
||||
5-Enhancement JG200000144 Live: add Streaminfo button R1.3.6
|
||||
5-Enhancement JG200000145 yInstaller: upload a tar-file and execude included install.sh R1.3.6
|
||||
5-Enhancement JG200000287 WebIF: telnet like commandline R1.3.6
|
||||
5-Enhancement JG200000292 Live: channel-EPG-Panel autorefresh all 5min R1.3.6
|
||||
5-Enhancement JG200000297 Live: epg preview for selected channel R1.3.6
|
||||
5-Enhancement JG200000304 nhttpd: new func get_request_data R1.3.6
|
||||
5-Enhancement JG200000307 nhttpd: re-write file upload handling (saving memory) R1.3.6
|
||||
|
||||
4-Minor JG200000266 Settings: WebServer JavaScript-Error for field port R1.3.5
|
||||
4-Minor JG200000269 _Y_Library.sh:config_set_value() interpret backslash R1.3.5
|
||||
4-Minor JG200000232 Live:Sprache: DropDown ins TV Fenster R1.3.5
|
||||
5-Enhancement JG200000141 Live: enable select audio-pid R1.3.5
|
||||
5-Enhancement JG200000237 robots.txt in html-root R1.3.5
|
||||
5-Enhancement JG200000255 keine hard-links nach httpd-y (z.B. _Y_Globals.sh) R1.3.5
|
||||
5-Enhancement JG200000272 Dialog Boot-Logo und LCD-Logo zusammenfassen R1.3.5
|
||||
5-Enhancement JG200000277 Tooltips in english R1.3.5
|
||||
5-Enhancement JG200000278 Tools->msg beide Dialoge zusammenfassen R1.3.5
|
||||
5-Enhancement JG200000280 tools: move Message to Boxcontrol R1.3.5
|
||||
5-Enhancement JG200000284 use image am maps for web-based remote control R1.3.5
|
||||
|
||||
4-Minor JG200000216 nhttp: Upload temporary file moved from /var/tmp to /tmp/upload.tmp R1.3.4
|
||||
5-Enhancement JG200000139 Live: EPG-Title in Channel-Dropdown R1.3.4
|
||||
5-Enhancement JG200000212 nhttpd: use relative path for includes R1.3.4
|
||||
5-Enhancement JG200000217 nhttpd: ycgi: set Working-Dir to template path R1.3.4
|
||||
5-Enhancement JG200000227 ycgi: new:func:get_audio_pids_as_dropdown R1.3.4
|
||||
5-Enhancement JG200000229 remote RC via Web R1.3.4
|
||||
|
||||
5-Enhancement JG200000218 ycgi: new cmd: if-empty R1.3.3
|
||||
5-Enhancement JG200000219 ycgi: new cmd: if-equal R1.3.3
|
||||
5-Enhancement JG200000220 ycgi: new:func:get_bouquts_as_dropdown R1.3.3
|
||||
5-Enhancement JG200000221 ycgi: new:func:get_actual_bouquet_numer R1.3.3
|
||||
5-Enhancement JG200000222 ycgi: new:func:get_canel_as_dropdown R1.3.3
|
||||
5-Enhancement JG200000223 ycgi: new:func:get_actual_channel_id R1.3.3
|
||||
5-Enhancement JG200000224 ycgi: new:func:get_mode R1.3.3
|
||||
5-Enhancement JG200000225 ycgi: new:func:get_video_pids R1.3.3
|
||||
5-Enhancement JG200000226 ycgi: new:func:get_radio_pid R1.3.3
|
||||
5-Enhancement JG200000235 ycgi: Neu *.yhtm-Dateien & Reorg der Dateien R1.3.3
|
||||
|
||||
5-Enhancement JG200000035 Live: Window size configurable R1.3.2
|
||||
5-Enhancement JG200000107 Live: new: Double-View R1.3.2
|
||||
5-Enhancement JG200000206 nhttpd: Set Working dir for Skripts R1.3.2
|
||||
5-Enhancement JG200000207 scripts: relative local include path R1.3.2
|
||||
5-Enhancement JG200000209 correct Frame-Destinations VNC, Skins, WebServer R1.3.2
|
||||
5-Enhancement JG200000210 Settings: yWeb Configurator (slave box, live resolution) R1.3.2
|
||||
5-Enhancement JG200000211 add ucode.bin for up/download R1.3.2
|
||||
|
||||
5-Enhancement JG200000200 Live: Radio: Player via Dateierweiterung m3u, m4u starten R1.3.1
|
||||
3-Average JG200000147 LiveView nur 9 Bouquets im Dropdown. fixed. R1.3.1
|
||||
4-Minor JG200000179 dietmarW-Images habe kein /var/tmp also /tmp nutzen R1.3.1
|
||||
5-Enhancement JG200000084 Plugins: Settings: Mount-Einstellungen R1.3.1
|
||||
5-Enhancement JG200000182 Live: Bouquets & Channel: Dropdown Breite begrenzen R1.3.1
|
||||
5-Enhancement JG200000183 Bouquets: epg und settings im yWeb_Layout R1.3.1
|
||||
5-Enhancement JG200000184 ycgi: execute=<script/func> wird als erstes ausgefhrt R1.3.1
|
||||
5-Enhancement JG200000185 ycgi: Parameter tmpl=<html-Seite> wird geparsed und ausgegeben R1.3.1
|
||||
5-Enhancement JG200000187 nhhtpd.conf, wenn neu erstellt dann httpd-y in Private-Path R1.3.1
|
||||
5-Enhancement JG200000192 Link auf Tuxbox-Wiki. Klick Logo (links oben) R1.3.1
|
||||
5-Enhancement JG200000195 ycgi: New Parsing-Engine /y/cgi?... R1.3.1
|
||||
5-Enhancement JG200000196 nhttpd: simplfy execCGI in controlAPI R1.3.1
|
||||
5-Enhancement JG200000197 nhttpd: PLUGIN_DIRS jetzt in ControlAPI Constructor R1.3.1
|
||||
5-Enhancement JG200000198 Tools: Test wird nicht mehr gebraucht. nhttpd in CVS R1.3.1
|
||||
5-Enhancement JG200000199 Tools: nicht mehr mit Boxcontrol starten R1.3.1
|
||||
|
||||
4-Minor JG200000064 Live: geht nicht wenn SPTS aus-> vorher einschalten R1.3.0
|
||||
4-Minor JG200000099 Tools-Format-Template (sed wie mount-liste) Vereinfachung R1.3.0
|
||||
4-Minor JG200000149 Flash: Vor Upload *.img in tmp l<>chen R1.3.0
|
||||
5-Enhancement JG200000062 Live: TV als PopUp R1.3.0
|
||||
5-Enhancement JG200000120 Live: LCD Display, FB, Playback sperren/Live View R1.3.0
|
||||
5-Enhancement JG200000121 Live Option Bilschirm am TV aus R1.3.0
|
||||
5-Enhancement JG200000133 start_neutrino raus wenn nhttpd im CVS R1.3.0
|
||||
5-Enhancement JG200000140 Live: Bouquet und Channel direkt ausw<73>len R1.3.0
|
||||
5-Enhancement JG200000152 Live: Play/Pause als ToggleBar R1.3.0
|
||||
5-Enhancement JG200000153 Live: lock/unlock als ToggleBar R1.3.0
|
||||
5-Enhancement JG200000155 nhttpd: Controlapi.cpp Suchreihenfolge Plugins: Var... zuerst R1.3.0
|
||||
5-Enhancement JG200000157 Anderer Ort fr die Scripte? Ja: .../httpd/scripts R1.3.0
|
||||
5-Enhancement JG200000158 nhttp: yweb-api: NHTTPD_VERSION via Controlapi.cpp anzeigen R1.3.0
|
||||
5-Enhancement JG200000159 y_reboot.sh raus Neu: yreboot in Tools R1.3.0
|
||||
5-Enhancement JG200000160 Tools: Alles aus info.sh nach tools.sh R1.3.0
|
||||
5-Enhancement JG200000161 nhttpd: scripts in Public/Private httpd Unterordner scripts R1.3.0
|
||||
5-Enhancement JG200000162 Global: y_url_control fr wget/localhost verwenden R1.3.0
|
||||
5-Enhancement JG200000164 nhttps: aktuelles Bouquet ermitteln k<>nen: NEU: getbouquet?actual R1.3.0
|
||||
5-Enhancement JG200000165 nhttpd: neue yweb-API R1.3.0
|
||||
5-Enhancement JG200000166 nhttpd: yweb-api: video_stream_pids=<apid_idx> NEU R1.3.0
|
||||
5-Enhancement JG200000167 nhttpd: yweb-api : radio_stream_pid NEU R1.3.0
|
||||
5-Enhancement JG200000169 Live: Vor Aufruf auf TV umschalten R1.3.0
|
||||
5-Enhancement JG200000175 Y-Web.conf erstellen wenn nicht existiert R1.3.0
|
||||
5-Enhancement JG200000177 Live: "+" und "-" vertauschen R1.3.0
|
||||
5-Enhancement JG200000178 Bouquest TV/Radio: "+" und "-" vertauschen R1.3.0
|
||||
|
||||
3-Average JG200000122 wget 127.0.0.1 geht nicht, wenn Authentication an ist. R1.2.0
|
||||
3-Average JG200000123 Live: Local IP Addr via ifconfig ermitteln. Sonst keine vollst<73>dige Stream-URL R1.2.0
|
||||
4-Minor JG200000086 Flash: MTDs sind unterschiedlich in den Images -> Menu dynamisch R1.2.0
|
||||
5-Enhancement JG200000080 nhttpd: Passwort-Schutz auf allen Seiten R1.2.0
|
||||
5-Enhancement JG200000083 nhttpd: Upload-Funktion (non blocking) R1.2.0
|
||||
5-Enhancement JG200000103 About nach Settings verschoben R1.2.0
|
||||
5-Enhancement JG200000104 Feature: Upload Bootlogo R1.2.0
|
||||
5-Enhancement JG200000105 Feature: Upload Bootlogo LCD R1.2.0
|
||||
5-Enhancement JG200000109 ucodes Upload & Download R1.2.0
|
||||
5-Enhancement JG200000111 Bouquet / Services Upload & Download R1.2.0
|
||||
5-Enhancement JG200000117 Start: Mit Uebersicht nicht mit Bouquets R1.2.0
|
||||
|
||||
4-Minor JG200000044 Y_Live: url : Ohne Escape-Chars ausgeben R1.1.0
|
||||
4-Minor JG200000071 Layout: Fonts werden unter Linux nicht als Arial angezeigt R1.1.0
|
||||
5-Enhancement JG200000043 Y_Live: URL fr Radio generieren R1.1.0
|
||||
5-Enhancement JG200000053 Alles: harte Verzeichnis Verlinkung raus od zentral konfigurieren R1.1.0
|
||||
5-Enhancement JG200000065 Layout: Zentalisieren - dann besser Austauschbar R1.1.0
|
||||
5-Enhancement JG200000070 Live: kleine Standard-Aufl<66>ung auf ...384*288 R1.1.0
|
||||
5-Enhancement JG200000073 Tools:Net-Stream: Text wieder auf deutsch R1.1.0
|
||||
5-Enhancement JG200000076 Skripts: zentrales Include-Skript mit Pfadangaben R1.1.0
|
||||
5-Enhancement JG200000077 Layout: durchgehende Verwendung von Stylesheets (Y_Main.css) R1.1.0
|
||||
5-Enhancement JG200000087 PrimMenu: Plugins in Settings umbenennen R1.1.0
|
||||
5-Enhancement JG200000088 Settings: SecMenu: Setting und Plugins in einem Menue R1.1.0
|
||||
5-Enhancement JG200000091 NetStream auch mit FireFox/Mozilla R1.1.0
|
||||
5-Enhancement JG200000092 Y-Web Konfiguration speichern. (Y-Web.conf) R1.1.0
|
||||
5-Enhancement JG200000093 Skins: Y_Main-xxx.css automatisch zur Skin-Liste R1.1.0
|
||||
5-Enhancement JG200000094 Skins: Formular zur Auswahl unter Settings R1.1.0
|
||||
5-Enhancement JG200000097 Y-Web Version in Y_Version.txt R1.1.0
|
||||
5-Enhancement JG200000098 nhttpd Einstellungen setzen (unter Settings) R1.1.0
|
||||
|
||||
5-Enhancement JG200000063 Y-Web Installer auch fr andere Images R1.1.0 rc0b
|
||||
5-Enhancement JG200000067 Reboot optional mit mmops R1.1.0 rc0b
|
||||
6-Question JG200000007 Live: Funktioniert 'Live' auch unter Linux mit Mozilla? JA R1.1.0 rc0b
|
||||
|
||||
3-Average JG200000010 IE-Live:Full-Screen Button geht nicht R1.1.0 rc0
|
||||
4-Minor JG200000036 Live: IE: Browser zeigt nachladen an R1.1.0 rc0
|
||||
4-Minor JG200000051 Live: startet bei Mozilla nicht automatisch R1.1.0 rc0
|
||||
5-Enhancement JG200000031 Info "Bitte warten" wenn Live aufgerufen wird R1.1.0 rc0
|
||||
5-Enhancement JG200000032 Neues Menu Plugins R1.1.0 rc0
|
||||
5-Enhancement JG200000033 Plugin-Conf: VNC R1.1.0 rc0
|
||||
5-Enhancement JG200000039 Menu: Timer nach Tools R1.1.0 rc0
|
||||
5-Enhancement JG200000040 Menu: "TV/Radio" anch "Bouquet" umbenennen R1.1.0 rc0
|
||||
5-Enhancement JG200000046 Info "Biite warten" bei Plugin-Konfiguratoren R1.1.0 rc0
|
||||
5-Enhancement JG200000047 Info "Bitte warten" bei Tools Flash auslesen R1.1.0 rc0
|
||||
5-Enhancement JG200000048 favicon R1.1.0 rc0
|
||||
5-Enhancement JG200000049 Tools: Boxen in Menues kleiner (nicht 100%) R1.1.0 rc0
|
||||
5-Enhancement JG200000059 Installer Y-Web: Frage ob gepatcher WebServer zuvor schon installiert wurde R1.1.0 rc0
|
||||
5-Enhancement JG200000060 Doc: Entwickler Dokumentation zur 1.0.2 R1.1.0 rc0
|
||||
5-Enhancement JG200000061 Y_Web Installer: jetzt mit _Y-pre.bat: Zeigt Version an R1.1.0 rc0
|
||||
|
||||
3-Average JG200000009 TV/Radio: Mute/Unmute ueber das Lautsprecher-Icon geht nicht R1.0.2
|
||||
3-Average JG200000029 Live: Moz: Jetzt html ohne Workaround R1.0.2
|
||||
4-Minor JG200000019 Live NetStream nach Tools veschieben R1.0.2
|
||||
5-Enhancement JG200000001 Live: Standard Fenstergr<67>se auf 4:3 R1.0.2
|
||||
5-Enhancement JG200000002 Live: autom. Browsererkennung / nur ein Live-Button R1.0.2
|
||||
5-Enhancement JG200000016 Flash Image download R1.0.2
|
||||
5-Enhancement JG200000020 Tools: Info: Teile aus Box-Control dorthin R1.0.2
|
||||
5-Enhancement JG200000021 Tools: Info: Kernel Stack ausgeben R1.0.2
|
||||
5-Enhancement JG200000022 Tools: Info: dbox-Prozesse anzeigen R1.0.2
|
||||
5-Enhancement JG200000023 Tools: Flash: Linux Partitionen anzeigen R1.0.2
|
||||
5-Enhancement JG200000024 nhttpd: execCGI erweitern fr dyn. Webseiten R1.0.2
|
||||
5-Enhancement JG200000025 Test ob gepatchte WebServer l<>ft R1.0.2
|
||||
5-Enhancement JG200000026 Autom. Starten des gepatchten WebServers fr JtG-Image R1.0.2
|
||||
5-Enhancement JG200000027 Tools: Test: WebServer testen R1.0.2
|
||||
5-Enhancement JG200000028 Prfung ob Y-WebServer l<>ft bei Parameterbergaben R1.0.2
|
||||
|
0
src/nhttpd/doc/design/Kollaborationsdiagramm1.gif
Normal file
0
src/nhttpd/doc/design/Kollaborationsdiagramm1.gif
Normal file
BIN
src/nhttpd/doc/design/Sequenzdiagramm1.gif
Normal file
BIN
src/nhttpd/doc/design/Sequenzdiagramm1.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
BIN
src/nhttpd/doc/design/Webserver.gif
Normal file
BIN
src/nhttpd/doc/design/Webserver.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
0
src/nhttpd/doc/design/big_picturer.gif
Normal file
0
src/nhttpd/doc/design/big_picturer.gif
Normal file
BIN
src/nhttpd/doc/design/mods.gif
Normal file
BIN
src/nhttpd/doc/design/mods.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
BIN
src/nhttpd/doc/design/nhttpd.gif
Normal file
BIN
src/nhttpd/doc/design/nhttpd.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
BIN
src/nhttpd/doc/design/nhttpdNeutrinoAPI.gif
Normal file
BIN
src/nhttpd/doc/design/nhttpdNeutrinoAPI.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.6 KiB |
22
src/nhttpd/doc/index.html
Normal file
22
src/nhttpd/doc/index.html
Normal file
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<link rel="STYLESHEET" type="text/css" href="yhttpd.css"/>
|
||||
<title>Neutrino Webserver</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Neutrino Webserver</h1>
|
||||
<h2>Documentation</h2>
|
||||
<ul>
|
||||
<li><a href="nhttpd_controlapi.html">ControlAPI Documentation</a></li>
|
||||
<li>Software architecture</li>
|
||||
<ul>
|
||||
<li><a href="nhttpd_implementation.html">Neutrino Implementation</a></li>
|
||||
<li><a href="yhttpd_documentation.html">yhttpd Base-Webserver</a></li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
1798
src/nhttpd/doc/nhttpd_controlapi.html
Normal file
1798
src/nhttpd/doc/nhttpd_controlapi.html
Normal file
File diff suppressed because it is too large
Load Diff
19
src/nhttpd/doc/nhttpd_implementation.html
Normal file
19
src/nhttpd/doc/nhttpd_implementation.html
Normal file
@@ -0,0 +1,19 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<link rel="STYLESHEET" type="text/css" href="yhttpd.css"/>
|
||||
<title>Implementation of Neutrino-Webserver (nhttpd)</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Implementation of Neutrino-Webserver (nhttpd)</h1>
|
||||
<h2>Neutrino Classes</h2>
|
||||
<img class="picture" src="design/nhttpdNeutrinoAPI.gif"/>
|
||||
<br/>
|
||||
[Class aggragation and composition by NeutrinoAPI]
|
||||
<h2>Relations to yhttpd</h2>
|
||||
<img class="picture" src="design/nhttpd.gif"/>
|
||||
<br/>
|
||||
[Relations to yhttpd and Overview of Hook-Methods]
|
||||
</body>
|
||||
</html>
|
51
src/nhttpd/doc/yhttpd.css
Normal file
51
src/nhttpd/doc/yhttpd.css
Normal file
@@ -0,0 +1,51 @@
|
||||
@CHARSET "ISO-8859-1";
|
||||
body
|
||||
{
|
||||
font-family: Arial, Tahoma, Verdana, Geneva, Helvetica, sans-serif;
|
||||
background-color: White;
|
||||
font-size:10pt;
|
||||
color: black;
|
||||
}
|
||||
|
||||
img {border:0;}
|
||||
button {font-family:Arial,Sans-Serif; color:#555555;}
|
||||
input {font-family:Arial,Sans-Serif; color:#555555;}
|
||||
select {font-family:Arial,Sans-Serif; color:#555555;}
|
||||
form {margin: 0; padding: 0;}
|
||||
|
||||
h1 { font-size:16pt; font-weight: bold;}
|
||||
h2 { font-size:12pt;}
|
||||
a {
|
||||
color: black;
|
||||
font-size:10pt;
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
td {
|
||||
color: black;
|
||||
font-size:10pt;
|
||||
}
|
||||
|
||||
tr {
|
||||
color: black;
|
||||
font-size:10pt;
|
||||
}
|
||||
.picture
|
||||
{
|
||||
border: 1px dashed #2188e0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.title1
|
||||
{
|
||||
padding:2px; border:1px solid #2188E0; border-collapse: collapse;
|
||||
width: 500px;
|
||||
font-weight:bold; background-color:#99CCFF;
|
||||
font-size:12pt;
|
||||
font-weight:bold; margin-top:5; margin-bottom:5
|
||||
}
|
||||
.URL
|
||||
{
|
||||
font-family: Courier New;
|
||||
}
|
||||
.example { font-family: Courier New; border: 1px solid #808080; margin: 10; padding:
|
||||
2px; background-color: #eeeeee; width:480px; }
|
65
src/nhttpd/doc/yhttpd_conf.txt
Normal file
65
src/nhttpd/doc/yhttpd_conf.txt
Normal file
@@ -0,0 +1,65 @@
|
||||
=============================================================================
|
||||
Configuration File "yhttpd.conf"
|
||||
=============================================================================
|
||||
Types
|
||||
String ["]a text string["]
|
||||
bool true | false
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
configfile.version =1
|
||||
-----------------------------------------------------------------------------
|
||||
General Server Settings
|
||||
-----------------------------------------------------------------------------
|
||||
server.user_name Username in which context the webserver shoup be run
|
||||
You need to be root
|
||||
Type: String
|
||||
Example: webserver
|
||||
server.group_name Groupname to be applied
|
||||
You need to be root
|
||||
Type: String
|
||||
server.chroot directory to be set as root
|
||||
You need to be root
|
||||
Type: String
|
||||
Example: /var/htdocs
|
||||
server.log.loglevel 0..9
|
||||
server.no_keep-alive_ips List of IP-Adresses for clients not supporting keep-alive
|
||||
like JtG-Server. (comma separated list)
|
||||
-----------------------------------------------------------------------------
|
||||
General Webserver Settings
|
||||
-----------------------------------------------------------------------------
|
||||
webserver.threading Use Threading ?
|
||||
Type: bool
|
||||
webserver.websites List of hosted Websites
|
||||
Type: Stringlist
|
||||
Example: Main, SSLsite, Admin
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
Website Settings
|
||||
-----------------------------------------------------------------------------
|
||||
ATTENTION only <website name> = WebsiteMain implemented now
|
||||
|
||||
<website name>.port
|
||||
<website name>.directory
|
||||
<website name>.override_directory
|
||||
<website name>.special_locations StringPairList
|
||||
|
||||
<website name>.ssl
|
||||
<website name>.ssl_pemfile
|
||||
<website name>.ssl_ca_file
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
module settings
|
||||
-----------------------------------------------------------------------------
|
||||
mod_auth.authenticate true/false
|
||||
mod_auth.username String
|
||||
mod_auth.password String
|
||||
mod_auth.no_auth_client= IP-Adress of Client with no authentication
|
||||
|
||||
mod_weblog.logfile =/cygdrive/d/Work/y/ws/nhttpd30/build/cygwin/yhhtpd.log
|
||||
mod_weblog.log_format =ELF|CLF|<empty>
|
||||
|
||||
mod_cache.cache_directory=/tmp/.cache
|
||||
|
||||
mod_sendfile.mime_types=htm:text/html,html:text/html,xml:text/xml,txt:text/plain,jpg:image/jpeg,jpeg:image/jpeg,gif:image/gif,png:image/png,bmp:image/bmp,css:text/css
|
||||
|
15
src/nhttpd/doc/yhttpd_documentation.html
Normal file
15
src/nhttpd/doc/yhttpd_documentation.html
Normal file
@@ -0,0 +1,15 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<link rel="STYLESHEET" type="text/css" href="yhttpd.css"/>
|
||||
<title>Implementation of yhttpd-Webserver (yhttpd)</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Implementation of yhttpd-Webserver (yhttpd)</h1>
|
||||
<h2>Classes</h2>
|
||||
<img class="picture" src="design/Webserver.gif"/>
|
||||
<br/>
|
||||
[Main Classes of yhttpd-Webserver]
|
||||
</body>
|
||||
</html>
|
121
src/nhttpd/nhttpd
Executable file
121
src/nhttpd/nhttpd
Executable file
@@ -0,0 +1,121 @@
|
||||
#! /bin/sh
|
||||
|
||||
# nhttpd - temporary wrapper script for .libs/nhttpd
|
||||
# Generated by ltmain.sh - GNU libtool 1.4.2 (1.922.2.54 2001/09/11 03:33:37)
|
||||
#
|
||||
# The nhttpd program cannot be directly executed until all the libtool
|
||||
# libraries that it depends on are installed.
|
||||
#
|
||||
# This wrapper script should never be moved out of the build directory.
|
||||
# If it is, it will not operate correctly.
|
||||
|
||||
# Sed substitution that helps us do robust quoting. It backslashifies
|
||||
# metacharacters that are still active within double-quoted strings.
|
||||
Xsed='sed -e 1s/^X//'
|
||||
sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
|
||||
|
||||
# The HP-UX ksh and POSIX shell print the target directory to stdout
|
||||
# if CDPATH is set.
|
||||
if test "${CDPATH+set}" = set; then CDPATH=:; export CDPATH; fi
|
||||
|
||||
relink_command="(cd /7025/apps/tuxbox/neutrino/daemons/nhttpd; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \"\${LD_LIBRARY_PATH+set}\" || unset LD_LIBRARY_PATH || { LD_LIBRARY_PATH=; export LD_LIBRARY_PATH; }; }; PATH=\"/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/home/root/bin:/7025/root/cdk/bin/\"; export PATH; mipsel-linux-g++ -fexpensive-optimizations -fomit-frame-pointer -frename-registers -fpermissive -fno-rtti -fno-exceptions -O2 -pipe -Os -I/7025/root/cdkroot/include -o \$progdir/\$file yhttpd.o -L/7025/root/cdkroot/lib ../../daemons/nhttpd/tuxboxapi/libnhttpd_tuxboxapi.a ../../daemons/nhttpd/yhttpd_mods/libyhttpdmods.a ../../daemons/nhttpd/yhttpd_core/libyhttpd.a ../../lib/controldclient/.libs/libcontroldclient.so ../../lib/sectionsdclient/.libs/libsectionsdclient.so ../../lib/timerdclient/.libs/libtimerdclient.so -L/archive/7025/build/tmp/staging/mipsel-linux/lib/../lib -lpng12 -lz -lm /7025/root/cdkroot/lib/liblcddisplay.so /7025/root/cdkroot/lib/libfreetype.so /7025/root/cdkroot/lib/libtuxbox-configfile.so /7025/root/cdkroot/lib/libtuxbox-connection.so /7025/root/cdkroot/lib/libzapitclient.so /7025/root/cdkroot/lib/libtuxbox-eventserver.so -lpthread -Wl,--rpath -Wl,/7025/apps/tuxbox/neutrino/lib/controldclient/.libs -Wl,--rpath -Wl,/7025/apps/tuxbox/neutrino/lib/sectionsdclient/.libs -Wl,--rpath -Wl,/7025/apps/tuxbox/neutrino/lib/timerdclient/.libs -Wl,--rpath -Wl,/7025/root/cdkroot/lib -Wl,--rpath -Wl,/7025/root/cdkroot/lib)"
|
||||
|
||||
# This environment variable determines our operation mode.
|
||||
if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
|
||||
# install mode needs the following variable:
|
||||
notinst_deplibs=' ../../lib/controldclient/libcontroldclient.la ../../lib/sectionsdclient/libsectionsdclient.la ../../lib/timerdclient/libtimerdclient.la'
|
||||
else
|
||||
# When we are sourced in execute mode, $file and $echo are already set.
|
||||
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
|
||||
echo="echo"
|
||||
file="$0"
|
||||
# Make sure echo works.
|
||||
if test "X$1" = X--no-reexec; then
|
||||
# Discard the --no-reexec flag, and continue.
|
||||
shift
|
||||
elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
|
||||
# Yippee, $echo works!
|
||||
:
|
||||
else
|
||||
# Restart under the correct shell, and then maybe $echo will work.
|
||||
exec /bin/sh "$0" --no-reexec ${1+"$@"}
|
||||
fi
|
||||
fi
|
||||
|
||||
# Find the directory that this script lives in.
|
||||
thisdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
|
||||
test "x$thisdir" = "x$file" && thisdir=.
|
||||
|
||||
# Follow symbolic links until we get to the real thisdir.
|
||||
file=`ls -ld "$file" | sed -n 's/.*-> //p'`
|
||||
while test -n "$file"; do
|
||||
destdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
|
||||
|
||||
# If there was a directory component, then change thisdir.
|
||||
if test "x$destdir" != "x$file"; then
|
||||
case "$destdir" in
|
||||
[\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
|
||||
*) thisdir="$thisdir/$destdir" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
|
||||
file=`ls -ld "$thisdir/$file" | sed -n 's/.*-> //p'`
|
||||
done
|
||||
|
||||
# Try to get the absolute directory name.
|
||||
absdir=`cd "$thisdir" && pwd`
|
||||
test -n "$absdir" && thisdir="$absdir"
|
||||
|
||||
program=lt-'nhttpd'
|
||||
progdir="$thisdir/.libs"
|
||||
|
||||
if test ! -f "$progdir/$program" || \
|
||||
{ file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | sed 1q`; \
|
||||
test "X$file" != "X$progdir/$program"; }; then
|
||||
|
||||
file="$$-$program"
|
||||
|
||||
if test ! -d "$progdir"; then
|
||||
mkdir "$progdir"
|
||||
else
|
||||
rm -f "$progdir/$file"
|
||||
fi
|
||||
|
||||
# relink executable if necessary
|
||||
if test -n "$relink_command"; then
|
||||
if relink_command_output=`eval $relink_command 2>&1`; then :
|
||||
else
|
||||
echo "$relink_command_output" >&2
|
||||
rm -f "$progdir/$file"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
|
||||
{ rm -f "$progdir/$program";
|
||||
mv -f "$progdir/$file" "$progdir/$program"; }
|
||||
rm -f "$progdir/$file"
|
||||
fi
|
||||
|
||||
if test -f "$progdir/$program"; then
|
||||
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
|
||||
# Run the actual program with our arguments.
|
||||
|
||||
# Export the path to the program.
|
||||
PATH="$progdir:$PATH"
|
||||
export PATH
|
||||
|
||||
exec $program ${1+"$@"}
|
||||
|
||||
$echo "$0: cannot exec $program ${1+"$@"}"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# The program doesn't exist.
|
||||
$echo "$0: error: $progdir/$program does not exist" 1>&2
|
||||
$echo "This script is just a wrapper for $program." 1>&2
|
||||
echo "See the libtool documentation for more information." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
24
src/nhttpd/nhttpd.conf
Normal file
24
src/nhttpd/nhttpd.conf
Normal file
@@ -0,0 +1,24 @@
|
||||
ExtrasDocRoot=web
|
||||
ExtrasDocURL=
|
||||
Tuxbox.HostedDocumentRoot=
|
||||
WebsiteMain.directory=/share/tuxbox/neutrino/httpd
|
||||
WebsiteMain.override_directory=/var/tmp/httpd
|
||||
WebsiteMain.port=80
|
||||
WebsiteMain.special_locations=/hosted/=/mnt/hosted
|
||||
Zapit_XML_Path=/var/tuxbox/config/zapit
|
||||
configfile.version=1
|
||||
mod_auth.authenticate=false
|
||||
mod_auth.no_auth_client=172.16.1.1
|
||||
mod_auth.password=coolstream
|
||||
mod_auth.username=root
|
||||
mod_cache.cache_directory=/tmp/.cache
|
||||
mod_sendfile.mime_types=htm:text/html,html:text/html,xml:text/xml,txt:text/plain,jpg:image/jpeg,jpeg:image/jpeg,gif:image/gif,png:image/png,bmp:image/bmp,css:text/css,js:text/plain,img:application/octet-stream,ico:image/x-icon,m3u:application/octet-stream,tar:application/octet-stream
|
||||
mod_weblog.log_format=
|
||||
mod_weblog.logfile=/tmp/yhhtpd.log
|
||||
server.chroot=
|
||||
server.group_name=
|
||||
server.log.loglevel=0
|
||||
server.no_keep-alive_ips=
|
||||
server.user_name=
|
||||
webserver.threading=
|
||||
webserver.websites=WebsiteMain
|
20
src/nhttpd/tuxboxapi/AUTHORS
Normal file
20
src/nhttpd/tuxboxapi/AUTHORS
Normal file
@@ -0,0 +1,20 @@
|
||||
AUTHORS
|
||||
in order of appearance (bottom up)
|
||||
|
||||
|
||||
Johannes Golombek [yjogol@cvs.tuxbox.org]
|
||||
Bengt Martensson [barf@cvs.tuxbox.org]
|
||||
Jacek Jendrzej [metallica@cvs.tuxbox.org]
|
||||
Henning Behrend [sat_man@cvs.tuxbox.org]
|
||||
Axel Buehning [diemade@cvs.tuxbox.org]
|
||||
Michael Schuele [chakazulu@cvs.tuxbox.org]
|
||||
Peter Reich [digi_casi@cvs.tuxbox.org]
|
||||
H.Heinold [heinold@physik.tu-cottbus.de]
|
||||
Sven Traenkle [zwen@cvs.tuxbox.org]
|
||||
gagga <gagga@berlios.de>
|
||||
wjoost <wjoost@berlios.de>
|
||||
Ralf Gandy <thegoodguy@berlios.de>
|
||||
Michael Lantzen <leahcim@berlios.de>
|
||||
Andreas Oberritter <obi@berlios.de>
|
||||
Dirk Szymanski [dirch@cvs.tuxbox.org]
|
||||
Steffen Hehn <mcclean@berlios.de>
|
20
src/nhttpd/tuxboxapi/Makefile.am
Normal file
20
src/nhttpd/tuxboxapi/Makefile.am
Normal file
@@ -0,0 +1,20 @@
|
||||
AM_CPPFLAGS = -fno-rtti -fno-exceptions
|
||||
|
||||
INCLUDES = \
|
||||
-I$(top_srcdir)/lib \
|
||||
-I$(top_srcdir)/src/zapit/include \
|
||||
-I$(top_srcdir)/src \
|
||||
-I$(top_srcdir)/src/nhttpd \
|
||||
-I$(top_srcdir)/src/nhttpd/yhttpd_core \
|
||||
-I$(top_srcdir)/src/nhttpd/yhttpd_mods \
|
||||
-I$(top_srcdir)/lib/connection \
|
||||
-I$(top_srcdir)/lib/libeventserver \
|
||||
-I$(top_srcdir)/lib/libconfigfile \
|
||||
-I$(top_srcdir)/lib/xmltree \
|
||||
@FREETYPE_CFLAGS@
|
||||
|
||||
noinst_LIBRARIES = libnhttpd_tuxboxapi.a
|
||||
|
||||
libnhttpd_tuxboxapi_a_SOURCES = \
|
||||
neutrinoapi.cpp neutrinoyparser.cpp lcdapi.cpp controlapi.cpp
|
||||
|
2145
src/nhttpd/tuxboxapi/controlapi.cpp
Normal file
2145
src/nhttpd/tuxboxapi/controlapi.cpp
Normal file
File diff suppressed because it is too large
Load Diff
115
src/nhttpd/tuxboxapi/controlapi.h
Normal file
115
src/nhttpd/tuxboxapi/controlapi.h
Normal file
@@ -0,0 +1,115 @@
|
||||
//=============================================================================
|
||||
// NHTTPD
|
||||
// Neutrino ControlAPI
|
||||
//=============================================================================
|
||||
#ifndef __nhttpd_neutrinocontrolapi_hpp__
|
||||
#define __nhttpd_neutrinocontrolapi_hpp__
|
||||
// C++
|
||||
#include <string>
|
||||
// yhttpd
|
||||
#include "yhook.h"
|
||||
|
||||
// forward declaration
|
||||
class CNeutrinoAPI;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
class CControlAPI : public Cyhook
|
||||
{
|
||||
private:
|
||||
// Dispatcher Array
|
||||
typedef void (CControlAPI::*TyFunc)(CyhookHandler *hh);
|
||||
typedef struct
|
||||
{
|
||||
const char *func_name;
|
||||
TyFunc pfunc;
|
||||
const char *mime_type;
|
||||
} TyCgiCall;
|
||||
const static TyCgiCall yCgiCallList[];
|
||||
|
||||
int rc_send(int ev, unsigned int code, unsigned int value);
|
||||
|
||||
// send functions for ExecuteCGI (controld api)
|
||||
void SendEventList(CyhookHandler *hh,t_channel_id channel_id);
|
||||
void SendcurrentVAPid(CyhookHandler *hh);
|
||||
void SendAllCurrentVAPid(CyhookHandler *hh);
|
||||
void SendSettings(CyhookHandler *hh);
|
||||
void SendStreamInfo(CyhookHandler *hh);
|
||||
void SendBouquets(CyhookHandler *hh);
|
||||
void SendBouquet(CyhookHandler *hh,int BouquetNr);
|
||||
void SendChannelList(CyhookHandler *hh);
|
||||
void SendTimers(CyhookHandler *hh);
|
||||
|
||||
// subs
|
||||
friend class CNeutrinoWebserver; // for timer /fb/ compatibility
|
||||
void doModifyTimer(CyhookHandler *hh);
|
||||
void doNewTimer(CyhookHandler *hh);
|
||||
|
||||
//yweb
|
||||
void YWeb_SendVideoStreamingPids(CyhookHandler *hh, int apid_no);
|
||||
void YWeb_SendRadioStreamingPid(CyhookHandler *hh);
|
||||
void compatibility_Timer(CyhookHandler *hh);
|
||||
std::string YexecuteScript(CyhookHandler *hh, std::string cmd);
|
||||
|
||||
// CGI functions for ExecuteCGI
|
||||
void TimerCGI(CyhookHandler *hh);
|
||||
void SetModeCGI(CyhookHandler *hh);
|
||||
void GetModeCGI(CyhookHandler *hh);
|
||||
void ExecCGI(CyhookHandler *hh);
|
||||
void SystemCGI(CyhookHandler *hh);
|
||||
void StandbyCGI(CyhookHandler *hh);
|
||||
void RCCGI(CyhookHandler *hh);
|
||||
void GetDateCGI(CyhookHandler *hh);
|
||||
void GetTimeCGI(CyhookHandler *hh);
|
||||
void SettingsCGI(CyhookHandler *hh);
|
||||
void GetServicesxmlCGI(CyhookHandler *hh);
|
||||
void GetBouquetsxmlCGI(CyhookHandler *hh);
|
||||
void GetChannel_IDCGI(CyhookHandler *hh);
|
||||
void MessageCGI(CyhookHandler *hh);
|
||||
void InfoCGI(CyhookHandler *hh);
|
||||
void ShutdownCGI(CyhookHandler *hh);
|
||||
void VolumeCGI(CyhookHandler *hh);
|
||||
void ChannellistCGI(CyhookHandler *hh);
|
||||
void GetBouquetCGI(CyhookHandler *hh);
|
||||
void GetBouquetsCGI(CyhookHandler *hh);
|
||||
void EpgCGI(CyhookHandler *hh);
|
||||
void VersionCGI(CyhookHandler *hh);
|
||||
void ZaptoCGI(CyhookHandler *hh);
|
||||
void StartPluginCGI(CyhookHandler *hh);
|
||||
void LCDAction(CyhookHandler *hh);
|
||||
void YWebCGI(CyhookHandler *hh);
|
||||
void RebootCGI(CyhookHandler *hh);
|
||||
void RCEmCGI(CyhookHandler *hh);
|
||||
void AspectRatioCGI(CyhookHandler *hh);
|
||||
void VideoFormatCGI(CyhookHandler *hh);
|
||||
void VideoOutputCGI(CyhookHandler *hh);
|
||||
void VCROutputCGI(CyhookHandler *hh);
|
||||
void ScartModeCGI(CyhookHandler *hh);
|
||||
void setBouquetCGI(CyhookHandler *hh);
|
||||
void saveBouquetCGI(CyhookHandler *hh);
|
||||
void moveBouquetCGI(CyhookHandler *hh);
|
||||
void deleteBouquetCGI(CyhookHandler *hh);
|
||||
void addBouquetCGI(CyhookHandler *hh);
|
||||
void renameBouquetCGI(CyhookHandler *hh);
|
||||
void changeBouquetCGI(CyhookHandler *hh);
|
||||
void updateBouquetCGI(CyhookHandler *hh);
|
||||
void build_live_url(CyhookHandler *hh);
|
||||
|
||||
protected:
|
||||
static const unsigned int PLUGIN_DIR_COUNT = 5;
|
||||
static std::string PLUGIN_DIRS[PLUGIN_DIR_COUNT];
|
||||
CNeutrinoAPI *NeutrinoAPI;
|
||||
|
||||
void init(CyhookHandler *hh);
|
||||
void Execute(CyhookHandler *hh);
|
||||
|
||||
public:
|
||||
// constructor & deconstructor
|
||||
CControlAPI(CNeutrinoAPI *_NeutrinoAPI);
|
||||
|
||||
// virtual functions for HookHandler/Hook
|
||||
virtual std::string getHookName(void) {return std::string("mod_ControlAPI");}
|
||||
virtual std::string getHookVersion(void) {return std::string("$Revision: 1.4 $");}
|
||||
virtual THandleStatus Hook_SendResponse(CyhookHandler *hh);
|
||||
};
|
||||
|
||||
#endif /* __nhttpd_neutrinocontrolapi_hpp__ */
|
220
src/nhttpd/tuxboxapi/lcdapi.cpp
Executable file
220
src/nhttpd/tuxboxapi/lcdapi.cpp
Executable file
@@ -0,0 +1,220 @@
|
||||
/*
|
||||
nhttpd - DBoxII-Project
|
||||
|
||||
Copyright (C) 2001/2002 Dirk Szymanski 'Dirch'
|
||||
Copyright (C) 2005 SnowHead
|
||||
|
||||
$Id: lcdapi.cpp,v 1.1 2006/09/16 14:47:44 yjogol Exp $
|
||||
|
||||
License: GPL
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
// c++
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
||||
#include <config.h>
|
||||
// tuxbox
|
||||
#if HAVE_LCD
|
||||
#include <driver/lcdd.h>
|
||||
#endif
|
||||
#include <global.h>
|
||||
#include <neutrino.h>
|
||||
#include <system/settings.h>
|
||||
|
||||
#if HAVE_LCD
|
||||
#include <lcddisplay/lcddisplay.h>
|
||||
#endif
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
// nhttpd
|
||||
//#include "ylogging.h"
|
||||
#include "lcdapi.h"
|
||||
|
||||
#if HAVE_LCD
|
||||
static char font_name[3][10]={"Micron","Micron","Pakenham"};
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
void CLCDAPI::Clear(void)
|
||||
{
|
||||
#if HAVE_LCD
|
||||
display.draw_fill_rect(-1, -1, 120, 64, CLCDDisplay::PIXEL_OFF); // clear lcd
|
||||
#endif
|
||||
}
|
||||
|
||||
void CLCDAPI::Update(void)
|
||||
{
|
||||
#if HAVE_LCD
|
||||
display.update();
|
||||
#endif
|
||||
}
|
||||
|
||||
void CLCDAPI::LockDisplay(int plock)
|
||||
{
|
||||
if (plock)
|
||||
{
|
||||
FILE *lfh=fopen("/tmp/lcd.locked","w");
|
||||
if(lfh)
|
||||
{
|
||||
fprintf(lfh,"lcdlock");
|
||||
fclose(lfh);
|
||||
usleep(100000L);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
remove("/tmp/lcd.locked");
|
||||
}
|
||||
}
|
||||
|
||||
void CLCDAPI::DrawLine(int x1, int y1, int x2, int y2, int col)
|
||||
{
|
||||
#if HAVE_LCD
|
||||
int color=(col==0)?(CLCDDisplay::PIXEL_OFF):((col==2)?(CLCDDisplay::PIXEL_INV):(CLCDDisplay::PIXEL_ON));
|
||||
display.draw_line(x1,y1,x2,y2,color);
|
||||
#endif
|
||||
}
|
||||
|
||||
void CLCDAPI::DrawRect(int x1, int y1, int x2, int y2, int coll, int colf)
|
||||
{
|
||||
#if HAVE_LCD
|
||||
int colorl=(coll==0)?(CLCDDisplay::PIXEL_OFF):((coll==2)?(CLCDDisplay::PIXEL_INV):(CLCDDisplay::PIXEL_ON));
|
||||
int colorf=(colf==0)?(CLCDDisplay::PIXEL_OFF):((colf==2)?(CLCDDisplay::PIXEL_INV):(CLCDDisplay::PIXEL_ON));
|
||||
display.draw_rectangle(x1,y1,x2,y2,colorl,colorf);
|
||||
#endif
|
||||
}
|
||||
|
||||
void CLCDAPI::DrawText(int px, int py, int psize, int pcolor, int pfont, char *pmsg)
|
||||
{
|
||||
#if HAVE_LCD
|
||||
int color=(pcolor==0)?(CLCDDisplay::PIXEL_OFF):((pcolor==2)?(CLCDDisplay::PIXEL_INV):(CLCDDisplay::PIXEL_ON));
|
||||
if(!(font = fontRenderer->getFont(font_name[pfont], style_name[pfont], psize)))
|
||||
{
|
||||
printf("[nhttpd] Kein Font gefunden.\n");
|
||||
return;
|
||||
}
|
||||
font->RenderString(px, py, 130, pmsg, color, 0, true); // UTF-8
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CLCDAPI::ShowPng(char *filename)
|
||||
{
|
||||
#if HAVE_LCD
|
||||
return display.load_png(filename);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CLCDAPI::ShowRaw(int xpos, int ypos, int xsize, int ysize, char *ascreen)
|
||||
{
|
||||
#if HAVE_LCD
|
||||
int sbyte,dbit,dxpos,dypos,wasinc=0,gotval;
|
||||
char *sptr=ascreen;
|
||||
raw_display_t rscreen;
|
||||
|
||||
display.dump_screen(&rscreen);
|
||||
gotval=sscanf(sptr,"%d",&sbyte);
|
||||
for(dypos=ypos; gotval && (dypos<(ypos+ysize)); dypos++)
|
||||
{
|
||||
dbit=7;
|
||||
for(dxpos=xpos; gotval && (dxpos<(xpos+xsize)); dxpos++)
|
||||
{
|
||||
wasinc=0;
|
||||
if((dypos<LCD_ROWS*8) && (dxpos<LCD_COLS))
|
||||
{
|
||||
rscreen[dypos][dxpos]=(sbyte & (1<<dbit))?1:0;
|
||||
}
|
||||
if(--dbit<0)
|
||||
{
|
||||
dbit=7;
|
||||
if((sptr=strchr(sptr,','))!=NULL)
|
||||
{
|
||||
gotval=sscanf(++sptr,"%d",&sbyte);
|
||||
}
|
||||
else
|
||||
{
|
||||
gotval=0;
|
||||
}
|
||||
wasinc=1;
|
||||
}
|
||||
}
|
||||
if(!wasinc)
|
||||
{
|
||||
if((sptr=strchr(sptr,','))!=NULL)
|
||||
{
|
||||
gotval=sscanf(++sptr,"%d",&sbyte);
|
||||
}
|
||||
else
|
||||
{
|
||||
gotval=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
display.load_screen(&rscreen);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Konstruktor und destruktor
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
CLCDAPI::CLCDAPI()
|
||||
{
|
||||
#if HAVE_LCD
|
||||
// int i;
|
||||
|
||||
|
||||
// display = new CLCDDisplay();
|
||||
fontRenderer = new LcdFontRenderClass(&display);
|
||||
style_name[0] = fontRenderer->AddFont("/share/fonts/micron.ttf");
|
||||
style_name[1] = fontRenderer->AddFont("/share/fonts/micron_bold.ttf");
|
||||
style_name[2] = fontRenderer->AddFont("/share/fonts/pakenham.ttf");
|
||||
fontRenderer->InitFontCache();
|
||||
/* for(i=0; i<3; i++)
|
||||
{
|
||||
if(font=fontRenderer->getFont(font_name[i], style_name[i], 14))
|
||||
{
|
||||
font->RenderString(10, 10, 30, "X", CLCDDisplay::PIXEL_OFF, 0, true);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
#endif
|
||||
}
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
CLCDAPI::~CLCDAPI(void)
|
||||
{
|
||||
#if HAVE_LCD
|
||||
if(fontRenderer)
|
||||
{
|
||||
delete fontRenderer;
|
||||
}
|
||||
/* if(display)
|
||||
{
|
||||
delete display;
|
||||
}
|
||||
*/
|
||||
#endif
|
||||
}
|
61
src/nhttpd/tuxboxapi/lcdapi.h
Executable file
61
src/nhttpd/tuxboxapi/lcdapi.h
Executable file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
nhttpd - DBoxII-Project
|
||||
|
||||
Copyright (C) 2001/2002 Dirk Szymanski 'Dirch'
|
||||
Copyright (C) 2005 SnowHead
|
||||
|
||||
$Id: lcdapi.h,v 1.1 2006/09/16 14:47:44 yjogol Exp $
|
||||
|
||||
License: GPL
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
#ifndef __nhttpd_lcdapi_h__
|
||||
#define __nhttpd_lcdapi_h__
|
||||
|
||||
// tuxbox
|
||||
#if HAVE_LCD
|
||||
#include <driver/lcdd.h>
|
||||
#include <lcddisplay/lcddisplay.h>
|
||||
#include <lcddisplay/fontrenderer.h>
|
||||
#endif
|
||||
|
||||
class CLCDDisplay;
|
||||
class LcdFontRenderClass;
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
class CLCDAPI
|
||||
{
|
||||
#if HAVE_LCD
|
||||
CLCDDisplay display;
|
||||
LcdFontRenderClass *fontRenderer;
|
||||
LcdFont *font;
|
||||
#endif
|
||||
const char *style_name[3];
|
||||
public:
|
||||
CLCDAPI();
|
||||
~CLCDAPI(void);
|
||||
void LockDisplay(int lock);
|
||||
void DrawText(int px, int py, int psize, int pcolor, int pfont, char *pmsg);
|
||||
void DrawLine(int x1, int y1, int x2, int y2, int col);
|
||||
void DrawRect(int x1, int y1, int x2, int y2, int coll, int colf);
|
||||
bool ShowPng(char *filename);
|
||||
void ShowRaw(int xpos, int ypos, int xsize, int ysize, char *screen);
|
||||
void Update(void);
|
||||
void Clear(void);
|
||||
};
|
||||
|
||||
#endif /* __nhttpd_lcdapi_h__ */
|
449
src/nhttpd/tuxboxapi/neutrinoapi.cpp
Normal file
449
src/nhttpd/tuxboxapi/neutrinoapi.cpp
Normal file
@@ -0,0 +1,449 @@
|
||||
//=============================================================================
|
||||
// NHTTPD
|
||||
// NeutrionAPI
|
||||
//
|
||||
// Aggregates: NeutrinoYParser, NeutrinoControlAPI
|
||||
// Defines Interfaces to:CControldClient, CSectionsdClient, CZapitClient,
|
||||
// CTimerdClient,CLCDAPI
|
||||
// Place for common used Neutrino-functions used by NeutrinoYParser, NeutrinoControlAPI
|
||||
//=============================================================================
|
||||
|
||||
// C
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
||||
// C++
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <map>
|
||||
|
||||
// tuxbox
|
||||
#include <neutrinoMessages.h>
|
||||
|
||||
#include <zapit/client/zapitclient.h>
|
||||
#include <zapit/channel.h>
|
||||
#include <zapit/bouquets.h>
|
||||
extern tallchans allchans;
|
||||
extern CBouquetManager *g_bouquetManager;
|
||||
|
||||
// yhttpd
|
||||
#include "ylogging.h"
|
||||
|
||||
// nhttpd
|
||||
#include "neutrinoapi.h"
|
||||
#include "lcdapi.h"
|
||||
void sectionsd_getChannelEvents(CChannelEventList &eList, const bool tv_mode = true, t_channel_id *chidlist = NULL, int clen = 0);
|
||||
|
||||
//=============================================================================
|
||||
// No Class Helpers
|
||||
//=============================================================================
|
||||
|
||||
static std::map<std::string, std::string> iso639;
|
||||
|
||||
bool _initialize_iso639_map(void)
|
||||
{
|
||||
std::string s, t, u, v;
|
||||
std::ifstream in("/share/iso-codes/iso-639.tab");
|
||||
if (in.is_open())
|
||||
{
|
||||
while (in.peek() == '#')
|
||||
getline(in, s);
|
||||
while (in >> s >> t >> u >> std::ws)
|
||||
{
|
||||
getline(in, v);
|
||||
iso639[s] = v;
|
||||
if (s != t)
|
||||
iso639[t] = v;
|
||||
}
|
||||
in.close();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
const char * _getISO639Description(const char * const iso)
|
||||
{
|
||||
std::map<std::string, std::string>::const_iterator it = iso639.find(std::string(iso));
|
||||
if (it == iso639.end())
|
||||
return iso;
|
||||
else
|
||||
return it->second.c_str();
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
// Initialization of static variables
|
||||
//=============================================================================
|
||||
std::string CNeutrinoAPI::Dbox_Hersteller[4] = {"none", "Nokia", "Philips", "Sagem"};
|
||||
std::string CNeutrinoAPI::videooutput_names[5] = {"CVBS", "RGB with CVBS", "S-Video", "YUV with VBS", "YUV with CVBS"};
|
||||
std::string CNeutrinoAPI::videoformat_names[4] = {"automatic", "16:9", "4:3 (LB)", "4:3 (PS)"};
|
||||
std::string CNeutrinoAPI::audiotype_names[5] = {"none", "single channel","dual channel","joint stereo","stereo"};
|
||||
|
||||
//=============================================================================
|
||||
// Constructor & Destructor
|
||||
//=============================================================================
|
||||
CNeutrinoAPI::CNeutrinoAPI()
|
||||
{
|
||||
Controld = new CControldClient();
|
||||
Sectionsd = new CSectionsdClient();
|
||||
Zapit = new CZapitClient();
|
||||
Timerd = new CTimerdClient();
|
||||
|
||||
NeutrinoYParser = new CNeutrinoYParser(this);
|
||||
ControlAPI = new CControlAPI(this);
|
||||
LcdAPI = new CLCDAPI();
|
||||
|
||||
UpdateBouquets();
|
||||
|
||||
EventServer = new CEventServer;
|
||||
EventServer->registerEvent2( NeutrinoMessages::SHUTDOWN, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
|
||||
EventServer->registerEvent2( NeutrinoMessages::STANDBY_ON, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
|
||||
EventServer->registerEvent2( NeutrinoMessages::STANDBY_OFF, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
|
||||
EventServer->registerEvent2( NeutrinoMessages::STANDBY_TOGGLE, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
|
||||
EventServer->registerEvent2( NeutrinoMessages::EVT_POPUP, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
|
||||
EventServer->registerEvent2( NeutrinoMessages::EVT_EXTMSG, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
|
||||
EventServer->registerEvent2( NeutrinoMessages::CHANGEMODE, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
|
||||
EventServer->registerEvent2( NeutrinoMessages::EVT_START_PLUGIN, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
|
||||
EventServer->registerEvent2( NeutrinoMessages::LOCK_RC, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
|
||||
EventServer->registerEvent2( NeutrinoMessages::UNLOCK_RC, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
|
||||
}
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
CNeutrinoAPI::~CNeutrinoAPI(void)
|
||||
{
|
||||
if (LcdAPI)
|
||||
delete LcdAPI;
|
||||
if (NeutrinoYParser)
|
||||
delete NeutrinoYParser;
|
||||
if (ControlAPI)
|
||||
delete ControlAPI;
|
||||
if (Controld)
|
||||
delete Controld;
|
||||
if (Sectionsd)
|
||||
delete Sectionsd;
|
||||
if (Zapit)
|
||||
delete Zapit;
|
||||
if (Timerd)
|
||||
delete Timerd;
|
||||
if (EventServer)
|
||||
delete EventServer;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
void CNeutrinoAPI::UpdateBouquets(void)
|
||||
{
|
||||
#if 0
|
||||
BouquetList.clear();
|
||||
Zapit->getBouquets(BouquetList, true, true);
|
||||
|
||||
for (unsigned int i = 1; i <= BouquetList.size(); i++)
|
||||
UpdateBouquet(i);
|
||||
|
||||
UpdateChannelList();
|
||||
#endif
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
void CNeutrinoAPI::ZapTo(const char * const target)
|
||||
{
|
||||
t_channel_id channel_id;
|
||||
|
||||
sscanf(target,
|
||||
SCANF_CHANNEL_ID_TYPE,
|
||||
&channel_id);
|
||||
|
||||
ZapToChannelId(channel_id);
|
||||
}
|
||||
//-------------------------------------------------------------------------
|
||||
void CNeutrinoAPI::ZapToChannelId(t_channel_id channel_id)
|
||||
{
|
||||
if (channel_id == Zapit->getCurrentServiceID())
|
||||
{
|
||||
//printf("Kanal ist aktuell\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (Zapit->zapTo_serviceID(channel_id) != CZapitClient::ZAP_INVALID_PARAM)
|
||||
Sectionsd->setServiceChanged(channel_id&0xFFFFFFFFFFFFULL, false);
|
||||
}
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
void CNeutrinoAPI::ZapToSubService(const char * const target)
|
||||
{
|
||||
t_channel_id channel_id;
|
||||
|
||||
sscanf(target,
|
||||
SCANF_CHANNEL_ID_TYPE,
|
||||
&channel_id);
|
||||
|
||||
if (Zapit->zapTo_subServiceID(channel_id) != CZapitClient::ZAP_INVALID_PARAM)
|
||||
Sectionsd->setServiceChanged(channel_id&0xFFFFFFFFFFFFULL, false);
|
||||
}
|
||||
//-------------------------------------------------------------------------
|
||||
t_channel_id CNeutrinoAPI::ChannelNameToChannelId(std::string search_channel_name)
|
||||
{
|
||||
//FIXME depending on mode missing
|
||||
//int mode = Zapit->getMode();
|
||||
t_channel_id channel_id = (t_channel_id)-1;
|
||||
CStringArray channel_names = ySplitStringVector(search_channel_name, ",");
|
||||
|
||||
for (tallchans_iterator it = allchans.begin(); it != allchans.end(); it++) {
|
||||
std::string channel_name = it->second.getName();
|
||||
for(unsigned int j=0;j<channel_names.size();j++)
|
||||
{
|
||||
if(channel_names[j].length() == channel_name.length() &&
|
||||
equal(channel_names[j].begin(), channel_names[j].end(),
|
||||
channel_name.begin(), nocase_compare)) //case insensitive compare
|
||||
{
|
||||
channel_id = it->second.channel_id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return channel_id;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Get functions
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
bool CNeutrinoAPI::GetStreamInfo(int bitInfo[10])
|
||||
{
|
||||
char *key, *tmpptr, buf[100];
|
||||
long value;
|
||||
int pos = 0;
|
||||
|
||||
memset(bitInfo, 0, sizeof(bitInfo));
|
||||
|
||||
FILE *fd = fopen("/proc/bus/bitstream", "rt");
|
||||
|
||||
if (fd == NULL)
|
||||
{
|
||||
dprintf("error while opening proc-bitstream\n" );
|
||||
return false;
|
||||
}
|
||||
|
||||
fgets(buf,35,fd);//dummy
|
||||
while(!feof(fd))
|
||||
{
|
||||
if(fgets(buf,35,fd)!=NULL)
|
||||
{
|
||||
buf[strlen(buf)-1]=0;
|
||||
tmpptr=buf;
|
||||
key=strsep(&tmpptr,":");
|
||||
value=strtoul(tmpptr,NULL,0);
|
||||
bitInfo[pos]= value;
|
||||
pos++;
|
||||
#if !HAVE_DB0X2
|
||||
if(pos > 4) break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#if !HAVE_DB0X2
|
||||
bitInfo[4] = 37500;
|
||||
bitInfo[6] = 3;
|
||||
#endif
|
||||
fclose(fd);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
bool CNeutrinoAPI::GetChannelEvents(void)
|
||||
{
|
||||
//eList = Sectionsd->getChannelEvents();
|
||||
sectionsd_getChannelEvents(eList);
|
||||
CChannelEventList::iterator eventIterator;
|
||||
|
||||
ChannelListEvents.clear();
|
||||
|
||||
if (eList.begin() == eList.end())
|
||||
return false;
|
||||
|
||||
for (eventIterator = eList.begin(); eventIterator != eList.end(); eventIterator++)
|
||||
ChannelListEvents[(*eventIterator).get_channel_id()] = &(*eventIterator);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
std::string CNeutrinoAPI::GetServiceName(t_channel_id channel_id)
|
||||
{
|
||||
tallchans_iterator it = allchans.find(channel_id);
|
||||
if (it != allchans.end())
|
||||
it->second.getName();
|
||||
#if 0
|
||||
unsigned int i;
|
||||
for (i = 0; i < TVChannelList.size(); i++)
|
||||
if (TVChannelList[i].channel_id == channel_id)
|
||||
return TVChannelList[i].name;
|
||||
for (i = 0; i < RadioChannelList.size(); i++)
|
||||
if (RadioChannelList[i].channel_id == channel_id)
|
||||
return RadioChannelList[i].name;
|
||||
#endif
|
||||
return "";
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
CZapitClient::BouquetChannelList *CNeutrinoAPI::GetBouquet(unsigned int BouquetNr, int Mode)
|
||||
{
|
||||
//FIXME
|
||||
printf("CNeutrinoAPI::GetChannelList still used !\n");
|
||||
return NULL;
|
||||
#if 0
|
||||
int mode;
|
||||
|
||||
if (Mode == CZapitClient::MODE_CURRENT)
|
||||
mode = Zapit->getMode();
|
||||
else
|
||||
mode = Mode;
|
||||
|
||||
if (mode == CZapitClient::MODE_TV)
|
||||
return &TVBouquetsList[BouquetNr];
|
||||
else
|
||||
return &RadioBouquetsList[BouquetNr];
|
||||
#endif
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
CZapitClient::BouquetChannelList *CNeutrinoAPI::GetChannelList(int Mode)
|
||||
{
|
||||
//FIXME
|
||||
printf("CNeutrinoAPI::GetChannelList still used !\n");
|
||||
return NULL;
|
||||
#if 0
|
||||
int mode;
|
||||
|
||||
if (Mode == CZapitClient::MODE_CURRENT)
|
||||
mode = Zapit->getMode();
|
||||
else
|
||||
mode = Mode;
|
||||
|
||||
if (mode == CZapitClient::MODE_TV)
|
||||
return &TVChannelList;
|
||||
else
|
||||
return &RadioChannelList;
|
||||
#endif
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
void CNeutrinoAPI::UpdateBouquet(unsigned int BouquetNr)
|
||||
{
|
||||
#if 0 //FIXME
|
||||
TVBouquetsList[BouquetNr].clear();
|
||||
RadioBouquetsList[BouquetNr].clear();
|
||||
Zapit->getBouquetChannels(BouquetNr - 1, TVBouquetsList[BouquetNr], CZapitClient::MODE_TV, true);
|
||||
Zapit->getBouquetChannels(BouquetNr - 1, RadioBouquetsList[BouquetNr], CZapitClient::MODE_RADIO, true);
|
||||
#endif
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
void CNeutrinoAPI::UpdateChannelList(void)
|
||||
{
|
||||
#if 0
|
||||
TVChannelList.clear();
|
||||
RadioChannelList.clear();
|
||||
Zapit->getChannels(RadioChannelList, CZapitClient::MODE_RADIO, CZapitClient::SORT_BOUQUET, true);
|
||||
Zapit->getChannels(TVChannelList, CZapitClient::MODE_TV, CZapitClient::SORT_BOUQUET, true);
|
||||
#endif
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
std::string CNeutrinoAPI::timerEventType2Str(CTimerd::CTimerEventTypes type)
|
||||
{
|
||||
std::string result;
|
||||
switch (type) {
|
||||
case CTimerd::TIMER_SHUTDOWN:
|
||||
result = "Shutdown";
|
||||
break;
|
||||
case CTimerd::TIMER_NEXTPROGRAM:
|
||||
result = "Next program";
|
||||
break;
|
||||
case CTimerd::TIMER_ZAPTO:
|
||||
result = "Zap to";
|
||||
break;
|
||||
case CTimerd::TIMER_STANDBY:
|
||||
result = "Standby";
|
||||
break;
|
||||
case CTimerd::TIMER_RECORD:
|
||||
result = "Record";
|
||||
break;
|
||||
case CTimerd::TIMER_REMIND:
|
||||
result = "Reminder";
|
||||
break;
|
||||
case CTimerd::TIMER_EXEC_PLUGIN:
|
||||
result = "Execute plugin";
|
||||
break;
|
||||
case CTimerd::TIMER_SLEEPTIMER:
|
||||
result = "Sleeptimer";
|
||||
break;
|
||||
default:
|
||||
result = "Unknown";
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
std::string CNeutrinoAPI::timerEventRepeat2Str(CTimerd::CTimerEventRepeat rep)
|
||||
{
|
||||
std::string result;
|
||||
switch (rep) {
|
||||
case CTimerd::TIMERREPEAT_ONCE:
|
||||
result = "once";
|
||||
break;
|
||||
case CTimerd::TIMERREPEAT_DAILY:
|
||||
result = "daily";
|
||||
break;
|
||||
case CTimerd::TIMERREPEAT_WEEKLY:
|
||||
result = "weekly";
|
||||
break;
|
||||
case CTimerd::TIMERREPEAT_BIWEEKLY:
|
||||
result = "2-weekly";
|
||||
break;
|
||||
case CTimerd::TIMERREPEAT_FOURWEEKLY:
|
||||
result = "4-weekly";
|
||||
break;
|
||||
case CTimerd::TIMERREPEAT_MONTHLY:
|
||||
result = "monthly";
|
||||
break;
|
||||
case CTimerd::TIMERREPEAT_BYEVENTDESCRIPTION:
|
||||
result = "event";
|
||||
break;
|
||||
case CTimerd::TIMERREPEAT_WEEKDAYS:
|
||||
result = "weekdays";
|
||||
break;
|
||||
default:
|
||||
if (rep > CTimerd::TIMERREPEAT_WEEKDAYS)
|
||||
{
|
||||
if (rep & 0x0200)
|
||||
result += "Mo ";
|
||||
if (rep & 0x0400)
|
||||
result += "Tu ";
|
||||
if (rep & 0x0800)
|
||||
result += "We ";
|
||||
if (rep & 0x1000)
|
||||
result += "Th ";
|
||||
if (rep & 0x2000)
|
||||
result += "Fr ";
|
||||
if (rep & 0x4000)
|
||||
result += "Sa ";
|
||||
if (rep & 0x8000)
|
||||
result += "Su ";
|
||||
}
|
||||
else
|
||||
result = "Unknown";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
89
src/nhttpd/tuxboxapi/neutrinoapi.h
Normal file
89
src/nhttpd/tuxboxapi/neutrinoapi.h
Normal file
@@ -0,0 +1,89 @@
|
||||
#ifndef __nhttpd_neutrinoapi_h__
|
||||
#define __nhttpd_neutrinoapi_h__
|
||||
|
||||
// c++
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
// tuxbox
|
||||
#include <controldclient/controldclient.h>
|
||||
#include <eventserver.h>
|
||||
#include <sectionsdclient/sectionsdclient.h>
|
||||
#include <timerdclient/timerdclient.h>
|
||||
#include <zapit/client/zapitclient.h>
|
||||
|
||||
// nhttpd
|
||||
#include "helper.h"
|
||||
#include "lcdapi.h"
|
||||
#include "neutrinoyparser.h"
|
||||
#include "controlapi.h"
|
||||
#include "lcdapi.h"
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// No Class Helpers
|
||||
const char * _getISO639Description(const char * const iso);
|
||||
bool _initialize_iso639_map(void);
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
class CNeutrinoAPI
|
||||
{
|
||||
// Clientlibs
|
||||
CControldClient *Controld;
|
||||
CSectionsdClient *Sectionsd;
|
||||
CZapitClient *Zapit;
|
||||
CTimerdClient *Timerd;
|
||||
CLCDAPI *LcdAPI;
|
||||
CEventServer *EventServer;
|
||||
|
||||
// complete channellists
|
||||
CZapitClient::BouquetChannelList RadioChannelList,TVChannelList;
|
||||
// events of actual channel
|
||||
std::map<unsigned, CChannelEvent *> ChannelListEvents;
|
||||
// List of available tv bouquets
|
||||
std::map<int, CZapitClient::BouquetChannelList> TVBouquetsList;
|
||||
// List of available radio bouquets
|
||||
std::map<int, CZapitClient::BouquetChannelList> RadioBouquetsList;
|
||||
// List of bouquets
|
||||
CZapitClient::BouquetList BouquetList;
|
||||
|
||||
//bool standby_mode;
|
||||
|
||||
// some constants
|
||||
static std::string Dbox_Hersteller[4];
|
||||
static std::string videooutput_names[5];
|
||||
static std::string videoformat_names[4];
|
||||
static std::string audiotype_names[5];
|
||||
|
||||
// get functions to collect data
|
||||
bool GetChannelEvents(void);
|
||||
bool GetStreamInfo(int bitinfo[10]);
|
||||
std::string GetServiceName(t_channel_id channel_id);
|
||||
CZapitClient::BouquetChannelList *GetBouquet(unsigned int BouquetNr, int Mode);
|
||||
CZapitClient::BouquetChannelList *GetChannelList(int Mode);
|
||||
|
||||
// support functions
|
||||
void ZapTo (const char * const target);
|
||||
void ZapToSubService(const char * const target);
|
||||
void ZapToChannelId (t_channel_id channel_id);
|
||||
t_channel_id ChannelNameToChannelId(std::string search_channel_name);
|
||||
|
||||
void UpdateBouquet(unsigned int BouquetNr);
|
||||
void UpdateChannelList(void);
|
||||
void UpdateBouquets(void);
|
||||
|
||||
std::string timerEventType2Str(CTimerd::CTimerEventTypes type);
|
||||
std::string timerEventRepeat2Str(CTimerd::CTimerEventRepeat rep);
|
||||
|
||||
public:
|
||||
CNeutrinoAPI();
|
||||
~CNeutrinoAPI(void);
|
||||
|
||||
CChannelEventList eList;
|
||||
CNeutrinoYParser *NeutrinoYParser;
|
||||
CControlAPI *ControlAPI;
|
||||
|
||||
friend class CNeutrinoYParser; // Backreference
|
||||
friend class CControlAPI;
|
||||
};
|
||||
|
||||
#endif /*__nhttpd_neutrinoapi_h__*/
|
1166
src/nhttpd/tuxboxapi/neutrinoyparser.cpp
Normal file
1166
src/nhttpd/tuxboxapi/neutrinoyparser.cpp
Normal file
File diff suppressed because it is too large
Load Diff
70
src/nhttpd/tuxboxapi/neutrinoyparser.h
Normal file
70
src/nhttpd/tuxboxapi/neutrinoyparser.h
Normal file
@@ -0,0 +1,70 @@
|
||||
//=============================================================================
|
||||
// NHTTPD
|
||||
// Neutrino yParser Extenstion
|
||||
//=============================================================================
|
||||
|
||||
#ifndef __nhttpd_neutrinoyparser_h__
|
||||
#define __nhttpd_neutrinoyparser_h__
|
||||
|
||||
// c++
|
||||
#include <string>
|
||||
// yhttpd
|
||||
#include "yhttpd.h"
|
||||
#include "ytypes_globals.h"
|
||||
#include "mod_yparser.h"
|
||||
|
||||
// forward declaration
|
||||
class CNeutrinoAPI;
|
||||
//-----------------------------------------------------------------------------
|
||||
class CNeutrinoYParser : public CyParser
|
||||
{
|
||||
private:
|
||||
// yParser funcs for Tuxbox
|
||||
typedef std::string (CNeutrinoYParser::*TyFunc)(CyhookHandler *hh, std::string para);
|
||||
typedef struct
|
||||
{
|
||||
const char *func_name;
|
||||
TyFunc pfunc;
|
||||
} TyFuncCall;
|
||||
const static TyFuncCall yFuncCallList[];
|
||||
|
||||
// func TUXBOX
|
||||
std::string func_mount_get_list(CyhookHandler *hh, std::string para);
|
||||
std::string func_mount_set_values(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_bouquets_as_dropdown(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_bouquets_as_templatelist(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_actual_bouquet_number(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_channels_as_dropdown(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_actual_channel_id(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_bouquets_with_epg(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_mode(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_video_pids(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_radio_pid(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_audio_pids_as_dropdown(CyhookHandler *hh, std::string para);
|
||||
std::string func_unmount_get_list(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_partition_list(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_boxtype(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_current_stream_info(CyhookHandler *hh, std::string para);
|
||||
std::string func_get_timer_list(CyhookHandler *hh, std::string para);
|
||||
std::string func_set_timer_form(CyhookHandler *hh, std::string para);
|
||||
std::string func_bouquet_editor_main(CyhookHandler *hh, std::string para);
|
||||
std::string func_set_bouquet_edit_form(CyhookHandler *hh, std::string para);
|
||||
|
||||
protected:
|
||||
CNeutrinoAPI *NeutrinoAPI;
|
||||
|
||||
public:
|
||||
// constructor & deconstructor
|
||||
CNeutrinoYParser(CNeutrinoAPI *_NeutrinoAPI);
|
||||
virtual ~CNeutrinoYParser(void);
|
||||
|
||||
// virtual functions for BaseClass
|
||||
virtual std::string YWeb_cgi_func(CyhookHandler *hh, std::string ycmd);
|
||||
// virtual functions for HookHandler/Hook
|
||||
virtual std::string getHookName(void) {return std::string("mod_NeutrinoYParser");}
|
||||
virtual std::string getHookVersion(void) {return std::string("$Revision: 1.2 $");}
|
||||
virtual THandleStatus Hook_SendResponse(CyhookHandler *hh);
|
||||
virtual THandleStatus Hook_ReadConfig(CConfigFile *Config, CStringList &ConfigList);
|
||||
};
|
||||
|
||||
#endif /*__nhttpd_neutrinoyparser_h__*/
|
3
src/nhttpd/web/AUTHORS
Normal file
3
src/nhttpd/web/AUTHORS
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
|
||||
Johannes Golombek [yjogol@cvs.tuxbox.org]
|
15
src/nhttpd/web/Makefile.am
Normal file
15
src/nhttpd/web/Makefile.am
Normal file
@@ -0,0 +1,15 @@
|
||||
SUBDIRS = images scripts
|
||||
|
||||
install-data-local:
|
||||
for f in ./*.js; do gzip $$f -c >$$f.gz; done
|
||||
install -d $(DATADIR)/neutrino/httpd-y
|
||||
install -m 0644 *.yhtm $(DATADIR)/neutrino/httpd-y
|
||||
install -m 0644 *.htm $(DATADIR)/neutrino/httpd-y
|
||||
install -m 0644 *.html $(DATADIR)/neutrino/httpd-y
|
||||
install -m 0644 *.css $(DATADIR)/neutrino/httpd-y
|
||||
install -m 0644 *.gz $(DATADIR)/neutrino/httpd-y
|
||||
install -m 0644 *.txt $(DATADIR)/neutrino/httpd-y
|
||||
install -m 0644 *.ico $(DATADIR)/neutrino/httpd-y
|
||||
|
||||
uninstall-local:
|
||||
-rm -rf $(DATADIR)/neutrino/httpd-y
|
27
src/nhttpd/web/Y_About.yhtm
Normal file
27
src/nhttpd/web/Y_About.yhtm
Normal file
@@ -0,0 +1,27 @@
|
||||
{=var-set:cancache=yPyes=}
|
||||
{=include-block:Y_Blocks.txt;headCache=}
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Info#About=}{=var-set:menu=About=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<table border="0" cellpadding="2" cellspacing="4">
|
||||
<tr>
|
||||
<td width="144" valign="top"><a href="http://www.yjogol.de" target="_blank"><img border="0" src="images/y.png" alt="y-logo"/></a></td>
|
||||
<td valign="top">
|
||||
<b>Coolstream HD1 yWeb</b>
|
||||
<br/><a href="http://www.yjogol.de" target="_blank">www.yjogol.de</a>
|
||||
<p>
|
||||
{=ini-get:Y_Version.txt;version=}<br/>
|
||||
{=ini-get:Y_Version.txt;date=}<br/>
|
||||
{=ini-get:Y_Version.txt;type=}<br/><br/>
|
||||
{=ini-get:Y_Version.txt;info=}<br/>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
384
src/nhttpd/web/Y_Baselib.js
Normal file
384
src/nhttpd/web/Y_Baselib.js
Normal file
@@ -0,0 +1,384 @@
|
||||
/* yWeb Baselib by yjogol
|
||||
$Date: 2007/02/21 17:38:48 $
|
||||
$Revision: 1.3 $
|
||||
*/
|
||||
var agt=navigator.userAgent.toLowerCase();
|
||||
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
|
||||
|
||||
/*DHTML-Basics*/
|
||||
function id(obj_id)
|
||||
{
|
||||
return document.getElementById(obj_id);
|
||||
}
|
||||
function obj_update(obj_id, html)
|
||||
{
|
||||
var obj = id(obj_id);
|
||||
if(obj)
|
||||
obj.innerHTML = html;
|
||||
}
|
||||
function yClientHeight()
|
||||
{
|
||||
if(window.innerHeight)
|
||||
return window.innerHeight;
|
||||
else if (document.documentElement && document.documentElement.clientHeight)
|
||||
return document.documentElement.clientHeight;
|
||||
else if (document.body)
|
||||
return document.body.clientHeight;
|
||||
}
|
||||
function yClientWidth()
|
||||
{
|
||||
if(window.innerWidth)
|
||||
return window.innerWidth;
|
||||
else if (document.documentElement && document.documentElement.clientWidth)
|
||||
return document.documentElement.clientWidth;
|
||||
else if (document.body)
|
||||
return document.body.clientWidth;
|
||||
}
|
||||
function obj_create(_typ, _class)
|
||||
{
|
||||
var __obj = document.createElement(_typ);
|
||||
var __class = document.createAttribute("class");
|
||||
|
||||
__class.nodeValue = _class;
|
||||
__obj.setAttributeNode(__class);
|
||||
return __obj;
|
||||
}
|
||||
function obj_createAt(_parent, _typ, _class)
|
||||
{
|
||||
var __obj = obj_create(_typ, _class);
|
||||
_parent.appendChild(__obj);
|
||||
return __obj;
|
||||
}
|
||||
function obj_get_radio_value(_obj_name)
|
||||
{
|
||||
var _obj = document.getElementsByName(_obj_name);
|
||||
if(_obj)
|
||||
{
|
||||
for(i=0;i<_obj.length;i++)
|
||||
if(_obj[i].checked)
|
||||
return _obj[i].value;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
function obj_set_radio_value(_obj_name, _value)
|
||||
{
|
||||
var _obj = document.getElementsByName(_obj_name);
|
||||
if(_obj)
|
||||
{
|
||||
for(i=0;i<_obj.length;i++)
|
||||
_obj[i].checked = (_obj[i].value == _value);
|
||||
}
|
||||
}
|
||||
function obj_clear_all_childs(_obj)
|
||||
{
|
||||
while(_obj.childNodes.length > 0)
|
||||
{
|
||||
var aChild = _obj.firstChild;
|
||||
if(aChild)
|
||||
_obj.removeChild(aChild);
|
||||
}
|
||||
}
|
||||
/*DHTML-Table*/
|
||||
function y_add_row_to_table(_table, _class)
|
||||
{
|
||||
var __row=document.createElement("tr");
|
||||
var __class = document.createAttribute("class");
|
||||
__class.nodeValue = _class;
|
||||
__row.setAttributeNode(__class);
|
||||
_table.appendChild(__row);
|
||||
return __row;
|
||||
}
|
||||
function y_add_plain_cell_to_row(_row, _name)
|
||||
{
|
||||
var __cell=document.createElement("td");
|
||||
__cell.setAttribute("name", _name);
|
||||
_row.appendChild(__cell);
|
||||
return __cell;
|
||||
}
|
||||
function y_add_text_cell_to_row(_row, _name, _value)
|
||||
{
|
||||
var __cell=y_add_plain_cell_to_row(_row, _name);
|
||||
var __text=document.createTextNode(_value);
|
||||
__cell.appendChild(__text);
|
||||
return __cell;
|
||||
}
|
||||
function y_add_html_cell_to_row(_row, _name, _value)
|
||||
{
|
||||
var __cell=y_add_plain_cell_to_row(_row, _name);
|
||||
__cell.innerHTML = _value;
|
||||
return __cell;
|
||||
}
|
||||
function getXMLNodeItemValue(node, itemname)
|
||||
{
|
||||
|
||||
var item = node.getElementsByTagName(itemname);
|
||||
if(item.length>0)
|
||||
if(item[0].firstChild)
|
||||
return item[0].firstChild.nodeValue;
|
||||
return "";
|
||||
}
|
||||
function setInnerHTML(_id, _html)
|
||||
{
|
||||
var item = document.getElementById(_id);
|
||||
if(item)
|
||||
item.innerHTML = _html;
|
||||
}
|
||||
|
||||
function obj_addAttributeNode(_obj, _attr, _value)
|
||||
{
|
||||
var __attr = document.createAttribute(_attr);
|
||||
__attr.nodeValue = _value;
|
||||
_obj.setAttributeNode(__attr);
|
||||
}
|
||||
/*XMLHttpRequest AJAX*/
|
||||
var g_req;
|
||||
function loadXMLDoc(_url, _processReqChange)
|
||||
{
|
||||
if (window.XMLHttpRequest)
|
||||
{
|
||||
g_req = new XMLHttpRequest();
|
||||
g_req.onreadystatechange = _processReqChange;
|
||||
if(g_req.overrideMimeType)
|
||||
{ g_req.overrideMimeType('text/xml');}
|
||||
g_req.open("GET", _url, true);
|
||||
g_req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
|
||||
g_req.send(null);
|
||||
}
|
||||
else if (window.ActiveXObject)
|
||||
{
|
||||
g_req = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
if (g_req)
|
||||
{
|
||||
g_req.onreadystatechange = _processReqChange;
|
||||
g_req.open("GET", _url, true);
|
||||
g_req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
|
||||
g_req.send();
|
||||
}
|
||||
}
|
||||
else
|
||||
alert("Kein Browser-Support fr XMLHttpRequest");
|
||||
}
|
||||
function loadSyncURL(_url)
|
||||
{
|
||||
var _req;
|
||||
if (window.XMLHttpRequest)
|
||||
{
|
||||
_req = new XMLHttpRequest();
|
||||
_req.open("GET", _url, false);
|
||||
_req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
|
||||
_req.send(null);
|
||||
}
|
||||
else if (window.ActiveXObject)
|
||||
{
|
||||
_req = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
if(_req)
|
||||
{
|
||||
_req.open("GET", _url, false);
|
||||
_req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
|
||||
_req.send();
|
||||
}
|
||||
}
|
||||
else
|
||||
alert("Kein Browser-Support fr XMLHttpRequest");
|
||||
if (_req.readyState == 4 && _req.status == 200)
|
||||
return _req.responseText;
|
||||
else
|
||||
return "";
|
||||
}
|
||||
function loadSyncURLxml(_url)
|
||||
{
|
||||
var _req;
|
||||
if (window.XMLHttpRequest)
|
||||
{
|
||||
_req = new XMLHttpRequest();
|
||||
_req.open("GET", _url, false);
|
||||
_req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
|
||||
_req.send(null);
|
||||
}
|
||||
else if (window.ActiveXObject)
|
||||
{
|
||||
_req = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
if(_req)
|
||||
{
|
||||
_req.open("GET", _url, false);
|
||||
_req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
|
||||
_req.send();
|
||||
}
|
||||
}
|
||||
else
|
||||
alert("Kein Browser-Support fr XMLHttpRequest");
|
||||
if (_req.readyState == 4 && _req.status == 200)
|
||||
return _req.responseXML;
|
||||
else
|
||||
return "";
|
||||
}
|
||||
/*visibility*/
|
||||
function obj_disable(_obj_name, _disable)
|
||||
{
|
||||
var __obj = document.getElementById(_obj_name);
|
||||
__obj.disabled = _disable;
|
||||
}
|
||||
function obj_enable(_obj_name, _disable)
|
||||
{
|
||||
obj_disable(_obj_name, !_disable);
|
||||
}
|
||||
function show_obj(_obj_name, _show)
|
||||
{
|
||||
var __obj = document.getElementById(_obj_name);
|
||||
__obj.style.visibility= (_show) ? "visible" : "hidden";
|
||||
}
|
||||
function display_obj(_obj_name, _display)
|
||||
{
|
||||
var __obj = document.getElementById(_obj_name);
|
||||
__obj.style.display = (_display) ? "block" : "none";
|
||||
}
|
||||
function show_waitbox(_show)
|
||||
{
|
||||
show_obj("wait", _show);
|
||||
}
|
||||
|
||||
/*Strings*/
|
||||
function l_trim(_str)
|
||||
{
|
||||
return _str.replace(/\s*((\S+\s*)*)/, "$1");
|
||||
}
|
||||
function r_trim(_str)
|
||||
{
|
||||
return _str.replace(/((\s*\S+)*)\s*/, "$1");
|
||||
}
|
||||
function trim(_str)
|
||||
{
|
||||
return l_trim(r_trim(_str));
|
||||
}
|
||||
function split_one(_str, _delimiter)
|
||||
{
|
||||
var __p = _str.indexOf(_delimiter);
|
||||
var __left = _str.substring(0, __p);
|
||||
var __right = _str.substring(__p+1);
|
||||
return new Array(__left, __right);
|
||||
}
|
||||
function split_left(_str, _delimiter)
|
||||
{
|
||||
var res = split_one(_str, _delimiter);
|
||||
return res[0];
|
||||
}
|
||||
function split_right(_str, _delimiter)
|
||||
{
|
||||
var res = split_one(_str, _delimiter);
|
||||
return res[1];
|
||||
}
|
||||
function de_qout(_str)
|
||||
{
|
||||
_str = _str.replace(/\"/g,""");
|
||||
_str = _str.replace(/'/g,""");
|
||||
return _str;
|
||||
}
|
||||
function epg_de_qout(_str)
|
||||
{
|
||||
_str = de_qout(_str);
|
||||
_str = _str.replace(/\x8A/g,"<br/>");
|
||||
return _str;
|
||||
}
|
||||
/*etc*/
|
||||
function format_time(_t)
|
||||
{
|
||||
var hour = _t.getHours();
|
||||
var min = _t.getMinutes();
|
||||
if(hour < 10)
|
||||
hour = "0" + hour;
|
||||
if(min < 10)
|
||||
min = "0" + min;
|
||||
return hour + ":" + min;
|
||||
}
|
||||
|
||||
function bt_get_value(_bt_name)
|
||||
{
|
||||
var __button = document.getElementById(_bt_name);
|
||||
if(__button)
|
||||
return __button.firstChild.nodeValue;
|
||||
else
|
||||
return "";
|
||||
}
|
||||
function bt_set_value(_bt_name, _text)
|
||||
{
|
||||
var __button = document.getElementById(_bt_name);
|
||||
__button.firstChild.nodeValue = _text;
|
||||
}
|
||||
/*dbox*/
|
||||
function dbox_exec_command(_cmd)
|
||||
{
|
||||
var __cmd = _cmd.replace(/ /g, "&");
|
||||
return loadSyncURL("/control/exec?Y_Tools&exec_cmd&"+__cmd);
|
||||
}
|
||||
function dbox_message(_msg)
|
||||
{
|
||||
return loadSyncURL("/control/message?nmsg="+_msg);
|
||||
}
|
||||
function dbox_popup(_msg)
|
||||
{
|
||||
return loadSyncURL("/control/message?popup="+_msg);
|
||||
}
|
||||
function dbox_set_timer(_channel_id, _start, _stop)
|
||||
{
|
||||
var _url = "/control/timer?action=new&type=5&alarm="+_start+"&stop="+_stop+"&announce="+_start+"&channel_id="+_channel_id+"&rs=1";
|
||||
return loadSyncURL(_url);
|
||||
}
|
||||
function dbox_zapto(_channel_id)
|
||||
{
|
||||
var _url = "/control/zapto?"+_channel_id;
|
||||
return loadSyncURL(_url);
|
||||
}
|
||||
function dbox_spts_status()
|
||||
{
|
||||
return (trim(loadSyncURL("/control/system?getAViAExtPlayBack")) == "1");
|
||||
}
|
||||
function dbox_spts_set(_on)
|
||||
{
|
||||
return loadSyncURL("/control/system?setAViAExtPlayBack=" + (_on ? "spts" : "pes") );
|
||||
}
|
||||
function dbox_getmode()
|
||||
{
|
||||
return trim( loadSyncURL("/control/getmode") );
|
||||
}
|
||||
function dbox_setmode(_mode)
|
||||
{
|
||||
return loadSyncURL("/control/setmode?" + _mode);
|
||||
}
|
||||
/*live*/
|
||||
function live_kill_streams()
|
||||
{
|
||||
dbox_exec_command("killall streamts");
|
||||
dbox_exec_command("killall streampes");
|
||||
}
|
||||
function live_switchto(_mode)
|
||||
{
|
||||
//live_kill_streams();
|
||||
var _actual_spts = dbox_spts_status();
|
||||
if(_mode == "tv" && !_actual_spts)
|
||||
dbox_spts_set(true);
|
||||
else if(_mode == "radio" && _actual_spts)
|
||||
dbox_spts_set(false);
|
||||
|
||||
var _actual_mode = dbox_getmode();
|
||||
if(_actual_mode != _mode)
|
||||
dbox_setmode(_mode);
|
||||
}
|
||||
function live_lock()
|
||||
{
|
||||
loadSyncURL("/control/lcd?lock=1&clear=1&rect=10,10,110,50,1,0&xpos=20&ypos=27&size=22&font=2&text=%20%20%20%20yWeb%0A%20%20LiveView&update=1");
|
||||
loadSyncURL("/control/rc?lock");
|
||||
loadSyncURL("/control/zapto?stopplayback");
|
||||
}
|
||||
function live_unlock()
|
||||
{
|
||||
loadSyncURL("/control/lcd?lock=0");
|
||||
loadSyncURL("/control/rc?unlock");
|
||||
loadSyncURL("/control/zapto?startplayback");
|
||||
}
|
||||
function yhttpd_cache_clear(category)
|
||||
{
|
||||
if(category == "")
|
||||
loadSyncURL("/y/cache-clear");
|
||||
else
|
||||
loadSyncURL("/y/cache-clear?category="+category);
|
||||
}
|
394
src/nhttpd/web/Y_Blocks.txt
Normal file
394
src/nhttpd/web/Y_Blocks.txt
Normal file
@@ -0,0 +1,394 @@
|
||||
# ------- Timer iFrame
|
||||
start-block~timer
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Live_Timer#Timer=}{=var-set:menu=Timer=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<iframe src="/fb/timer.dbox2" scrolling="auto" marginheight="1" marginwidth="1" frameborder="0" name="bouquets" style="height : 600px;width:90%;"></iframe>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
end-block~timer
|
||||
|
||||
# ------- build live url
|
||||
start-block~build_live_url
|
||||
{=var-set:mrl={=if-equal:{=mode=}~tv~http://{=func:get_header_data Host=}:31339/0,{=func:get_video_pids {=if-empty:{=audiopid=}~00000~{=audiopid=}=}=}~http://{=func:get_header_data Host=}:31338/{=func:get_audio_pid=}=}=}
|
||||
end-block~build_live_url
|
||||
|
||||
# ------- yWeb save Settings
|
||||
start-block~yWeb_save_settings
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;slavebox;{=slavebox=}~open=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;management_ip;{=managementIP=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;management_ip2;{=managementIP2=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;wol_mac_1;{=wol_mac_1=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;wol_mac_2;{=wol_mac_2=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;wol_mac_3;{=wol_mac_3=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;yweb_box_name;{=yweb_box_name=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;yweb_box_color;{=yweb_box_color=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;vlc_record_path;{=vlc_record_path=}~save=}
|
||||
end-block~yWeb_save_settings
|
||||
|
||||
# ------- Live save Settings
|
||||
start-block~Live_save_settings
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;deinterlace;{=deinterlace=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;deinterlace_filter;{=v=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;udp;{=udp=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;http_caching;{=http_caching=}~save=}
|
||||
end-block~Live_save_settings
|
||||
|
||||
# ------- nhttpd save Settings
|
||||
start-block~nhttpd_save_settings
|
||||
{=ini-set:/var/tuxbox/config/nhttpd.conf;mod_auth.username;{=authuser=}~open=}
|
||||
{=ini-set:/var/tuxbox/config/nhttpd.conf;mod_auth.password;{=authpassword=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/nhttpd.conf;mod_auth.no_auth_client;{=noauthclient=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/nhttpd.conf;mod_auth.authenticate;{=authenticate=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/nhttpd.conf;WebsiteMain.port;{=port=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/nhttpd.conf;webserver.threading;{=threading=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/nhttpd.conf;server.no_keep-alive_ips;{=no_keep_alive_ips=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/nhttpd.conf;Tuxbox.HostedDocumentRoot;{=HostedDocRoot=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/nhttpd.conf;ExtrasDocRoot;{=ExtrasDocRoot=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/nhttpd.conf;ExtrasDocURL;{=ExtrasDocURL=}~save=}
|
||||
{=func:do_reload_httpd_config=}
|
||||
end-block~nhttpd_save_settings
|
||||
|
||||
# ------- VNC save Settings
|
||||
start-block~vnc_save_settings
|
||||
{=ini-set:/var/tuxbox/config/vnc.conf;server;{=server=}~open=}
|
||||
{=ini-set:/var/tuxbox/config/vnc.conf;port;{=port=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/vnc.conf;passwd;{=password=}~cache=}
|
||||
{=ini-set:/var/tuxbox/config/vnc.conf;scale;{=scale=}~save=}
|
||||
end-block~vnc_save_settings
|
||||
|
||||
# ------- Timer save Settings
|
||||
start-block~timer_save_settings
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;tvinfo_username;{=tvinfo_username=}=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;tvinfo_password;{=tvinfo_password=}=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;klack_url;{=klack_url=}=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;live_resolution_w;{=ini-get:/var/tuxbox/config/Y-Web.conf;live_resolution_w;384=}=}
|
||||
{=ini-set:/var/tuxbox/config/Y-Web.conf;live_resolution_h;{=ini-get:/var/tuxbox/config/Y-Web.conf;live_resolution_h;288=}=}
|
||||
{=file-action:/var/tuxbox/config/channels.txt;add;{=channels=}=}
|
||||
end-block~timer_save_settings
|
||||
|
||||
# ------- Ext save Settings
|
||||
start-block~ext_save_settings
|
||||
{=file-action:/var/tuxbox/config/extentions.txt;add;{=extentions=}=}
|
||||
end-block~ext_save_settings
|
||||
|
||||
# ------- No Managemant Error
|
||||
start-block~no_management
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
</head>
|
||||
<body>
|
||||
<br/>
|
||||
<div class="y_head">Error</div>
|
||||
<div class="y_work_box" title="This page could be used for management proposes only">
|
||||
This page could be used for management proposes only.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
end-block~no_management
|
||||
|
||||
# ------- Managemant Check : insert at Top of Page
|
||||
start-block~management_check_top
|
||||
{=var-set:management={=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip;{=func:get_request_data client_addr=}=}~1~=}{=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip2=}~1~=}=}
|
||||
{=if-empty:{=var-get:management=}
|
||||
~
|
||||
{=include-block:Y_Blocks.txt;no_management=}
|
||||
~
|
||||
end-block~management_check_top
|
||||
|
||||
# ------- Managemant Check : insert at End of Page
|
||||
start-block~management_check_bottom
|
||||
=}
|
||||
end-block~management_check_bottom
|
||||
|
||||
# ------- Snip: Wait Message Layer-div hidden
|
||||
start-block~snip_wait
|
||||
<div class="y_wait_box" id="wait">
|
||||
<div class="y_wait_box_head"><h2>{=if-empty:{=var-get:wait_text=}~Inquiry is worked on~{=var-get:wait_text=}=}</h2></div>
|
||||
<div class="y_wait_box_body">
|
||||
<p align="center">
|
||||
<span class="y_wait_box_Main">
|
||||
{=if-empty:{=var-get:wait_text=}~Inquiry is worked on~{=var-get:wait_text=}=}</span><br/>
|
||||
<img border="0" src="/images/wait.gif" width="20" height="20" alt="wait"/><br/><br/>
|
||||
Please wait<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
end-block~snip_wait
|
||||
|
||||
# ------- Snip: Wait Message Layer-div shown
|
||||
start-block~snip_show_wait
|
||||
<div class="y_wait_box_visible" id="wait">
|
||||
<div class="y_wait_box_head"><h2>{=if-empty:{=var-get:wait_text=}~Inquiry is worked on~{=var-get:wait_text=}=}</h2></div>
|
||||
<div class="y_wait_box_body">
|
||||
<p align="center">
|
||||
<span class="y_wait_box_Main">
|
||||
{=if-empty:{=var-get:wait_text=}~Inquiry is worked on~{=var-get:wait_text=}=}</span><br/>
|
||||
<img border="0" src="/images/wait.gif" width="20" height="20" alt="wait"/><br/><br/>
|
||||
Please wait<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
end-block~snip_show_wait
|
||||
|
||||
# ------- Wiki Help display
|
||||
#<img src="/images/help.gif" align="bottom">
|
||||
start-block~wiki_help
|
||||
<a href="http://wiki.godofgta.de/{=var-get:help_url=}" target="_blank" title="get help from wiki.godofgta.de">?</a>
|
||||
end-block~wiki_help
|
||||
|
||||
# ------- work menu
|
||||
start-block~work_menu
|
||||
<div class="work_box_help">{=include-block:Y_Blocks.txt;wiki_help=}</div><div style="margin-right:4em;">{=var-get:menu=}</div>
|
||||
end-block~work_menu
|
||||
|
||||
|
||||
# ============= LAYOUT
|
||||
# ------- Lay-HEAD
|
||||
start-block~head
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<meta http-equiv="cache-control" content="no-cache" />
|
||||
<meta http-equiv="expires" content="0" />
|
||||
<title>yWeb</title>
|
||||
<link rel="STYLESHEET" type="text/css" href="/Y_Main.css"/>
|
||||
end-block~head
|
||||
|
||||
# ------- Lay-HEAD
|
||||
start-block~headCache
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<title>yWeb</title>
|
||||
<link rel="STYLESHEET" type="text/css" href="/Y_Main.css"/>
|
||||
end-block~headCache
|
||||
|
||||
# ------- Lay-HEAD without charset
|
||||
start-block~head_no_charset
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>yWeb</title>
|
||||
<link rel="STYLESHEET" type="text/css" href="/Y_Main.css"/>
|
||||
end-block~head_no_charset
|
||||
|
||||
# ------- Lay-Frame HEAD
|
||||
start-block~frame_head
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<link rel="STYLESHEET" type="text/css" href="/Y_Main.css"/>
|
||||
<title>yWeb</title>
|
||||
end-block~frame_head
|
||||
|
||||
# ------- Lay-Frame HEAD
|
||||
start-block~frame_iso_head
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
|
||||
<link rel="STYLESHEET" type="text/css" href="/Y_Main.css"/>
|
||||
<title>yWeb</title>
|
||||
end-block~frame_iso_head
|
||||
|
||||
# ------- Lay-Frame MAIN
|
||||
start-block~frame_main
|
||||
{=include-block:Y_Blocks.txt;frame_head=}
|
||||
<title>dbox yWeb</title>
|
||||
</head>
|
||||
<frameset rows="60,*">
|
||||
<frame name="prim_menu" src="Y_Menue.yhtm" scrolling="no" frameborder="0" noresize="noresize" />
|
||||
<frame name="base" src="Y_Dyn_Pages.yhtm?page=frame_boxcontrol" frameborder="0" style="height:100%"/>
|
||||
<noframes>
|
||||
<body>
|
||||
<p>Your Browser does not support Frames.</p>
|
||||
</body>
|
||||
</noframes>
|
||||
</frameset>
|
||||
</html>
|
||||
end-block~frame_main
|
||||
|
||||
# ------- Lay-Frame MAIN
|
||||
start-block~page_frame_rest
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
</head>
|
||||
<body style="background : #F0F0F0;">
|
||||
</body>
|
||||
</html>
|
||||
end-block~page_frame_rest
|
||||
|
||||
# ------- Lay-Frame Secondary-Menu
|
||||
start-block~frame_secondary
|
||||
{=include-block:Y_Blocks.txt;frame_iso_head=}
|
||||
</head>
|
||||
<frameset cols="157,*">
|
||||
<frame name="sec_menu" src="{=var-get:sec_menu=}" scrolling="no" noresize="noresize" frameborder="0"/>
|
||||
<frame name="work" src="{=var-get:work=}" scrolling="auto" frameborder="0"/>
|
||||
<noframes>
|
||||
<body>
|
||||
<p>Your Browser does not support Frames.</p>
|
||||
</body>
|
||||
</noframes>
|
||||
</frameset>
|
||||
</html>
|
||||
end-block~frame_secondary
|
||||
|
||||
# ------- Lay-Frame Boxcontrol-Menu
|
||||
start-block~frame_boxcontrol
|
||||
{=var-set:sec_menu=Y_Boxcontrol_Menue.yhtm=}
|
||||
{=var-set:work=Y_Boxcontrol_Bouquets.yhtm=}
|
||||
{=include-block:Y_Blocks.txt;frame_secondary=}
|
||||
end-block~frame_boxcontrol
|
||||
|
||||
# ------- Lay-Frame Live-Menu
|
||||
start-block~frame_live
|
||||
{=var-set:sec_menu=Y_Live_Menue.yhtm?start={=dostart=}=}
|
||||
{=var-set:work=Y_blank.htm=}
|
||||
{=include-block:Y_Blocks.txt;frame_secondary=}
|
||||
end-block~frame_live
|
||||
|
||||
# ------- Lay-Frame Live-Menu
|
||||
start-block~frame_live_directtv
|
||||
{=var-set:sec_menu=Y_Live_Menue.yhtm=}
|
||||
{=var-set:work=Y_LiveViewFull.yhtm?mode=tv&typ=live=}
|
||||
{=include-block:Y_Blocks.txt;frame_secondary=}
|
||||
end-block~frame_live_directtv
|
||||
|
||||
# ------- Lay-Frame Timer-Menu
|
||||
start-block~frame_timer
|
||||
{=var-set:sec_menu=Y_Timer_Menue.yhtm=}
|
||||
{=var-set:work=Y_blank.htm=}
|
||||
{=include-block:Y_Blocks.txt;frame_secondary=}
|
||||
end-block~frame_timer
|
||||
|
||||
# ------- Lay-Frame Tools-Menu
|
||||
start-block~frame_tools
|
||||
{=var-set:sec_menu=Y_Tools_Menue.yhtm=}
|
||||
{=var-set:work=Y_blank.htm=}
|
||||
{=include-block:Y_Blocks.txt;frame_secondary=}
|
||||
end-block~frame_tools
|
||||
|
||||
# ------- Lay-Frame Settings-Menu
|
||||
start-block~frame_settings
|
||||
{=var-set:sec_menu=Y_Settings_Menue.yhtm=}
|
||||
{=var-set:work=Y_blank.htm=}
|
||||
{=include-block:Y_Blocks.txt;frame_secondary=}
|
||||
end-block~frame_settings
|
||||
|
||||
# ------- Lay-Frame Extentions-Menu
|
||||
start-block~frame_ext
|
||||
{=var-set:sec_menu=Y_Ext_Menue.yhtm=}
|
||||
{=var-set:work=Y_blank.htm=}
|
||||
{=include-block:Y_Blocks.txt;frame_secondary=}
|
||||
end-block~frame_ext
|
||||
|
||||
# ------- Lay-Frame Info-Menu
|
||||
start-block~frame_info
|
||||
{=var-set:sec_menu=Y_Info_Menue.yhtm=}
|
||||
{=var-set:work=Y_blank.htm=}
|
||||
{=include-block:Y_Blocks.txt;frame_secondary=}
|
||||
end-block~frame_info
|
||||
|
||||
# ------- Lay-Frame Tools-Info-Menu
|
||||
start-block~frame_tools-info
|
||||
{=include-block:Y_Blocks.txt;frame_head=}
|
||||
</head>
|
||||
<frameset rows="370,*">
|
||||
<frame name="oben" src="Y_Tools_Info_Menue.yhtm" scrolling="auto" frameborder="0"/>
|
||||
<frame name="unten" src="Y_blank.htm" scrolling="auto" frameborder="0"/>
|
||||
<noframes>
|
||||
<body>
|
||||
<p>Your Browser does not support Frames.</p>
|
||||
</body>
|
||||
</noframes>
|
||||
</frameset>
|
||||
</html>
|
||||
end-block~frame_tools-info
|
||||
|
||||
# ==== LIVE
|
||||
# ------- Lay-Frame Live-EPG Frameset
|
||||
start-block~frame_live_epg
|
||||
{=include-block:Y_Blocks.txt;frame_head=}
|
||||
</head>
|
||||
<frameset rows="100,*">
|
||||
<frame name="epg_info" src="Y_Live_EPG_Info.yhtm" scrolling="auto" frameborder="0"/>
|
||||
<frame name="epg_list" src="Y_Live_EPG.yhtm?channel={=channel=}" scrolling="auto" frameborder="0" style="height:100%"/>
|
||||
<noframes>
|
||||
<body>
|
||||
<p>Your Browser does not support Frames.</p>
|
||||
</body>
|
||||
</noframes>
|
||||
</frameset>
|
||||
</html>
|
||||
end-block~frame_live_epg
|
||||
|
||||
# ------- Remote
|
||||
start-block~remote
|
||||
<img src="images/rcd.jpg" usemap="#rc"/>
|
||||
<map name="rc">
|
||||
<area shape="rect" href="javascript:rcsim('KEY_POWER')" coords="175, 29, 210, 68" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_MUTE')" coords="61, 32, 90, 64" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_1')" coords="55, 87, 95, 123" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_2')" coords="115, 76, 159, 106" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_3')" coords="175, 86, 220, 124" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_4')" coords="17, 132, 95, 170" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_5')" coords="115, 124, 159, 152" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_6')" coords="175, 132, 220, 170" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_7')" coords="55, 180, 95, 217" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_8')" coords="115, 172, 159, 200" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_9')" coords="175, 179, 220, 216" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_0')" coords="115, 216, 159, 246" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_INFO')" coords="175, 225, 220, 263" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_SETUP')" coords="47, 307, 78, 339" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_EPG')" coords="92, 268, 121, 300" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_FAVORITES')" coords="148, 268, 178, 300" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_HOME')" coords="191, 309, 221, 340" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_UP')" coords="102, 305, 168, 330" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_LEFT')" coords="76, 330, 100, 400" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_OK')" coords="115, 345, 154, 386" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_RIGHT')" coords="165, 330, 195, 400" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_DOWN')" coords="100, 400, 170, 425" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_VOLUMEUP')" coords="50, 400, 85, 435" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_VOLUMEDOWN')" coords="90, 435, 125, 470" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_PAGEUP')" coords="180, 405, 215, 435" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_PAGEDOWN')" coords="140, 435, 175, 467" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_TV')" coords="55, 465, 100, 500" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_TEXT')" coords="115, 485, 150, 510" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_RADIO')" coords="165, 466, 210, 502" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_RED')" coords="59, 519, 83, 543" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_GREEN')" coords="99, 530, 125, 558" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_YELLOW')" coords="140, 532, 165, 558" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_BLUE')" coords="180, 519, 205, 545" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_SAT')" coords="53, 585, 97, 606" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_HELP')" coords="105, 589, 155, 610" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_NEXT')" coords="165, 586, 210, 607" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_PREVIOUS')" coords="165, 623, 210, 645" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_TIME')" coords="53, 621, 97, 643" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_AUDIO')" coords="105, 624, 155, 646" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_REWIND')" coords="53, 656, 97, 679" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_FORWARD')" coords="105, 658, 155, 680" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_PAUSE')" coords="165, 659, 210, 680" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_RECORD')" coords="53, 692, 97, 716" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_STOP')" coords="105, 695, 155, 717" />
|
||||
<area shape="rect" href="javascript:rcsim('KEY_PLAY')" coords="165, 695, 210, 716" />
|
||||
</map>
|
||||
end-block~remote
|
||||
|
||||
|
||||
|
95
src/nhttpd/web/Y_Boxcontrol_Bouquet_Editor_Edit.yhtm
Normal file
95
src/nhttpd/web/Y_Boxcontrol_Bouquet_Editor_Edit.yhtm
Normal file
@@ -0,0 +1,95 @@
|
||||
{=func:set_bouquet_edit_form=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_submit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
for (i=document.getElementById('channels').bchannels.length-1; i >= 0 ; i--) {
|
||||
document.getElementById('channels').bchannels.options[i].selected=true;
|
||||
}
|
||||
document.getElementById('channels').submit();
|
||||
}
|
||||
function do_abort()
|
||||
{
|
||||
document.location.href="/Y_Boxcontrol_Bouquet_Editor_Main.yhtm?selected={=selected=}";
|
||||
}
|
||||
function movechannels(source, destination)
|
||||
{
|
||||
for (i=0; i < source.length; i++) {
|
||||
if (source.options[i].selected==true) {
|
||||
destination.options[destination.length] = new Option(source.options[i].text, source.options[i].value);
|
||||
}
|
||||
}
|
||||
for (i=source.length-1; i >= 0 ; i--) {
|
||||
if (source.options[i].selected==true) {
|
||||
source.options[i] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
function poschannel(box, direction)
|
||||
{
|
||||
if (direction==0) {
|
||||
for (i=1; i < box.length ; i++) {
|
||||
if (box.options[i].selected==true) {
|
||||
buffer = new Option(box.options[i].text, box.options[i].value);
|
||||
box.options[i].selected=false;
|
||||
box.options[i]= new Option(box.options[i-1].text, box.options[i-1].value);
|
||||
box.options[i-1]=buffer;
|
||||
box.options[i-1].selected=true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (i=box.length-2; i >= 0 ; i--) {
|
||||
if (box.options[i].selected==true) {
|
||||
buffer = new Option(box.options[i].text, box.options[i].value);
|
||||
box.options[i].selected=false;
|
||||
box.options[i]=new Option(box.options[i+1].text, box.options[i+1].value);
|
||||
box.options[i+1]=buffer;
|
||||
box.options[i+1].selected=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{=var-set:wait_text=Save.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:BoxControl#Bouquet-Editor=}{=var-set:menu=Bouquet "{=name=}" workon=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form action="/control/changebouquet" method="post" id="channels" enctype="x-www-form-urlencoded">
|
||||
<p><input type="hidden" name="selected" value="{=selected=}" /></p>
|
||||
<table cellspacing="5">
|
||||
<tr>
|
||||
<td>
|
||||
<select multiple="multiple" size="20" name="bchannels">
|
||||
{=bouquet_channels=}
|
||||
</select>
|
||||
</td>
|
||||
<td align="center">
|
||||
<input type="button" value="up" onclick="poschannel(document.getElementById('channels').bchannels, 0);" /><br /><br />
|
||||
<input type="button" value="down" onclick="poschannel(document.getElementById('channels').bchannels, 1);" /><br /><br />
|
||||
<input type="button" value=">>>" onclick="movechannels(document.getElementById('channels').bchannels, document.getElementById('channels').achannels);" /><br /><br />
|
||||
<input type="button" value="<<<" onclick="movechannels(document.getElementById('channels').achannels, document.getElementById('channels').bchannels);" /><br /><br />
|
||||
</td>
|
||||
<td>
|
||||
<select multiple="multiple" size="20" name="achannels">
|
||||
{=all_channels=}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="hidden" name="redirect" value="/Y_Boxcontrol_Bouquet_Editor_Main.yhtm"/>
|
||||
<p><input type="button" value="submit" onclick="do_submit();" />
|
||||
<input type="button" value="abort" onclick="do_abort();" /></p>
|
||||
All changes must be still stored!
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
186
src/nhttpd/web/Y_Boxcontrol_Bouquet_Editor_Main.yhtm
Normal file
186
src/nhttpd/web/Y_Boxcontrol_Bouquet_Editor_Main.yhtm
Normal file
@@ -0,0 +1,186 @@
|
||||
{=include-block:Y_Blocks.txt;head_no_charset=}
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
|
||||
<meta http-equiv="cache-control" content="no-cache" />
|
||||
<meta http-equiv="expires" content="0" />
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var gurl= "";
|
||||
var gurl_last= "";
|
||||
function hide_forms()
|
||||
{
|
||||
show_obj("add",false);
|
||||
show_obj("rename",false);
|
||||
}
|
||||
function do_reload()
|
||||
{
|
||||
//alert("href:"+document.location.href+" gurl:"+gurl+" path+s+h:"+document.location.pathname+document.location.search+document.location.hash);
|
||||
if((document.location.pathname+document.location.search+document.location.hash) == gurl)
|
||||
document.location.reload();
|
||||
else
|
||||
document.location.href = gurl;
|
||||
}
|
||||
|
||||
function do_set(bouquetnr, action)
|
||||
{
|
||||
loadSyncURL("/control/setbouquet?selected="+bouquetnr+"&action="+action+"#akt");
|
||||
gurl = "/Y_Boxcontrol_Bouquet_Editor_Main.yhtm?selected=" + bouquetnr+ "#akt";
|
||||
window.setTimeout('do_reload()',50);
|
||||
}
|
||||
function do_save()
|
||||
{
|
||||
hide_forms();
|
||||
loadSyncURL("/control/savebouquet");
|
||||
alert("Bouquet-Liste gespeichert");
|
||||
}
|
||||
function do_move(bouquetnr, action)
|
||||
{
|
||||
var sel = parseInt(String(bouquetnr));
|
||||
loadSyncURL("/control/movebouquet?selected="+bouquetnr+"&action="+action+"#akt");
|
||||
if(action=="up") sel--;
|
||||
else sel++;
|
||||
|
||||
gurl = "/Y_Boxcontrol_Bouquet_Editor_Main.yhtm?selected=" + sel+ "#akt";
|
||||
window.setTimeout('do_reload()',50);
|
||||
}
|
||||
function do_delete(bouquetnr, bouquet_name)
|
||||
{
|
||||
if (confirm("Bouquet \""+bouquet_name+"\" wirklich loeschen?")==true){
|
||||
loadSyncURL("/control/deletebouquet?selected="+bouquetnr);
|
||||
gurl = "/Y_Boxcontrol_Bouquet_Editor_Main.yhtm?selected=" + bouquetnr+ "#akt";
|
||||
window.setTimeout('do_reload()',50);
|
||||
}
|
||||
}
|
||||
function do_add_start()
|
||||
{
|
||||
hide_forms();
|
||||
show_obj("add",true);
|
||||
}
|
||||
function do_add_abort()
|
||||
{
|
||||
show_obj("add",false);
|
||||
}
|
||||
function do_add()
|
||||
{
|
||||
if(document.add.bouquet_name.value != ""){
|
||||
if(loadSyncURL("/control/addbouquet?name="+document.add.bouquet_name.value) != "Ok\r\n")
|
||||
alert("Bouquet-Name existiert schon!");
|
||||
else
|
||||
gurl = "/Y_Boxcontrol_Bouquet_Editor_Main.yhtm#akt";
|
||||
show_obj("add",false);
|
||||
window.setTimeout('do_reload()',50);
|
||||
}
|
||||
else
|
||||
alert("Es wurde kein Bouquet-Name angegeben!");
|
||||
}
|
||||
function do_rename_start(bouquetnr, bouquet_name)
|
||||
{
|
||||
hide_forms();
|
||||
document.rename.bouquetnr.value = bouquetnr;
|
||||
document.rename.bouquet_name.value = bouquet_name;
|
||||
show_obj("rename",true);
|
||||
}
|
||||
function do_rename_abort()
|
||||
{
|
||||
show_obj("rename",false);
|
||||
}
|
||||
|
||||
function do_rename()
|
||||
{
|
||||
if(document.rename.bouquet_name.value != ""){
|
||||
if(loadSyncURL("/control/renamebouquet?selected="+document.rename.bouquetnr.value+"&nameto="+document.rename.bouquet_name.value) != "Ok\r\n")
|
||||
alert("Bouquet-Name existiert schon!");
|
||||
else{
|
||||
gurl = "/Y_Boxcontrol_Bouquet_Editor_Main.yhtm?selected=" + bouquetnr+ "#akt";
|
||||
show_obj("rename",false);
|
||||
// display_obj("rename",false);
|
||||
window.setTimeout('do_reload()',500);
|
||||
}
|
||||
}
|
||||
else
|
||||
alert("Es wurde kein Bouquet-Name angegeben!");
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
<style>
|
||||
.fly_form
|
||||
{
|
||||
visibility: hidden;
|
||||
z-index: 4;
|
||||
position: absolute;
|
||||
left: 100px;
|
||||
top: 100px;
|
||||
border: 1px solid #2188e0;
|
||||
border-collapse: collapse;
|
||||
background-color: white;
|
||||
padding: 1em;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:BoxControl#Bouquet-Editor=}{=var-set:menu=Bouquet-Editor=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<p>
|
||||
<a href="javascript:do_add_start()">[add Bouquet]</a>
|
||||
<a href="javascript:do_save()">[save]</a>
|
||||
</p>
|
||||
<div id="add" class="fly_form">
|
||||
<form name="add" accept-charset="UTF-8" action="">
|
||||
<p><b>Bouquet add</b><br/>
|
||||
New Bouquets' name:
|
||||
<input type="text" size="30" name="bouquet_name" />
|
||||
<br/>
|
||||
<input type="button" value="add" onclick="do_add()" />
|
||||
<input type="button" value="abort" onclick="do_add_abort()" />
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
<div id="rename" class="fly_form">
|
||||
<form name="rename" accept-charset="UTF-8" action="">
|
||||
<p>
|
||||
<p><b>Bouquet rename</b><br/>
|
||||
New Bouquets' name:
|
||||
<input type="text" size="30" name="bouquet_name" />
|
||||
<input type="hidden" name="bouquetnr" value="" />
|
||||
<br/>
|
||||
<input type="button" value="rename" onclick="do_rename()" />
|
||||
<input type="button" value="abort" onclick="do_rename_abort()" />
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
<table width="90%">
|
||||
<!-- line template -->
|
||||
{=var-set:row=
|
||||
<tr class="%c">
|
||||
<td align="center">
|
||||
%s
|
||||
<a href="javascript:do_set('%d','%s');">
|
||||
<img src="/images/%s.gif" alt="%s" style="border: 0px" /></a>
|
||||
</td>
|
||||
<td align="center">
|
||||
<a href="javascript:do_set('%d','%s');">
|
||||
<img src="/images/%s.gif" alt="%s" style="border: 0px" />
|
||||
</a>
|
||||
</td>
|
||||
<td><a href="/Y_Boxcontrol_Bouquet_Editor_Edit.yhtm?selected=%d&name=%s">%s</a></td>
|
||||
<td width="100" style="white-space: nowrap;">
|
||||
<a href="javascript:do_rename_start('%d','%s');">
|
||||
<img src="/images/modify.png" alt="umbenennen" style="border: 0px" /></a>
|
||||
<a href="javascript:do_delete('%d','%s');">
|
||||
<img src="/images/remove.png" alt="löschen" style="border: 0px" /></a>
|
||||
<span style="visibility:%s;"><a href="javascript:do_move('%d','down');">
|
||||
<img src="/images/arrowdown.gif" alt="nach unten" style="border: 0px" /></a> </span>
|
||||
<span style="visibility:%s;"><a href="javascript:do_move('%d','up');">
|
||||
<img src="/images/arrowup.gif" alt="nach oben" style="border: 0px" /></a> </span>
|
||||
</td>
|
||||
</tr>
|
||||
=}
|
||||
{=func:bouquet_editor_main {=var-get:row=}=}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
11
src/nhttpd/web/Y_Boxcontrol_Bouquetlist.yhtm
Normal file
11
src/nhttpd/web/Y_Boxcontrol_Bouquetlist.yhtm
Normal file
@@ -0,0 +1,11 @@
|
||||
{=include-block:Y_Blocks.txt;head_no_charset=}
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
|
||||
</head>
|
||||
<body>
|
||||
<table class="bouquetlist" width="100%">
|
||||
<tr class="blist"><td><a href="Y_Boxcontrol_Channellist.yhtm#akt" target="content">Channels</a></td></tr>
|
||||
<tr><td><hr/></td></tr>
|
||||
{=func:get_bouquets_as_templatelist <tr class="blist"><td><a href="Y_Boxcontrol_Channellist.yhtm?bouquet=%d#akt" target="content">%s</a></td></tr>=}
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
15
src/nhttpd/web/Y_Boxcontrol_Bouquets.yhtm
Normal file
15
src/nhttpd/web/Y_Boxcontrol_Bouquets.yhtm
Normal file
@@ -0,0 +1,15 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:BoxControl#Bouquet=}{=var-set:menu=Bouquet=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<iframe src="Y_Boxcontrol_Bouquetlist.yhtm?bouquet=#akt" scrolling="auto" marginheight="1" marginwidth="1" frameborder="0" name="bouquets"
|
||||
style="height : 600px;width:20%;"></iframe>
|
||||
<iframe src="Y_Boxcontrol_Channellist.yhtm?bouquet={=func:get_actual_bouquet_number=}"
|
||||
style="height : 600px;width:75%;" scrolling="auto" marginheight="1" marginwidth="1" frameborder="0" name="content"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
28
src/nhttpd/web/Y_Boxcontrol_Channellist.yhtm
Normal file
28
src/nhttpd/web/Y_Boxcontrol_Channellist.yhtm
Normal file
@@ -0,0 +1,28 @@
|
||||
{=include-block:Y_Blocks.txt;head_no_charset=}
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_zap(channelid)
|
||||
{
|
||||
dbox_zapto(channelid);
|
||||
window.location.reload();
|
||||
}
|
||||
function do_epg(channelid)
|
||||
{
|
||||
window.location.href="Y_Dyn_Pages.yhtm?page=frame_live_epg&channel="+channelid;
|
||||
// window.open("Y_Dyn_Pages.yhtm?page=frame_live_epg&channel="+channelid, "epg", "width=400");
|
||||
}
|
||||
function do_streaminfo()
|
||||
{
|
||||
window.open("Y_StreamInfo.yhtm", "stream", "width=400");
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<table class="bouquetitemlist">
|
||||
{=func:get_bouquets_with_epg {=bouquet=}=}
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
115
src/nhttpd/web/Y_Boxcontrol_Menue.yhtm
Normal file
115
src/nhttpd/web/Y_Boxcontrol_Menue.yhtm
Normal file
@@ -0,0 +1,115 @@
|
||||
{=var-set:cancache=yPInstall=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var g_volumen = 100;
|
||||
function volumen_set_audiobar(_volumen)
|
||||
{
|
||||
var l = document.getElementById("audiobar_left");
|
||||
var r = document.getElementById("audiobar_right");
|
||||
/*IE: width=0 -> =""*/
|
||||
if(_volumen > 0)
|
||||
l.width = _volumen.toString()+"%";
|
||||
else
|
||||
l.width = "";
|
||||
if(_volumen >= 100)
|
||||
r.width = "";
|
||||
else
|
||||
r.width = (100-_volumen).toString()+"%";
|
||||
}
|
||||
function volumen_get()
|
||||
{
|
||||
var __volumen_str = loadSyncURL("/control/volume");
|
||||
var __volumen = parseInt(__volumen_str,10);
|
||||
if(isNaN(__volumen)) __volumen=100;
|
||||
volumen_set_audiobar(__volumen);
|
||||
g_volumen = __volumen;
|
||||
return __volumen;
|
||||
}
|
||||
function volumen_set(_volumen)
|
||||
{
|
||||
_volumen = Math.min(100, _volumen);
|
||||
_volumen = Math.max(0, _volumen);
|
||||
loadSyncURL("/control/volume?"+_volumen);
|
||||
volumen_set_audiobar(_volumen);
|
||||
g_volumen = _volumen;
|
||||
}
|
||||
function toggle_mute()
|
||||
{
|
||||
var __button = document.getElementById("btMute");
|
||||
if(__button.firstChild.nodeValue == "Mute"){
|
||||
loadSyncURL("/control/volume?mute");
|
||||
__button.firstChild.nodeValue = "Unmute";
|
||||
}
|
||||
else{
|
||||
loadSyncURL("/control/volume?unmute");
|
||||
__button.firstChild.nodeValue = "Mute";
|
||||
}
|
||||
}
|
||||
function set_mode(_mode)
|
||||
{
|
||||
var actual_mode = loadSyncURL("/control/getmode");
|
||||
if(actual_mode != _mode)
|
||||
loadSyncURL("/control/setmode?" + _mode);
|
||||
parent.work.location.reload();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
{=var-set:fbshot={=if-file-exists:/bin/fbshot~true~{=if-file-exists:/var/bin/fbshot~true~{=if-file-exists:/bin/dboxshot~true~{=if-file-exists:/var/bin/dboxshot~true~false=}=}=}=}=}
|
||||
{=var-set:dboxshot={=if-file-exists:/bin/dboxshot~true~{=if-file-exists:/var/bin/dboxshot~true~false=}=}=}
|
||||
<body>
|
||||
<div class="y_menu_sec_box">
|
||||
<div class="y_menu_sec_box_head"><h2>Boxcontrol</h2></div>
|
||||
<div class="y_menu_sec_box_body">
|
||||
<div class="y_menu_sec">
|
||||
<ul>
|
||||
<li><a target="work" title="Switch channels" href="Y_Boxcontrol_Bouquets.yhtm">Bouquets</a></li>
|
||||
<li><a target="work" title="control box functions (reboot, remote control, SPTS, ...)" href="Y_Tools_Boxcontrol.yhtm">Control</a></li>
|
||||
<li><a target="work" title="send Messages to box" href="Y_Boxcontrol_Messages.yhtm">Messages</a></li>
|
||||
<li><a target="work" title="Web-based Remote Control" href="Y_Tools_Rcsim.yhtm">Remote</a></li>
|
||||
{=if-equal:{=var-get:fbshot=}~true~
|
||||
<li><a target="work" title="make osd screenshot" href="Y_Tools_fbshot.yhtm">OSD Screenshot</a></li>
|
||||
~
|
||||
<li class="disabled" title="fbshot not installed at /bin or /var/bin">OSD Screenshot</li>
|
||||
=}
|
||||
{=if-equal:{=var-get:dboxshot=}~true~
|
||||
<li><a target="work" title="remote and osd" href="Y_Tools_remote_osd.yhtm">Remote & OSD</a></li>
|
||||
~
|
||||
<li class="disabled" title="dboxshot not installed at /bin or /var/bin">Remote & OSD</li>
|
||||
=}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="y_menu_sec_box">
|
||||
<div class="y_menu_sec_box_head"><h2>Control</h2></div>
|
||||
<div class="y_menu_sec_box_body">
|
||||
<center>
|
||||
<table class="y_text_boxcontrol_table" cellspacing="0" cellpadding="0" title="volumen display">
|
||||
<tr>
|
||||
<td id="audiobar_left" width="100%"><img src="/images/blank.gif" height="1" width="0" alt="."/></td>
|
||||
<td id="audiobar_right" width="0%" bgcolor="white"><img src="/images/blank.gif" height="1" width="0" alt="."/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
<span class="y_text_boxcontrol_button" title="decrease volumen">
|
||||
<a href="javascript:volumen_set(g_volumen-10);"> <strong>-</strong> </a></span>
|
||||
<span class="y_text_boxcontrol_button" title="increase volumen">
|
||||
<a href="javascript:volumen_set(g_volumen+10);"> <strong>+</strong> </a></span>
|
||||
<span class="y_text_boxcontrol_button" title="mute volumen">
|
||||
<a id="btMute" href="javascript:toggle_mute();">Mute</a></span>
|
||||
<br/><br/>
|
||||
<span class="y_text_boxcontrol_button" title="switch to TV"><a href="javascript:set_mode('tv');">TV</a></span>
|
||||
<span class="y_text_boxcontrol_button" title="switch to Radio"><a href="javascript:set_mode('radio');">Radio</a></span>
|
||||
</center>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
volumen_set_audiobar(volumen_get());
|
||||
//]]>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
40
src/nhttpd/web/Y_Boxcontrol_Messages.yhtm
Normal file
40
src/nhttpd/web/Y_Boxcontrol_Messages.yhtm
Normal file
@@ -0,0 +1,40 @@
|
||||
{=var-set:cancache=yPyes=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_message()
|
||||
{
|
||||
dbox_message(document.f.nmsg.value);
|
||||
}
|
||||
function do_popup()
|
||||
{
|
||||
dbox_popup(document.f.popup.value);
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:BoxControl#Message=}{=var-set:menu=Message=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="f" action="" method="get" enctype="application/x-www-form-urlencoded" accept-charset="UTF-8">
|
||||
<table class="y_invisible_table" cellpadding="5">
|
||||
<tr><td class="y_form_header">Message to Coolstram-TV Screen</td></tr>
|
||||
<tr><td>
|
||||
<input name="nmsg" type="text" size="50" maxlength="255" title="enter message to send to TV screen"/>
|
||||
<input type="button" name="message" value="send" title="send message" onclick="do_message()"/>
|
||||
</td></tr>
|
||||
<tr><td class="y_form_header">Popup message to Coolstream-TV Screen</td></tr>
|
||||
<tr><td>
|
||||
<input name="popup" type="text" size="50" maxlength="255" title="enter message to send to TV screen"/>
|
||||
<input type="button" name="pmessage" value="send" title="send message" onclick="do_popup()"/>
|
||||
</td></tr>
|
||||
</table>
|
||||
<br/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
1
src/nhttpd/web/Y_Dyn_Pages.yhtm
Normal file
1
src/nhttpd/web/Y_Dyn_Pages.yhtm
Normal file
@@ -0,0 +1 @@
|
||||
{=include-block:Y_Blocks.txt;{=page=}=}
|
211
src/nhttpd/web/Y_EPG_Plus.yhtm
Normal file
211
src/nhttpd/web/Y_EPG_Plus.yhtm
Normal file
@@ -0,0 +1,211 @@
|
||||
{=include-block:Y_Blocks.txt;head_no_charset=}
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var g_width_px=650;
|
||||
var g_width_min=135;
|
||||
var g_delta_min=5;
|
||||
var g_bar_delta_min=15;
|
||||
var _delta = Math.round(g_width_px * g_delta_min / g_width_min);
|
||||
var epg_data;
|
||||
var epg_data_index=0;
|
||||
|
||||
function epg_zapto()
|
||||
{
|
||||
dbox_zapto(document.getElementById("d_channel_id").text);
|
||||
}
|
||||
function epg_set_timer()
|
||||
{
|
||||
dbox_set_timer(document.getElementById("d_channel_id").text, document.getElementById("d_start").text, document.getElementById("d_stop").text);
|
||||
}
|
||||
function build_epg_clear()
|
||||
{
|
||||
var ep = document.getElementById("epg_plus");
|
||||
obj_clear_all_childs(ep);
|
||||
}
|
||||
function build_epg_setbox(_item, _starttime, _stoptime, _start, _stop)
|
||||
{
|
||||
var d_start = Math.max(_start, _starttime);
|
||||
var d_stop = Math.min(_stop, _stoptime);
|
||||
var d_left = 103+ Math.round((d_start-_starttime) * _delta / 60 / g_delta_min);
|
||||
var d_width = Math.max(0,Math.round((d_stop-d_start) * _delta / 60 / g_delta_min)-3);
|
||||
_item.style.cssText = "position:absolute; top:0px; left:"+d_left+"px; width:"+d_width+"px;";
|
||||
}
|
||||
function show_epg_item(_index)
|
||||
{
|
||||
show_obj("epg_info",true);
|
||||
document.getElementById("d_desc").innerHTML = epg_data[_index][4]+" "+epg_data[_index][0];
|
||||
document.getElementById("d_info1").innerHTML = epg_data[_index][1];
|
||||
document.getElementById("d_info2").innerHTML = epg_data[_index][2];
|
||||
document.getElementById("d_start").text = epg_data[_index][3];
|
||||
document.getElementById("d_stop").text = epg_data[_index][5];
|
||||
document.getElementById("d_channel_id").text = epg_data[_index][6];
|
||||
}
|
||||
function build_epg_bouquet(__bdiv, __channel_id, _starttime, _stoptime)
|
||||
{
|
||||
var xml = loadSyncURLxml("/control/epg?xml=true&channelid="+__channel_id+"}&details=true&stoptime="+_stoptime);
|
||||
if(xml){
|
||||
var prog_list = xml.getElementsByTagName('prog');
|
||||
for(var i=0;i<prog_list.length;i++){
|
||||
var prog = prog_list[i];
|
||||
|
||||
var _stop = getXMLNodeItemValue(prog, "stop_sec");
|
||||
_stop = parseInt(_stop);
|
||||
if(_stop > _starttime){
|
||||
var _start_t = getXMLNodeItemValue(prog, "start_t");
|
||||
var _start = getXMLNodeItemValue(prog, "start_sec");
|
||||
_start = parseInt(_start);
|
||||
var _stop_t = getXMLNodeItemValue(prog, "stop_t");
|
||||
var _desc = epg_de_qout(getXMLNodeItemValue(prog, "description"));
|
||||
var _info1 = epg_de_qout(getXMLNodeItemValue(prog, "info1"));
|
||||
var _info2 = epg_de_qout(getXMLNodeItemValue(prog, "info2"));
|
||||
var __item = obj_createAt(__bdiv, "div", "ep_bouquet_item");
|
||||
|
||||
var epg_obj= new Array(_desc, _info1, _info2, _start, _start_t, _stop.toString(), __channel_id);
|
||||
epg_data.push(epg_obj);
|
||||
__item.innerHTML = "<span onclick=\"show_epg_item('"+epg_data_index+"');\" title=\""+_start_t+" "+_desc+"\">"+_desc+"</span>";
|
||||
build_epg_setbox(__item, _starttime, _stoptime, _start, _stop);
|
||||
epg_data_index++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
function build_epg_time_bar(_tdiv, _starttime, _stoptime)
|
||||
{
|
||||
var __w_step = Math.round(g_width_px * g_bar_delta_min / g_width_min);
|
||||
var __steps = Math.round(g_width_px / __w_step)+1;
|
||||
var _start = _starttime;
|
||||
for(var i=0;i<__steps;i++){
|
||||
var __item = obj_createAt(_tdiv, "div", "ep_time_bar_item");
|
||||
__item.innerHTML = format_time(new Date(_start*1000));
|
||||
var _stop = _start + (g_bar_delta_min * 60);
|
||||
build_epg_setbox(__item, _starttime, _stoptime, _start, _stop);
|
||||
_start = _stop;
|
||||
}
|
||||
}
|
||||
var g_i = 0;
|
||||
var g_bouquet_list;
|
||||
function build_epg_plus(_bouquet, _starttime)
|
||||
{
|
||||
build_epg_clear();
|
||||
epg_data = new Array();
|
||||
epg_data_index=0;
|
||||
var _bouquets_xml = loadSyncURLxml("/control/getbouquet?bouquet="+_bouquet+"&xml=true");
|
||||
if(_bouquets_xml){
|
||||
g_bouquet_list = _bouquets_xml.getElementsByTagName("channel");
|
||||
var ep = document.getElementById("epg_plus");
|
||||
var _stoptime = _starttime + g_width_min * 60;
|
||||
var __tdiv = obj_createAt(ep, "div", "ep_time_bar");
|
||||
var __tname_div = obj_createAt(__tdiv, "div", "ep_bouquet_name");
|
||||
__tname_div.innerHTML = "Time";
|
||||
build_epg_time_bar(__tdiv, _starttime, _stoptime);
|
||||
g_i=0;
|
||||
window.setTimeout("build_epg_plus_loop("+_starttime+","+_stoptime+")",100);
|
||||
}
|
||||
}
|
||||
function build_epg_plus_loop(_starttime, _stoptime)
|
||||
{
|
||||
if(g_i<g_bouquet_list.length){
|
||||
var _bouquet = g_bouquet_list[g_i];
|
||||
var __channel_name = getXMLNodeItemValue(_bouquet, "name");
|
||||
var __channel_id = getXMLNodeItemValue(_bouquet, "id");
|
||||
var ep = document.getElementById("epg_plus");
|
||||
var __bdiv = obj_createAt(ep, "div", "ep_bouquet");
|
||||
var __bname_div = obj_createAt(__bdiv, "div", "ep_bouquet_name");
|
||||
|
||||
__bname_div.innerHTML = __channel_name;
|
||||
build_epg_bouquet(__bdiv, __channel_id, _starttime, _stoptime);
|
||||
window.setTimeout("build_epg_plus_loop("+_starttime+","+_stoptime+")",100);
|
||||
g_i++;
|
||||
}
|
||||
else{
|
||||
show_waitbox(false);
|
||||
obj_disable("btGet", false);
|
||||
}
|
||||
}
|
||||
function build_epg_plus_main()
|
||||
{
|
||||
show_obj("epg_info",false);
|
||||
show_waitbox(true);
|
||||
obj_disable("btGet", true);
|
||||
var sel=document.e.bouquets.selectedIndex;
|
||||
if(sel != -1)
|
||||
bou = document.e.bouquets[sel].value;
|
||||
else
|
||||
bou = 1;
|
||||
_secs=document.e.epg_time.value;
|
||||
_secs=parseInt(_secs);
|
||||
build_epg_plus(bou, _secs);
|
||||
/*document.getElementById("epg_plus").width = g_width_px;*/
|
||||
}
|
||||
function build_epg_plus_delta(_delta)
|
||||
{
|
||||
if(document.e.epg_time.selectedIndex + _delta < document.e.epg_time.length && document.e.epg_time.selectedIndex + _delta >= 0)
|
||||
document.e.epg_time.selectedIndex += _delta;
|
||||
build_epg_plus_main();
|
||||
}
|
||||
function build_time_list(_delta)
|
||||
{
|
||||
var now = new Date();
|
||||
now.setMinutes(0);
|
||||
now.setSeconds(0);
|
||||
now.setMilliseconds(0);
|
||||
now = new Date(now.getTime()+_delta*60*60*1000);
|
||||
var _secs = now/1000;
|
||||
var _hour = now.getHours();
|
||||
var et = document.getElementById("epg_time");
|
||||
for(i=0;i<24;i++){
|
||||
var _time = (_hour + i) % 24;
|
||||
if(_time < 10)
|
||||
_time = "0"+_time;
|
||||
_time += ":00";
|
||||
var _time_t = _secs + i * 3600;
|
||||
var __item = obj_createAt(et, "option", "ep_bouquet_item");
|
||||
__item.text = _time;
|
||||
__item.value = _time_t;
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=get EPG.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Live_Timer#EPG_Plus=}{=var-set:menu=EPG Plus=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="e">
|
||||
<select size="1" class="y_live_bouquets" name="bouquets" title="select bouquet - channels will be updated">
|
||||
{=func:get_bouquets_as_dropdown {=if-empty:{=bouquets=}~{=func:get_actual_bouquet_number=}~{=bouquets=}=}=}
|
||||
</select>
|
||||
<select id="epg_time" size="1" name="epg_time">
|
||||
</select>
|
||||
<input id="btGet" type="button" value="Update" title="get or refresh EPG" onclick="build_epg_plus_main()">
|
||||
<input id="btPast" type="button" value="-2" title="past hours" onclick="build_epg_plus_delta(-2)">
|
||||
<input id="btNext" type="button" value="+2" title="next hours" onclick="build_epg_plus_delta(2)">
|
||||
</form>
|
||||
|
||||
<div id="epg_plus"> </div>
|
||||
<div id="epg_info">
|
||||
<strong>Details</strong>
|
||||
<input type="button" value="Record" title="set timer for recording" onclick="epg_set_timer()"/>
|
||||
<input type="button" value="Zap" title="switch to channel" onclick="epg_zapto()"/>
|
||||
<div id="d_desc" class="ep_info_desc"> </div>
|
||||
<div id="d_info1" class="ep_info_info1"> </div>
|
||||
<div id="d_info2" class="ep_info_info2"> </div>
|
||||
<div id="d_start" style="display:none"></div>
|
||||
<div id="d_stop" style="display:none"></div>
|
||||
<div id="d_channel_id" style="display:none"><div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
build_time_list(0);
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
72
src/nhttpd/web/Y_Ext_Menue.yhtm
Normal file
72
src/nhttpd/web/Y_Ext_Menue.yhtm
Normal file
@@ -0,0 +1,72 @@
|
||||
{=var-set:extention={=if-file-exists:/var/tuxbox/config/extentions.txt~/var/tuxbox/config/extentions.txt~{=if-file-exists:/var/httpd/extentions.txt~/var/httpd/extentions.txt~/share/tuxbox/neutrino/httpd-y/extentions.txt=}=}=}
|
||||
{=var-set:management={=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip;{=func:get_request_data client_addr=}=}~1~=}{=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip2=}~1~=}=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function y_add_li_to_ul(_ul, _class, _value)
|
||||
{
|
||||
var __li=document.createElement("li");
|
||||
var __class = document.createAttribute("class");
|
||||
__class.nodeValue = _class;
|
||||
_ul.setAttributeNode(__class);
|
||||
_ul.appendChild(__li);
|
||||
__li.innerHTML=_value;
|
||||
return __li;
|
||||
}
|
||||
function build_menu()
|
||||
{
|
||||
var extfile = "{=var-get:extention=}";
|
||||
var extlist = loadSyncURL("/control/exec?Y_Tools&get_extention_list&" + Math.random());
|
||||
var list = extlist.split("\n");
|
||||
for(i=0;i<list.length;i++){
|
||||
var ext_type = list[i].charAt(0);
|
||||
if(ext_type=="n" || ext_type=="m"){
|
||||
var pieces=list[i].split(",");
|
||||
if(ext_type=="n"){
|
||||
var item="<a target=\"work\" title=\""+pieces[2]+"\" href=\""+pieces[3]+"\">"+pieces[1]+"</a>";
|
||||
y_add_li_to_ul(id("ext_normal"),"ext",item);
|
||||
} else {
|
||||
{=if-empty:{=var-get:management=}~
|
||||
var item="<span class=\"disabled\" title=\""+pieces[2]+" (restricted by ManagementIP)\">"+pieces[1]+"</span>";
|
||||
~
|
||||
var item="<a target=\"work\" title=\""+pieces[2]+"\" href=\""+pieces[3]+"\">"+pieces[1]+"</a>";
|
||||
=}
|
||||
y_add_li_to_ul(id("ext_management"),"ext",item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body onload="build_menu()">
|
||||
<div class="y_menu_sec_box">
|
||||
<div class="y_menu_sec_box_head"><h2>Extentions</h2></div>
|
||||
<div class="y_menu_sec_box_body">
|
||||
<div class="y_menu_sec_section">Normal</div>
|
||||
<div class="y_menu_sec">
|
||||
<ul id="ext_normal">
|
||||
<ul>
|
||||
</div>
|
||||
<div class="y_menu_sec_section">Management</div>
|
||||
<div class="y_menu_sec" id="ext_management2">
|
||||
<ul id="ext_management">
|
||||
</ul>
|
||||
</div>
|
||||
<div class="y_menu_sec_section">Admin</div>
|
||||
<div class="y_menu_sec">
|
||||
<ul>
|
||||
{=if-empty:{=var-get:management=}~
|
||||
<li class="disabled" title="Extentions settings. (restricted by ManagementIP)">Settings</li>
|
||||
~
|
||||
<li><a target="work" title="Extentions settings" href="Y_Ext_Settings.yhtm">Settings</a></li>
|
||||
<li><a target="work" title="Extentions updater/installer" href="Y_Ext_Update.yhtm">Updater/Installer</a></li>
|
||||
=}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
37
src/nhttpd/web/Y_Ext_Settings.yhtm
Normal file
37
src/nhttpd/web/Y_Ext_Settings.yhtm
Normal file
@@ -0,0 +1,37 @@
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_submit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.submit();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=Save.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Extentions#Settings=}{=var-set:menu=Extentions Settings=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="f" accept-charset="UTF-8" action="/y/cgi">
|
||||
<table border="0" class="y_form_table" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><textarea name="extentions" id="ext" cols="90" rows="30" title="extention list" style="background : white; font : 'Courier New',medium monospace; color : #436976;">{=if-file-exists:/var/tuxbox/config/extentions.txt~{=include:/var/tuxbox/config/extentions.txt=}~{=if-file-exists:/var/httpd/extentions.txt~{=include:/var/httpd/extentions.txt=}~{=include:/share/tuxbox/neutrino/httpd-y/extentions.txt=}=}=}</textarea></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
<input type="hidden" name="tmpl" value="Y_Ext_Update_refresh.yhtm"/>
|
||||
<input type="hidden" name="execute" value="include-block:Y_Blocks.txt;ext_save_settings;nix"/>
|
||||
<input type="button" value="Save ..." title="submit and save values" onclick="do_submit()"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
||||
|
236
src/nhttpd/web/Y_Ext_Update.yhtm
Normal file
236
src/nhttpd/web/Y_Ext_Update.yhtm
Normal file
@@ -0,0 +1,236 @@
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_submit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.submit();
|
||||
}
|
||||
/*sLog*/
|
||||
var sLog_body;
|
||||
var sLog_line_number;
|
||||
function sLog_init()
|
||||
{
|
||||
sLog_line_number = 0;
|
||||
sLog_body=document.getElementById("slog_list");
|
||||
}
|
||||
function sLog_clear()
|
||||
{
|
||||
while(sLog_body.childNodes.length > 0)
|
||||
{
|
||||
aChild=sLog_body.firstChild;
|
||||
sLog_body.removeChild(aChild);
|
||||
}
|
||||
sLog_line_number = 0;
|
||||
}
|
||||
function sLog_addRow(_body, state, action_text, state_text)
|
||||
{
|
||||
sLog_line_number++;
|
||||
var mycurrent_row = y_add_row_to_table(_body, ((sLog_line_number % 2) ==0)?"a":"b" );
|
||||
var __img ="/images/ok.gif";
|
||||
switch (state)
|
||||
{
|
||||
case "green": __img = "/images/check_green.gif"; break;
|
||||
case "yellow": __img = "/images/excl_yellow.gif"; break;
|
||||
case "ok": __img = "/images/ok.gif"; break;
|
||||
case "red": __img = "/images/x_red.gif"; break;
|
||||
}
|
||||
y_add_html_cell_to_row(mycurrent_row, "icon", "<img src='"+__img+"'>");
|
||||
y_add_html_cell_to_row(mycurrent_row, "action_text", action_text);
|
||||
y_add_text_cell_to_row(mycurrent_row, "state_text", state_text);
|
||||
}
|
||||
/*update_list*/
|
||||
var update_body;
|
||||
var upd_extentions = new Array(); /*<upd_site>,<type=n|m>,<link text>,<link helptext>,<url>,<unique tag>,<version>,<url of installer>*/
|
||||
var installed_extentions = new Array(); /*<type=n|m>,<link text>,<link helptext>,<url>,<unique tag>,<version>*/
|
||||
var update_sites = new Array(); /*<type=u>,<update site name>,<update site helptext>,<url of extention list>*/
|
||||
function update_list_init()
|
||||
{
|
||||
update_body=document.getElementById("update_list");
|
||||
}
|
||||
function update_list_clear()
|
||||
{
|
||||
while(update_body.childNodes.length > 0){
|
||||
aChild=update_body.firstChild;
|
||||
update_body.removeChild(aChild);
|
||||
}
|
||||
}
|
||||
function update_list_addRow(_body, i, site, extention, tag, your_version, update_version)
|
||||
{
|
||||
var mycurrent_row = y_add_row_to_table(_body, ((i % 2) ==0)?"a":"b" );
|
||||
y_add_html_cell_to_row(mycurrent_row, "setupdate", '<input type="checkbox" name="setupdate">');
|
||||
y_add_text_cell_to_row(mycurrent_row, "site", site);
|
||||
y_add_text_cell_to_row(mycurrent_row, "extention", extention);
|
||||
y_add_text_cell_to_row(mycurrent_row, "tag", tag);
|
||||
y_add_text_cell_to_row(mycurrent_row, "your_version", your_version);
|
||||
y_add_html_cell_to_row(mycurrent_row, "update_version", update_version);
|
||||
}
|
||||
function build_list()
|
||||
{
|
||||
show_waitbox(true);
|
||||
window.setTimeout("build_list2()",300);
|
||||
}
|
||||
function build_list2()
|
||||
{
|
||||
sLog_init();
|
||||
update_list_init();
|
||||
update_list_clear();
|
||||
/*get installed ext and update sites*/
|
||||
var extlist = loadSyncURL("/control/exec?Y_Tools&get_extention_list&" + Math.random());
|
||||
var list = extlist.split("\n");
|
||||
installed_extentions = new Array();
|
||||
update_sites = new Array();
|
||||
for(i=0;i<list.length;i++){
|
||||
var ext_type = list[i].charAt(0);
|
||||
if(ext_type=="n" || ext_type=="m"){
|
||||
var pieces=list[i].split(",");
|
||||
installed_extentions.push(pieces);
|
||||
} else if(ext_type == "u"){
|
||||
var pieces=list[i].split(",");
|
||||
update_sites.push(pieces);
|
||||
}
|
||||
}
|
||||
sLog_addRow(sLog_body, "green", "installed Extentions: "+installed_extentions.length, "ok");
|
||||
/* get updatesite ext*/
|
||||
upd_extentions = new Array();
|
||||
for(i=0;i<update_sites.length;i++){
|
||||
var update_file = loadSyncURL("/control/exec?Y_Tools&url_get&"+update_sites[i][3]+"&ext_upt.txt&" + Math.random());
|
||||
//TODO: error checking
|
||||
sLog_addRow(sLog_body, "green", "get list from: "+update_sites[i][3], "ok");
|
||||
var list = update_file.split("\n");
|
||||
for(j=0;j<list.length;j++){
|
||||
var ext_type = list[j].charAt(0);
|
||||
if(ext_type=="n" || ext_type=="m"){
|
||||
var pieces=list[j].split(",");
|
||||
pieces.unshift(update_sites[i][1]);
|
||||
upd_extentions.push(pieces);
|
||||
}
|
||||
}
|
||||
}
|
||||
/*build_list*/
|
||||
for(i=0;i<upd_extentions.length;i++){
|
||||
var your_version="%";
|
||||
for(j=0;j<installed_extentions.length;j++)
|
||||
if(installed_extentions[j][4]==upd_extentions[i][5])
|
||||
your_version = installed_extentions[j][5];
|
||||
update_list_addRow(update_body,i,upd_extentions[i][0],upd_extentions[i][2],upd_extentions[i][5],your_version,upd_extentions[i][6]);
|
||||
}
|
||||
show_waitbox(false);
|
||||
}
|
||||
function do_set_updates()
|
||||
{
|
||||
show_waitbox(true);
|
||||
window.setTimeout("do_set_updates2()",300);
|
||||
}
|
||||
function do_set_updates2()
|
||||
{
|
||||
var _rows = update_body.getElementsByTagName("tr");
|
||||
for(var i=0; i< _rows.length; i++){
|
||||
var rowNode = _rows.item(i);
|
||||
if(rowNode.firstChild.firstChild.checked == true){
|
||||
var res = loadSyncURL("/control/exec?Y_Tools&ext_installer&"+upd_extentions[i][7]);
|
||||
if(res.search(/error/)!=-1){
|
||||
alert(res);
|
||||
sLog_addRow(sLog_body, "red", "update error: "+res, "error");
|
||||
}
|
||||
else{
|
||||
sLog_addRow(sLog_body, "green", "installed/updates: "+upd_extentions[i][2], "ok");
|
||||
add_item_to_ext_list(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
sLog_addRow(sLog_body, "green", "updating local extention list. Starting ...", "ok");
|
||||
var ext=write_extentions();
|
||||
document.f.extentions.value=ext;
|
||||
show_waitbox(false);
|
||||
alert("update fertig. Menue neuladen.")
|
||||
do_submit();
|
||||
}
|
||||
function write_extentions()
|
||||
{
|
||||
var ext="";
|
||||
for(i=0;i<installed_extentions.length;i++)
|
||||
ext += installed_extentions[i]+"\n";
|
||||
for(i=0;i<update_sites.length;i++)
|
||||
ext += update_sites[i]+"\n";
|
||||
return ext;
|
||||
}
|
||||
function add_item_to_ext_list(upd_index)
|
||||
{
|
||||
/*allready installed*/
|
||||
var allready_installed = false;
|
||||
for(i=0;i<installed_extentions.length;i++){
|
||||
if(installed_extentions[i][4]==upd_extentions[upd_index][5]){
|
||||
allready_installed = true;
|
||||
for(j=0;j<=5;j++)
|
||||
installed_extentions[i][j] = upd_extentions[upd_index][j+1];
|
||||
}
|
||||
}
|
||||
if(!allready_installed){
|
||||
upd_extentions[upd_index].shift();//delete site name
|
||||
upd_extentions[upd_index].pop();//delete url
|
||||
var new_ext = upd_extentions[upd_index];
|
||||
installed_extentions.push(new_ext);
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=Values are updated.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Extentions#Update=}{=var-set:menu=Extentions Updater/Installer=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body" width="100%s">
|
||||
<form method="post" name="update" action="">
|
||||
<input type="button" value="build list" title="build list" onclick="build_list()"/>
|
||||
<br/>
|
||||
<b>update Preview List</b>
|
||||
<table class="y_work_table" cellpadding="2">
|
||||
<thead align="left">
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>Site</th><th>Extention</th>
|
||||
<th>Tag</th><th>your Version</th><th>Update Version</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="update_list">
|
||||
<tr><td></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<input type="button" value="update/install" title="" name="set_updates" onclick="do_set_updates()"/>
|
||||
</form>
|
||||
<br/>New extention settings (preview)<br/>
|
||||
<form name="f" accept-charset="UTF-8" action="/y/cgi">
|
||||
<table border="0" class="y_form_table" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td><textarea name="extentions" cols="90" rows="5" title="extention list" style="background : white; font : 'Courier New',medium monospace; color : #436976;"></textarea></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
<input type="hidden" name="tmpl" value="Y_Ext_Update_refresh.yhtm"/>
|
||||
<input type="hidden" name="execute" value="include-block:Y_Blocks.txt;ext_save_settings;nix"/>
|
||||
</form>
|
||||
<br/>
|
||||
<form method="post" name="log" action="">
|
||||
<b>Log</b><br/>
|
||||
<table class="y_work_table" cellpadding="4">
|
||||
<thead align="left">
|
||||
<tr>
|
||||
<th> </th><th>Aktion</th><th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="slog_list">
|
||||
<tr><td></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
||||
|
23
src/nhttpd/web/Y_Ext_Update_refresh.yhtm
Normal file
23
src/nhttpd/web/Y_Ext_Update_refresh.yhtm
Normal file
@@ -0,0 +1,23 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_onload()
|
||||
{
|
||||
parent.sec_menu.location.reload();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body onload="do_onload()">
|
||||
{=var-set:wait_text=Values are updated.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Extentions#Update=}{=var-set:menu=Extentions Settings saved=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body" width="100%s">
|
||||
Settings stored. Menu is updated.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
18
src/nhttpd/web/Y_Info_Help.yhtm
Normal file
18
src/nhttpd/web/Y_Info_Help.yhtm
Normal file
@@ -0,0 +1,18 @@
|
||||
{=var-set:cancache=yPyes=}
|
||||
{=include-block:Y_Blocks.txt;headCache=}
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Info#Hilfe=}{=var-set:menu=Help=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<ul>
|
||||
<li><a href="http://wiki.godofgta.de/Neutrino:yWeb" title="yWeb Help from Tuxbox Wiki" target="_blank">Tuxbox-Wiki Help</a></li>
|
||||
<li><a href="http://www.yjogol.de/yFAQ.htm" title="FAQ at yjogol.de" target="_blank">FAQ zu yWeb</a></li>
|
||||
<li><a href="http://forum.tuxbox.org" title="Tuxbox Dicussion Forum" target="_blank">Tuxbox Forum</a></li>
|
||||
<li><a href="http://www.yjogol.de" title="Homepage of yWeb" target="_blank">Homepage yWeb</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
25
src/nhttpd/web/Y_Info_Menue.yhtm
Normal file
25
src/nhttpd/web/Y_Info_Menue.yhtm
Normal file
@@ -0,0 +1,25 @@
|
||||
{=var-set:cancache=yPConf=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
</head>
|
||||
{=var-set:management={=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip;{=func:get_request_data client_addr=}=}~1~=}{=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip2=}~1~=}=}
|
||||
<body>
|
||||
<div class="y_menu_sec_box">
|
||||
<div class="y_menu_sec_box_head"><h2>Info</h2></div>
|
||||
<div class="y_menu_sec_box_body">
|
||||
<div class="y_menu_sec">
|
||||
<ul id="menu_sec">
|
||||
<li><a target="work" title="About yWeb" href="Y_About.yhtm">About</a></li>
|
||||
<li><a target="work" title="Getting Help" href="Y_Info_Help.yhtm">Help</a></li>
|
||||
{=if-empty:{=var-get:management=}~
|
||||
<li class="disabled" title="Check for Update of yWeb (restricted by ManagementIP)">Auf Updates prüfen</li>
|
||||
~
|
||||
<!--dbox2 only <li><a target="work" title="Check for Updates of yWeb" href="Y_Info_Updates.yhtm">Auf Updates prüfen</a></li> dbox2 only-->
|
||||
=}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
47
src/nhttpd/web/Y_Info_Updates.yhtm
Normal file
47
src/nhttpd/web/Y_Info_Updates.yhtm
Normal file
@@ -0,0 +1,47 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function check_updates()
|
||||
{
|
||||
loadSyncURL("/control/exec?Y_Tools&get_update_version");
|
||||
location.reload();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Info#Auf_Updates_pr.C3.BCfen=}{=var-set:menu=Auf Updates prüfen=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<table border="0" cellpadding="2" cellspacing="4">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<b>Deine Version</b>
|
||||
<p>
|
||||
{=ini-get:Y_Version.txt;version=}<br/>
|
||||
{=ini-get:Y_Version.txt;date=}<br/>
|
||||
{=ini-get:Y_Version.txt;type=}<br/><br/>
|
||||
{=ini-get:Y_Version.txt;info=}<br/>
|
||||
</p>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<b>Neue Version</b>
|
||||
<p>
|
||||
{=ini-get:/tmp/version.txt;version=}<br/>
|
||||
{=ini-get:/tmp/version.txt;date=}<br/>
|
||||
{=ini-get:/tmp/version.txt;type=}<br/><br/>
|
||||
{=ini-get:/tmp/version.txt;info=}<br/>
|
||||
{=if-empty:{=ini-get:/tmp/version.txt;url=}~~
|
||||
<a href="{=ini-get:/tmp/version.txt;url=}" target="_blank">Download</a><br/>
|
||||
=}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td><input type="button" onclick="check_updates()" value="check"/></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
471
src/nhttpd/web/Y_Live.yhtm
Normal file
471
src/nhttpd/web/Y_Live.yhtm
Normal file
@@ -0,0 +1,471 @@
|
||||
{=var-set:must_management={=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip=}~1~=}{=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip2=}~1~=}=}
|
||||
{=include-block:Y_Blocks.txt;head_no_charset=}
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript" src="/Y_VLC.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
|
||||
/*globals*/
|
||||
{=var-set:udp={=if-file-exists:/sbin/udpstreamts~true~{=if-file-exists:/var/bin/udpstreamts~true~false=}=}=}
|
||||
var V2 = null;
|
||||
var IsUDP = false;
|
||||
var IsTimeshift = true; //TEST
|
||||
var IsLocked = false;
|
||||
var IsMute = false;
|
||||
var vlc_width = 384;
|
||||
var vlc_height = 288;
|
||||
var Window_delta_w = 0;
|
||||
var Window_delta_h = 0;
|
||||
var Mode = "tv";
|
||||
var AudioChannel = 0;
|
||||
|
||||
/*resize,init*/
|
||||
function do_onresize()
|
||||
{
|
||||
if((vlc_width+Window_delta_w != window.innerWidth) || (vlc_height+Window_delta_h != window.innerHeight)){
|
||||
window.onresize=null;
|
||||
do_resize_vlc(yClientWidth()-Window_delta_w,yClientHeight()-Window_delta_h);
|
||||
window.onresize=do_onresize;
|
||||
}
|
||||
}
|
||||
function do_resize_vlc(width, height)
|
||||
{
|
||||
vlc_width = width;
|
||||
vlc_height = height;
|
||||
V2.set_resolution(width, height);
|
||||
}
|
||||
function do_resize()
|
||||
{
|
||||
var dd = id('resolution');
|
||||
var sel = dd.selectedIndex;
|
||||
var w = -1;
|
||||
var h = -1;
|
||||
if(sel != -1){
|
||||
switch(sel.toString()) {
|
||||
case "0": w=384; h=288; break;
|
||||
case "1": w=768; h=576; break;
|
||||
case "2": w=960; h=720; break;
|
||||
case "3": w=1152; h=864; break;
|
||||
}
|
||||
}
|
||||
if(w != -1)
|
||||
window.resizeTo(w+Window_delta_w, h+Window_delta_h);
|
||||
}
|
||||
function do_init()
|
||||
{
|
||||
live_switchto(Mode);
|
||||
vlc_width = 384;
|
||||
vlc_height = 288;
|
||||
Window_delta_w = yClientWidth() - vlc_width;
|
||||
Window_delta_h = yClientHeight() - vlc_height;
|
||||
|
||||
if(Mode == "tv")
|
||||
window.onresize=do_onresize;
|
||||
insert_vlc_control();
|
||||
build_bouquet_list(-1);
|
||||
set_controls("play");
|
||||
do_play();
|
||||
}
|
||||
function always_on_top() {
|
||||
window.focus();
|
||||
window.setTimeout("always_on_top()",100);
|
||||
}
|
||||
function do_onload()
|
||||
{
|
||||
Mode = "{=mode=}";
|
||||
if(Mode != "tv" && Mode != "radio")
|
||||
Mode = "tv";
|
||||
set_controls("disable");
|
||||
if("{=ini-get:/var/tuxbox/config/Y-Web.conf;udp;false=}" == "true" && Mode == "tv")
|
||||
id('udp').checked = true;
|
||||
else if(Mode == "tv")
|
||||
id('udp').checked = false;
|
||||
/*TODO
|
||||
{=if-equal:{=typ=}~popup~
|
||||
if(is_ie)
|
||||
window.onblur = self.focus();
|
||||
else
|
||||
always_on_top();
|
||||
=}
|
||||
*/
|
||||
window.setTimeout("do_init()",300);
|
||||
}
|
||||
/*controls*/
|
||||
function set_controls(state)
|
||||
{
|
||||
var go=false;
|
||||
var play=false;
|
||||
var opt=false;
|
||||
if(V2 && V2.have_options())
|
||||
opt=true;
|
||||
var plugin="";
|
||||
if(V2) plugin=V2.plugin;
|
||||
|
||||
switch(state){
|
||||
case "disable":
|
||||
go=false;
|
||||
play=false;
|
||||
break;
|
||||
case "play":
|
||||
go=true;
|
||||
play=true;
|
||||
break;
|
||||
case "stop":
|
||||
go=true;
|
||||
play=false;
|
||||
break;
|
||||
}
|
||||
obj_enable('go', go);
|
||||
obj_enable('epg', go);
|
||||
obj_enable('PlayOrPause', go);
|
||||
obj_enable('stop', go);
|
||||
obj_enable('mute', play);
|
||||
obj_enable('volumeup', play);
|
||||
obj_enable('volumedown', play);
|
||||
obj_enable('livelock', go);
|
||||
{=if-equal:{=typ=}~popup~~
|
||||
show_obj('rec',opt);
|
||||
obj_enable('rec', play && opt);
|
||||
show_obj('transcode',opt);
|
||||
obj_enable('transcode', play && opt);
|
||||
=}
|
||||
if(Mode == "tv"){
|
||||
show_obj('have_udp',{=var-get:udp=});
|
||||
obj_enable('udp', go);
|
||||
obj_enable('fullscreen', play);
|
||||
show_obj('snapshot',(plugin != "moz3"));
|
||||
obj_enable('snapshot', play && (plugin != "moz3"));
|
||||
}
|
||||
|
||||
}
|
||||
function insert_vlc_control()
|
||||
{
|
||||
if(Mode == "radio") {
|
||||
var radio_html="<div style=\"width:"+vlc_width+"px;height:"+vlc_height+"px;text-align:center;\">"
|
||||
+"<br/><br/><br/><br/><br/><br/><div id=\"vlc_radio\"></div><br/><h1>Radio</h1></div>";
|
||||
obj_update('vlc_view',radio_html);
|
||||
V2 = new CyVLC('vlc', 'vlc_radio', 1, 1);
|
||||
} else
|
||||
V2 = new CyVLC('vlc', 'vlc_view', vlc_width, vlc_height);
|
||||
}
|
||||
function insert_message_control(msg)
|
||||
{
|
||||
var wait_html="<div style=\"width:"+vlc_width+"px;height:"+vlc_height+"px;text-align:center;\">"
|
||||
+"<br/><br/><br/><br/><br/><br/><img src=\"/images/wait.gif\"><br/>"+msg+"</div>";
|
||||
obj_update('vlc_view',wait_html);
|
||||
}
|
||||
function change_button_img(id,img)
|
||||
{
|
||||
var imgstr = "<img src=\"/images/"+img+".png\" width=\"16\" height=\"16\">";
|
||||
obj_update(id, imgstr);
|
||||
}
|
||||
/*vlc control*/
|
||||
function do_stop()
|
||||
{
|
||||
V2.stop();
|
||||
while(V2.is_playing())
|
||||
;
|
||||
change_button_img('PlayOrPause',"play");
|
||||
set_controls("stop");
|
||||
}
|
||||
function dummy()
|
||||
{
|
||||
}
|
||||
function start_udp_server()
|
||||
{
|
||||
var pids = loadSyncURL("/control/yweb?video_stream_pids=0&no_commas=true");
|
||||
var args = "{=func:get_request_data clientaddr=} 31330 0 "+pids;
|
||||
var _cmd = "udp_stream start "+args;
|
||||
var __cmd = _cmd.replace(/ /g, "&");
|
||||
loadXMLDoc("/control/exec?Y_Live&"+__cmd, dummy);
|
||||
}
|
||||
function do_play_state(_state, _options)
|
||||
{
|
||||
change_button_img('PlayOrPause',"pause");
|
||||
_options.push(":input-repeat=1");
|
||||
V2.options = _options;
|
||||
var mrl = "";
|
||||
if(Mode == "tv" && id('udp').checked)
|
||||
mrl = "udp://@:31330";
|
||||
else
|
||||
mrl = loadSyncURL("/control/build_live_url");
|
||||
V2.set_actual_mrl(mrl);
|
||||
V2.play();
|
||||
V2.next();
|
||||
set_controls("play");
|
||||
if(id('udp').checked && Mode == "tv")
|
||||
window.setTimeout("start_udp_server()",1000);
|
||||
}
|
||||
function do_play()
|
||||
{
|
||||
var options = new Array();
|
||||
if(Mode == "tv"){
|
||||
{=if-equal:{=ini-get:/var/tuxbox/config/Y-Web.conf;deinterlace;true=}~true~
|
||||
options.push(":vout-filter=deinterlace");
|
||||
options.push(":deinterlace-mode=bob");
|
||||
=}
|
||||
if(id('udp').checked && Mode == "tv"){
|
||||
options.push(":access-filter=timeshift");
|
||||
}
|
||||
else{
|
||||
var cachetime = {=ini-get:/var/tuxbox/config/Y-Web.conf;http_caching;0=};
|
||||
if(cachetime > 0)
|
||||
options.push(":http-caching="+cachetime);
|
||||
}
|
||||
if(AudioChannel != 0)
|
||||
options.push(":audio-track="+AudioChannel);
|
||||
}
|
||||
do_play_state(0, options);
|
||||
}
|
||||
function do_play_or_pause()
|
||||
{
|
||||
if(V2.is_playing()) {
|
||||
change_button_img('PlayOrPause',"play");
|
||||
V2.pause()
|
||||
set_controls("stop");
|
||||
} else {
|
||||
change_button_img('PlayOrPause',"pause");
|
||||
V2.play();
|
||||
set_controls("play");
|
||||
if(id('udp').checked)
|
||||
window.setTimeout("start_udp_server()",1000);
|
||||
}
|
||||
}
|
||||
/* bouquet & channel panel */
|
||||
function build_channel_list(bouquet, channel)
|
||||
{
|
||||
set_controls("disable");
|
||||
var used_channel = channel;
|
||||
if(used_channel == -1)
|
||||
used_channel = loadSyncURL("/y/cgi?execute=func:get_actual_channel_id");
|
||||
var channel_dropdown_url = "/y/cgi?execute=func:get_channels_as_dropdown%20" + bouquet;
|
||||
channel_dropdown_url += "%20" + used_channel;
|
||||
var channel_dropdown = "<select size=\"1\" class=\"y_live_channels\" id=\"channels\" title=\"select channel - use go to zap\">";
|
||||
channel_dropdown += loadSyncURL(channel_dropdown_url);
|
||||
channel_dropdown += "</select>";
|
||||
obj_update('channels_div', channel_dropdown);
|
||||
set_controls("play");
|
||||
}
|
||||
function build_bouquet_list(bouquet)
|
||||
{
|
||||
var used_bouquet = bouquet;
|
||||
if(used_bouquet == -1)
|
||||
used_bouquet = loadSyncURL("/y/cgi?execute=func:get_actual_bouquet_number");
|
||||
var bouquet_dropdown_url = "/y/cgi?execute=func:get_bouquets_as_dropdown%20" + used_bouquet + "{=if-empty:{=var-get:must_management=}~~%20true=}";
|
||||
var bouquet_dropdown = "<select size=\"1\" class=\"y_live_bouquets\" id=\"bouquets\" onchange=\"change_bouquet()\" title=\"select bouquet - channels will be updated\">";
|
||||
bouquet_dropdown += loadSyncURL(bouquet_dropdown_url);
|
||||
bouquet_dropdown += "</select>";
|
||||
obj_update('bouquets_div', bouquet_dropdown);
|
||||
build_channel_list(used_bouquet, -1);
|
||||
}
|
||||
function change_bouquet()
|
||||
{
|
||||
var dd = id('bouquets');
|
||||
var bouquet = -1;
|
||||
var channel = -1;
|
||||
var sel = dd.selectedIndex;
|
||||
if(sel != -1){
|
||||
bouquet = dd[sel].value;
|
||||
channel = 0;
|
||||
}
|
||||
build_channel_list(bouquet, channel);
|
||||
}
|
||||
function change_channel()
|
||||
{
|
||||
var dd = id('channels');
|
||||
var channel = -1;
|
||||
var sel = dd.selectedIndex;
|
||||
if(sel != -1)
|
||||
channel = dd[sel].value;
|
||||
do_stop();
|
||||
AudioChannel = 0;
|
||||
window.setTimeout("change_channel_zapto(\""+channel+"\")",500);
|
||||
}
|
||||
function change_channel_zapto(channel)
|
||||
{
|
||||
dbox_zapto(channel);
|
||||
window.setTimeout("change_channel_play()",500);
|
||||
}
|
||||
function change_channel_play()
|
||||
{
|
||||
do_play();
|
||||
if(V2.have_options() && Mode == "tv")
|
||||
build_audio_pid_list();
|
||||
}
|
||||
/*other buttons*/
|
||||
function do_show_version()
|
||||
{
|
||||
alert("Version:"+V2.version_string+" Generation:"+V2.plugin+"\nlevel1:"+V2.version_level1+" 2:"+V2.version_level2
|
||||
+" 3:"+V2.version_level3+" 4:"+V2.version_level4);
|
||||
}
|
||||
function do_lock_toggle()
|
||||
{
|
||||
if( !IsLocked ) {
|
||||
change_button_img('livelock',"liveunlock");
|
||||
IsLocked = true;
|
||||
live_lock();
|
||||
} else {
|
||||
change_button_img('livelock',"livelock");
|
||||
IsLocked = false;
|
||||
live_unlock();
|
||||
}
|
||||
}
|
||||
function do_mute_toggle()
|
||||
{
|
||||
change_button_img('mute', (IsMute)?"volumemute":"volumeunmute");
|
||||
IsMute = !IsMute;
|
||||
V2.toggle_mute();
|
||||
}
|
||||
function view_streaminfo()
|
||||
{
|
||||
window.open("/fb/info.dbox2","streaminfo","width=400,height=400");
|
||||
}
|
||||
function doChangeAudioPid()
|
||||
{
|
||||
var dd = id('audiopid');
|
||||
AudioChannel = dd.selectedIndex;
|
||||
do_stop();
|
||||
// insert_message_control("... zapping ...");
|
||||
window.setTimeout("change_channel_play()",1000);
|
||||
}
|
||||
function build_audio_pid_list()
|
||||
{
|
||||
var audio_pids_url = "/y/cgi?execute=func:get_audio_pids_as_dropdown";
|
||||
var audio_pid_list = loadSyncURL(audio_pids_url);
|
||||
audio_pid_list = "<select size=\"1\" class=\"y_live_audio_pids\" id=\"audiopid\" onChange=\"doChangeAudioPid()\">"
|
||||
+ audio_pid_list
|
||||
+ "</select>";
|
||||
obj_update('audio_pid_list', audio_pid_list);
|
||||
}
|
||||
function view_epg()
|
||||
{
|
||||
var sel=document.x.channels.selectedIndex;
|
||||
if(sel != -1){
|
||||
channel = document.x.channels[sel].value;
|
||||
{=if-equal:{=typ=}~live~
|
||||
var f = parent.col2;
|
||||
f.location.href = "Y_Dyn_Pages.yhtm?page=frame_live_epg&channel="+channel;
|
||||
~
|
||||
window.open("Y_Dyn_Pages.yhtm?page=frame_live_epg&channel="+channel, "epg");
|
||||
=}
|
||||
}
|
||||
}
|
||||
function view_expert_mode()
|
||||
{
|
||||
parent.col2.location.href = "/Y_Live_Expert.yhtm?browser={=browser=}&mode={=mode=}&typ={=typ=}";
|
||||
}
|
||||
function view_record_mode()
|
||||
{
|
||||
parent.col2.location.href = "/Y_Live_Record.yhtm?browser={=browser=}&mode={=mode=}&typ={=typ=}";
|
||||
}
|
||||
function view_settings_mode()
|
||||
{
|
||||
parent.col2.location.href = "/Y_Settings_Live.yhtm?browser={=browser=}&mode={=mode=}&typ={=typ=}";
|
||||
}
|
||||
function view_transcode_mode()
|
||||
{
|
||||
parent.col2.location.href = "/Y_Live_Transcode.yhtm?browser={=browser=}&mode={=mode=}&typ=transcode";
|
||||
}
|
||||
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body onload="do_onload()">
|
||||
{=var-set:wait_text=Streaming-Informationen<br/>werden ermittelt.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div id="live_panel">
|
||||
<form name="x" action="" method="get">
|
||||
<table class="y_live_table" cellspacing="0" cellpadding="0" style="margin:0">
|
||||
<tr><td>
|
||||
<div id="bouquets_div"><div class="y_live_channels" style="border:1px solid #555555;">
|
||||
<img src="/images/smallwait.gif"> getting bouquets ...</div>
|
||||
</div>
|
||||
</td><td>
|
||||
{=if-equal:{=typ=}~popup~
|
||||
{=if-equal:{=mode=}~tv~
|
||||
<select id="resolution" onchange="do_resize()" title="select resolution">
|
||||
<option value="1">384x288</option>
|
||||
<option value="2">768x576</option>
|
||||
<option value="2">960x720</option>
|
||||
<option value="4">1152x864</option>
|
||||
</select>
|
||||
~ =}=}
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<div id="channels_div"><div class="y_live_bouquets" style="border:1px solid #555555;">
|
||||
<img src="/images/smallwait.gif"> getting channels ...</div>
|
||||
</div>
|
||||
</td><td>
|
||||
<button id="go" class="y_live_button" type="button" title="change channel" onclick="change_channel()" disabled="disabled">
|
||||
<img src="/images/play.png"></button>
|
||||
<button id="epg" class="y_live_button" type="button" title="view epg for selected channel" onclick="view_epg()" disabled="disabled">
|
||||
<img src="/images/epg.png"></button>
|
||||
</td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="vlc_view">
|
||||
</div>
|
||||
<div id="live_controls">
|
||||
<form name="v" action="" method="get">
|
||||
<button id="PlayOrPause" class="y_live_button" type="button" title="play or pause streaming"
|
||||
onclick="do_play_or_pause()"><img src="/images/pause.png"></button>
|
||||
<button id="stop" type="button" title="stop streaming" onclick="do_stop()" class="y_live_button">
|
||||
<img src="/images/stop.png"></button>
|
||||
<button id="mute" class="y_live_button" type="button" value="Mute" title="mute / unmute volume" onclick="do_mute_toggle()">
|
||||
<img src="/images/volumemute.png"></button>
|
||||
<button id="volumedown" class="y_live_button" type="button" value="-" title="lower volume" onclick="V2.set_volume_delta(-10);">
|
||||
<img src="/images/volumedown.png"></button>
|
||||
<button id="volumeup" class="y_live_button" type="button" value="+" title="higher volume" onclick="V2.set_volume_delta(+10);">
|
||||
<img src="/images/volumeup.png"></button>
|
||||
{=if-equal:{=mode=}~tv~
|
||||
<button id="fullscreen" class="y_live_button" type="button" value="F"
|
||||
title="switch to fullscreen-mode - or use double-click" onclick="V2.toggle_fullscreen()">
|
||||
<img src="/images/fullscreen.png"></button>
|
||||
=}
|
||||
<button id="livelock" class="y_live_button" type="button" value="Lock" title="lock / unlock TV (record mode, rc, lcd)" name="lock" onclick="do_lock_toggle()">
|
||||
<img src="/images/livelock.png"></button>
|
||||
<!-- </form>
|
||||
</div>
|
||||
<div id="live_extended_controls">
|
||||
<form name="le" action="" method="get">-->
|
||||
{=if-equal:{=mode=}~tv~
|
||||
<span id="have_udp" style="visibility:hidden"><input type="checkbox" id="udp" title="UDP Streaming"/>UDP</span>
|
||||
<button class="y_live_button" type="button" value="set" title="LiveView settings" id="settings" onclick="view_settings_mode()">
|
||||
<img src="/images/properties.gif"></button>
|
||||
<button class="y_live_button" type="button" value="S" title="create snapshot picture" id="snapshot" onclick="V2.snapshot()" style="visibility:hidden">
|
||||
<img src="/images/snapshot.png"></button>
|
||||
=}
|
||||
{=if-equal:{=typ=}~popup~~
|
||||
{=if-equal:{=typ=}~transcode~~
|
||||
<button id="rec" class="y_live_button" type="button" value="Rec" title="record mode" name="record_mode" onclick="view_record_mode()" style="visibility:hidden">
|
||||
<img src="/images/record.gif"></button>
|
||||
=}
|
||||
<button id="transcode" class="y_live_button" type="button" value="Transcode" title="transcode mode" onclick="view_transcode_mode()" style="visibility:hidden">
|
||||
<img src="/images/transcode.png"></button>
|
||||
=}
|
||||
<span id="audio_pid_list"></span>
|
||||
<!---
|
||||
test:
|
||||
<input class="y_live_button" type="button" value="Ver" title="record mode" name="record_mode" onclick="do_show_version()"/>
|
||||
<button class="y_live_button" type="button" value="test" title=""
|
||||
name="test" onclick="do_test()"/>test</button>
|
||||
<input class="y_live_button" type="button" value="udp" title="test" name="snapshot" onclick="doUDP()"/>
|
||||
-->
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
insert_message_control("... build vlc control ...");
|
||||
/* {=if-equal:{=typ=}~popup~
|
||||
always_on_top();
|
||||
=}
|
||||
window.setTimeout("do_init()",300);
|
||||
*/
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
45
src/nhttpd/web/Y_LiveViewFull.yhtm
Normal file
45
src/nhttpd/web/Y_LiveViewFull.yhtm
Normal file
@@ -0,0 +1,45 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function init()
|
||||
{
|
||||
{=if-equal:{=typ=}~transcode~
|
||||
window.setTimeout("setTranscode()",500);
|
||||
=}
|
||||
}
|
||||
function setTranscode()
|
||||
{
|
||||
window.col2.location.href = "/Y_Live_Transcode.yhtm";
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Live_Timer#LiveView=}{=var-set:menu={=typ=}=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr><td valign="top">
|
||||
<iframe name="live" src="Y_Live.yhtm?mode={=mode=}&typ={=typ=}" height="400" width="390" scrolling="no" align="left" marginheight="0" marginwidth="0" frameborder="0">
|
||||
Ihr Browser unterstützt Inlineframes nicht oder zeigt sie in der derzeitigen Konfiguration nicht an.
|
||||
</iframe>
|
||||
</td>
|
||||
<td>
|
||||
<iframe name="col2" src="Y_blank.htm" height="400" width="350" scrolling="auto" marginheight="0" marginwidth="0" frameborder="0">
|
||||
Ihr Browser unterstützt Inlineframes nicht oder zeigt sie in der derzeitigen Konfiguration nicht an.
|
||||
</iframe>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
init();
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
19
src/nhttpd/web/Y_Live_DoubleView.yhtm
Normal file
19
src/nhttpd/web/Y_Live_DoubleView.yhtm
Normal file
@@ -0,0 +1,19 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Live_Timer#Double_View=}{=var-set:menu=Live - DoubleView=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<iframe name="I1" src="Y_Live_View.yhtm" target="Hauptframe" width="400" height="360" scrolling="no">
|
||||
Your Browser does not support Inlineframes or is not configured correctely.
|
||||
</iframe>
|
||||
{=if-empty:{=ini-get:/var/tuxbox/config/Y-Web.conf;slavebox=}~<div><font color="Red">No IP for the Slave Box supplied!<br>Einstellen unter Settings->yWeb.</font></div>~
|
||||
<iframe name="I2" src="http://{=ini-get:/var/tuxbox/config/Y-Web.conf;slavebox=}/Y_Live_View.yhtm" width="400" height="360" scrolling="no">
|
||||
Your Browser does not support Inlineframes or is not configured correctely.
|
||||
</iframe>
|
||||
=}
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
122
src/nhttpd/web/Y_Live_EPG.yhtm
Normal file
122
src/nhttpd/web/Y_Live_EPG.yhtm
Normal file
@@ -0,0 +1,122 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
/*sLog*/
|
||||
var sLog_body;
|
||||
var sLog_line_number;
|
||||
var epg_data;
|
||||
var epg_data_index=0;
|
||||
function sLog_init()
|
||||
{
|
||||
sLog_line_number = 0;
|
||||
sLog_body=document.getElementById("slog_list");
|
||||
}
|
||||
function sLog_clear()
|
||||
{
|
||||
while(sLog_body.childNodes.length > 0){
|
||||
aChild=sLog_body.firstChild;
|
||||
sLog_body.removeChild(aChild);
|
||||
}
|
||||
sLog_line_number = 0;
|
||||
}
|
||||
function sLog_addRow(_body, _rec, _zapit, _start, _end, _title)
|
||||
{
|
||||
sLog_line_number++;
|
||||
var mycurrent_row = y_add_row_to_table(_body, ((sLog_line_number % 2) ==0)?"a":"b" );
|
||||
|
||||
y_add_html_cell_to_row(mycurrent_row, "rec", _rec);
|
||||
y_add_html_cell_to_row(mycurrent_row, "zap", _zapit);
|
||||
y_add_html_cell_to_row(mycurrent_row, "starttime", _start);
|
||||
y_add_html_cell_to_row(mycurrent_row, "endtime", _end);
|
||||
y_add_html_cell_to_row(mycurrent_row, "epgtitle", _title);
|
||||
}
|
||||
function set_timer(_channel_id, _start, _stop)
|
||||
{
|
||||
var rec = "/control/timer?action=new&type=5&alarm="+_start+"&stop="+_stop+"&announce="+_start+"&channel_id="+_channel_id+"&rs=1";
|
||||
var res = loadSyncURL(rec);
|
||||
alert("Record gesetzt");
|
||||
}
|
||||
function set_zapit(_channel_id, _start)
|
||||
{
|
||||
var rec = "/control/timer?action=new&type=3&alarm="+_start+"&channel_id="+_channel_id;
|
||||
var res = loadSyncURL(rec);
|
||||
alert("Zapping gesetzt");
|
||||
}
|
||||
function show_info(_index)
|
||||
{
|
||||
parent.epg_info.show_info(epg_data[_index][0], epg_data[_index][1], epg_data[_index][2]);
|
||||
}
|
||||
function check_logo()
|
||||
{
|
||||
{=if-equal:{=ini-get:/var/tuxbox/config/nhttpd.conf;ExtrasDocRoot=}~web~~
|
||||
var test = loadSyncURL("{=ini-get:/var/tuxbox/config/nhttpd.conf;ExtrasDocURL=}/logos/{=channel=}.gif");
|
||||
if(test != "")
|
||||
=}
|
||||
show_obj("logo",true);
|
||||
}
|
||||
function show_epg()
|
||||
{
|
||||
check_logo();
|
||||
sLog_init();
|
||||
sLog_clear();
|
||||
|
||||
epg_data = new Array();
|
||||
epg_data_index=0;
|
||||
|
||||
var now = new Date();
|
||||
var _starttime = Math.round(now/1000);
|
||||
var epg_xml = loadSyncURLxml("/control/epg?xml=true&channelid={=channel=}&details=true");
|
||||
if(epg_xml){
|
||||
var prog_list = epg_xml.getElementsByTagName('prog');
|
||||
for(i=0;i<prog_list.length;i++){
|
||||
var prog = prog_list[i];
|
||||
|
||||
var _stop = getXMLNodeItemValue(prog, "stop_sec");
|
||||
if(_stop > _starttime){
|
||||
var _start_t = getXMLNodeItemValue(prog, "start_t");
|
||||
var _start = getXMLNodeItemValue(prog, "start_sec");
|
||||
var _stop_t = getXMLNodeItemValue(prog, "stop_t");
|
||||
var _desc = epg_de_qout(getXMLNodeItemValue(prog, "description"));
|
||||
var _info1 = epg_de_qout(getXMLNodeItemValue(prog, "info1"));
|
||||
var _info2 = epg_de_qout(getXMLNodeItemValue(prog, "info2"));
|
||||
|
||||
var epg_obj= new Array(_desc, _info1, _info2, _start, _start_t, _stop.toString(), "{=channel=}");
|
||||
epg_data.push(epg_obj);
|
||||
|
||||
var _rec = "<a title=\"record\" href=\"javascript:set_timer('{=channel=}',"+_start+","+_stop+");\">Rec</a>";
|
||||
var _zapit = "<a title=\"zapping\" href=\"javascript:set_zapit('{=channel=}',"+_start+");\">Zap</a>";
|
||||
var _tit = "<span onmouseover=\"show_info('"+epg_data_index+"')\">"+_desc+"</span>";
|
||||
sLog_addRow(sLog_body, _rec, _zapit, _start_t, _stop_t, _tit);
|
||||
epg_data_index++;
|
||||
}
|
||||
}
|
||||
}
|
||||
show_waitbox(false);
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
{=var-set:wait_text=EPG is loaded.=}{=include-block:Y_Blocks.txt;snip_show_wait=}
|
||||
<body onload="show_epg()">
|
||||
<table class="y_invisible_table" cellpadding="4" width="100%">
|
||||
<thead align="left">
|
||||
<tr>
|
||||
<th colspan="2"><img id="logo" src="{=ini-get:/var/tuxbox/config/nhttpd.conf;ExtrasDocURL=}/logos/{=channel=}.gif" style="visibility:hidden"> </th>
|
||||
<th>From</th><th>to</th><th>Broadcasting</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="slog_list">
|
||||
<tr><td></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br />
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
// show_waitbox(true);
|
||||
// window.setTimeout("show_epg()",500);
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
22
src/nhttpd/web/Y_Live_EPG_Info.yhtm
Normal file
22
src/nhttpd/web/Y_Live_EPG_Info.yhtm
Normal file
@@ -0,0 +1,22 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function show_info(_desc, _info1, _info2)
|
||||
{
|
||||
document.getElementById("description").innerHTML = _desc;
|
||||
document.getElementById("info1").innerHTML = _info1;
|
||||
document.getElementById("info2").innerHTML = _info2;
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<a href="javascript:window.history.back()"><u>Back</u></a>
|
||||
<body>
|
||||
<div class="y_epg_info">
|
||||
<div id="description"> </div>
|
||||
<div id="info1"> </div>
|
||||
<div id="info2">For details: move the mouse on the corresponding program.</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
85
src/nhttpd/web/Y_Live_Menue.yhtm
Normal file
85
src/nhttpd/web/Y_Live_Menue.yhtm
Normal file
@@ -0,0 +1,85 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var live_window;
|
||||
function go_live()
|
||||
{
|
||||
/* try{
|
||||
live_window.close();
|
||||
}catch(e){}*/
|
||||
var _url = (is_ie) ? "Y_Tools_NetStream.yhtm?browser=ie" : "Y_Tools_NetStream.yhtm?browser=moz";
|
||||
parent.frames[1].location.href = _url;
|
||||
}
|
||||
function go_live_popup(_url)
|
||||
{
|
||||
res_w=384;
|
||||
res_h=288+90;
|
||||
var par = "width="+res_w+",height="+res_h+",resizable=yes";
|
||||
tv = window.open(_url,'tv',par);
|
||||
parent.frames[1].location.href = "Y_Live_Msg.yhtm";
|
||||
}
|
||||
function go_live_popup_tv()
|
||||
{
|
||||
live_window = go_live_popup("/Y_Live.yhtm?typ=popup&mode=tv");
|
||||
}
|
||||
function go_live_popup_radio()
|
||||
{
|
||||
live_window = go_live_popup("/Y_Live.yhtm?typ=popup&mode=radio");
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
{=var-set:management={=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip;{=func:get_request_data client_addr=}=}~1~=}{=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip2=}~1~=}=}
|
||||
<body>
|
||||
<div class="y_menu_sec_box">
|
||||
<div class="y_menu_sec_box_head"><h2>Live/Timer</h2></div>
|
||||
<div class="y_menu_sec_box_body">
|
||||
<div class="y_menu_sec_section">Live</div>
|
||||
<div class="y_menu_sec">
|
||||
<ul>
|
||||
<li>
|
||||
<table class="y_invisible_table" cellspacing="0" cellpadding="0" style="width:100%; padding-right:15px;margin:0"><tr>
|
||||
<td><a target="work" title="LiveTV" href="Y_LiveViewFull.yhtm?mode=tv&typ=live">TV</a></td>
|
||||
<td align="right"><a title="LiveTV (popup)" href="javascript:go_live_popup_tv()">Popup</a></td>
|
||||
</tr></table>
|
||||
</li>
|
||||
<li>
|
||||
<table class="y_invisible_table" cellspacing="0" cellpadding="0" style="width:100%; padding-right:15px;margin:0"><tr>
|
||||
<td><a target="work" title="LiveRadio" href="Y_LiveViewFull.yhtm?mode=radio&typ=live">Radio</a></td>
|
||||
<td align="right"><a title="LiveRadio (popup)" href="javascript:go_live_popup_radio()">Popup</a></td>
|
||||
</tr></table>
|
||||
</li>
|
||||
<li><a title="LiveView" href="Y_Live.yhtm?browser=ie&type=live&mode=tv" target="work">LiveView</a></li>
|
||||
<li id="transcode" style="display:none">
|
||||
<a target="work" title="transcode box-stream" href="Y_LiveViewFull.yhtm?mode=tv&typ=transcode">Transcoder</a></li>
|
||||
<li><a title="test vlc plugin" href="javascript:go_live()">NetStream</a></li>
|
||||
<li><a target="work" title="use LiveView with 2 boxes" href="Y_Live_DoubleView.yhtm">DoubleView</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="y_menu_sec_section">Timer</div>
|
||||
<div class="y_menu_sec">
|
||||
<ul>
|
||||
<li><a target="work" title="organize timer" href="Y_Timer_List.yhtm">Timer</a></li>
|
||||
<li><a target="work" title="View EPG" href="Y_Boxcontrol_Bouquets.yhtm">EPG</a></li>
|
||||
<li><a target="work" title="View EPG" href="Y_EPG_Plus.yhtm">EPG Plus</a></li>
|
||||
<li><a target="work" title="timer synchronisation with web tv-planer" href="Y_Tools_Timer_Sync.yhtm">Timer Sync</a></li>
|
||||
<!--<li><a target="work" title="recorder" href="Y_Blank.yhtm">Recorder</a></li>-->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
if(is_ie)
|
||||
{
|
||||
var _obj = document.getElementById("transcode");
|
||||
_obj.style.display = "block";
|
||||
}
|
||||
{=if-empty:{=start=}~~
|
||||
go_live_popup_tv();
|
||||
=}
|
||||
//]]>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
14
src/nhttpd/web/Y_Live_Msg.yhtm
Normal file
14
src/nhttpd/web/Y_Live_Msg.yhtm
Normal file
@@ -0,0 +1,14 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Live_Timer#LiveView=}{=var-set:menu=LiveView PopUp=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
Under Live-View do not zap channels direct by the web or by the dbox' RC.<br/>
|
||||
<a href="Javascript:live_unlock();"><u>unlock</u></a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
325
src/nhttpd/web/Y_Live_Record.yhtm
Normal file
325
src/nhttpd/web/Y_Live_Record.yhtm
Normal file
@@ -0,0 +1,325 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
/*0=normal, 1=record*/
|
||||
function setControls(state)
|
||||
{
|
||||
switch(state)
|
||||
{
|
||||
case 1:
|
||||
document.v.record_filename.disabled=true;
|
||||
document.v.tdisplay.disabled=true;
|
||||
document.v.transon.disabled=true;
|
||||
break;
|
||||
|
||||
default:
|
||||
document.v.record_filename.disabled=false;
|
||||
document.v.tdisplay.disabled=false;
|
||||
document.v.transon.disabled=false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*0=custom, 1=off*/
|
||||
function setControlsCustom(state)
|
||||
{
|
||||
switch(state)
|
||||
{
|
||||
case 1:
|
||||
{=if-equal:{=mode=}~tv~
|
||||
document.v.twidth.disabled=true;
|
||||
document.v.theight.disabled=true;
|
||||
document.v.vcodec.disabled=true;
|
||||
document.v.vb.disabled=true;
|
||||
document.v.scale.disabled=true;
|
||||
=}
|
||||
document.v.acodec.disabled=true;
|
||||
document.v.ab.disabled=true;
|
||||
document.v.channels.disabled=true;
|
||||
document.v.tmux.disabled=true;
|
||||
break;
|
||||
|
||||
default:
|
||||
{=if-equal:{=mode=}~tv~
|
||||
document.v.twidth.disabled=false;
|
||||
document.v.theight.disabled=false;
|
||||
document.v.vcodec.disabled=false;
|
||||
document.v.vb.disabled=false;
|
||||
document.v.scale.disabled=false;
|
||||
=}
|
||||
document.v.acodec.disabled=false;
|
||||
document.v.ab.disabled=false;
|
||||
document.v.channels.disabled=false;
|
||||
document.v.tmux.disabled=false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
function on_profile_change()
|
||||
{
|
||||
if(document.v.profile.value == "custom")
|
||||
setControlsCustom(0);
|
||||
else
|
||||
setControlsCustom(1);
|
||||
}
|
||||
function on_transon_change()
|
||||
{
|
||||
if(document.v.transon.checked)
|
||||
{
|
||||
document.v.profile.disabled=false;
|
||||
on_profile_change();
|
||||
}
|
||||
else
|
||||
{
|
||||
document.v.profile.disabled=true;
|
||||
setControlsCustom(1);
|
||||
}
|
||||
}
|
||||
function doRecord()
|
||||
{
|
||||
var _live = parent.live;
|
||||
if(document.v.record.value == "Record")
|
||||
{
|
||||
var transcode = "";
|
||||
var stream = "";
|
||||
if(document.v.transon.checked)
|
||||
{
|
||||
switch(document.v.profile.value)
|
||||
{
|
||||
case "custom":
|
||||
transcode = "transcode{"+
|
||||
{=if-equal:{=mode=}~tv~
|
||||
"width=" +document.v.twidth.value+
|
||||
",height=" +document.v.theight.value+
|
||||
",vcodec=" +document.v.vcodec.value+
|
||||
",vb=" +document.v.vb.value+
|
||||
",scale=" +document.v.scale.value+
|
||||
","+
|
||||
=}
|
||||
"acodec=" +document.v.acodec.value+
|
||||
",ab=" +document.v.ab.value+
|
||||
",channels=" +document.v.channels.value+
|
||||
",deinterlace}:";
|
||||
break;
|
||||
|
||||
case "ipod":
|
||||
transcode = "transcode{width=320,height=240,vcodec=mp4v,vb=768,acodec=mp4a,ab=128}:";
|
||||
break;
|
||||
|
||||
case "mp3":
|
||||
transcode = "transcode{acodec=mp3,ab=192}:";
|
||||
break;
|
||||
|
||||
case "ipoda":
|
||||
transcode = "transcode{acodec=mp4a,ab=192}:";
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch(document.v.profile.value)
|
||||
{
|
||||
case "mp3":
|
||||
stream = "dst=std{"+
|
||||
"access=file"+
|
||||
",mux=raw"+
|
||||
",url="+document.v.record_filename.value+
|
||||
"}";
|
||||
break;
|
||||
|
||||
case "mp4":
|
||||
stream = "dst=std{"+
|
||||
"access=file"+
|
||||
",mux=mp4"+
|
||||
",url="+document.v.record_filename.value+
|
||||
"}";
|
||||
break;
|
||||
|
||||
default:
|
||||
stream = "dst=std{"+
|
||||
"access=file"+
|
||||
",mux="+document.v.tmux.value+
|
||||
",url="+document.v.record_filename.value+
|
||||
"}";
|
||||
break;
|
||||
}
|
||||
if(document.v.tdisplay.checked)
|
||||
stream = stream+",dst=display";
|
||||
|
||||
var __vlc_cmd = ":sout=#"+transcode+"duplicate{"+stream+"}";
|
||||
/* var sel = document.v.tmux.selectedIndex;
|
||||
var ymux = (sel != -1) ? document.v.tmux[sel].value : "ts";
|
||||
var __vlc_cmd = ":sout=#duplicate{dst=display,dst=std{access=file,mux="+ymux+",url="+document.v.record_filename.value+"}}";
|
||||
*/
|
||||
var options = new Array(__vlc_cmd,":input-repeat=1");
|
||||
document.v.record.value = "Stop Record";
|
||||
setControls(1);
|
||||
_live.do_play_state(1, options);
|
||||
}
|
||||
else
|
||||
{
|
||||
document.v.record.value = "Record";
|
||||
setControls(0);
|
||||
_live.do_play();
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<form name="v" action="" method="get">
|
||||
<table class="y_live_table" cellspacing="0" width="100%">
|
||||
<tr><td class="y_form_header" colspan="5">Record Mode</td></tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Filename:</td>
|
||||
<td colspan="3"><input type="text" name="record_filename" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;vlc_record_path=}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td colspan="4">
|
||||
<input type="checkbox" name="tdisplay" value="1" title="Display on while transcoding" checked="checked"/>Display on
|
||||
<input type="checkbox" name="transon" value="1" title="use transcoding" onclick="on_transon_change()"/>Transcoding on
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td colspan="4">
|
||||
<br/>
|
||||
<button class="y_live_button" type="button" value="r" title="record stream to file" name="record" onclick="doRecord()">Record</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td class="y_form_header" colspan="5"><br/>Record Transcode</td></tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Profile:</td>
|
||||
<td>
|
||||
<select name="profile" class="y_live_button" onchange="on_profile_change()">
|
||||
{=if-equal:{=mode=}~tv~
|
||||
<option value="ipod" selected>iPod Video</option>
|
||||
=}
|
||||
<option value="custom">custom</option>
|
||||
<option value="ipoda">iPod Audio</option>
|
||||
<option value="mp3">mp3 Audio</option>
|
||||
</select>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{=if-equal:{=mode=}~tv~
|
||||
<tr><td class="y_form_section"><br/>Video</td><td class="y_form_section" colspan="4"> </td></tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Breite:</td>
|
||||
<td><input type="text" name="twidth" size="4" value="384" class="y_live_button"/></td>
|
||||
<td>Höhe:</td>
|
||||
<td><input type="text" name="theight" size="4" value="288" class="y_live_button"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Codec:</td>
|
||||
<td>
|
||||
<select name="vcodec" class="y_live_button">
|
||||
<option value="mp4v" selected>mp4v</option>
|
||||
<option value="mp2v">mp2v</option>
|
||||
<option value="DIV3">DIV3</option>
|
||||
<option value="h264">h264</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>Bitrate:</td>
|
||||
<td>
|
||||
<select name="vb" class="y_live_button">
|
||||
<option value="1024">1024</option>
|
||||
<option value="786">786</option>
|
||||
<option value="512">512</option>
|
||||
<option value="384" selected>384</option>
|
||||
<option value="256">256</option>
|
||||
<option value="128">128</option>
|
||||
<option value="96">96</option>
|
||||
<option value="64">64</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Scale:</td>
|
||||
<td>
|
||||
<select name="scale" class="y_live_button">
|
||||
<option value="0.25">0.25</option>
|
||||
<option value="0.50">0.50</option>
|
||||
<option value="0.75">0.75</option>
|
||||
<option value="1.00" selected>1.00</option>
|
||||
<option value="1.25">1.25</option>
|
||||
<option value="1.50">1.50</option>
|
||||
<option value="1.75">1.75</option>
|
||||
<option value="2.00">2.00</option>
|
||||
</select>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
=}
|
||||
<tr><td class="y_form_section">Audio</td><td class="y_form_section" colspan="4"> </td></tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Codec:</td>
|
||||
<td>
|
||||
<select name="acodec" class="y_live_button">
|
||||
<option value="mp4a" selected>mp4a</option>
|
||||
<option value="mp3">mp3</option>
|
||||
<option value="mp2a">mp2a</option>
|
||||
<option value="a52">a52</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>Bitrate:</td>
|
||||
<td>
|
||||
<select name="ab" class="y_live_button">
|
||||
<option value="192">192</option>
|
||||
<option value="128">128</option>
|
||||
<option value="96">96</option>
|
||||
<option value="64">64</option>
|
||||
<option value="32" selected>32</option>
|
||||
<option value="16">16</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Channels:</td>
|
||||
<td>
|
||||
<select name="channels" class="y_live_button">
|
||||
<option value="1">1</option>
|
||||
<option value="2 selected">2</option>
|
||||
<option value="6">6</option>
|
||||
</select>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr><td class="y_form_section">Mux</td><td class="y_form_section" colspan="4"> </td></tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Mux:</td>
|
||||
<td>
|
||||
<select name="tmux" class="y_live_button">
|
||||
{=if-equal:{=mode=}~tv~
|
||||
<option value="ts" selected>ts</option>
|
||||
<option value="ps">ps</option>
|
||||
<option value="mp4">mp4</option>
|
||||
<option value="mov">mov</option>
|
||||
<option value="raw">raw</option>
|
||||
~
|
||||
<option value="raw" selected>raw</option>
|
||||
<option value="mp4">mp4</option>
|
||||
=}
|
||||
</select>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
on_transon_change();
|
||||
//]]>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
174
src/nhttpd/web/Y_Live_Transcode.yhtm
Normal file
174
src/nhttpd/web/Y_Live_Transcode.yhtm
Normal file
@@ -0,0 +1,174 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function doTranscode()
|
||||
{
|
||||
var _live = parent.live;
|
||||
if(document.v.transcode.value == "Transcode")
|
||||
{
|
||||
var transcode = "transcode{"+
|
||||
"width=" +document.v.twidth.value+
|
||||
",height=" +document.v.theight.value+
|
||||
",vcodec=" +document.v.vcodec.value+
|
||||
",vb=" +document.v.vb.value+
|
||||
",scale=" +document.v.scale.value+
|
||||
",acodec=" +document.v.acodec.value+
|
||||
",ab=" +document.v.ab.value+
|
||||
",channels=" +document.v.channels.value+
|
||||
"}:";
|
||||
|
||||
var stream = "dst=std{"+
|
||||
"access="+document.v.access.value+
|
||||
",mux="+document.v.tmux.value+
|
||||
",url="+document.v.tip.value+
|
||||
"}";
|
||||
if(document.v.tdisplay.checked)
|
||||
stream = stream+",dst=display";
|
||||
|
||||
var __vlc_cmd = ":sout=#"+transcode+"duplicate{"+stream+"}";
|
||||
var options = new Array(__vlc_cmd,":input-repeat=1");
|
||||
document.v.transcode.value = "Stop Transcode";
|
||||
_live.do_play_state(1, options);
|
||||
}
|
||||
else
|
||||
{
|
||||
document.v.transcode.value = "Transcode";
|
||||
_live.do_play();
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<form name="v" action="" method="get">
|
||||
<table class="y_live_table" cellspacing="0" width="100%">
|
||||
<tr><td class="y_form_header" colspan="5">Transcode-Broadcast</td></tr>
|
||||
<tr><td class="y_form_section"><br/>Video</td><td class="y_form_section" colspan="4"> </td></tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Width:</td>
|
||||
<td><input type="text" name="twidth" size="4" value="384" class="y_live_button"/></td>
|
||||
<td>Height:</td>
|
||||
<td><input type="text" name="theight" size="4" value="288" class="y_live_button"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Codec:</td>
|
||||
<td>
|
||||
<select name="vcodec" class="y_live_button">
|
||||
<option value="mp4v" selected>mp4v</option>
|
||||
<option value="mp2v">mp2v</option>
|
||||
<option value="DIV3">DIV3</option>
|
||||
<option value="h264">h264</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>Bitrate:</td>
|
||||
<td>
|
||||
<select name="vb" class="y_live_button">
|
||||
<option value="1024">1024</option>
|
||||
<option value="786">786</option>
|
||||
<option value="512">512</option>
|
||||
<option value="384" selected>384</option>
|
||||
<option value="256">256</option>
|
||||
<option value="128">128</option>
|
||||
<option value="96">96</option>
|
||||
<option value="64">64</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Scale:</td>
|
||||
<td>
|
||||
<select name="scale" class="y_live_button">
|
||||
<option value="0.25">0.25</option>
|
||||
<option value="0.50">0.50</option>
|
||||
<option value="0.75">0.75</option>
|
||||
<option value="1.00" selected>1.00</option>
|
||||
<option value="1.25">1.25</option>
|
||||
<option value="1.50">1.50</option>
|
||||
<option value="1.75">1.75</option>
|
||||
<option value="2.00">2.00</option>
|
||||
</select>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr><td class="y_form_section"><br/>Audio</td><td class="y_form_section" colspan="4"> </td></tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Codec:</td>
|
||||
<td>
|
||||
<select name="acodec" class="y_live_button">
|
||||
<option value="mp4a" selected>mp4a</option>
|
||||
<option value="mp3">mp3</option>
|
||||
<option value="mp2a">mp2a</option>
|
||||
<option value="a52">a52</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>Bitrate:</td>
|
||||
<td>
|
||||
<select name="ab" class="y_live_button">
|
||||
<option value="192">192</option>
|
||||
<option value="128">128</option>
|
||||
<option value="96">96</option>
|
||||
<option value="64">64</option>
|
||||
<option value="32" selected>32</option>
|
||||
<option value="16">16</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Channels:</td>
|
||||
<td>
|
||||
<select name="channels" class="y_live_button">
|
||||
<option value="1">1</option>
|
||||
<option value="2 selected">2</option>
|
||||
<option value="6">6</option>
|
||||
</select>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr><td class="y_form_section"><br/>Access</td><td class="y_form_section" colspan="4"> </td></tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Type:</td>
|
||||
<td>
|
||||
<select name="access" class="y_live_button">
|
||||
<option value="udp" selected>udp</option>
|
||||
<option value="http">http</option>
|
||||
<option value="RTP">RTP</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>Mux:</td>
|
||||
<td>
|
||||
<select name="tmux" class="y_live_button">
|
||||
<option value="ts" selected>ts</option>
|
||||
<option value="ps">ps</option>
|
||||
<option value="mp4">mp4</option>
|
||||
<option value="mov">mov</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>IP:Port:</td>
|
||||
<td colspan="3">
|
||||
<input type="text" name="tip" size="18" value="localhost:1234" class="y_live_button">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td colspan="4">
|
||||
<br/>
|
||||
<input type="checkbox" name="tdisplay" value="1" title="Display on while transcoding" checked="checked"/>Display on
|
||||
<button class="y_live_button" type="button" value="transcode" title="transcode stream" name="transcode" onclick="doTranscode()">Transcode</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
678
src/nhttpd/web/Y_Main.css
Normal file
678
src/nhttpd/web/Y_Main.css
Normal file
@@ -0,0 +1,678 @@
|
||||
body
|
||||
{
|
||||
font-family: Arial, Tahoma, Verdana, Geneva, Helvetica, sans-serif;
|
||||
background-color: White;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
padding:0;
|
||||
font-size:10pt;
|
||||
color: #555555;
|
||||
}
|
||||
|
||||
img {border:0;}
|
||||
button {font-family:Arial,Sans-Serif; color:#555555;}
|
||||
input {font-family:Arial,Sans-Serif; color:#555555;}
|
||||
select {font-family:Arial,Sans-Serif; color:#555555;}
|
||||
form {margin: 0; padding: 0;}
|
||||
|
||||
* html .boxhead h2 {height: 1%;} /* For IE 5 PC */
|
||||
|
||||
a {
|
||||
color: #555555;
|
||||
font-size:10pt;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
td {
|
||||
color: #555555;
|
||||
font-size:10pt;
|
||||
}
|
||||
|
||||
tr {
|
||||
color: #555555;
|
||||
font-size:10pt;
|
||||
}
|
||||
|
||||
/* primary Navigation */
|
||||
.y_menu_prim_box {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
background: url(/images/body-trans-r.gif) no-repeat bottom right;
|
||||
font-size: 100%;
|
||||
}
|
||||
.y_menu_prim_box_head {
|
||||
background: url(/images/head-trans-r.gif) no-repeat top right;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
}
|
||||
.y_menu_prim_box_head h2 {
|
||||
background: url(/images/head-trans-l.gif) no-repeat top left;
|
||||
margin: 0;
|
||||
padding: 5px 0px 5px;
|
||||
color: white;
|
||||
font-size: 0;
|
||||
line-height: 0.5em;
|
||||
}
|
||||
.y_menu_prim_box_body {
|
||||
background: url(/images/body-trans-l.gif) no-repeat bottom left;
|
||||
margin: 0;
|
||||
padding-bottom: 8px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
.y_menu_item
|
||||
{
|
||||
margin: 0;
|
||||
display: block;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
.y_menu_prim
|
||||
{
|
||||
background-color: transparent;
|
||||
padding: 0em 0em 0em 0em;
|
||||
white-space: nowrap;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
height: auto;
|
||||
line-height: normal;
|
||||
}
|
||||
.y_menu_prim li
|
||||
{
|
||||
display: inline;
|
||||
}
|
||||
.y_menu_prim_item
|
||||
{
|
||||
margin: 0;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 1px;
|
||||
text-align:center;
|
||||
font-weight: bold;
|
||||
font-size: 12pt;
|
||||
text-decoration: none;
|
||||
height: auto;
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
.y_menu_prim li a {
|
||||
}
|
||||
.y_menu_prim li.selected a
|
||||
{
|
||||
background-color: #dee7ec;
|
||||
border: 1px solid #6D96A9;
|
||||
color: #555555;
|
||||
}
|
||||
.y_menu_prim li a:hover
|
||||
{
|
||||
color: #FF6600;
|
||||
}
|
||||
|
||||
/* secondary Navigation */
|
||||
.y_menu_sec_box {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
background: url(/images/body-trans-r.gif) no-repeat bottom right;
|
||||
font-size: 100%;
|
||||
}
|
||||
.y_menu_sec_box_head {
|
||||
background: url(/images/head-orange-r.gif) no-repeat top right;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.y_menu_sec_box_head h2 {
|
||||
background: url(/images/head-orange-l.gif) no-repeat top left;
|
||||
|
||||
margin: 0;
|
||||
padding: 12px 30px 3px 30px;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
line-height: 1.5em;
|
||||
text-align: left;
|
||||
}
|
||||
.y_menu_sec_box_body {
|
||||
background: url(/images/body-trans-l.gif) no-repeat bottom left;
|
||||
margin: 0;
|
||||
padding-top: 5px;
|
||||
padding-left: 6px;
|
||||
padding-bottom: 20px;
|
||||
padding-right: 6px;
|
||||
|
||||
}
|
||||
.y_menu_sec {
|
||||
display: block;
|
||||
background-repeat: no-repeat;
|
||||
margin: 0px;
|
||||
|
||||
}
|
||||
.y_menu_sec ul {
|
||||
padding: 0em 0em 0em 0em;
|
||||
list-style: none;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.y_menu_sec li {
|
||||
text-align: left;
|
||||
margin-bottom: 1px;
|
||||
padding-left: 20px;
|
||||
color: #555555
|
||||
}
|
||||
.y_menu_sec li.disabled
|
||||
{
|
||||
height: auto;
|
||||
margin-bottom: 0.1em;
|
||||
color: #808080;
|
||||
text-decoration:line-through;
|
||||
}
|
||||
.y_menu_sec li a
|
||||
{
|
||||
text-decoration: none;
|
||||
font-size: 12px;
|
||||
}
|
||||
.y_menu_sec li.plain a
|
||||
{
|
||||
color: #555555
|
||||
}
|
||||
.y_menu_sec li.disabled a
|
||||
{
|
||||
}
|
||||
.y_menu_sec li a:hover
|
||||
{
|
||||
color: #FF6600;
|
||||
}
|
||||
.y_menu_sec_section {
|
||||
margin: 10px 0px 0px 0px;
|
||||
padding: 5px 2px 5px 10px;
|
||||
background-color: #FFCC99;
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/*work*/
|
||||
.work_box {
|
||||
margin: 0;
|
||||
background: url(/images/body-trans-r.gif) no-repeat bottom right;
|
||||
font-size: 100.01%;
|
||||
}
|
||||
.work_box_head {
|
||||
background: url(/images/head-blue-r.gif) no-repeat top right;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
}
|
||||
.work_box_head h2 {
|
||||
background: url(/images/head-blue-l.gif) no-repeat top left;
|
||||
margin: 0;
|
||||
padding: 12px 30px 3px 30px;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
line-height: 1.5em;
|
||||
text-align: left;
|
||||
}
|
||||
.work_box_head_h2 {
|
||||
background: url(/images/head-blue-l.gif) no-repeat top left;
|
||||
margin: 0;
|
||||
padding: 12px 30px 3px 30px;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
line-height: 1.5em;
|
||||
text-align: left;
|
||||
}
|
||||
.work_box_body {
|
||||
background: url(/images/body-trans-l.gif) no-repeat bottom left;
|
||||
margin: 0;
|
||||
padding: 5px 30px 10px 30px;
|
||||
}
|
||||
.work_box_help {
|
||||
float:right;
|
||||
width:3em;
|
||||
text-align:right;
|
||||
font-size: 100.01%;
|
||||
}
|
||||
.work_box_help a {
|
||||
float:right;
|
||||
width:3em;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
text-align:right;
|
||||
}
|
||||
.y_menu
|
||||
{
|
||||
font-size: 10pt;
|
||||
text-align: center;
|
||||
border: 1px solid #6D96A9;
|
||||
border-collapse: collapse;
|
||||
background: #F0FAFF;
|
||||
border-spacing: 1px;
|
||||
height: auto;
|
||||
}
|
||||
.y_menu a:hover
|
||||
{
|
||||
text-decoration:underline;
|
||||
font-weight:bold;
|
||||
}
|
||||
.y_menu_logo
|
||||
{
|
||||
background-image: url(images/tuxbox3.gif);
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
.y_audio_bar
|
||||
{
|
||||
background: #6D96A9;
|
||||
}
|
||||
.y_head
|
||||
{
|
||||
font-weight: bold;
|
||||
color: #555555;
|
||||
font-size: 14pt;
|
||||
clear:both;
|
||||
}
|
||||
.y_work_box
|
||||
{
|
||||
border-spacing: 1px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
float:left;
|
||||
width: auto;
|
||||
color: #555555;
|
||||
display:block;
|
||||
}
|
||||
.y_work_table
|
||||
{
|
||||
border: 1px dashed #2188e0;
|
||||
border-collapse: collapse;
|
||||
background: white;
|
||||
color: #555555;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.y_live_box
|
||||
{
|
||||
border-top: 1px solid #6D96A9;
|
||||
font-size: 8pt;
|
||||
|
||||
}
|
||||
/*wait box*/
|
||||
.y_wait_box {
|
||||
margin: 0;
|
||||
background: url(/images/body-trans-r.gif) no-repeat bottom right;
|
||||
font-size: 100%;
|
||||
position : absolute;
|
||||
left : 100px;
|
||||
top : 100px;
|
||||
visibility : hidden;
|
||||
z-index : 500;
|
||||
}
|
||||
.y_wait_box_visible {
|
||||
margin: 0;
|
||||
background: url(/images/body-trans-r.gif) no-repeat bottom right;
|
||||
font-size: 100%;
|
||||
position : absolute;
|
||||
left : 100px;
|
||||
top : 100px;
|
||||
visibility : visible;
|
||||
z-index : 500;
|
||||
}
|
||||
.y_wait_box_head {
|
||||
background: url(/images/head-orange-r.gif) no-repeat top right;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.y_wait_box_head h2 {
|
||||
background: url(/images/head-orange-l.gif) no-repeat top left;
|
||||
|
||||
margin: 0;
|
||||
padding: 12px 30px 3px 30px;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
line-height: 1.5em;
|
||||
text-align: center;
|
||||
}
|
||||
.y_wait_box_body {
|
||||
background: url(/images/body-trans-l.gif) no-repeat bottom left;
|
||||
margin: 0;
|
||||
padding-top: 5px;
|
||||
padding-left: 16px;
|
||||
padding-bottom: 20px;
|
||||
padding-right: 16px;
|
||||
|
||||
}
|
||||
.y_wait_box_main {
|
||||
color: #666666;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
/**/
|
||||
.y_live_table
|
||||
{
|
||||
color: #555555;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
.y_live_button
|
||||
{
|
||||
/* font-size: 8pt;
|
||||
height: 22px;*/
|
||||
padding: 0;
|
||||
color: #555555;
|
||||
margin:0;
|
||||
|
||||
}
|
||||
.y_live_bouquets
|
||||
{
|
||||
font-size: 8pt;
|
||||
height: 20px;
|
||||
width: 300px;
|
||||
color: #555555;
|
||||
}
|
||||
.y_live_channels
|
||||
{
|
||||
font-size: 8pt;
|
||||
height: 20px;
|
||||
width: 300px;
|
||||
color: #555555;
|
||||
}
|
||||
.y_live_audio_pids
|
||||
{
|
||||
font-size: 8pt;
|
||||
height: 20px;
|
||||
width: 70px;
|
||||
color: #555555;
|
||||
}
|
||||
|
||||
.y_form_table
|
||||
{
|
||||
font-size: 10pt;
|
||||
border: 0px;
|
||||
border-spacing: 0px;
|
||||
padding: 0;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.y_invisible_table
|
||||
{
|
||||
border: 0px;
|
||||
border-spacing: 0px;
|
||||
padding: 0;
|
||||
}
|
||||
.y_topline
|
||||
{
|
||||
border-top: 1px solid #2188e0;
|
||||
}
|
||||
.y_form_header
|
||||
{
|
||||
font-size : 12pt;
|
||||
font-weight:bold;
|
||||
border-bottom : 1px solid #6cadfd;
|
||||
color : #0066cc;
|
||||
margin:0;
|
||||
}
|
||||
.y_form_section
|
||||
{
|
||||
font-size : 10pt;
|
||||
font-weight:bold;
|
||||
border-bottom : 1px solid #aaaaaa;
|
||||
color : #555555;
|
||||
}
|
||||
.y_text_boxcontrol_button
|
||||
{
|
||||
padding : 1px;
|
||||
border : #FF8e42 solid 1px;
|
||||
}
|
||||
.y_text_boxcontrol_button a:hover
|
||||
{
|
||||
background:#FF8e42;
|
||||
}
|
||||
.y_text_boxcontrol_table {
|
||||
width:114px;
|
||||
height: 22px;
|
||||
background : url('/images/audiobar.gif') no-repeat 1px 0px;
|
||||
padding : 1px;
|
||||
border : #FF8e42 solid 1px;
|
||||
}
|
||||
.y_epg_info {
|
||||
border: 1px solid #CCCCCC;
|
||||
display:block;
|
||||
}
|
||||
.y_epg_info #description {
|
||||
font-weight:bold;
|
||||
}
|
||||
.y_epg_info #info2 {
|
||||
font-size:8pt;
|
||||
}
|
||||
.channel_logos
|
||||
{
|
||||
width: 40px;
|
||||
height: 21px;
|
||||
}
|
||||
.ep_bouquet {
|
||||
margin-bottom: 2px;
|
||||
position:relative;
|
||||
}
|
||||
.ep_bouquet_name {
|
||||
border : #BBBBBB solid 1px;
|
||||
width : 100px;
|
||||
height: 1.3em;
|
||||
overflow:hidden;
|
||||
padding-left: 1px;
|
||||
padding-right: 1px;
|
||||
}
|
||||
.ep_bouquet_item {
|
||||
border : #BBBBBB solid 1px;
|
||||
overflow:hidden;
|
||||
height: 1.3em;
|
||||
padding-left: 1px;
|
||||
padding-right: 1px;
|
||||
}
|
||||
.ep_time_bar {
|
||||
width:100%;
|
||||
margin-bottom: 2px;
|
||||
position:relative;
|
||||
}
|
||||
.ep_time_bar_item {
|
||||
border : #999999 solid 1px;
|
||||
height: 1.3em;
|
||||
padding-left: 1px;
|
||||
padding-right: 1px;
|
||||
overflow:hidden;
|
||||
}
|
||||
.ep_info_desc {
|
||||
font-weight:bold;
|
||||
font-size:10pt;
|
||||
}
|
||||
.ep_info_info1 {
|
||||
font-size:8pt;
|
||||
}
|
||||
.ep_info_info2 {
|
||||
font-size:10pt;
|
||||
}
|
||||
#epg_info {
|
||||
border : #999999 solid 1px;
|
||||
visibility:hidden;
|
||||
}
|
||||
#epg_plus {
|
||||
width:auto;
|
||||
overflow:auto;
|
||||
}
|
||||
#epg_time {
|
||||
font-size: 8pt;
|
||||
height: 20px;
|
||||
}
|
||||
/* bouquet*/
|
||||
.bouquetlist
|
||||
{
|
||||
border-collapse: collapse;
|
||||
color: #436976;
|
||||
padding: 3px;
|
||||
}
|
||||
tr.bouquetlist
|
||||
{
|
||||
}
|
||||
/*channels*/
|
||||
.bouquetitemlist
|
||||
{
|
||||
border-collapse: collapse;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
.a
|
||||
{
|
||||
background-color: #F0FAFF;
|
||||
font-family:Arial,Sans-Serif;
|
||||
font-size:11pt;
|
||||
border-spacing: 0px;
|
||||
padding: 0px;
|
||||
padding-left: 10px;
|
||||
padding-right: 20px;
|
||||
margin:0px;
|
||||
}
|
||||
.aepg
|
||||
{
|
||||
background-color: #F0FAFF;
|
||||
font-weight:normal;
|
||||
font-size:10pt;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.b
|
||||
{
|
||||
background-color: white;
|
||||
font-size:11pt;
|
||||
border-spacing: 0px;
|
||||
padding: 0px;
|
||||
padding-left: 10px;
|
||||
padding-right: 20px;
|
||||
margin:0px;
|
||||
}
|
||||
.bepg
|
||||
{
|
||||
background-color: white;
|
||||
font-weight:normal;
|
||||
font-size:10pt;
|
||||
padding-left: 10px;
|
||||
}
|
||||
a:hover.clist
|
||||
{
|
||||
font-size:10pt;
|
||||
text-decoration:underline;
|
||||
}
|
||||
a:hover.clistsmall
|
||||
{
|
||||
font-size:10pt;
|
||||
text-decoration:underline;
|
||||
}
|
||||
.c
|
||||
{
|
||||
background-color:#dee7ec;
|
||||
font-weight:bold;
|
||||
font-size:11pt;
|
||||
padding-left: 10px;
|
||||
padding-right: 20px;
|
||||
margin:0px;
|
||||
}
|
||||
.cepg
|
||||
{
|
||||
background-color:#dee7ec;
|
||||
font-weight:normal;
|
||||
font-size:10pt;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.cslider_table
|
||||
{
|
||||
height: 10px;
|
||||
border: 1px solid #436976;
|
||||
width: 30px;
|
||||
border-spacing: 0px;
|
||||
padding: 0px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.cslider_used
|
||||
{
|
||||
background-color: #6D96A9;
|
||||
height: 10px;
|
||||
}
|
||||
.cslider_free
|
||||
{
|
||||
background-color: #EAEBFF;
|
||||
height: 10px;
|
||||
}
|
||||
/*EPG*/
|
||||
.epg
|
||||
{
|
||||
font-weight: bold;
|
||||
color: #555555;
|
||||
font-size: 12pt;
|
||||
clear:both;
|
||||
|
||||
}
|
||||
.epglist
|
||||
{
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
a:hover.elist
|
||||
{
|
||||
font-size:10pt;
|
||||
text-decoration:underline;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/*Timer*/
|
||||
.timer
|
||||
{
|
||||
border-collapse: collapse;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
a.timer
|
||||
{
|
||||
text-decoration:underline;
|
||||
}
|
||||
.atimer
|
||||
{
|
||||
background-color: #F0FAFF;
|
||||
font-weight:normal;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.atimer td
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
.btimer
|
||||
{
|
||||
background-color:White;
|
||||
font-weight:normal;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.btimer td
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
.ctimer
|
||||
{
|
||||
background-color:#dee7ec;
|
||||
font-weight:normal;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.ctimer td
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
.blist
|
||||
{
|
||||
white-space: nowrap;
|
||||
height: 20px;
|
||||
}
|
110
src/nhttpd/web/Y_Menue.yhtm
Normal file
110
src/nhttpd/web/Y_Menue.yhtm
Normal file
@@ -0,0 +1,110 @@
|
||||
{=var-set:cancache=true=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
/*Indicator*/
|
||||
var g_i_active = false;
|
||||
var g_i_counter = 0;
|
||||
var g_i_rec_state = new Array(" REC ", " (REC) ", " ((REC)) ", "(((REC)))");
|
||||
var g_i_recording = false;
|
||||
function i_state_check()
|
||||
{
|
||||
var res = "";
|
||||
//var res = loadSyncURL("/control/setmode?status");
|
||||
g_i_recording = (res.search(/on/)!=-1);
|
||||
}
|
||||
function i_state_view()
|
||||
{
|
||||
if(g_i_recording)
|
||||
document.getElementById('state').innerHTML = g_i_rec_state[g_i_active %4];
|
||||
else
|
||||
document.getElementById('state').innerHTML = "";
|
||||
}
|
||||
function i_clock()
|
||||
{
|
||||
now = new Date();
|
||||
var hour = now.getHours();
|
||||
var min = now.getMinutes();
|
||||
if(hour < 10)
|
||||
hour = "0" + hour;
|
||||
if(min < 10)
|
||||
min = "0" + min;
|
||||
document.getElementById('clock').innerHTML = hour + ":" + min;
|
||||
}
|
||||
function i_interval()
|
||||
{
|
||||
if(g_i_active<12)
|
||||
g_i_active++;
|
||||
else
|
||||
{
|
||||
g_i_active=0;
|
||||
i_clock();
|
||||
i_state_check();
|
||||
}
|
||||
i_state_view();
|
||||
}
|
||||
function i_start()
|
||||
{
|
||||
g_i_counter = 0;
|
||||
i_clock();
|
||||
g_i_active = window.setInterval('i_interval()', 1000);
|
||||
}
|
||||
function i_stop()
|
||||
{
|
||||
window.clearInterval(g_i_active);
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="y_menu_prim_box">
|
||||
<div class="y_menu_prim_box_head"><h2> </h2></div>
|
||||
<div class="y_menu_prim_box_body">
|
||||
<table border="0" width="100%">
|
||||
<tr>
|
||||
<td width="50" align="center" valign="middle"><a href="http://wiki.godofgta.de/Neutrino:yWeb" target="_blank"><img src="images/tux.gif" title="Tuxbox Wiki" alt="Tuxbox Wiki"/></a></td>
|
||||
<td width="100">
|
||||
<span style="font-weight: bold;font-size: 10pt;">yWeb</span>
|
||||
<br/>
|
||||
<span style="font-size: 8pt;">Version {=ini-get:Y_Version.txt;version=}</span>
|
||||
</td>
|
||||
<td>
|
||||
<ul id="menu_prim" class="y_menu_prim">
|
||||
<li><a class="y_menu_prim_item" target="base" href="Y_Dyn_Pages.yhtm?page=frame_boxcontrol"
|
||||
title="Boxcontrol & Bouquets">Boxcontrol</a></li>
|
||||
<li><a class="y_menu_prim_item" target="base" href="Y_Dyn_Pages.yhtm?page=frame_live"
|
||||
title="LiveView, Timer Sync & Settings">Live/Timer</a></li>
|
||||
<li><a class="y_menu_prim_item" target="base" href="Y_Dyn_Pages.yhtm?page=frame_tools"
|
||||
title="Mounts, WOL, Expert Tools">Tools</a></li>
|
||||
<li><a class="y_menu_prim_item" target="base" href="Y_Dyn_Pages.yhtm?page=frame_settings"
|
||||
title="Settings for Box, Web, Plugins ...">Settings</a></li>
|
||||
<li><a class="y_menu_prim_item" target="base" href="Y_Dyn_Pages.yhtm?page=frame_ext"
|
||||
title="User Extentions ...">Extentions</a></li>
|
||||
<li><a class="y_menu_prim_item" target="base" href="Y_Dyn_Pages.yhtm?page=frame_info"
|
||||
title="Information about yWeb, Updates">Info</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<a target="base" href="Y_Dyn_Pages.yhtm?page=frame_live_directtv" title="LiveTV"><img src="/images/live.gif"></a>
|
||||
<a target="base" href="Y_Dyn_Pages.yhtm?page=frame_live&dostart=live_tv_popup" title="LiveTV Popup"><img src="/images/live_popup.gif"></a>
|
||||
<a href="/control/build_live_url?vlc_link=true" title="Stream to VLC Client"><img src="/images/vlc.gif"></a>
|
||||
</td>
|
||||
<td align="right">
|
||||
<span id="state" style="color : red;font-family: Courier New, Courier, monospace;"> </span>
|
||||
<span id="box_name" {=if-empty:{=ini-get:/var/tuxbox/config/Y-Web.conf;yweb_box_color=}~~style="color : #{=ini-get:/var/tuxbox/config/Y-Web.conf;yweb_box_color=};"=}>
|
||||
<b>{=ini-get:/var/tuxbox/config/Y-Web.conf;yweb_box_name=}</b></span>
|
||||
<span id="clock">00:00</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
i_start();
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
17
src/nhttpd/web/Y_Settings.yhtm
Normal file
17
src/nhttpd/web/Y_Settings.yhtm
Normal file
@@ -0,0 +1,17 @@
|
||||
{=var-set:cancache=yPyes=}
|
||||
<html>
|
||||
<head>
|
||||
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
|
||||
<frameset cols="157,*" framespacing="0" border="0" frameborder="0">
|
||||
<frame name="Links" scrolling="no" noresize target="Rechts oben" src="Y_Settings_Menue.yhtm">
|
||||
<frame name="Rechts_oben" src="Y_blank.htm" scrolling="auto">
|
||||
<noframes>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
|
||||
<p>Diese Seite verwendet Frames. Frames werden von Ihrem Browser aber nicht unterstüzt.</p>
|
||||
</body>
|
||||
</noframes>
|
||||
</frameset>
|
||||
|
||||
</html>
|
67
src/nhttpd/web/Y_Settings_Backup.yhtm
Normal file
67
src/nhttpd/web/Y_Settings_Backup.yhtm
Normal file
@@ -0,0 +1,67 @@
|
||||
{=var-set:cancache=yPConf=}
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_submit()
|
||||
{
|
||||
if(document.f.filename.value != "")
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.su.disabled=true;
|
||||
window.setTimeout("document.f.submit()",1000);
|
||||
document.f.su.disabled=false;
|
||||
}
|
||||
}
|
||||
function do_backup()
|
||||
{
|
||||
show_waitbox(true);
|
||||
obj_disable("btBackup", true);
|
||||
window.setTimeout("do_backup2()",500);
|
||||
}
|
||||
function do_backup2()
|
||||
{
|
||||
var _url = loadSyncURL("/control/exec?Y_Tools&settings_backup_restore&backup");
|
||||
var _down = document.getElementById("down");
|
||||
_down.href = _url;
|
||||
show_obj("down_box", true);
|
||||
show_waitbox(false);
|
||||
obj_disable("btBackup", false);
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=Settings=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Settings#Backup_.26_Restore=}{=var-set:menu=Backup & Restore=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<table class="y_invisible_table" cellspacing="0" width="100%">
|
||||
<tr><td class="y_form_header">Backup</td></tr>
|
||||
<tr>
|
||||
<td><input id="btBackup" type="button" value ="Backup" title="backup settings" onclick="do_backup()"/>
|
||||
<div id="down_box" style="visibility : hidden;">
|
||||
<br/><a id="down" href="" type="application/octet-stream"><u>Download settings</u></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td class="y_form_header">Restore (Warning: box will REBOOT after restore!)</td></tr>
|
||||
<tr>
|
||||
<td>
|
||||
<form name="f" method="post" enctype="multipart/form-data" action="/control/exec?Y_Tools&settings_backup_restore&restore">
|
||||
tar-File: <input type="file" name="filename" size="70"/> <br/>
|
||||
<input type="button" name="su" value="Restore" title="upload and restore settings" onclick="do_submit()"/>
|
||||
<br/><br/>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
69
src/nhttpd/web/Y_Settings_Live.yhtm
Normal file
69
src/nhttpd/web/Y_Settings_Live.yhtm
Normal file
@@ -0,0 +1,69 @@
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_refresh_liveview()
|
||||
{
|
||||
parent.live.location.reload();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=Save.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<form name="f" action="/y/cgi">
|
||||
<table border="0" class="y_live_table" cellspacing="0" width="100%">
|
||||
<tr><td class="y_form_header" colspan="2"><br/>VLC Settings (IE & Mozilla >= 0.8.6.1)</td></tr>
|
||||
<tr>
|
||||
<td>Deinterlace</td>
|
||||
<td>
|
||||
<input type="radio" name="deinterlace" value="false" title="deinterlace: off"/>Off
|
||||
<input type="radio" name="deinterlace" value="true" title="deinterlace: on"/>On
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>http caching</td>
|
||||
<td><input type="text" name="http_caching" size="5" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;http_caching;1000=}" title="http caching. 0=off"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>UDP as default</td>
|
||||
<td>
|
||||
<input type="radio" name="udp" value="false" title="udp: off"/>Off
|
||||
<input type="radio" name="udp" value="true" title="udp: on"/>On
|
||||
</td>
|
||||
</tr> </table>
|
||||
<br/>
|
||||
<input type="hidden" name="tmpl" value="Y_Settings_Live.yhtm"/>
|
||||
<input type="hidden" name="execute" value="include-block:Y_Blocks.txt;Live_save_settings;nix"/>
|
||||
<input type="button" value="Save ..." title="submit and save values" onclick="do_submit()"/>
|
||||
<input type="button" value="Refresh LiveView" title="Refresh LiveView" onclick="do_refresh_liveview()"/>
|
||||
</form>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function form_init()
|
||||
{
|
||||
val = "{=ini-get:/var/tuxbox/config/Y-Web.conf;deinterlace;false=}";
|
||||
if(val == "true")
|
||||
document.f.deinterlace[1].checked = true;
|
||||
else
|
||||
document.f.deinterlace[0].checked = true;
|
||||
val = "{=ini-get:/var/tuxbox/config/Y-Web.conf;udp;false=}";
|
||||
if(val == "true")
|
||||
document.f.udp[1].checked = true;
|
||||
else
|
||||
document.f.udp[0].checked = true;
|
||||
}
|
||||
function do_submit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.submit();
|
||||
}
|
||||
form_init();
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
||||
|
71
src/nhttpd/web/Y_Settings_Menue.yhtm
Normal file
71
src/nhttpd/web/Y_Settings_Menue.yhtm
Normal file
@@ -0,0 +1,71 @@
|
||||
{=var-set:cancache=yPConf=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:management={=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip;{=func:get_request_data client_addr=}=}~1~=}{=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip2=}~1~=}=}
|
||||
<div class="y_menu_sec_box">
|
||||
<div class="y_menu_sec_box_head"><h2>Settings</h2></div>
|
||||
<div class="y_menu_sec_box_body">
|
||||
<div class="y_menu_sec_section">General</div>
|
||||
<div class="y_menu_sec">
|
||||
<ul>
|
||||
{=if-empty:{=var-get:management=}~
|
||||
<li class="disabled" title="settings for yWeb itselfs (restricted by ManagementIP)">yWeb</li>
|
||||
<li class="disabled" title="settings for Web Server daemon (restricted by ManagementIP)">WebServer</li>
|
||||
<!--dbox2 only <li class="disabled" title="download or upload ucodes (restricted by ManagementIP)">Ucodes</li> dbox2 only-->
|
||||
<li class="disabled" title="download or upload Bouquetlist, Channellist, ... (restricted by ManagementIP)">Zapit</li>
|
||||
<li class="disabled" title="backup or upload boot logos (restricted by ManagementIP)">Boot Logo</li>
|
||||
<li class="disabled" title="SyncTimer Settings (restricted by ManagementIP)">Timer Settings</a></li>
|
||||
~
|
||||
<li><a title="settings for yWeb itselfs" target="work" href="Y_Settings_yWeb.yhtm">yWeb</a></li>
|
||||
<li><a title="settings for Web Server daemon" target="work" href="Y_Settings_nhttpd.yhtm">WebServer</a></li>
|
||||
<!--dbox2 only <li><a title="download or upload ucodes" target="work" href="Y_Settings_ucodes.yhtm">Ucodes</a></li> dbox2 only-->
|
||||
<li><a title="download or upload Bouquetlist, Channellist, ..." target="work" href="Y_Settings_zapit.yhtm">Zapit</a></li>
|
||||
<!--dbox2 only <li><a title="backup or upload boot logos" target="work" href="Y_Tools_Bootlogo.yhtm">Boot Logo</a></li> dbox2 only-->
|
||||
<li><a title="backup or restore settings" target="work" href="Y_Settings_Backup.yhtm">Backup & Restore</a></li>
|
||||
<li><a title="SyncTimer Settings" target="work" href="Y_Settings_Timer.yhtm">Timer Settings</a></li>
|
||||
=}
|
||||
<!--<li><a title="change layout skin" target="work" href="Y_Settings_Skin.yhtm">Skins</a></li>-->
|
||||
</ul>
|
||||
</div>
|
||||
<div class="y_menu_sec_section">Neutrino</div>
|
||||
<div class="y_menu_sec">
|
||||
<ul>
|
||||
{=if-empty:{=var-get:management=}~
|
||||
<li class="disabled" title="Bouquet Editor (restricted by ManagementIP)">Bouquet Editor</a></li>
|
||||
<li class="disabled" title="Parental settings (restricted by ManagementIP)">Parental</a></li>
|
||||
<li class="disabled" title="Recording settings (restricted by ManagementIP)">Recording</a></li>
|
||||
<li class="disabled" title="Movieplayer settings (restricted by ManagementIP)">Movieplayer</a></li>
|
||||
<li class="disabled" title="Audioplayer settings (restricted by ManagementIP)">Audioplayer</a></li>
|
||||
<li class="disabled" title="Pictureviewer settings (restricted by ManagementIP)">Pictureviewer</a></li>
|
||||
<li class="disabled" title="boot settings (restricted by ManagementIP)">Boot options</a></li>
|
||||
<li class="disabled" title="rest of settings (restricted by ManagementIP)">Misc</a></li>
|
||||
~
|
||||
|
||||
<li><a title="Bouquet Editor" target="work" href="Y_Boxcontrol_Bouquet_Editor_Main.yhtm">Bouquet Editor</a></li>
|
||||
<li><a title="Parental settings" target="work" href="Y_Settings_neutrino_forms.yhtm?form=neutrino_form-data_parental">Parental</a></li>
|
||||
<li><a title="Recording settings" target="work" href="Y_Settings_neutrino_forms.yhtm?form=neutrino_form-data_record">Recording</a></li>
|
||||
<li><a title="Direct Recording" target="work" href="Y_Settings_neutrino_forms.yhtm?form=neutrino_form-data_direct_recording">Direct Recording</a></li>
|
||||
<li><a title="Movieplayer settings" target="work" href="Y_Settings_neutrino_forms.yhtm?form=neutrino_form-data_movieplayer">Movieplayer</a></li>
|
||||
<li><a title="Audioplayer settings" target="work" href="Y_Settings_neutrino_forms.yhtm?form=neutrino_form-data_audioplayer">Audioplayer</a></li>
|
||||
<li><a title="Pictureviewer settings" target="work" href="Y_Settings_neutrino_forms.yhtm?form=neutrino_form-data_pictureviewer">Pictureviewer</a></li>
|
||||
<!--dbox2 only <li><a title="boot settings" target="work" href="Y_Settings_neutrino_forms.yhtm?form=neutrino_form-data_bootoptions">Boot options</a></li> dbox2 only-->
|
||||
<li><a title="rest of settings" target="work" href="Y_Settings_neutrino_forms.yhtm?form=neutrino_form-data_diverse">Misc</a></li>
|
||||
=}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="y_menu_sec_section">Plugins</div>
|
||||
<div class="y_menu_sec">
|
||||
<ul>
|
||||
{=if-empty:{=var-get:management=}~
|
||||
<li class="disabled" title="configure VNC-Plugin (restricted by ManagementIP)">VNC</li>
|
||||
~
|
||||
<li><a title="configure VNC-Plugin" target="work" href="Y_Settings_VNC.yhtm">VNC</a></li>
|
||||
=}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
36
src/nhttpd/web/Y_Settings_Skin.yhtm
Normal file
36
src/nhttpd/web/Y_Settings_Skin.yhtm
Normal file
@@ -0,0 +1,36 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<link rel="stylesheet" type="text/css" href="/Y_Main.css">
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
function do_it()
|
||||
{
|
||||
_url="/control/exec?Y_Plugins&skin_set&"+
|
||||
document.f.skin.value;
|
||||
parent.frames[1].location.href=_url;
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<br>
|
||||
<div class="y_head">Skin {=var-set:help_url=Neutrino:yWeb:Settings#Skins=}{=include-block:Y_Blocks.txt;wiki_help=}</div>
|
||||
<div class="y_work_box">
|
||||
<form name="f" action="">
|
||||
<table border="0">
|
||||
<tr>
|
||||
<td>Skin</td>
|
||||
<td><select size="1" name="skin">
|
||||
{=script:Y_Plugins skin_get=}
|
||||
</select></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
<input type="button" value="Setzen" name="B1" title="submit values" onClick='do_it()'>
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
60
src/nhttpd/web/Y_Settings_Timer.yhtm
Normal file
60
src/nhttpd/web/Y_Settings_Timer.yhtm
Normal file
@@ -0,0 +1,60 @@
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_submit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
var t = document.f.klack_url.value.replace(/&/gi,";");
|
||||
document.f.klack_url.value = t;
|
||||
document.f.submit();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=Save.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Settings#Timer_Settings=}{=var-set:menu=Timer Settings=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="f" accept-charset="UTF-8" action="/y/cgi">
|
||||
<table border="0" class="y_form_table" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td colspan="2" ><strong>tvinfo.de</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Username</td>
|
||||
<td><input type="text" name="tvinfo_username" size="15" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;tvinfo_username=}" title="username"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Passwort</td>
|
||||
<td><input type="password" name="tvinfo_password" size="15" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;tvinfo_password=}" title="password"/><br/><br/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="border-top: 1px solid #6D96A9;"><strong>klack.de</strong><br/>(& will be converted to ";" on save)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>personal RSS TV-Planer URL</td>
|
||||
<td><input type="text" name="klack_url" size="60" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;klack_url=}" title="Klack.de RSS TV-Planer URL"/><br/><br/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="border-top: 1px solid #6D96A9;"><strong>Sender name</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><textarea name="channels" cols="60" rows="10" title="channel name replacement" style="background : white; font : 'Courier New',medium monospace; color : #436976;">{=if-file-exists:/var/tuxbox/config/channels.txt~{=include:/var/tuxbox/config/channels.txt=}~{=if-file-exists:/var/httpd/channels.txt~{=include:/var/httpd/channels.txt=}~{=include:/share/tuxbox/neutrino/httpd-y/channels.txt=}=}=}</textarea></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
<input type="hidden" name="tmpl" value="Y_Settings_Timer.yhtm"/>
|
||||
<input type="hidden" name="execute" value="include-block:Y_Blocks.txt;timer_save_settings;nix"/>
|
||||
<input type="button" value="Save ..." title="submit and save values" onclick="do_submit()"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
||||
|
58
src/nhttpd/web/Y_Settings_VNC.yhtm
Normal file
58
src/nhttpd/web/Y_Settings_VNC.yhtm
Normal file
@@ -0,0 +1,58 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function form_init()
|
||||
{
|
||||
var val = {=ini-get:/var/tuxbox/config/vnc.conf;scale;1=};
|
||||
document.f.scale[val-1].selected = true;
|
||||
}
|
||||
function do_submit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.submit();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body onload="form_init()">
|
||||
{=var-set:wait_text=Save.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Settings#VNC=}{=var-set:menu=VNC=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="f" action="">
|
||||
<table border="0">
|
||||
<tr>
|
||||
<td>Server</td>
|
||||
<td><input type="text" name="server" size="20" value="{=ini-get:/var/tuxbox/config/vnc.conf;server=}" title="enter IP (xxx.xxx.xxx.xxx)"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Port</td>
|
||||
<td><input type="text" name="port" size="5" value="{=ini-get:/var/tuxbox/config/vnc.conf;port=}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Passwort</td>
|
||||
<td><input type="password" name="password" size="20" value="{=ini-get:/var/tuxbox/config/vnc.conf;passwd=}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Scaling</td>
|
||||
<td>
|
||||
<select name="scale" title="enter scale for Screen">
|
||||
<option value="1">1</option>
|
||||
<option value="2">2</option>
|
||||
<option value="3">3</option>
|
||||
<option value="4">4</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
<input type="hidden" name="tmpl" value="Y_Settings_nhttpd.yhtm"/>
|
||||
<input type="hidden" name="execute" value="include-block:Y_Blocks.txt;vnc_save_settings;nix"/>
|
||||
<input type="button" value="Save ..." title="submit and save values" onclick="do_submit()"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
182
src/nhttpd/web/Y_Settings_automount.yhtm
Normal file
182
src/nhttpd/web/Y_Settings_automount.yhtm
Normal file
@@ -0,0 +1,182 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function automount_edit()
|
||||
{
|
||||
var mstr = loadSyncURL("/control/exec?Y_Tools&automount_getline&{=if-file-exists:/var/etc/auto.net~/var/etc/auto.net~/etc/auto.net=}&{=R1=}");
|
||||
mstr = mstr.replace(/\t/gi," ");
|
||||
mstr = mstr.replace(/[ ]+/gi," ");
|
||||
|
||||
var _mount = mstr.split(" ");
|
||||
document.f.mountname.value = _mount[0];
|
||||
var _ops_right = split_right(_mount[1],"=");
|
||||
var _ops_list = _ops_right.split(",");
|
||||
var fstype = _ops_list[0];
|
||||
|
||||
switch(fstype)
|
||||
{
|
||||
case "nfs":
|
||||
obj_set_radio_value("type", "nfs");
|
||||
document.f.opt1.value = split_right(_ops_right, ",");
|
||||
var share_list = _mount[2].split(":");
|
||||
document.f.ip.value = share_list[0];
|
||||
document.f.dir.value = share_list[1];
|
||||
break;
|
||||
|
||||
case "cifs":
|
||||
obj_set_radio_value("type", "cifs");
|
||||
var _options = "";
|
||||
for(i=1;i < _ops_list.length;i++)
|
||||
{
|
||||
var _sub_ops = _ops_list[i].split("=");
|
||||
if(_sub_ops.length > 1)
|
||||
|
||||
switch (_sub_ops[0])
|
||||
{
|
||||
case "user":
|
||||
document.f.username.value = _sub_ops[1];
|
||||
break;
|
||||
|
||||
case "password":
|
||||
document.f.password.value = _sub_ops[1];
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(_options != "")
|
||||
_options += ",";
|
||||
_options += _ops_list[i];
|
||||
}
|
||||
}
|
||||
document.f.opt1.value = _options;
|
||||
var Ausdruck = /\/\/(.*)\/(.*).*/;
|
||||
Ausdruck.exec(_mount[2]);
|
||||
document.f.ip.value = RegExp.$1;
|
||||
document.f.dir.value = RegExp.$2;
|
||||
break;
|
||||
|
||||
default:
|
||||
alert("not implemented yet");
|
||||
break;
|
||||
}
|
||||
}
|
||||
function form_init()
|
||||
{
|
||||
obj_set_radio_value("type", "nfs");
|
||||
{=if-equal:{=cmd=}~edit~
|
||||
automount_edit();
|
||||
=}
|
||||
change_type();
|
||||
}
|
||||
function do_save()
|
||||
{
|
||||
show_waitbox(true);
|
||||
window.setTimeout("do_save2()",10);
|
||||
}
|
||||
function do_save2()
|
||||
{
|
||||
var mountname = document.f.mountname.value;
|
||||
mountname = mountname.replace(/#/gi,"---");
|
||||
var fstype = obj_get_radio_value("type")
|
||||
var mstr = mountname + "%20";
|
||||
|
||||
if(fstype == "nfs")
|
||||
{
|
||||
mstr += "-fstype=nfs";
|
||||
mstr += ((document.f.opt1.value!="")?","+document.f.opt1.value:",ro,nolock");
|
||||
var dir = document.f.dir.value;
|
||||
if(dir.indexOf("/") != 0)
|
||||
dir = "/"+dir;
|
||||
mstr += "%20" + document.f.ip.value + ":" + dir;
|
||||
}
|
||||
else if(fstype == "cifs")
|
||||
{
|
||||
mstr += "-fstype=cifs";
|
||||
if(document.f.opt1.value != "")
|
||||
mstr += ((mstr!="")?",":",ro,soft")+document.f.opt1.value;
|
||||
if(document.f.username.value != "")
|
||||
mstr += ((mstr!="")?",":"")+"user="+document.f.username.value;
|
||||
if(document.f.password.value != "")
|
||||
mstr += ((mstr!="")?",":"")+"password="+document.f.password.value;
|
||||
var dir = document.f.dir.value;
|
||||
if(dir.indexOf("/") == 0)
|
||||
dir = dir.substr(1);
|
||||
mstr += ((mstr!="")?",":"")+"unc="+"//"+document.f.ip.value+"/"+dir;
|
||||
mstr += "%20//"+document.f.ip.value+"/"+dir;
|
||||
}
|
||||
show_waitbox(false);
|
||||
mstr = mstr.replace(/=/gi,",,");
|
||||
|
||||
var _url ="/control/exec?Y_Tools&automount_setline&/var/etc/auto.net&"+mountname+"&"+mstr;
|
||||
var res = loadSyncURL(_url);
|
||||
window.document.location.href="/Y_Settings_automount_liste.yhtm";
|
||||
}
|
||||
function change_type()
|
||||
{
|
||||
var fstype = obj_get_radio_value("type")
|
||||
if(fstype == "nfs")
|
||||
{
|
||||
show_obj("vusername",false);
|
||||
show_obj("vpassword",false);
|
||||
}
|
||||
else
|
||||
{
|
||||
show_obj("vusername",true);
|
||||
show_obj("vpassword",true);
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body onLoad="form_init()">
|
||||
{=var-set:wait_text=Save.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head">
|
||||
<div class="work_box_head_h2">{=var-set:help_url=Neutrino:yWeb:Tools#AutoMount=}{=var-set:menu=AutoMount=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="f" action="/y/cgi">
|
||||
<input type="hidden" name="nr" value="{=R1=}"/>
|
||||
<table border="0" class="y_form_table">
|
||||
<tr>
|
||||
<td>Mountname</td>
|
||||
<td><input type="text" name="mountname" size="20" value="" {=if-equal:{=cmd=}~add~~disabled="disabled"=}/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Typ</td>
|
||||
<td>
|
||||
<input type="radio" name="type" value="nfs" onclick="change_type()"/>NFS
|
||||
<input type="radio" name="type" value="cifs" onclick="change_type()"/>CIFS
|
||||
<!-- <input type="radio" name="type" value="2" onchange="change_type()"/>FTPFS-->
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>IP</td>
|
||||
<td><input type="text" name="ip" size="20" value=""/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Directory</td>
|
||||
<td><input type="text" name="dir" size="30" value="" title="remote directory"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Option</td>
|
||||
<td><input type="text" name="opt1" size="30" value="" title="mount options 1"/></td>
|
||||
</tr>
|
||||
<tr id="vusername" style="visibility:hidden">
|
||||
<td>Username</td>
|
||||
<td><input type="text" name="username" size="30" value="" title="username"/></td>
|
||||
</tr>
|
||||
<tr id="vpassword" style="visibility:hidden">
|
||||
<td>Password</td>
|
||||
<td><input type="password" name="password" size="30" value="" title="password"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
<input type="button" value="Save ..." title="submit and save values" onClick="do_save()"/>
|
||||
<input type="button" value="Cansel" title="cancel" name="abort" onClick='window.document.location.href="/Y_Settings_automount_liste.yhtm"'/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
55
src/nhttpd/web/Y_Settings_automount_liste.yhtm
Normal file
55
src/nhttpd/web/Y_Settings_automount_liste.yhtm
Normal file
@@ -0,0 +1,55 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
|
||||
function do_submit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.submit();
|
||||
}
|
||||
function do_edit()
|
||||
{
|
||||
document.f.cmd.value = "edit";
|
||||
do_submit();
|
||||
}
|
||||
function do_add()
|
||||
{
|
||||
document.f.cmd.value = "add";
|
||||
do_submit();
|
||||
}
|
||||
function do_delete()
|
||||
{
|
||||
if(confirm("Mount wirklich loeschen?") == true)
|
||||
{
|
||||
var mountname = obj_get_radio_value("R1");
|
||||
var _url ="/control/exec?Y_Tools&automount_setline&{=if-file-exists:/var/etc/auto.net~/var/etc/auto.net~/etc/auto.net=}&"+mountname+"&";
|
||||
var res = loadSyncURL(_url);
|
||||
alert("geloescht!");
|
||||
location.reload();
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head">
|
||||
<div class="work_box_head_h2">{=var-set:help_url=Neutrino:yWeb:Tools#AutoMount=}{=var-set:menu=AutoMount=}{=include-block:Y_Blocks.txt;work_menu=}</div>
|
||||
</div>
|
||||
<div class="work_box_body">
|
||||
<form action="/y/cgi" name="f" id="f">
|
||||
{=script:Y_Tools automount_list {=if-file-exists:/var/etc/auto.net~/var/etc/auto.net~/etc/auto.net=}=}
|
||||
<input type="hidden" name="tmpl" value="Y_Settings_automount.yhtm"/>
|
||||
<input type="hidden" name="execute" value=""/>
|
||||
<input type="hidden" name="cmd" value=""/>
|
||||
<input type="button" value="Edit" title="edit mount settings" onclick="do_edit()"/>
|
||||
<input type="button" value="Add" title="add new mount" onclick="do_add()"/>
|
||||
<input type="button" value="Del" title="delete mount" onclick="do_delete()"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{=include-block:Y_neutrino_Blocks.txt;neutrino_form_helpbox=}
|
||||
</body>
|
||||
</html>
|
87
src/nhttpd/web/Y_Settings_mount.yhtm
Normal file
87
src/nhttpd/web/Y_Settings_mount.yhtm
Normal file
@@ -0,0 +1,87 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function form_init()
|
||||
{
|
||||
var check = {=ini-get:/var/tuxbox/config/neutrino.conf;network_nfs_type_{=R1=}=};
|
||||
document.f.type[check].checked = true;
|
||||
|
||||
check = {=ini-get:/var/tuxbox/config/neutrino.conf;network_nfs_automount_{=R1=}=};
|
||||
document.f.automount[check].checked = true;
|
||||
}
|
||||
function do_submit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.submit();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body onLoad="form_init()">
|
||||
{=var-set:wait_text=Save.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head">
|
||||
<div class="work_box_head_h2">{=var-set:help_url=Neutrino:yWeb:Tools#Mounts=}{=var-set:menu=Mount {=R1=}=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="f" action="/y/cgi">
|
||||
<input type="hidden" name="nr" value="{=R1=}"/>
|
||||
<table border="0" class="y_form_table">
|
||||
<tr>
|
||||
<td>Typ</td>
|
||||
<td>
|
||||
<input type="radio" name="type" value="0"/>NFS
|
||||
<input type="radio" name="type" value="1"/>CIFS
|
||||
<input type="radio" name="type" value="2"/>FTPFS
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IP</td>
|
||||
<td><input type="text" name="ip" size="20" value="{=ini-get:/var/tuxbox/config/neutrino.conf;network_nfs_ip_{=R1=}=}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Directory</td>
|
||||
<td><input type="text" name="dir" size="30" value="{=ini-get:/var/tuxbox/config/neutrino.conf;network_nfs_dir_{=R1=}=}" title="remote directory"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Local Directory</td>
|
||||
<td><input type="text" name="localdir" size="30" value="{=ini-get:/var/tuxbox/config/neutrino.conf;network_nfs_local_dir_{=R1=}=}" title="local directory to by mounted"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MAC</td>
|
||||
<td><input type="text" name="mac" size="30" value="{=ini-get:/var/tuxbox/config/neutrino.conf;network_nfs_mac_{=R1=}=}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Option 1</td>
|
||||
<td><input type="text" name="opt1" size="30" value="{=ini-get:/var/tuxbox/config/neutrino.conf;network_nfs_mount_options1_{=R1=}=}" title="mount options 1"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Option 2</td>
|
||||
<td><input type="text" name="opt2" size="30" value="{=ini-get:/var/tuxbox/config/neutrino.conf;network_nfs_mount_options2_{=R1=}=}" title="mount options 2"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Automount</td>
|
||||
<td>
|
||||
<INPUT type="radio" name="automount" value="0" title="off"/>Off
|
||||
<INPUT type="radio" name="automount" value="1" title="on"/>On
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Username</td>
|
||||
<td><input type="text" name="username" size="30" value="{=ini-get:/var/tuxbox/config/neutrino.conf;network_nfs_username_{=R1=}=}" title="username"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Passwort</td>
|
||||
<td><input type="password" name="password" size="30" value="{=ini-get:/var/tuxbox/config/neutrino.conf;network_nfs_password_{=R1=}=}" title="password"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
<input type="hidden" name="tmpl" value="Y_Settings_mount_liste.yhtm"/>
|
||||
<input type="hidden" name="execute" value="func:mount-set-values"/>
|
||||
<input type="button" value="Save ..." title="submit and save values" onClick="do_submit()"/>
|
||||
<input type="button" value="Cancel" title="cancel" name="abort" onClick='window.document.location.href="/Y_Settings_mount_liste.yhtm"'/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
45
src/nhttpd/web/Y_Settings_mount_liste.yhtm
Normal file
45
src/nhttpd/web/Y_Settings_mount_liste.yhtm
Normal file
@@ -0,0 +1,45 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_mount()
|
||||
{
|
||||
show_waitbox(true);
|
||||
var nr = 0;
|
||||
for(i=0; i<8;i++)
|
||||
{
|
||||
if(document.f.R1[i].checked == true)
|
||||
nr = i;
|
||||
}
|
||||
document.f.execute.value = "script:Y_Tools domount "+nr;
|
||||
document.f.tmpl.value = "Y_Settings_umount_liste.yhtm";
|
||||
document.f.submit();
|
||||
}
|
||||
function do_edit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.submit();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head">
|
||||
<div class="work_box_head_h2">{=var-set:help_url=Neutrino:yWeb:Tools#Mounts=}{=var-set:menu=Mount=}{=include-block:Y_Blocks.txt;work_menu=}</div>
|
||||
</div>
|
||||
<div class="work_box_body">
|
||||
<form action="/y/cgi" name="f" id="f">
|
||||
{=func:mount-get-list=}
|
||||
<input type="hidden" name="tmpl" value="Y_Settings_mount.yhtm"/>
|
||||
<input type="hidden" name="execute" value=""/>
|
||||
<input type="button" value="Edit ..." title="edit mount settings" onclick="do_edit()"/>
|
||||
<input type="button" value="Mount" title="mount selected directory" onclick="do_mount()"/>
|
||||
<input type="button" value="Unmount list" title="view unmount list" onclick='window.document.location.href="/Y_Settings_umount_liste.yhtm"'/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{=include-block:Y_neutrino_Blocks.txt;neutrino_form_helpbox=}
|
||||
</body>
|
||||
</html>
|
2
src/nhttpd/web/Y_Settings_neutrino_forms.yhtm
Normal file
2
src/nhttpd/web/Y_Settings_neutrino_forms.yhtm
Normal file
@@ -0,0 +1,2 @@
|
||||
{=var-set:neutrino={=form=}=}
|
||||
{=include-block:Y_neutrino_Blocks.txt;neutrino_form=}
|
116
src/nhttpd/web/Y_Settings_nhttpd.yhtm
Normal file
116
src/nhttpd/web/Y_Settings_nhttpd.yhtm
Normal file
@@ -0,0 +1,116 @@
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function form_init()
|
||||
{
|
||||
var val = "{=ini-get:/var/tuxbox/config/nhttpd.conf;mod_auth.authenticate;false=}";
|
||||
if(val == "true")
|
||||
document.f.authenticate[1].checked = true
|
||||
else
|
||||
document.f.authenticate[0].checked = true;
|
||||
var val = "{=ini-get:/var/tuxbox/config/nhttpd.conf;webserver.threading;false=}";
|
||||
if(val == "true")
|
||||
document.f.threading[1].checked = true
|
||||
else
|
||||
document.f.threading[0].checked = true;
|
||||
}
|
||||
function do_submit()
|
||||
{
|
||||
if(document.f.authpassword.value.length < 5)
|
||||
alert("Passwort muss mind. 4 Zeichen haben");
|
||||
else
|
||||
if(document.f.port.value == "")
|
||||
alert("Port muss angegeben werden");
|
||||
else
|
||||
{
|
||||
show_waitbox(true);
|
||||
yhttpd_cache_clear("yPConf");
|
||||
document.f.submit();
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body onload="form_init()">
|
||||
{=var-set:wait_text=Save.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Settings#WebServer=}{=var-set:menu=WebServer (nhttpd)=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="f" action="/y/cgi">
|
||||
<table border="0">
|
||||
<tr><td colspan="2" class="y_form_header">Authentification</td></tr>
|
||||
<tr>
|
||||
<td>User</td>
|
||||
<td><input type="text" name="authuser" size="20" value="{=ini-get:/var/tuxbox/config/nhttpd.conf;mod_auth.username;root~open=}" title="username"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Passwort</td>
|
||||
<td><input type="password" name="authpassword" size="20" value="{=ini-get:/var/tuxbox/config/nhttpd.conf;mod_auth.password;dbox2~cache=}" title="password"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Client ohne Authentification</td>
|
||||
<td><input type="text" name="noauthclient" size="20" value="{=ini-get:/var/tuxbox/config/nhttpd.conf;mod_auth.no_auth_client~cache=}" title="Client with no authentication check. Enter IP."/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Authentification</td>
|
||||
<td>
|
||||
<input type="radio" name="authenticate" value="false" title="authentication: off"/>OFF
|
||||
<input type="radio" name="authenticate" value="true" title="authentication: on"/>ON
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2" class="y_form_header">General</td></tr>
|
||||
<tr>
|
||||
<td>Port</td>
|
||||
<td><input type="text" name="port" size="20" value="{=ini-get:/var/tuxbox/config/nhttpd.conf;WebsiteMain.port;80~cache=}" title="port"/>
|
||||
<br/>Changed port will only be valid after a restart.
|
||||
</td>
|
||||
</tr>
|
||||
<!--
|
||||
<td>Threading</td>
|
||||
<td>
|
||||
<input type="radio" name="threading" value="false" title="threading: off"/>Off;
|
||||
<input type="radio" name="threading" value="true" title="threading: on"/>On
|
||||
<br/>Changed will be valid after a restart.
|
||||
</td>
|
||||
-->
|
||||
<tr>
|
||||
<td>Hosted Web (Mount)</td>
|
||||
<td><input type="text" name="hosteddocumentroot" size="60" value="{=ini-get:/var/tuxbox/config/nhttpd.conf;Tuxbox.HostedDocumentRoot~cache=}" title="Root of hosted Web. Enter mount directory."/></td>
|
||||
</tr>
|
||||
<tr><td colspan="2" class="y_form_header">Logos & Extras</td></tr>
|
||||
<tr>
|
||||
<td>Directory ("web"=nur URL)</td>
|
||||
<td><input type="text" name="ExtrasDocRoot" size="60" value="{=ini-get:/var/tuxbox/config/nhttpd.conf;ExtrasDocRoot~cache=}" title="Enter mount directory (/mnt/hosted/extras or web)."/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>URL</td>
|
||||
<td><input type="text" name="ExtrasDocURL" size="60" value="{=ini-get:/var/tuxbox/config/nhttpd.conf;ExtrasDocURL~cache=}" title="URL Root of hosted Extra Web. Enter URL (/hosted/extras)."/></td>
|
||||
</tr>
|
||||
<tr><td colspan="2" class="y_form_header">Server</td></tr>
|
||||
<tr>
|
||||
<td>IPs Not keep-alive<br/>(like JtG, comma seperated) </td>
|
||||
<td><input type="text" name="no_keep_alive_ips" size="30" maxsize="254" value="{=ini-get:/var/tuxbox/config/nhttpd.conf;server.no_keep-alive_ips;~cache=}" title="IPs not to HTTP1.1 keep alive like JtG. Comma seperated."/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cache</td>
|
||||
<td><a href="/y/cache-info" target="_blank"><u>Cache info</u> </a><input type="button" name="clearcache" value="clear cache" title="clear cache" onclick="javascript:yhttpd_cache_clear('');"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Server Configuration</td>
|
||||
<td><a href="/y/server-config" target="_blank"><u>Server Config</u></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
<input type="hidden" name="tmpl" value="Y_Settings_nhttpd.yhtm"/>
|
||||
<input type="hidden" name="execute" value="include-block:Y_Blocks.txt;nhttpd_save_settings;nix"/>
|
||||
<input type="button" value="Save ..." title="submit and save values" onclick="do_submit()"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
61
src/nhttpd/web/Y_Settings_ucodes.yhtm
Normal file
61
src/nhttpd/web/Y_Settings_ucodes.yhtm
Normal file
@@ -0,0 +1,61 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_submit()
|
||||
{
|
||||
document.f.su.disabled=true;
|
||||
if (document.f.R1[0].checked == true) {
|
||||
_url="/control/exec?Y_Tools&ucodes_upload&cam-alpha.bin";
|
||||
} else if (document.f.R1[1].checked == true) {
|
||||
_url="/control/exec?Y_Tools&ucodes_upload&avia500.ux";
|
||||
} else if (document.f.R1[2].checked == true) {
|
||||
_url="/control/exec?Y_Tools&ucodes_upload&avia600.ux";
|
||||
} else if (document.f.R1[3].checked == true) {
|
||||
_url="/control/exec?Y_Tools&ucodes_upload&ucode.bin";
|
||||
} else {
|
||||
alert("Please make a choice");
|
||||
}
|
||||
document.f.action=_url;
|
||||
document.f.submit();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Settings#ucodes=}{=var-set:menu=Ucodes=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<table border="0" cellpadding="5">
|
||||
<tr><td class="y_form_header">Upload</td></tr>
|
||||
<tr>
|
||||
<td>
|
||||
<form name="f" method="post" enctype="multipart/form-data" action="/control/exec?Y_Tools&test_upload">
|
||||
<p>
|
||||
<input type="radio" name="R1" checked="checked" value="cam-alpha.bin"/>camalpha.bin<br/>
|
||||
<input type="radio" name="R1" value="avia500.ux"/>avia500.ux<br/>
|
||||
<input type="radio" name="R1" value="avia600.ux"/>avia600.ux<br/>
|
||||
<input type="radio" name="R1" value="ucode.bin"/>ucode.bin<br/>
|
||||
|
||||
<input type="file" name="F1" size="20"/>
|
||||
<input type="button" id="su" value="Absenden" title="upload selected file" name="B1" onclick="do_submit()"/>
|
||||
</p>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td class="y_form_header">Download</td></tr>
|
||||
<tr>
|
||||
<td>
|
||||
<ul>
|
||||
<li><a type="application/octet-stream" href="/var/tuxbox/ucodes/avia500.ux"><u>avia500.ux</u></a></li>
|
||||
<li><a type="application/octet-stream" href="/var/tuxbox/ucodes/avia600.ux"><u>avia600.ux</u></a></li>
|
||||
<li><a type="application/octet-stream" href="/var/tuxbox/ucodes/cam-alpha.bin"><u>cam-alpha.bin</u></a></li>
|
||||
<li><a type="application/octet-stream" href="/var/tuxbox/ucodes/ucode.bin"><u>ucode.bin</u></a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
38
src/nhttpd/web/Y_Settings_umount_liste.yhtm
Normal file
38
src/nhttpd/web/Y_Settings_umount_liste.yhtm
Normal file
@@ -0,0 +1,38 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_unmount()
|
||||
{
|
||||
var local_dir="";
|
||||
for(i=0; i<document.f.length;i++)
|
||||
if(document.f.elements[i].name == "R1")
|
||||
if(document.f.elements[i].checked == true)
|
||||
local_dir = document.f.elements[i].value;
|
||||
if(local_dir != "")
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.execute.value = "script:Y_Tools dounmount "+local_dir;
|
||||
document.f.submit();
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head">
|
||||
<div class="work_box_head_h2">{=var-set:help_url=Neutrino:yWeb:Tools#Mounts=}{=var-set:menu=UnMount=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form action="/y/cgi" name="f" id="f">
|
||||
{=func:umount_get_list=}
|
||||
<input type="hidden" name="tmpl" value="/Y_Settings_umount_liste.yhtm"/>
|
||||
<input type="button" value="Unmount" title="unmount selected directory" name="B1" onClick='do_unmount()'/>
|
||||
<input type="button" value="Mount list" title="view mount list" name="B1" onClick='window.document.location.href="/Y_Settings_mount_liste.yhtm"'/>
|
||||
<input type="hidden" name="execute" value=""/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
53
src/nhttpd/web/Y_Settings_wol.yhtm
Normal file
53
src/nhttpd/web/Y_Settings_wol.yhtm
Normal file
@@ -0,0 +1,53 @@
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var g_wol = new Array(
|
||||
"{=ini-get:/var/tuxbox/config/Y-Web.conf;wol_mac_1=}",
|
||||
"{=ini-get:/var/tuxbox/config/Y-Web.conf;wol_mac_2=}",
|
||||
"{=ini-get:/var/tuxbox/config/Y-Web.conf;wol_mac_3=}");
|
||||
function do_wol(_nr)
|
||||
{
|
||||
var nhttpd_version = loadSyncURL("/control/exec?Y_Tools&wol&"+g_wol[_nr-1]);
|
||||
}
|
||||
function init_wol()
|
||||
{
|
||||
for(i=1;i<=3;i++)
|
||||
document.getElementById("wol"+i).disabled = (g_wol[i-1] == "");
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head">
|
||||
<div class="work_box_head_h2">{=var-set:help_url=Neutrino:yWeb:Tools#Wake_on_LAN=}{=var-set:menu=Wake on LAN=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="f" action="/y/cgi">
|
||||
<table border="0" class="y_form_table">
|
||||
<tr>
|
||||
<td>Wake on Lan MAC 1 ({=ini-get:/var/tuxbox/config/Y-Web.conf;wol_mac_1=})</td>
|
||||
<td><input id="wol1" type="button" name="wol_mac_1" value="wake up" title="wake up that MAC" onclick='do_wol(1)'/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wake on Lan MAC 2 ({=ini-get:/var/tuxbox/config/Y-Web.conf;wol_mac_2=})</td>
|
||||
<td><input id="wol2" type="button" name="wol_mac_2" value="wake up" title="wake up that MAC" onclick='do_wol(2)'/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wake on Lan MAC 3 ({=ini-get:/var/tuxbox/config/Y-Web.conf;wol_mac_3=})</td>
|
||||
<td><input id="wol3" type="button" name="wol_mac_3" value="wake up" title="wake up that MAC" onclick='do_wol(3)'/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<!--<a href="Y_Settings_yWeb.yhtm" title="WOL Settings">Settings</a>-->
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
init_wol();
|
||||
//]]>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
78
src/nhttpd/web/Y_Settings_yWeb.yhtm
Normal file
78
src/nhttpd/web/Y_Settings_yWeb.yhtm
Normal file
@@ -0,0 +1,78 @@
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_submit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
yhttpd_cache_clear("");
|
||||
document.f.submit();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=Values are saved (Save).=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Settings#yWeb=}{=var-set:menu=yWeb=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="f" action="/y/cgi">
|
||||
<table border="0" class="y_form_table">
|
||||
<tr>
|
||||
<td>Slave Box IP (2. dbox)</td>
|
||||
<td><input type="text" name="slavebox" size="15" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;slavebox=}" title="enter IP (xxx.xxx.xxx.xxx) of slave-box"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Management IP 1</td>
|
||||
<td><input type="text" name="managementIP" size="15" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip=}" title="enter IP (xxx.xxx.xxx.xxx)"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Management IP 2</td>
|
||||
<td><input type="text" name="managementIP2" size="15" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip2=}" title="enter IP (xxx.xxx.xxx.xxx)"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wake on Lan MAC 1</td>
|
||||
<td><input type="text" name="wol_mac_1" size="17" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;wol_mac_1=}" title="enter MAC Adress (xx:xx:xx:xx:xx:xx)"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wake on Lan MAC 2</td>
|
||||
<td><input type="text" name="wol_mac_2" size="17" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;wol_mac_2=}" title="enter MAC Adress (xx:xx:xx:xx:xx:xx)"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wake on Lan MAC 3</td>
|
||||
<td><input type="text" name="wol_mac_3" size="17" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;wol_mac_3=}" title="enter MAC Adress (xx:xx:xx:xx:xx:xx)"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VLC Recording path</td>
|
||||
<td><input type="text" name="vlc_record_path" size="17" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;vlc_record_path=}" title="VLC record path for LiveView direct recording."/></td>
|
||||
</tr>
|
||||
<!--- <tr>
|
||||
<td>VLC Aufnahmetyp</td>
|
||||
<td><input type="text" name="vlc_record_mux_type" size="17" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;vlc_record_mux_type=}" title="VLC record mux type"/></td>
|
||||
</tr>
|
||||
-->
|
||||
<tr>
|
||||
<td>Box-name</td>
|
||||
<td><input type="text" name="yweb_box_name" size="8" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;yweb_box_name=}"
|
||||
title="Box Name in Top-Menue."/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Box-name/colour</td>
|
||||
<td><input type="text" name="yweb_box_color" size="8" value="{=ini-get:/var/tuxbox/config/Y-Web.conf;yweb_box_color=}"
|
||||
title="Box Name color in Top-Menue. e.g. enter 2188e0 without #"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
<input type="hidden" name="tmpl" value="Y_Settings_yWeb.yhtm"/>
|
||||
<input type="hidden" name="execute" value="include-block:Y_Blocks.txt;yWeb_save_settings;nix"/>
|
||||
<input type="button" value="Save ..." title="submit and save values" onclick="do_submit()"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
||||
|
56
src/nhttpd/web/Y_Settings_zapit.yhtm
Normal file
56
src/nhttpd/web/Y_Settings_zapit.yhtm
Normal file
@@ -0,0 +1,56 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_submit()
|
||||
{
|
||||
document.f.su.disabled=true;
|
||||
if (document.f.R1[0].checked == true)
|
||||
_url="/control/exec?Y_Tools&zapit_upload&bouquets.xml";
|
||||
else if (document.f.R1[1].checked == true)
|
||||
_url="/control/exec?Y_Tools&zapit_upload&services.xml";
|
||||
else if (document.f.R1[2].checked == true)
|
||||
_url="/control/exec?Y_Tools&zapit_upload&ubouquets.xml";
|
||||
else
|
||||
alert("Please make a choice");
|
||||
document.f.action=_url;
|
||||
document.f.submit();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Settings#zapit=}{=var-set:menu=zapit=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<table border="0" cellpadding="5">
|
||||
<tr><td class="y_form_header">Upload</td></tr>
|
||||
<tr>
|
||||
<td>
|
||||
<form name="f" method="post" enctype="multipart/form-data" action="">
|
||||
<p>
|
||||
<input type="radio" name="R1" checked="checked" value="bouquets.xml"/>bouquets.xml<br/>
|
||||
<input type="radio" name="R1" value="services.xml"/>services.xml<br/>
|
||||
<input type="radio" name="R1" value="ubouquets.xml"/>ubouquets.xml<br/>
|
||||
|
||||
<input type="file" name="F1" size="20"/>
|
||||
<input type="button" id="su" value="Absenden" name="B1" title="upload selected file" onclick="do_submit()"/>
|
||||
</p>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td class="y_form_header">Download</td></tr>
|
||||
<tr>
|
||||
<td>
|
||||
<ul>
|
||||
<li><a type="application/octet-stream" href="/var/tuxbox/config/zapit/bouquets.xml"><u>bouquets.xml</u></a></li>
|
||||
<li><a type="application/octet-stream" href="/var/tuxbox/config/zapit/services.xml"><u>services.xml</u></a></li>
|
||||
<li><a type="application/octet-stream" href="/var/tuxbox/config/zapit/ubouquets.xml"><u>ubouquets.xml</u></a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
73
src/nhttpd/web/Y_StreamInfo.yhtm
Normal file
73
src/nhttpd/web/Y_StreamInfo.yhtm
Normal file
@@ -0,0 +1,73 @@
|
||||
{=include-block:Y_Blocks.txt;head_no_charset=}
|
||||
</head>
|
||||
<body>
|
||||
<BR>
|
||||
{=func:get_current_stream_info=}
|
||||
<div class="y_head">Streaminfo ({=ServiceName=})</div>
|
||||
<div class="y_work_box">
|
||||
<TABLE cellspacing="2" cellpadding="3" class="tableborder" width="300px">
|
||||
<TR>
|
||||
<TD class="set"><B>Resolution:</B></TD>
|
||||
<TD width="30"> </TD>
|
||||
<TD class="set">{=VideoFormat=}</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD class="set"><B>Relation:</B></TD>
|
||||
<TD> </TD>
|
||||
<TD class="set"> <div align="left">{=AspectRatio=}</div></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD class="set"><B>Bitrate:</B></TD>
|
||||
<TD> </TD>
|
||||
<TD class="set"> <div align="left">{=BitRate=} bit/sec</div></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD class="set"><B>Framerate:</B></TD>
|
||||
<TD> </TD>
|
||||
<TD class="set"> <div align="left">{=FPS=} fps</div></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD class="set"><B>Audiotype:</B></TD>
|
||||
<TD> </TD>
|
||||
<TD class="set"> <div align="left">{=AudioType=}</div></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD class="set"><B>onid:</B></TD>
|
||||
<TD> </TD>
|
||||
<TD class="set"> <div align="left">{=onid=}</div></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD class="set"><B>sid:</B></TD>
|
||||
<TD> </TD>
|
||||
<TD class="set"> <div align="left">{=sid=}</div></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD class="set"><B>tsid:</B></TD>
|
||||
<TD> </TD>
|
||||
<TD class="set"> <div align="left">{=tsid=}</div></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD class="set"><B>frequency:</B></TD>
|
||||
<TD> </TD>
|
||||
<TD class="set"> <div align="left">{=tsfrequency=} ({=polarisation=})</div></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD class="set"><B>vpid:</B></TD>
|
||||
<TD> </TD>
|
||||
<TD class="set"> <div align="left">{=vpid=}</div></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD class="set"><B>apid:</B></TD>
|
||||
<TD> </TD>
|
||||
<TD class="set"> <div align="left">{=apid=}</div></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD class="set"><B>vtxtpid:</B></TD>
|
||||
<TD> </TD>
|
||||
<TD class="set"> <div align="left">{=vtxtpid=}</div></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</div>
|
||||
</BODY>
|
||||
</HTML>
|
166
src/nhttpd/web/Y_Timer_Edit.yhtm
Normal file
166
src/nhttpd/web/Y_Timer_Edit.yhtm
Normal file
@@ -0,0 +1,166 @@
|
||||
{=func:set_timer_form {=typ=} {=tid=}=}
|
||||
{=include-block:Y_Blocks.txt;head_no_charset=}
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function my_show(id) {document.getElementById(id).style.visibility="visible";}
|
||||
function my_hide(id) {document.getElementById(id).style.visibility="hidden";}
|
||||
function focusNMark()
|
||||
{
|
||||
document.f.ad.select();
|
||||
document.f.ad.focus();
|
||||
}
|
||||
function onEventChange()
|
||||
{
|
||||
tType=document.f.type.value;
|
||||
show_obj("StopDateRow",(tType == "5"));
|
||||
show_obj("StandbyRow",(tType == "4"));
|
||||
show_obj("ProgramRow",(tType == "5" || tType=="2" || tType=="3"));
|
||||
show_obj("ApidRow",(tType == "5"));
|
||||
show_obj("MessageRow",(tType == "6"));
|
||||
show_obj("PluginNameRow",(tType == "8"));
|
||||
focusNMark();
|
||||
}
|
||||
function onEventChange2()
|
||||
{
|
||||
tType=document.f.rep.value;
|
||||
show_obj("WeekdaysRow",(tType == "256"));
|
||||
show_obj("repcountRow",!(tType == "0"));
|
||||
}
|
||||
|
||||
function onApidDefChange()
|
||||
{
|
||||
if(document.f.apcf.checked == true)
|
||||
{
|
||||
document.f.apst.checked=false;
|
||||
document.f.apal.checked=false;
|
||||
document.f.apac.checked=false;
|
||||
}
|
||||
}
|
||||
function onApidChange()
|
||||
{
|
||||
if(document.f.apst.checked == true ||
|
||||
document.f.apal.checked == true ||
|
||||
document.f.apac.checked == true)
|
||||
document.f.apcf.checked=false;
|
||||
}
|
||||
function do_submit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.submit();
|
||||
}
|
||||
function init()
|
||||
{
|
||||
onEventChange();
|
||||
onEventChange2();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()">
|
||||
{=var-set:wait_text=Save.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Live#Timer=}{=var-set:menu=Timer=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
|
||||
<form method="get" name="f" action="/fb/timer.dbox2">
|
||||
<input TYPE="hidden" name="action" value="{=typ=}"/>
|
||||
<input name="id" TYPE="hidden" value="{=timerId=}"/>
|
||||
<table border="0">
|
||||
<tr><td colspan="2" class="y_form_header">Timer</td></tr>
|
||||
<tr>
|
||||
<td>Type</td>
|
||||
<td> <select name="type" onchange="onEventChange();">
|
||||
{=timertype=}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2" class="y_form_header">Times</td></tr>
|
||||
<tr>
|
||||
<td>Alarm-Date</td>
|
||||
<td><input type="text" name="ad" value="{=alarm_mday=}" size="2" maxlength="2"/>
|
||||
. <input type="text" name="amo" value="{=alarm_mon=}" size="2" maxlength="2"/>
|
||||
. <input type="text" name="ay" value="{=alarm_year=}" size="4" maxlength="4"/>
|
||||
Time <input type="text" name="ah" value="{=alarm_hour=}" size="2" maxlength="2"/>
|
||||
: <input type="text" name="ami" value="{=alarm_min=}" size="2" maxlength="2"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="StopDateRow">
|
||||
<td>Stop-Datum</td>
|
||||
<td><input type="text" name="sd" value="{=stop_mday=}" size="2" maxlength="2"/>
|
||||
. <input type="text" name="smo" value="{=stop_mon=}" size="2" maxlength="2"/>
|
||||
. <input type="text" name="sy" value="{=stop_year=}" size="4" maxlength="4"/>
|
||||
Time <input type="text" name="sh" value="{=stop_hour=}" size="2" maxlength="2"/>
|
||||
: <input type="text" name="smi" value="{=stop_min=}" size="2" maxlength="2"/>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Repeat</td>
|
||||
<td><select name="rep" onchange="onEventChange2();">
|
||||
{=repeat=}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="repcountRow" style="visibility:hidden;">
|
||||
<td>repeat (0 = indefinitely)</td>
|
||||
<td><input type="text" name="repcount" id="repcount" value="{=timer_repeatCount=}" size="4" maxlength="3"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="WeekdaysRow" style="visibility:hidden;">
|
||||
<td>Weekdays</td>
|
||||
<td><input type="text" name="wd" value="{=weekdays=}" size="7" maxlength="7"/> (Mo-So, X=Timer)
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td colspan="2" class="y_form_header">Values</td></tr>
|
||||
<tr id="ProgramRow" style="visibility:hidden">
|
||||
<td>Program</td>
|
||||
<td><select name="channel_id">
|
||||
{=program_row=}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="ApidRow" style="visibility:hidden">
|
||||
<td>APIDs:</td>
|
||||
<td><input type="checkbox" name="apcf" onchange="onApidDefChange();" {=if-equal:{=TIMERD_APIDS_CONF=}~y~checked="checked"=}/>Default
|
||||
<input type="checkbox" name="apst" onchange="onApidChange();" {=if-equal:{=TIMERD_APIDS_STD=}~y~checked="checked"=}/>Standard
|
||||
<input type="checkbox" name="apal" onchange="onApidChange();" {=if-equal:{=TIMERD_APIDS_ALT=}~y~checked="checked"=}/>Alternative
|
||||
<input type="checkbox" name="apac" onchange="onApidChange();" {=if-equal:{=TIMERD_APIDS_AC3=}~y~checked="checked"=}/>AC3
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="StandbyRow" style="visibility:hidden">
|
||||
<td>Standby</td>
|
||||
<td><input type="radio" name="sbon" value="1" {=if-equal:{=standby=}~1~~checked="checked"=}/>On
|
||||
<input type="radio" name="sbon" value="0" {=if-equal:{=standby=}~0~~checked="checked"=}/>Off
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="MessageRow" style="visibility:hidden">
|
||||
<td>New</td>
|
||||
<td><input type="text" name="msg" value="{=message=}" size="20" maxlength="30"/> ('/'=NL)
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="PluginNameRow" style="visibility:hidden">
|
||||
<td>Plugin</td>
|
||||
<td><input type="text" name="PluginName" value="{=pluginname=}" size="20" maxlength="30"/>
|
||||
</td>
|
||||
</tr>
|
||||
{=if-empty:{=timer_recordingDir=}~~
|
||||
<tr>
|
||||
<td>List:</td>
|
||||
<td><input type="text" name="rec_dir" value="{=timer_recordingDir=}" size="20" maxlength="{=RECORD_DIR_MAXLEN-1=}"/>
|
||||
</td>
|
||||
</tr>
|
||||
=}
|
||||
</table>
|
||||
<br/>
|
||||
|
||||
<input type="button" value="save" title="submit and save values" onclick="do_submit()"/>
|
||||
<input type="button" value="abort" onclick='window.document.location.href="/Y_Timer_List.yhtm"'/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
55
src/nhttpd/web/Y_Timer_List.yhtm
Normal file
55
src/nhttpd/web/Y_Timer_List.yhtm
Normal file
@@ -0,0 +1,55 @@
|
||||
{=include-block:Y_Blocks.txt;head_no_charset=}
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Live_Timer#Timer=}{=var-set:menu=Timer=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<table class="timer" border="0">
|
||||
<tr>
|
||||
<td class="ctimer" align="center"><b>Alarm time</b></td>
|
||||
<td class="ctimer" align="center"><b>Stop time</b></td>
|
||||
<td class="ctimer" align="center"><b>Repeat</b></td>
|
||||
<td class="ctimer" align="center"><b>Repeats</b></td>
|
||||
<td class="ctimer" align="center"><b>Type</b></td>
|
||||
<td class="ctimer" align="center"><b>Description</b></td>
|
||||
<td class="ctimer"> </td>
|
||||
<td class="ctimer"> </td>
|
||||
</tr>
|
||||
{=var-set:row=
|
||||
<tr class="%ctimer">
|
||||
<td>%s</td>
|
||||
<td>%s</td>
|
||||
<td>%s</td>
|
||||
<td>%s</td>
|
||||
<td>%s</td>
|
||||
<td>%s<br/>
|
||||
<td>
|
||||
<a href="/fb/timer.dbox2?action=remove&id=%d">
|
||||
<img src="/images/remove.png" alt="del Timer"/></a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="/Y_Timer_Edit.yhtm?typ=modify&tid=%d">
|
||||
<img src="/images/modify.png" alt="edit Timer"/></a>
|
||||
</td>
|
||||
</tr>
|
||||
=}
|
||||
{=func:get_timer_list {=var-get:row=}=}
|
||||
|
||||
<tr>
|
||||
<td class="atimer" colspan="6"><img src="/images/blank.gif" width="1" height="1"/></td>
|
||||
<td class="atimer" align="center">
|
||||
<a href="javascript:location.reload()">
|
||||
<img src="/images/reload.gif" alt="Update"/></a>
|
||||
</td>
|
||||
<td class="atimer" align="center">
|
||||
<a href="/Y_Timer_Edit.yhtm?typ=new">
|
||||
<img src="/images/new.gif" alt="new Timer"/></a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
24
src/nhttpd/web/Y_Timer_Menue.yhtm
Normal file
24
src/nhttpd/web/Y_Timer_Menue.yhtm
Normal file
@@ -0,0 +1,24 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
</head>
|
||||
{=var-set:management={=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip;{=func:get_request_data client_addr=}=}~1~=}{=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip2=}~1~=}=}
|
||||
<body>
|
||||
<div class="y_menu_sec_box">
|
||||
<div class="y_menu_sec_box_head"><h2>Timer</h2></div>
|
||||
<div class="y_menu_sec_box_body">
|
||||
<div class="y_menu_sec">
|
||||
<ul id="menu_sec">
|
||||
<li><a target="work" title="organize timer" href="/fb/timer.dbox2">Timer</a></li>
|
||||
<li><a target="work" title="sync timer with web tv planer" href="Y_Tools_Timer_Sync.yhtm">Sync Timer</a></li>
|
||||
<li><a target="work" title="recorder" href="Y_Blank.yhtm">Recorder</a></li>
|
||||
{=if-empty:{=var-get:management=}~
|
||||
<li class="disabled" title="SyncTimer Settings (restricted by ManagementIP)">Timer Settings</a></li>
|
||||
~
|
||||
<li><a title="SyncTimer Settings" target="work" href="Y_Settings_Timer.yhtm">Timer Settings</a></li>
|
||||
=}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
36
src/nhttpd/web/Y_Tools_Bootlogo.yhtm
Normal file
36
src/nhttpd/web/Y_Tools_Bootlogo.yhtm
Normal file
@@ -0,0 +1,36 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_submit()
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.su.disabled=true;
|
||||
if(document.f.logotype[0].checked == true)
|
||||
document.f.action="/control/exec?Y_Tools&bootlogo_upload";
|
||||
else
|
||||
document.f.action="/control/exec?Y_Tools&bootlogo_lcd_upload";
|
||||
document.f.submit();
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=Logo wird hochgeladen (Upload).=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Settings#Boot_Logo=}{=var-set:menu=Bootlogo / LCD=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="f" method="post" enctype="multipart/form-data" action="/control/exec?Y_Tools&bootlogo_upload">
|
||||
<p>
|
||||
<font size="2" color="Red">Achtung<br/>Das Boot-Logo muss schon im Zielformat vorliegen!</font><br/>
|
||||
<input type="radio" checked="checked" name="logotype" value="bootlogo_upload"/>Boot Logo<br/>
|
||||
<input type="radio" name="logotype" value="bootlogo_lcd_upload"/>Boot LCD Logo<br/>
|
||||
<input type="file" name="F1" size="20"/><br/>
|
||||
<input type="button" name="su" value="hochladen" title="upload" onclick="do_submit()"/>
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
77
src/nhttpd/web/Y_Tools_Boxcontrol.yhtm
Normal file
77
src/nhttpd/web/Y_Tools_Boxcontrol.yhtm
Normal file
@@ -0,0 +1,77 @@
|
||||
{=var-set:cancache=yPyes=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function goConfirmUrl(_meld, _url)
|
||||
{
|
||||
if (confirm(_meld)==true) goUrl(_url);
|
||||
}
|
||||
function goUrl(_url)
|
||||
{
|
||||
out.location.href = _url;
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:BoxControl#Control=}{=var-set:menu=Control=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form action="">
|
||||
<table class="y_invisible_table" cellpadding="5">
|
||||
<tr><td class="y_form_header">Coolstream HD1</td><td class="y_form_header">Standby Mode</td></tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="button" value="Restart" title="reboot" onclick='goConfirmUrl("Do you really want to reboot the dbox?","/control/reboot");'/>
|
||||
<input type="button" value="Turn Off" title="shutdown" onclick='goConfirmUrl("Do you really want to turn the Dbox off?","/control/shutdown");'/>
|
||||
</td>
|
||||
<td>
|
||||
<input type="button" value="On" onclick='goUrl("/control/standby?on");'/>
|
||||
<input type="button" value="Off" onclick='goUrl("/control/standby?off");'/>
|
||||
<input type="button" value="Status" onclick='goUrl("/control/exec?Y_Tools&standby_status");'/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td class="y_form_header">Playback</td><td class="y_form_header">Recording</td></tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="button" value="On" onclick='goUrl("/control/zapto?startplayback");'/>
|
||||
<input type="button" value="Off" onclick='goUrl("/control/zapto?stopplayback");'/>
|
||||
<input type="button" value="Status" onclick='goUrl("/control/zapto?statusplayback");'/>
|
||||
</td>
|
||||
<td>
|
||||
<input type="button" value="On" onclick='goUrl("/control/setmode?record=start");'/>
|
||||
<input type="button" value="Off" onclick='goUrl("/control/setmode?record=stop");'/>
|
||||
<input type="button" value="Status" onclick='goUrl("/control/setmode?status");'/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td class="y_form_header">Remote Control</td><td class="y_form_header">Live Lock</td></tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="button" value="On" onclick='goUrl("/control/rc?unlock");'/>
|
||||
<input type="button" value="Off" onclick='goUrl("/control/rc?lock");'/>
|
||||
<input type="button" value="LCD Unlock" onclick='goUrl("/control/exec?Y_Live&live_LCD_off");'/>
|
||||
</td>
|
||||
<td>
|
||||
<input type="button" value="Lock" onclick='live_lock();'/>
|
||||
<input type="button" value="Unlock" onclick='live_unlock();'/>
|
||||
</td>
|
||||
</tr>
|
||||
<!--dbox2 only <tr><td class="y_form_header">Optical Output</td><td class="y_form_header"> </td></tr>
|
||||
<tr> dbox2 only-->
|
||||
<!--dbox2 only <td>
|
||||
<input type="button" value="On" onclick='goUrl("/control/system?setAViAExtIec=on");'/>
|
||||
<input type="button" value="OFF" onclick='goUrl("/control/system?setAViAExtIec=off");'/>
|
||||
<input type="button" value="Status" onclick='goUrl("/control/system?getAViAExtIec");'/>
|
||||
</td> dbox2 only-->
|
||||
<td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<iframe name="out" id="out" width="100%" height="200" align="left" frameborder="0">Your Browser does not support IFrames.</iframe>
|
||||
|
||||
</body>
|
||||
</html>
|
148
src/nhttpd/web/Y_Tools_Check_Install.yhtm
Normal file
148
src/nhttpd/web/Y_Tools_Check_Install.yhtm
Normal file
@@ -0,0 +1,148 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
/*sLog*/
|
||||
var sLog_body;
|
||||
var sLog_line_number;
|
||||
function sLog_init()
|
||||
{
|
||||
sLog_line_number = 0;
|
||||
sLog_body=document.getElementById("slog_list");
|
||||
}
|
||||
function sLog_clear()
|
||||
{
|
||||
while(sLog_body.childNodes.length > 0)
|
||||
{
|
||||
aChild=sLog_body.firstChild;
|
||||
sLog_body.removeChild(aChild);
|
||||
}
|
||||
sLog_line_number = 0;
|
||||
}
|
||||
function sLog_addRow(_body, state, action_text, state_text)
|
||||
{
|
||||
sLog_line_number++;
|
||||
var mycurrent_row = y_add_row_to_table(_body, ((sLog_line_number % 2) ==0)?"a":"b" );
|
||||
var __img ="/images/ok.gif";
|
||||
switch (state)
|
||||
{
|
||||
case "green": __img = "/images/check_green.gif"; break;
|
||||
case "yellow": __img = "/images/excl_yellow.gif"; break;
|
||||
case "ok": __img = "/images/ok.gif"; break;
|
||||
case "red": __img = "/images/x_red.gif"; break;
|
||||
}
|
||||
y_add_html_cell_to_row(mycurrent_row, "icon", "<img src='"+__img+"'>");
|
||||
y_add_html_cell_to_row(mycurrent_row, "action_text", action_text);
|
||||
y_add_text_cell_to_row(mycurrent_row, "state_text", state_text);
|
||||
}
|
||||
/*check*/
|
||||
function wiki_url(_page)
|
||||
{
|
||||
return "<a href=\"http://wiki.tuxbox.org/"+_page+"\" target='_blank'><b>[Help]<\/b><\/a>"
|
||||
}
|
||||
function do_check()
|
||||
{
|
||||
sLog_init();
|
||||
sLog_clear();
|
||||
sLog_addRow(sLog_body, "ok", "yWeb Version is: {=ini-get:Y_Version.txt;version=} {=ini-get:Y_Version.txt;date=}", "ok");
|
||||
|
||||
/*webserver*/
|
||||
var needed_nhttpd_version = "3.1.2";
|
||||
var nhttpd_version = loadSyncURL("/control/info?nhttpd_version");
|
||||
if(nhttpd_version.search(/error/)!=-1)
|
||||
nhttpd_version = "0.0.0-unknown";
|
||||
if(nhttpd_version < needed_nhttpd_version)
|
||||
sLog_addRow(sLog_body, "red", "WebServer: version: "+nhttpd_version+" version needed: "+needed_nhttpd_version+
|
||||
" <a href='http://www.yjogol.de/yFAQ.htm#diy' target='_blank'><b>[Help]<\/b><\/a>", "fail");
|
||||
else
|
||||
sLog_addRow(sLog_body, "green", "WebServer: version is "+nhttpd_version, "ok");
|
||||
|
||||
{=if-equal:{=ini-get:/var/tuxbox/config/nhttpd.conf;mod_auth.authenticate;false=}~false~~
|
||||
sLog_addRow(sLog_body, "yellow", "WebServer: Authentication is on. "+wiki_url("Neutrino:yWeb:Settings#Webserver"), "notice");
|
||||
=}
|
||||
{=if-equal:{=ini-get:/var/tuxbox/config/nhttpd.conf;WebsiteMain.port;80=}~80~~
|
||||
sLog_addRow(sLog_body, "yellow",
|
||||
"WebServer: not set to Standard-Port. Actual: {=ini-get:/var/tuxbox/config/nhttpd.conf;WebsiteMain.port;80=} "+wiki_url("Neutrino:yWeb#Webserver"), "notice");
|
||||
=}
|
||||
/*settings*/
|
||||
{=if-empty:{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip=}~~
|
||||
sLog_addRow(sLog_body, "yellow",
|
||||
"Settings: Management IP(1) is set to {=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip=} ! Your IP is {=func:get_request_data client_addr=}. "
|
||||
+wiki_url("Neutrino:yWeb:Settings#yWeb"), "notice");
|
||||
=}
|
||||
{=if-empty:{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip2=}~~
|
||||
sLog_addRow(sLog_body, "yellow",
|
||||
"Settings: Management IP(2) is set to {=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip2=} ! Your IP is {=func:get_request_data client_addr=}. "
|
||||
+wiki_url("Neutrino:yWeb#yWeb"), "notice");
|
||||
=}
|
||||
|
||||
/*programs*/
|
||||
{=var-set:fbshot={=if-file-exists:/bin/fbshot~/bin/fbshot~{=if-file-exists:/var/bin/fbshot~/var/bin/fbshot~false=}=}=}
|
||||
{=if-equal:{=var-get:fbshot=}~false~
|
||||
sLog_addRow(sLog_body, "red", "Programs: fbshot is not installed. OSD Screenshot is disabled. "+wiki_url("Neutrino:yWeb:BoxControl#OSD_Screenshot"), "failed");
|
||||
~
|
||||
sLog_addRow(sLog_body, "green", "Programs: fbshot is installed at: {=var-get:fbshot=}. OSD Screenshot is enabled.", "ok");
|
||||
=}
|
||||
{=var-set:dboxshot={=if-file-exists:/bin/dboxshot~/bin/dboxshot~{=if-file-exists:/var/bin/dboxshot~/var/bin/dboxshot~false=}=}=}
|
||||
{=if-equal:{=var-get:dboxshot=}~false~
|
||||
sLog_addRow(sLog_body, "red", "Programs: dboxshot is not installed. Remote & OSD is disabled. <a href='http://www.yjogol.de/yFAQ.htm#diy' target='_blank'><b>[Download]<\/b><\/a>", "failed");
|
||||
~
|
||||
sLog_addRow(sLog_body, "green", "Programs: dboxshot is installed at: {=var-get:dboxshot=}. Remote & OSD is enabled.", "ok");
|
||||
=}
|
||||
{=var-set:fcp={=if-file-exists:/sbin/fcp~/sbin/fcp~{=if-file-exists:/var/bin/fcp~/var/bin/fcp~{=if-file-exists:/bin/fcp~/bin/fcp~false=}=}=}=}
|
||||
{=if-equal:{=var-get:fcp=}~false~
|
||||
sLog_addRow(sLog_body, "red", "Programs: fcp is not installed. Image flashing is disabled. "+wiki_url("Neutrino:yWeb:Tools#Image"), "failed");
|
||||
~
|
||||
sLog_addRow(sLog_body, "green", "Programs: fcp is installed at: {=var-get:fcp=}. Image flashing is enabled.", "ok");
|
||||
=}
|
||||
{=var-set:etherwake={=if-file-exists:/bin/etherwake~/bin/etherwake~{=if-file-exists:/var/bin/etherwake~/var/bin/etherwake~false=}=}=}
|
||||
{=if-equal:{=var-get:etherwake=}~false~
|
||||
sLog_addRow(sLog_body, "red", "Programs: etherwake is not installed. Wake on LAN is disabled. "+wiki_url("Neutrino:yWeb:Tools#Wake_on_LAN"), "failed");
|
||||
~
|
||||
sLog_addRow(sLog_body, "green", "Programs: etherwake is installed at: {=var-get:etherwake=}. Wake on LAN is enabled.", "ok");
|
||||
=}
|
||||
{=var-set:automount={=if-file-exists:/sbin/automount~/sbin/automount~{=if-file-exists:/var/bin/automount~/var/bin/automount~false=}=}=}
|
||||
{=if-equal:{=var-get:automount=}~false~
|
||||
sLog_addRow(sLog_body, "red", "Programs: automount is not installed. AutoMount is disabled. "+wiki_url("Neutrino:yWeb:Tools#AutoMount"), "failed");
|
||||
~
|
||||
sLog_addRow(sLog_body, "green", "Programs: automount is installed at: {=var-get:automount=}. AutoMount is enabled.", "ok");
|
||||
=}
|
||||
{=var-set:udpstreamts={=if-file-exists:/sbin/udpstreamts~/sbin/udpstreamts~{=if-file-exists:/var/bin/udpstreamts~/var/bin/udpstreamts~false=}=}=}
|
||||
{=if-equal:{=var-get:udpstreamts=}~false~
|
||||
sLog_addRow(sLog_body, "red", "Programs: udpstreamts is not installed. udp-streaming is disabled. "+wiki_url("Neutrino:yWeb:Live:Timer#UDP_Streaming"), "failed");
|
||||
~
|
||||
sLog_addRow(sLog_body, "green", "Programs: udpstreamts is installed at: {=var-get:udpstreamts=}. udp-streaming is enabled.", "ok");
|
||||
=}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head">
|
||||
<div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Tools#Check_Install=}{=var-set:menu=Check Install=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<br />
|
||||
<form method="post" name="f" action="">
|
||||
<input type="button" value="check" title="check" name="check" onclick="do_check()"/>
|
||||
</form>
|
||||
|
||||
<form method="post" name="log" action="">
|
||||
<b>Check Results</b><br/>
|
||||
<table class="y_work_table" cellpadding="4">
|
||||
<thead align="left">
|
||||
<tr>
|
||||
<th> </th><th>Aktion</th><th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="slog_list">
|
||||
<tr><td></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
91
src/nhttpd/web/Y_Tools_Cmd.yhtm
Normal file
91
src/nhttpd/web/Y_Tools_Cmd.yhtm
Normal file
@@ -0,0 +1,91 @@
|
||||
{=var-set:cancache=yPConf=}
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_submit()
|
||||
{
|
||||
if(document.f.cmd.value != "")
|
||||
{
|
||||
var app="false";
|
||||
if(document.f.appendx.checked == true)
|
||||
app="true";
|
||||
_url="/control/exec?Y_Tools&cmd&"+document.f.pwd.value +"&"+app+"&'"+ document.f.cmd.value +"'";
|
||||
out.location.href = _url;
|
||||
document.f.cmd.value="";
|
||||
}
|
||||
}
|
||||
function set_pwd(_pwd)
|
||||
{
|
||||
document.f.pwd.value = _pwd;
|
||||
}
|
||||
function do_clear()
|
||||
{
|
||||
document.co.cmds.value = "";
|
||||
}
|
||||
/* Cursor to end . works only with IE */
|
||||
function setCaretToEnd(control)
|
||||
{
|
||||
if (control.createTextRange) {
|
||||
var range = control.createTextRange();
|
||||
range.collapse(false);
|
||||
range.select();
|
||||
}
|
||||
else if (control.setSelectionRange) {
|
||||
control.focus();
|
||||
var l = control.value.length;
|
||||
control.setSelectionRange(l, l);
|
||||
}
|
||||
}
|
||||
function doUpload()
|
||||
{
|
||||
upload = window.open('Y_Tools_Cmd_Upload.yhtm?path='+document.f.pwd.value,'upload',"width=500,height=400,scrollbars=yes");
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Tools#Command_Shell=}{=var-set:menu=Command Shell=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="co" action="">
|
||||
<textarea name="cmds" cols="80" rows="18" title="shell output window" style="display: block;background : white; font : 'Courier New','medium monospace'; color : #436976;"></textarea>
|
||||
</form>
|
||||
|
||||
<form name="f" target="tmp" onsubmit="do_submit();return false;" action="">
|
||||
<table>
|
||||
<tr>
|
||||
<td><input type="button" name="clear" value="clear" title="clear output screeb" onclick="do_clear()"/></td>
|
||||
<td><input type="checkbox" name="appendx" value="1" title="append output (only IE)"/>append output (only IE scrollen)
|
||||
<!--<input type="button" value="Upload" title="upload a file to current directory" onClick="doUpload()">-->
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td>Path: </td>
|
||||
<td><input name="pwd" type="text" size="60" maxlength="255" title="actual path" value="/"/></td>
|
||||
</tr><tr>
|
||||
<td>Command:</td>
|
||||
<td><input name="cmd" type="text" size="60" maxlength="255" title="enter command to execute"/>
|
||||
<input type="submit" name="Submit" value="do it" title="execute shell command"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<iframe height="0" width="0" scrolling="no" align="left" frameborder="0" name="out" id="out">Your Browser does not support IFrames.</iframe>
|
||||
<iframe height="0" width="0" scrolling="no" align="left" frameborder="0" name="tmp" id="tmp">Your Browser does not support IFrames.</iframe>
|
||||
|
||||
<script language="JavaScript" type="text/javascript" >
|
||||
//<![CDATA[
|
||||
var agt=navigator.userAgent.toLowerCase();
|
||||
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
|
||||
if(is_ie)
|
||||
document.f.appendx.checked = true;
|
||||
window.document.f.cmd.focus();
|
||||
//]]>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
101
src/nhttpd/web/Y_Tools_Flash_Menue.yhtm
Normal file
101
src/nhttpd/web/Y_Tools_Flash_Menue.yhtm
Normal file
@@ -0,0 +1,101 @@
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function show_download_box(_show)
|
||||
{
|
||||
var obj = document.getElementById("download_box");
|
||||
obj.style.visibility= (_show) ? "visible" : "hidden";
|
||||
}
|
||||
function do_image_upload_dialog()
|
||||
{
|
||||
var nr=0;
|
||||
for(i=0; i<document.f.R1.length;i++)
|
||||
if(document.f.elements[i].name == "R1")
|
||||
if(document.f.elements[i].checked == true)
|
||||
{
|
||||
nr = document.f.elements[i].value;
|
||||
document.f.mtd_text.value = document.f.elements[i].title;
|
||||
}
|
||||
document.f.mtd.value = nr;
|
||||
document.f.execute.value = "script:Y_Tools image_flash_free_tmp";
|
||||
document.f.tmpl.value = "Y_Tools_Flash_Upload.yhtm";
|
||||
document.f.submit();
|
||||
}
|
||||
function do_image_download()
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.download.disabled = true;
|
||||
document.f.upload.disabled = true;
|
||||
window.setTimeout("do_image_download_2()",100);
|
||||
/*setTimeout:refresh output*/
|
||||
}
|
||||
function do_image_download_2()
|
||||
{
|
||||
var nr=0;
|
||||
for(i=0; i<document.f.R1.length;i++)
|
||||
if(document.f.elements[i].name == "R1")
|
||||
if(document.f.elements[i].checked == true)
|
||||
nr = document.f.elements[i].value;
|
||||
var res = loadSyncURL("/control/exec?Y_Tools&image_backup&"+nr);
|
||||
document.getElementById("download_link").href = res;
|
||||
document.f.download.disabled = false;
|
||||
document.f.upload.disabled = false;
|
||||
show_waitbox(false);
|
||||
show_download_box(true);
|
||||
}
|
||||
function goConfirmUrl(_meld, _url)
|
||||
{
|
||||
if (confirm(_meld)==true)
|
||||
loadSyncURL(_url);
|
||||
}
|
||||
function image_delete()
|
||||
{
|
||||
var res = loadSyncURL("/control/exec?Y_Tools&image_delete");
|
||||
show_download_box(false);
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=Image will be generated (create image).=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head">
|
||||
<div class="work_box_head_h2">{=var-set:help_url=Neutrino:yWeb:Tools#Image=}{=var-set:menu=Image=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<b><font size="2">Partition</font></b><br/>
|
||||
<form action="/y/cgi" name="f" id="f">
|
||||
{=func:get_partition_list=}
|
||||
<input type="hidden" name="tmpl" value="Y_Settings_mount.yhtm"/>
|
||||
<input type="hidden" name="execute" value=""/>
|
||||
<input type="hidden" name="mtd_text" value=""/>
|
||||
<input type="hidden" name="mtd" value=""/>
|
||||
<input type="button" name="download" value="Download" title="Generate Image for download" onclick="do_image_download()"/>
|
||||
<input type="button" name="upload" value="Flash ..." title="go to Upload Dialog" onclick="do_image_upload_dialog()"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div style="clear:both"> </div>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><h2>Instruction</h2></div>
|
||||
<div class="work_box_body" title="You should reboot the box before flashing">
|
||||
|
||||
It is usefull to reboot the Box before flashing.<br/>
|
||||
<input type=button value="Restart" title="reboot" onclick='goConfirmUrl("dbox wirklich neu starten?","/control/reboot");'/>
|
||||
</div>
|
||||
</div>
|
||||
<div style="clear:both"> </div>
|
||||
<div class="work_box" id="download_box" style="visibility : hidden;">
|
||||
<div class="work_box_head"><h2>Download</h2></div>
|
||||
<div class="work_box_body" title="Download your image">
|
||||
<b>The image was provided.</b>
|
||||
<p>
|
||||
1) <a id="download_link" type="application/octet-stream" href=""><u>Download</u></a><br/><br/>
|
||||
2) <a href='javascript:image_delete();'><u>Download ready. Image in /tmp placed.</u></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
162
src/nhttpd/web/Y_Tools_Flash_Upload.yhtm
Normal file
162
src/nhttpd/web/Y_Tools_Flash_Upload.yhtm
Normal file
@@ -0,0 +1,162 @@
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var aktiv;
|
||||
var flashing = false;
|
||||
|
||||
function show_progress(_msg,_type,_proz)
|
||||
{
|
||||
var __msg = document.getElementById("msg");
|
||||
__msg.value = _msg;
|
||||
if(_type == 1)
|
||||
document.getElementById("erasing_left").width = _proz;
|
||||
else if(_type == 2)
|
||||
{
|
||||
document.getElementById("erasing_left").width = "100%";
|
||||
document.getElementById("writing_left").width = _proz;;
|
||||
}
|
||||
else if(_type == 3)
|
||||
{
|
||||
document.getElementById("writing_left").width = "100%";
|
||||
document.getElementById("verifying_left").width = _proz;;
|
||||
}
|
||||
}
|
||||
/* load fcp status from /tmp/e.txt*/
|
||||
function processReqChange()
|
||||
{
|
||||
if (g_req.readyState == 4) {
|
||||
if (g_req.status == 200)
|
||||
{
|
||||
var last = g_req.responseText.lastIndexOf("\r");
|
||||
var last_line = g_req.responseText.slice(last+1, g_req.responseText.length);
|
||||
var _type = 0;
|
||||
if(last_line.search(/Erasing/)!=-1)
|
||||
_type = 1;
|
||||
if(last_line.search(/Writing/)!=-1)
|
||||
_type = 2;
|
||||
if(last_line.search(/Verifying/)!=-1)
|
||||
_type = 3;
|
||||
var Ausdruck = /\((.*)\)/;
|
||||
var e=Ausdruck.exec(last_line);
|
||||
var p = RegExp.$1;
|
||||
show_progress(last_line, _type, p);
|
||||
}
|
||||
}
|
||||
}
|
||||
function do_submit()
|
||||
{
|
||||
var msg = "Image flashen?";
|
||||
if(document.f.demo.checked)
|
||||
msg = "DEMO: "+msg;
|
||||
if(confirm(msg)==true)
|
||||
{
|
||||
show_waitbox(true);
|
||||
document.f.submit();
|
||||
document.f.su.disabled = true;
|
||||
document.f.file.disabled = true;
|
||||
document.f.demo.disabled = true;
|
||||
}
|
||||
}
|
||||
function do_image_upload_ready()
|
||||
{
|
||||
show_waitbox(false);
|
||||
show_obj("wait_flash", true);
|
||||
aktiv = window.setInterval('loadXMLDoc("/tmp/e.txt", processReqChange)', 3000);
|
||||
var simulate = "true";
|
||||
if(!document.f.demo.checked)
|
||||
simulate = "false";
|
||||
window.setTimeout("out.location.href = \"/control/exec?Y_Tools&image_flash&{=mtd=}&"+simulate+"\"",1000);
|
||||
}
|
||||
function do_image_upload_ready_error()
|
||||
{
|
||||
document.f.su.disabled = false;
|
||||
document.f.file.disabled = false;
|
||||
document.f.demo.disabled = false;
|
||||
show_waitbox(false);
|
||||
}
|
||||
function do_image_flash_ready()
|
||||
{
|
||||
window.clearInterval(aktiv);
|
||||
show_obj("wait_flash", false);
|
||||
alert("Image geflasht. Nach Reboot OK druecken");
|
||||
top.location.href="/";
|
||||
}
|
||||
function do_test()
|
||||
{
|
||||
show_obj("wait_flash", true);
|
||||
}
|
||||
//]]>div
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:fcp={=if-file-exists:/sbin/fcp~true~{=if-file-exists:/var/bin/fcp~true~{=if-file-exists:/bin/fcp~true~false=}=}=}=}
|
||||
{=var-set:wait_text=Image wird hochgeladen (upload image).=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div id="wait_flash" class="y_wait_box" style="left : 100px; position : absolute; top : 100px; visibility : hidden; z-index : 6;">
|
||||
<div class="y_wait_box_head"><h2>Flashing</h2></div>
|
||||
<div class="y_wait_box_body">
|
||||
<p align="center">
|
||||
<font color="#666666"><b>Image wird geflasht. Nicht unterbrechen!<br/>Image will be flashed. Do not interrupt!</b></font><br/><br/>
|
||||
<img border="0" src="/images/wait.gif" width="20" height="20" alt="wait"/><br/><br/>
|
||||
<input type="text" id="msg" value="" size="40" readonly="readonly" disabled="disabled"/>
|
||||
</p>
|
||||
<table border="0" style="margin-left:30px;margin-right:30px;">
|
||||
<tr><td>Erasing</td>
|
||||
<td>
|
||||
<table width="250" style="border: 1px dashed #0066cc;">
|
||||
<tr>
|
||||
<td width="0%" bgcolor="#2188e0" id="erasing_left" height="5"><img src="/images/blank.gif" height="1" width="0" alt="blank"/></td>
|
||||
<td id="erasing_right" width="100%"><img src="/images/blank.gif" height="1" width="0" alt="blank"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>Writing</td>
|
||||
<td>
|
||||
<table width="250" style="border: 1px dashed #0066cc;">
|
||||
<tr>
|
||||
<td id="writing_left" width="0%" bgcolor="#2188e0" height="5"><img src="/images/blank.gif" height="1" width="0" alt="blank"/></td>
|
||||
<td id="writing_right" width="100%"><img src="/images/blank.gif" height="1" width="0" alt="blank"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>Verifying</td>
|
||||
<td>
|
||||
<table width="250" style="border: 1px dashed #0066cc;">
|
||||
<tr>
|
||||
<td id="verifying_left" width="0%" bgcolor="#2188e0" height="5"><img src="/images/blank.gif" height="1" width="0" alt="blank"/></td>
|
||||
<td id="verifying_right" width="100%"><img src="/images/blank.gif" height="1" width="0" alt="blank"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
</table>
|
||||
<p align="center">
|
||||
Please wait<br/>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Tools#Image=}{=var-set:menu=Image flashen=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<b><font size="2">Partition mtd {=mtd=}</font><br/>{=mtd_text=}</b>
|
||||
{=if-equal:{=var-get:fcp=}~true~
|
||||
<form method="post" name="f" enctype="multipart/form-data" action="/control/exec?Y_Tools&image_upload" target="out">
|
||||
<p>
|
||||
<input type="file" name="file" size="40"/><br/>
|
||||
<span style="margin:0; padding:0;" title="Switch on Demo-Modus. Flashing will be simulated."><input type="checkbox" name="demo"/> Demomodus </span>
|
||||
<input type="button" value="Image flashen" title="upload and flash" name="su" onclick="do_submit()"/><br/>
|
||||
|
||||
</p>
|
||||
</form>
|
||||
~
|
||||
<h2><br/><br/><br/><b><font color="#FF0000">fcp ist nicht installiert!</font></b></h2>
|
||||
=}
|
||||
</div>
|
||||
</div>
|
||||
<iframe name="out" id="out" width="100%" height="200" align="left" frameborder="0">Your Browser does not support IFrames.</iframe>
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
47
src/nhttpd/web/Y_Tools_Info_Menue.yhtm
Normal file
47
src/nhttpd/web/Y_Tools_Info_Menue.yhtm
Normal file
@@ -0,0 +1,47 @@
|
||||
{=var-set:cancache=yPyes=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function goUrl(_url)
|
||||
{
|
||||
parent.frames[1].location.href = _url;
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head">
|
||||
<div class="work_box_head_h2">{=var-set:help_url=Neutrino:yWeb#Info=}{=var-set:menu=Info=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form action="">
|
||||
<table class="y_invisible_table" cellpadding="8">
|
||||
<tr><td class="y_form_header">Linux</td></tr>
|
||||
<tr><td>
|
||||
<input type="button" value="Kernel Messages" title="show Linux kernel stack messages" onclick='goUrl("/control/exec?Y_Tools&kernel-stack");'/>
|
||||
<input type="button" value="Processes" title="show currently running processes" onclick='goUrl("/control/exec?Y_Tools&ps");'/>
|
||||
<input type="button" value="Memory" title="show memory space" onclick='goUrl("/control/exec?Y_Tools&free");'/>
|
||||
</td></tr>
|
||||
<tr><td class="y_form_header">Coolstream HD1</td></tr>
|
||||
<tr><td>
|
||||
<input type="button" value="GUI Info" onclick='goUrl("/control/info");'/>
|
||||
<input type="button" value="Version" onclick='goUrl("/control/info?version");'/>
|
||||
<!--dbox2 only <input type="button" value="Settings" onclick='goUrl("/control/info?settings");'/> dbox2 only-->
|
||||
<input type="button" value="Time" onclick='goUrl("/control/gettime");'/>
|
||||
</td></tr>
|
||||
<tr><td class="y_form_header">proc</td></tr>
|
||||
<tr><td>
|
||||
<input type="button" value="CPU info" onclick='goUrl("/control/exec?Y_Tools&proc&cpuinfo");'/>
|
||||
<input type="button" value="MEM info" onclick='goUrl("/control/exec?Y_Tools&proc&meminfo");'/>
|
||||
<input type="button" value="Partitions" onclick='goUrl("/control/exec?Y_Tools&proc&partitions");'/>
|
||||
<input type="button" value="mtd" onclick='goUrl("/control/exec?Y_Tools&proc&mtd");'/>
|
||||
<input type="button" value="Stat" onclick='goUrl("/control/exec?Y_Tools&proc&stat");'/>
|
||||
<input type="button" value="version" onclick='goUrl("/control/exec?Y_Tools&proc&version");'/>
|
||||
</td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
42
src/nhttpd/web/Y_Tools_Installer.yhtm
Normal file
42
src/nhttpd/web/Y_Tools_Installer.yhtm
Normal file
@@ -0,0 +1,42 @@
|
||||
{=var-set:cancache=yPConf=}
|
||||
{=include-block:Y_Blocks.txt;management_check_top=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_submit()
|
||||
{
|
||||
if(document.f.filename.value != "")
|
||||
{
|
||||
out.location.href = "Y_Wait.yhtm";
|
||||
document.f.su.disabled=true;
|
||||
yhttpd_cache_clear("yPInstall");
|
||||
yhttpd_cache_clear('');
|
||||
window.setTimeout("document.f.submit()",1000);
|
||||
document.f.su.disabled=false;
|
||||
}
|
||||
else
|
||||
alert("No file given!");
|
||||
}
|
||||
//]]>div
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Tools#yInstaller=}{=var-set:menu=yInstaller=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form name="f" method="post" enctype="multipart/form-data" action="/control/exec?Y_Tools&installer" target="out">
|
||||
tar-File: <input type="file" name="filename" size="70"/> <br/>
|
||||
<input type="button" name="su" value="install" title="upload and install" onclick="do_submit()"/>
|
||||
<br/><br/>
|
||||
</form>
|
||||
<div style="height:290px;width:540px;">
|
||||
<iframe height="250" width="500" scrolling="no" align="left" frameborder="0" name="out" id="out">Your Browser does not support IFrames.</iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
{=include-block:Y_Blocks.txt;management_check_bottom=}
|
48
src/nhttpd/web/Y_Tools_Menue.yhtm
Normal file
48
src/nhttpd/web/Y_Tools_Menue.yhtm
Normal file
@@ -0,0 +1,48 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
</head>
|
||||
{=var-set:automount={=if-file-exists:/sbin/automount~true~{=if-file-exists:/var/bin/automount~true~false=}=}=}
|
||||
{=var-set:management={=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip;{=func:get_request_data client_addr=}=}~1~=}{=if-equal:{=func:get_request_data client_addr=}~{=ini-get:/var/tuxbox/config/Y-Web.conf;management_ip2=}~1~=}=}
|
||||
<body>
|
||||
<div class="y_menu_sec_box">
|
||||
<div class="y_menu_sec_box_head"><h2>Tools</h2></div>
|
||||
<div class="y_menu_sec_box_body">
|
||||
<div class="y_menu_sec_section">Tools</div>
|
||||
<div class="y_menu_sec">
|
||||
<ul>
|
||||
{=if-empty:{=var-get:management=}~
|
||||
<!--dbox2 only <li class="disabled" title="organize file automounts (automount not installed)">AutoMounts</li> dbox2 only-->
|
||||
<li class="disabled" title="organize file mounts (restricted by ManagementIP)">Mounts</li>
|
||||
<li class="disabled" title="Wake on LAN (restricted by ManagementIP)">Wake on LAN</li>
|
||||
~
|
||||
{=if-empty:{=var-get:automount=}~
|
||||
<!--dbox2 only <li class="disabled" title="organize file automounts (automount not installed)">AutoMounts</li> dbox2 only-->
|
||||
~
|
||||
<!--dbox2 only <li><a target="work" title="organize file automounts" href="Y_Settings_automount_liste.yhtm">AutoMounts</a></li> dbox2 only-->
|
||||
=}
|
||||
<li><a target="work" title="organize file mounts" href="Y_Settings_mount_liste.yhtm">Mounts</a></li>
|
||||
<li><a target="work" title="Wake on LAN" href="Y_Settings_wol.yhtm">Wake on LAN</a></li>
|
||||
=}
|
||||
<li><a target="work" title="check Installation" href="Y_Tools_Check_Install.yhtm">Check Install</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="y_menu_sec_section">Expert</div>
|
||||
<div class="y_menu_sec">
|
||||
<ul>
|
||||
<li><a target="work" title="get box infos" href="Y_Dyn_Pages.yhtm?page=frame_tools-info">Info</a></li>
|
||||
{=if-empty:{=var-get:management=}~
|
||||
<li class="disabled" title="backup or flash image. (restricted by ManagementIP)">Image</li>
|
||||
<li class="disabled" title="command shell (restricted by ManagementIP)">Command Shell</li>
|
||||
<li class="disabled" title="yInstaller (for files, plugins, ...) (restricted by ManagementIP)">yInstaller</li>
|
||||
~
|
||||
<!--dbox2 only <li><a target="work" title="backup or flash image" href="Y_Tools_Flash_Menue.yhtm">Image</a></li> dbox2 only-->
|
||||
<li><a target="work" title="command shell" href="Y_Tools_Cmd.yhtm">Command Shell</a></li>
|
||||
<li><a target="work" title="yInstaller (for files, plugins, ...)" href="Y_Tools_Installer.yhtm">yInstaller</a></li>
|
||||
=}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
125
src/nhttpd/web/Y_Tools_NetStream.yhtm
Normal file
125
src/nhttpd/web/Y_Tools_NetStream.yhtm
Normal file
@@ -0,0 +1,125 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_stop()
|
||||
{
|
||||
document.vlc.stop()
|
||||
}
|
||||
function doPlayOrPause()
|
||||
{
|
||||
if( document.vlc.{=if-equal:{=browser=}~ie~playing~isplaying()=} )
|
||||
{
|
||||
document.v.PlayOrPause.value = " Play ";
|
||||
document.vlc.pause()
|
||||
} else {
|
||||
document.v.PlayOrPause.value = "Pause";
|
||||
document.vlc.play()
|
||||
}
|
||||
}
|
||||
function doStop()
|
||||
{
|
||||
document.v.PlayOrPause.value = " Play ";
|
||||
document.vlc.stop()
|
||||
}
|
||||
function doLockUnlock()
|
||||
{
|
||||
if( document.v.lock.value == "Lock" )
|
||||
{
|
||||
document.v.lock.value = "Unlock";
|
||||
live_lock();
|
||||
} else {
|
||||
document.v.lock.value = "Lock";
|
||||
live_unlock();
|
||||
}
|
||||
}
|
||||
function doGo()
|
||||
{
|
||||
var targetURL= document.v.targetTextField.value;
|
||||
{=if-equal:{=browser=}~ie~
|
||||
var options = new Array(":input-repeat=1");
|
||||
document.vlc.addTarget(targetURL, options, 4+8, -666);
|
||||
~
|
||||
document.vlc.add_item(targetURL);
|
||||
document.vlc.next()
|
||||
document.vlc.play()
|
||||
=}
|
||||
};
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Live_Timer#NetStream=}{=var-set:menu=Net Stream=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<font size="1"> VLC Plugin Test</font>
|
||||
<form name="v" action="">
|
||||
<table border="0" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td>
|
||||
MRL:
|
||||
<input size="47" name="targetTextField" value="http://www.nasa.gov/55644main_NASATV_Windows.asx"/>
|
||||
<input type="button" value="Go" title="start streaming the given MRL (Media-URL). Please wait..." onclick="doGo();"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
{=if-equal:{=browser=}~ie~
|
||||
<OBJECT classid="clsid:E23FE9C6-778E-49D4-B537-38FCDE4887D8"
|
||||
width="384" height="288" id="vlc" events="True">
|
||||
<param name="Src" value="" />
|
||||
<param name="ShowDisplay" value="True" />
|
||||
<param name="Loop" value="False" />
|
||||
<param name="AutoPlay" value="false" />
|
||||
The VideoLan Client ActiveX is not installed.<br/>
|
||||
You need <a href="http://www.videolan.org" target="_blank">VideoLan Client</a> V0.8.2 or higher.<br/>
|
||||
Install with Option "ActiveX".
|
||||
</OBJECT>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button class="y_live_button" type="button" value="Pause" title="play or pause streaming" id="PlayOrPause" onclick="doPlayOrPause()">Pause</button>
|
||||
<button class="y_live_button" type="button" value="stop" title="stop streaming" onclick="doStop()">Stop</button>
|
||||
<button class="y_live_button" type="button" value="mute" title="mute / unmute volume" onclick="document.vlc.toggleMute()">Mute</button>
|
||||
<button class="y_live_button" type="button" value="fullscreen" title="switch to fullscreen-mode - or use double-click" onclick="document.vlc.fullscreen()">FScreen</button>
|
||||
<button class="y_live_button" type="button" value="minus" title="lower volume" onclick="document.vlc.volume=document.vlc.volume-10;">-</button>
|
||||
<button class="y_live_button" type="button" value="plus" title="higher volume" onccclick="document.vlc.volume = document.vlc.volume+10;">+</button>
|
||||
<button class="y_live_button" type="button" value="Lock" title="lock / unlock TV (record mode, rc, lcd)" name="lock" onclick="doLockUnlock()">Lock</button>
|
||||
~
|
||||
<embed type="application/x-vlc-plugin"
|
||||
name="vlc"
|
||||
autoplay="no" loop="yes" width="384" height="288">
|
||||
</embed>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button class="y_live_button" type="button" value="stop" title="stop streaming" onclick="doStop()">Stop</button>
|
||||
<button class="y_live_button" type="button" value="mute" title="mute / unmute volume" onclick="document.vlc.mute()">Mute</button>
|
||||
<button class="y_live_button" type="button" value="fullscreen" title="switch to fullscreen-mode - or use double-click" onclick="document.vlc.fullscreen()">F</button>
|
||||
<button class="y_live_button" type="button" value="minus" title="lower volume" onclick="document.vlc.set_volume(document.vlc.get_volume()-10);">-</button>
|
||||
<button class="y_live_button" type="button" value="plus" title="higher volume" onclick="document.vlc.set_volume(document.vlc.get_volume()+10);">+</button>
|
||||
<input class="y_live_button" type="button" value="Lock" title="lock / unlock TV (record mode, rc, lcd)" name="lock" onclick="doLockUnlock()"/>
|
||||
=}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var res_w=parseInt("{=ini-get:/var/tuxbox/config/Y-Web.conf;live_resolution_w;384=}",10);
|
||||
var res_h=parseInt("{=ini-get:/var/tuxbox/config/Y-Web.conf;live_resolution_h;288=}",10);
|
||||
if(isNaN(res_w)) res_w=384;
|
||||
if(isNaN(res_h)) res_h=288;
|
||||
|
||||
document.vlc.width=res_w;
|
||||
document.vlc.height=res_h;
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
19
src/nhttpd/web/Y_Tools_Rcsim.yhtm
Normal file
19
src/nhttpd/web/Y_Tools_Rcsim.yhtm
Normal file
@@ -0,0 +1,19 @@
|
||||
{=var-set:cancache=yPyes=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function rcsim(_key)
|
||||
{
|
||||
if(_key == "KEY_POWER")
|
||||
if(confirm("wirklich ausschalten? Power down?") != true)
|
||||
return;
|
||||
loadSyncURL("/control/rcem?"+_key);
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=include-block:Y_Blocks.txt;remote=}
|
||||
</body>
|
||||
</html>
|
385
src/nhttpd/web/Y_Tools_Timer_Sync.yhtm
Normal file
385
src/nhttpd/web/Y_Tools_Timer_Sync.yhtm
Normal file
@@ -0,0 +1,385 @@
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function wiki_url(_page)
|
||||
{
|
||||
return "<a href=\"http://wiki.tuxbox.org/"+_page+"\"' target=\"_blank\"><b>[Help]<\/b><\/a>"
|
||||
}
|
||||
/*timer_list*/
|
||||
var timer_body;
|
||||
function timer_list_init()
|
||||
{
|
||||
timer_body=document.getElementById("timer_list");
|
||||
}
|
||||
function timer_list_clear()
|
||||
{
|
||||
while(timer_body.childNodes.length > 0)
|
||||
{
|
||||
aChild=timer_body.firstChild;
|
||||
timer_body.removeChild(aChild);
|
||||
}
|
||||
|
||||
document.getElementById("checkall").checked = true;
|
||||
}
|
||||
function timer_list_addRow(_body, i, alDate, alTime, stDate, stTime, channel_name, progName, origin)
|
||||
{
|
||||
var mycurrent_row = y_add_row_to_table(_body, ((i % 2) ==0)?"a":"b" );
|
||||
y_add_html_cell_to_row(mycurrent_row, "settimer", '<input type="checkbox" checked="true" name="settimer">');
|
||||
y_add_text_cell_to_row(mycurrent_row, "alDate", alDate);
|
||||
y_add_text_cell_to_row(mycurrent_row, "alTime", alTime);
|
||||
y_add_text_cell_to_row(mycurrent_row, "stDate", stDate);
|
||||
y_add_text_cell_to_row(mycurrent_row, "stTime", stTime);
|
||||
y_add_html_cell_to_row(mycurrent_row, "channel_name", channel_name);
|
||||
y_add_html_cell_to_row(mycurrent_row, "progName", progName);
|
||||
y_add_text_cell_to_row(mycurrent_row, "origin", origin);
|
||||
}
|
||||
/*sLog*/
|
||||
var sLog_body;
|
||||
var sLog_line_number;
|
||||
function sLog_init()
|
||||
{
|
||||
sLog_line_number = 0;
|
||||
sLog_body=document.getElementById("slog_list");
|
||||
}
|
||||
function sLog_clear()
|
||||
{
|
||||
while(sLog_body.childNodes.length > 0)
|
||||
{
|
||||
aChild=sLog_body.firstChild;
|
||||
sLog_body.removeChild(aChild);
|
||||
}
|
||||
sLog_line_number = 0;
|
||||
}
|
||||
function sLog_addRow(_body, state, action_text, state_text)
|
||||
{
|
||||
sLog_line_number++;
|
||||
var mycurrent_row = y_add_row_to_table(_body, ((sLog_line_number % 2) ==0)?"a":"b" );
|
||||
var __img ="/images/ok.gif";
|
||||
switch (state)
|
||||
{
|
||||
case "green": __img = "/images/check_green.gif"; break;
|
||||
case "yellow": __img = "/images/excl_yellow.gif"; break;
|
||||
case "ok": __img = "/images/ok.gif"; break;
|
||||
case "red": __img = "/images/x_red.gif"; break;
|
||||
}
|
||||
y_add_html_cell_to_row(mycurrent_row, "icon", "<img src='"+__img+"'>");
|
||||
y_add_html_cell_to_row(mycurrent_row, "action_text", action_text);
|
||||
y_add_text_cell_to_row(mycurrent_row, "state_text", state_text);
|
||||
}
|
||||
/*request*/
|
||||
function processReqChange()
|
||||
{
|
||||
if (g_req.readyState == 4) {
|
||||
if (g_req.status == 200)
|
||||
{
|
||||
if (document.f.planer[0].checked == true)
|
||||
{
|
||||
var xml = g_req.responseXML;
|
||||
var recProg_NodeList = xml.getElementsByTagName('recProg');
|
||||
|
||||
for(i=0;i<recProg_NodeList.length;i++)
|
||||
{
|
||||
var recProg_Node = recProg_NodeList[i];
|
||||
|
||||
var sender = recProg_Node.getElementsByTagName('sender')[0].firstChild.nodeValue;
|
||||
var progName = recProg_Node.getElementsByTagName('progName')[0].firstChild.nodeValue;
|
||||
var progStartDate = recProg_Node.getElementsByTagName('progStartDate')[0].firstChild.nodeValue;
|
||||
var progStartTime = recProg_Node.getElementsByTagName('progStartTime')[0].firstChild.nodeValue;
|
||||
var progEndDate = recProg_Node.getElementsByTagName('progEndDate')[0].firstChild.nodeValue;
|
||||
var progEndTime = recProg_Node.getElementsByTagName('progEndTime')[0].firstChild.nodeValue;
|
||||
|
||||
progName = decodeURI(progName);
|
||||
/*convert startdate*/
|
||||
var Ausdruck = /(.*)-(.*)-(.*).*$/;
|
||||
Ausdruck.exec(progStartDate);
|
||||
var alDate = RegExp.$3+"."+RegExp.$2+"."+RegExp.$1;
|
||||
|
||||
Ausdruck = /(.*):(.*):(.*).*$/;
|
||||
Ausdruck.exec(progStartTime);
|
||||
var alTime = RegExp.$1+":"+RegExp.$2;
|
||||
|
||||
/*convert enddate*/
|
||||
Ausdruck = /(.*)-(.*)-(.*).*$/;
|
||||
Ausdruck.exec(progEndDate);
|
||||
var stDate = RegExp.$3+"."+RegExp.$2+"."+RegExp.$1;
|
||||
|
||||
Ausdruck = /(.*):(.*):(.*).*$/;
|
||||
Ausdruck.exec(progEndTime);
|
||||
var stTime = RegExp.$1+":"+RegExp.$2;
|
||||
|
||||
timer_list_addRow(timer_body, i, alDate, alTime, stDate, stTime, sender, progName, "TVInfo");
|
||||
if(document.f.debug.checked == true)
|
||||
sLog_addRow(sLog_body, "green", "- Timer "+i+": "+alDate+" "+alTime+" "+sender+" "+progName, "analyzed");
|
||||
}
|
||||
if(recProg_NodeList.length>0)
|
||||
sLog_addRow(sLog_body, "green", "Analyze "+recProg_NodeList.length+" Timers", "finished");
|
||||
else
|
||||
sLog_addRow(sLog_body, "yellow", "No Timers found", "finished");
|
||||
}
|
||||
else if (document.f.planer[1].checked == true)
|
||||
{
|
||||
var agt=navigator.userAgent.toLowerCase();
|
||||
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
|
||||
var xml = g_req.responseXML;
|
||||
var recProg_NodeList = xml.getElementsByTagName('item');
|
||||
for(i=0;i<recProg_NodeList.length;i++)
|
||||
{
|
||||
var recProg_Node = recProg_NodeList[i];
|
||||
|
||||
var progName = recProg_Node.getElementsByTagName('title')[0].firstChild.nodeValue;
|
||||
var description = recProg_Node.getElementsByTagName('description')[0].firstChild.nodeValue;
|
||||
if(is_ie)
|
||||
{
|
||||
var sDate = recProg_Node.getElementsByTagName('dc:date')[0].firstChild.nodeValue;
|
||||
var sender = recProg_Node.getElementsByTagName('dc:subject')[0].firstChild.nodeValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
var sDate = recProg_Node.getElementsByTagName('date')[0].firstChild.nodeValue;
|
||||
var sender = recProg_Node.getElementsByTagName('subject')[0].firstChild.nodeValue;
|
||||
}
|
||||
|
||||
var tmp = progName.replace(/(.*):/,"");
|
||||
progName = tmp;
|
||||
var stDate ="";
|
||||
|
||||
/*convert startdate*/
|
||||
var Ausdruck = /(.*)-(.*)-(.*)T.*$/;
|
||||
Ausdruck.exec(sDate);
|
||||
var alYear = RegExp.$1;
|
||||
var Ausdruck = /^(.*)\.(.*) (.*):(.*) Uhr -.*$/;
|
||||
Ausdruck.exec(description);
|
||||
alDate = RegExp.$1+"."+RegExp.$2+"."+alYear;
|
||||
alTime = RegExp.$3+":"+RegExp.$4;
|
||||
|
||||
var Ausdruck = /Ende (.*):(.*) Uhr.*$/;
|
||||
Ausdruck.exec(description);
|
||||
stTime = RegExp.$1+":"+RegExp.$2;
|
||||
timer_list_addRow(timer_body, i, alDate, alTime, stDate, stTime, sender, progName, "Klack")
|
||||
if(document.f.debug.checked == true)
|
||||
sLog_addRow(sLog_body, "green", "- Timer "+i+": "+alDate+" "+alTime+" "+sender+" "+progName, "analyzed");
|
||||
}
|
||||
if(recProg_NodeList.length>0)
|
||||
sLog_addRow(sLog_body, "green", "Analyze "+recProg_NodeList.length+" Timers", "finished");
|
||||
else
|
||||
sLog_addRow(sLog_body, "yellow", "No Timers found", "finished");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
function do_analyze_tvinfo()
|
||||
{
|
||||
loadXMLDoc("/tmp/tvinfo.xml", processReqChange);
|
||||
}
|
||||
function do_analyze_klack()
|
||||
{
|
||||
loadXMLDoc("/tmp/klack.xml", processReqChange);
|
||||
}
|
||||
function do_get_tvinfo()
|
||||
{
|
||||
sLog_addRow(sLog_body, "ok", "TVinfo: Sync Timer", "started");
|
||||
var _username = "{=ini-get:/var/tuxbox/config/Y-Web.conf;tvinfo_username=}";
|
||||
var _password = "{=ini-get:/var/tuxbox/config/Y-Web.conf;tvinfo_password=}";
|
||||
var _url = "/control/exec?Y_Tools&timer_get_tvinfo&"+_username+"&"+_password;
|
||||
|
||||
if(_username != "")
|
||||
if(_password != "")
|
||||
{
|
||||
var res = loadSyncURL(_url);
|
||||
if(res.search(/Connecting/)!=-1)
|
||||
{
|
||||
sLog_addRow(sLog_body, "green", "TVinfo: connecting "+res, "ok");
|
||||
if(res.search(/empty/)!=-1)
|
||||
sLog_addRow(sLog_body, "red", "TVinfo: Username and/or Password wrong. "+wiki_url("Neutrino:yWeb#Timer_Sync"), "failed");
|
||||
else
|
||||
sLog_addRow(sLog_body, "green", "TVinfo: Username / Password ok", "ok");
|
||||
}
|
||||
else
|
||||
sLog_addRow(sLog_body, "red", "TVinfo: connecting. "+wiki_url("Neutrino:yWeb#Timer_Sync"), "failed");
|
||||
}
|
||||
else
|
||||
sLog_addRow(sLog_body, "red", "TVinfo: no password given. "+wiki_url("Neutrino:yWeb#Timer_Sync"), "failed");
|
||||
else
|
||||
sLog_addRow(sLog_body, "red", "TVinfo: no username given. "+wiki_url("Neutrino:yWeb#Timer_Sync"), "failed");
|
||||
|
||||
}
|
||||
function do_get_klack()
|
||||
{
|
||||
sLog_addRow(sLog_body, "ok", "Klack: Sync Timer", "started");
|
||||
var _url = "/control/exec?Y_Tools&timer_get_klack";
|
||||
var res = loadSyncURL(_url);
|
||||
if(res.search(/Connecting/)!=-1)
|
||||
sLog_addRow(sLog_body, "green", "Klack: connecting: "+res, "ok");
|
||||
else
|
||||
sLog_addRow(sLog_body, "red", "Klack: connecting. "+wiki_url("Neutrino:yWeb#Timer_Sync"), "failed");
|
||||
}
|
||||
function do_clear_all()
|
||||
{
|
||||
sLog_clear();
|
||||
timer_list_clear();
|
||||
}
|
||||
function do_get_selected()
|
||||
{
|
||||
document.getElementById("wait").style.visibility="visible";
|
||||
if (document.f.planer[0].checked == true)
|
||||
{
|
||||
do_get_tvinfo();
|
||||
do_analyze_tvinfo();
|
||||
}
|
||||
else if (document.f.planer[1].checked == true)
|
||||
{
|
||||
do_get_klack();
|
||||
do_analyze_klack();
|
||||
}
|
||||
document.getElementById("wait").style.visibility="hidden";
|
||||
}
|
||||
function doToogleCheckboxes()
|
||||
{
|
||||
var state = document.timer.checkall.checked;
|
||||
var _rows = timer_body.getElementsByTagName("tr");
|
||||
for(var i=0; i< _rows.length; i++)
|
||||
{
|
||||
var rowNode = _rows.item(i);
|
||||
rowNode.firstChild.firstChild.checked = state;
|
||||
}
|
||||
}
|
||||
/*set timer*/
|
||||
function do_set_timer()
|
||||
{
|
||||
sLog_addRow(sLog_body, "green", "Sync Timer to box", "started");
|
||||
var channel_replace = loadSyncURL("/control/exec?Y_Tools&get_synctimer_channels&" + Math.random());
|
||||
if(channel_replace.length > 0)
|
||||
sLog_addRow(sLog_body, "green", "Channel-Replace-List loaded "+channel_replace.length+" bytes", "ok");
|
||||
else
|
||||
sLog_addRow(sLog_body, "yellow", "Channel-Replace-List is empty", "notify");
|
||||
var channels=0;
|
||||
|
||||
var typ = "{=func:get_mode=}";
|
||||
if(typ != "tv")
|
||||
{
|
||||
loadSyncURL("/control/setmode?tv");
|
||||
sLog_addRow(sLog_body, "green", "Switsch to TV-Mode", "ok");
|
||||
}
|
||||
|
||||
var _rows = timer_body.getElementsByTagName("tr");
|
||||
for(var i=0; i< _rows.length; i++)
|
||||
{
|
||||
var rowNode = _rows.item(i);
|
||||
if(rowNode.firstChild.firstChild.checked == true)
|
||||
{
|
||||
var channel_name = rowNode.childNodes[5].firstChild.nodeValue;
|
||||
if(rowNode.childNodes[7].firstChild.nodeValue == "TVInfo")
|
||||
var Ausdruck = new RegExp("(.*);"+rowNode.childNodes[5].firstChild.nodeValue+";.*","i");
|
||||
else if(rowNode.childNodes[7].firstChild.nodeValue == "Klack")
|
||||
var Ausdruck = new RegExp("(.*);.*;"+rowNode.childNodes[5].firstChild.nodeValue+".*","i");
|
||||
else
|
||||
var Ausdruck ="";
|
||||
if(Ausdruck != "")
|
||||
{
|
||||
Ergebnis=Ausdruck.exec(channel_replace);
|
||||
if(Ergebnis)
|
||||
channel_name = RegExp.$1;
|
||||
}
|
||||
var _urlt = "/control/timer?action=new&alDate="+rowNode.childNodes[1].firstChild.nodeValue
|
||||
+"&alTime="+rowNode.childNodes[2].firstChild.nodeValue
|
||||
+"&stDate="+rowNode.childNodes[3].firstChild.nodeValue
|
||||
+"&stTime="+rowNode.childNodes[4].firstChild.nodeValue
|
||||
+"&channel_name="+channel_name
|
||||
+"&rec_dir="+document.f.rec_dir.value
|
||||
+"&rs=1"
|
||||
+"&update=1";
|
||||
_url = _urlt.replace(/:/gi,".");
|
||||
/*_url = encodeURI(_url);*/
|
||||
loadSyncURL(_url);
|
||||
channels++;
|
||||
if(document.f.debug.checked)
|
||||
/*sLog_addRow(sLog_body, "green", "Sync Timer to box: "+channel_name+" "+rowNode.childNodes[6].firstChild.nodeValue, "added");*/
|
||||
sLog_addRow(sLog_body, "green", "Sync Timer to box url: "+_url, "added");
|
||||
}
|
||||
}
|
||||
if(channels > 0)
|
||||
sLog_addRow(sLog_body, "green", "Sync Timer to box: "+channels+" Timers added", "finished");
|
||||
else
|
||||
sLog_addRow(sLog_body, "yellow", "Sync Timer to box: No Timers to add", "finished");
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=get timer.=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:Live_Timer#Timer_Sync=}{=var-set:menu=Timer Sync=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<form method="post" name="f" action="">
|
||||
<b>Sync Timer</b>
|
||||
<table class="y_work_table">
|
||||
<tr>
|
||||
<td>
|
||||
<input type="radio" name="planer" value="TVInfo" {=if-empty:{=ini-get:/var/tuxbox/config/Y-Web.conf;tvinfo_username=}~disabled~=}/>TVInfo<br/>
|
||||
<input type="radio" name="planer" value="Klack" {=if-empty:{=ini-get:/var/tuxbox/config/Y-Web.conf;klack_url=}~disabled~=}/>Klack
|
||||
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="debug" value="1"/>Debugging
|
||||
<!--
|
||||
<input type="radio" name="planer" value="slave" disabled="disabled"/>Slave box<br/>
|
||||
<input type="radio" name="planer" value="slave" disabled="disabled"/>Test<br/> -->
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2">
|
||||
Recording Directory: <input type="text" name="rec_dir" value="{=ini-get:/var/tuxbox/config/neutrino.conf;network_nfs_recordingdir;/mnt/filme=}" title="recording dir"/>
|
||||
<br/>Settings within Settings-Timer</td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="button" value="get selected" title="get selected" name="get_selected" onclick="do_get_selected()"/>
|
||||
<input type="button" value="clear all" title="clear all" name="clear_all" onclick="do_clear_all()"/>
|
||||
</form>
|
||||
<br/>
|
||||
<form method="post" name="timer" action="">
|
||||
<b>Timer Preview List</b>
|
||||
<table class="y_work_table" cellpadding="2">
|
||||
<thead align="left">
|
||||
<tr>
|
||||
<th><input type="checkbox" checked="checked" name="checkall" onclick="doToogleCheckboxes();" id="checkall"/></th><th colspan="2">StartTime</th><th colspan="2">EndeTime</th>
|
||||
<th>Sender</th><th>Program</th><th>Quelle</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="timer_list">
|
||||
<tr><td></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<input type="button" value="set timer" title="" name="set_timers" onclick="do_set_timer()"/>
|
||||
<input type="button" value="clear log" title="" name="clear_log" onclick="sLog_clear()"/>
|
||||
</form>
|
||||
<br/>
|
||||
<form method="post" name="log" action="">
|
||||
<b>Log</b><br/>
|
||||
<table class="y_work_table" cellpadding="4">
|
||||
<thead align="left">
|
||||
<tr>
|
||||
<th> </th><th>Action</th><th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="slog_list">
|
||||
<tr><td></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
timer_list_init();
|
||||
sLog_init();
|
||||
do_clear_all();
|
||||
if (document.f.planer[0].disabled == false)
|
||||
document.f.planer[0].checked = true;
|
||||
else if (document.f.planer[1].disabled == false)
|
||||
document.f.planer[1].checked = true;
|
||||
//]]>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
67
src/nhttpd/web/Y_Tools_fbshot.yhtm
Normal file
67
src/nhttpd/web/Y_Tools_fbshot.yhtm
Normal file
@@ -0,0 +1,67 @@
|
||||
{=var-set:cancache=yPInstall=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function do_snapshot()
|
||||
{
|
||||
show_waitbox(true);
|
||||
window.setTimeout("do_snapshot2()", 500);
|
||||
}
|
||||
function do_snapshot2()
|
||||
{
|
||||
var _shot = document.getElementById("shot");
|
||||
var filename = id("file").value;
|
||||
dbox_exec_command("{=if-file-exists:/var/bin/fbshot~/var/bin/fbshot~fbshot=} -q /tmp/"+filename+".png");
|
||||
show_waitbox(false);
|
||||
show_obj("shot", true);
|
||||
_shot.src = "/tmp/"+filename+".png?"+Math.random();
|
||||
}
|
||||
function do_dboxshot()
|
||||
{
|
||||
show_waitbox(true);
|
||||
window.setTimeout("do_dboxshot2()", 500);
|
||||
}
|
||||
function do_dboxshot2()
|
||||
{
|
||||
var _shot = document.getElementById("shot");
|
||||
var filename = id("file").value;
|
||||
var res = dbox_exec_command("{=if-file-exists:/var/bin/dboxshot~/var/bin/dboxshot~dboxshot=} /tmp/"+filename+".bmp");
|
||||
if(res != "")
|
||||
dbox_exec_command("{=if-file-exists:/var/bin/dboxshot~/var/bin/dboxshot~dboxshot=} /tmp/"+filename+".bmp");
|
||||
show_waitbox(false);
|
||||
show_obj("shot", true);
|
||||
_shot.src = "/tmp/"+filename+".bmp?"+Math.random();
|
||||
}
|
||||
function do_clearshot()
|
||||
{
|
||||
window.setTimeout("do_clearshot2()", 500);
|
||||
}
|
||||
function do_clearshot2()
|
||||
{
|
||||
var _shot = document.getElementById("shot");
|
||||
dbox_exec_command("rm /tmp/*.png");
|
||||
dbox_exec_command("rm /tmp/*.bmp");
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=Snapshot taken=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:BoxControl#OSD_Screenshot=}{=var-set:menu=OSD Screenshot=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
<button name="snapshot" onclick="do_snapshot()">Snapshot</button>
|
||||
{=var-set:dboxshot={=if-file-exists:/bin/dboxshot~true~{=if-file-exists:/var/bin/dboxshot~true~false=}=}=}
|
||||
{=if-equal:{=var-get:dboxshot=}~true~
|
||||
<button name="dboxshot" onclick="do_dboxshot()">dboxshot</button>
|
||||
=}
|
||||
<button name="clearshot" onclick="do_clearshot()">Delete Screenshots</button>
|
||||
Filename:<input type="text" value="a" id="file" size="16"/>
|
||||
<br/>
|
||||
<img id="shot" src="" style="visibility:hidden;"/>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
60
src/nhttpd/web/Y_Tools_remote_osd.yhtm
Normal file
60
src/nhttpd/web/Y_Tools_remote_osd.yhtm
Normal file
@@ -0,0 +1,60 @@
|
||||
{=var-set:cancache=yPInstall=}
|
||||
{=var-set:dboxshot={=if-file-exists:/bin/dboxshot~/bin/dboxshot~{=if-file-exists:/var/bin/dboxshot~/var/bin/dboxshot~/var/bin/dboxshot=}=}=}
|
||||
{=include-block:Y_Blocks.txt;head=}
|
||||
<script type="text/javascript" src="/Y_Baselib.js"></script>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function rcsim(_key)
|
||||
{
|
||||
loadSyncURL("/control/rcem?"+_key);
|
||||
do_dboxshot();
|
||||
}
|
||||
function do_dboxshot()
|
||||
{
|
||||
{=if-empty:{=var-get:dboxshot=}~~
|
||||
var _shot = document.getElementById("shot");
|
||||
var res = dbox_exec_command("{=var-get:dboxshot=} -o /tmp/a.bmp");
|
||||
if(res != "")
|
||||
dbox_exec_command("{=var-get:dboxshot=} -o /tmp/a.bmp");
|
||||
_shot.src = "/tmp/a.bmp?"+Math.random();
|
||||
=}
|
||||
}
|
||||
function do_clearshot()
|
||||
{
|
||||
window.setTimeout("do_clearshot2()", 500);
|
||||
}
|
||||
function do_clearshot2()
|
||||
{
|
||||
var _shot = document.getElementById("shot");
|
||||
dbox_exec_command("rm /tmp/a.*");
|
||||
show_waitbox(false);
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{=var-set:wait_text=Snapshot taken=}{=include-block:Y_Blocks.txt;snip_wait=}
|
||||
<div class="work_box">
|
||||
<div class="work_box_head"><div class="work_box_head_h2">
|
||||
{=var-set:help_url=Neutrino:yWeb:BoxControl#Remote_OSD=}{=var-set:menu=Remote & OSD=}{=include-block:Y_Blocks.txt;work_menu=}</div></div>
|
||||
<div class="work_box_body">
|
||||
{=if-empty:{=var-get:dboxshot=}~~
|
||||
<button name="dboxshot" onclick="do_dboxshot()">shot</button>
|
||||
=}
|
||||
<button name="clearshot" onclick="do_clearshot()">Delete shots</button>
|
||||
<table cellpadding="0">
|
||||
<tr>
|
||||
<td>{=include-block:Y_Blocks.txt;remote=}</td>
|
||||
<td><img id="shot" src="" style="width:600px"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
do_dboxshot();
|
||||
//]]>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
246
src/nhttpd/web/Y_VLC.js
Normal file
246
src/nhttpd/web/Y_VLC.js
Normal file
@@ -0,0 +1,246 @@
|
||||
/* VLC abstraction by yjogol@online.de
|
||||
$Date: 2007/02/21 17:38:48 $
|
||||
$Revision: 1.1 $
|
||||
*/
|
||||
/*ie1=ActiveC, moz1=Mozilla<0.8.5.1, moz2>= 0.8.5.1*/
|
||||
var CyVLC = function(_id, masterid, width, height) {
|
||||
this.initialize(_id, masterid, width, height);
|
||||
};
|
||||
CyVLC.prototype = {
|
||||
id : "vlc",
|
||||
vlc : "",
|
||||
plugin : "ie1",
|
||||
version_string : "",
|
||||
version_level1 : 0,
|
||||
version_level2 : 0,
|
||||
version_level3 : 0,
|
||||
version_level4 : 0,
|
||||
options : [],
|
||||
|
||||
c_masterid : "vlc_view",
|
||||
c_width : 384,
|
||||
c_height: 288,
|
||||
c_loop : false,
|
||||
c_show_display : true,
|
||||
c_auto_play : false,
|
||||
|
||||
initialize : function(_id, masterid, width, height) {
|
||||
this.id = _id;
|
||||
this.c_masterid = masterid;
|
||||
this.c_width = width;
|
||||
this.c_height = height;
|
||||
if(!is_ie) {
|
||||
this.version_string = this._get_version();
|
||||
this._generate_sub_versions();
|
||||
this._determine_plugin_generation();
|
||||
}
|
||||
this.insert_control();
|
||||
this.vlc = id(_id);
|
||||
this.set_resolution(this.c_width, this.c_height);
|
||||
if(is_ie) {
|
||||
this.version_string = this._get_version();
|
||||
this._generate_sub_versions();
|
||||
this._determine_plugin_generation();
|
||||
}
|
||||
},
|
||||
_get_version : function() {
|
||||
if(is_ie)
|
||||
{
|
||||
var vstr = this.vlc.VersionInfo;
|
||||
var words = vstr.split(" ");
|
||||
return words[0];
|
||||
}
|
||||
else
|
||||
if(navigator.plugins) {
|
||||
var plug = navigator.plugins['VLC multimedia plugin'];
|
||||
if(typeof plug == 'undefined')
|
||||
var plug = navigator.plugins['VLC Multimedia Plugin'];
|
||||
var ex = /^.*[vV]ersion [\"]*([^ \"]*)[\"]*.*$/;
|
||||
var ve = ex.exec(plug.description);
|
||||
if(ve[1])
|
||||
return ve[1];
|
||||
else
|
||||
return "0.0.0";
|
||||
}
|
||||
else
|
||||
return "0.0.0";
|
||||
},
|
||||
_generate_sub_versions : function() {
|
||||
if(this.version_string == "")
|
||||
return
|
||||
var ex = /([^\.]*)[\.]*([^\.]*)[\.]*([^\.-]*)[\.-]*([^\.]*).*$/;
|
||||
var ve = ex.exec(this.version_string);
|
||||
if(ve.length >1) this.version_level1 = ve[1];
|
||||
if(ve.length >2) this.version_level2 = ve[2];
|
||||
if(ve.length >3 && ve[3] != "") this.version_level3 = ve[3];
|
||||
if(ve.length >4 && ve[4] != "") this.version_level4 = ve[4];
|
||||
},
|
||||
_determine_plugin_generation : function() {
|
||||
if(is_ie)
|
||||
this.plugin = "ie1";
|
||||
else
|
||||
if(this.version_level1 <= "0" && this.version_level2 <= "8" && this.version_level3 <= "5")
|
||||
this.plugin = "moz1";
|
||||
else
|
||||
this.plugin = "moz2";
|
||||
},
|
||||
set_actual_mrl : function(mrl) {
|
||||
switch(this.plugin) {
|
||||
case "ie1":
|
||||
this.vlc.playlistClear();
|
||||
this.vlc.addTarget(mrl, this.options, 4+8, -666);
|
||||
break;
|
||||
case "moz2":
|
||||
this.vlc.playlist.clear();
|
||||
this.vlc.playlist.add(mrl, null, this.options);
|
||||
break;
|
||||
default:
|
||||
this.vlc.clear_playlist();
|
||||
this.vlc.add_item(mrl);
|
||||
break;
|
||||
}
|
||||
},
|
||||
play : function() {
|
||||
switch(this.plugin) {
|
||||
case "moz2": this.vlc.playlist.play();break;
|
||||
default: this.vlc.play();break;
|
||||
}
|
||||
},
|
||||
stop : function() {
|
||||
switch(this.plugin) {
|
||||
case "moz2": this.vlc.playlist.stop();break;
|
||||
default: this.vlc.stop();break;
|
||||
}
|
||||
},
|
||||
pause : function() {
|
||||
switch(this.plugin) {
|
||||
case "moz2":
|
||||
if(this.vlc.playlist.isPlaying)
|
||||
this.vlc.playlist.togglePause();
|
||||
break;
|
||||
default: this.vlc.pause(); break;
|
||||
}
|
||||
},
|
||||
next : function() {
|
||||
switch(this.plugin) {
|
||||
case "moz1": this.vlc.next();break;
|
||||
case "moz2": this.vlc.playlist.next();break;
|
||||
default: this.vlc.playlistNext();break;
|
||||
}
|
||||
},
|
||||
prev : function() {
|
||||
switch(this.plugin) {
|
||||
case "moz1": this.vlc.playlist.previous();break;
|
||||
case "moz2": this.vlc.playlist.prev();break;
|
||||
default: this.vlc.playlistPrev();break;
|
||||
}
|
||||
},
|
||||
is_playing : function() {
|
||||
switch(this.plugin) {
|
||||
case "ie1": return this.vlc.Playing;break;
|
||||
case "moz2": return this.vlc.playlist.isPlaying;break;
|
||||
default: return this.vlc.isplaying();break;
|
||||
}
|
||||
},
|
||||
toggle_fullscreen : function() {
|
||||
switch(this.plugin) {
|
||||
case "moz2": this.vlc.video.toggleFullscreen();break;
|
||||
default: this.vlc.fullscreen();break;
|
||||
}
|
||||
},
|
||||
set_volume : function(vol) {
|
||||
switch(this.plugin) {
|
||||
case "ie1": this.vlc.volume = vol;break;
|
||||
case "moz2": this.vlc.audio.volume = vol;break;
|
||||
default: this.vlc.set_volume(vol);break;
|
||||
}
|
||||
},
|
||||
get_volume : function() {
|
||||
switch(this.plugin) {
|
||||
case "ie1": return this.vlc.volume;break;
|
||||
case "moz2": return this.vlc.audio.volume;break;
|
||||
default: return this.vlc.get_volume();break;
|
||||
}
|
||||
},
|
||||
set_volume_delta : function(delta) {
|
||||
var new_vol = this.get_volume() + delta;
|
||||
new_vol = (new_vol >= 0) ? new_vol : 0;
|
||||
new_vol = (new_vol <= 200) ? new_vol : 200;
|
||||
this.set_volume(new_vol);
|
||||
},
|
||||
toggle_mute : function() {
|
||||
switch(this.plugin) {
|
||||
case "ie1": this.vlc.toggleMute();reak;
|
||||
case "moz2": this.vlc.audio.toggleMute();break;
|
||||
default: this.vlc.mute();break;
|
||||
}
|
||||
},
|
||||
press_key : function(key) {
|
||||
switch(this.plugin) {
|
||||
case "ie1":
|
||||
var keyvalue = this.vlc.getVariable(key);
|
||||
this.vlc.setVariable("key-pressed", keyvalue);
|
||||
break;
|
||||
case "moz2":
|
||||
var keyvalue = this.vlc.get_int_variable(key);
|
||||
this.vlc.set_int_variable("key-pressed", keyvalue);
|
||||
// alert("not implemented for this version of vlc");
|
||||
break;
|
||||
default:
|
||||
var keyvalue = this.vlc.get_int_variable(key);
|
||||
this.vlc.set_int_variable("key-pressed", keyvalue);
|
||||
break;
|
||||
}
|
||||
},
|
||||
snapshot : function() {
|
||||
this.press_key("key-snapshot");
|
||||
},
|
||||
change_audio_channel : function() {
|
||||
this.press_key("key-audio-track");
|
||||
},
|
||||
direct_record : function() {
|
||||
this.press_key("key-record");
|
||||
},
|
||||
set_resolution : function (w,h) {
|
||||
this.vlc.width = w;
|
||||
this.vlc.height = h;
|
||||
this.vlc.style.width = w;
|
||||
this.vlc.style.height = h;
|
||||
},
|
||||
have_options : function() {
|
||||
switch(this.plugin) {
|
||||
case "ie1":
|
||||
case "moz2": return true;break;
|
||||
default: return false;break;
|
||||
}
|
||||
},
|
||||
insert_control : function()
|
||||
{
|
||||
var vlc_control_html = "";
|
||||
if(is_ie) {
|
||||
vlc_control_html =
|
||||
"<object classid=\"clsid:E23FE9C6-778E-49D4-B537-38FCDE4887D8\" " +
|
||||
"width=\""+this.c_width+"\" height=\""+this.c_height+"\" id=\""+this.id+"\" events=\"True\">" +
|
||||
"<param name='ShowDisplay' value='"+this.c_show_display+"' />" +
|
||||
"<param name='Loop' value='"+this.c_loop+"' />" +
|
||||
"<param name='AutoPlay' value='"+this.c_auto_play+"' />" +
|
||||
"<param name=\"Visible\" value=\"-1\"/>" +
|
||||
"The VideoLan Client ActiveX is not installed.<br/>"+
|
||||
"You need <a href='http://www.videolan.org' target='_blank'>VideoLan Client</a> V0.8.5 or higher.<br/>" +
|
||||
"Install with Option ActiveX." +
|
||||
"</object>";
|
||||
}
|
||||
else {
|
||||
vlc_control_html = "<embed type='application/x-vlc-plugin'";
|
||||
if(this.plugin == "moz2")
|
||||
vlc_control_html += "version=\"VideoLAN.VLCPlugin.2\"";
|
||||
vlc_control_html +=
|
||||
"id='"+this.id+"'"+
|
||||
"autoplay='"+this.c_auto_play+"' loop='"+this.c_loop+"' width='"+this.c_width+"' height='"+this.c_height+"'" +
|
||||
"target='' >" +
|
||||
"</embed>";
|
||||
}
|
||||
obj_update(this.c_masterid,vlc_control_html);
|
||||
this.vlc = id(this.id);
|
||||
}
|
||||
};
|
6
src/nhttpd/web/Y_Version.txt
Normal file
6
src/nhttpd/web/Y_Version.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
version=2.5.0
|
||||
date=21.02.2007
|
||||
type=Release
|
||||
info=mod neutrino.dream plus
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user