Пример #1
0
        /// <summary>
        /// 审核申请隧道,写入文本数据
        /// </summary>
        /// <param name="tunnel"></param>
        /// <param name="user"></param>
        /// <param name="path"></param>
        /// <param name="port"></param>
        /// <returns></returns>
        public static async Task WriteTunnel(TunnelsEntity tunnel, UsersEntity user, string path, int port)
        {
            var list        = new List <string>();
            var exist       = false;
            var contentList = await ReadFile(path);

            if (contentList != null)
            {
                foreach (var item in contentList)
                {
                    var row         = item.ToString().Split("|");
                    var authToken   = row[0];
                    var subDomains  = row[1];
                    var remotePorts = row[2];
                    var userName    = row[3];
                    if (user.AuthToken == authToken)
                    {
                        subDomains  += "," + tunnel.SubDomain;
                        remotePorts += "," + port;
                        exist        = true;
                    }
                    var _item = authToken + "|" + subDomains + "|" + remotePorts + "|" + userName;
                    list.Add(_item);
                }
            }
            if (!exist)
            {
                list.Add(user.AuthToken + "|" + tunnel.SubDomain + "|" + port + "|" + user.UserName);
            }
            WriteFile(path, list);
        }
Пример #2
0
        public async Task <ResponseViewModel <bool> > AddTunnel(int userId, AdminTunnelsViewModel vm)
        {
            var data = new ResponseViewModel <bool>();

            if (await _tunnelProvider.GetTunnelBySubDomail(vm.SubDomain) != null)
            {
                data.Code = 1;
                data.Msg  = _localizer["add_tunnel.msg"];

                return(data);
            }

            var tunnelId = GuidUtil.GenerateGuid();

            if (await _tunnelProvider.GetTunnel(tunnelId) != null)
            {
                data.Code = 1;
                data.Msg  = _localizer["add_tunnel.error"];

                return(data);
            }

            var tunnel = new TunnelsEntity
            {
                TunnelId       = tunnelId,
                UserId         = userId,
                TunnelProtocol = vm.TunnelProtocol,
                TunnelName     = vm.TunnelName,
                SubDomain      = vm.SubDomain,
                LocalPort      = vm.LocalPort,
                Status         = (int)TunnelStatusEnum.Pass,
                CreateTime     = DateTime.Now,
                OpenTime       = DateTime.Now,
                ExpiredTime    = vm.ExpiredTime,
                FullUrl        = vm.FullUrl
            };

            var user = await _usersProvider.GetUserInfo(userId);

            try
            {
                await FileUtil.WriteTunnel(tunnel, user, _tunnelConfig.FilePath, vm.RemotePort);
            }
            catch (Exception e)
            {
                data.Code = 1;
                data.Msg  = e.Message;

                return(data);
            }

            data.Data = await _tunnelProvider.Create(tunnel);

            return(data);
        }
Пример #3
0
        /// <summary>
        /// 编辑隧道
        /// </summary>
        /// <param name="tunnel"></param>
        /// <returns></returns>
        public async Task <bool> Edit(TunnelsEntity tunnel)
        {
            var _tunnel = await _content.Tunnels.FirstOrDefaultAsync(t => t.TunnelId == tunnel.TunnelId);

            if (_tunnel != null)
            {
                _tunnel = tunnel;

                return(await _content.SaveChangesAsync() > 0);
            }
            else
            {
                return(false);
            }
        }
Пример #4
0
        public async Task <ResponseViewModel <bool> > AddTunnel(TunnelsViewModel vm)
        {
            var data = new ResponseViewModel <bool>();

            var userId = HttpContext.User.FindFirst(u => u.Type == ClaimTypes.NameIdentifier).Value;

            if (await _tunnelProvider.GetTunnelBySubDomail(vm.SubDomain) != null)
            {
                data.Code = 1;
                data.Msg  = _localizer["add_tunnel.msg"];

                return(data);
            }

            var tunnelId = GuidUtil.GenerateGuid();

            if (await _tunnelProvider.GetTunnel(tunnelId) != null)
            {
                data.Code = 1;
                data.Msg  = _localizer["add_tunnel.error"];

                return(data);
            }

            var tunnel = new TunnelsEntity
            {
                TunnelId       = tunnelId,
                UserId         = Convert.ToInt32(userId),
                TunnelProtocol = vm.TunnelProtocol,
                TunnelName     = vm.TunnelName,
                SubDomain      = vm.SubDomain,
                LocalPort      = vm.LocalPort,
                FullUrl        = vm.FullUrl,
                Status         = (int)TunnelStatusEnum.Audit,
                CreateTime     = DateTime.Now
            };

            data.Data = await _tunnelProvider.Create(tunnel);

            return(data);
        }
Пример #5
0
        /// <summary>
        /// 开通隧道
        /// </summary>
        /// <param name="tunnel"></param>
        /// <returns></returns>
        public async Task <bool> Create(TunnelsEntity tunnel)
        {
            await _content.Tunnels.AddAsync(tunnel);

            return(await _content.SaveChangesAsync() > 0);
        }
 /// <summary>
 /// 编辑隧道
 /// </summary>
 /// <param name="tunnel"></param>
 /// <returns></returns>
 public Task <bool> Edit(TunnelsEntity tunnel)
 {
     return(_data.Edit(tunnel));
 }
 /// <summary>
 /// 开通隧道
 /// </summary>
 /// <param name="tunnel"></param>
 /// <returns></returns>
 public Task <bool> Create(TunnelsEntity tunnel)
 {
     return(_data.Create(tunnel));
 }