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:
mrcolor
2009-12-08 11:05:11 +00:00
commit bc5bd4154e
876 changed files with 193775 additions and 0 deletions

21
src/nhttpd/AUTHORS Normal file
View 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
View 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
View 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
View 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

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

22
src/nhttpd/doc/index.html Normal file
View 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>

File diff suppressed because it is too large Load Diff

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

View 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

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

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

View 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

File diff suppressed because it is too large Load Diff

View 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
View 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
View 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__ */

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

View 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__*/

File diff suppressed because it is too large Load Diff

View 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
View File

@@ -0,0 +1,3 @@
Johannes Golombek [yjogol@cvs.tuxbox.org]

View 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

View 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
View 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,"&quot;");
_str = _str.replace(/'/g,"&quot;");
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
View 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&amp;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

View 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 &quot;{=name=}&quot; 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="&gt;&gt;&gt;" onclick="movechannels(document.getElementById('channels').bchannels, document.getElementById('channels').achannels);" /><br /><br />
<input type="button" value="&lt;&lt;&lt;" 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>

View 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&amp;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>&nbsp;
<a href="javascript:do_delete('%d','%s');">
<img src="/images/remove.png" alt="l&ouml;schen" style="border: 0px" /></a>&nbsp;
<span style="visibility:%s;"><a href="javascript:do_move('%d','down');">
<img src="/images/arrowdown.gif" alt="nach unten" style="border: 0px" /></a>&nbsp;</span>
<span style="visibility:%s;"><a href="javascript:do_move('%d','up');">
<img src="/images/arrowup.gif" alt="nach oben" style="border: 0px" /></a>&nbsp;</span>
</td>
</tr>
=}
{=func:bouquet_editor_main {=var-get:row=}=}
</table>
</div>
</div>
</body>
</html>

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

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

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

View 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 &amp; OSD</a></li>
~
<li class="disabled" title="dboxshot not installed at /bin or /var/bin">Remote &amp; 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);">&nbsp;<strong>-</strong>&nbsp;</a></span>
<span class="y_text_boxcontrol_button" title="increase volumen">
<a href="javascript:volumen_set(g_volumen+10);">&nbsp;<strong>+</strong>&nbsp;</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>

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

View File

@@ -0,0 +1 @@
{=include-block:Y_Blocks.txt;{=page=}=}

View 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">&nbsp;</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">&nbsp;</div>
<div id="d_info1" class="ep_info_info1">&nbsp;</div>
<div id="d_info2" class="ep_info_info2">&nbsp;</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>

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

View 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>&nbsp;</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=}

View 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>&nbsp;</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()"/>&nbsp;
</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>&nbsp;</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=}

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

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

View 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&uuml;fen</li>
~
<!--dbox2 only <li><a target="work" title="Check for Updates of yWeb" href="Y_Info_Updates.yhtm">Auf Updates pr&uuml;fen</a></li> dbox2 only-->
=}
</ul>
</div>
</div>
</div>
</body>
</html>

View 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&uuml;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
View 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>
~&nbsp;=}=}
</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>

View 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=}&amp;typ={=typ=}" height="400" width="390" scrolling="no" align="left" marginheight="0" marginwidth="0" frameborder="0">
Ihr Browser unterst&uuml;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&uuml;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>

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

View 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">&nbsp;</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>

View 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">&nbsp;</div>
<div id="info1">&nbsp;</div>
<div id="info2">For details: move the mouse on the corresponding program.</div>
</div>
</body>
</html>

View 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&amp;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&amp;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&amp;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>

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

View 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>&nbsp;</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>&nbsp;</td>
<td colspan="4">
<input type="checkbox" name="tdisplay" value="1" title="Display on while transcoding" checked="checked"/>Display on&nbsp;
<input type="checkbox" name="transon" value="1" title="use transcoding" onclick="on_transon_change()"/>Transcoding on
</td>
</tr>
<tr>
<td>&nbsp;</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>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
{=if-equal:{=mode=}~tv~
<tr><td class="y_form_section"><br/>Video</td><td class="y_form_section" colspan="4">&nbsp;</td></tr>
<tr>
<td>&nbsp;</td>
<td>Breite:</td>
<td><input type="text" name="twidth" size="4" value="384" class="y_live_button"/></td>
<td>H&ouml;he:</td>
<td><input type="text" name="theight" size="4" value="288" class="y_live_button"/></td>
</tr>
<tr>
<td>&nbsp;</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>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
=}
<tr><td class="y_form_section">Audio</td><td class="y_form_section" colspan="4">&nbsp;</td></tr>
<tr>
<td>&nbsp;</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>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr><td class="y_form_section">Mux</td><td class="y_form_section" colspan="4">&nbsp;</td></tr>
<tr>
<td>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
<script type="text/javascript">
//<![CDATA[
on_transon_change();
//]]>
</script>
</body>
</html>

