Exemple #1
0
        public IActionResult GetList(Client model)
        {
            var bll = new ClientBll();
            var rst = bll.GetList(model);

            return(Json(rst));
        }
Exemple #2
0
        public IActionResult Delete(Client model)
        {
            var bll = new ClientBll();
            var rst = bll.Delete(model);

            return(Json(rst));
        }
Exemple #3
0
 public ClientForm()
 {
     this.components = null;
     base();
     this.InitializeComponent();
     this._client = new ClientBll();
 }
Exemple #4
0
 public popupClient()
 {
     this.components = null;
     base();
     this.InitializeComponent();
     this._clientBll = new ClientBll();
 }
Exemple #5
0
    protected void btRegister_Click1(object sender, EventArgs e)
    {
        ClientBll    clientBll    = new ClientBll();
        ClientEntity clientEntity = new ClientEntity();


        string clientID   = base.Server.HtmlEncode(this.txtUserID.Text);
        string clientName = base.Server.HtmlEncode(this.txtUserName.Text);
        string text       = base.Server.HtmlEncode(this.txtUserPwd.Text);
        string clientDes  = base.Server.HtmlEncode(this.txtUserDes.Text);

        clientEntity.ClientID   = clientName;
        clientEntity.ClientName = clientID;
        clientEntity.ClientPwd  = this.MD5(text.Trim());
        clientEntity.ClientDes  = clientDes;
        try
        {
            if (clientBll.Register(clientEntity))
            {
                base.Response.Write("<script>alert('注册成功');location.href='Login_1.aspx';</script>");
            }
            else
            {
                base.Response.Write("<script>alert('注册失败');location.href='Login_1.aspx';</script>");
            }
        }
        catch (Exception)
        {
            base.Response.Write("<script>alert('注册失败');location.href='Login_1.aspx';</script>");
        }
    }
    protected void Button_Click1(object sender, EventArgs e)
    {
        string       clientID     = this.Session["ClientID"].ToString();
        ClientBll    clientBll    = new ClientBll();
        ClientEntity clientEntity = new ClientEntity();

        clientEntity.ClientID = clientID;
        DataTable byID = clientBll.GetByID(clientEntity);

        if (this.MD5(this.TextBox1.Text.Trim()) != byID.Rows[0]["ClientPwd"].ToString().Trim())
        {
            this.Page.ClientScript.RegisterStartupScript(base.GetType(), "alert", "<script>alert('旧密码错误')</script>");
            this.TextBox1.Text = "";
            this.TextBox2.Text = "";
            this.TextBox3.Text = "";
            return;
        }
        clientEntity.ClientID  = clientID;
        clientEntity.ClientPwd = this.MD5(this.TextBox3.Text.Trim());
        if (clientBll.Update_Pwd(clientEntity))
        {
            this.Page.ClientScript.RegisterStartupScript(base.GetType(), "alert", "<script>alert('密码修改成功')</script>");
        }
        else
        {
            this.Page.ClientScript.RegisterStartupScript(base.GetType(), "alert", "<script>alert('密码修改失败')</script>");
        }
        this.TextBox1.Text = "";
        this.TextBox2.Text = "";
        this.TextBox3.Text = "";
    }
Exemple #7
0
        public static void Init()
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                          .AddJsonFile("appsettings.json", false);
            var configuration = builder.Build();

            //加载配置到全局
            GlobalConfig.ConnetionString = configuration.GetValue <string>("DBConfig:ConnetionString");
            GlobalConfig.NatPort         = configuration.GetValue <int>("ServerConfig:NatPort");
            GlobalConfig.ServerPort      = configuration.GetValue <int>("ServerConfig:ServerPort");
            GlobalConfig.DefaultUrl      = configuration.GetValue <string>("ServerConfig:DefaultUrl");
            GlobalConfig.RegRoleId       = configuration.GetValue <string>("ServerConfig:RegRoleId");

            Repository = LogManager.CreateRepository("NETCoreRepository");
            XmlConfigurator.Configure(Repository, new FileInfo("log4net.config"));
            Log4netUtil.LogRepository = Repository;//类库中定义的静态变量
            HandleLog.WriteLog       += (log, isPrint) =>
            {
                if (isPrint)
                {
                    Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss,ffff} {log}");
                }
                Log4netUtil.Info(log);
            };

            Task.Run(() =>
            {
                while (true)
                {
                    //更新假在线的主机
                    using var bll = new ClientBll();
                    var res       = bll.UpdateOfflineClient();
                    HandleLog.WriteLine(res.Message, false);
                    Thread.Sleep(60000);
                }
            });

            var appSettingSetion = configuration.GetSection("AppSettingConfig");
            var appSettingConfig = appSettingSetion.Get <AppSettingConfig>();

            IocUnity.AddSingleton <AppSettingConfig>(appSettingConfig);

            //var setion = configuration.GetSection("SimpleSocketConfig");
            //var simpleConfig = setion.Get<SimpleSocketConfig>();
            //IocUnity.AddSingleton<SimpleSocketConfig>(simpleConfig);

            var loggerSection = configuration.GetSection("LogConfig");
            var logConfig     = loggerSection.Get <LogConfig>();

            logConfig.LogBaseDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, logConfig.LogBaseDir);
            IocUnity.AddSingleton <LogConfig>(logConfig);

            InitAppSetting();
            InitLog();
        }
