Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        private static void StopServer()
        {
            if (_upnpRefreshTimer != null)
            {
                _upnpRefreshTimer.Dispose();
            }

            if (_server != null)
            {
                _server.StopServer();
                _serverThread = null;
                _server       = null;
                Log.WriteLine("HTTP server stopped");
            }

            if (_watcher != null)
            {
                _watcher.IsEnabled = false;
                _watcher           = null;
            }

            if (_upnpController != null)
            {
                if (_upnpController.UPnPReady)
                {
                    int port = int.Parse(TinyOPDS.Properties.Settings.Default.ServerPort);
                    _upnpController.DeleteForwardingRule(port, System.Net.Sockets.ProtocolType.Tcp);
                    Log.WriteLine("Port {0} closed", port);
                }
                _upnpController.DiscoverCompleted -= _upnpController_DiscoverCompleted;
                _upnpController.Dispose();
            }
        }
Exemplo n.º 2
0
        private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            SaveSettings();
            if (_server != null && _server._isActive)
            {
                _server.StopServer();
                _serverThread = null;
                _server       = null;

                if (_upnpController != null)
                {
                    if (TinyOPDS.Properties.Settings.Default.UseUPnP)
                    {
                        int port = int.Parse(TinyOPDS.Properties.Settings.Default.ServerPort);
                        _upnpController.DeleteForwardingRule(port, System.Net.Sockets.ProtocolType.Tcp);
                    }
                    _upnpController.DiscoverCompleted -= _upnpController_DiscoverCompleted;
                    _upnpController.Dispose();
                }
            }

            if (_scanner.Status == FileScannerStatus.SCANNING)
            {
                _scanner.Stop();
            }
            if (Library.IsChanged)
            {
                Library.Save();
            }

            _notifyIcon.Visible = false;

            Log.WriteLine("TinyOPDS closed\n");
        }
