Example #1
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);
        }