summaryrefslogtreecommitdiff
path: root/setup.h
blob: 3b0767ca3626a84efedad77c47d01a03fbab4872 (plain)
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
#ifndef VDR_LIVE_SETUP_H
#define VDR_LIVE_SETUP_H

#include <list>
#include <numeric>
#include <string>
#include "live.h"
#include <vdr/menuitems.h>

#define LIVEVERSION "0.1.0"
#define LIVEVERSNUM 100
#define LIVESUMMARY "Live Interactive VDR Environment"

namespace vdrlive {

// 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;

		// commandline
		int GetServerPort() const { return m_serverPort; }
		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 GetAdminLogin() const { return m_adminLogin; }
		std::string GetMD5HashAdminPassword() const;
		int GetAdminPasswordLength() const;
		bool GetUseAuth() const { return m_useAuth; }
		bool UseAuth() const;
		std::string GetTimes() const { return m_times; }
		std::string GetStartScreen() const { return m_startscreen; }
		std::string GetStartScreenLink() const;
		std::string GetTheme() const { return m_theme; }
		std::string GetThemedLink(const std::string& type, const std::string& name) const { return "themes/" + GetTheme() + "/" + type + "/" + name; }
		std::string GetLocalNetMask() const { return m_localnetmask; };
		bool GetIsLocalNet() const { return m_islocalnet; };
		std::string GetLastWhatsOnListMode() const { return m_lastwhatsonlistmode; }
		std::string GetTntnetLogLevel() const { return m_tntnetloglevel; }
		bool GetShowLogo() const { return m_showLogo != 0; }
		bool GetUseAjax() const { return m_useAjax != 0; }
		bool GetShowInfoBox() const { return m_showInfoBox != 0; }
		bool GetUseStreamdev() const { return m_useStreamdev != 0; }
		int GetStreamdevPort() const { return m_streamdevPort; }
		std::string GetEpgImageDir() { return m_epgimagedir; }

		void SetLastChannel(int lastChannel) { m_lastChannel = lastChannel; }
		void SetAdminLogin(std::string 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 times) { m_times = times; }
		void SetStartScreen(std::string startscreen) { m_startscreen = startscreen; }
		void SetTheme(std::string theme) { m_theme = theme; }
		void SetLocalNetMask(std::string localnetmask) { m_localnetmask = localnetmask; }
		void SetIsLocalNet(bool islocalnet) { m_islocalnet = islocalnet; }
		void SetLastWhatsOnListMode(std::string mode) { m_lastwhatsonlistmode = mode; SaveSetup(); }
		void SetShowLogo(bool show) { m_showLogo = show ? 1 : 0; }
		void SetUseAjax(bool use) { m_useAjax = use ? 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; }

		bool SaveSetup();

		bool ParseCommandLine( int argc, char* argv[] );
		char const* CommandLineHelp() const;

		bool ParseSetupEntry( char const* name, char const* value );

		bool CheckLocalNet(const std::string& ip);


	private:
		Setup();
		Setup( Setup const& );

		// me
		cPlugin* liveplugin;

		mutable std::string m_helpString;
		// commandline options
		int m_serverPort;
		IpList m_serverIps;
		std::string m_epgimagedir;

		// 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_startscreen;
		std::string m_theme;
		std::string m_localnetmask;
		bool m_islocalnet;
		std::string m_lastwhatsonlistmode;
		std::string m_tntnetloglevel;
		int m_showLogo;
		int m_useAjax;
		int m_showInfoBox;
		int m_useStreamdev;
		int m_streamdevPort;

		bool CheckServerPort();
		bool CheckServerIps();
};

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