-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathsetup.h
237 lines (207 loc) · 9.84 KB
/
setup.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
#ifndef VDR_LIVE_SETUP_H
#define VDR_LIVE_SETUP_H
// STL headers need to be before VDR tools.h (included by <vdr/menuitems.h>)
#include <list>
#include <limits>
#include <string>
#if TNTVERSION >= 30000
#include <cxxtools/log.h> // must be loaded before any VDR include because of duplicate macros (LOG_ERROR, LOG_DEBUG, LOG_INFO)
#endif
#include "stringhelpers.h"
#include <vdr/menuitems.h>
#define LIVEVERSION "3.4.0"
#define LIVEVERSNUM 30400
#define LIVESUMMARY trNOOP("Live Interactive VDR Environment")
namespace vdrlive {
// directories within /tmp for storing plugin data
#define tmpDir "/tmp/live/"
#define tmpImageDir tmpDir "images/"
#define tmpHlsBufferDir tmpDir "hls-buffer/"
// tags for FFMPEG commands for streaming channels into browser
#define tagChannelH264 "chnH264"
#define tagChannelHVEC "chnHEVC"
#define tagChannelMPG2 "chnMPG2"
#define tagChannelDFLT "chnDFLT"
// tags for FFMPEG commands for streaming recordings into browser
#define tagRecordingH264 "recH264"
#define tagRecordingHVEC "recHVEC"
#define tagRecordingMPG2 "recMPG2"
#define tagRecordingDFLT "recDFLT"
// forward declaration, see below
class cMenuSetupLive;
class Setup
{
friend Setup& LiveSetup();
friend class cMenuSetupLive; // friend declaration is not forward
// declaration, although GCC 3.3 claims so
public:
typedef std::list<std::string> IpList;
// command line
int GetServerPort() const { return m_serverPort; }
int GetServerSslPort() const { return m_serverSslPort; }
std::string GetServerSslCert() const { return m_serverSslCert; }
std::string GetServerSslKey() const { return m_serverSslKey; }
const std::string &GetServerUrl() const { return m_serverUrl; }
const std::string &GetServerUrlImages() const { return m_serverUrlImages; }
IpList const& GetServerIps() const { return m_serverIps; }
// VDR setup
int GetLastChannel() const { return m_lastChannel == 0 ? std::numeric_limits<int>::max() : m_lastChannel; }
int GetScreenshotInterval() const { return m_screenshotInterval; }
std::string const GetAdminLogin() const { return m_adminLogin; }
std::string const GetMD5HashAdminPassword() const;
int GetAdminPasswordLength() const;
bool GetUseAuth() const { return m_useAuth; }
bool UseAuth() const;
std::string const GetTimes() const { return m_times; }
std::string const GetChannelGroups() const { return m_channelGroups; }
std::string const GetChannelGroupsGen() const { return m_channelGroupsGen; }
std::string const GetScheduleDuration() const { return m_scheduleDuration; }
std::string const GetStartScreen() const { return m_startscreen; }
std::string const GetStartScreenLink() const;
std::string const GetTheme() const { return m_theme; }
std::string const GetThemedLink(std::string const & type, const std::string& name) const { return GetThemedLinkPrefix() + type + "/" + name; }
std::string const GetThemedLinkPrefix() const { return m_themedLinkPrefix ; }
std::string const GetThemedLinkPrefixImg() const { return m_themedLinkPrefixImg ; }
std::string const GetLocalNetMask() const { return m_localnetmask; };
std::string const GetLocalNetMaskIPv6() const { return m_localnetmaskIPv6; };
bool GetAllowLocalhost() const { return m_allowlocalhost != 0; };
bool GetIsLocalNet() const { return m_islocalnet; };
std::string const GetLastWhatsOnListMode() const { return m_lastwhatsonlistmode; }
std::string const GetLastSortingMode() const { return m_lastsortingmode; }
std::string const GetTntnetLogLevel() const { return m_tntnetloglevel; }
bool GetShowLogo() const { return m_showLogo != 0; }
bool GetUseArchive() const { return false; }
bool GetShowInfoBox() const { return m_showInfoBox != 0; }
bool GetUseStreamdev() const { return m_useStreamdev != 0; }
int GetStreamdevPort() const { return m_streamdevPort; }
std::string const GetStreamdevType() const { return m_streamdevType; }
bool GetMarkNewRec() const { return m_markNewRec != 0; }
void CheckSetupConfFFmpegConfConsistency(cSv setupCmd, cSv tag);
std::string ReadStreamVideoFFmpegCmdFromConfigFile(cSv tag) const;
std::string const GetFFmpegConf() const { return m_ffmpegConf; }
std::string const GetStreamVideoOpt0() const { return m_streamVopt0; }
std::string const GetStreamVideoOpt1() const { return m_streamVopt1; }
std::string const GetStreamVideoOpt2() const { return m_streamVopt2; }
std::string const GetStreamVideoOpt3() const { return m_streamVopt3; }
bool GetShowIMDb() const { return m_showIMDb != 0; }
std::string const GetEpgImageDir() { return m_epgimagedir; }
const std::string &GetTvscraperImageDir() const { return m_tvscraperimagedir; }
cPlugin *GetPluginTvscraper() { return m_p_tvscraper; } // tvscraper
cPlugin *GetPluginScraper() { return m_p_scraper; } // tvscraper. Or, if not available, scraper2vdr
void SetTvscraperImageDir(const std::string &dir);
const std::string &GetChanLogoDir() const { return m_chanlogodir; }
bool GetShowChannelsWithoutEPG() const { return m_showChannelsWithoutEPG != 0; }
int GetMaxTooltipChars() const { return m_maxTooltipChars; }
void SetLastChannel(int lastChannel) { m_lastChannel = lastChannel; }
void SetAdminLogin(std::string const & login) { m_adminLogin = login; }
std::string SetAdminPassword(std::string password);
void SetUseAuth(int auth) { m_useAuth = auth; }
void SetScreenshotInterval(int interval) { m_screenshotInterval = interval; }
void SetTimes(std::string const & times) { m_times = times; }
void SetChannelGroups(std::string const & channelGroups) { m_channelGroups = channelGroups; }
void SetChannelGroupsGen(std::string const & channelGroupsGen) { m_channelGroupsGen = channelGroupsGen; }
void SetScheduleDuration(std::string const & scheduleDuration) { m_scheduleDuration = scheduleDuration; }
void SetStartScreen(std::string const & startscreen) { m_startscreen = startscreen; }
void SetTheme(std::string const & theme) { m_theme = theme; m_themedLinkPrefix = "themes/" + theme + "/"; m_themedLinkPrefixImg = m_themedLinkPrefix + "img/"; }
void SetLocalNetMask(std::string const & localnetmask) { m_localnetmask = localnetmask; }
void SetLocalNetMaskIPv6(std::string const & localnetmaskIPv6) { m_localnetmaskIPv6 = localnetmaskIPv6; }
void SetAllowLocalhost(bool allow) { m_allowlocalhost = allow ? 1 : 0; }
void SetIsLocalNet(bool islocalnet) { m_islocalnet = islocalnet; }
void SetLastWhatsOnListMode(std::string const & mode) { m_lastwhatsonlistmode = mode; SaveSetup(); }
void SetLastSortingMode(std::string const & mode) { m_lastsortingmode = mode; SaveSetup(); }
void SetShowLogo(bool show) { m_showLogo = show ? 1 : 0; }
void SetShowInfoBox(bool show) { m_showInfoBox = show ? 1 : 0; }
void SetUseStreamdev(bool use) { m_useStreamdev = use ? 1 : 0; }
void SetStreamdevPort(int port) { m_streamdevPort = port; }
void SetStreamdevType(std::string const & type) { m_streamdevType = type; }
void SetMarkNewRec(bool show) { m_markNewRec = show ? 1 : 0; }
void SetShowIMDb(bool show) { m_showIMDb = show ? 1 : 0; }
void SetShowChannelsWithoutEPG(bool show) { m_showChannelsWithoutEPG = show ? 1 : 0; }
bool SaveSetup();
bool ParseCommandLine( int argc, char* argv[] );
bool Initialize( void );
char const* CommandLineHelp() const;
bool ParseSetupEntry( char const* name, char const* value );
bool CheckLocalNet(std::string const & ip);
time_t GetVdrStart() { return m_vdr_start; }
private:
Setup();
Setup( Setup const& );
// me
cPlugin* liveplugin;
mutable std::string m_helpString;
// command-line options
int m_serverPort;
int m_serverSslPort;
std::string m_serverSslCert;
std::string m_serverSslKey;
std::string m_serverUrl;
std::string m_serverUrlImages;
static std::string m_configDirectory;
IpList m_serverIps;
std::string m_epgimagedir;
std::string m_tvscraperimagedir;
cPlugin *m_p_tvscraper;
cPlugin *m_p_scraper;
std::string m_chanlogodir;
// setup options
int m_lastChannel;
int m_screenshotInterval;
int m_useAuth;
std::string m_adminLogin;
std::string m_adminPasswordMD5;
std::string m_times;
std::string m_channelGroupsGen;
std::string m_channelGroups;
std::string m_scheduleDuration;
std::string m_startscreen;
std::string m_theme;
std::string m_themedLinkPrefix;
std::string m_themedLinkPrefixImg;
std::string m_localnetmask;
std::string m_localnetmaskIPv6;
int m_allowlocalhost;
bool m_islocalnet;
std::string m_lastwhatsonlistmode;
std::string m_lastsortingmode;
std::string m_tntnetloglevel;
int m_showLogo;
int m_showInfoBox;
int m_useStreamdev;
int m_streamdevPort;
std::string m_streamdevType;
int m_markNewRec;
std::string m_ffmpegConf;
std::string m_streamVopt0;
std::string m_streamVopt1;
std::string m_streamVopt2;
std::string m_streamVopt3;
int m_showIMDb;
int m_showChannelsWithoutEPG;
const int m_maxTooltipChars = 300; // maximum number of characters to be displayed in tooltips
bool CheckServerPort();
bool CheckServerIps();
bool CheckServerSslPort();
time_t m_vdr_start = 0;
};
Setup& LiveSetup();
class cMenuSetupLive : public cMenuSetupPage {
protected:
virtual void Store(void);
virtual eOSState ProcessKey(eKeys Key);
public:
cMenuSetupLive();
private:
int m_lastChannel;
int m_screenshotInterval;
int m_useAuth;
char m_adminLogin[20];
char m_adminPassword[20];
char m_tmpPassword[20];
std::string m_oldpasswordMD5;
std::string m_newpasswordMD5;
void Set(void);
bool InEditMode(const char* ItemText, const char* ItemName, const char* ItemValue);
};
} // namespace vdrlive
#endif // VDR_LIVE_SETUP_H