Ejemplo n.º 1
0
        public static void DisplayUser(
            RayPortUser rayPortUser, int?index = null,
            bool showShareUrl = true, bool addReturn = true,
            int intend        = 2)
        {
            if (rayPortUser == null)
            {
                return;
            }
            StringBuilder s  = new StringBuilder("");
            StringWriter  sw = new StringWriter(s);

            s.Append(' ', intend);
            Displayer.ShowConfigItem(s + "索引", index, Program.HighLightColor);
            Displayer.ShowConfigItem(s + "用户", rayPortUser.GetRayPortUserRemark(), Program.WarningColor);
            Displayer.ShowConfigItem(s + "用户Id", rayPortUser.Uuid);
            Displayer.ShowConfigItem(s + "用户额外Id", rayPortUser.AlterId);
            Displayer.ShowConfigItem(s + "等级(Level)", rayPortUser.Level);
            Displayer.ShowConfigItem(s + "邮箱", rayPortUser.Email);
            if (showShareUrl)
            {
                try
                {
                    Displayer.ShowConfigItem(
                        "分享链接",
                        rayPortUser.GenerateShareUrl(RayConfigRepository.GetRayPort(rayPortUser)), Program.ErrorColor);
                }
                catch (Exception) { }
            }

            if (addReturn)
            {
                Console.WriteLine();
            }
        }
Ejemplo n.º 2
0
        public void Execute()
        {
            RayConfigRepository repo = new RayConfigRepository();

            IList <RayPort> ports = repo.GetRayPorts();

            ConsoleConfigDisplayer.DisplayRayPorts(ports);
            try
            {
                int ch = InputHelper.GetNumberInput("输入端口索引选择端口", tipsColor: ConsoleColor.DarkGreen);
                ch -= 1;
                if (ch >= ports.Count)
                {
                    Displayer.ShowLine("输入错误, 超出索引.", ConsoleColor.Red);
                    return;
                }

                ConsoleInputRayPortConfigBuilder rayPortBuilder =
                    new ConsoleInputRayPortConfigBuilder(ports[ch]);
                RayPortUser user = rayPortBuilder.BuildPortUser();
                repo.AddUserToPort(ports[ch], user);

                Displayer.ShowLine("操作成功!", ConsoleColor.DarkGreen, true);
                ConsoleConfigDisplayer.DisplayUser(user);
            }
            catch (Exception ex)
            {
                Displayer.ShowLine($"操作失败!\r\n错误:{ex.Message}", ConsoleColor.Red, true);
            }
        }
Ejemplo n.º 3
0
        public static string GetRayPortUserRemark(this RayPortUser rayPortUser)
        {
            // rayPortUser.Email.Split('@')
            Regex regex = new Regex("^.*(?=@)");

            if (string.IsNullOrEmpty(rayPortUser.Email))
            {
                rayPortUser.Email = (new Random()).Next(1, int.MaxValue).ToString() + "@la.aggage";
                RayConfigRepository.UpdateUser(rayPortUser.Uuid, rayPortUser);
            }

            return(regex.Match(rayPortUser.Email)?.Value ?? "");
        }
 public void Execute()
 {
     try
     {
         RayConfigRepository.ConfigTrafficStatistic();
         IProgramFunction func = new ShowRawConfigFunction();
         func.Execute();
     }
     catch (Exception ex)
     {
         Displayer.ShowError(ex);
     }
 }
