示例#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
    }
示例#2
0
            protected override void OnStart(string[] args)
            {
                System.Environment.CurrentDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
                //Program.Start(StartupArgs);
                var options = new Options();

                try
                {
                    options.Parse(StartupArgs);
                    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())
                    {
                        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));
                                }

                                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);
                                }
                            }
                        }
                        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
            }
示例#3
0
文件: Program.cs 项目: jxp/simpleDLNA
        private static void Main(string[] args)
        {
            Console.WriteLine();
            var options = new Options();

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

                options.Parse(args);
                MKVTools.Initialise(options.MKVTools.DirectoryName);
                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 (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[] { 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 = $"{friendlyName} - running ...";

                            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
        }
示例#4
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
        }