public AuthenticateResponse(LoginCore user, string token)
 {
     Id       = user.Id;
     username = user.UserName;
     Token    = token;
     role     = user.Role;
 }
예제 #2
0
        /// <summary>
        /// 发送表情
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <param name="type"></param>
        public void SendEmoticon(string EMoticonMd5, string from, string to, int type)
        {
            string msg_json = "{{" +
                              "\"BaseRequest\":{{" +
                              "\"DeviceID\" : \"{0}\"," +
                              "\"Sid\" : \"{1}\"," +
                              "\"Skey\" : \"{2}\"," +
                              "\"Uin\" : \"{3}\"" +
                              "}}," +
                              "\"Msg\" : {{" +
                              "\"ClientMsgId\" : {4}," +
                              "\"EMoticonMd5\" : \"{5}\"," +
                              "\"FromUserName\" : \"{6}\"," +
                              "\"LocalID\" : {7}," +
                              "\"ToUserName\" : \"{8}\"," +
                              "\"Type\" : {9}" +
                              "}}," +
                              "\"rr\" : {10}" +
                              "}}";
            var entity = LoginCore.GetPassTicket(Uin);

            if (Sid != null && Uin != null)
            {
                //((long)(DateTime.Now.ToUniversalTime() - new System.DateTime(1970, 1, 1)).TotalMilliseconds) * 10000
                msg_json = string.Format(msg_json, DeviceID, Sid, entity.SKey, Uin, DateTime.Now.Millisecond, EMoticonMd5, from, DateTime.Now.Millisecond, to, type, DateTime.Now.Millisecond);
                byte[] bytes       = HttpService.SendPostRequest(BaseUrl + Constant._webwxsendemoticon_url + "&pass_ticket=" + entity.PassTicket, msg_json, Uin);
                string send_result = Encoding.UTF8.GetString(bytes);
                var    aa          = send_result;
            }
            //((Action)delegate()
            //{
            //    //存储发送消息
            //    var b = WxOperateLogDal.AddWxsendmsglog(Uin, from, msg,to,from);
            //}).BeginInvoke(null, null);
        }
예제 #3
0
 /// <summary>
 /// 点击发送
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 ///
 private void SendContent_Click(object sender, EventArgs e)
 {
     try
     //if (rSendContent.Text != null && _friendUser != null && _meUser != null)
     {
         if (rSendContent.Text.Trim() == "") //Trim()是去除空格
         {
             MessageBox.Show("(*^__^*) 嘻嘻……\n不能发空消息", "提 示");
         }
         else
         {
             WXMsg msg = new WXMsg();
             msg.Uin    = _meUser.uin;
             msg.Sid    = LoginCore.GetPassTicket(_meUser.uin).WxSid;
             msg.From   = _meUser.UserName;
             msg.Msg    = rSendContent.Text;
             msg.Readed = false;
             msg.To     = _friendUser.UserName;
             msg.Type   = 1;
             msg.Time   = DateTime.Now;
             _friendUser.SendMsg(msg, false);
             rSendContent.Clear();
             rSendContent.Focus();
         }
     }
     catch
     {
         return;
     }
 }
예제 #4
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <param name="type"></param>
        public void SendMsg(string msg, string from, string to, int type, string Uin, string Sid)
        {
            string msg_json = "{{" +
                              "\"BaseRequest\":{{" +
                              "\"DeviceID\" : \"e441551176\"," +
                              "\"Sid\" : \"{0}\"," +
                              "\"Skey\" : \"{6}\"," +
                              "\"Uin\" : \"{1}\"" +
                              "}}," +
                              "\"Msg\" : {{" +
                              "\"ClientMsgId\" : {8}," +
                              "\"Content\" : \"{2}\"," +
                              "\"FromUserName\" : \"{3}\"," +
                              "\"LocalID\" : {9}," +
                              "\"ToUserName\" : \"{4}\"," +
                              "\"Type\" : {5}" +
                              "}}," +
                              "\"rr\" : {7}" +
                              "}}";
            var entity = LoginCore.GetPassTicket(Uin);

            if (Sid != null && Uin != null)
            {
                msg_json = string.Format(msg_json, Sid, Uin, msg, from, to, type, entity.SKey, DateTime.Now.Millisecond, DateTime.Now.Millisecond, DateTime.Now.Millisecond);
                byte[] bytes       = HttpService.SendPostRequest(Constant._sendmsg_url + Sid + "&lang=zh_CN&pass_ticket=" + entity.PassTicket, msg_json, Uin);
                string send_result = Encoding.UTF8.GetString(bytes);
            }
            //((Action)delegate()
            //{
            //    //存储发送消息
            //    var b = WxOperateLogDal.AddWxsendmsglog(Uin, from, msg,to,from);
            //}).BeginInvoke(null, null);
        }