Exemple #8
0
    protected void BtnLogin_Click(object sender, EventArgs e)
    {
        this.Session.RemoveAll();
        ManagerBll     managerBll    = new ManagerBll();
        ManagerEnitity managerEntity = new ManagerEnitity();
        UserEntity     uen           = new UserEntity();
        UserBll        ubll          = new UserBll();
        ClientEntity   clientEntity  = new ClientEntity();
        ClientBll      clientBll     = new ClientBll();

//      StudentBll sbll = new StudentBll();

        //    StudentEntity sen = new StudentEntity();
        if (RBtnUser.Checked)
        {
            uen.UserID  = TxtID.Text.Trim();
            uen.UserPwd = MD5(TxtPwd.Text.Trim());

            //if (ubll.IsOverDate(uen))
            //{
            if (ubll.Validate_Login(uen))
            {
                Session.RemoveAll();
                Session["UserID"] = uen.UserID;//建议存放数据表中的主键值
                Response.Redirect("Users/UserIndex.aspx");
            }
            else
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('密码错误!')</script>");
            }
        }
        if (this.RBtnManager.Checked)
        {
            managerEntity.ManagerID  = this.TxtID.Text.Trim();
            managerEntity.ManagerPwd = this.MD5(this.TxtPwd.Text.Trim());
            //    Response.Write(teacherEntity.ManagerPwd);
            if (managerBll.Validate_Login(managerEntity))
            {
                this.Session.RemoveAll();
                this.Session["ManagerID"] = managerEntity.ManagerID;
                base.Response.Redirect("default.aspx");
            }
        }
        if (RBtnContact.Checked)
        {
            clientEntity.ClientID  = this.TxtID.Text.Trim();
            clientEntity.ClientPwd = this.MD5(this.TxtPwd.Text.Trim());
            //    Response.Write(teacherEntity.ManagerPwd);
            if (clientBll.Validate_Login(clientEntity))
            {
                this.Session.RemoveAll();
                this.Session["ClientID"] = clientEntity.ClientID;
                base.Response.Redirect("Contact/default.aspx");
            }
        }
    }
Exemple #9
0
 public IActionResult GetComId(int id)
 {
     try
     {
         var clientBll = new ClientBll();
         var client    = clientBll.ObterPorId(id); //Recurso Encontrado mesmo que estege nulo;
         return(Json(client));
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         return(StatusCode(404, new { Erro = ex.Message })); //Recurso não Encontrado
     }
 }
Exemple #10
0
 private static void NATServer_SessionClosed(NatAppSession session, CSuperSocket.SocketBase.CloseReason value)
 {
     HandleLog.WriteLine($"内网客户端【{session.RemoteEndPoint}】已下线");
     Task.Run(() =>
     {
         //更新在线状态
         using var bll = new ClientBll();
         var updateRst = bll.UpdateOnlineStatus(new Client()
         {
             secret = session.Client.secret, is_online = false
         });
         HandleLog.WriteLine($"更新主机【{session.Client.name}】离线状态结果:{updateRst.Message}");
     });
 }
Exemple #11
0
 public IActionResult Post([FromBody] ClientModelView clientModelView)
 {
     try
     {
         var clientBll = new ClientBll();
         clientBll.Inserir(clientModelView);
         return(StatusCode(201, new { ClientBll = clientBll })); //Postado com sucesso
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         return(StatusCode(422, new { Erro = ex.Message })); //Exceções de negócio
     }
 }
