Merge remote-tracking branch 'uncool/cst-next'

This need buildfixes and some functional updates...
This commit is contained in:
Stefan Seyfried
2015-12-13 17:41:55 +01:00
320 changed files with 21291 additions and 13199 deletions

View File

@@ -1,21 +0,0 @@
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>

View File

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

View File

@@ -13,7 +13,6 @@ AM_CPPFLAGS += \
-I$(top_srcdir)/src/nhttpd/yhttpd_core \
-I$(top_srcdir)/src/nhttpd/yhttpd_mods \
-I$(top_srcdir)/src/nhttpd/tuxboxapi \
-I$(top_srcdir)/src/nhttpd/tuxboxapi/coolstream \
-I$(top_srcdir)/lib/libeventserver \
-I$(top_srcdir)/lib/libconfigfile \
-I$(top_srcdir)/lib/connection \

View File

@@ -1,55 +0,0 @@
------------------------------------------------------------------------------
nhttpd Version 3.x = (yhttpd 3.x + tuxboxapi)
------------------------------------------------------------------------------
25.02.2010 (yjogol)
-------------------
C/C++ Coding-Style switched to GNU-Style
All Files edited with Tab width = 4
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
------------------------------------------------------------------------------
nhttpd.conf Description
------------------------------------------------------------------------------
Language.directory=languages
Language.selected=Deutsch
Tuxbox.LogosURL=
WebsiteMain.directory=/share/tuxbox/neutrino/httpd // Main HTML,Javascript, Images Directoty root (e.g. read-only area in mFlash)
WebsiteMain.override_directory=/var/httpd // Override directory (writable) for extensions or Updates. Webserver first search here.
WebsiteMain.port=80 // Port the webserver is running on
WebsiteMain.hosted_directory=/mnt/hosted // our own directory hosted by the webserver. Adressable with <box ip>/hosted/<your files>
configfile.version=4 // Version of this config file
mod_auth.authenticate=false // ask for username/password (http digit authentication)
mod_auth.no_auth_client= // IP Adress without http authentication
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=false
webserver.websites=WebsiteMain // Dont change
#if SSL compiled
WebsiteMain.ssl=false
WebsiteMain.ssl_pemfile
WebsiteMain.ssl_ca_file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,20 +0,0 @@
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

@@ -1,2 +1,34 @@
SUBDIRS = coolstream
AM_CPPFLAGS = -fno-rtti -fno-exceptions -D__STDC_FORMAT_MACROS -D_FILE_OFFSET_BITS=64
AM_CPPFLAGS += \
-I$(top_builddir) \
-I$(top_srcdir) \
-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 \
@SIGC_CFLAGS@ \
@FREETYPE_CFLAGS@
if BOXTYPE_COOL
if BOXMODEL_APOLLO
AM_CPPFLAGS += -I$(top_srcdir)/lib/libcoolstream2
else
AM_CPPFLAGS += -I$(top_srcdir)/lib/libcoolstream
endif
endif
if BOXTYPE_TRIPLE
AM_CPPFLAGS += -I$(top_srcdir)/lib/libtriple
endif
noinst_LIBRARIES = libnhttpd_tuxboxapi.a
libnhttpd_tuxboxapi_a_SOURCES = \
neutrinoapi.cpp neutrinoyparser.cpp controlapi.cpp

View File

@@ -39,6 +39,8 @@
#include <driver/screenshot.h>
#include <gui/rc_lock.h>
#include <rcsim.h>
#include <driver/pictureviewer/pictureviewer.h>
extern CPictureViewer *g_PicViewer;
// yhttpd
#include <yhttpd.h>
@@ -79,9 +81,11 @@ void CControlAPI::init(CyhookHandler *hh)
PLUGIN_DIRS[1].append("/scripts");
PLUGIN_DIRS[2]=PLUGIN_DIRS[3]=hh->WebserverConfigList["WebsiteMain.directory"];
PLUGIN_DIRS[3].append("/scripts");
PLUGIN_DIRS[4]="/var/tuxbox/plugins";
PLUGIN_DIRS[5]=PLUGINDIR;
PLUGIN_DIRS[6]="/mnt/plugins";
PLUGIN_DIRS[4]=GAMESDIR;
PLUGIN_DIRS[5]=g_settings.plugin_hdd_dir;
PLUGIN_DIRS[6]=PLUGINDIR_MNT;
PLUGIN_DIRS[7]=PLUGINDIR_VAR;
PLUGIN_DIRS[8]=PLUGINDIR;
}
}
@@ -154,7 +158,9 @@ const CControlAPI::TyCgiCall CControlAPI::yCgiCallList[]=
// channel & bouquet & epg & zapping handling
{"getservicesxml", &CControlAPI::GetServicesxmlCGI,""},
{"getbouquetsxml", &CControlAPI::GetBouquetsxmlCGI,""},
{"getubouquetsxml", &CControlAPI::GetUBouquetsxmlCGI,""},
{"channellist", &CControlAPI::ChannellistCGI, "text/plain"},
{"logolist", &CControlAPI::LogolistCGI, "text/plain"},
{"getbouquet", &CControlAPI::GetBouquetCGI, "+xml"},
{"getbouquets", &CControlAPI::GetBouquetsCGI, "+xml"},
{"getmode", &CControlAPI::GetModeCGI, "text/plain"},
@@ -176,6 +182,7 @@ const CControlAPI::TyCgiCall CControlAPI::yCgiCallList[]=
{"version", &CControlAPI::VersionCGI, ""},
{"reloadsetup", &CControlAPI::ReloadNeutrinoSetupCGI, ""},
{"reloadplugins", &CControlAPI::ReloadPluginsCGI, ""},
{"reloadchannels", &CControlAPI::ReloadChannelsCGI, ""},
#ifdef SCREENSHOT
{"screenshot", &CControlAPI::ScreenshotCGI, ""},
#endif
@@ -334,17 +341,27 @@ void CControlAPI::SetModeCGI(CyhookHandler *hh)
if (hh->ParamList["1"] == "radio") // switch to radio mode
{
int mode = NeutrinoMessages::mode_radio;
NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::CHANGEMODE, CEventServer::INITID_HTTPD, (void *)&mode,sizeof(int));
sleep(1);
NeutrinoAPI->UpdateBouquets();
if(CNeutrinoApp::getInstance()->getMode() != NeutrinoMessages::mode_standby){
int mode = NeutrinoMessages::mode_radio;
NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::CHANGEMODE, CEventServer::INITID_HTTPD, (void *)&mode,sizeof(int));
sleep(1);
NeutrinoAPI->UpdateBouquets();
}else{
extern CRemoteControl * g_RemoteControl;
g_RemoteControl->radioMode();
}
}
else if (hh->ParamList["1"] == "tv") // switch to tv mode
{
int mode = NeutrinoMessages::mode_tv;
NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::CHANGEMODE, CEventServer::INITID_HTTPD, (void *)&mode,sizeof(int));
sleep(1);
NeutrinoAPI->UpdateBouquets();
if(CNeutrinoApp::getInstance()->getMode() != NeutrinoMessages::mode_standby){
int mode = NeutrinoMessages::mode_tv;
NeutrinoAPI->EventServer->sendEvent(NeutrinoMessages::CHANGEMODE, CEventServer::INITID_HTTPD, (void *)&mode,sizeof(int));
sleep(1);
NeutrinoAPI->UpdateBouquets();
}else{
extern CRemoteControl * g_RemoteControl;
g_RemoteControl->tvMode();
}
}
else if (hh->ParamList["record"] == "start") // start record mode
{
@@ -554,6 +571,13 @@ void CControlAPI::GetBouquetsxmlCGI(CyhookHandler *hh)
{
hh->SendFile(CONFIGDIR "/zapit/bouquets.xml");
}
//-----------------------------------------------------------------------------
// send ubouquets.xml
void CControlAPI::GetUBouquetsxmlCGI(CyhookHandler *hh)
{
hh->SendFile(CONFIGDIR "/zapit/ubouquets.xml");
}
//-----------------------------------------------------------------------------
// get actual channel_id
@@ -822,6 +846,41 @@ void CControlAPI::ChannellistCGI(CyhookHandler *hh)
SendChannelList(hh);
}
void CControlAPI::LogolistCGI(CyhookHandler *hh)
{
std::string result = "";
int mode = NeutrinoAPI->Zapit->getMode();
CBouquetManager::ChannelIterator cit = mode == CZapitClient::MODE_RADIO ? g_bouquetManager->radioChannelsBegin() : g_bouquetManager->tvChannelsBegin();
for (; !(cit.EndOfChannels()); cit++)
{
std::vector<t_channel_id> v;
CZapitChannel * channel = *cit;
size_t pos = std::find(v.begin(), v.end(), channel->getChannelID()) - v.begin();
if (pos < v.size())
continue;
v.push_back(channel->getChannelID());
result += string_printf(PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS";%s;"PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS"", channel->getChannelID(), channel->getName().c_str(), (channel->getChannelID() & 0xFFFFFFFFFFFFULL));
if (hh->ParamList["1"].compare("files") == 0)
{
std::string logoFile = "";
std::string logoLink = "";
char link[PATH_MAX + 1] = {0};
if (g_PicViewer->GetLogoName(channel->getChannelID(), NeutrinoAPI->GetServiceName(channel->getChannelID()), logoFile, NULL, NULL))
{
result += string_printf(";%s", logoFile.c_str());
realpath(logoFile.c_str(), link);
logoLink = string(link);
if (strcmp(logoFile.c_str(), logoLink.c_str()) != 0)
result += string_printf(";%s", logoLink.c_str());
}
}
result += "\n";
}
hh->SetHeader(HTTP_OK, "text/plain; charset=UTF-8");
hh->WriteLn(result);
}
//-----------------------------------------------------------------------------
// get actual and next event data for given channel
//-----------------------------------------------------------------------------
@@ -1327,23 +1386,31 @@ inline static bool sortByDateTime (const CChannelEvent& a, const CChannelEvent&
return a.startTime < b.startTime;
}
extern const char * GetGenre(const unsigned char contentClassification); // UTF-8
void CControlAPI::EpgSearchXMLCGI(CyhookHandler *hh)
{
EpgSearchCGI(hh, true);//xml_forat = true
}
void CControlAPI::EpgSearchTXTCGI(CyhookHandler *hh)
{
EpgSearchCGI(hh, false);//xml_forat = false
EpgSearchCGI(hh, true); //xml_format = true
}
void CControlAPI::EpgSearchCGI(CyhookHandler *hh, bool xml_forat )
void CControlAPI::EpgSearchTXTCGI(CyhookHandler *hh)
{
EpgSearchCGI(hh, false); //xml_format = false
}
void CControlAPI::EpgSearchCGI(CyhookHandler *hh, bool xml_format )
{
t_channel_id channel_id;
CChannelEventList evtlist;
bool param_empty = hh->ParamList.empty();
const int m_search_epg_item = 5;
if(!param_empty){
if(xml_forat){
CChannelEventList evtlist;
if (!hh->ParamList.empty()) {
bool search_epginfo = true;
if (hh->ParamList["epginfo"] == "false")
search_epginfo = false;
const int m_search_epg_item = search_epginfo ? 5 /*SEARCH_EPG_ALL*/ : 1 /*SEARCH_EPG_TITLE*/;
std::string m_search_keyword = hh->ParamList["1"];
if(xml_format){
hh->SetHeader(HTTP_OK, "text/xml; charset=UTF-8");
hh->WriteLn("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
hh->WriteLn("<neutrino commandversion=\"1\">");
@@ -1351,8 +1418,6 @@ void CControlAPI::EpgSearchCGI(CyhookHandler *hh, bool xml_forat )
else{
hh->SetHeader(HTTP_OK, "text/plain; charset=UTF-8"); // default
}
std::string m_search_keyword =hh->ParamList["1"];
std::vector<t_channel_id> v;
int channel_nr = CNeutrinoApp::getInstance ()->channelList->getSize();//unique channelList TV or Radio
@@ -1396,12 +1461,14 @@ void CControlAPI::EpgSearchCGI(CyhookHandler *hh, bool xml_forat )
if( (eventIterator->startTime+eventIterator->duration) < u_azeit)
continue;
struct tm *tmStartZeit = localtime(&eventIterator->startTime);
if(xml_forat){
if(xml_format){
hh->printf("\t<epgsearch>");
hh->printf("\t\t<channelname>%s</channelname>\n",ZapitTools::UTF8_to_UTF8XML(NeutrinoAPI->GetServiceName(eventIterator->channelID).c_str()).c_str());;
hh->printf("\t\t<epgtitle>%s</epgtitle>\n",ZapitTools::UTF8_to_UTF8XML(epg.title.c_str()).c_str());
hh->printf("\t\t<info1>%s</info1>\n",ZapitTools::UTF8_to_UTF8XML(epg.info1.c_str()).c_str());
hh->printf("\t\t<info2>%s</info2>\n",ZapitTools::UTF8_to_UTF8XML(epg.info2.c_str()).c_str());
if (search_epginfo) {
hh->printf("\t\t<info1>%s</info1>\n",ZapitTools::UTF8_to_UTF8XML(epg.info1.c_str()).c_str());
hh->printf("\t\t<info2>%s</info2>\n",ZapitTools::UTF8_to_UTF8XML(epg.info2.c_str()).c_str());
}
if (CEitManager::getInstance()->getEPGid(eventIterator->eventID, eventIterator->startTime, &longepg)) {
hh->printf("\t\t<fsk>%u</fsk>\n", longepg.fsk);
#ifdef FULL_CONTENT_CLASSIFICATION
@@ -1440,10 +1507,12 @@ void CControlAPI::EpgSearchCGI(CyhookHandler *hh, bool xml_forat )
hh->WriteLn(datetimer_str);
hh->WriteLn(NeutrinoAPI->GetServiceName(eventIterator->channelID));
hh->WriteLn(epg.title);
if(!epg.info1.empty())
hh->WriteLn(epg.info1);
if(!epg.info2.empty())
hh->WriteLn(epg.info2);
if (search_epginfo) {
if(!epg.info1.empty())
hh->WriteLn(epg.info1);
if(!epg.info2.empty())
hh->WriteLn(epg.info2);
}
if (CEitManager::getInstance()->getEPGid(eventIterator->eventID, eventIterator->startTime, &longepg)) {
hh->printf("fsk:%u\n", longepg.fsk);
#ifdef FULL_CONTENT_CLASSIFICATION
@@ -1465,7 +1534,7 @@ void CControlAPI::EpgSearchCGI(CyhookHandler *hh, bool xml_forat )
}
}
}
if(xml_forat)
if(xml_format)
hh->printf("</neutrino>");
}else
hh->SendError();
@@ -1591,6 +1660,14 @@ void CControlAPI::ReloadPluginsCGI(CyhookHandler *hh)
hh->SendOk();
}
void CControlAPI::ReloadChannelsCGI(CyhookHandler *hh)
{
CServiceManager::getInstance()->SaveServices(true, true);
NeutrinoAPI->Zapit->reinitChannels();
CNeutrinoApp::getInstance()->SDTreloadChannels = false;
hh->SendOk();
}
#ifdef SCREENSHOT
void CControlAPI::ScreenshotCGI(CyhookHandler *hh)
{
@@ -1962,7 +2039,7 @@ void CControlAPI::SendTimers(CyhookHandler *hh)
"Unknown TV-Channel" : "Unknown Radio-Channel");
}
else
sprintf(zAddData, PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS, timer->channel_id);
snprintf(zAddData,sizeof(zAddData), PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS, timer->channel_id);
zAddData[22]=0;
@@ -1970,7 +2047,7 @@ void CControlAPI::SendTimers(CyhookHandler *hh)
case CTimerd::TIMER_STANDBY:
if (!send_id)
sprintf(zAddData,"Standby: %s",(timer->standby_on ? "ON" : "OFF"));
snprintf(zAddData,sizeof(zAddData),"Standby: %s",(timer->standby_on ? "ON" : "OFF"));
break;
case CTimerd::TIMER_REMIND :

View File

@@ -42,7 +42,7 @@ private:
void epgDetailList(CyhookHandler *hh);
void EpgSearchXMLCGI(CyhookHandler *hh);
void EpgSearchTXTCGI(CyhookHandler *hh);
void EpgSearchCGI(CyhookHandler *hh, bool xml_forat = false);
void EpgSearchCGI(CyhookHandler *hh, bool xml_format = false);
// subs
friend class CNeutrinoWebserver; // for timer /fb/ compatibility
void doModifyTimer(CyhookHandler *hh);
@@ -70,6 +70,7 @@ private:
void GetTimeCGI(CyhookHandler *hh);
void GetServicesxmlCGI(CyhookHandler *hh);
void GetBouquetsxmlCGI(CyhookHandler *hh);
void GetUBouquetsxmlCGI(CyhookHandler *hh);
void GetChannel_IDCGI(CyhookHandler *hh);
void GetTPChannel_IDCGI(CyhookHandler *hh);
void MessageCGI(CyhookHandler *hh);
@@ -78,12 +79,14 @@ private:
void ShutdownCGI(CyhookHandler *hh);
void VolumeCGI(CyhookHandler *hh);
void ChannellistCGI(CyhookHandler *hh);
void LogolistCGI(CyhookHandler *hh);
void GetBouquetCGI(CyhookHandler *hh);
void GetBouquetsCGI(CyhookHandler *hh);
void EpgCGI(CyhookHandler *hh);
void VersionCGI(CyhookHandler *hh);
void ReloadNeutrinoSetupCGI(CyhookHandler *hh);
void ReloadPluginsCGI(CyhookHandler *hh);
void ReloadChannelsCGI(CyhookHandler *hh);
void ScreenshotCGI(CyhookHandler *hh);
void ZaptoCGI(CyhookHandler *hh);
void StartPluginCGI(CyhookHandler *hh);
@@ -114,7 +117,7 @@ private:
protected:
static const unsigned int PLUGIN_DIR_COUNT = 7;
static const unsigned int PLUGIN_DIR_COUNT = 9;
static std::string PLUGIN_DIRS[PLUGIN_DIR_COUNT];
CNeutrinoAPI *NeutrinoAPI;

View File

@@ -1,24 +0,0 @@
AM_CPPFLAGS = -fno-rtti -fno-exceptions -D__STDC_FORMAT_MACROS -D_FILE_OFFSET_BITS=64
AM_CPPFLAGS += \
-I$(top_builddir) \
-I$(top_srcdir) \
-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 \
@SIGC_CFLAGS@ \
@FREETYPE_CFLAGS@ \
@HWLIB_CFLAGS@
noinst_LIBRARIES = libnhttpd_tuxboxapi.a
libnhttpd_tuxboxapi_a_SOURCES = \
neutrinoapi.cpp neutrinoyparser.cpp controlapi.cpp

View File

@@ -1,20 +0,0 @@
AM_CPPFLAGS = -fno-rtti -fno-exceptions -D_FILE_OFFSET_BITS=64
AM_CPPFLAGS += \
-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

@@ -1,117 +0,0 @@
//=============================================================================
// 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 EsoundCGI(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$");}
virtual THandleStatus Hook_SendResponse(CyhookHandler *hh);
virtual THandleStatus Hook_PrepareResponse(CyhookHandler *hh);
};
#endif /* __nhttpd_neutrinocontrolapi_hpp__ */

View File

@@ -1,220 +0,0 @@
/*
nhttpd - DBoxII-Project
Copyright (C) 2001/2002 Dirk Szymanski 'Dirch'
Copyright (C) 2005 SnowHead
$Id: lcdapi.cpp,v 1.1.2.1 2010/02/21 10:10:12 cvs 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
}

View File

@@ -1,61 +0,0 @@
/*
nhttpd - DBoxII-Project
Copyright (C) 2001/2002 Dirk Szymanski 'Dirch'
Copyright (C) 2005 SnowHead
$Id: lcdapi.h,v 1.1.2.1 2010/02/21 10:10:12 cvs 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

@@ -1,424 +0,0 @@
//=============================================================================
// 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;
#ifndef initialize_iso639_map
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;
}
#endif
//-----------------------------------------------------------------------------
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");
EventServer->registerEvent2( NeutrinoMessages::ESOUND_ON, CEventServer::INITID_HTTPD, "/tmp/neutrino.sock");
EventServer->registerEvent2( NeutrinoMessages::ESOUND_OFF, 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)
{
BouquetList.clear();
Zapit->getBouquets(BouquetList, true);
for (unsigned int i = 1; i <= BouquetList.size(); i++)
UpdateBouquet(i);
UpdateChannelList();
}
//-------------------------------------------------------------------------
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, 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, 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, ",");
CZapitClient::BouquetChannelList *channellist = GetChannelList(CZapitClient::MODE_CURRENT);
CZapitClient::BouquetChannelList::iterator channel = channellist->begin();
for(; channel != channellist->end();channel++)
{
std::string channel_name = channel->name;
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 = channel->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++;
}
}
bitInfo[4] = 37500;
bitInfo[6] = 3;
fclose(fd);
return true;
}
//-------------------------------------------------------------------------
bool CNeutrinoAPI::GetChannelEvents(void)
{
eList = Sectionsd->getChannelEvents();
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)
{
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;
return "";
}
//-------------------------------------------------------------------------
CZapitClient::BouquetChannelList *CNeutrinoAPI::GetBouquet(unsigned int BouquetNr, int Mode)
{
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];
}
//-------------------------------------------------------------------------
CZapitClient::BouquetChannelList *CNeutrinoAPI::GetChannelList(int Mode)
{
int mode;
if (Mode == CZapitClient::MODE_CURRENT)
mode = Zapit->getMode();
else
mode = Mode;
if (mode == CZapitClient::MODE_TV)
return &TVChannelList;
else
return &RadioChannelList;
}
//-------------------------------------------------------------------------
void CNeutrinoAPI::UpdateBouquet(unsigned int BouquetNr)
{
TVBouquetsList[BouquetNr].clear();
RadioBouquetsList[BouquetNr].clear();
Zapit->getBouquetChannels(BouquetNr - 1, TVBouquetsList[BouquetNr], CZapitClient::MODE_TV);
Zapit->getBouquetChannels(BouquetNr - 1, RadioBouquetsList[BouquetNr], CZapitClient::MODE_RADIO);
}
//-------------------------------------------------------------------------
void CNeutrinoAPI::UpdateChannelList(void)
{
TVChannelList.clear();
RadioChannelList.clear();
Zapit->getChannels(RadioChannelList, CZapitClient::MODE_RADIO);
Zapit->getChannels(TVChannelList, CZapitClient::MODE_TV);
}
//-------------------------------------------------------------------------
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

@@ -1,90 +0,0 @@
#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 CNeutrinoYParserCoolstream; // Backreference
friend class CControlAPI;
};
#endif /*__nhttpd_neutrinoapi_h__*/

File diff suppressed because it is too large Load Diff

View File

@@ -1,70 +0,0 @@
//=============================================================================
// 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$");}
virtual THandleStatus Hook_SendResponse(CyhookHandler *hh);
virtual THandleStatus Hook_ReadConfig(CConfigFile *Config, CStringList &ConfigList);
};
#endif /*__nhttpd_neutrinoyparser_h__*/

View File

@@ -189,8 +189,7 @@ void CNeutrinoAPI::ZapToChannelId(t_channel_id channel_id)
}
CMoviePlayerGui::getInstance().stopPlayBack();
if (Zapit->zapTo_serviceID(channel_id) != CZapitClient::ZAP_INVALID_PARAM)
Sectionsd->setServiceChanged(channel_id, false);
Zapit->zapTo_serviceID(channel_id);
}
//-------------------------------------------------------------------------
@@ -203,8 +202,7 @@ void CNeutrinoAPI::ZapToSubService(const char * const target)
&channel_id);
CMoviePlayerGui::getInstance().stopPlayBack();
if (Zapit->zapTo_subServiceID(channel_id) != CZapitClient::ZAP_INVALID_PARAM)
Sectionsd->setServiceChanged(channel_id, false);
Zapit->zapTo_subServiceID(channel_id);
}
//-------------------------------------------------------------------------
t_channel_id CNeutrinoAPI::ChannelNameToChannelId(std::string search_channel_name)

