示例#1
0
        /// <summary>
        /// Initialise the socket server if necessary
        /// </summary>
        internal void InitAndStartSocket()
        {
            if (socketServer == null)
            {
                WifiRemote.LogMessage("Setting up socket server", LogType.Debug);

                String     userName         = null;
                String     password         = null;
                String     passcode         = null;
                AuthMethod auth             = AuthMethod.None;
                int        autologinTimeout = 0;
                bool       showNotification = false;

                // Load port from config
                using (MediaPortal.Profile.Settings reader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml")))
                {
                    port           = (UInt16)reader.GetValueAsInt(PLUGIN_NAME, "port", DEFAULT_PORT);
                    disableBonjour = reader.GetValueAsBool(PLUGIN_NAME, "disableBonjour", false);
                    serviceName    = reader.GetValueAsString(PLUGIN_NAME, "serviceName", "");
                    userName       = reader.GetValueAsString(PLUGIN_NAME, "username", "");
                    userName       = WifiRemote.DecryptString(userName);
                    password       = reader.GetValueAsString(PLUGIN_NAME, "password", "");
                    password       = WifiRemote.DecryptString(password);
                    passcode       = reader.GetValueAsString(PLUGIN_NAME, "passcode", "");
                    passcode       = WifiRemote.DecryptString(passcode);

                    auth             = (AuthMethod)reader.GetValueAsInt(PLUGIN_NAME, "auth", 0);
                    autologinTimeout = reader.GetValueAsInt(PLUGIN_NAME, "autologinTimeout", 0);

                    showNotification = reader.GetValueAsBool(PLUGIN_NAME, "showNotifications", false);
                }

                // Start listening for client connections
                socketServer                   = new SocketServer(port);
                socketServer.UserName          = userName;
                socketServer.Password          = password;
                socketServer.PassCode          = passcode;
                socketServer.AllowedAuth       = auth;
                socketServer.AutologinTimeout  = autologinTimeout;
                socketServer.ShowNotifications = showNotification;
            }

            socketServer.Start();
        }
示例#2
0
        public SetupForm()
        {
            InitializeComponent();
            labelDefaultPort.Text = String.Format("(Default: {0})", WifiRemote.DEFAULT_PORT);

            // load port from settings
            using (MediaPortal.Profile.Settings reader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml")))
            {
                originalPort = reader.GetValue(WifiRemote.PLUGIN_NAME, "port");
                checkBoxDisableBonjour.Checked = reader.GetValueAsBool(WifiRemote.PLUGIN_NAME, "disableBonjour", false);
                textBoxName.Text = reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "serviceName", WifiRemote.GetServiceName());
                checkBoxShowConnectionMessage.Checked = reader.GetValueAsBool(WifiRemote.PLUGIN_NAME, "showNotifications", false);

                txtUsername.Text = WifiRemote.DecryptString(reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "username", ""));
                txtPassword.Text = WifiRemote.DecryptString(reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "password", ""));
                txtPasscode.Text = WifiRemote.DecryptString(reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "passcode", ""));

                cbAuthMethod.SelectedIndex   = reader.GetValueAsInt(WifiRemote.PLUGIN_NAME, "auth", 0);
                numericUpDownAutologin.Value = reader.GetValueAsInt(WifiRemote.PLUGIN_NAME, "autologinTimeout", 0);



                resetPort();

                // Read plugin ids and convert them to int
                String[] savedPluginStrings = reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "savedPlugins", "").Split('|');
                savedPlugins = new Dictionary <int, string>();

                for (int j = 0; j + 1 < savedPluginStrings.Length; j = j + 2)
                {
                    // Add plugin id and name
                    int i;
                    if (int.TryParse(savedPluginStrings[j], out i))
                    {
                        try
                        {
                            savedPlugins.Add(i, savedPluginStrings[j + 1]);
                        }
                        catch (Exception e)
                        {
                            WifiRemote.LogMessage("Adding saved plugin from config failed: " + e.Message, WifiRemote.LogType.Debug);
                        }
                    }
                }

                // Read ignored plugins
                // Ignored by default:
                //     -1:
                //      0: home
                //   3005: GUITopbar
                // 730716: fanart handler
                String[] ignoredPluginsString = reader.GetValueAsString(WifiRemote.PLUGIN_NAME, "ignoredPlugins", "-1|0|3005|730716").Split('|');
                ignoredPluginsList = new List <int>();

                foreach (String pluginId in ignoredPluginsString)
                {
                    int i;
                    if (int.TryParse(pluginId, out i))
                    {
                        try
                        {
                            ignoredPluginsList.Add(i);
                        }
                        catch (Exception e)
                        {
                            WifiRemote.LogMessage("Adding ignored plugin from config failed: " + e.Message, WifiRemote.LogType.Debug);
                        }
                    }
                }
            }

            // Test if Bonjour is installed
            try
            {
                Version bonjourVersion = ZeroconfService.NetService.DaemonVersion;
                buttonDownloadBonjour.Enabled  = false;
                checkBoxDisableBonjour.Enabled = false;
                buttonDownloadBonjour.Text     = "Bonjour already installed";
            }
            catch
            {
                if (Is64Bit() || Is32BitProcessOn64BitProcessor())
                {
                    // 64 bit windows
                    is64bit = true;
                    buttonDownloadBonjour.Enabled  = true;
                    checkBoxDisableBonjour.Enabled = true;
                    buttonDownloadBonjour.Text     = "Download and install Bonjour (64 bit)";
                }
                else
                {
                    // 32 bit windows
                    is64bit = false;
                    buttonDownloadBonjour.Enabled  = true;
                    checkBoxDisableBonjour.Enabled = true;
                    buttonDownloadBonjour.Text     = "Download and install Bonjour (32 bit)";
                }
            }

            // Setup plugins list
            availablePlugins      = new ArrayList();
            plugins               = new ArrayList();
            pluginIcons           = new ImageList();
            pluginIcons.ImageSize = new Size(20, 20);

            EnumerateWindowPlugins();
            LoadPlugins();
            LoadSettings();

            // Add saved plugins to list for ordering
            foreach (var aSavedPlugin in savedPlugins)
            {
                // Find saved plugin with this window id
                var query = from ItemTag p in plugins
                            where p.WindowId == aSavedPlugin.Key
                            select p;

                // Add the first found plugin to the list
                foreach (ItemTag plugin in query)
                {
                    if (plugin.IsEnabled)
                    {
                        pluginsDataSource.Add(new WindowPlugin(aSavedPlugin.Value,
                                                               aSavedPlugin.Key,
                                                               (plugin.ActiveImage != null)
                                                                    ? ImageHelper.imageToByteArray(plugin.ActiveImage, System.Drawing.Imaging.ImageFormat.Png)
                                                                    : ImageHelper.imageToByteArray(Properties.Resources.NoPluginImage, System.Drawing.Imaging.ImageFormat.Png),
                                                               !ignoredPluginsList.Contains(aSavedPlugin.Key)));
                    }
                    break;
                }
            }

            // Add rest of the plugins to the list
            foreach (ItemTag plugin in plugins)
            {
                if (!savedPlugins.ContainsKey(plugin.WindowId))
                {
                    addPluginToList(plugin);
                }
            }

            dataGridViewPluginList.AutoGenerateColumns           = false;
            dataGridViewPluginList.AutoSize                      = true;
            dataGridViewPluginList.DataSource                    = pluginsDataSource;
            dataGridViewPluginList.CurrentCellDirtyStateChanged += new EventHandler(dataGridViewPluginList_CurrentCellDirtyStateChanged);

            DataGridViewCheckBoxColumn displayColumn = new DataGridViewCheckBoxColumn();

            displayColumn.ReadOnly         = false;
            displayColumn.AutoSizeMode     = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
            displayColumn.DataPropertyName = "DisplayPlugin";
            displayColumn.Name             = "";
            dataGridViewPluginList.Columns.Add(displayColumn);

            DataGridViewImageColumn iconColumn = new DataGridViewImageColumn(false);

            iconColumn.ReadOnly         = true;
            iconColumn.ImageLayout      = DataGridViewImageCellLayout.Zoom;
            iconColumn.Width            = 20;
            iconColumn.DataPropertyName = "Icon";
            iconColumn.Name             = "";
            dataGridViewPluginList.Columns.Add(iconColumn);

            DataGridViewColumn nameColumn = new DataGridViewTextBoxColumn();

            nameColumn.ReadOnly         = false;
            nameColumn.MinimumWidth     = 200;
            nameColumn.AutoSizeMode     = DataGridViewAutoSizeColumnMode.Fill;
            nameColumn.DataPropertyName = "Name";
            nameColumn.Name             = "Plugin";
            dataGridViewPluginList.Columns.Add(nameColumn);
        }