View 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">&nbsp;</td></tr>
<tr>
<td>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr><td class="y_form_section"><br/>Audio</td><td class="y_form_section" colspan="4">&nbsp;</td></tr>
<tr>
<td>&nbsp;</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>&nbsp;</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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr><td class="y_form_section"><br/>Access</td><td class="y_form_section" colspan="4">&nbsp;</td></tr>
<tr>
<td>&nbsp;</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>&nbsp;</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>&nbsp;</td>
<td colspan="4">
<br/>
<input type="checkbox" name="tdisplay" value="1" title="Display on while transcoding" checked="checked"/>Display on
&nbsp;<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
View 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
View 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("&nbsp;&nbsp;&nbsp;REC&nbsp;&nbsp;&nbsp;", "&nbsp;&nbsp;(REC)&nbsp;&nbsp;", " ((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>&nbsp;</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 &#038; 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 &amp; 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>&nbsp;
<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>&nbsp;
<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;">&nbsp;</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>

View 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&uuml;zt.</p>
</body>
</noframes>
</frameset>
</html>

View 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 &amp; 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&amp;settings_backup_restore&amp;restore">
tar-File:&nbsp;<input type="file" name="filename" size="70"/>&nbsp;<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=}

View 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 &amp; Mozilla >= 0.8.6.1)</td></tr>
<tr>
<td>Deinterlace</td>
<td>
<input type="radio" name="deinterlace" value="false" title="deinterlace: off"/>Off&nbsp;
<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&nbsp;
<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=}

View 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 &amp; 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>

View 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>&nbsp;</td>
</tr>
</table>
<br>
<input type="button" value="Setzen" name="B1" title="submit values" onClick='do_it()'>
</form>
</div>
</body>
</html>

View 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/>(&#038; will be converted to &quot;;&quot; 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>&nbsp;</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=}

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

View 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&nbsp;
<input type="radio" name="type" value="cifs" onclick="change_type()"/>CIFS&nbsp;
<!-- <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>

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

View 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&nbsp;
<input type="radio" name="type" value="1"/>CIFS&nbsp;
<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&nbsp;
<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>

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

View File

@@ -0,0 +1,2 @@
{=var-set:neutrino={=form=}=}
{=include-block:Y_neutrino_Blocks.txt;neutrino_form=}

View 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&nbsp;
<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 &amp; 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>&nbsp;</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=}

View 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&amp;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"/>&nbsp;
<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>

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

View 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=}

View 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=}

View 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"/>&nbsp;
<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>

View 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">&nbsp;</TD>
<TD class="set">{=VideoFormat=}</TD>
</TR>
<TR>
<TD class="set"><B>Relation:</B></TD>
<TD>&nbsp;</TD>
<TD class="set"> <div align="left">{=AspectRatio=}</div></TD>
</TR>
<TR>
<TD class="set"><B>Bitrate:</B></TD>
<TD>&nbsp;</TD>
<TD class="set"> <div align="left">{=BitRate=} bit/sec</div></TD>
</TR>
<TR>
<TD class="set"><B>Framerate:</B></TD>
<TD>&nbsp;</TD>
<TD class="set"> <div align="left">{=FPS=} fps</div></TD>
</TR>
<TR>
<TD class="set"><B>Audiotype:</B></TD>
<TD>&nbsp;</TD>
<TD class="set"> <div align="left">{=AudioType=}</div></TD>
</TR>
<TR>
<TD class="set"><B>onid:</B></TD>
<TD>&nbsp;</TD>
<TD class="set"> <div align="left">{=onid=}</div></TD>
</TR>
<TR>
<TD class="set"><B>sid:</B></TD>
<TD>&nbsp;</TD>
<TD class="set"> <div align="left">{=sid=}</div></TD>
</TR>
<TR>
<TD class="set"><B>tsid:</B></TD>
<TD>&nbsp;</TD>
<TD class="set"> <div align="left">{=tsid=}</div></TD>
</TR>
<TR>
<TD class="set"><B>frequency:</B></TD>
<TD>&nbsp;</TD>
<TD class="set"> <div align="left">{=tsfrequency=} ({=polarisation=})</div></TD>
</TR>
<TR>
<TD class="set"><B>vpid:</B></TD>
<TD>&nbsp;</TD>
<TD class="set"> <div align="left">{=vpid=}</div></TD>
</TR>
<TR>
<TD class="set"><B>apid:</B></TD>
<TD>&nbsp;</TD>
<TD class="set"> <div align="left">{=apid=}</div></TD>
</TR>
<TR>
<TD class="set"><B>vtxtpid:</B></TD>
<TD>&nbsp;</TD>
<TD class="set"> <div align="left">{=vtxtpid=}</div></TD>
</TR>
</TABLE>
</CENTER>
</div>
</BODY>
</HTML>