예제 #5
0
        protected async override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Splash);
            core = new LoginCore();
            //Delays
            await Task.Delay(5000);

            await Task.Factory.StartNew(() => {
                //Revisar si hay preferencias guardadas
                Context mContext         = Application.Context;
                ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(mContext);
                if (prefs.Contains("correo"))
                {
                    String sesion_red = prefs.GetString("red_social", "");
                    if (sesion_red.Equals("facebook"))
                    {
                        String sesion_correo = prefs.GetString("correo", "");
                        String sesion_nombre = prefs.GetString("nombre", "");
                        Revisar_login(sesion_correo, sesion_nombre, "facebook");
                    }
                    if (sesion_red.Equals("correo"))
                    {
                        String sesion_correo = prefs.GetString("correo", "");
                        String sesion_nombre = prefs.GetString("nombre", "");
                        Revisar_login(sesion_correo, sesion_nombre, "correo");
                    }
                }
                else
                {
                    Intent intent = new Intent(this, typeof(MainActivity));
                    StartActivity(intent);
                }
            });
        }
예제 #6
0
        private void LoginButton_Click(object sender, EventArgs e)
        {
            long role        = (comboBoxRole.SelectedItem as ComboBoxItem).ID;
            bool loginSet    = false;
            bool passwordSet = false;

            if (!string.IsNullOrEmpty(textBoxLogin.Text))
            {
                loginSet = true;
            }
            if (!string.IsNullOrEmpty(textBoxPassword.Text))
            {
                passwordSet = true;
            }
            if (loginSet && passwordSet)
            {
                string login    = textBoxLogin.Text;
                string password = textBoxPassword.Text;
                LoginCore.LogIn(role, login, password);
                if (CoreBase.isAuthorised)
                {
                    this.Visible = false;
                    Form form;
                    switch (role)
                    {
                    case 1:
                        form = new Forms.AdminForm();
                        form.Show();
                        break;

                    case 2:
                        form = new Forms.CashierForm();
                        form.ShowDialog();
                        break;

                    case 3:
                        form = new Forms.KitchenForm();
                        form.Show();
                        break;

                    default:
                        ErrorsViewWrapper.ShowError(ErrorTexts.UNEXPEXTED_ERROR);
                        Application.Exit();
                        break;
                    }
                }
            }
            else if (!loginSet && !passwordSet)
            {
                ErrorsViewWrapper.ShowError(ErrorTexts.ENTER_LOGIN_AND_PASSWORD);
            }
            else if (loginSet && !passwordSet)
            {
                ErrorsViewWrapper.ShowError(ErrorTexts.ENTER_PASSWORD);
            }
            else
            {
                ErrorsViewWrapper.ShowError(ErrorTexts.ENTER_LOGIN);
            }
        }
예제 #7
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            //RequestWindowFeature(WindowFeatures.NoTitle);
            SetContentView(Resource.Layout.LoginLayout);

            loginCore = new LoginCore(this);
            SetResources();
        }
예제 #8
0
        public async Task <string> CreateLogin(LoginCore login)
        {
            var loginDB = _mapper.Map <Login>(login);
            var res     = await _loginDBManager.CreateDBLogin(loginDB);

            if (res == "Success")
            {
                SmsProvider.SendSms(login.user.Telephone, "Welcome to Tender + Thanks for joining our services");
            }
            return(res);
        }
예제 #9
0
        public WxContact(string uin)
        {
            _uin = uin;
            var entity = LoginCore.GetPassTicket(this._uin);

            if (entity != null)
            {
                wx.Sid = entity.WxSid;
                wx.Uin = this._uin;
            }
        }
