예제 #1
0
        public void Register(IWifiAddon addon, string menuAnchor, string path)
        {
            WifiAddon a = new WifiAddon();

            a.Addon      = addon;
            a.MenuAnchor = menuAnchor;
            a.Path       = path;
            m_Addons.Add(a);
        }
예제 #2
0
        public void Register(IWifiAddon addon, string menuAnchor, string path, PrivilegeLevel level = PrivilegeLevel.Admins)
        {
            WifiAddon a = new WifiAddon();

            a.Addon      = addon;
            a.MenuAnchor = menuAnchor;
            a.Path       = path;
            a.Privilege  = level;
            m_Addons.Add(a);
        }
예제 #3
0
        private void OnExtensionChanged(object s, ExtensionNodeEventArgs args)
        {
            IWifiAddon addon = (IWifiAddon)args.ExtensionObject;

            if (args.Change == ExtensionChange.Add)
            {
                m_log.InfoFormat("[Wifi]: Detected addon {0}", addon.Name);
                if (addon.LoadConfig(m_Config))
                {
                    addon.Initialize(m_Config, ConfigName, m_Server, m_WebApp);
                }
            }
        }
예제 #4
0
        private void Initialize(IHttpServer server)
        {
            m_log.DebugFormat("[Wifi]: Initializing. Server at port {0}.", server.Port);

            IConfig serverConfig = m_Config.Configs[ConfigName];

            if (serverConfig == null)
            {
                throw new Exception(String.Format("No section {0} in config file", ConfigName));
            }

            // Launch the WebApp
            m_WebApp = new WebApp(m_Config, ConfigName, m_Server, m_SceneActor);

            // Register all the handlers
            BaseStreamHandler defaultHandler = new WifiDefaultHandler(m_WebApp);

            AddStreamHandler(defaultHandler);
            AddStreamHandler(new WifiRootHandler(defaultHandler));
            AddStreamHandler(new WifiHeadHandler(m_WebApp));
            AddStreamHandler(new WifiNotifyHandler(m_WebApp));
            AddStreamHandler(new WifiInstallGetHandler(m_WebApp));
            AddStreamHandler(new WifiInstallPostHandler(m_WebApp));
            AddStreamHandler(new WifiLoginHandler(m_WebApp));
            AddStreamHandler(new WifiLogoutHandler(m_WebApp));
            AddStreamHandler(new WifiForgotPasswordGetHandler(m_WebApp));
            AddStreamHandler(new WifiForgotPasswordPostHandler(m_WebApp));
            AddStreamHandler(new WifiPasswordRecoverGetHandler(m_WebApp));
            AddStreamHandler(new WifiPasswordRecoverPostHandler(m_WebApp));
            AddStreamHandler(new WifiUserAccountGetHandler(m_WebApp));
            AddStreamHandler(new WifiUserAccountPostHandler(m_WebApp));
            AddStreamHandler(new WifiUserManagementGetHandler(m_WebApp));
            AddStreamHandler(new WifiUserManagementPostHandler(m_WebApp));
            AddStreamHandler(new WifiConsoleHandler(m_WebApp));

            AddStreamHandler(new WifiInventoryLoadGetHandler(m_WebApp));
            AddStreamHandler(new WifiInventoryGetHandler(m_WebApp));
            AddStreamHandler(new WifiInventoryPostHandler(m_WebApp));

            AddStreamHandler(new WifiHyperlinkGetHandler(m_WebApp));
            AddStreamHandler(new WifiHyperlinkPostHandler(m_WebApp));

            AddStreamHandler(new WifiTOSGetHandler(m_WebApp));
            AddStreamHandler(new WifiTOSPostHandler(m_WebApp));

            AddStreamHandler(new WifiGroupsManagementGetHandler(m_WebApp));
            AddStreamHandler(new WifiGroupsManagementPostHandler(m_WebApp));

            //server.AddStreamHandler(new WifiRegionManagementPostHandler(app));
            //server.AddStreamHandler(new WifiRegionManagementGetHandler(app));

            // Add handlers for serving configured paths
            IEnumerable <string> servePaths = serverConfig.GetKeys().Where(option => option.StartsWith(m_ServePathPrefix));

            if (servePaths.Count() > 0)
            {
                foreach (string servePath in servePaths)
                {
                    string   paths = serverConfig.GetString(servePath, string.Empty);
                    string[] parts = paths.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    if (parts.Count() == 2)
                    {
                        AddStreamHandler(new WifiGetHandler(parts[0], parts[1]));
                    }
                    else
                    {
                        m_log.WarnFormat("[Wifi]: Invalid format with configuration option {0}: {1}", servePath, paths);
                    }
                }
            }

            // Load addons
            IEnumerable <string> addonVars = serverConfig.GetKeys().Where(option => option.StartsWith(m_AddonPrefix));

            if (addonVars.Count() > 0)
            {
                foreach (string addonVar in addonVars)
                {
                    string addonDll = serverConfig.GetString(addonVar, string.Empty);
                    if (addonDll != string.Empty)
                    {
                        m_log.InfoFormat("[Wifi]: Loading addon {0}", addonDll);
                        object[]   args  = new object[] { m_Config, ConfigName, m_Server, m_WebApp };
                        IWifiAddon addon = ServerUtils.LoadPlugin <IWifiAddon>(addonDll, args);

                        if (addon == null)
                        {
                            m_log.WarnFormat("[Wifi]: Unable to load addon {0}", addonDll);
                        }
                    }
                }
            }

            // Load Wifi addons as mono addins, if they exist
            try
            {
                AddinManager.AddExtensionNodeHandler("/Diva/Wifi/Addon", OnExtensionChanged);
            }
            catch (InvalidOperationException e)
            {
                m_log.DebugFormat("[Wifi]: extension point /Diva/Wifi/Addon not found");
            }
        }