View 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"/>
.&nbsp;<input type="text" name="amo" value="{=alarm_mon=}" size="2" maxlength="2"/>
.&nbsp;<input type="text" name="ay" value="{=alarm_year=}" size="4" maxlength="4"/>
&nbsp;Time&nbsp;<input type="text" name="ah" value="{=alarm_hour=}" size="2" maxlength="2"/>
&nbsp;:&nbsp;<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"/>
.&nbsp;<input type="text" name="smo" value="{=stop_mon=}" size="2" maxlength="2"/>
.&nbsp;<input type="text" name="sy" value="{=stop_year=}" size="4" maxlength="4"/>
&nbsp;Time&nbsp;<input type="text" name="sh" value="{=stop_hour=}" size="2" maxlength="2"/>
&nbsp;:&nbsp;<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>

View 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">&nbsp;</td>
<td class="ctimer">&nbsp;</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&amp;id=%d">
<img src="/images/remove.png" alt="del Timer"/></a>
</td>
<td>
<a href="/Y_Timer_Edit.yhtm?typ=modify&amp;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>

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

View 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&amp;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>

View 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&amp;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&amp;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">&nbsp;</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>

View 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 &amp; 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 &amp; 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()"/>&nbsp;
</form>
<form method="post" name="log" action="">
<b>Check Results</b><br/>
<table class="y_work_table" cellpadding="4">
<thead align="left">
<tr>
<th>&nbsp;</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>

View 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:&nbsp;</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=}

View 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">&nbsp;</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">&nbsp;</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=}

View 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&amp;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&nbsp;</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=}

View 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&amp;kernel-stack");'/>
<input type="button" value="Processes" title="show currently running processes" onclick='goUrl("/control/exec?Y_Tools&amp;ps");'/>
<input type="button" value="Memory" title="show memory space" onclick='goUrl("/control/exec?Y_Tools&amp;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&amp;proc&amp;cpuinfo");'/>
<input type="button" value="MEM info" onclick='goUrl("/control/exec?Y_Tools&amp;proc&amp;meminfo");'/>
<input type="button" value="Partitions" onclick='goUrl("/control/exec?Y_Tools&amp;proc&amp;partitions");'/>
<input type="button" value="mtd" onclick='goUrl("/control/exec?Y_Tools&amp;proc&amp;mtd");'/>
<input type="button" value="Stat" onclick='goUrl("/control/exec?Y_Tools&amp;proc&amp;stat");'/>
<input type="button" value="version" onclick='goUrl("/control/exec?Y_Tools&amp;proc&amp;version");'/>
</td></tr>
</table>
</form>
</div>
</div>
</body>
</html>

View 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&amp;installer" target="out">
tar-File:&nbsp;<input type="file" name="filename" size="70"/>&nbsp;<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=}

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

View 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">&nbsp;&nbsp;&nbsp; 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>

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

View 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()"/>&nbsp;
<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()"/>&nbsp;
<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>&nbsp;</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>

View 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>
&nbsp;Filename:<input type="text" value="a" id="file" size="16"/>
<br/>
<img id="shot" src="" style="visibility:hidden;"/>
</div>
</div>
</body>
</html>

View 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 &amp; 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
View 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);
}
};

View 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