View File

@@ -112,6 +112,7 @@ const CNeutrinoYParser::TyFuncCall CNeutrinoYParser::yFuncCallList[]=
{"get_channels_as_dropdown", &CNeutrinoYParser::func_get_channels_as_dropdown},
{"get_bouquets_with_epg", &CNeutrinoYParser::func_get_bouquets_with_epg},
{"get_actual_channel_id", &CNeutrinoYParser::func_get_actual_channel_id},
{"get_logo_name", &CNeutrinoYParser::func_get_logo_name},
{"get_mode", &CNeutrinoYParser::func_get_mode},
{"get_video_pids", &CNeutrinoYParser::func_get_video_pids},
{"get_audio_pid", &CNeutrinoYParser::func_get_radio_pid},
@@ -300,11 +301,11 @@ std::string CNeutrinoYParser::func_get_channels_as_dropdown(CyhookHandler *, st
CEPGData epg;
CZapitChannel * channel = channels[j];
char buf[100],id[20];
sprintf(id,PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS,channel->getChannelID());
snprintf(id,sizeof(id),PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS,channel->getChannelID());
std::string _sid = std::string(id);
sel = (_sid == achannel_id) ? "selected=\"selected\"" : "";
CEitManager::getInstance()->getActualEPGServiceKey(channel->getChannelID(), &epg);
sprintf(buf,"<option value=" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS " %s>%.20s - %.30s</option>\n", channel->getChannelID(), sel.c_str(), channel->getName().c_str(),epg.title.c_str());
snprintf(buf,sizeof(buf),"<option value=" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS " %s>%.20s - %.30s</option>\n", channel->getChannelID(), sel.c_str(), channel->getName().c_str(),epg.title.c_str());
yresult += buf;
}
}
@@ -351,8 +352,9 @@ std::string CNeutrinoYParser::func_get_bouquets_with_epg(CyhookHandler *hh, std:
std::string timestr;
bool have_logos = false;
if(!hh->WebserverConfigList["Tuxbox.LogosURL"].empty())
if (!hh->WebserverConfigList["Tuxbox.LogosURL"].empty() && hh->WebserverConfigList["Tuxbox.DisplayLogos"] == "true" )
have_logos = true;
for(int j = 0; j < (int) channels.size(); j++)
{
CZapitChannel * channel = channels[j];
@@ -366,11 +368,33 @@ std::string CNeutrinoYParser::func_get_bouquets_with_epg(CyhookHandler *hh, std:
std::string bouquetstr = (BouquetNr >= 0) ? ("&amp;bouquet=" + itoa(BouquetNr)) : "";
yresult += "<tr>";
if(have_logos)
yresult += string_printf("<td class=\"%c logo_cell\" width=\"44\" rowspan=\"2\"><a href=\"javascript:do_zap('"
PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS
"')\"><img class=\"channel_logo\" src=\"%s\"/></a></td>", classname, channel->getChannelID(),
(NeutrinoAPI->getLogoFile(hh->WebserverConfigList["Tuxbox.LogosURL"], channel->getChannelID())).c_str());
if (have_logos) {
std::string channel_logo = NeutrinoAPI->getLogoFile(hh->WebserverConfigList["Tuxbox.LogosURL"], channel->getChannelID());
std::string zaplink;
if (channel_logo.empty())
zaplink = channel->getName().c_str();
else
zaplink = string_printf(
"<img class=\"channel_logo\" src=\"%s\" title=\"%s\" alt=\"%s\" />"
, channel_logo.c_str()
, channel->getName().c_str()
, channel->getName().c_str()
);
yresult += string_printf(
"<td class=\"%c logo_cell %s\" width=\"44\" rowspan=\"2\">"
"<a href=\"javascript:do_zap('"PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS"')\">"
"%s"
"</a>"
"</td>"
, classname
, (channel_logo.empty() ? "no_logo" : "")
, channel->getChannelID()
, zaplink.c_str()
, channel->getName().c_str()
, channel->getName().c_str()
);
}
/* timer slider */
if(event && event->duration > 0)
@@ -473,7 +497,7 @@ std::string CNeutrinoYParser::func_get_bouquets_with_epg(CyhookHandler *hh, std:
yresult += string_printf("<tr><td class=\"%cepg\">",classname);
yresult += string_printf("%s&nbsp;%s&nbsp;"
"<span style=\"font-size: 8pt; white-space: nowrap\">(%ld {=L:von=} %d {=L:min=}, %d%%)</span>"
"<span style=\"font-size: 8pt; white-space: nowrap\">(%ld {=L:from=} %d {=L:unit.short.minute=}, %d%%)</span>"
, timestr.c_str()
, event->description.c_str()
, (time(NULL) - event->startTime)/60
@@ -499,6 +523,20 @@ std::string CNeutrinoYParser::func_get_actual_channel_id(CyhookHandler *, std::
{
return string_printf(PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS, CZapit::getInstance()->GetCurrentChannelID());
}
//-------------------------------------------------------------------------
// func: Get Logo Name
//-------------------------------------------------------------------------
std::string CNeutrinoYParser::func_get_logo_name(CyhookHandler *hh, std::string channelId)
{
if (hh->WebserverConfigList["Tuxbox.DisplayLogos"] == "true") {
t_channel_id cid;
if (1 == sscanf(channelId.c_str(), "%llx", &cid))
return NeutrinoAPI->getLogoFile(hh->WebserverConfigList["Tuxbox.LogosURL"], cid);
}
return "";
}
//-------------------------------------------------------------------------
// y-func : get_mode (returns tv|radio|unknown)
//-------------------------------------------------------------------------

View File

@@ -36,6 +36,7 @@ private:
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_logo_name(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);

View File

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

View File

@@ -1,6 +1,6 @@
SUBDIRS = images scripts languages styles
installdir = $(DATADIR)/neutrino/httpd
installdir = $(PRIVATE_HTTPDDIR)
install_DATA = channels.js \
channels.txt \

View File

@@ -3,8 +3,19 @@
$Revision$
*/
var baselib_version="2.0.0";
var agt=navigator.userAgent.toLowerCase();
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var tmp = document.documentMode, e, isIE;
// Try to force this property to be a string.
try{document.documentMode = "";}
catch(e){ };
// If document.documentMode is a number, then it is a read-only property, and so
// we have IE 8+.
// Otherwise, if conditional compilation works, then we have IE < 11.
// Otherwise, we have a non-IE browser.
isIE = typeof document.documentMode == "number" || new Function("return/*@cc_on!@*/!1")( );
// Switch back the value to be unobtrusive for non-IE browsers.
try{document.documentMode = tmp;}
catch(e){ };
/*DHTML-Basics*/
function $yN(_obj_name)
{

View File

@@ -59,6 +59,7 @@ start-block~nhttpd_save_settings
{=ini-set:/var/tuxbox/config/nhttpd.conf;mod_sendfile.mime_types;{=mod_sendfile_mime_types=}~cache=}
{=ini-set:/var/tuxbox/config/nhttpd.conf;mod_sendfile.sendAll;{=mod_sendfile_sendAll=}~cache=}
{=ini-set:/var/tuxbox/config/nhttpd.conf;Language.selected;{=language=}~cache=}
{=ini-set:/var/tuxbox/config/nhttpd.conf;Tuxbox.DisplayLogos;{=Tuxbox_DisplayLogos=}~cache=}
{=ini-set:/var/tuxbox/config/nhttpd.conf;Tuxbox.LogosURL;{=Tuxbox_LogosURL=}~save=}
{=func:do_reload_httpd_config=}
end-block~nhttpd_save_settings
@@ -542,52 +543,52 @@ end-block~remote
start-block~rc_cst_v1
<img src="images/rc_cst_v1.jpg" usemap="#rc" alt="remote" />
<map name="rc" id="rc">
<area shape="rect" href="javascript:rcsim('KEY_POWER')" coords="330, 38, 355, 68" />
<area shape="rect" href="javascript:rcsim('KEY_MUTE')" coords="225, 37, 252, 66" />
<area shape="rect" href="javascript:rcsim('KEY_1')" coords="220, 85, 259, 119" />
<area shape="rect" href="javascript:rcsim('KEY_2')" coords="273, 79, 313, 104" />
<area shape="rect" href="javascript:rcsim('KEY_3')" coords="330, 85, 365, 120" />
<area shape="rect" href="javascript:rcsim('KEY_4')" coords="220, 125, 259, 160" />
<area shape="rect" href="javascript:rcsim('KEY_5')" coords="273, 120, 313, 145" />
<area shape="rect" href="javascript:rcsim('KEY_6')" coords="330, 125, 365, 160" />
<area shape="rect" href="javascript:rcsim('KEY_7')" coords="220, 170, 259, 200" />
<area shape="rect" href="javascript:rcsim('KEY_8')" coords="273, 160, 313, 185" />
<area shape="rect" href="javascript:rcsim('KEY_9')" coords="330, 170, 365, 200" />
<area shape="rect" href="javascript:rcsim('KEY_0')" coords="273, 200, 313, 230" />
<area shape="rect" href="javascript:rcsim('KEY_INFO')" coords="330, 210, 365, 245" />
<area shape="rect" href="javascript:rcsim('KEY_SETUP')" coords="215, 282, 240, 310" />
<area shape="rect" href="javascript:rcsim('KEY_EPG')" coords="255, 247, 280, 275" />
<area shape="rect" href="javascript:rcsim('KEY_FAVORITES')" coords="306, 247, 330, 275" />
<area shape="rect" href="javascript:rcsim('KEY_HOME')" coords="340, 282, 365, 310" />
<area shape="rect" href="javascript:rcsim('KEY_UP')" coords="265, 280, 320, 304" />
<area shape="rect" href="javascript:rcsim('KEY_LEFT')" coords="243, 300, 262, 360" />
<area shape="rect" href="javascript:rcsim('KEY_OK')" coords="276, 316, 307, 350" />
<area shape="rect" href="javascript:rcsim('KEY_RIGHT')" coords="320, 304, 340, 365" />
<area shape="rect" href="javascript:rcsim('KEY_DOWN')" coords="264, 360, 320, 385" />
<area shape="rect" href="javascript:rcsim('KEY_VOLUMEUP')" coords="220, 367, 247, 396" />
<area shape="rect" href="javascript:rcsim('KEY_VOLUMEDOWN')" coords="257, 396, 282, 425" />
<area shape="rect" href="javascript:rcsim('KEY_PAGEUP')" coords="336, 367, 360, 396" />
<area shape="rect" href="javascript:rcsim('KEY_PAGEDOWN')" coords="300, 396, 327, 425" />
<area shape="rect" href="javascript:rcsim('KEY_TV')" coords="224, 422, 260, 455" />
<area shape="rect" href="javascript:rcsim('KEY_TEXT')" coords="274, 439, 307, 463" />
<area shape="rect" href="javascript:rcsim('KEY_RADIO')" coords="224, 422, 260, 455" />
<area shape="rect" href="javascript:rcsim('KEY_RED')" coords="225, 468, 246, 492" />
<area shape="rect" href="javascript:rcsim('KEY_GREEN')" coords="260, 480, 283, 505" />
<area shape="rect" href="javascript:rcsim('KEY_YELLOW')" coords="295, 480, 318, 505" />
<area shape="rect" href="javascript:rcsim('KEY_BLUE')" coords="333 470, 354, 492" />
<area shape="rect" href="javascript:rcsim('KEY_SAT')" coords="220, 526, 259, 548" />
<area shape="rect" href="javascript:rcsim('KEY_HELP')" coords="268, 530, 311, 550" />
<area shape="rect" href="javascript:rcsim('KEY_NEXT')" coords="320, 530, 360, 548" />
<area shape="rect" href="javascript:rcsim('KEY_PREVIOUS')" coords="319, 561, 356, 580" />
<area shape="rect" href="javascript:rcsim('KEY_TIME')" coords="223, 558, 260, 580" />
<area shape="rect" href="javascript:rcsim('KEY_AUDIO')" coords="267, 562, 311, 583" />
<area shape="rect" href="javascript:rcsim('KEY_REWIND')" coords="224, 589, 259, 612" />
<area shape="rect" href="javascript:rcsim('KEY_FORWARD')" coords="266, 592, 310, 612" />
<area shape="rect" href="javascript:rcsim('KEY_PAUSE')" coords="318, 592, 352, 612" />
<area shape="rect" href="javascript:rcsim('KEY_RECORD')" coords="224, 620, 259, 645" />
<area shape="rect" href="javascript:rcsim('KEY_STOP')" coords="265, 625, 310, 645" />
<area shape="rect" href="javascript:rcsim('KEY_PLAY')" coords="315, 625, 350, 645" />
<area shape="rect" href="javascript:rcsim('KEY_GAMES')" coords="318, 422, 360, 455" />
<area shape="rect" href="javascript:rcsim('KEY_POWER')" coords="134, 38, 159, 68" />
<area shape="rect" href="javascript:rcsim('KEY_MUTE')" coords="29, 37, 56, 66" />
<area shape="rect" href="javascript:rcsim('KEY_1')" coords="24, 85, 63, 119" />
<area shape="rect" href="javascript:rcsim('KEY_2')" coords="77, 79, 117, 104" />
<area shape="rect" href="javascript:rcsim('KEY_3')" coords="134, 85, 169, 120" />
<area shape="rect" href="javascript:rcsim('KEY_4')" coords="24, 125, 63, 160" />
<area shape="rect" href="javascript:rcsim('KEY_5')" coords="77, 120, 117, 145" />
<area shape="rect" href="javascript:rcsim('KEY_6')" coords="134, 125, 169, 160" />
<area shape="rect" href="javascript:rcsim('KEY_7')" coords="24, 170, 63, 200" />
<area shape="rect" href="javascript:rcsim('KEY_8')" coords="77, 160, 117, 185" />
<area shape="rect" href="javascript:rcsim('KEY_9')" coords="134, 170, 169, 200" />
<area shape="rect" href="javascript:rcsim('KEY_0')" coords="77, 200, 117, 230" />
<area shape="rect" href="javascript:rcsim('KEY_INFO')" coords="134, 210, 169, 245" />
<area shape="rect" href="javascript:rcsim('KEY_SETUP')" coords="19, 282, 44, 310" />
<area shape="rect" href="javascript:rcsim('KEY_EPG')" coords="59, 247, 84, 275" />
<area shape="rect" href="javascript:rcsim('KEY_FAVORITES')" coords="110, 247, 134, 275" />
<area shape="rect" href="javascript:rcsim('KEY_HOME')" coords="144, 282, 169, 310" />
<area shape="rect" href="javascript:rcsim('KEY_UP')" coords="69, 280, 124, 304" />
<area shape="rect" href="javascript:rcsim('KEY_LEFT')" coords="47, 300, 66, 360" />
<area shape="rect" href="javascript:rcsim('KEY_OK')" coords="80, 316, 111, 350" />
<area shape="rect" href="javascript:rcsim('KEY_RIGHT')" coords="124, 304, 144, 365" />
<area shape="rect" href="javascript:rcsim('KEY_DOWN')" coords="68, 360, 124, 385" />
<area shape="rect" href="javascript:rcsim('KEY_VOLUMEUP')" coords="24, 367, 51, 396" />
<area shape="rect" href="javascript:rcsim('KEY_VOLUMEDOWN')" coords="61, 396, 86, 425" />
<area shape="rect" href="javascript:rcsim('KEY_PAGEUP')" coords="140, 367, 164, 396" />
<area shape="rect" href="javascript:rcsim('KEY_PAGEDOWN')" coords="104, 396, 131, 425" />
<area shape="rect" href="javascript:rcsim('KEY_TV')" coords="28, 422, 64, 455" />
<area shape="rect" href="javascript:rcsim('KEY_TEXT')" coords="78, 439, 111, 463" />
<area shape="rect" href="javascript:rcsim('KEY_RADIO')" coords="28, 422, 64, 455" />
<area shape="rect" href="javascript:rcsim('KEY_RED')" coords="29, 468, 50, 492" />
<area shape="rect" href="javascript:rcsim('KEY_GREEN')" coords="64, 480, 87, 505" />
<area shape="rect" href="javascript:rcsim('KEY_YELLOW')" coords="99, 480, 122, 505" />
<area shape="rect" href="javascript:rcsim('KEY_BLUE')" coords="137, 470, 158, 492" />
<area shape="rect" href="javascript:rcsim('KEY_SAT')" coords="24, 526, 63, 548" />
<area shape="rect" href="javascript:rcsim('KEY_HELP')" coords="72, 530, 115, 550" />
<area shape="rect" href="javascript:rcsim('KEY_NEXT')" coords="124, 530, 164, 548" />
<area shape="rect" href="javascript:rcsim('KEY_PREVIOUS')" coords="123, 561, 160, 580" />
<area shape="rect" href="javascript:rcsim('KEY_TIME')" coords="27, 558, 64, 580" />
<area shape="rect" href="javascript:rcsim('KEY_AUDIO')" coords="71, 562, 115, 583" />
<area shape="rect" href="javascript:rcsim('KEY_REWIND')" coords="28, 589, 63, 612" />
<area shape="rect" href="javascript:rcsim('KEY_FORWARD')" coords="70, 592, 114, 612" />
<area shape="rect" href="javascript:rcsim('KEY_PAUSE')" coords="122, 592, 156, 612" />
<area shape="rect" href="javascript:rcsim('KEY_RECORD')" coords="28, 620, 63, 645" />
<area shape="rect" href="javascript:rcsim('KEY_STOP')" coords="69, 625, 114, 645" />
<area shape="rect" href="javascript:rcsim('KEY_PLAY')" coords="119, 625, 154, 645" />
<area shape="rect" href="javascript:rcsim('KEY_GAMES')" coords="122, 422, 164, 455" />
</map>
end-block~rc_cst_v1

View File

@@ -129,7 +129,7 @@ function get_data(){
//]]>
</script>
</head>
{=var-set:lcshot={=if-file-exists:/bin/lcshot~true~{=if-file-exists:/var/bin/lcshot~true~false=}=}=}
{=var-set:lcshot={=find-exec:lcshot=}=}
<body>
<div class="y_menu_sec_box">
<div class="y_menu_sec_box_head"><h2>{=L:main.boxcontrol=}</h2></div>
@@ -150,7 +150,7 @@ function get_data(){
</li>
{=if-not-equal:{=global-var-get:boxtype=}~coolstream~
<li>
{=if-equal:{=var-get:lcshot=}~true~
{=if-empty:{=var-get:lcshot=}~
<a target="work" title="{=L:bc.menue.lcd_screenshot_desc=}" href="Y_Tools_lcshot.yhtm">{=L:bc.menue.lcd_screenshot=}</a>
~
<a href="javascript:void(0)" class="disabled" title="{=L:bc.menue.lcd_screenshot_desc_ni=}">{=L:bc.menue.lcd_screenshot=}</a>

View File

@@ -150,13 +150,13 @@ function view_transcode_mode(){
</div>
<script type="text/javascript">
//<![CDATA[
haveUDP = ("{=if-file-exists:/sbin/udpstreamts~true~{=if-file-exists:/var/bin/udpstreamts~true~false=}=}" == "true");
haveUDP = ("{=find-exec:udpstreamts=}" != "");
isUDP = ("{=ini-get:/var/tuxbox/config/Y-Web.conf;udp;false=}" == "true");
Mode = "{=mode=}";
LiveTyp = "{=typ=}";
ClientAddr = "{=func:get_request_data clientaddr=}";
insert_message_control("{=L:live.build_vlc=}");
isDeinterlace = ("{=ini-get:/var/tuxbox/config/Y-Web.conf;deinterlace;true=}" == "true");
isDeinterlace = ("{=ini-get:/var/tuxbox/config/Y-Web.conf;deinterlace;false=}" == "true");
cachetime = {=ini-get:/var/tuxbox/config/Y-Web.conf;http_caching;0=};
Lgetting_channels="{=L:live.getting_channels=}";
Lgetting_bouquets="{=L:live.getting_bouquets=}";

View File

@@ -106,7 +106,7 @@ function _show_epg()
<table id="epglist" class="y_invisible_table" cellpadding="4" cellspacing="0" width="100%">
<thead align="left">
<tr>
<th colspan="2"><img id="logo" src="{=ini-get:/var/tuxbox/config/nhttpd.conf;Tuxbox.LogosURL=}/{=logoid=}.png" style="visibility:hidden; max-width: 50px;"/>&nbsp;</th>
<th colspan="2"><img id="logo" src="{=func:get_logo_name {=channel=}=}" style="visibility:hidden; max-width: 50px;"/></th>
<th>{=L:date=}</th><th>{=L:from=}</th><th>{=L:to=}</th><th>{=L:program=}</th>
</tr>
</thead>

View File

@@ -8,6 +8,9 @@ function form_init()
obj_set_radio_value('authenticate', "{=ini-get:/var/tuxbox/config/nhttpd.conf;mod_auth.authenticate;false=}");
obj_set_radio_value('threading', "{=ini-get:/var/tuxbox/config/nhttpd.conf;webserver.threading;false=}");
obj_set_radio_value('mod_sendfile_sendAll', "{=ini-get:/var/tuxbox/config/nhttpd.conf;mod_sendfile.sendAll;false=}");
obj_set_radio_value('Tuxbox_DisplayLogos', "{=ini-get:/var/tuxbox/config/nhttpd.conf;Tuxbox.DisplayLogos;true=}"); // MARTII
do_check_input_LogosURL()
}
function do_submit()
{
@@ -22,6 +25,13 @@ function do_submit()
document.f.submit();
}
}
function do_check_input_LogosURL()
{
if(document.getElementById('Tuxbox_DisplayLogos').checked == true)
document.f.Tuxbox_LogosURL.readOnly = false;
else
document.f.Tuxbox_LogosURL.readOnly = true;
}
//]]>
</script>
</head>
@@ -98,6 +108,13 @@ function do_submit()
</td>
</tr>
<tr><td colspan="2" class="y_form_header">{=L:logos=}</td></tr>
<tr>
<td>{=L:set.nhttpd.display_logos=}</td>
<td>
<input type="radio" name="Tuxbox_DisplayLogos" value="false" onClick="do_check_input_LogosURL()" />{=L:off=}&nbsp;
<input type="radio" name="Tuxbox_DisplayLogos" value="true" onClick="do_check_input_LogosURL()" id="Tuxbox_DisplayLogos" />{=L:on=}
</td>
</tr>
<tr>
<td>{=L:set.nhttpd.url_of_logos=}</td>
<td><input type="text" name="Tuxbox_LogosURL" size="60" value="{=ini-get:/var/tuxbox/config/nhttpd.conf;Tuxbox.LogosURL~cache=}" title="{=L:set.nhttpd.url_of_logos_desc=}"/></td>

View File

@@ -42,9 +42,6 @@ function sLog_addRow(_body, state, action_text, state_text){
function wiki_url(_page){
return "<a href=\"http://wiki.dbox2-tuning.net/"+_page+"\" target='_blank'><b>[Help]<\/b><\/a>"
}
function y_url(_page){
return "<a href=\"http://www.yjogol.com/"+_page+"\" target='_blank'><b>[Help]<\/b><\/a>"
}
function do_check(){
sLog_init();
sLog_clear();
@@ -56,13 +53,12 @@ function do_check(){
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.com/yFAQ.htm#diy' target='_blank'><b>[Help]<\/b><\/a>", "fail");
sLog_addRow(sLog_body, "red", "WebServer: version: "+nhttpd_version+" version needed: "+needed_nhttpd_version+" ", "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. "+y_url("Help-Settings-Webserver"), "notice");
sLog_addRow(sLog_body, "yellow", "WebServer: Authentication is on. ", "notice");
=}
{=if-equal:{=ini-get:/var/tuxbox/config/nhttpd.conf;WebsiteMain.port;80=}~80~~
sLog_addRow(sLog_body, "yellow",
@@ -81,46 +77,46 @@ function do_check(){
=}
/*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. "+y_url("Help-BoxControl-OSD_Screenshot"), "failed");
{=var-set:fbshot={=find-exec:fbshot=}=}
{=if-empty:{=var-get:fbshot=}~
sLog_addRow(sLog_body, "red", "Programs: fbshot is not installed. OSD Screenshot is disabled. ", "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.com/faq-diy' target='_blank'><b>[Download]<\/b><\/a>", "failed");
{=var-set:dboxshot={=find-exec:dboxshot=}=}
{=if-empty:{=var-get:dboxshot=}~
sLog_addRow(sLog_body, "red", "Programs: dboxshot is not installed. Remote &amp; OSD is disabled.", "failed");
~
sLog_addRow(sLog_body, "green", "Programs: dboxshot is installed at: {=var-get:dboxshot=}. Remote &amp; OSD is enabled.", "ok");
=}
{=if-not-equal:{=global-var-get:boxtype=}~coolstream~
{=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. "+y_url("Help-Tools-Image"), "failed");
{=var-set:fcp={=find-exec:fcp=}=}
{=if-empty:{=var-get:fcp=}~
sLog_addRow(sLog_body, "red", "Programs: fcp is not installed. Image flashing is disabled. ", "failed");
~
sLog_addRow(sLog_body, "green", "Programs: fcp is installed at: {=var-get:fcp=}. Image flashing is enabled.", "ok");
=}
~=}
{=var-set:ether-wake={=if-file-exists:/bin/ether-wake~/bin/ether-wake~{=if-file-exists:/var/bin/ether-wake~/var/bin/ether-wake~false=}=}=}
{=if-equal:{=var-get:ether-wake=}~false~
sLog_addRow(sLog_body, "red", "Programs: ether-wake is not installed. Wake on LAN is disabled. "+y_url("Help-Tools-Wake_on_LAN"), "failed");
{=var-set:ether-wake={=find-exec:ether-wake=}=}
{=if-empty:{=var-get:ether-wake=}~
sLog_addRow(sLog_body, "red", "Programs: ether-wake is not installed. Wake on LAN is disabled. ", "failed");
~
sLog_addRow(sLog_body, "green", "Programs: ether-wake is installed at: {=var-get:ether-wake=}. Wake on LAN is enabled.", "ok");
=}
{=if-not-equal:{=global-var-get:boxtype=}~coolstream~
/*automount*/
{=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. "+y_url("Help-Tools-AutoMount"), "failed");
{=var-set:automount={=find-exec:automount=}=}
{=if-empty:{=var-get:automount=}~
sLog_addRow(sLog_body, "red", "Programs: automount is not installed. AutoMount is disabled. ", "failed");
~
sLog_addRow(sLog_body, "green", "Programs: automount is installed at: {=var-get:automount=}. AutoMount is enabled.", "ok");
=}
{=if-not-equal:{=global-var-get:boxtype=}~coolstream~
/* udp */
{=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. "+y_url("Help-Live_Timer-UDP_Streaming"), "failed");
{=var-set:udpstreamts={=find-exec:udpstreamts=}=}
{=if-empty:{=var-get:udpstreamts=}~
sLog_addRow(sLog_body, "red", "Programs: udpstreamts is not installed. udp-streaming is disabled. ", "failed");
~
sLog_addRow(sLog_body, "green", "Programs: udpstreamts is installed at: {=var-get:udpstreamts=}. udp-streaming is enabled.", "ok");
=}

View File

@@ -79,9 +79,7 @@ function doUpload()
<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)
if(isIE)
document.f.appendx.checked = true;
window.document.f.cmd.focus();
//]]>

View File

@@ -21,7 +21,7 @@ function do_image_upload_ready()
</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:fcp={=find-exec:fcp=}=}
{=var-set:wait_text=Image wird hochgeladen (upload image).=}{=include-block:Y_Blocks.txt;snip_wait=}
<div id="wait_flash" class="ydiagfree" style="left: 100px; position: absolute; top: 100px; display: none;">
<div class="y_wait_box_visible">
@@ -74,7 +74,9 @@ function do_image_upload_ready()
{=var-set:help_url=Help-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~
{=if-empty:{=var-get:fcp=}~
<h2><br/><br/><br/><b><font color="#FF0000">fcp ist nicht installiert!</font></b></h2>
~
<form method="post" name="f" id="f" enctype="multipart/form-data" action="/control/exec?Y_Tools&amp;image_upload" target="out">
<p>
<input type="file" name="file" size="40"/><br/>
@@ -82,8 +84,6 @@ function do_image_upload_ready()
<button type="button" ytype="flash" title="upload and flash" name="su" onclick="do_submit()">Image flashen</button><br/>
</p>
</form>
~
<h2><br/><br/><br/><b><font color="#FF0000">fcp ist nicht installiert!</font></b></h2>
=}
</div>
</div>

View File

@@ -14,8 +14,8 @@ function init(){
</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~=}=}
{=var-set:automount={=if-file-exists:/sbin/automount~true~{=if-file-exists:/var/bin/automount~true~=}=}=}
{=var-set:ether-wake={=if-equal:{=global-var-get:boxtype=}~coolstream~{=if-file-exists:/bin/ether-wake~/bin/ether-wake~{=if-file-exists:/var/bin/ether-wake~/var/bin/ether-wake~=}=}~{=if-file-exists:/bin/ether-wake~/bin/ether-wake~{=if-file-exists:/var/bin/ether-wake~/var/bin/ether-wake~=}=}=}=}
{=var-set:automount={=find-exec:automount=}=}
{=var-set:ether-wake={=find-exec:ether-wake=}=}
<body onload="init()">
<div class="y_menu_sec_box">
<div class="y_menu_sec_box_head"><h2>{=L:main.tools=}</h2></div>

View File

@@ -1,4 +1,4 @@
{=var-set:fbshot={=if-file-exists:/bin/fbshot~true~{=if-file-exists:/var/bin/fbshot~true~false=}=}=}
{=var-set:fbshot={=find-exec:fbshot=}=}
{=include-block:Y_Blocks.txt;head=}
<script type="text/javascript" src="/Y_Baselib.js"></script>
@@ -43,7 +43,7 @@ function do_snapshot() {
filename = id("filename").value;
}
if ({=var-get:fbshot=} == true && enableVideo == 0)
if ("{=var-get:fbshot=}" != "" && enableVideo == 0)
dbox_exec_tools("fbshot fb /tmp/"+filename+".png");
else
loadSyncURL("/control/screenshot?name="+filename+"&osd="+enableOSD+"&video="+enableVideo);

View File

@@ -109,8 +109,6 @@ function processReqChange()
}
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++)
@@ -119,7 +117,7 @@ function processReqChange()
var progName = getXMLNodeItemValue(recProg_Node, 'title');
var description = getXMLNodeItemValue(recProg_Node, 'description');
//FF3?Probs if(is_ie)
//FF3?Probs if(isIE)
{
var sDate = getXMLNodeItemValue(recProg_Node, 'dc:date');
var sender = getXMLNodeItemValue(recProg_Node, 'dc:subject');

View File

@@ -1,6 +1,6 @@
/* VLC abstraction by yjogol@online.de
$Date$
$Revision$
/* VLC abstraction by yjogol
$Date: $
$Revision: $
*/
/*ie1=ActiveC, moz1=Mozilla<0.8.5.1, moz2>= 0.8.5.1*/
var CyVLC = function(_id, masterid, width, height) {
@@ -29,14 +29,14 @@ CyVLC.prototype = {
this.c_masterid = masterid;
this.c_width = width;
this.c_height = height;
if(!is_ie) {
if(!isIE) {
this.version_string = this._get_version();
this._generate_sub_versions();
this._determine_plugin_generation();
}
this.insert_control();
this.vlc = id(_id);
if(is_ie) {
if(isIE) {
this.version_string = this._get_version();
this._generate_sub_versions();
this._determine_plugin_generation();
@@ -44,55 +44,68 @@ CyVLC.prototype = {
this.set_resolution(this.c_width, this.c_height);
},
_get_version : function() {
if(is_ie)
if(isIE)
{
var vstr = this.vlc.VersionInfo;
var words = vstr.split(" ");
return words[0];
}
else
if (navigator.plugins && (navigator.plugins.length > 0)) {
var name = "VLC";
for(var i=0;i<navigator.plugins.length;++i)
if (navigator.plugins[i].name.indexOf(name) != -1)
var plug = navigator.plugins[navigator.plugins[i].name];
if(typeof plug != 'undefined') {
var Suche = /(PLUGIN)/gi;
var Ergebnis = Suche.test(plug.description);
if (Ergebnis == true){
var ex = /^.*[pP]lugin [\"]*([^ \"]*)[\"]*.*$/;
var ve = ex.exec(plug.description);
}else{
var ex = /^.*[vV]ersion [\"]*([^ \"]*)[\"]*.*$/;
var ve = ex.exec(plug.description);
else if (navigator.plugins && (navigator.plugins.length > 0)) {
var numPlugins = navigator.plugins.length;
var plug_version = "0.0.0";
for(var i = 0; i < numPlugins; i++) {
var plugin = navigator.plugins[i];
var numTypes = plugin.length;
for (var j = 0; j < numTypes; j++)
{
var mimetype = plugin[j];
if (mimetype) {
if (mimetype.type.indexOf("application/x-vlc-plugin") != -1) {
if(plugin.version != 0){
plug_version = plugin.version;
break;
}
else
{
var Suche = /(PLUGIN)/gi;
var Ergebnis = Suche.test(plugin.description);
if (Ergebnis == true){
var ex = /^.*[pP]lugin [\"]*([^ \"]*)[\"]*.*$/;
var ve = ex.exec(plugin.description);
}else{
var ex = /^.*[vV]ersion [\"]*([^ \"]*)[\"]*.*$/;
var ve = ex.exec(plugin.description);
}
var Suche = /([0-9])/g;
var Ergebnis = Suche.test(ve);
if (Ergebnis == true)
plug_version = ve[1];
break;
}
}
}
}
}
var Suche = /([0-9])/g;
var Ergebnis = Suche.test(ve);
if (Ergebnis == true)
return ve[1];
else
return "0.0.0";
}
else
return "0.0.0";
return plug_version;
}
else
return "0.0.0";
},
_generate_sub_versions : function() {
if(this.version_string == "")
return
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];
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)
if(isIE)
this.plugin = "ie1";
else
if(this.version_level1 <= "0" && this.version_level2 <= "8" && this.version_level3 <= "5")
if(this.version_level1 <= 0 && this.version_level2 <= 8 && this.version_level3 <= 5)
this.plugin = "moz1";
else
this.plugin = "moz2";
@@ -230,7 +243,7 @@ CyVLC.prototype = {
insert_control : function()
{
var vlc_control_html = "";
if(is_ie) {
if(isIE) {
vlc_control_html =
"<object classid=\"clsid:E23FE9C6-778E-49D4-B537-38FCDE4887D8\" " +
/* "<object classid=\"clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921\" " +*/

View File

@@ -1,4 +1,4 @@
version=2.9.0.12
date=04.03.2015
version=2.9.0.23
date=01.05.2015
type=Release
info=Port CST

View File

@@ -208,9 +208,9 @@ start-block~neutrino_record_save_settings
{=ini-set:/var/tuxbox/config/neutrino.conf;auto_delete;{=auto_delete=}~cache=}
{=ini-set:/var/tuxbox/config/neutrino.conf;temp_timeshift;{=temp_timeshift=}~cache=}
{=ini-set:/var/tuxbox/config/neutrino.conf;recording_audio_pids_default;{=recording_audio_pids_default=}~save=}
{=ini-set:/var/tuxbox/config/timerd.conf;EXTRA_TIME_START;{=EXTRA_TIME_START=}=}
{=ini-set:/var/tuxbox/config/timerd.conf;EXTRA_TIME_END;{=EXTRA_TIME_END=}=}
{=ini-set:/var/tuxbox/config/timerd.conf;ZAPTO_EXTRA_TIME_START;{=ZAPTO_EXTRA_TIME_START=}=}
{=ini-set:/var/tuxbox/config/timerd.conf;EXTRA_TIME_START;{=EXTRA_TIME_START=}~open=}
{=ini-set:/var/tuxbox/config/timerd.conf;EXTRA_TIME_END;{=EXTRA_TIME_END=}~cache=}
{=ini-set:/var/tuxbox/config/timerd.conf;ZAPTO_EXTRA_TIME_START;{=ZAPTO_EXTRA_TIME_START=}~save=}
end-block~neutrino_record_save_settings

View File

@@ -1,13 +0,0 @@
From Johannes Golombek yjogol@online.de:
Published under GPL v2
- audiobar.png
- blank.gif
From old (before yWeb):
Published under GPL v2
- elist.png
- streaminfo.png
All others are from Mark James (www.famfamfam.com)
Published under Creative Common License 2.5
(http://creativecommons.org/licenses/by/2.5/)

View File

@@ -1,4 +1,4 @@
installdir = $(DATADIR)/neutrino/httpd/images
installdir = $(PRIVATE_HTTPDDIR)/images
install_DATA = accept.png \
alert.gif \

Binary file not shown.

Before

Width:  |  Height:  |  Size: 807 B

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -3,9 +3,9 @@
# $Date$
# $Revision$
=========== GENERAL / GLOBAL
global.no_iframes=Dein Browser unterstützt keine IFrames.
clear=löschen
submit=Ausführen
global.no_iframes=Dein Browser unterst&uuml;tzt keine IFrames.
clear=l&ouml;schen
submit=Ausf&uuml;hren
action=Aktion
user=Benutzer
password=Passwort
@@ -20,7 +20,7 @@ record=Aufnehmen
zap=Umschalten
lookup=Nachschlagen
save_values_desc=Senden und Speichern der Werte
save_values=Werte werden übernommen ...
save_values=Werte werden &uuml;bernommen ...
administration=Administration
normal=Normal
management=Management
@@ -41,7 +41,7 @@ off=Aus
download=Herunterladen
back=Zur&uuml;ck
date=Datum
from=Von
from=von
to=bis
program=Sendung
others=Sonstiges
@@ -49,7 +49,7 @@ description=Beschreibung
color=Farbe
tag=Bezeichnung
empty=leer
check=Prüfen
check=Pr&uuml;fen
help=Hilfe
attention=Achtung!
directory=Verzeichnis
@@ -67,11 +67,11 @@ main.live_desc=LiveView, Aufnahmeliste, EPG
main.tools=Werkzeuge
main.tools_desc=Mounts, WOL, Experten Werkzeuge, Flashen
main.settings=Einstellungen
main.settings_desc=Einstellungen für die Box, Webserver, ...
main.settings_desc=Einstellungen f&uuml;r die Box, Webserver, ...
main.extensions=Erweiterungen
main.extensions_desc=Installierte Erweiterungen und Verwaltung
main.info=Info
main.info_desc=Information über das yWeb, Version
main.info_desc=Information &uuml;ber das yWeb, Version
main.live_tv_desc=LiveTV
main.live_tv_popup_desc=LiveTV Popup
main.remote_full_desc=Fernbedinung & OSD Vollbild
@@ -79,9 +79,9 @@ main.stream_to_vlc_client_desc=Live TV direkt im VLC Client
main.version=Version
#========= Boxcontrol Menue
bc.menue.bouquets_desc=Sender auswählen
bc.menue.bouquets_desc=Sender ausw&auml;hlen
bc.menue.bouquets=Sender
bc.menue.control_desc=Box Funktionen (Neustart, Aufnahmemodus,...)
bc.menue.control_desc=Box Funktionen (Neustart, Aufnahmemodus, ...)
bc.menue.control=Steuerung
bc.menue.messages_desc=Nachricht an die Box senden
bc.menue.messages=Nachrichten
@@ -93,15 +93,15 @@ bc.menue.lcd_screenshot_desc_ni=lcshot nicht installiert in /bin oder /var/bin
bc.menue.screenshot=Screenshot
bc.menue.screenshot_desc=Screenshot des OSDs und/oder des TV-Bildes erstellen
bc.menue.decrease_volume=Lautstärke verringern
bc.menue.increase_volume=Lautstärke erhöhen
bc.menue.mute_volume=Lautstärke an / aus
bc.menue.decrease_volume=Lautst&auml;rke verringern
bc.menue.increase_volume=Lautst&auml;rke erh&ouml;hen
bc.menue.mute_volume=Lautst&auml;rke an / aus
bc.menue.switch_to_tv=Zum TV umschalten
bc.menue.switch_to_radio=Zum Radio umschalten
bc.menue.webinf_slavebox=Webinterface der SlaveBox
bc.menue.volumen_display=Lautstärke Anzeige
bc.menue.volumen_display=Lautst&auml;rke Anzeige
bc.menue.signal=Signalstärke
bc.menue.signal=Signalst&auml;rke
========= Boxcontrol
bc.control.freemem=FreeMem
@@ -129,7 +129,7 @@ bc.msg.send_message=Nachricht senden
======== Boxcontrol - Screenshot
bc.screenshot.create=Schnappschuss
bc.screenshot.delete=Schnappschuss löschen
bc.screenshot.delete=Schnappschuss l&ouml;schen
bc.screenshot.zoom=Schnappschuss zoomen
bc.screenshot.wait_text=Schnappschuss wird erstellt
bc.screenshot.checkenable=OSD und/oder TV muss aktiviert sein!
@@ -146,7 +146,7 @@ ext.type=Typ
ext.extension=Erweiterung
ext.tag=Tag
ext.version=Version
ext.size=Größe/k
ext.size=Gr&ouml;&szlig;e/k
ext.uninstall=Deinstallation
ext.info=Info
ext.free=Frei
@@ -170,8 +170,8 @@ bou.rename_bouquet=Bouquet umbenennen
bou.move_up=Nach oben
bou.move_down=Nach unten
bou.remove=Entfernen
bou.delete=Löschen
bou.add=Hinzufügen
bou.delete=L&ouml;schen
bou.add=Hinzuf&uuml;gen
bou.rename=Umbenennen
bou.bouqets_saved=Bouquet-Liste gespeichert
bou.delete1=Bouquet
@@ -181,12 +181,12 @@ bou.no_bouquet_name=Es wurde kein Bouquet-Name angegeben
========EPG
epg.get_epg=EPG holen ...
epg.epg_plus=EPG Plus
epg.select_bouquet=Bouquet auswählen - Kanäle werden aktualisiert
epg.select_bouquet=Bouquet ausw&auml;hlen - Kan&auml;le werden aktualisiert
epg.hover_for_details=F&uuml;r Details: Maus &uuml;ber die entsprechende Sendung bewegen.
epg.refresh=EPG Daten aktualisieren
epg.past_hours=Stunden zurück
epg.past_hours=Stunden zur&uuml;ck
epg.next_hours=Stunden vor
epg.set_timer=Timer für Aufnahme gesetzt
epg.set_timer=Timer f&uuml;r Aufnahme gesetzt
epg.zap_to=Umschalt-Timer gesetzt
========EPG Streaminfo
@@ -267,8 +267,8 @@ set.rec.recordtime=Aufnahmezeit in Stunden
set.rec.timeshift_desc=Timeshift
set.rec.timeshift.pause=Start mit Pause-Taste
set.rec.timeshift.auto_record=Autom. Aufnahme (in Sek, 0=deaktiviert)
set.rec.timeshift.auto_delete=Automatisches Löschen
set.rec.timeshift.tmp_timeshift=Temporäres timeshift
set.rec.timeshift.auto_delete=Automatisches L&ouml;schen
set.rec.timeshift.tmp_timeshift=Tempor&auml;res timeshift
========Neutrino Settings - Movieplayer
set.mp.sources=Quellen
@@ -312,6 +312,7 @@ set.nhttpd.alternate_web_folder=Alternativer Web-Ordner
set.nhttpd.hosted_folder=Eingebundenes Verzeichnis
set.nhttpd.allowed_file_extensions=Erlaubte Dateiendungen / MIME
set.nhttpd.allow_all_file_extensions=Alle Dateiendungen erlauben
set.nhttpd.display_logos=Logos anzeigen
set.nhttpd.url_of_logos_desc=URL bzw. Verzeichnis der Logos eingeben
set.nhttpd.url_of_logos=URL bzw. Verzeichnis der Logos
set.nhttpd.server=Server
@@ -319,7 +320,7 @@ set.nhttpd.ips_without_keep_alive_desc=(z.B. JtG Server, Mit Kommas trennen)
set.nhttpd.ips_without_keep_alive=IPs mit No keep-alive
set.nhttpd.cache=Cache
set.nhttpd.cache_info=Cache Informationen
set.nhttpd.clear_cache=Cache löschen
set.nhttpd.clear_cache=Cache l&ouml;schen
set.nhttpd.server_configuration=Server Konfiguration
set.nhttpd.check_password=Passwort muss mind. 4 Zeichen haben
set.nhttpd.check_port=Port muss angegeben werden
@@ -368,7 +369,7 @@ set.timer.header=Timer Einstellungen
set.timer.username=Benutzername
set.timer.password=Passwort
set.timer.klack.url_desc=("&" wird beim Speichern zu ";" konvertiert)
set.timer.klack.url=Persönliche RSS TV-Planer URL
set.timer.klack.url=Pers&ouml;nliche RSS TV-Planer URL
set.timer.klack.security_code_desc=Klack Sicherheits Code
set.timer.klack.security_code=Sicherheits Code
set.timer.channel_name_replacelist=Sendernamen-Ersetzungsliste
@@ -408,7 +409,7 @@ tools.automount=AutoMounts
tools.mounts_desc=File mounts organisieren
tools.mounts=Mounts
tools.wake_on_lan=Wake on LAN
tools.check_install=Installation prüfen
tools.check_install=Installation pr&uuml;fen
tools.expert=Expert
tools.image_desc=Image sichern oder flashen
tools.image=Image
@@ -417,8 +418,8 @@ tools.not_installed=nicht installiert
tools.cmd_shell.output_desc=fortlaufende Ausgabe (nur IE - wg. scrollen)
tools.path=Verzeichnis
tools.command=Kommando
tools.cmd.enter_command=Auszuführendes Kommando eingeben
tools.cmd.execute_command=Kommando ausführen
tools.cmd.enter_command=Auszuf&uuml;hrendes Kommando eingeben
tools.cmd.execute_command=Kommando ausf&uuml;hren
tools.boot_logo=Boot Logo
tools.filemgr_desc=Dateien und Verzeichnisse organisieren
tools.filemgr=Dateimanager
@@ -441,17 +442,17 @@ live.timer_sync=Timer Sync
live.get_stream_info=Streaming-Informationen<br/>werden ermittelt.
live.getting_bouquets=Hole Bouquets ...
live.getting_channels=Hole Sender ...
live.select_resolution=Auflösung auswählen
live.select_resolution=Aufl&ouml;sung ausw&auml;hlen
live.change_channel=Sender wechseln
live.view_epg=EPG für aktuellen Sender anzeigen
live.view_epg=EPG f&uuml;r aktuellen Sender anzeigen
live.reload=Bouquets und Sender neu laden
live.getting_subchannels=Hole Unterkanäle ...
live.getting_subchannels=Hole Unterkan&auml;le ...
live.play_or_pause=Abspielen oder Pause
live.stop=Stoppen
live.mute=Stummschaltung an / aus
live.lower_volume=leiser
live.higher_volume=lauter
live.fullscreen=Ganzer Bildschirm (auch mit Doppelklick) mit ESC zurück
live.fullscreen=Ganzer Bildschirm (auch mit Doppelklick) mit ESC zur&uuml;ck
live.lock_unlock=Box sperren / entsperren
live.toggle_udp=UDP Streaming an/aus
live.settings=LiveView Einstellungen
@@ -459,9 +460,9 @@ live.snapshot=Schnappschuss erstellen
live.record=Aufnahmemodus
live.transcode=Transkodiermodus
live.build_vlc=... erstelle Live ...
live.select_bouquet=Bouquet auswählen - Sender werden aktualisiert
live.select_bouquet=Bouquet ausw&auml;hlen - Sender werden aktualisiert
live.select_channel=Sender wechseln - nutze zap
live.live_popup_msg=Während des LiveTVs keine Sender wechseln!
live.live_popup_msg=W&auml;hrend des LiveTVs keine Sender wechseln!
live.unlock=FB freigeben
=========== LIVE Record
@@ -526,8 +527,8 @@ live.timer-sync.timer_source=Timer Quelle
live.timer-sync.rec_dir=Aufnahmeverzeichnis
live.timer-sync.settings=Einstellungen
live.timer-sync.debugging=Debugging
live.timer-sync.get_selected=Hole gewählte
live.timer-sync.clear_all=Lösche alle
live.timer-sync.get_selected=Hole gew&auml;hlte
live.timer-sync.clear_all=L&ouml;sche alle
live.timer-sync.timer_preview=Timer Vorschauliste
live.timer-sync.start_time=Startzeit
live.timer-sync.end_time=Endezeit
@@ -535,15 +536,15 @@ live.timer-sync.channel=Sender
live.timer-sync.programm=Sendung
live.timer-sync.source=Quelle
live.timer-sync.set_timer=Setze Timer
live.timer-sync.clear_log=Lösche Log
live.timer-sync.clear_log=L&ouml;sche Log
live.timer-sync.log=Log
live.timer-sync.action=Aktion
live.timer-sync.status=Status
=========INFO
info.help=Hilfe
info.About=Über
info.check_for_updates=Auf Updates prüfen
info.About=&uuml;ber
info.check_for_updates=Auf Updates pr&uuml;fen
info.your_version=Deine Version
info.actual_version=Aktuelle Version
@@ -574,7 +575,7 @@ rc.key_sleep=Sleep
rc.key_audio=Audio
rc.key_help=Help
rc.key_red=Rot
rc.key_green=Grün
rc.key_green=Gr&uuml;n
rc.key_yellow=Gelb
rc.key_blue=Blau
rc.key_epg=EPG
@@ -584,7 +585,7 @@ rc.key_up=Hoch
rc.key_down=Runter
rc.key_left=Links
rc.key_right=Rechts
rc.key_setup=Menü
rc.key_setup=Men&uuml;
rc.key_home=Exit
rc.key_sat=Sat
rc.key_www=

View File

@@ -315,6 +315,7 @@ set.nhttpd.alternate_web_folder=Alternate Web-Folder
set.nhttpd.hosted_folder=Mounted directory
set.nhttpd.allowed_file_extensions=Allowed File Extensions / MIME
set.nhttpd.allow_all_file_extensions=Allow all File Extensions
set.nhttpd.display_logos=Display Logos
set.nhttpd.url_of_logos_desc=Enter URL or directory of Logos
set.nhttpd.url_of_logos=URL or directory of Logos
set.nhttpd.server=Server

View File

@@ -1,4 +1,4 @@
installdir = $(DATADIR)/neutrino/httpd/languages
installdir = $(PRIVATE_HTTPDDIR)/languages
install_DATA = Czech Deutsch English Portuguese Slovak
install_DATA = Czech Deutsch English Polski Portuguese Slovak

View File

@@ -0,0 +1,601 @@
# yWeb language file (Polish/Polski) by jaro44
# language version: 1.1
# $Date: 2015-03-05 11:45:14 +100 (Czw, 05 Marzez 2015) $
# $Revision$
# ========= Start / Ustawienia ogólne
global.no_iframes=Twoja przeglądarka nie obsługuje I-Frame.
clear=Wyczyść
submit=Uruchom
action=Działanie
user=Użytkownik
password=Hasło
language=Język
general=Ogólne
logos=Logo
url=URL
server=Serwer
refreshing=Aktualizacja ...
refresh=Odśwież
record=Nagrywanie
zap=Przełącznik
lookup=wyszukiwanie
save_values_desc=Wyślij przechowywane wartości
save_values=zapisywanie ...
save=Zapisz
save_all=Zapisz wszystko
administration=Administracja
normal=Normalny
management=Zarządzanie
uninstaller=Odinstaluj
send=Wyślij
cancel=Anuluj
apply=Zastosuj zmiany
apply_desc=Czyta plik konfiguracyjny nowego neutrino
answer=Odpowiedź
reboot=Restart
shutdown=Wyłączenie
status=Status
restart=Restart
on=Wł.
off=Wył.
download=Pobierz
back=Powrót do strony głównej
date=Data
from=z
to=do
program=Program
others=Inne
description=Opis
color=Kolor
tag=Nazwa
empty=Pusty
check=Sprawdź
help=Pomoc
attention=Uwaga!
directory=katalog
filename=Nazwa pliku
restriced_by_management_ip=Ograniczony dostęp
automatic=Automatyczne
show=Pokaż
hide=Ukryj
# ======== Menu główne
main.boxcontrol=Kontrola urządzenia
main.boxcontrol_desc=Kontrola urządzenia i bukietów
main.live=Na żywo
main.live_desc=Podgląd na żywo, Nagrywanie Lista, EPG
main.tools=Narzędzia
main.tools_desc=Połączenie, WOL, zaawansowane narzędzia
main.settings=Ustawienia
main.settings_desc=Ustawienia, Przeglądarka, urządzenia, akcesoria ...
main.extensions=Rozszerzenia
main.extensions_desc=Zainstalowane rozszerzenia i zarządzanie
main.info=Informacje
main.info_desc=Informacje yWeb, Aktualizacje
main.live_tv_desc=TV Live
main.live_tv_popup_desc=Okno Live TV
main.remote_full_desc=Pilot zdalnego sterowania i OSD Pełny ekran
main.stream_to_vlc_client_desc=Stream do klienta VLC
main.version=wersja
# ========= Okno Menu sterowania
bc.menue.bouquets_desc=Bukiety
bc.menue.bouquets=Ulubione
bc.menue.control_desc=kontrola funkcji urządzenia (Restart, Pilot, ...)
bc.menue.control=Sterowanie
bc.menue.messages_desc=Wysyłanie wiadomości do urządzenia
bc.menue.messages=Wiadomości
bc.menue.remote_desc=Pilot zdalnego sterowania
bc.menue.remote=Pilot
bc.menue.lcd_screenshot_desc=Tworzenie zrzutu ekranu LCD
bc.menue.lcd_screenshot=Zrzut ekranu LCD
bc.menue.lcd_screenshot_desc_ni=lcshot nie jest zainstalowane w katalogu /bin lub /var/bin
bc.menue.screenshot=Zrzut ekranu
bc.menue.screenshot_desc=Zrzut ekranu OSD i/lub obrazu telewizyjnego
bc.menue.decrease_volume=Ciszej
bc.menue.increase_volume=Głośniej
bc.menue.mute_volume=Wyłączenie dźwięku
bc.menue.switch_to_tv=Przełącz na TV
bc.menue.switch_to_radio=Przełącz na Radio
bc.menue.webinf_slavebox=Interfejs WWW dla urządzenia slave
bc.menue.volumen_display=Głośność
bc.menue.signal=Siła sygnału
# ========= Sterowanie
bc.control.freemem=Dostępna pamięć
bc.control.lock=Zablokowany
bc.control.unlock=Odblokowany
bc.control.standby_mode=Tryb czuwania
bc.control.recording_mode=Tryb nagrywania
bc.control.box=Tuner
bc.control.remote=Pilot
bc.control.playback=Tryb odtwarzania
bc.control.epg_sectiond=Sekcja EPG
bc.control.live_lock=Zablokowane
bc.control.reboot.ask=Ponownie uruchomić tuner?
bc.control.reboot=Restart
bc.control.shutdown.ask=Wyłączyć urządzenie?
bc.control.shutdown=Wyłączony
bc.control.status=Stan
bc.control.restart=Restart
# ========= Sterowanie - Raport
bc.msg.message_to_screen_desc=Wpisz wiadomość, aby wyświetlić na ekranie telewizora
bc.msg.message_to_screen=komunikat na ekranie
bc.msg.popup_to_screen=Okno wiadomości
bc.msg.send_message=Wyślij wiadomość
# ========= Sterowanie - Zrzut ekranu
bc.screenshot.create=Zrzut ekranu
bc.screenshot.delete=Wyczyść zrzut ekranu
bc.screenshot.zoom=Powiększenie zrzutu ekranu
bc.screenshot.wait_text=Tworzenie zrzutu ekranu
bc.screenshot.checkenable=OSD i/lub telewizor musi być używany!
# ========= Sterowania - Inne
bc.channels=Kanały
# ========= Rozszerzenia
ext.installer_updater=Instalacja / Aktualizacja
ext.uninstaller=Odinstaluj
ext.search_for_ext=Wyszukiwanie rozszerzeń ...
ext.installed_extensions=Zainstalowane rozszerzenia
ext.type=Typ
ext.extension=Rozszerzenia
ext.tag=Zdarzenie
ext.version=wersja
ext.size=Rozmiar
ext.uninstall=Odinstaluj
ext.info=Informacje
ext.free=Bezpłatne
ext.action=Akcja
ext.status=Stan
ext.preview=Ustawianie nowego rozszerzenia (podgląd)
ext.update_preview=Przejrzyj listę aktualizacji
ext.your=Twój
ext.update=Aktualizacja
ext.update_install=Instalacja aktualizacji
ext.site=Strona
ext.refresh_now=Ustawienia zapisane. Menu jest aktualizowane.
ext.ext_saved=Ustawienia zapisane
# ========= Ulubione
bou.bouquet=Bukiety
bou.bouquets_must_be_saved=Wszystkie bukiety muszą być zapisane!
bou.bouquet_editor=Edytuj Ulubione
bou.bouquet_add=Dodaj bukiet
bou.name_of_bouquet=Nazwa dla nowego bukietu
bou.rename_bouquet=Zmień nazwę bukietu
bou.move_up=Góra
bou.move_down=Dół
bou.remove=Usuń
bou.delete=Wyczyść
bou.add=Dodaj
bou.rename=Zmień nazwę
bou.bouqets_saved=Bukiety zapisane
bou.delete1=Czy na pewno usunąć bukiet?
bou.delete2=
bou.no_bouquet_name=Nieznana nazwa bukietu
# ========= EPG
epg.get_epg=Pobieranie EPG ...
epg.epg_plus=EPG Plus
epg.select_bouquet=Wybierz bouquet - kanały zostaną zaktualizowane
epg.hover_for_details=Przełącz, aby uzyskać więcej informacji
epg.refresh=Aktualizacja EPG
epg.past_hours=Poprzednie
epg.next_hours=Następne
epg.set_timer=Ustawianie timera
epg.zap_to=Przełączanie kanału
# ========= EPG Stream Informacje
epg.si.streaminfo=Informacje Stream
epg.si.resolution=Rozdzielczości
epg.si.ratio=Proporcje obrazu
epg.si.fps=Klatek na sekundę
epg.si.audiotype=Typ audio
epg.si.frequence=Częstotliwość
epg.si.onid=oryginalny ID sieci
epg.si.sid=ID usługi
epg.si.tsid=Transponder strumienia ID
epg.si.vpid=
epg.si.pmtpid=Program Map Table PID
epg.si.pcrpid=Program zegara odniesienia PID
epg.si.apid=audio PID
epg.si.vtxtpid=Telegazeta PID
epg.si.crypt=system kodowania
# ========= Ustawienia
set.reload_neutrino=Restart Neutrino
set.reboot_required=Wymaga restartu
set.sync_with_neutrino_desc=Po zmianie ustawień poprzez yWeb: Wybierz <br/> w telewizji "Menu główne> Usługi-> Restart neutrino", aby zaakceptować zmiany<br/> Po zmianie ustawień:. Wybierz <br/> w telewizji "Menu główne> Ustawienia-> Zapisz ustawienia", aby zastosować zmiany i przeładuj stronę.
set.sync_with_neutrino=Synchronizacja z neutrino
# ========= Główne ustawienia i funkcje
set.menue.webserver=Serwer
set.menue.epg=EPG
set.menue.timer_settings=Ustawienia zegara
set.menue.zapit=Przełącznik
set.menue.backup_restore=Kopia zapasowa i przywracanie
set.menue.bouquet_editor=Edytuj bukiety
set.menue.video_audio=Obraz / Dźwięk
set.menue.parental=Kontrola rodzicielska
set.menue.direct_recording=Nagrywanie bezpośrednie
set.menue.recording=Nagrywanie
set.menue.audio_player=Odtwarzacz audio
set.menue.movieplayer=Odtwarzacz wideo
set.menue.pictureviewer=Przeglądarka zdjęć
set.menue.lcd_display=wyświetlacz LCD
set.menue.key_settings=Ustawienie przycisków
set.menue.boot_options=Opcje bootowania
set.menue.peronalization=Ustawienia osobiste
set.menue.plugins=Dodatki
set.menue.others=Inne
# ========= Ustawienia nagrywania w neutrino
set.rec.rec_dest=Lokalizacja zapisu nagrania
set.rec.device=Rejestracja Dźwięku
set.rec.recmode=Tryb nagrywania
set.rec.server=Serwer
set.rec.recorder=VCR
set.rec.file=Plik
set.rec.recserver_ip=Nagrywanie IP serwera
set.rec.recserver_port=Nagrywanie Port serwera
set.rec.recserver_wol=
set.rec.mac_adress=Adres MAC
set.rec.rec_behavior=Zarządzanie nagrywaniem
set.rec.stop_playback=Zatrzymaj odtwarzanie
set.rec.epg_sectionsd_desc=Ustawienia nagrywania
set.rec.epg_sectionsd=EPG (częściowe)
set.rec.dont_stop=Nie przestawaj
set.rec.stop=Zatrzymaj
set.rec.restart=Restart
set.rec.zap=Przełącz
set.rec.scart=Zapobieganie przełączeniu Scart
set.rec.spts=Nagrywanie w trybie SPT
set.rec.timer_settings=Korekcja ustawienia timera
set.rec.start_delay=Korekta rozpoczęcia nagrywania (s)
set.rec.stop_delay=Korekta zakończenia nagrywania (s)
set.rec.zap_delay=Korekta włączony DDI (s)
set.rec.audio_channels=Ścieżki dźwiękowe
set.rec.audio_standard=Tryb nagrywania dźwięku standardowy
set.rec.audio_alternate=Tryb nagrywania dźwięku alternatywny
set.rec.audio_ac3=Tryb nagrywania dźwięku Dolby Digital (AC3)
set.rec.channeldir=Zapisz na liście kanałów
set.rec.epg_end=Nagrywanie tylko do końca EPG
set.rec.recordtime=Czas nagrywania w godzinach
set.rec.timeshift_desc=Timeshift
set.rec.timeshift.pause=Start z przycisku pauzy
set.rec.timeshift.auto_record=Automatyczne nagrywanie (w sekundach, 0= wyłączone)
set.rec.timeshift.auto_delete=Automatyczne usuwanie Timeshift
set.rec.timeshift.tmp_timeshift=Timeshift Czasowe
# ========= Ustawienia Neutrino - Movieplayer
set.mp.sources=Wybór źródła
set.mp.streamingserver_ip=IP serwera Stream
set.mp.streamingserver_port=Port serwera Stream
set.mp.streamingserver=Serwer stream
set.mp.dvd_device=Urządzenie DVD
set.mp.vlc_dir=katalog (VLC)
set.mp.transcoding=Transkodowanie
set.mp.video_datarate=Przepustowość wideo
set.mp.transcode=Transkodowane
set.mp.video_codec=Kodek wideo
set.mp.resolution=Rozdzielczość
set.mp.audio_datarate=Szybkość transmisji danych audio
set.mp.transcode_audio=Transkodowanie plików audio (DVD / VCD / mpg)
set.mp.force_ac3=Wymuś AC3 w avi
set.mp.player=Zawodnik
set.mp.start_directory=Główny katalog
set.mp.only_movieplayer=Tylko Movieplayer
set.mp.used_buffer=Użyj bufora (WabberQueue)
set.mp.number_buffersegments=Liczba segmentów buforowych
set.mp.picture_in_browser=Obraz w przeglądarce
# ========= Ustawienia rodzicielskie w neutrino
set.parental.activate=Włącz
set.parental.type.never=Nigdy
set.parental.type.bouquet=Ulubione
set.parental.type.preset=Predefiniowane
set.parental.minimum_age=Minimalny wiek
set.parental.pin=PIN
# ========= Ustaw nhttp
set.nhttpd.webserver=Serwer
set.nhttpd.authentication=Uwierzytelnienie
set.nhttpd.client_without_authentication_desc=Bez uwierzytelniania. Wpisz adres IP.
set.nhttpd.client_without_authentication=Bez uwierzytelniania
set.nhttpd.active_after_boot=Aktywne po ponownym uruchomieniu
set.nhttpd.port=Port
set.nhttpd.threading=Threading
set.nhttpd.alternate_web_folder=Alternatywny katalog WEB
set.nhttpd.hosted_folder=Podłączony katalog
set.nhttpd.allowed_file_extensions=Dopuszczalne rozszerzenia / MIME
set.nhttpd.allow_all_file_extensions=ce wszystkie rozszerzenia plików
set.nhttpd.url_of_logos_desc=Wpisz URL lub ścieżkę do logo
set.nhttpd.url_of_logos=URL lub katalog logo
set.nhttpd.server=Serwer
set.nhttpd.ips_without_keep_alive_desc=(np serwer JTG, oddzielone przecinkami)
set.nhttpd.ips_without_keep_alive=Podtrzymanie IP
set.nhttpd.cache=Cache
set.nhttpd.cache_info=Informacje o cache'u
set.nhttpd.clear_cache=Wyczyść pamięć podręczną
set.nhttpd.server_configuration=Konfiguracja serwera
set.nhttpd.check_password=Wymagane hasło musi mieć min. 4 znaki
set.nhttpd.check_port=Port jest wymagany
# ========= Ustawienie yWeb
set.yweb.enter_ip_desc=Wprowadzanie adresu IP (xxx.xxx.xxx.xxx)
set.yweb.enter_mac_desc=Wpisz adres MAC (xx: xx: xx: xx: xx: xx)
set.yweb.description=Opis
set.yweb.enter_description_desc=Opis
set.yweb.management_IPs=Zarządzanie IP
set.yweb.wake_on_lan=Budzenie w sieci
set.yweb.box_tag_desc=Nazwa urządzenia w górnym menu.
set.yweb.box_tag=Nazwa urządzenia
set.yweb.box_color_desc=Kolor nazwy urządzenia w górnym menu. np .. wpisz 2188e0 bez #
set.yweb.box_color=Kolor
set.yweb.start_page=Strona główna
set.yweb.remote=Pilot
# ========= Ustawienia Przeglądarki zdjęć
set.pv.pictureviewer=Przeglądarka zdjęć
set.pv.scale=Skalowanie
set.pv.scale.none=Brak
set.pv.scale.simple=Proste
set.pv.scale.complex=Kompletne
set.pv.slideshow_duration=Czas prezentacji
set.pv.start_dir=Katalog początkowy
set.pv.decoding_server_ip=IP serwera
set.pv.decoding_server_port=Port serwera
# ========= Ustawienia odtwarzacza audio
set.ap.audioplayer=Odtwarzacz audio
set.ap.display_order.actor_title=Artysta, Tytuł
set.ap.display_order.title_actor=Tytuł, Wykonawca
set.ap.display_order=Pokaż
set.ap.select_actual_track=Wybór utworów
set.ap.search_by_name=Szukaj według nazwy
set.ap.repeat_mode=Tryb powtarzania
set.ap.show_playlist=Pokaż listę
set.ap.screensaver=Wygaszacz ekranu (min, 0=wył.)
set.ap.decode_priority=Wysoki priorytet dekodowania
set.ap.start_dir=Katalog początkowy
set.ap.parse_shoutcast=Shoutcast Meta-dane
# ========= Ustawienia czasu
set.timer.header=Ustawienia zegara
set.timer.username=Nazwa Użytkownika
set.timer.password=Hasło
set.timer.klack.url_desc=("&" zostaną przekonwertowane do ";", aby zapisać)
set.timer.klack.url=Osobiste RSS
set.timer.klack.security_code_desc=Twój kod zabezpieczający, aby pobierać dane bez logowania
set.timer.klack.security_code=Kod zabezpieczający
set.timer.channel_name_replacelist=Nazwa kanału
# ========= Ustawienia Kopia zapasowa / Przywracanie
set.settings.backup=Kopia zapasowa
set.settings.backup_desc=Tworzenie kopii zapasowej - ustawienia
set.settings.restore=Przywróć
set.settings.restore_desc=Przywracanie ustawień. Twój tuner zostanie zrestartowany.
set.settings.warning=Kopia zapasowa i przywracanie jest możliwe tylko dla tego samego obrazu na tym samym poziomie rozwoju.
# ========= Narzędzia Informacje
tools.info.show_messages=Komunikaty jądra
tools.info.processes=Procesy
tools.info.memory=Pamięć
tools.info.cpu_info=Informacje o CPU
tools.info.mem_info=Informacje o pamięci
tools.info.partitions=Partycje
tools.info.mtd=MTD
tools.info.stat=Statystyki
tools.info.version=wersja
# ========= Narzędzia yInstaller
tools.yinstaller.no_file_given=wybranych plików!
tools.yinstaller.space.mtd=Całkowita pojemność
tools.yinstaller.space.used=Użyte
tools.yinstaller.space.free=Bezpłatne
tools.yinstaller.space.percentage=Procentowe użycie
tools.yinstaller.not_determine=Nie można określić ilość wolnego miejsca.
tools.yinstaller.head=yInstaller
tools.yinstaller.tar_file=Plik .tar
tools.yinstaller.upload_install=wysyłania i zainstalować
# ========= Narzędzia
tools.automount_desc=Zarządzanie automatyczne montowanie
tools.automount=Automatyczne montowanie
tools.mounts_desc=Zarządzanie zamontowanymi
tools.mounts=Zamontowane
tools.wake_on_lan=Budzenie w sieci
tools.check_install=Sprawdzanie instalacji
tools.expert=Zaawansowane
tools.image_desc=przywracanie lub flaszowanie obrazu
tools.image=obraz
tools.command_shell=Komendy shell
tools.not_installed=Nie zainstalowane
tools.cmd_shell.output_desc=Automatyczne przejście (tylko IE)
tools.path=Ścieżka
tools.command=Polecenie
tools.cmd.enter_command=Wstaw polecenie
tools.cmd.execute_command=Wykonaj polecenie
tools.boot_logo=Bootlogo
tools.filemgr_desc=Pliki i katalogi
tools.filemgr=Menadżer plików
# ========= Menu LIVE TV
live.heading=LIVE TV / timer
live.live=LIVE TV
live.tv_popup_desc=LIVE TV (okno)
live.tv=TV
live.radio_popup_desc=LIVE Radio (okno)
live.radio=Radio
live.double_view=Podwójny rozmiar
live.timer=Timer
live.epg=EPG
live.epg_plus_popup_desc=EPG (okno)
live.epg_plus=EPG Plus
live.timer_sync=Synchronizacja timera
# ========= LIVE TV / Radio
live.get_stream_info=Uzyskiwanie informacji o strumieniu <br/> ustalona.
live.getting_bouquets=Pobieranie bukietów ...
live.getting_channels=Pobieranie kanałów ...
live.select_resolution=Wybierz rozdzielczość
live.change_channel=Zmień kanał
live.view_epg=Zobacz EPG dla wybranego kanału
live.reload=Odśwież kanały
live.getting_subchannels=Idź do podkanałów ...
live.mute=Wyłączenie głośnika
live.stop=Zatrzymaj
live.play_or_pause=Rozpocznij lub wstrzymaj
live.lower_volume=Ciszej
live.higher_volume=Głośniej
live.fullscreen=Przełącz na pełny ekran
live.lock_unlock=Zablokuj / Odblokuj TV (tryb przesyłania, rc, lcd)
live.toggle_udp=Strumieniowe UDP Wł. / Wył.
live.settings=Ustawienia widoku
live.snapshot=Zrzut
live.record=Tryb nagrywania
live.transcode=Tryb transkodowania
live.build_vlc=... sterowanie VLC ...
live.select_bouquet=Wybierz bukiet (kanały zostaną zaktualizowane)
live.select_channel=Wybór kanału (używany do przełączania)
live.live_popup_msg=Zmiana kanałów bezpośrednio przez WWW, Box - Pilot zdalnego sterowania
live.unlock=Odblokowanie pilota zdalnego sterowania
# =========== LIVE Nagrywanie
live.rec.record_mode=Tryb nagrywania
live.rec.filename=Nazwa pliku
live.rec.display_on=Ekran
live.rec.transcoding_on=Transkodowanie włączone
live.rec.record=Nagrywanie
live.rec.stop_record=Zakończ nagrywanie
live.rec.tanscode=Nagrywanie transkodowane
live.rec.profile=Profil
live.rec.video=Wideo
live.rec.width=Szerokość
live.rec.height=Wysokość
live.rec.codec=Codec
live.rec.bitrate=Bitrate
live.rec.scale=Skalowanie
live.rec.audio=Dźwięk
live.rec.channels=kanały
live.rec.trans_broadcast=Transkodowanie transmisji
live.rec.access=Dostęp
live.rec.type=Typ
live.rec.ip_port=IP:Port
# ========= LIVE TV Ustawienia
live.set.vlc_settings=Ustawienia VLC (IE; Mozilla>=0.8.6.1)
live.set.deinterlace=przeplotu
live.set.http_caching=http Buforowanie
live.set.udp_defaul=UDP jako domyślny
live.set.slavebox_ip=Slavebox Box IP
live.set.enter_ip=IP (xxx.xxx.xxx.xxx) z Slavebox
live.set.vlc_rec_dir=Ścieżka zapisu VLC
live.set.refresh_liveview=Odśwież LiveView
# ========= LIVE Edycja zegara
live.timer_edit.timer=Timer edycji
live.timer_edit.times=Times
live.timer_edit.alarm_date=Ustaw czas rozpoczęcia
live.timer_edit.time=Czas
live.timer_edit.stop_date=Ustawienie czasu zatrzymania
live.timer_edit.repeat=Powtórz
live.timer_edit.repeat1=Powtórz (0 = bez ograniczeń)
live.timer_edit.weekdays.format=(Pon - Nd, X=Zegar)
live.timer_edit.weekdays=Cotygodniowe
live.timer_edit.values=Wartości
live.timer_edit.channel=Kanał
live.timer_edit.apids=Pidy audio
live.timer_edit.apids.default=Domyślny
live.timer_edit.apids.standard=Standard
live.timer_edit.apids.alt=Alternatywne
live.timer_edit.apids.ac3=AC3
live.timer_edit.standby=Uśpienie
live.timer_edit.plugin=Dodatki
live.timer_edit.rec_dir=atalogŚcieżka dla nagrań
live.timer_edit.description=Opis
# ========= LIVE Synchronizacja zegara
live.timer-sync.get_timer=Synchronizacja czasu
live.timer-sync.header=Synchronizacja zegara
live.timer-sync.timer_source=Źródło czasu
live.timer-sync.rec_dir=Katalog nagrań
live.timer-sync.settings=Ustawienia
live.timer-sync.debugging=Debugowanie
live.timer-sync.get_selected=Ładowanie wybranych
live.timer-sync.clear_all=Usuń wszystko
live.timer-sync.timer_preview=Podgląd timera
live.timer-sync.start_time=Czas rozpoczęcia
live.timer-sync.end_time=Czas zakończenia
live.timer-sync.channel=Kanał
live.timer-sync.programm=Program
live.timer-sync.source=Źródło
live.timer-sync.set_timer=Ustaw zegar
live.timer-sync.clear_log=Wyczyść historię
live.timer-sync.log=Zaloguj
live.timer-sync.action=Akcja
live.timer-sync.status=Stan
# ========= INFO
info.hel=Pomoc
info.About=O
info.check_for_updates=Sprawdź aktualizacje
info.your_version=Zainstalowana wersja
info.actual_version=Aktualna wersja
# ========= Pilot
rc.key_power=Wyłącz
rc.key_mute=Wycisz
rc.key_1=1
rc.key_2=2
rc.key_3=3
rc.key_4=4
rc.key_5=5
rc.key_6=6
rc.key_7=7
rc.key_8=8
rc.key_9=9
rc.key_0=0
rc.key_text=TXT
rc.key_favorites=Ulubione
rc.key_volumeup=Głośniej
rc.key_volumedown=Ciszej
rc.key_pageup=Poprzednia strona
rc.key_pagedown=Następna strona
rc.key_radio=TV / Radio
rc.key_mode=Format wideo
rc.key_next=Następny
rc.key_previous=Poprzedni
rc.key_sleep=Uśpienie
rc.key_audio=Dźwięk
rc.key_help=Pomoc
rc.key_red=Czerwony
rc.key_green=Zielony
rc.key_yellow=Żółty
rc.key_blue=Niebieski
rc.key_epg=EPG
rc.key_info=Info
rc.key_ok=OK
rc.key_up=Góra
rc.key_down=Dół
rc.key_left=Lewa
rc.key_right=Prawy
rc.key_setup=Menu
rc.key_home=Wyjście
rc.key_sat=Satelity
rc.key_www=WWW
rc.key_rewind=Do tyłu
rc.key_play=Odtwarzaj
rc.key_forward=Do przodu
rc.key_stop=Zatrzymaj
rc.key_record=Nagraj
rc.key_pause=Pauza
rc.key_games=Gry
rc.key_time=Czas
rc.key_picsize=Wielkość obrazu
rc.key_picmode=Tryb obrazu

View File

@@ -1,4 +1,4 @@
installdir = $(DATADIR)/neutrino/httpd/scripts
installdir = $(PRIVATE_HTTPDDIR)/scripts
install_DATA= api.sh _Y_Globals.sh _Y_Library.sh Y_Live.sh Y_Tools.sh
@@ -6,5 +6,5 @@ install_DATA= api.sh _Y_Globals.sh _Y_Library.sh Y_Live.sh Y_Tools.sh
install_DATA += Y_NAS.sh
install-data-hook:
chmod 0755 $(DESTDIR)$(DATADIR)/neutrino/httpd/scripts/api.sh
chmod 0755 $(DESTDIR)$(DATADIR)/neutrino/httpd/scripts/Y_*.sh
chmod 0755 $(DESTDIR)$(PRIVATE_HTTPDDIR)/scripts/api.sh
chmod 0755 $(DESTDIR)$(PRIVATE_HTTPDDIR)/scripts/Y_*.sh

View File

@@ -51,16 +51,23 @@ style_get()
# -----------------------------------------------------------
style_set()
{
# This function should be called one time after installing a new image
# to get sure, the right skin is installed too
style=${1:-$(config_get_value_direct $y_config_Y_Web 'style')}
test -n "$style" || return
y_path_directory=$(config_get_value_direct $y_config_nhttpd 'WebsiteMain.directory')
y_path_override_directory=$(config_get_value_direct $y_config_nhttpd 'WebsiteMain.override_directory')
cd $y_path_directory
if [ -e $y_path_override_directory/styles/Y_Dist-$1.css ]; then
cp $y_path_override_directory/styles/Y_Dist-$1.css Y_Dist.css
if [ -e $y_path_override_directory/styles/Y_Dist-$style.css ]; then
cp $y_path_override_directory/styles/Y_Dist-$style.css Y_Dist.css
elif [ -e $y_path_directory/styles/Y_Dist-$style.css ]; then
cp $y_path_directory/styles/Y_Dist-$style.css Y_Dist.css
else
cp $y_path_directory/styles/Y_Dist-$1.css Y_Dist.css
config_set_value_direct $y_config_Y_Web 'style'
fi
#config_set_value_direct $y_config_Y_Web 'style' $1
}
# -----------------------------------------------------------
# Image Backup - build form
@@ -574,7 +581,7 @@ case "$1" in
fbshot) shift 1; do_fbshot $* ;;
fbshot_clear) do_fbshot_clear ;;
screenshot_clear) do_screenshot_clear ;;
get_update_version) wget -O /tmp/version.txt "http://git.coolstreamtech.de/?p=cst-public-gui-neutrino.git;a=blob_plain;f=src/nhttpd/web/Y_Version.txt" ;;
get_update_version) wget -O /tmp/version.txt "http://git.coolstreamtech.de/?p=cst-public-gui-neutrino.git;a=blob_plain;f=src/nhttpd/web/Y_Version.txt;hb=refs/heads/cst-next" ;;
settings_backup_restore) shift 1; do_settings_backup_restore $* ;;
exec_cmd) shift 1; $* ;;
automount_list) shift 1; do_automount_list $* ;;

View File

@@ -1,3 +1,3 @@
installdir = $(DATADIR)/neutrino/httpd/styles
installdir = $(PRIVATE_HTTPDDIR)/styles
install_DATA = Y_Dist-Tuxbox.css
install_DATA = Y_Dist-Tuxbox.css Y_Dist-GreyBlue.css

View File

@@ -0,0 +1,424 @@
/* Grey Blue - yweb style by OneOfNine */
body {
background-color: #303030;
color: #ffffff;
}
body.iframe {
background-color: #272525;
color: #ffffff;
}
button[ytype]{
color: #ffffff;
background-position: 5px;
background-attachment: scroll;
background-color: #303030;
background-repeat: no-repeat;
padding-left: 25px;
padding-right: 5px;
vertical-align: middle;
text-align:left;
}
button[ytype="save"]{background-image:url(/images/save.png);}
button[ytype="saveall"]{background-image:url(/images/saveall.png);}
button[ytype="cancel"]{background-image:url(/images/cross.png);}
button[ytype="refresh"],button[ytype="reboot"]{background-image:url(/images/reload.png);}
button[ytype="record"]{background-image:url(/images/record.png);}
button[ytype="zap"]{background-image:url(/images/zap.png);}
button[ytype="timeup"]{background-image:url(/images/time_up.png);}
button[ytype="timedown"]{background-image:url(/images/time_down.png);}
button[ytype="timeadd"]{background-image:url(/images/time_add.png);}
button[ytype="snapshot"]{background-image:url(/images/snapshot.png);}
button[ytype="clearshot"]{background-image:url(/images/remove.png);}
button[ytype="switchrc"]{background-image:url(/images/fb.png);}
button[ytype="go"]{background-image:url(/images/accept.png);}
button[ytype="download"]{background-image:url(/images/wget.png);}
button[ytype="clear"]{background-image:url(/images/remove.png);}
button[ytype="add"]{background-image:url(/images/new.png);}
button[ytype="delete"]{background-image:url(/images/remove.png);}
button[ytype="edit"]{background-image:url(/images/modify.png);}
button[ytype="flash"]{background-image:url(/images/flash.png);}
button[ytype="no"] {
padding-left: 5px
}
/*TODO: input file*/
button[type="button"] {
height: 22px;
border: 1px solid #444444;
background-color: #303030;
border-radius: 3px;
color: #ffffff;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
}
button:hover,input[type="button"]:hover,input[type="submit"]:hover,input[type="file"]:hover {
position:relative;
left:1px;
top:1px;
background-color: #303030;
color: #ffffff;
}
input {
height: 22px;
border: 1px solid #444444;
background-color: #303030;
border-radius: 3px;
color: #ffffff;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
}
input[type="text"]:focus,input[type="password"]:focus{
border: 1px solid #444444;
background: #343434;
}
select {
height: 22px;
border: 1px solid #444444;
background-color: #303030;
border-radius: 3px;
color: #ffffff;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
}
a {
color: #ffffff;
}
td {
color: #ffffff;
}
tr {
color: #ffffff;
}
hr {
border: none;
border-top: solid #ffffff 1px;
height: 1px;
}
.y_menu_prim_box {
border-color: #000;
}
.y_menu_prim_box_head {
background: #272525;
}
.y_menu_prim_box_body {
background-color: #272525;
}
.y_menu_prim_box_body #prim span,
.y_menu_prim_box_body #box_name,
.y_menu_prim_box_body #clock {
text-shadow: 1px 1px 1px #000;
}
.y_menu_prim li a {
text-shadow: 1px 1px 1px #000;
}
.y_menu_prim li a:hover {
color: #518eea;
}
.y_menu_prim li.selected a {
color: #ffffff;
}
.y_menu_sec_box {
border-color: #000;
}
.y_menu_sec_box_head {
background: #000000;
}
.y_menu_sec_box_head h2 {
color: #518eea;
/*
text-shadow: 1px 1px 1px #000;
*/
text-shadow: 0 -1px #272525, 1px 0 #272525, 0 1px #272525, -1px 0 #272525, #000 1px 1px 1px;
}
.y_menu_sec_box_body {
background-color: #272525;
}
.y_menu_sec li {
color: #ffffff;
}
.y_menu_sec li.plain a {
color: #ffffff
}
.y_menu_sec li a:hover {
color: #518eea;
}
.y_menu_sec_section {
background-color: #3e8bfe;
color: #ffffff;
text-shadow: 0 -1px #272525, 1px 0 #272525, 0 1px #272525, -1px 0 #272525, #000 1px 1px 1px;
}
.work_box {
border-color: #000;
}
.work_box_head {
background-color: #00006e;
}
.work_box_head h2,.work_box_head_h2 {
background-color: #000000;
color: #518eea;
text-shadow: 0 -1px #272525, 1px 0 #272525, 0 1px #272525, -1px 0 #272525, #000 1px 1px 1px;
}
.work_box_body {
background-color: #272525;
}
.y_wait_box {
border: 1px solid #000;
}
.y_wait_box_visible {
border: 1px solid #000;
}
.y_wait_box_head {
background: #000000;
color: #3e8bfe;
}
.y_wait_box_head h2 {
text-shadow: 0 -1px #272525, 1px 0 #272525, 0 1px #272525, -1px 0 #272525, #000 1px 1px 1px;
color: #3e8bfe;
}
.y_wait_box_body {
background-color: #272525;
}
.y_table,.y_form_table,.y_invisible_table,y_form table {
color: #ffffff;
}
.y_live_button {
color: #ffffff;
}
.y_live_bouquets {
color: #ffffff;
}
.y_live_channels
{
color: #ffffff;
}
.y_live_audio_pids
{
color: #ffffff;
}
.y_form_header_oline {
color : #ffffff;
}
.y_form_header {
border-bottom : 1px solid #ffffff;
color : #ffffff;
padding-top:0.5em;
}
.y_form_section {
color : #ffffff;
}
.y_text_boxcontrol_table {
border-color: #303030;
}
.y_text_boxcontrol_table_progress {
border-color: #303030;
}
.y_text_boxcontrol_div_progress {
border-color: #303030;
}
#audiobar_right,
#sigbar_right,
#snrbar_right {
background-color: #272525;
}
.y_epg_info {
border: none;
background-color: #202020;
}
.y_epg_info #description,
.y_epg_info #info1,
.y_epg_info #info2 {
background-color: #272525;
}
.bouquetitemlist .logo_cell {
background: #303030;
border-bottom: 1px solid #272525;
}
.channel_logo {
background: #343434;
}
.channel_logos
{
background: #343434;
}
#epg_plus {
border-color : #000;
}
.ep_bouquet {
border-color : #000;
}
.ep_bouquet_name {
background: #333333;
border-color : #333333;
}
.ep_bouquet_name a {
}
.ep_bouquet_item {
border-color : #333333;
}
.ep_bouquet_item:hover {
background-color: #444444;
}
.ep_bouquet_item span:hover {
}
.ep_bouquet_rec {
border-color : #ff0000;
}
.ep_bouquet_zap {
border-color : #440044;
}
.ep_time_bar {
border-color : #000;
}
.ep_time_bar_item {
border-color : #000;
}
.ep_info_desc {
}
.ep_info_info1 {
}
.ep_info_info2 {
}
#epg_info {
border : #999999 solid 1px;
background-color: #272525;
}
#epg_time {
}
#epglist tbody tr:hover {
background-color: #00006e;
}
.a
{
background-color: #333333;
}
.aepg
{
background-color: #333333;
border-bottom: 1px solid #272525;
}
.b
{
background-color: #444444;
}
.bepg
{
background-color: #444444;
border-bottom: 1px solid #272525;
}
.c
{
background-color: #518eea;
font-weight: bold;
}
.cepg
{
background-color: #518eea;
border-bottom: 1px solid #272525;
}
.cslider_table
{
border: 1px solid #000000;
}
.cslider_used
{
background-color: #666666;
}
.cslider_free
{
background-color: #303030;
}
.cslider_noepg
{
background-color: #272525;
}
.epg
{
font-weight: bold;
color: #ffffff;
}
.atimer {
background-color: #535353;
}
.lt_table th {
color : #ffffff;
}
table.screenshot {
background: #272525;
}
img#shot {
background-color: #272525;
border: 1px solid #000;
}
/* Filemgr */
.diag {
border-color: #272525;
background-color: #272525;
}
.toolbar td {
border-color: #272525;
}
.toolbar img {
border:0;
}
.toolbar td:hover {
background-color: #272525;
}
.button {
border-color: #272525;
}
.button:hover {
background-color: #272525;
}
.mform {
}
.filelist a{
}
.box {
border-color: #272525;
}
.epginfo2{
}
.detail_title{
border-color: #272525;
background-color: #272525;
}
.detail_title_active{
border-color: #272525;
background-color: #272525;
}
.detail_img {
}

View File

@@ -112,7 +112,7 @@
#define NEUTRINO_CONFIGFILE CONFIGDIR"/neutrino.conf"
#define HOSTEDDOCUMENTROOT HOSTED_HTTPDDIR
#define HOSTEDDOCUMENTURL "/hosted/"
#define EXTRASDOCUMENTROOT "/mnt/hosted/extras"
#define EXTRASDOCUMENTROOT HOSTED_HTTPDDIR"/extras"
#define EXTRASDOCUMENTURL "/hosted/extras"
#define ZAPITXMLPATH CONFIGDIR"/zapit"
#define TUXBOX_LOGOS_URL ICONSDIR"/logo"

View File

@@ -548,6 +548,7 @@ void Cyhttpd::ReadConfig(void) {
ConfigList["WebsiteMain.hosted_directory"] = Config->getString(
"WebsiteMain.hosted_directory", HOSTEDDOCUMENTROOT);
ConfigList["Tuxbox.DisplayLogos"] = Config->getString("Tuxbox.DisplayLogos", "true");
// Check location of logos
if (Config->getString("Tuxbox.LogosURL", "").empty()) {
if (access(ConfigList["WebsiteMain.override_directory"] + "/logos", R_OK) == 0) {

View File

@@ -1,4 +0,0 @@
The code-base of yhttpd is Tuxbox-nhttpd 2.x (cvs.tuxbox.org)
Authors since re-writting of yhttpd:
Johannes Golombek [yjogol@cvs.tuxbox.org]

View File

@@ -1,22 +0,0 @@
------------------------------------------------------------------------------
yhttpd-GOALS
(yjogol@online.de, August 2006)
------------------------------------------------------------------------------
The yhttpd-Webserver is a small C++ based Webserver for embedded Systems.
It has a simple Software-Architecture and uses for string-operations
mostly buffer-save functions to prevent security exploits like buffer overruns.
It is designed for threading and multiuser access for static files.
It can be compiled on Windows Systems using Cygwin, on Linux-Systems
and had been succesfully compiled for AVM Fritzbox or for
Maxtor Shared Storage.
The code-base of yhttpd is Tuxbox-nhttpd 2.x (cvs.tuxbox.org)
Starting with Version 3.0 the nhttpd source code was splitted into
a core Webserver (yhttpd_core) and extension modules (yhttpd_mods).
The yhttpd_core and yhttp_mods ware completly rewritten.
The Hook-System (extension modules) encapsulate all requests and responses
for the tuxboxapi. So both tuxapi and yhttpd can be developed seperatlly and
independ from each other.

View File

@@ -216,29 +216,24 @@ std::string decodeString(std::string encodedString) {
//-----------------------------------------------------------------------------
// HTMLEncode std::string
//-----------------------------------------------------------------------------
std::string encodeString(std::string decodedString) {
unsigned int len = sizeof(char) * decodedString.length() * 5 + 1;
std::string result(len, '\0');
char *newString = (char *) result.c_str();
char one_char;
if (len == result.length()) // got memory needed
{
char *dstring = (char *) decodedString.c_str();
while ((one_char = *dstring++)) /* use the null character as a loop terminator */
{
if (isalnum(one_char))
*newString++ = one_char;
else
newString += sprintf(newString, "&#%d;",
(unsigned char) one_char);
}
std::string encodeString(const std::string &decodedString)
{
std::string result="";
char buf[10]= {0};
*newString = '\0'; /* when done copying the string,need to terminate w/ null char */
result.resize((unsigned int) (newString - result.c_str()), '\0');
return result;
} else {
return "";
for (unsigned int i=0; i<decodedString.length(); i++)
{
const char one_char = decodedString[i];
if (isalnum(one_char)) {
result += one_char;
} else {
snprintf(buf,sizeof(buf), "&#%d;",(unsigned char) one_char);
result +=buf;
}
}
result+='\0';
result.reserve();
return result;
}
//-----------------------------------------------------------------------------

View File

@@ -23,7 +23,7 @@ void correctTime(struct tm *zt);
std::string itoa(unsigned int conv);
std::string itoh(unsigned int conv);
std::string decodeString(std::string encodedString);
std::string encodeString(std::string decodedString);
std::string encodeString(const std::string &decodedString);
std::string string_tolower(std::string str);
//-----------------------------------------------------------------------------

View File

@@ -76,10 +76,11 @@ void CLanguage::setLanguage(std::string _language){
ConfigLanguage->loadConfig(language_dir + "/" + _language);
DefaultLanguage->loadConfig(language_dir + "/" + HTTPD_DEFAULT_LANGUAGE);
const char * path[2] = { CONFIGDIR "/locale/", DATADIR "/neutrino/locale/"};
const char * path[2] = { LOCALEDIR_VAR, LOCALEDIR };
for (int i = 0; i < 2; i++)
{
std::string filename = path[i];
filename += "/";
filename += g_settings.language;
filename += ".locale";
@@ -89,7 +90,7 @@ void CLanguage::setLanguage(std::string _language){
}
else if (i == 1) {
// load neutrino default language (should not happen)
NeutrinoLanguage->loadConfig(DATADIR "/neutrino/locale/english.locale", ' ');
NeutrinoLanguage->loadConfig(LOCALEDIR "/english.locale", ' ');
}
}
}
@@ -103,6 +104,8 @@ std::string CLanguage::getTranslation(std::string id){
trans=NeutrinoLanguage->getString(id,"");
if(trans.empty())
trans=DefaultLanguage->getString(id,"");
if (trans.empty())
trans = "# " + id + " #";
return trans;
}
//-----------------------------------------------------------------------------

View File

@@ -497,13 +497,16 @@ void *WebThread(void *args) {
log_level_printf(2,"FD SHOULD CLOSE sock:%d!!!\n",con->sock->get_socket());
else
ws->addSocketToMasterSet(con->sock->get_socket()); // add to master set
#else
delete newConn->ySock;
#endif
if (!con->keep_alive)
con->sock->isValid = false;
con->sock->handling = false; // socket can be handled by webserver main loop (select) again
#ifndef Y_CONFIG_FEATURE_KEEP_ALIVE
delete newConn->ySock;
newConn->ySock = NULL;
#endif
// (4) end thread
delete con;
int thread_number = newConn->thread_number;

View File

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

View File

@@ -18,6 +18,7 @@
#include <dirent.h>
#include <signal.h>
// tuxbox
#include <global.h>
#include <configfile.h>
#include <system/helpers.h>
// yhttpd
@@ -371,8 +372,9 @@ std::string CyParser::cgi_cmd_parsing(CyhookHandler *hh,
// ini-set:<filename>;<varname>;<value>[~open|save|cache]
// if-empty:<value>~<then>~<else>
// if-equal:<left_value>~<right_value>~<then>~<else> (left_value == right_value?)
// if-not-equal:<left_value>~<right_value>~<then>~<else> (left_val!e == right_value?)
// if-not-equal:<left_value>~<right_value>~<then>~<else> (left_value == right_value?)
// if-file-exists:<filename>~<then>~<else>
// find-exec:<filename>
// include-block:<filename>;<block-name>[;<default-text>]
// var-get:<varname>
// var-set:<varname>=<varvalue>
@@ -427,6 +429,8 @@ std::string CyParser::YWeb_cgi_cmd(CyhookHandler *hh, std::string ycmd) {
yresult = (access(if_value, R_OK) == 0) ? if_then
: if_else;
}
} else if (ycmd_type == "find-exec") {
yresult = find_executable(ycmd_name.c_str());
} else if (ycmd_type == "include") {
std::string ytmp;
std::fstream fin(ycmd_name.c_str(), std::fstream::in);
@@ -445,6 +449,28 @@ std::string CyParser::YWeb_cgi_cmd(CyhookHandler *hh, std::string ycmd) {
}
} else if (ycmd_type == "func")
yresult = this->YWeb_cgi_func(hh, ycmd_name);
else if (ycmd_type == "define-get") {
if (ycmd_name.compare("CONFIGDIR")) yresult = CONFIGDIR;
else if (ycmd_name.compare("DATADIR")) yresult = DATADIR;
else if (ycmd_name.compare("FONTDIR")) yresult = FONTDIR;
else if (ycmd_name.compare("LIBDIR")) yresult = LIBDIR;
else if (ycmd_name.compare("GAMESDIR")) yresult = GAMESDIR;
else if (ycmd_name.compare("PLUGINDIR")) yresult = PLUGINDIR;
else if (ycmd_name.compare("PLUGINDIR_VAR")) yresult = PLUGINDIR_VAR;
else if (ycmd_name.compare("LUAPLUGINDIR")) yresult = LUAPLUGINDIR;
else if (ycmd_name.compare("LOCALEDIR")) yresult = LOCALEDIR;
else if (ycmd_name.compare("LOCALEDIR_VAR")) yresult = LOCALEDIR_VAR;
else if (ycmd_name.compare("THEMESDIR")) yresult = THEMESDIR;
else if (ycmd_name.compare("THEMESDIR_VAR")) yresult = THEMESDIR_VAR;
else if (ycmd_name.compare("ICONSDIR")) yresult = ICONSDIR;
else if (ycmd_name.compare("ICONSDIR_VAR")) yresult = ICONSDIR_VAR;
else if (ycmd_name.compare("LOGODIR")) yresult = LOGODIR;
else if (ycmd_name.compare("LOGODIR_VAR")) yresult = LOGODIR_VAR;
else if (ycmd_name.compare("PRIVATE_HTTPDDIR")) yresult = PRIVATE_HTTPDDIR;
else if (ycmd_name.compare("PUBLIC_HTTPDDIR")) yresult = PUBLIC_HTTPDDIR;
else if (ycmd_name.compare("HOSTED_HTTPDDIR")) yresult = HOSTED_HTTPDDIR;
else yresult = "";
}
else if (ycmd_type == "ini-get") {
std::string filename, varname, tmp, ydefault, yaccess;
ySplitString(ycmd_name, "~", filename, yaccess);