Exemplo n.º 3
0
        private void StartHttpServer()
        {
            // Create and start HTTP server
            HttpProcessor.AuthorizedClients.Clear();
            HttpProcessor.BannedClients.Clear();
            _server = new OPDSServer(_upnpController.LocalIP, int.Parse(TinyOPDS.Properties.Settings.Default.ServerPort));

            _serverThread          = new Thread(new ThreadStart(_server.Listen));
            _serverThread.Priority = ThreadPriority.BelowNormal;
            _serverThread.Start();
            _server.ServerReady.WaitOne(TimeSpan.FromMilliseconds(500));
            if (!_server.IsActive)
            {
                if (_server.ServerException != null)
                {
                    if (_server.ServerException is System.Net.Sockets.SocketException)
                    {
                        MessageBox.Show(string.Format(Localizer.Text("Probably, port {0} is already in use. Please try different port value."), TinyOPDS.Properties.Settings.Default.ServerPort), Localizer.Text("Warning"), MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        MessageBox.Show(_server.ServerException.Message, Localizer.Text("Error"), MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    _server.StopServer();
                    _serverThread = null;
                    _server       = null;
                }
            }
            else
            {
                serverButton.Text = serverMenuItem.Text = Localizer.Text("Stop server");
                Log.WriteLine("HTTP server started");
            }
        }
Exemplo n.º 4
0
        private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            SaveSettings();
            if (_server != null && _server._isActive)
            {
                _server.StopServer();
                _serverThread = null;
                _server       = null;
            }

            if (_scanner.Status == FileScannerStatus.SCANNING)
            {
                _scanner.Stop();
            }
            if (LibraryFactory.GetLibrary().IsChanged)
            {
                LibraryFactory.GetLibrary().Save();
            }

            if (_upnpController != null)
            {
                _upnpController.DiscoverCompleted -= _upnpController_DiscoverCompleted;
                _upnpController.Dispose();
            }

            _notifyIcon.Visible = false;

            // Remove port forwarding
            openPort.Checked = false;

            Log.WriteLine("TinyOPDS closed\n");
        }
Exemplo n.º 5
0
 private void StopHttpServer()
 {
     if (_server != null)
     {
         _server.StopServer();
         _serverThread = null;
         _server       = null;
         Log.WriteLine("HTTP server stopped");
     }
     serverButton.Text = serverMenuItem.Text = Localizer.Text("Start server");
 }
Exemplo n.º 6
0
        /// <summary>
        ///
        /// </summary>
        private static void StartServer()
        {
            // Init log file settings
            Log.SaveToFile = TinyOPDS.Properties.Settings.Default.SaveLogToDisk;

            // Init localization service
            Localizer.Init();
            Localizer.Language = TinyOPDS.Properties.Settings.Default.Language;

            // Create timer for periodical refresh UPnP forwarding
            _upnpRefreshTimer = new Timer(UpdateUPnPForwarding, null, TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(5));

            // Create file watcher
            _watcher              = new Watcher(Library.LibraryPath);
            _watcher.OnBookAdded += (object sender, BookAddedEventArgs e) =>
            {
                if (e.BookType == BookType.FB2)
                {
                    _fb2Count++;
                }
                else
                {
                    _epubCount++;
                }
                Log.WriteLine(LogLevel.Info, "Added: \"{0}\"", e.BookPath);
            };
            _watcher.OnInvalidBook += (_, __) =>
            {
                _invalidFiles++;
            };
            _watcher.OnFileSkipped += (object _sender, FileSkippedEventArgs _e) =>
            {
                _skippedFiles = _e.Count;
            };

            _watcher.OnBookDeleted += (object sender, BookDeletedEventArgs e) =>
            {
                Log.WriteLine(LogLevel.Info, "Deleted: \"{0}\"", e.BookPath);
            };
            _watcher.IsEnabled = false;

            _upnpController.DiscoverCompleted += _upnpController_DiscoverCompleted;
            _upnpController.DiscoverAsync(TinyOPDS.Properties.Settings.Default.UseUPnP);

            Library.LibraryPath    = TinyOPDS.Properties.Settings.Default.LibraryPath.SanitizePathName();
            Library.LibraryLoaded += (_, __) =>
            {
                _watcher.DirectoryToWatch = Library.LibraryPath;
                _watcher.IsEnabled        = TinyOPDS.Properties.Settings.Default.WatchLibrary;
            };

            // Load saved credentials
            try
            {
                HttpProcessor.Credentials.Clear();
                string[] pairs = Crypt.DecryptStringAES(TinyOPDS.Properties.Settings.Default.Credentials, _urlTemplate).Split(';');
                foreach (string pair in pairs)
                {
                    string[] cred = pair.Split(':');
                    if (cred.Length == 2)
                    {
                        HttpProcessor.Credentials.Add(new Credential(cred[0], cred[1]));
                    }
                }
            }
            catch { }

            // Create and start HTTP server
            HttpProcessor.AuthorizedClients.Clear();
            HttpProcessor.BannedClients.Clear();
            _server = new OPDSServer(_upnpController.LocalIP, int.Parse(TinyOPDS.Properties.Settings.Default.ServerPort));

            _serverThread          = new Thread(new ThreadStart(_server.Listen));
            _serverThread.Priority = ThreadPriority.BelowNormal;
            _serverThread.Start();
            _server.ServerReady.WaitOne(TimeSpan.FromMilliseconds(500));
            if (!_server.IsActive)
            {
                if (_server.ServerException != null)
                {
                    if (_server.ServerException is System.Net.Sockets.SocketException)
                    {
                        string msg = string.Format("Probably, port {0} is already in use. Please try the different port.", TinyOPDS.Properties.Settings.Default.ServerPort);
                        Console.WriteLine(msg);
                        Log.WriteLine(msg);
                    }
                    else
                    {
                        Console.WriteLine(_server.ServerException.Message);
                        Log.WriteLine(LogLevel.Error, _server.ServerException.Message);
                    }

                    StopServer();
                }
            }
            else
            {
                Log.WriteLine("HTTP server started");
                if (Utils.IsLinux || System.Environment.UserInteractive)
                {
                    Console.WriteLine("Server is running... Press <Ctrl+c> to shutdown server.");
                    while (_server != null && _server.IsActive)
                    {
                        Thread.Sleep(500);
                    }
                }
            }
        }