Exemple #12
0
 public IActionResult Put(int id, [FromBody]  ClientModelView clientModelView)
 {
     try
     {
         var clientBll = new ClientBll();
         clientBll.Atualizar(id, clientModelView);
         return(StatusCode(204, new { ClientBll = clientBll })); //Indica que o recurso foi alterado com sucesso
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         return(StatusCode(422, new { Erro = ex.Message })); //Exceções de negócio
     }
 }
Exemple #13
0
 public IActionResult Delete(int id)
 {
     try
     {
         var clientBll = new ClientBll();
         clientBll.Delete(id);
         return(StatusCode(204, new { ClientBll = clientBll })); //Indica que o recurso foi excluído com sucesso
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         return(StatusCode(404, new { Erro = ex.Message })); //Recurso não Encontrado
     }
 }
Exemple #14
0
 public IActionResult GetAll()
 {
     try
     {
         var clientBll     = new ClientBll();
         var listaDeClient = clientBll.ObterTodos();
         return(Json(listaDeClient)); //Recurso Encontrado mesmo que estege nulo
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         return(StatusCode(404, new { Erro = ex.Message })); //Recurso não Encontrado
     }
 }
Exemple #15
0
        protected void bt_Login_Click(object sender, EventArgs e)
        {
            string    Phone  = tb_Phone.Text.Trim();
            Client    client = new Client();
            string    Pwd    = tb_Pwd.Text.Trim();
            string    rePwd  = tb_RePwd.Text.Trim();
            ClientBll bll    = new ClientBll();
            string    Name   = tb_Name.Text.Trim();
            byte      Age    = 0;

            //Byte.TryParse(yourAge.value(), out Age);
            Byte.TryParse(tb_Age.Text.Trim(), out Age);
            string Sex = rbl_Sex.SelectedValue == "男" ? "男" : "女";

            if (string.IsNullOrEmpty(Phone) || string.IsNullOrEmpty(Pwd))
            {
                Response.Write("用户名和密码不能为空!");
            }

            else if (Pwd != rePwd)
            {
                Response.Write("密码不一致!请重新输入!");
            }
            else
            {
                if (!bll.SelectPhoneCount(Phone))
                {
                    client.Phone = Phone;
                    client.Pwd   = Pwd;
                    client.Name  = Name;
                    client.Sex   = Sex;
                    client.Age   = Age;
                    bool isOK = bll.AddClient(client);
                    if (isOK)
                    {
                        Response.Write("<script>alert('注册成功!!')</script>");
                        Response.Redirect("Login.aspx");
                    }
                    else
                    {
                        Response.Write("<script>alert('注册失败!')</script>");
                    }
                }
                else
                {
                    Response.Write("<script>alert('用户已经存在,请重新输入!')</script>");
                }
            }
        }
Exemple #16
0
        protected void bt_Login_Click(object sender, EventArgs e)
        {
            string    phone = tb_Phone.Text.Trim();
            string    pwd   = tb_Pwd.Text.Trim();
            ClientBll bll   = new ClientBll();

            if (Session["Phone"] == null || (string)Session["Phone"] != phone)
            {
                if (string.IsNullOrEmpty(phone) || string.IsNullOrEmpty(pwd))
                {
                    Response.Write("用户名和密码不能为空!");
                }
                else if (phone.Equals("888") && pwd.Equals("admin123"))
                {
                    Response.Redirect("admin.aspx");
                }
                else
                {
                    switch (bll.CheckLogin(phone, pwd))
                    {
                    case LoginState.NoName:
                        Response.Write("用户名不存在,请重新输入");
                        break;

                    case LoginState.PwdErr:
                        Response.Write("密码错误,请重新输入!");
                        break;

                    case LoginState.OK:
                        Session["Phone"] = phone;
                        Client client = bll.SelectClient(phone);
                        string name   = client.Name;
                        Session["Name"]     = name;
                        Session["ClientID"] = client.ID;

                        Response.Redirect("HomePage.aspx");
                        break;

                    default:
                        break;
                    }
                }
            }
            else
            {
                Response.Write("该账号已经登录!");
            }
        }