예제 #5
0
        public WifiServerConnector(IConfigSource config, IHttpServer server, string configName, ISceneActor sactor) :
            base(config, server, configName)
        {
            m_log.DebugFormat("[Wifi]: WifiServerConnector starting");
            IConfig serverConfig = config.Configs[m_ConfigName];

            if (serverConfig == null)
            {
                throw new Exception(String.Format("No section {0} in config file", m_ConfigName));
            }

            //
            // Leaving this here for educational purposes
            //
            //if (Environment.StaticVariables.ContainsKey("AppDll"))
            //{
            //    object[] args = new object[] { config, server };
            //    WebApp app = ServerUtils.LoadPlugin<IWebApp>(Environment.StaticVariables["AppDll"].ToString(), args);
            //    Environment.InitializeWebApp(app);
            //}

            // Launch the WebApp
            WebApp app = new WebApp(config, m_ConfigName, server, sactor);

            // Register all the handlers
            server.AddStreamHandler(new WifiDefaultHandler(app));
            server.AddStreamHandler(new WifiHeadHandler(app));
            server.AddStreamHandler(new WifiNotifyHandler(app));
            server.AddStreamHandler(new WifiInstallGetHandler(app));
            server.AddStreamHandler(new WifiInstallPostHandler(app));
            server.AddStreamHandler(new WifiLoginHandler(app));
            server.AddStreamHandler(new WifiLogoutHandler(app));
            server.AddStreamHandler(new WifiForgotPasswordGetHandler(app));
            server.AddStreamHandler(new WifiForgotPasswordPostHandler(app));
            server.AddStreamHandler(new WifiPasswordRecoverGetHandler(app));
            server.AddStreamHandler(new WifiPasswordRecoverPostHandler(app));
            server.AddStreamHandler(new WifiUserAccountGetHandler(app));
            server.AddStreamHandler(new WifiUserAccountPostHandler(app));
            server.AddStreamHandler(new WifiUserManagementGetHandler(app));
            server.AddStreamHandler(new WifiUserManagementPostHandler(app));
            server.AddStreamHandler(new WifiConsoleHandler(app));

            server.AddStreamHandler(new WifiInventoryLoadGetHandler(app));
            server.AddStreamHandler(new WifiInventoryGetHandler(app));
            server.AddStreamHandler(new WifiInventoryPostHandler(app));

            server.AddStreamHandler(new WifiHyperlinkGetHandler(app));
            server.AddStreamHandler(new WifiHyperlinkPostHandler(app));

            server.AddStreamHandler(new WifiTOSGetHandler(app));
            server.AddStreamHandler(new WifiTOSPostHandler(app));

            server.AddStreamHandler(new WifiGroupsManagementGetHandler(app));
            server.AddStreamHandler(new WifiGroupsManagementPostHandler(app));

            //server.AddStreamHandler(new WifiRegionManagementPostHandler(app));
            //server.AddStreamHandler(new WifiRegionManagementGetHandler(app));

            // Add handlers for serving configured paths
            IEnumerable <string> servePaths = serverConfig.GetKeys().Where(option => option.StartsWith(m_ServePathPrefix));

            if (servePaths.Count() > 0)
            {
                foreach (string servePath in servePaths)
                {
                    string   paths = serverConfig.GetString(servePath, string.Empty);
                    string[] parts = paths.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    if (parts.Count() == 2)
                    {
                        server.AddStreamHandler(new WifiGetHandler(parts[0], parts[1]));
                    }
                    else
                    {
                        m_log.WarnFormat("[Wifi]: Invalid format with configuration option {0}: {1}", servePath, paths);
                    }
                }
            }

            // Load addons
            IEnumerable <string> addonVars = serverConfig.GetKeys().Where(option => option.StartsWith(m_AddonPrefix));

            if (addonVars.Count() > 0)
            {
                foreach (string addonVar in addonVars)
                {
                    string addonDll = serverConfig.GetString(addonVar, string.Empty);
                    if (addonDll != string.Empty)
                    {
                        m_log.InfoFormat("[Wifi]: Loading addon {0}", addonDll);
                        object[]   args  = new object[] { config, m_ConfigName, server, app };
                        IWifiAddon addon = ServerUtils.LoadPlugin <IWifiAddon>(addonDll, args);

                        if (addon == null)
                        {
                            m_log.WarnFormat("[Wifi]: Unable to load addon {0}", addonDll);
                        }
                    }
                }
            }
        }