Ejemplo n.º 5
0
        internal static void Display()
        {
            RayConfigRepository rayConfigRepo = new RayConfigRepository();
            IList <RayPort>     rayPorts      = rayConfigRepo.GetRayPorts();

            Console.WriteLine("\r\n");

            foreach (RayPort rayPort in rayPorts)
            {
                Displayer.ShowConfigItem("端口号", rayPort.Port, true, valueColor: ConsoleColor.Green);
                Displayer.ShowConfigItem("服务类型", rayPort.Protocol, true);
                Displayer.ShowConfigItem("是否Udp开启", rayPort.Settings.Udp, true);
                Displayer.ShowConfigItem("底层传输安全", rayPort.StreamSettings?.Security, true);
                Displayer.ShowConfigItem("传输协议", rayPort.StreamSettings?.NetWork, true);

                foreach (RayPortUser client in rayPort.Settings?.Clients ?? new List <RayPortUser>())
                {
                    Displayer.ShowConfigItem("用户", client.GetRayPortUserRemark(), ConsoleColor.Yellow);
                    Displayer.ShowConfigItem("用户Id", client.Uuid, ConsoleColor.Yellow);
                    Displayer.ShowConfigItem("额外Id", client.AlterId, ConsoleColor.Yellow);
                    Displayer.ShowConfigItem("邮箱", client.Email, ConsoleColor.Yellow);
                    Displayer.ShowConfigItem("分享链接", client.GenerateShareUrl(rayPort), ConsoleColor.Red, true);
                }

                Console.WriteLine();

                foreach (var cert in rayPort.StreamSettings?.TlsSettings?.Certificates ?? new List <Certificate>())
                {
                    Displayer.ShowConfigItem("证书文件", cert.CertificateFile);
                    Displayer.ShowConfigItem("密钥文件", cert.KeyFile);
                    Console.WriteLine();
                }

                Displayer.ShowCutLine();
                Console.WriteLine("\r\n");
            }

            Displayer.Show("  共开放了端口 ");
            Displayer.Show($"{rayPorts.Count}", Displayer.HighLightColor);
            Displayer.Show(" 个, ", Displayer.HighLightColor);
            Displayer.Show("有 ");
            Displayer.Show($"{rayConfigRepo.GetRayPortsUsers().Count}", Displayer.HighLightColor);
            Displayer.Show(" 个用户\r\n\r\n");
        }
Ejemplo n.º 6
0
        private static RayPortUser GetRayPortUserToModify()
        {
            var repo          = new RayConfigRepository();
            var rayPortsUsers = repo.GetRayPortsUsers();

            ConsoleConfigDisplayer.DisplayRayPortUsers(
                rayPortsUsers, displayUserIndex:true, intend: 2);

            int?index = InputHelper.TryGetNumberInput(
                inputRange: new Tuple <int, int>(1, rayPortsUsers.Count)) - 1;

            if (index == null)
            {
                return(GetRayPortUserToModify());
            }
            ;

            return(rayPortsUsers[index.Value]);
        }
Ejemplo n.º 7
0
        private static RayPort GetRayPortToModify()
        {
            RayConfigRepository repo = new RayConfigRepository();

            IList <RayPort> rayPorts = repo.GetRayPorts();

            ConsoleConfigDisplayer.DisplayRayPorts(rayPorts, false, true);

            int?index = InputHelper.TryGetNumberInput(
                inputRange: new Tuple <int, int>(1, rayPorts.Count)) - 1;

            if (index == null)
            {
                return(GetRayPortToModify());
            }
            ;

            return(rayPorts[index.Value]);
        }
Ejemplo n.º 8
0
        public void Execute()
        {
            Console.Clear();
            Console.WriteLine();
            Displayer.ShowLine("新建端口向导!", 2, ConsoleColor.Yellow);
            Console.WriteLine();
            Displayer.ShowCutLine();
            Console.WriteLine("\r\n");
            ConsoleInputRayPortConfigBuilder rayPortBuilder = new ConsoleInputRayPortConfigBuilder();

            try
            {
                RayConfigRepository repo    = new RayConfigRepository();
                RayPort             rayPort = rayPortBuilder.BuildPort();
                repo.AddPort(rayPort);
                Displayer.ShowLine("  创建成功!\r\n", ConsoleColor.DarkGreen);
                ConsoleConfigDisplayer.DisplayRayPort(rayPort, displayUser: true);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Ejemplo n.º 9
0
 public TrafficCounterFunction()
 {
     repo = new RayConfigRepository();
 }
Ejemplo n.º 10
0
 public RayPortModifier(RayPort rayPortToModify) : base(rayPortToModify)
 {
     configRepo   = new RayConfigRepository();
     portToModify = ConfigToModify.Port;
     UpdateOptionsMap();
 }
Ejemplo n.º 11
0
 public DeleteRayPortUserFunction()
 {
     repo = new RayConfigRepository();
 }