Example #1
0
    private static void Main(string[] args)
    {
      Console.WriteLine();
      var options = new Options();
      try {
        Console.TreatControlCAsInput = false;
        Console.CancelKeyPress += CancelKeyPressed;

        options.Parse(args);
        if (options.ShowHelp) {
          options.PrintUsage();
          return;
        }
        if (options.ShowVersion) {
          ShowVersion();
          return;
        }
        if (options.ShowLicense) {
          ShowLicense();
          return;
        }
        if (options.ListViews) {
          ListViews();
          return;
        }
        if (options.ListOrders) {
          ListOrders();
          return;
        }
        if (options.Directories.Length == 0) {
          throw new GetOptException("No directories specified");
        }

        options.SetupLogging();

        using (var icon = new ProgramIcon()) {
          var server = new HttpServer(options.Port);
          try {
            using (var authorizer = new HttpAuthorizer(server)) {
              if (options.Ips.Length != 0) {
                authorizer.AddMethod(new IPAddressAuthorizer(options.Ips));
              }
              if (options.Macs.Length != 0) {
                authorizer.AddMethod(new MacAuthorizer(options.Macs));
              }
              if (options.UserAgents.Length != 0) {
                authorizer.AddMethod(
                  new UserAgentAuthorizer(options.UserAgents));
              }

              Console.Title = "SimpleDLNA - starting ...";

              var types = options.Types[0];
              foreach (var t in options.Types) {
                types = types | t;
                server.InfoFormat("Enabled type {0}", t);
              }

              var friendlyName = "sdlna";

              if (options.Seperate) {
                foreach (var d in options.Directories) {
                  server.InfoFormat("Mounting FileServer for {0}", d.FullName);
                  var fs = SetupFileServer(
                    options, types, new DirectoryInfo[] { d });
                  friendlyName = fs.FriendlyName;
                  server.RegisterMediaServer(fs);
                  server.NoticeFormat("{0} mounted", d.FullName);
                }
              }
              else {
                server.InfoFormat(
                  "Mounting FileServer for {0} ({1})",
                  options.Directories[0], options.Directories.Length);
                var fs = SetupFileServer(options, types, options.Directories);
                friendlyName = fs.FriendlyName;
                server.RegisterMediaServer(fs);
                server.NoticeFormat(
                  "{0} ({1}) mounted",
                  options.Directories[0], options.Directories.Length);
              }

              Console.Title = String.Format("{0} - running ...", friendlyName);

              Run(server);
            }
          }
          finally {
            server.Dispose();
          }
        }
      }
      catch (GetOptException ex) {
        Console.Error.WriteLine("Error: {0}\n\n", ex.Message);
        options.PrintUsage();
      }
#if !DEBUG
      catch (Exception ex) {
        LogManager.GetLogger(typeof(Program)).Fatal("Failed to run", ex);
      }
#endif
    }
Example #2
0
        private static void Main(string[] args)
        {
            Console.WriteLine();
            var options = new Options();

            try {
                Console.TreatControlCAsInput = false;
                Console.CancelKeyPress      += CancelKeyPressed;

                options.Parse(args);
                if (options.ShowHelp)
                {
                    options.PrintUsage();
                    return;
                }
                if (options.ShowVersion)
                {
                    ShowVersion();
                    return;
                }
                if (options.ShowLicense)
                {
                    ShowLicense();
                    return;
                }
                if (options.ListViews)
                {
                    ListViews();
                    return;
                }
                if (options.ListOrders)
                {
                    ListOrders();
                    return;
                }
                if (options.Directories.Length == 0)
                {
                    throw new GetOptException("No directories specified");
                }

                options.SetupLogging();

                var server = new HttpServer(options.Port);
                try {
                    server.Info("CTRL-C to terminate");

                    Console.Title = "SimpleDLNA - starting ...";

                    var types = options.Types[0];
                    foreach (var t in options.Types)
                    {
                        types = types | t;
                        server.InfoFormat("Enabled type {0}", t);
                    }

                    var friendlyName = "sdlna";

                    if (options.Seperate)
                    {
                        foreach (var d in options.Directories)
                        {
                            server.InfoFormat("Mounting FileServer for {0}", d.FullName);
                            var fs = SetupFileServer(options, types, new DirectoryInfo[] { d });
                            friendlyName = fs.FriendlyName;
                            server.RegisterMediaServer(fs);
                            server.InfoFormat("{0} mounted", d.FullName);
                        }
                    }
                    else
                    {
                        server.InfoFormat("Mounting FileServer for {0} ({1})", options.Directories[0], options.Directories.Length);
                        var fs = SetupFileServer(options, types, options.Directories);
                        friendlyName = fs.FriendlyName;
                        server.RegisterMediaServer(fs);
                        server.InfoFormat("{0} ({1}) mounted", options.Directories[0], options.Directories.Length);
                    }

                    Console.Title = String.Format("{0} - running ...", friendlyName);

                    Run(server);
                }
                finally {
                    server.Dispose();
                }
            }
            catch (GetOptException ex) {
                Console.Error.WriteLine("Error: {0}\n\n", ex.Message);
                options.PrintUsage();
            }
#if DEBUG
            catch (Exception ex) {
                LogManager.GetLogger(typeof(Program)).Fatal("Failed to run", ex);
            }
#endif
        }