Exemple #17
0
        public IActionResult GetOne(Client model)
        {
            if (model.id == 0)
            {
                var defalut = new ReturnResult <Client>()
                {
                    Result = true,
                    Data   = new Client()
                };
                return(Json(defalut));
            }
            var bll = new ClientBll();
            var rst = bll.GetOne(model);

            return(Json(rst));
        }
Exemple #18
0
 private static void Closed(NatSession session)
 {
     LogHelper.Info($"内网客户端【{session.RemoteEndPoint}】已下线");
     if (session.Client != null)
     {
         Task.Run(() =>
         {
             //更新在线状态
             var bll       = new ClientBll();
             var updateRst = bll.UpdateOnlineStatus(new Client()
             {
                 secret = session.Client.secret, is_online = false
             });
             LogHelper.Info($"更新主机【{session.Client.name}】离线状态结果:{updateRst.Message}");
         });
     }
 }
Exemple #19
0
    public void LoadData()
    {
        string    ClientID  = this.Session["ClientID"].ToString().Trim();
        ClientBll ClientBll = new ClientBll();
        DataTable byID      = ClientBll.GetByID(new ClientEntity
        {
            ClientID = ClientID
        });

        if (byID != null && byID.Rows.Count == 1)
        {
            this.lbID.Text    = byID.Rows[0]["ClientID"].ToString().Trim();
            this.txtName.Text = byID.Rows[0]["ClientName"].ToString().Trim();

            this.upImage.ImageUrl = "~/" + byID.Rows[0]["ClientImage"].ToString().Trim();
            this.txtDes.Text      = byID.Rows[0]["ClientDes"].ToString().Trim();
            this.lbImage.Text     = byID.Rows[0]["ClientImage"].ToString().Trim();
        }
    }
Exemple #20
0
        public IActionResult Add(Client model)
        {
            var rst = new ReturnResult <bool>();

            using var bll = new ClientBll();
            if (model.id == 0)
            {
                model.secret      = Guid.NewGuid().ToString("N");
                model.is_online   = false;
                model.create_time = DateTime.Now;
                rst = bll.Add(model);
            }
            else
            {
                rst = bll.Update(model);
            }

            return(Json(rst));
        }
Exemple #21
0
    protected void btOK_Click1(object sender, EventArgs e)
    {
        string       ClientID     = this.Session["ClientID"].ToString().Trim();
        ClientBll    ClientBll    = new ClientBll();
        ClientEntity ClientEntity = new ClientEntity();

        ClientEntity.ClientID   = ClientID;
        ClientEntity.ClientName = base.Server.HtmlEncode(this.txtName.Text.Trim());
        ClientEntity.ClientDes  = base.Server.HtmlEncode(this.txtDes.Text.Trim());

        string fileName = this.upFileUpLoad.FileName;

        if (fileName == "")
        {
            ClientEntity.ClientImage = this.lbImage.Text.Trim();
        }
        else
        {
            if (this.lbImage.Text.Trim() != "")
            {
                File.Delete(base.Server.MapPath("~/" + this.lbImage.Text.Trim()));
            }
            string str = DateTime.Now.ToString("yyyyMMddHHmmssms") + Path.GetExtension(fileName);
            this.upFileUpLoad.SaveAs(base.Server.MapPath("~/ClientImage/" + str));
            ClientEntity.ClientImage = "ClientImage/" + str;
        }
        if (ClientBll.Update(ClientEntity))
        {
            this.Page.ClientScript.RegisterStartupScript(base.GetType(), "alert", "<script>alert('成功');</script>");
        }
        else
        {
            this.Page.ClientScript.RegisterStartupScript(base.GetType(), "alert", "<script>alert('失败');</script>");
        }
        this.LoadData();
        this.RegularExpressionValidator1.Visible = false;
        this.upFileUpLoad.Visible = false;
    }
Exemple #22
0
        protected void bt_OK_Click(object sender, EventArgs e)
        {
            ClientBll bll = new ClientBll();

            string oldPwd   = tb_OldPwd.Text.Trim();
            string newPWd   = tb_NewPwd.Text.Trim();
            string reNewPwd = tb_ReNewPwd.Text.Trim();
            string phone    = (string)Session["Phone"];
            Client client   = bll.SelectClient(phone);

            if (oldPwd != client.Pwd)
            {
                Response.Write("<script>alert('旧密码错误!')</script>");
            }
            else if (oldPwd == newPWd)
            {
                Response.Write("<script>alert('新密码与旧密码一致!!')</script>");
            }
            else
            if (newPWd != reNewPwd)
            {
                Response.Write("<script>alert('密码不一致!')</script>");
            }
            else if (bll.UpdatePwd(newPWd, client.Phone))
            {
                Session["UpdatePwd"] = 1;
                Session["Phone"]     = null;
                Session["Name"]      = null;

                Response.Redirect("Login.aspx");
            }
            else
            {
                Response.Write("<script>alert('修改密码失败!')</script>");
            }
        }
