1 /*
2  *  Copyright (C) 2013-2018 Team Kodi
3  *  This file is part of Kodi - https://kodi.tv
4  *
5  *  SPDX-License-Identifier: GPL-2.0-or-later
6  *  See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "settings/lib/ISettingCallback.h"
12 
13 class CSettings;
14 #ifdef HAS_WEB_SERVER
15 class CWebServer;
16 class CHTTPImageHandler;
17 class CHTTPImageTransformationHandler;
18 class CHTTPVfsHandler;
19 class CHTTPJsonRpcHandler;
20 #ifdef HAS_WEB_INTERFACE
21 #ifdef HAS_PYTHON
22 class CHTTPPythonHandler;
23 #endif
24 class CHTTPWebinterfaceHandler;
25 class CHTTPWebinterfaceAddonsHandler;
26 #endif // HAS_WEB_INTERFACE
27 #endif // HAS_WEB_SERVER
28 
29 class CNetworkServices : public ISettingCallback
30 {
31 public:
32   CNetworkServices();
33   ~CNetworkServices() override;
34 
35   bool OnSettingChanging(const std::shared_ptr<const CSetting>& setting) override;
36   void OnSettingChanged(const std::shared_ptr<const CSetting>& setting) override;
37   bool OnSettingUpdate(const std::shared_ptr<CSetting>& setting,
38                        const char* oldSettingId,
39                        const TiXmlNode* oldSettingNode) override;
40 
41   void Start();
42   void Stop(bool bWait);
43 
44   bool StartWebserver();
45   bool IsWebserverRunning();
46   bool StopWebserver();
47 
48   bool StartAirPlayServer();
49   bool IsAirPlayServerRunning();
50   bool StopAirPlayServer(bool bWait);
51   bool StartAirTunesServer();
52   bool IsAirTunesServerRunning();
53   bool StopAirTunesServer(bool bWait);
54 
55   bool StartJSONRPCServer();
56   bool IsJSONRPCServerRunning();
57   bool StopJSONRPCServer(bool bWait);
58 
59   bool StartEventServer();
60   bool IsEventServerRunning();
61   bool StopEventServer(bool bWait, bool promptuser);
62   bool RefreshEventServer();
63 
64   bool StartUPnP();
65   bool StopUPnP(bool bWait);
66   bool StartUPnPClient();
67   bool IsUPnPClientRunning();
68   bool StopUPnPClient();
69   bool StartUPnPController();
70   bool IsUPnPControllerRunning();
71   bool StopUPnPController();
72   bool StartUPnPRenderer();
73   bool IsUPnPRendererRunning();
74   bool StopUPnPRenderer();
75   bool StartUPnPServer();
76   bool IsUPnPServerRunning();
77   bool StopUPnPServer();
78 
79   bool StartRss();
80   bool IsRssRunning();
81   bool StopRss();
82 
83   bool StartZeroconf();
84   bool IsZeroconfRunning();
85   bool StopZeroconf();
86 
87 private:
88   CNetworkServices(const CNetworkServices&);
89   CNetworkServices const& operator=(CNetworkServices const&);
90 
91   bool ValidatePort(int port);
92 
93   // Construction parameters
94   std::shared_ptr<CSettings> m_settings;
95 
96   // Network services
97 #ifdef HAS_WEB_SERVER
98   CWebServer& m_webserver;
99   // Handlers
100   CHTTPImageHandler& m_httpImageHandler;
101   CHTTPImageTransformationHandler& m_httpImageTransformationHandler;
102   CHTTPVfsHandler& m_httpVfsHandler;
103   CHTTPJsonRpcHandler& m_httpJsonRpcHandler;
104 #ifdef HAS_WEB_INTERFACE
105 #ifdef HAS_PYTHON
106   CHTTPPythonHandler& m_httpPythonHandler;
107 #endif
108   CHTTPWebinterfaceHandler& m_httpWebinterfaceHandler;
109   CHTTPWebinterfaceAddonsHandler& m_httpWebinterfaceAddonsHandler;
110 #endif
111 #endif
112 };
113