예제 #10
0
        public WxContact(string uin)
        {
            _uin = uin;
            var entity = LoginCore.GetPassTicket(_uin);

            if (entity != null)
            {
                wxs.Sid = entity.WxSid;
                wxs.Uin = this._uin;
                // wx.DeviceID= "e" + GenerateCheckCode(15);
                wxs.BaseUrl = "https://" + LoginCore.GetPassTicket(wxs.Uin).WxHost;
            }
        }
        // helper methods

        private string generateJwtToken(LoginCore user)
        {
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(_appSettings.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(new[] { new Claim("id", user.UserName.ToString()) }),
                Expires            = DateTime.UtcNow.AddMinutes(40),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(tokenHandler.WriteToken(token));
        }
예제 #12
0
        public string WxSyncCheck()
        {
            string sync_key = "";

            try
            {
                var _syncKey = LoginCore.GetSyncKey(Uin);
                foreach (KeyValuePair <string, string> p in _syncKey)
                {
                    sync_key += p.Key + "_" + p.Value + "%7C";
                }
                sync_key = sync_key.TrimEnd('%', '7', 'C');

                var entity = LoginCore.GetPassTicket(Uin);
                if (Sid != null && Uin != null)
                {
                    var _synccheck_url = string.Format(PushUrl + Constant._synccheck_url, Sid, Uin, sync_key, (long)(DateTime.Now.ToUniversalTime() - new System.DateTime(1970, 1, 1)).TotalMilliseconds, entity.SKey.Replace("@", "%40"), DeviceID);

                    byte[] bytes = HttpService.SendGetRequest(_synccheck_url + "&_=" + DateTime.Now.Ticks, Uin);

                    if (bytes != null)
                    {
                        //string contact_str = Encoding.UTF8.GetString(bytes);
                        return(Encoding.UTF8.GetString(bytes));
                        //string retcode = contact_str.ToString().Split(new string[] { "\"" }, StringSplitOptions.None)[1];
                        //string selector = contact_str.ToString().Split(new string[] { "\"" }, StringSplitOptions.None)[3];
                        //string[]rs= { retcode, selector };
                        //return contact_str;
                        //return new string[]{ retcode, selector };
                    }
                    else
                    {
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("WxSyncCheck" + ex.Message);
                Tools.Tools.WriteLog(ex.ToString());
                return("");
                //return null;
            }
        }
예제 #13
0
        void shisan13ListView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            TabPage tab = new TabPage();

            tab.Name = WechartListView.SelectedItems[0].SubItems[0].Text;
            tab.Text = WechartListView.SelectedItems[0].SubItems[2].Text + "--云客服";//获取登录列表为微信
            Wx_wechart form = new Wx_wechart();

            form.Uin      = WechartListView.SelectedItems[0].SubItems[0].Text;
            form.Sid      = LoginCore.GetPassTicket(WechartListView.SelectedItems[0].SubItems[0].Text).WxSid;
            form.robotID  = "013";
            form.TopLevel = false;      //设置为非顶级控件
            tab.Controls.Add(form);
            WXMaintab.Controls.Add(tab);
            form.Show();
        }
예제 #14
0
 private void MainFrom_Load(object sender, EventArgs e)
 {
     Text = Constant.SoftName + Constant.Version + "      初始化中...";
     string[] heads  = { "微信唯一ID", "微信用户", "微信", "上线时间", "总群数", "到期时间" };
     int[]    widths = { 140, 140, 140, 130, 140, 100 };
     WechartListView.InitHead(heads, widths);
     WechartListView.Columns[0].TextAlign = HorizontalAlignment.Center;
     Uins = LoginCore.GetOnLineUin();
     foreach (var uin in Uins)
     {
         LoginCore.InitCookie(uin);
         AddToList(uin);
         Thread.Sleep(10);
     }
     this.WechartListView.SelectedIndexChanged += new EventHandler(shisan13ListView1_SelectedIndexChanged);
 }
예제 #15
0
 protected override void OnCreate(Bundle savedInstanceState)
 {
     base.OnCreate(savedInstanceState);
     SetContentView(Resource.Layout.CrearCuenta);
     core_login    = new LoginCore();
     core_registro = new RegistroCore();
     //Mapa
     _mapFragment = FragmentManager.FindFragmentById <MapFragment>(Resource.Id.mapa_crear);
     _mapFragment.GetMapAsync(this);
     //Crear Cuenta
     btn_crear_cuenta        = FindViewById <Button>(Resource.Id.crear_cuenta);
     btn_crear_cuenta.Click += delegate
     {
         Crear_cuenta();
     };
 }
예제 #16
0
        /// <summary>
        /// 微信初始化
        /// </summary>
        /// <returns></returns>
        public JObject WxInit()
        {
            string init_json = "{{\"BaseRequest\":{{\"Uin\":\"{0}\",\"Sid\":\"{1}\",\"Skey\":\"{2}\",\"DeviceID\":\"e1615250492\"}}}}";

            if (Uin != null && Sid != null)
            {
                string pass_ticket = LoginCore.GetPassTicket(Uin).PassTicket;//这个位置过来了
                string skey        = LoginCore.GetPassTicket(Uin).SKey;
                init_json = string.Format(init_json, Uin, Sid, skey);
                byte[]  bytes       = HttpService.SendPostRequest(Constant._init_url + "&pass_ticket=" + pass_ticket, init_json, Uin);
                string  init_str    = Encoding.UTF8.GetString(bytes);
                JObject init_result = JsonConvert.DeserializeObject(init_str) as JObject;
                return(init_result);
            }
            else
            {
                return(null);
            }
        }
        public async Task <ActionResult <User> > PostAdminUser(LoginCore user)
        {
            try
            {
                var response = await _userCore.CreateUser(user);

                if (response == null)
                {
                    return(BadRequest(new { message = "Error encountered in authorizing." }));
                }

                return(Ok(response));
            }
            catch (Exception e)
            {
                _logger.Error("authenticate():" + e);
                return(BadRequest(new { message = "Error encountered in authorizing." }));
            }
        }
        public async Task <ActionResult <LoginCore> > getUserByID(string user)
        {
            try
            {
                LoginCore response = await _userCore.getUserByID(user);

                if (response == null)
                {
                    return(BadRequest(new { message = "Error encountered in authorizing." }));
                }

                return(Ok(response));
            }
            catch (Exception e)
            {
                _logger.Error("authenticate():" + e);
                return(BadRequest(new { message = "Error encountered in authorizing." }));
            }
        }
예제 #19
0
        public async Task <LoginCore> getUserByID(string user)
        {
            try
            {
                var res = await _loginDBManager.GetDBLoginByUsername(user);

                LoginCore reslog = new LoginCore()
                {
                    UserName = res.UserName,
                    Role     = res.Role,
                    Id       = res.Id
                };

                return(reslog);
            }
            catch (System.Exception e)
            {
                throw;
            }
        }
예제 #20
0
        /// <summary>
        /// 获取sid uid   结果存放在cookies中
        /// </summary>
        public string GetSidUid(string login_redirect)
        {
            try
            {
                CookieContainer cookieContainer = new CookieContainer();
                byte[]          bytes           = HttpService.SendGetRequest(login_redirect + "&fun=new&version=v2&lang=zh_CN", ref cookieContainer);
                string          pass_ticket     = Encoding.UTF8.GetString(bytes);
                string          url             = login_redirect;
                Uri             uri             = new Uri(url);
                string          WXUser_url      = (uri.Host);
                string          pass_Ticket     = pass_ticket.Split(new string[] { "pass_ticket" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/');
                string          sKey            = pass_ticket.Split(new string[] { "skey" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/');
                string          wxSid           = pass_ticket.Split(new string[] { "wxsid" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/');
                string          wxUin           = pass_ticket.Split(new string[] { "wxuin" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/');


                var passticketEntity = new PassTicketEntity()
                {
                    PassTicket = pass_Ticket,
                    SKey       = sKey,
                    WxSid      = wxSid,
                    WxUin      = wxUin,
                    WxHost     = WXUser_url
                };

                LoginCore.PassTicket(wxUin, passticketEntity);
                if (HttpService.CookiesContainerDic.ContainsKey(wxUin))
                {
                    HttpService.CookiesContainerDic.Remove(wxUin);
                }
                WxSerializable s = new WxSerializable(wxUin, EnumContainer.SerializType.cookie);
                HttpService.CookiesContainerDic.Add(wxUin, cookieContainer);
                s.Serializable(HttpService.CookiesContainerDic);
                return(wxUin);
            }
            catch (Exception ex)
            {
                Tools.Tools.WriteLog(ex.ToString());
                return(null);
            }
        }
예제 #21
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            core = new LoginCore();
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);
            //Facebook
            mprofileTracker = new MyProfileTracker();
            mprofileTracker.mOnProfileChanged += mProfileTracker_mOnProfileChanged;
            mprofileTracker.StartTracking();
            BtnFBLogin = FindViewById <LoginButton>(Resource.Id.fblogin);
            BtnFBLogin.SetReadPermissions(new List <string> {
                "user_friends",
                "public_profile",
                "email"
            });
            mFBCallManager = CallbackManagerFactory.Create();
            BtnFBLogin.RegisterCallback(mFBCallManager, this);
            //Crear Cuenta
            crear_cuenta        = FindViewById <Button>(Resource.Id.crear_cuenta);
            crear_cuenta.Click += delegate
            {
                Crear_cuenta();
            };
            //iniciar sesion
            iniciar_sesion        = FindViewById <Button>(Resource.Id.iniciar_sesion);
            iniciar_sesion.Click += delegate
            {
                Iniciar_sesion();
            };
            //Hash
            PackageInfo info = this.PackageManager.GetPackageInfo("com.smartapptech.Boss_Mandados", PackageInfoFlags.Signatures);

            foreach (Android.Content.PM.Signature signature in info.Signatures)
            {
                MessageDigest md = MessageDigest.GetInstance("SHA");
                md.Update(signature.ToByteArray());
                string keyhash = Convert.ToBase64String(md.Digest());
                Console.WriteLine("Keyhash: " + keyhash);
            }
        }
예제 #22
0
        private void UpLoad_Click(object sender, RoutedEventArgs e)
        {
            string    sid  = LoginCore.GetPassTicket(uin).WxSid;
            string    host = LoginCore.GetPassTicket(uin).WxHost;
            WXService wxs  = new WXService
            {
                Uin       = uin,
                Sid       = sid,
                DeviceID  = "e" + LoginCore.GenerateCheckCode(15),
                BaseUrl   = "https://" + LoginCore.GetPassTicket(uin).WxHost,
                PushUrl   = "https://webpush." + LoginCore.GetPassTicket(uin).WxHost,
                UploadUrl = "https://file." + LoginCore.GetPassTicket(uin).WxHost
            };
            string FileName = "1.jpg";
            string FilePath = "c:\\1.jpg"; //文件的绝对路径
            //string FilePath = Environment.CurrentDirectory + FileName; //文件的绝对路径
            var ClientMediaId = wxs.UploadMedia(wxs.UploadUrl + Constant._uploadmedia_url, FilePath, FileName, sid, wxs.DeviceID, forwardUser, "filehelper");

            wxs.SendMsgImg("", ClientMediaId, forwardUser, "filehelper", 3);
            Core.Constant.WU_FILE_N += 1;
        }
예제 #23
0
        /// <summary>
        /// 微信同步
        /// </summary>
        /// <returns></returns>
        public JObject WxSync()
        {
            var    entity    = LoginCore.GetPassTicket(Uin);
            string sync_json = "{{\"BaseRequest\" : {{\"DeviceID\":\"{6}\",\"Sid\":\"{1}\", \"Skey\":\"{5}\", \"Uin\":\"{0}\"}},\"SyncKey\" : {{\"Count\":{2},\"List\": [{3}]}},\"rr\" :{4}}}";
            string sync_keys = "";
            var    _syncKey  = LoginCore.GetSyncKey(Uin);

            foreach (KeyValuePair <string, string> p in _syncKey)
            {
                sync_keys += "{\"Key\":" + p.Key + ",\"Val\":" + p.Value + "},";
            }
            sync_keys = sync_keys.TrimEnd(',');
            sync_json = string.Format(sync_json, this.Uin, this.Sid, _syncKey.Count, sync_keys, (long)(DateTime.Now.ToUniversalTime() - new System.DateTime(1970, 1, 1)).TotalMilliseconds, entity.SKey, DeviceID);

            if (this.Sid != null && this.Uin != null)
            {
                byte[] bytes    = HttpService.SendPostRequest(BaseUrl + Constant._sync_url + this.Sid + "&lang=zh_CN&skey=" + entity.SKey + "&pass_ticket=" + entity.PassTicket, sync_json, this.Uin);
                string sync_str = Encoding.UTF8.GetString(bytes);
                if (sync_str == null)
                {
                    return(null);
                }
                JObject sync_resul = JsonConvert.DeserializeObject(sync_str) as JObject;
                // Dictionary<string, string> ss = new Dictionary<string, string>();
                if (sync_resul["SyncKey"]["Count"].ToString() != "1")
                {
                    _syncKey.Clear();
                    foreach (JObject key in sync_resul["SyncKey"]["List"])
                    {
                        _syncKey.Add(key["Key"].ToString(), key["Val"].ToString());
                    }
                }

                return(sync_resul);
            }
            else
            {
                return(null);
            }
        }
예제 #24
0
        public async Task <bool> CreateUser(LoginCore userc)
        {
            try
            {
                Login login = new Login()
                {
                    UserName = userc.UserName,
                    Password = userc.Password,
                    Role     = userc.Role
                };
                var res1 = await _loginDBManager.CreateDBLogin(login);

                var res = await _loginDBManager.GetDBLoginByUsername(userc.UserName);

                User user = new User()
                {
                    Id          = res.Id,
                    Aadhar      = userc.user.Aadhar,
                    Email       = userc.user.Email,
                    Telephone   = userc.user.Telephone,
                    License     = userc.user.License,
                    CompanyName = userc.user.CompanyName,
                    Name        = userc.UserName,
                    PanId       = userc.user.PanId
                };
                bool res2;
                var  response = await _userDBManager.CreateDBUser(user);

                if (response)
                {
                    res2 = SmsProvider.SendSms(string.Concat("+91", userc.user.Telephone), "Welcome to Tender + Thanks for joining our services");
                }
                return(response);
            }
            catch (System.Exception e)
            {
                throw;
            }
        }
예제 #25
0
        public JObject BatGetContact(List <string> groupUserName)
        {
            var entity = LoginCore.GetPassTicket(Uin);
            var _jstr  = string.Empty;

            foreach (var username in groupUserName)
            {
                _jstr += string.Format("{{{{\"UserName\":\"{0}\",\"ChatRoomId\":\"\"}}}},",
                                       username, "");
            }
            string json = "{{" +
                          "\"BaseRequest\":{{\"Uin\":{0}," +
                          "\"Sid\":\"{1}\"," +
                          "\"Skey\":\"{2}\"," +
                          "\"DeviceID\":\"{4}\"}}," +
                          "\"Count\":{3}," +
                          "\"List\":[" +
                          _jstr.TrimEnd(',') +
                          "]" +
                          "}}";

            try
            {
                json = string.Format(json, Uin, Sid, entity.SKey, groupUserName.Count, DeviceID);
            }
            catch (Exception ex)
            {
                //MessageBox.Show("BatGetContact" + ex.Message);
                Tools.Tools.WriteLog(ex.ToString());
                //写日志
            }

            string url = string.Format(BaseUrl + Constant._getbatcontact_url, HttpService.GetTimeStamp(), entity.PassTicket);

            byte[] bytes       = HttpService.SendPostRequest(url, json, Uin);
            string contact_str = Encoding.UTF8.GetString(bytes);

            return(JsonConvert.DeserializeObject(contact_str) as JObject);
        }
예제 #26
0
        /// <summary>
        /// 微信同步检测
        /// </summary>
        /// <returns></returns>
        public string WxSyncCheck()
        {
            string sync_key = "";

            try
            {
                var _syncKey = LoginCore.GetSyncKey(Uin);
                foreach (KeyValuePair <string, string> p in _syncKey)
                {
                    sync_key += p.Key + "_" + p.Value + "%7C";
                }
                sync_key = sync_key.TrimEnd('%', '7', 'C');

                var entity = LoginCore.GetPassTicket(Uin);
                if (Sid != null && Uin != null)
                {
                    var _synccheck_url = string.Format(Constant._synccheck_url, Sid, Uin, sync_key, (long)(DateTime.Now.ToUniversalTime() - new System.DateTime(1970, 1, 1)).TotalMilliseconds, entity.SKey.Replace("@", "%40"), "e1615250492");

                    byte[] bytes = HttpService.SendGetRequest(_synccheck_url + "&_=" + DateTime.Now.Ticks, Uin);
                    if (bytes != null)
                    {
                        return(Encoding.UTF8.GetString(bytes));
                    }
                    else
                    {
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception)
            {
                return("");
            }
        }
예제 #27
0
        public void AddToList(string uin)
        {
            ((Action)(delegate()
            {
                string sid = LoginCore.GetPassTicket(uin).WxSid;
                string WXUser_url = LoginCore.GetPassTicket(uin).WXUser_url;//传值不同域名不同的
                WXService wx = new WXService();
                wx.Uin = uin;
                wx.Sid = sid;
                JObject init_result = wx.WxInit();
                var partUsers = new List <WXUser>();
                foreach (JObject contact in init_result["ContactList"])  //部分好友名单
                {
                    WXUser user = new WXUser();
                    //传值uin sin
                    user.uin = uin;
                    user.UserName = contact["UserName"].ToString();
                    user.City = contact["City"].ToString();
                    user.HeadImgUrl = contact["HeadImgUrl"].ToString();
                    user.NickName = contact["NickName"].ToString();
                    user.Province = contact["Province"].ToString();
                    user.PYQuanPin = contact["PYQuanPin"].ToString();
                    user.RemarkName = contact["RemarkName"].ToString();
                    user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString();
                    user.Sex = contact["Sex"].ToString();
                    user.Signature = contact["Signature"].ToString();
                    partUsers.Add(user);
                }

                var _me = new WXUser();
                if (init_result != null)
                {
                    _me.UserName = init_result["User"]["UserName"].ToString();
                    _me.City = "";
                    _me.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString();
                    _me.NickName = init_result["User"]["NickName"].ToString();
                    _me.Province = "";
                    _me.PYQuanPin = init_result["User"]["PYQuanPin"].ToString();
                    _me.RemarkName = init_result["User"]["RemarkName"].ToString();
                    _me.RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString();
                    _me.Sex = init_result["User"]["Sex"].ToString();
                    _me.Signature = init_result["User"]["Signature"].ToString();
                    Tools.WriteLog("【警告】" + _me.NickName + "不能在此软件运行,请切换版本或重新扫描登陆");

                    if (string.IsNullOrEmpty(_me.NickName))
                    {
                        WriteLog("【警告】" + _me.NickName + "不能在此软件运行,请切换版本或重新扫描登陆");
                        Tools.WriteLog("【警告】" + uin + "不能在此软件运行,请切换版本或重新扫描登陆");
                        return;
                    }

                    var _syncKey = new Dictionary <string, string>();

                    foreach (JObject synckey in init_result["SyncKey"]["List"])  //同步键值
                    {
                        _syncKey.Add(synckey["Key"].ToString(), synckey["Val"].ToString());
                    }
                    //保存最新key
                    LoginCore.AddSyncKey(uin, _syncKey);
                    //更新数据库
                    var table = WeChatRobotDal.GetWxRobot(_me.NickName);
                    if (table.Rows.Count == 0)
                    {
                        WriteLog("【警告】" + _me.NickName + "没有加入系统中");
                        return;
                    }
                    partUsers.Add(_me);
                    WxContact _contact = new WxContact(uin); //记住此处不适合再开线程
                    _contact.InitContact(partUsers);         //初始联系人

                    WeChatRobotDal.UpdateUin(_me.NickName, uin);

                    #region 加入listview
                    if (!_dic.ContainsKey(uin))
                    {
                        this.BeginInvoke((Action) delegate()
                        {
                            this.WechartListView.BeginUpdate();
                            //把扫描好的微信加入到列表中
                            ListViewItem item = new ListViewItem();
                            item.Text = uin;
                            item.SubItems.Add(_me.UserName);
                            item.SubItems.Add(_me.ShowName);
                            item.SubItems.Add(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                            item.SubItems.Add("0");
                            item.SubItems.Add(table.Rows[0]["EndDate"].ToString());
                            this.WechartListView.Items.Add(item);
                            this.WechartListView.EndUpdate();
                            //设置下高度
                            ImageList image = new ImageList();
                            image.ImageSize = new Size(10, 50);//这边设置宽和高
                            this.WechartListView.SmallImageList = image;
                            //隐藏以下按钮
                            //this.WechartListView.Columns[1].Width = 0;
                            //this.WechartListView.Columns[0].Width = 0;
                            //this.WechartListView.Columns[4].Width = 0;
                            //this.WechartListView.Columns[5].Width = 0;
                        });
                        _dic.Add(uin, uin);
                        //#region 开始任务
                        //var robotID = table.Rows[0]["RobotId"].ToString();
                        //WxTaskCore wt = new WxTaskCore(sid, uin, robotID);
                        //wt.user = _me;
                        ////接收消息事件
                        //wt.OnRevice += new WxTaskCore.Revice(wt_OnRevice);
                        ////接收修改联系人消息
                        //wt.OnModifyContact += new WxTaskCore.ModifyContact(wt_OnModifyContact);
                        ////通知发送信息
                        //wt.OnNotifySend += new WxTaskCore.NotifySend(wt_OnNotifySend);
                        ////每一个微信号,开启一个线程
                        //ThreadStart start = new ThreadStart(wt.ReviceMsg);
                        //new Thread(start).Start();
                        ////启动发送线程
                        //new Thread(new ThreadStart(wt.AutoSendMsg)).Start();
                        //#endregion
                    }
                    #endregion
                }
                if (!Uins.Contains(uin))
                {
                    Uins.Add(uin);
                }
                LoginCore.AddOnLineUin(Uins);
                UpDataFromData();
            })).BeginInvoke(null, null);
        }
예제 #28
0
        public string UploadMedia(string url, string picpath, string mediaName, string sid, string DeviceID, string fromUser, string toUser)
        {
            string result            = string.Empty;
            var    entity            = LoginCore.GetPassTicket(Uin);
            var    webwx_data_ticket = "";

            var lastModified     = new FileInfo(picpath).LastWriteTime;
            var dt               = lastModified.ToString("r").Replace(",", "") + lastModified.ToString("zzz").Replace(":", "");
            var lastModifiedDate = dt.Split(' ')[0].ToString() + " "
                                   + dt.Split(' ')[2].ToString() + " "
                                   + dt.Split(' ')[1].ToString() + " "
                                   + dt.Split(' ')[3].ToString() + " "
                                   + dt.Split(' ')[4].ToString() + " "
                                   + dt.Split(' ')[5].ToString() + " (中国标准时间)";



            var fileSize      = Tools.Tools.FileSize(picpath);
            var chunkSize     = 512 * 1024;
            var chunks        = Math.Ceiling((double)fileSize / (double)chunkSize);
            var clientMediaID = DateTime.Now.Millisecond;
            var fileMd5       = HttpService.GetMD5(picpath);
            var fs            = new FileStream(picpath, FileMode.Open, FileAccess.Read);
            var length        = fs.Length;
            var current       = 0;
            var bReader       = new BinaryReader(fs);

            byte[] data;
            var    byteCount = 512 * 1024;
            int    i         = 0;

            for (; current <= length; current = current + byteCount)
            //for (int i = 0; i < chunks; i++)
            {
                CookieContainer _cookiesContainer = HttpService.CookiesContainerDic[Uin];
                var             request           = (HttpWebRequest)WebRequest.Create(url);
                request.Accept = "*/*";
                request.Headers.Add("Accept-Encoding", "gzip, deflate, br");
                request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
                request.ContentType = "multipart/form-data; boundary=----WebKitFormBoundarya4gGLw" + i + "MjIJx7nyC";
                request.KeepAlive   = true;
                //request.ProtocolVersion = HttpVersion.Version11;
                request.Timeout           = 25000;
                request.AllowAutoRedirect = true;
                request.Host = "file." + LoginCore.GetPassTicket(Uin).WxHost;
                request.Headers.Add("Origin", "https://" + LoginCore.GetPassTicket(Uin).WxHost);
                request.Referer   = "https://" + LoginCore.GetPassTicket(Uin).WxHost + "/?&lang=zh_CN";
                request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36";
                request.Method    = "POST";
                //ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
                if (!string.IsNullOrEmpty(Uin))
                {
                    request.CookieContainer = _cookiesContainer;  //启用cookie
                    foreach (var c in HttpService.GetAllCookies(_cookiesContainer))
                    {
                        Tools.Tools.WriteLog(c.ToString());
                        if (c.ToString().Contains("webwx_data_ticket"))
                        {
                            webwx_data_ticket = c.ToString().Split(new string[] { "=" }, StringSplitOptions.None)[1];
                        }
                    }
                }
                //ServicePointManager.ServerCertificateValidationCallback  += RemoteCertificateValidate;

                using (var ms = new MemoryStream())
                {
                    StringBuilder sb = new StringBuilder();
                    string        uploadmediarequest = "{\"UploadType\":2," +
                                                       "\"BaseRequest\":{" +
                                                       "\"Uin\":" + Uin + "," +
                                                       "\"Sid\":\"" + sid + "\"," +
                                                       "\"Skey\":\"" + entity.SKey + "\"," +
                                                       "\"DeviceID\":\"" + DeviceID + "\"}," +
                                                       "\"ClientMediaId\":" + clientMediaID + "," +
                                                       "\"TotalLen\":" + length + "," +
                                                       "\"StartPos\":0," +
                                                       "\"DataLen\":" + length + "," +
                                                       "\"FileMd5\":\"" + fileMd5 + "\"," +
                                                       "\"FromUserName\":\"" + fromUser + "\"," +
                                                       "\"ToUserName\":\"" + toUser + "\"," +
                                                       "\"MediaType\":4}";

                    var boundary = "------WebKitFormBoundarya4gGLw" + i + "MjIJx7nyC\r\n";

                    var lastBoundary = "------WebKitFormBoundarya4gGLw" + i + "MjIJx7nyC--\r\n";

                    var enterStr = "\r\n";

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"id\"\r\n\r\n");
                    sb.Append("WU_FILE_" + Core.Constant.WU_FILE_N + enterStr);

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"name\"" + enterStr + enterStr);
                    sb.Append(mediaName.Substring(mediaName.LastIndexOf("\\") + 1) + enterStr);

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"type\"" + enterStr + enterStr);
                    sb.Append("image/jpeg\r\n");


                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"lastModifiedDate\"" + enterStr + enterStr);
                    //sb.Append("Wed Dec 30 2015 15:24:14 GMT+0800 (中国标准时间)" + enterStr);
                    sb.Append(lastModifiedDate + enterStr);



                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"mediatype\"" + enterStr + enterStr);
                    sb.Append("pic" + enterStr);


                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"size\"\r\n\r\n");
                    sb.Append(fileSize + enterStr);

                    if (chunks > 1)
                    {
                        sb.Append(boundary);
                        sb.Append("Content-Disposition: form-data; name=\"chunks\"\r\n\r\n");
                        sb.Append(chunks + enterStr);
                        sb.Append(boundary);
                        sb.Append("Content-Disposition: form-data; name=\"chunk\"\r\n\r\n");
                        sb.Append(i + enterStr);
                    }

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"uploadmediarequest\"\r\n\r\n");
                    sb.Append(uploadmediarequest + enterStr);

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"webwx_data_ticket\"\r\n\r\n");
                    sb.Append(webwx_data_ticket + enterStr);

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"pass_ticket\"\r\n\r\n");
                    sb.Append(entity.PassTicket + enterStr);

                    sb.Append(boundary);
                    sb.Append("Content-Disposition: form-data; name=\"filename\"; filename=\"" + picpath.Substring(picpath.LastIndexOf("\\") + 1) + "\"\r\n");
                    sb.Append("Content-Type: application/octet-stream\r\n\r\n");

                    var bytes1 = Encoding.UTF8.GetBytes(sb.ToString());
                    ms.Write(bytes1, 0, bytes1.Length);

                    sb.Clear();
                    sb = null;
                    fs.Seek(current, SeekOrigin.Current);
                    if (current + byteCount > length)
                    {
                        data = new byte[Convert.ToInt64((length - current))];
                        bReader.Read(data, 0, Convert.ToInt32((length - current)));
                    }
                    else
                    {
                        data = new byte[byteCount];
                        bReader.Read(data, 0, byteCount);
                    }
                    ms.Write(data, 0, data.Length);

                    var bytes2 = Encoding.UTF8.GetBytes(lastBoundary);
                    ms.Write(bytes2, 0, bytes2.Length);

                    using (var dataStream = request.GetRequestStream())
                    {
                        var bytes3 = ms.ToArray();
                        dataStream.Write(bytes3, 0, bytes3.Length);
                    }

                    using (var response = (HttpWebResponse)request.GetResponse())
                    {
                        using (var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                        {
                            result = reader.ReadToEnd();
                        }
                    }
                }
                i++;
            }
            fs.Close();
            JObject _resul  = JsonConvert.DeserializeObject(result) as JObject;
            var     result1 = _resul["MediaId"].ToString();

            return(result1);
        }
 public LoginController()
 {
     _core = new LoginCore();
 }
예제 #30
0
        public Login(LoginCore services)

        {
            InitializeComponent();
            this.services = services;
        }