Exemple #23
0
        private static void NATServer_NewRequestReceived(NatAppSession session, NatRequestInfo requestInfo)
        {
            try
            {
                //HandleLog.WriteLine($"NAT服务收到数据:{requestInfo.Hex}");
                switch (requestInfo.FunCode)
                {
                case 0x1:
                {
                    //注册包
                    var secret = requestInfo.BodyRaw;
                    using var bll = new ClientBll();
                    var client = bll.GetOne(secret).Data;
                    if (client == null)
                    {
                        HandleLog.WriteLine($"主机【{session.RemoteEndPoint}】密钥不正确!!");
                        session.SendMsg("主机密钥不正确,请确认是否填写正确!");
                        return;
                    }
                    var checkSession = NATServer.GetSessions(c => c.Client?.secret == secret).FirstOrDefault();
                    if (checkSession != null)
                    {
                        session.SendMsg($"密钥{secret}已被主机:{checkSession.Client.name},{checkSession.RemoteEndPoint}使用!");
                        return;
                    }
                    session.Client = client;

                    using var mapBll = new MapBll();
                    session.MapList  = mapBll.GetMapList(secret).Data ?? new List <Map>();
                    //原样返回回复客户端注册成功
                    session.Send(requestInfo.Data);
                    Task.Run(() =>
                        {
                            //更新在线状态
                            using var bll = new ClientBll();
                            var updateRst = bll.UpdateOnlineStatus(new Client()
                            {
                                secret = session.Client.secret, is_online = true, last_heart_time = DateTime.Now
                            });
                            HandleLog.WriteLine($"更新主机【{session.Client.name}】在线状态结果:{updateRst.Message}", false);
                        });
                }
                break;

                case 0x2:
                {
                    //心跳包
                    var secret = requestInfo.BodyRaw;
                    HandleLog.WriteLine($"收到连接{session.RemoteEndPoint}的心跳包,密钥为:{secret},当前映射个数:{session.MapList.Count}", false);
                    Task.Run(() =>
                        {
                            //更新在线状态
                            using var bll = new ClientBll();
                            var updateRst = bll.UpdateOnlineStatus(new Client()
                            {
                                secret = session.Client.secret, is_online = true, last_heart_time = DateTime.Now
                            });
                            HandleLog.WriteLine($"更新主机【{session.Client.name}】在线状态结果:{updateRst.Message}", false);
                        });
                }
                break;

                case 0x3:
                {
                    //响应请求
                    var packJson = JsonHelper.Instance.Deserialize <PackJson>(requestInfo.BodyRaw);
                    int count    = 0;
mark:
                    var webSession = HttpServer.GetSessions(c => c.UserId.ToLower() == packJson.UserId.ToLower()).FirstOrDefault();
                    if (webSession == null)
                    {
                        count++;
                        Thread.Sleep(500);
                        if (count < 5)
                        {
                            goto mark;
                        }
                        HandleLog.WriteLine($"webSession【{packJson.UserId}】不存在");
                        return;
                    }
                    //先讲16进制字符串转为byte数组  再gzip解压
                    var response    = DataHelper.Decompress(packJson.Content);
                    var rawResponse = Encoding.UTF8.GetString(response);
                    var res         = webSession.TrySend(response, 0, response.Length);
                    HandleLog.WriteLine($"{packJson.ResponseInfo} {Math.Ceiling((DateTime.Now - webSession.RequestTime).Value.TotalMilliseconds)}ms");
                    //webSession?.Close();
                }
                break;
                }
            }
            catch (Exception ex)
            {
                HandleLog.WriteLine($"webSession响应请求异常:{ex}");
            }
        }
Exemple #24
0
        private static void NATServer_NewRequestReceived(NatAppSession session, NatRequestInfo requestInfo)
        {
            Task.Run(() =>
            {
                try
                {
                    //HandleLog.WriteLine($"NAT服务收到数据:{requestInfo.Hex}");
                    if (requestInfo.Mode == 0x1)//nat
                    {
                        switch (requestInfo.FunCode)
                        {
                        case 0x1:
                            {
                                //注册包
                                var secret    = requestInfo.BodyRaw;
                                using var bll = new ClientBll();
                                var client    = bll.GetOne(secret).Data;
                                if (client == null)
                                {
                                    HandleLog.WriteLine($"主机【{session.RemoteEndPoint}】密钥不正确!!");
                                    session.SendMsg("主机密钥不正确,请确认是否填写正确!");
                                    return;
                                }
                                var checkSessions = NATServer.GetSessions(c => c.Client?.secret == secret).ToList();
                                if (checkSessions.Any())
                                {
                                    checkSessions.ForEach(c =>
                                    {
                                        session.SendMsg($"您的密钥已被主机{client.name},{session.RemoteEndPoint}使用,已强制下线!!");
                                        Thread.Sleep(500);
                                        c.Close();
                                    });
                                }
                                session.Client = client;

                                using var mapBll = new MapBll();
                                session.MapList  = mapBll.GetMapList(secret).Data ?? new List <Map>();
                                //原样返回回复客户端注册成功
                                session.Send(requestInfo.Data);
                                Task.Run(() =>
                                {
                                    //更新在线状态
                                    using var bll = new ClientBll();
                                    var updateRst = bll.UpdateOnlineStatus(new Client()
                                    {
                                        secret = session.Client.secret, is_online = true, last_heart_time = DateTime.Now
                                    });
                                    HandleLog.WriteLine($"更新主机【{session.Client.name}】在线状态结果:{updateRst.Message}", false);
                                });
                            }
                            break;

                        case 0x2:
                            {
                                //心跳包
                                var secret = requestInfo.BodyRaw;
                                HandleLog.WriteLine($"收到连接{session.RemoteEndPoint}的心跳包,密钥为:{secret},当前映射个数:{session.MapList.Count}", false);
                                Task.Run(() =>
                                {
                                    //更新在线状态
                                    using var bll = new ClientBll();
                                    var updateRst = bll.UpdateOnlineStatus(new Client()
                                    {
                                        secret = session.Client.secret, is_online = true, last_heart_time = DateTime.Now
                                    });
                                    HandleLog.WriteLine($"更新主机【{session.Client.name}】在线状态结果:{updateRst.Message}", false);
                                });
                            }
                            break;
                        }
                    }
                    else if (requestInfo.Mode == 0x2)//http
                    {
                        var packJson = JsonHelper.Instance.Deserialize <PackJson>(requestInfo.BodyRaw);
                        switch (requestInfo.FunCode)
                        {
                        case 0x1:
                            {
                                //02 01 数据长度(4) 正文数据(n)   ---http响应包
                                int count = 0;
                                mark:
                                var webSession = HttpServerList.SelectMany(c => c.GetAllSessions()).Where(c => c.UserId.ToLower() == packJson.UserId.ToLower()).FirstOrDefault();
                                if (webSession == null)
                                {
                                    count++;
                                    Thread.Sleep(500);
                                    if (count < 5)
                                    {
                                        goto mark;
                                    }
                                    HandleLog.WriteLine($"webSession【{packJson.UserId}】不存在");
                                    return;
                                }
                                //先讲16进制字符串转为byte数组  再gzip解压
                                var response = DataHelper.Decompress(packJson.Content);
                                var res      = webSession.TrySend(response, 0, response.Length);
                                HandleLog.WriteLine($"{packJson.ResponseInfo} {Math.Ceiling((DateTime.Now - webSession.RequestTime).Value.TotalMilliseconds)}ms");
                            }
                            break;
                        }
                    }
                    else if (requestInfo.Mode == 0x3)//tcp
                    {
                        var packJson = JsonHelper.Instance.Deserialize <PackJson>(requestInfo.BodyRaw);
                        switch (requestInfo.FunCode)
                        {
                        case 0x2:
                            {
                                //响应请求
                                int count = 0;
                                mark:
                                var tcpSession = TcpServerList.SelectMany(c => c.GetAllSessions()).Where(c => c.UserId.ToLower() == packJson.UserId.ToLower()).FirstOrDefault();
                                if (tcpSession == null)
                                {
                                    count++;
                                    Thread.Sleep(500);
                                    if (count < 5)
                                    {
                                        goto mark;
                                    }
                                    HandleLog.WriteLine($"tcpSession【{packJson.UserId}】不存在");
                                    return;
                                }
                                //先讲16进制字符串转为byte数组  再gzip解压
                                var response = DataHelper.Decompress(packJson.Content);
                                tcpSession.Send(response, 0, response.Length);
                                HandleLog.WriteLine($"----> {tcpSession.PackJson.UserId} 发送报文{response.Length}字节");
                            }
                            break;

                        case 0x3:
                            {
                                //响应请求
                                var tcpSession = TcpServerList.SelectMany(c => c.GetAllSessions()).Where(c => c.UserId.ToLower() == packJson.UserId.ToLower()).FirstOrDefault();
                                if (tcpSession != null)
                                {
                                    tcpSession.Close();
                                    HandleLog.WriteLine($"连接【{tcpSession.PackJson.UserId},{tcpSession.RemoteEndPoint}】关闭成功");
                                }
                            }
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    HandleLog.WriteLine($"穿透传输连接【{session.RemoteEndPoint},{session.Client?.name}】响应请求异常:{ex}");
                }
            });
        }
Exemple #25
0
        static object lockLog = new object();//日志锁
        public static void Init()
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                          .AddJsonFile("appsettings.json", false);
            var configuration = builder.Build();

            //加载配置到全局
            GlobalConfig.ConnetionString = configuration.GetValue <string>("DBConfig:ConnetionString");
            GlobalConfig.NatPort         = configuration.GetValue <int>("ServerConfig:NatPort");
            GlobalConfig.ServerPort      = configuration.GetValue <int>("ServerConfig:ServerPort");
            GlobalConfig.DefaultUrl      = configuration.GetValue <string>("ServerConfig:DefaultUrl");
            GlobalConfig.RegRoleId       = configuration.GetValue <string>("ServerConfig:RegRoleId");

            var repository = LogManager.CreateRepository("NETCoreRepository");

            XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
            Log4netUtil.LogRepository = repository;//类库中定义的静态变量
            LogHelper.WriteLog       += (level, log, isPrint) =>
            {
                lock (lockLog)
                {
                    switch (level)
                    {
                    case LogLevel.Debug:
                        Log4netUtil.Debug(log);
                        break;

                    case LogLevel.Information:
                        Console.ForegroundColor = ConsoleColor.Green;
                        Log4netUtil.Info(log);
                        break;

                    case LogLevel.Warning:
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Log4netUtil.Warn(log);
                        break;

                    case LogLevel.Error:
                        Console.ForegroundColor = ConsoleColor.Red;
                        Log4netUtil.Error(log);
                        break;

                    case LogLevel.Critical:
                        Console.ForegroundColor = ConsoleColor.DarkRed;
                        Log4netUtil.Fatal(log);
                        break;

                    default:
                        Console.ForegroundColor = ConsoleColor.Green;
                        Log4netUtil.Info(log);
                        break;
                    }
                    if (isPrint)
                    {
                        Console.Write(LogHelper.GetString(level));
                        Console.ResetColor();
                        Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss,ffff} {log}");
                    }
                }
            };

            Task.Run(() =>
            {
                while (true)
                {
                    //更新假在线的主机
                    var bll = new ClientBll();
                    var res = bll.UpdateOfflineClient();
                    LogHelper.Info(res.Message, false);
                    Thread.Sleep(60000);
                }
            });

            var appSettingSetion = configuration.GetSection("AppSettingConfig");
            var appSettingConfig = appSettingSetion.Get <AppSettingConfig>();

            AppDomain.CurrentDomain.UnhandledException -= CurrentDomain_UnhandledException;
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
        }
 public List <ClientInfo> GetClient()
 {
     return(ClientBll.Get());
 }
 public int AddClient(ClientInfo client)
 {
     return(ClientBll.Add(client));
 }
Exemple #28
0
        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            ClientBll   clientBll;
            EmployeeBll employeeBll;
            SupplierBll supplierBll;

            try
            {
                if (MessageBox.Show("هل أنت متأكد من حذف الحساب؟") == 1)
                {
                    int num1   = Convert.ToInt32(this.dgvAccounts.SelectedRows[0].Cells[0].Value);
                    int parent = this.accounts.getParent(num1);
                    int num2   = parent;
                    if (num2 != 0)
                    {
                        switch (num2)
                        {
                        case 0:
                        {
                            this.accounts.DeleteBankAccount(num1);
                            break;
                        }

                        case 1:
                        {
                            clientBll = new ClientBll();
                            clientBll.deleteClient(num1);
                            break;
                        }

                        case 2:
                        {
                            employeeBll = new EmployeeBll();
                            employeeBll.deleteEmployee(num1);
                            break;
                        }

                        case 32:
                        {
                            supplierBll = new SupplierBll();
                            supplierBll.deleteSupplier(num1);
                        }
                        }
                    }
                    else
                    {
                        this.accounts.DeleteAccount(num1);
                    }
                    MessageBox.Show("تم الحذف");
                    AccountsViewDataTable accountsView = this.accounts.GetAccountsView();
                    accountsView.BalanceColumn.ColumnName       = "الرصيد";
                    accountsView.Category_NameColumn.ColumnName = "نوع الحساب";
                    accountsView.GL_IDColumn.ColumnName         = "رقم الحساب";
                    accountsView.GL_Name_VCColumn.ColumnName    = "اسم الحساب";
                    accountsView.ParentColumn.ColumnName        = "تابع لحساب";
                    accountsView.Status_BTColumn.ColumnName     = "مفعل";
                    this.dgvAccounts.DataSource = accountsView;
                    this.dgvAccounts.Columns["BS_Category_VC"].Visible = false;
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }
 public int DelClient(int id)
 {
     return(ClientBll.Del(id));
 }
Exemple #30
0
        public void ProcessData(NatSession session, NatRequestInfo requestInfo)
        {
            try
            {
                switch (requestInfo.Body.Action)
                {
                case (int)NatAction.Connect:
                {
                    //注册包
                    var secret = requestInfo.Body.Data.ToString();
                    HandleLog.WriteLine($"收到连接{session.Remote}的注册包,密钥为:{secret},当前映射个数:{session.MapList.Count}", false);
                    var bll    = new ClientBll();
                    var client = bll.GetOne(secret).Data;
                    if (client == null)
                    {
                        HandleLog.WriteLine($"主机【{session.Remote}】密钥不正确!!");
                        SendServerMessage(session, new ServerMessage()
                            {
                                Message = "主机密钥不正确,请确认是否填写正确!"
                            });
                        return;
                    }
                    var checkSessions = GetList(c => c.Client?.secret == secret && c.SessionId != session.SessionId);
                    if (checkSessions.Any())
                    {
                        checkSessions.ForEach(c =>
                            {
                                SendServerMessage(c, new ServerMessage()
                                {
                                    Message = "该主机密钥已被其它主机使用,您已被迫下线!"
                                });
                                Thread.Sleep(500);
                                c.Close();
                            });
                    }

                    var mapBll = new MapBll();
                    session.MapList = mapBll.GetMapList(secret).Data ?? new List <Map>();
                    client.MapList  = session.MapList;
                    session.Client  = client;
                    //原样返回回复客户端注册成功
                    requestInfo.Body.Data = client.ToJson();
                    session.Send(PackHelper.CreatePack(requestInfo.Body));
                    Task.Run(() =>
                        {
                            //更新在线状态
                            var bll       = new ClientBll();
                            var updateRst = bll.UpdateOnlineStatus(new Client()
                            {
                                secret = session.Client.secret, is_online = true, last_heart_time = DateTime.Now
                            });
                            HandleLog.WriteLine($"更新主机【{session.Client.name}】在线状态结果:{updateRst.Message}", false);
                        });
                }
                break;

                case (int)NatAction.Heart:
                {
                    //心跳包
                    var secret = requestInfo.Body.Data.ToString();
                    HandleLog.WriteLine($"收到连接{session.Remote}的心跳包,密钥为:{secret},当前映射个数:{session.MapList.Count}", false);
                    Task.Run(() =>
                        {
                            //更新在线状态
                            var bll       = new ClientBll();
                            var updateRst = bll.UpdateOnlineStatus(new Client()
                            {
                                secret = session.Client.secret, is_online = true, last_heart_time = DateTime.Now
                            });
                            HandleLog.WriteLine($"更新主机【{session.Client.name}】在线状态结果:{updateRst.Message}", false);
                        });
                }
                break;
                }
            }
            catch (Exception ex)
            {
                HandleLog.WriteLine($"穿透处理异常,{ex}");
            }
        }