Пример #1
0
        public IHttpActionResult MailChangePassword(LoginData data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var tmpResult = Service.EmailSend.CheckVerifyCode(data.Email, data.ValidateCode);

            if (tmpResult != 0)
            {
                switch (tmpResult)
                {
                case -1:
                    return(BadRequest("请先发送验证码!"));

                case -2:
                    return(BadRequest("请输入正确的验证码!"));

                case -3:
                    return(BadRequest("请重新验证!"));
                }
            }

            var updatedCustomer = _db.Customers.FirstOrDefault(b => b.Email == data.Email);

            if (updatedCustomer != null)
            {
                updatedCustomer.Password = EncryptProvider.Md5(data.Password);
                _db.SaveChanges();
                return(Ok("修改密码成功"));
            }
            else
            {
                return(NotFound());
            }
        }
        public IActionResult Unprotectdata([FromBody] Protected model)
        {
            var configurationBuilder = new ConfigurationBuilder();
            var path = Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json");

            configurationBuilder.AddJsonFile(path, false);
            var root   = configurationBuilder.Build();
            var desKey = root.GetSection("KEY").GetSection("SECkey").Value;

            try
            {
                model.Password = EncryptProvider.DESDecrypt(model.Password, desKey);
                var    email  = model.Email;
                string output = email.Replace(" ", "+");
                model.Email = EncryptProvider.DESDecrypt(output, desKey.ToString());
                if (model.Action == 10) //reset Password from email
                {
                    model.Email = EncryptProvider.DESDecrypt(output, desKey);
                    return(Ok(model));
                }

                //model.Email = EncryptProvider.DESDecrypt(model.Email, desKey);
                //model.Password = EncryptProvider.DESDecrypt(model.Password, desKey);
                if (model.Action > 0 && model.Action != 5)
                {
                    model.AbsenceId = EncryptProvider.DESDecrypt(model.AbsenceId, desKey); //when action = 5 then there is no JobId
                }
                return(Ok(model));
            }
            catch (Exception ex)
            {
                return(BadRequest("Invalid"));
            }
            finally
            {
            }
        }
Пример #3
0
        public async Task SignInSucceedAsync()
        {
            await _userRepository.DeleteAsync(it => it.UserEmail == "*****@*****.**");

            await _userRepository.InsertAsync(new User()
            {
                UserEmail = "*****@*****.**", UserPassword = EncryptProvider.Sha256("testpassword"), UserNickname = "test"
            });

            var signInPara = new UserService_SignInPara()
            {
                UserEmail    = "*****@*****.**",
                UserPassword = "******"
            };
            var result = await _userServiceController.SignInAsync(signInPara);

            var resultObj = result.Result as OkObjectResult;
            var resultVal = resultObj.Value as UserService_SignInDto;

            Assert.InRange((int)resultObj.StatusCode, 200, 299);
            Assert.True(resultVal.IsSuccess);
            _output.WriteLine(JsonSerializer.Serialize(resultVal, _options));
            await _userRepository.DeleteAsync(it => it.UserEmail == "*****@*****.**");
        }
Пример #4
0
        /// <summary>
        /// Login
        /// </summary>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns>Hàm trả về Tuper Item =  AccountObject và Item 2: Danh sách Role</returns>
        public async Task <Tuple <AccountObject, List <string> > > Login(string username, string password)
        {
            var hashedPassword = EncryptProvider.Sha1(password);

            var accountObj = await _context.AccountObject.FirstOrDefaultAsync(c => c.UserName == username && c.PassWord == hashedPassword);

            if (accountObj == null)
            {
                return(null);
            }

            var roles = await _context.Role_AccountObject
                        .Where(h =>
                               h.FK_AccountObject == accountObj.Id &&
                               h.AtRowStatus == (int)AtRowStatus.Normal
                               )
                        .Select(h => h.FK_RoleNavigation.Id)
                        .ToListAsync().ConfigureAwait(false);


            await WrtiteAudittingLog(new MSC_AudittingLog { Description = "Login " + accountObj.Id, UserID = accountObj.Id }, AtSerialNoConts.CODE_LOG_LOGIN);

            return(new Tuple <AccountObject, List <string> >(accountObj, roles));
        }
        async void SelectProfilePictureCommandExecuted()
        {
            await CrossMedia.Current.Initialize();

            try
            {
                var selection = await _userDialogs.ActionSheetAsync("Profile Picture", "", null, null, "Take Photo", "Select from Gallery", "Clear");

                _userDialogs.ShowLoading();
                MediaFile file = null;
                if (selection.Equals("Take Photo"))
                {
                    if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                    {
                        _userDialogs.Toast("No camera available");
                        return;
                    }

                    file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                    {
                        SaveToAlbum        = true,
                        Directory          = "Converse",
                        PhotoSize          = Plugin.Media.Abstractions.PhotoSize.Medium,
                        MaxWidthHeight     = 1024,
                        CompressionQuality = 50
                    });
                }
                else if (selection.Equals("Select from Gallery"))
                {
                    if (!CrossMedia.Current.IsPickPhotoSupported)
                    {
                        _userDialogs.Toast("Not supported");
                        return;
                    }
                    file = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
                    {
                        PhotoSize          = Plugin.Media.Abstractions.PhotoSize.Medium,
                        MaxWidthHeight     = 1024,
                        CompressionQuality = 50
                    });
                }
                else if (selection.Equals("Clear"))
                {
                    Wallet.ProfileImageUrl = "baseline_person_grayish_48";
                }

                if (file != null)
                {
                    var stream         = file.GetStream();
                    var storedImageUrl = await new FirebaseStorage("converse-8a53c.appspot.com")
                                         .Child("users")
                                         .Child(_walletManager.Wallet.Address)
                                         .Child("images")
                                         .Child(EncryptProvider.Md5(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt"), MD5Length.L16)
                                                + $".{file.Path.Split('.').Last()}")
                                         .PutAsync(stream);
                    if (!string.IsNullOrWhiteSpace(storedImageUrl))
                    {
                        Wallet.ProfileImageUrl = storedImageUrl;
                    }
                }
            }
            catch (Exception ex)
            {
                _userDialogs.Toast("Image upload failed");
            }
            _userDialogs.HideLoading();
        }
 /// <summary>
 /// sha256 加密  base64 编码
 /// </summary>
 /// <param name="input"></param>
 /// <returns></returns>
 public static string Sha256Base64Encry(this string input)
 {
     byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(EncryptProvider.Sha256(input));
     return(Convert.ToBase64String(byteArray));
 }
Пример #7
0
        private void Send_Click(object sender, EventArgs e)
        {
            //ini file
            var     parser = new FileIniDataParser();
            IniData data   = parser.ReadFile("config.ini");

            //var aesKey = EncryptProvider.CreateAesKey();
            //var key = aesKey.Key;
            //var iv = aesKey.IV;

            //var plainTextPassword = "";
            //var plainTextEmailFrom = "";
            //var plainTextEmailTo = "";

            //var ePass = EncryptProvider.AESEncrypt(plainTextPassword, key, iv);
            //var eEmailFrom = EncryptProvider.AESEncrypt(plainTextEmailFrom, key, iv);
            //var eEmailTo = EncryptProvider.AESEncrypt(plainTextEmailTo, key, iv);

            //data["Auth"]["tbp"] = ePass;
            //data["Auth"]["efr"] = eEmailFrom;
            //data["Auth"]["eto"] = eEmailTo;
            //data["Auth"]["k"] = key;
            //data["Auth"]["4"] = iv;
            //parser.WriteFile("config.ini", data);

            var aesKey = EncryptProvider.CreateAesKey();
            var key    = data["Auth"]["k"];
            var iv     = data["Auth"]["4"];

            var encryptedP = data["Auth"]["tbp"];
            var decryptedP = EncryptProvider.AESDecrypt(encryptedP, key, iv);

            var encryptedF = data["Auth"]["efr"];
            var decryptedF = EncryptProvider.AESDecrypt(encryptedF, key, iv);

            var encryptedT = data["Auth"]["eto"];
            var decryptedT = EncryptProvider.AESDecrypt(encryptedT, key, iv);

            var    fromAddress  = new MailAddress(decryptedF);
            var    toAddress    = new MailAddress(decryptedT);
            string fromPassword = decryptedP;
            string subject      = "New Setup-" + hostname.Text;
            string body         =
                "Make: " + make.Text + "\n" +
                "Model: " + model.Text + "\n" +
                "Serial: " + machineSerial.Text + "\n" +
                "Hardware ID: " + deviceID.Text + "\n" +
                "Security ID: " + SID.Text + "\n";

            var smtp = new SmtpClient
            {
                Host                  = "smtp.gmail.com",
                Port                  = 587,
                EnableSsl             = true,
                DeliveryMethod        = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Credentials           = new NetworkCredential(fromAddress.Address, fromPassword),
                Timeout               = 20000
            };

            using (var message = new MailMessage(fromAddress, toAddress)
            {
                Subject = subject,
                Body = body
            })
            {
                smtp.Send(message);
            }
        }
Пример #8
0
        /// <summary>
        /// 人脸更新
        /// </summary>
        /// <returns></returns>
        public async Task<ActionResult> UpdateFace(FaceDatabaseModel.UserFaceModel model)
        {


            // 一系列检查
            RequestFaceModel request = new RequestFaceModel()
            {
                Status = 500,
                Message = null,
                FaceList = null
            };

            var userFaceSet = Verify(ref request, model);
            // 基本验证
            if (userFaceSet == null)
            {
                return Ok(request);
            }

            // 判断是否存在此用户,是否存在此分组
            // 判断是否有同样的人,判断是否有此分组
            var group = await Service_user_face_storage_group.Get_storage_group_BySecretGroupAsync(model.secret_id, model.group_id);
            if (group == null)
            {
                request.Enum = RequestEnum.数据不存在;
                return Ok(request);
            }

            user_face_storage group_user = null;
            if (model.group_id == "@ALL")
            {
                group_user = await Service_user_face_storage.GetUser_By_UGS_ALL(model.user_id, model.secret_id);
            }
            else
            {
                group_user = await Service_user_face_storage.GetUser_By_UGS(model.user_id, group.id, model.secret_id);
            }
            if (group_user == null)
            {
                request.Enum = RequestEnum.数据不存在;
                return Ok(request);
            }



            // 将以前的人脸状态变为删除
            user_face_storage user = new user_face_storage()
            {
                is_delete = true,
                updated_at = DateTime.Now,
                secret_id = model.secret_id
            };

            // 增加一个人脸
            #region 获取图片

            var face_token = string.Empty;
            (Bitmap, string) bitmap = (null, null);
            // 获取图片文件
            bitmap = model.image_type.ToUpper() == "BASE64" ? FileCommon.Base64ToBitmap(model.image) : FileCommon.UrlToBitmap(model.image);
            if (bitmap.Item1 == null && !string.IsNullOrEmpty(bitmap.Item2))
            {
                if (model.image_type.ToUpper() == "BASE64")
                {
                    request.Enum = RequestEnum.Base64图片格式错误;
                }
                else
                {
                    request.Enum = RequestEnum.从图片的url下载图片失败;
                }
                return Ok(request);
            }

            #endregion


            #region 图片以及数据处理

            // 查找是否有相同的图片
            face_token = model.image_type.ToUpper() == "BASE64" ? EncryptProvider.Md5(model.image) : EncryptProvider.Md5(FileCommon.BitmapToBase64(bitmap.Item1));

            // 查询 图片库
            var user_images = await Service_user_face_image_data.Getuser_face_image_data_By_Token_Async(face_token);

            if (user_images != null)
            {
                bitmap.Item2 = user_images.url;
            }
            else
            {
                try
                {
                    // 存入本地
                    bitmap.Item2 = FileCommon.SaveBitmap(bitmap.Item1, bitmap.Item2);

                }
                catch (Exception ex)
                {
                    LogHelperNLog.Error(ex);
                    request.Enum = RequestEnum.数据存储处理失败;
                    return Ok(request);
                }

            }

            // 获取人脸数据
            //var faceDate = FaceDetectionCompute.GetRectangle(bitmap.Item1);
            DlibDotNet.Rectangle[] faceDate = new DlibDotNet.Rectangle[0];
            try
            {
                // 截取人像,面积排序
                faceDate = FaceDetectionCompute.GetRectangle(bitmap.Item1).OrderByDescending(d => d.Area).Take(1).ToArray();
            }
            catch (Exception ex)
            {
                LogHelperNLog.Error(ex, "FaceDetectionCompute.GetRectangles:人脸获取坐标出错");
                request.Enum = RequestEnum.无法解析人脸;
                return Ok(request);
            }

            #endregion

            request.Enum = RequestEnum.Succeed;
            request.Location = faceDate;

            #region 日志&&扣费

            try
            {

                DateTime dateTime = DateTime.Now;

                // 图片保存到数据库
                user_images = new user_face_image_data()
                {
                    token = face_token,
                    url = bitmap.Item2,
                    created_at = dateTime,
                    updated_at = dateTime
                };


                //查找分组信息

                user.api_group_id = group.id;


                //用户信息
                user_face_storage face_Storage = new user_face_storage()
                {
                    user_id = userFaceSet.user_id,
                    secret_id = model.secret_id,
                    face_token = face_token,
                    image = bitmap.Item2,
                    image_type = model.image_type,
                    api_group_id = group.id,
                    api_user_id = model.user_id,
                    api_user_info = model.user_info,
                    quality_control = model.quality_control,
                    liveness_control = model.quality_control,
                    sign = model.sign,
                    timestamp = model.timestamp,
                    is_delete = false,
                    api_respone = JsonConvert.SerializeObject(request, UnderlineSplitContractResolver.GetSettings()),
                    created_at = dateTime,
                    updated_at = dateTime
                };

                using (var tra = SqlDapperHelper.GetOpenConnection().BeginTransaction())
                {
                    await Service_user_face_storage.Remove_Storage_By_ApiUserID(user, tra);
                    if (user_images == null)
                    {
                        await Service_user_face_image_data.Creatuser_face_image_data(user_images, tra);
                    }
                    await SqlDapperHelper.ExecuteInsertAsync(face_Storage, tra);
                    tra.Commit();
                }
            }
            catch (Exception ex)
            {
                LogHelperNLog.Error(ex, "操作日志添加失败");
                request.Enum = RequestEnum.操作日志添加失败;
            }

            #endregion

            return Ok(request);

        }
Пример #9
0
        public AutenticacaoDoLogin FazerLogin(LoginDto loginDto)
        {
            bool       credenciaisValidas = false;
            UsuarioDto usuarioBase        = new UsuarioDto();

            if (loginDto != null && !string.IsNullOrWhiteSpace(loginDto.Login))
            {
                usuarioBase        = _usuarioServices.GetByEmail(loginDto.Login);
                credenciaisValidas = usuarioBase.Id != Guid.Empty && !usuarioBase.Excluido && loginDto.Login == usuarioBase.Email && EncryptProvider.Md5(loginDto.Senha).ToUpper() == usuarioBase.Senha.ToUpper();
            }

            if (credenciaisValidas)
            {
                var dataDeExpiracao = DateTime.Now.AddDays(1);
                var tokenHandler    = new JwtSecurityTokenHandler();
                var key             = Encoding.ASCII.GetBytes(_appSettings.Secret);
                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject = new ClaimsIdentity(new Claim[]
                    {
                        new Claim(ClaimTypes.Name, usuarioBase.Id.ToString())
                    }),
                    Expires            = dataDeExpiracao,
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
                };
                var tokenObj = tokenHandler.CreateToken(tokenDescriptor);
                var token    = tokenHandler.WriteToken(tokenObj);

                _context.SaveChanges();
                return(new AutenticacaoDoLogin
                {
                    Autenticado = true,
                    DataDeCriacao = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    DataDeExpiracao = dataDeExpiracao.ToString("yyyy-MM-dd HH:mm:ss"),
                    TokenDeAcesso = token,
                    Mensagem = "OK",
                    UsuarioId = usuarioBase.Id,
                    Usuario = usuarioBase.Apelido,
                });
            }
            else
            {
                return(new AutenticacaoDoLogin
                {
                    Autenticado = false,
                    Mensagem = "Falha ao autenticar"
                });
            }
        }
Пример #10
0
 public static string ToMd5(this string str)
 {
     return(EncryptProvider.Md5(str));
 }
Пример #11
0
 /// <summary>
 /// String SHA512 extensions
 /// </summary>
 /// <param name="srcString"></param>
 /// <returns></returns>
 public static string SHA512(this string srcString)
 {
     Check.Argument.IsNotEmpty(srcString, nameof(srcString));
     return(EncryptProvider.Sha512(srcString));
 }
Пример #12
0
 /// <summary>
 /// String MD5 extension
 /// </summary>
 /// <param name="srcString"></param>
 /// <returns></returns>
 public static string MD5(this string srcString)
 {
     Check.Argument.IsNotEmpty(srcString, nameof(srcString));
     return(EncryptProvider.Md5(srcString));
 }
Пример #13
0
        static void Main(string[] args)
        {
            var aesKey = EncryptProvider.CreateAesKey();
            var key    = aesKey.Key;
            var iv     = aesKey.IV;

            /*
             * var _max = 10000;
             *
             * var s1 = Stopwatch.StartNew();
             *
             * for (int i = 0; i < _max; i++)
             * {
             *  aesKey = EncryptProvider.CreateAesKey();
             * }
             * s1.Stop();
             *
             * var s2 = Stopwatch.StartNew();
             * for (int i = 0; i < _max; i++)
             * {
             *  aesKey = EncryptProvider.CreateAesKey(false);
             * }
             * s2.Stop();
             *
             * Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns"));
             * Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns"));
             * Console.Read();
             */

            var plaintext = "Hello world 123456789/*-+!@#$%^&*()-=_+";
            var encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv);
            var decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv);

            Console.WriteLine("Plaintext to encrypt: " + plaintext);
            Console.WriteLine();

            Console.WriteLine("** AES SecureRandom **");
            Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted);
            Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted);
            Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();
            Console.WriteLine("** AES SecureRandom with Byte input/output **");
            byte[] bencrypted = EncryptProvider.AESEncrypt(Encoding.UTF8.GetBytes(plaintext), key, iv);
            byte[] bdecrypted = EncryptProvider.AESDecrypt(bencrypted, key, iv);

            Console.WriteLine("Encrypted " + " (Length: " + bencrypted.Length + ") " + Encoding.UTF8.GetString(bencrypted));
            Console.WriteLine("Decrypted " + " (Length: " + bdecrypted.Length + ") " + Encoding.UTF8.GetString(bdecrypted));
            Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();

            Console.WriteLine("** AES Non-SecureRandom **");

            aesKey = EncryptProvider.CreateAesKey();
            key    = aesKey.Key;
            iv     = aesKey.IV;

            encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv);
            decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv);
            Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted);
            Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted);
            Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();
            Console.WriteLine("** RSA **");
            var rsaKey = EncryptProvider.CreateRsaKey();

            var publicKey  = rsaKey.PublicKey;
            var privateKey = rsaKey.PrivateKey;

            //var exponent = rsaKey.Exponent;
            //var modulus = rsaKey.Modulus;

            encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext);

            encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext, RSAEncryptionPadding.Pkcs1);
            decrypted = EncryptProvider.RSADecrypt(privateKey, encrypted, RSAEncryptionPadding.Pkcs1);


            Console.WriteLine("Encrypted: " + encrypted);
            Console.WriteLine("Decrypted: " + decrypted);
            //Console.WriteLine("publicKey: {0} privateKey: {1}", publicKey, privateKey);

            Console.WriteLine();
            Console.WriteLine("** SHA **");
            Console.WriteLine("SHA1: " + EncryptProvider.Sha1(plaintext));
            Console.WriteLine("SHA256: " + EncryptProvider.Sha256(plaintext));
            Console.WriteLine("SHA384: " + EncryptProvider.Sha384(plaintext));
            Console.WriteLine("SHA512: " + EncryptProvider.Sha512(plaintext));


            Console.WriteLine();
            Console.WriteLine("** Test issues #25  https://github.com/myloveCc/NETCore.Encrypt/issues/25 **");

            rsaKey = EncryptProvider.CreateRsaKey();

            publicKey  = rsaKey.PublicKey;
            privateKey = rsaKey.PrivateKey;

            var testStr = "test issues #25 ";

            Console.WriteLine($"Test str:{testStr}");

            var saveDir = AppDomain.CurrentDomain.BaseDirectory;

            //save public key
            var publicKeySavePath = Path.Combine(saveDir, "privateKey.txt");

            if (File.Exists(publicKeySavePath))
            {
                File.Delete(publicKeySavePath);
            }
            using (FileStream fs = new FileStream(publicKeySavePath, FileMode.CreateNew))
            {
                fs.Write(Encoding.UTF8.GetBytes(privateKey));
            }

            //save encrypt text
            var encryptStr = EncryptProvider.RSAEncrypt(publicKey, testStr, RSAEncryptionPadding.Pkcs1);

            Console.WriteLine($"encryped str:{encryptStr}");
            var encryptSavePath = Path.Combine(saveDir, "encrypt.txt");

            if (File.Exists(encryptSavePath))
            {
                File.Delete(encryptSavePath);
            }

            using (FileStream fs = new FileStream(encryptSavePath, FileMode.CreateNew))
            {
                fs.Write(Encoding.UTF8.GetBytes(encryptStr));
            }

            Console.ReadKey();
        }
Пример #14
0
 public static string Decrypt(string value)
 {
     return(EncryptProvider.AESDecrypt(value, KEY, IV));
 }
Пример #15
0
        public IHttpActionResult UpdateUser(RegisterData data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var tmpResult = Service.SellerEmailSend.CheckVerifyCode(data.SellerData.SellerEmail, data.ValidateCode);

            if (tmpResult != 0)
            {
                switch (tmpResult)
                {
                case -1:
                    tmpResult = Service.SellerSmsSend.CheckVerifyCode(data.SellerData.SellerPhone, data.ValidateCode);
                    if (tmpResult != 0)
                    {
                        switch (tmpResult)
                        {
                        case -1:
                            return(BadRequest("请先点击发送验证码!"));

                        case -2:
                            return(BadRequest("验证码错误,请输入正确的验证码!"));

                        case -3:
                            return(BadRequest("请重新发送验证码!"));
                        }
                    }

                    break;

                case -2:
                    return(BadRequest("验证码错误,请输入正确的验证码!"));

                case -3:
                    return(BadRequest("请重新发送验证码!"));
                }
            }
//            "Password": "******",
//            "ShopName": "interesting",
//            "CreditLevel": 10,
//            "ShopDescription": "mmp",
//            "AvatarPath": "mmp",
//            "DefaultSellerAddressIndex": 0,
//            "SellerEmail": "*****@*****.**",
//            "SellerPhone": "13761491703"

            Seller seller = new Seller()
            {
                Password                  = EncryptProvider.Md5(data.SellerData.Password),
                ShopName                  = data.SellerData.ShopName,
                CreditLevel               = 5,
                ShopDescription           = data.SellerData.ShopDescription,
                SellerEmail               = data.SellerData.SellerEmail,
                SellerPhone               = data.SellerData.SellerPhone,
                AvatarPath                = "seller_avatar",
                DefaultSellerAddressIndex = 0
            };



            var inserted = db.Sellers.Add(seller);

            db.SaveChanges();

            var cookie = new HttpCookie("sessionId")
            {
                Value   = Service.CustomerSession.SetSessionId(inserted.SellerId).ToString(),
                Expires = DateTime.Now.AddHours(1)
            };

            HttpContext.Current.Response.Cookies.Add(cookie);


            return(Ok());
        }
Пример #16
0
        public async Task <ActionResult> CheckLogin(string username, string password, string code)
        {
            LogEntity logEntity = new LogEntity();

            logEntity.F_ModuleName = "系统登录";
            logEntity.F_Type       = DbLogType.Login.ToString();
            try
            {
                if (NFine.Code.WebHelper.GetSession("nfine_session_verifycode").IsEmpty() || EncryptProvider.Md5(code.ToLower(), Code.Internal.MD5Length.L16) != NFine.Code.WebHelper.GetSession("nfine_session_verifycode").ToString())
                {
                    throw new Exception("验证码错误,请重新输入");
                }

                UserEntity userEntity = userApp.CheckLogin(username, password);
                if (userEntity != null)
                {
                    OperatorModel operatorModel = new OperatorModel();
                    operatorModel.UserId             = userEntity.F_Id;
                    operatorModel.UserCode           = userEntity.F_Account;
                    operatorModel.UserName           = userEntity.F_RealName;
                    operatorModel.CompanyId          = userEntity.F_OrganizeId;
                    operatorModel.DepartmentId       = userEntity.F_DepartmentId;
                    operatorModel.RoleId             = userEntity.F_RoleId;
                    operatorModel.LoginIPAddress     = Net.Ip;
                    operatorModel.LoginIPAddressName = Net.GetLocation(operatorModel.LoginIPAddress);
                    operatorModel.LoginTime          = DateTime.Now;
                    operatorModel.LoginToken         = EncryptProvider.DESEncrypt(Guid.NewGuid().ToString());
                    if (userEntity.F_Account == "admin")
                    {
                        operatorModel.IsSystem = true;
                    }
                    else
                    {
                        operatorModel.IsSystem = false;
                    }
                    await OperatorProvider.Provider.AddCurrent(operatorModel);

                    logEntity.F_Account         = userEntity.F_Account;
                    logEntity.F_NickName        = userEntity.F_RealName;
                    logEntity.F_Result          = true;
                    logEntity.F_Description     = "登录成功";
                    logEntity.F_CreatorUserId   = operatorModel.UserId;
                    logEntity.F_CreatorUserName = operatorModel.UserName;
                    logApp.WriteDbLog(logEntity);
                }
                return(Content(new AjaxResult {
                    state = ResultType.success.ToString(), message = "登录成功。"
                }.ToJson()));
            }
            catch (Exception ex)
            {
                logEntity.F_Account         = username;
                logEntity.F_NickName        = username;
                logEntity.F_Result          = false;
                logEntity.F_Description     = "登录失败," + ex.Message;
                logEntity.F_CreatorUserId   = username;
                logEntity.F_CreatorUserName = username;
                logApp.WriteDbLog(logEntity);
                return(Content(new AjaxResult {
                    state = ResultType.error.ToString(), message = ex.Message
                }.ToJson()));
            }
        }
Пример #17
0
        /// <summary>
        /// 根据AccessToken获取新用户
        /// </summary>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public virtual async Task <UserDTO> GetUserByAccessTokenAsync(string accessToken)
        {
            var login      = new QQLogin();
            var openId     = login.GetOpenID(accessToken);
            var qqUserInfo = login.GetQQUserInfo(accessToken, openId);

            if (qqUserInfo.Ret != 0 || !string.IsNullOrWhiteSpace(qqUserInfo.Msg))
            {
                return(null);
            }
            UserEntity user;
            var        alreadyLoginUser = await GetQQUserInfoByOpenIdAsync(openId);

            //判断是否存在重复登陆且已经注册的用户
            if (alreadyLoginUser == null)
            {
                var defaultPwd = EncryptProvider.Md5("123456");//默认使用MD5加密密码
                user = new UserEntity()
                {
                    createDate    = DateTime.Now,
                    portrait      = qqUserInfo.Figureurl_qq_1,
                    nickName      = qqUserInfo.Nickname,
                    loginTime     = DateTime.Now,
                    lastLoginDate = DateTime.Now,
                    loginCount    = 1,
                    disabled      = false,
                    password      = defaultPwd
                };
                if (!await UserService.AddEntityAsync(user))
                {
                    return(null);
                }
                var entity = new QQUserInfoEntity()
                {
                    openId         = openId,
                    accessToken    = accessToken,
                    userId         = user.id,
                    gender         = qqUserInfo.Gender,
                    figureurl_qq_1 = qqUserInfo.Figureurl_qq_1,
                    nickName       = qqUserInfo.Nickname
                };
                if (await AddEntityAsync(entity))
                {
                    return(Mapper.Map <UserDTO>(user));
                }
            }
            else
            {
                user = await UserService.GetUserByConditionAsync(a => a.id == alreadyLoginUser.userId && a.disabled == false);

                if (user == null)
                {
                    throw new Exception("该用户被禁止登陆!");
                }
                user.lastLoginDate = DateTime.Now;
                user.loginCount   += 1;
                await UserService.UpdateEntityAsync(user);

                return(Mapper.Map <UserDTO>(user));
            }
            return(null);
        }
Пример #18
0
 /// <summary>
 /// String HMACSHA1 extensions
 /// </summary>
 /// <param name="srcString"></param>
 /// <returns></returns>
 public static string HMACSHA256(this string srcString, string key)
 {
     Check.Argument.IsNotEmpty(srcString, nameof(srcString));
     return(EncryptProvider.HMACSHA256(srcString, key));
 }
Пример #19
0
 public void SubmitForm(UserEntity userEntity, UserLogOnEntity userLogOnEntity, string keyValue)
 {
     using (var db = this.repositoryBase.BeginTrans())
     {
         if (!string.IsNullOrEmpty(keyValue))
         {
             db.Update(userEntity);
         }
         else
         {
             userLogOnEntity.F_Id            = userEntity.F_Id;
             userLogOnEntity.F_UserId        = userEntity.F_Id;
             userLogOnEntity.F_UserSecretkey = EncryptProvider.CreateDesKey();
             userLogOnEntity.F_UserPassword  = EncryptProvider.Md5(EncryptProvider.DESEncrypt(EncryptProvider.Md5(userLogOnEntity.F_UserPassword, Code.Internal.MD5Length.L32).ToLower(), userLogOnEntity.F_UserSecretkey).ToLower(), Code.Internal.MD5Length.L32).ToLower();
             db.Insert(userEntity);
             db.Insert(userLogOnEntity);
         }
         db.Commit();
     }
 }
Пример #20
0
        public async Task ProcessAsync(Message message, MailTemplateEnums mailTemplateEnums)
        {
            var data      = DataProtectionProvider.Create("Subzz");
            var protector = data.CreateProtector("secretAdmin@0192837465");

            try
            {
                var configurationBuilder = new ConfigurationBuilder();
                var path = Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json");
                configurationBuilder.AddJsonFile(path, false);
                var    root   = configurationBuilder.Build();
                string apiUrl = root.GetSection("URL").GetSection("api").Value;
                string web    = root.GetSection("URL").GetSection("web").Value;
                //Private Key
                var desKey = root.GetSection("KEY").GetSection("SECkey").Value;

                // Encryption
                var encEmail     = EncryptProvider.DESEncrypt(message.SendTo, desKey);
                var encPassword  = EncryptProvider.DESEncrypt(message.Password, desKey);
                var encAbsenceId = EncryptProvider.DESEncrypt(message.AbsenceId.ToString(), desKey);
                message.ProfilePicUrl     = apiUrl + "/Profile/" + message.Photo;
                message.UnsubscriptionUrl = web + "/unsubscribed/?email=" + message.SendTo;
                if (message.TemplateId == 14)
                {
                    message.ApproveUrl = web + "/?pa=" + encPassword + "&email=" + encEmail + "&job=" + encAbsenceId + "&ac=" + 3;
                    message.DenyUrl    = web + "/?pa=" + encPassword + "&email=" + encEmail + "&job=" + encAbsenceId + "&ac=" + 4;
                }
                if (message.TemplateId == 1 || message.TemplateId == 7)
                {
                    message.AcceptUrl  = web + "/?pa=" + encPassword + "&email=" + encEmail + "&job=" + encAbsenceId + "&ac=" + 1;
                    message.DeclineUrl = web + "/?pa=" + encPassword + "&email=" + encEmail + "&job=" + encAbsenceId + "&ac=" + 2;
                }
                if (message.TemplateId == 9)
                {
                    message.resetPassUrl = web + "/resetPassword/?email=" + message.SendTo + "&key=" + message.ActivationCode;
                }
                if (message.TemplateId == 25)
                {
                    //message.Password = EncryptProvider.DESEncrypt(message.Password, desKey);
                    //var EmailId = EncryptProvider.DESEncrypt(message.SendTo, desKey);
                    message.VerifyUrl = web + "/?pa=" + encPassword + "&email=" + encEmail + "&ac=" + 5;
                }
                MailTemplate mailTemplate = await CommunicationContainer.MailTemplatesBuilder
                                            .GetMailTemplateByIdAsync((int)mailTemplateEnums);

                string[] to;
                to = new string[] { message.SendTo };
                var    param = GetParam(message);
                string body  = PrepareBodyMessage(param, mailTemplate.EmailContent);
                if (mailTemplate.EmailDisclaimerNeeded)
                {
                    body += mailTemplate.EmailDisclaimerContent;
                }
                if (string.IsNullOrEmpty(message.AttachedFileName))
                {
                    await CommunicationContainer.MailClient.SendAsync(body, mailTemplate.Title, to,
                                                                      mailTemplate.SenderEmail, true, message.ImageBase64);
                }
                else
                {
                    await CommunicationContainer.MailClient.SendRawEmail(body, mailTemplate.Title, to,
                                                                         mailTemplate.SenderEmail, true, message.AttachedFileName, message.FileContentType);
                }
                DateTime updatedOn = DateTime.Now;
                CommunicationContainer.Logger.LogEmail(message.SendTo, body, mailTemplate.Notes, null, updatedOn, Convert.ToString(message.AbsenceId), "OK");
            }
            catch (System.Exception ex)
            {
                DateTime updatedOn = DateTime.Now;
                CommunicationContainer.Logger.LogEmail(message.SendTo, null, "Subzz Job Notification", Convert.ToString(ex), updatedOn, Convert.ToString(message.AbsenceId), "FAIL");
                //CommunicationContainer.Logger.LogError(ex, "Process", "EmailProcessor");
                //throw ex;
            }
            finally
            {
                protector = null;
            }
        }
Пример #21
0
Файл: User.cs Проект: litesz/WFw
 public User(string userName, string nickName, string pwd)
 {
     UserName = userName;
     NickName = nickName;
     Pwd      = EncryptProvider.GetMd5($"{ pwd}{PwdSalt}");
 }
Пример #22
0
 public DES_Test()
 {
     _Key = EncryptProvider.CreateDesKey();
     _IV  = EncryptProvider.CreateDesIv();
 }
Пример #23
0
        void OnLoggedOn(SteamUser.LoggedOnCallback callback)
        {
            var id = AccountIndex;

            if (callback.Result != EResult.OK)
            {
                if (callback.Result == EResult.AccountLogonDenied)
                {
                    // if we recieve AccountLogonDenied or one of it's flavors (AccountLogonDeniedNoMailSent, etc)
                    // then the account we're logging into is SteamGuard protected
                    // see sample 5 for how SteamGuard can be handled

                    Console.WriteLine("[Steam] Unable to logon to Steam: This account is SteamGuard protected." + "\n");

                    isRunning = false;
                    return;
                }

                Console.WriteLine("[Steam] Unable to logon to Steam: {0} / {1}" + "\n", callback.Result, callback.ExtendedResult);

                isRunning = false;
                return;
            }

            Console.WriteLine("[Steam] Successfully logged on!" + "\n");

            var data = new dataJson();
            var ID   = steamUser.SteamID;

            // at this point, we'd be able to perform actions on Steam
            if (File.Exists(appDataPath + @"\data.json"))
            {
                string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\SteamAccountGenerator";
                var    creds       = File.ReadAllText(appDataPath + @"\data.json").Split(Convert.ToChar(","));
                data = JsonConvert.DeserializeObject <dataJson>(EncryptProvider.AESDecrypt(creds[2], creds[0], creds[1]));
            }
            else
            {
                MessageBox.Show("Please set your settings\nthis menu will now close", "Error");
                steamUser.LogOff();
                steamClient.Disconnect();
                this.Close();
            }
            Console.WriteLine("[Steam] SteamID: " + ID.ToString() + "\n");
            Console.WriteLine("[Converted] SteamID Converted: " + ID.ConvertToUInt64() + "\n");
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.steampowered.com/ISteamUser/GetPlayerBans/v1/?key=" + data.key + "&steamids=" + ID.ConvertToUInt64());

            request.AutomaticDecompression = DecompressionMethods.GZip;
            try
            {
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                    using (Stream stream = response.GetResponseStream())
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            var html      = reader.ReadToEnd();
                            var responses = JObject.Parse(html);
                            Console.WriteLine("[Steam API] Results:\n   HTML: " + html + "\n   Response: " + responses.ToString() + "\n");
                            try
                            {
                                if ((string)responses["players"][0]["CommunityBanned"].ToString() != "False")
                                {
                                    Console.WriteLine("[BAN] Community banned\n   Returned: " + (string)responses["players"][0]["CommunityBanned"].ToString() + "\n");
                                    account_status.Text      = "BANNED";
                                    account_status.ForeColor = Color.Red;
                                }
                                else
                                {
                                    if (!importing)
                                    {
                                        if ((string)responses["players"][0]["VACBanned"].ToString() != "False")
                                        {
                                            Console.WriteLine("[BAN] VAC Banned\n   Returned: " + (string)responses["players"][0]["VACBanned"].ToString() + "\n");
                                            account_status.Text      = "BANNED";
                                            account_status.ForeColor = Color.Red;
                                        }
                                        else
                                        {
                                            if ((string)responses["players"][0]["NumberOfGameBans"].ToString() != "0")
                                            {
                                                Console.WriteLine("[BAN] Game Banned\n   Returned: " + (string)responses["players"][0]["NumberOfGameBans"].ToString() + "\n");
                                                account_status.Text      = "BANNED";
                                                account_status.ForeColor = Color.Red;
                                            }
                                            else
                                            {
                                                account_status.Text      = "Unbanned";
                                                account_status.ForeColor = Color.Green;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        var banned = false;
                                        if ((string)responses["players"][0]["VACBanned"].ToString() != "False")
                                        {
                                            Console.WriteLine("[BAN] VAC Banned\n   Returned: " + (string)responses["players"][0]["VACBanned"].ToString() + "\n");
                                            account_status.Text      = "BANNED";
                                            account_status.ForeColor = Color.Red;
                                            banned = true;
                                        }
                                        else
                                        {
                                            if ((string)responses["players"][0]["NumberOfGameBans"].ToString() != "0")
                                            {
                                                Console.WriteLine("[BAN] Game Banned\n   Returned: " + (string)responses["players"][0]["NumberOfGameBans"].ToString() + "\n");
                                                account_status.Text      = "BANNED";
                                                account_status.ForeColor = Color.Red;
                                                banned = true;
                                            }
                                            else
                                            {
                                                account_status.Text      = "Unbanned";
                                                account_status.ForeColor = Color.Green;
                                            }
                                        }
                                        if (banned)
                                        {
                                            Console.WriteLine("Listed banned account:\n   " + usernames[id] + ":" + passwords[id] + "\n");
                                            bannedAccs += "\n   " + usernames[id] + ":" + passwords[id];
                                        }
                                        else
                                        {
                                            Console.WriteLine("Listed unbanned account:\n   " + usernames[id] + ":" + passwords[id] + "\n");
                                            unbannedAccs += "\n   " + usernames[id] + ":" + passwords[id];
                                        }
                                    }
                                }
                            }
                            catch (Exception a)
                            {
                                var result = MessageBox.Show("Unexpected error caught\nDid you input the right API key?", "Incorrect API key");
                                if (result == DialogResult.OK)
                                {
                                    parent.ShowSettings();
                                    this.Close();
                                }
                            }
                            Console.WriteLine("[Form] Reenabling next and back buttons, Logging off steam..." + "\n");
                            account_back.BeginInvoke(new MethodInvoker(() =>
                            {
                                account_back.Enabled = true;
                            }));
                            account_next.BeginInvoke(new MethodInvoker(() =>
                            {
                                account_next.Enabled = true;
                            }));
                            steamUser.LogOff();
                        }
            }catch (Exception a)
            {
                if (a.Message == "The remote server returned an error: (403) Forbidden.")
                {
                    Console.WriteLine(a.Message);
                    var result = MessageBox.Show("Unexpected error caught\nDid you input the right API key?", "Incorrect API key");
                    if (result == DialogResult.OK)
                    {
                        parent.ShowSettings();
                        this.Close();
                    }
                }
                else
                {
                    Console.WriteLine("Error Caught, Please open a issue on github!\n" + a.Message);
                    MessageBox.Show(a.Message, "Error Caught");
                }
            }
        }
Пример #24
0
        public IActionResult RequestSigning(IFormFile officeFile, IFormFile certFile, [FromForm] string certPw, [FromForm] bool analyse)
        {
            //prepare ac (used for logging / error return as well)
            ApiActivity ac = new ApiActivity();

            ac.Operation       = ApiActivity.ApiOperation.RequestSigning;
            ac.ClientIPAddress = HttpContext.Connection.RemoteIpAddress.ToString();

            ac.StatusUrl   = GHelper.generateUrl(GHelper.UrlType.StatusUrl, ac, _httpctx);
            ac.DownloadUrl = GHelper.generateUrl(GHelper.UrlType.DownloadUrl, ac, _httpctx);


            if (officeFile != null && certFile != null)
            {
                ac.UserOfficeFilename = officeFile.FileName;
                ac.UserCertFilename   = certFile.FileName;
                ac.Message            = $"Starting request Signing with {officeFile.FileName} and cert file {certFile.FileName}...";

                _asvc.addUpdateApiActivity(ac);
                if (certPw != null)
                {
                    _l.Debug($"Provided cert PW = \"{certPw}\"");
                    // Read secrets
                    JObject secretsConfig   = JObject.Parse(System.IO.File.ReadAllText(@"secrets.json")); //secrets.json file not checked in. .gitignore
                    var     aesKey          = (string)secretsConfig["aesKey"];
                    var     encryptedCertPw = EncryptProvider.AESEncrypt(certPw, aesKey);
                    // save pw encrypted in DB
                    ac.EncCertPw = encryptedCertPw;
                }
                else
                {
                    _l.Debug($"No cert PW provided!");
                }

                //------- CHECKS

                //check for valid file extension
                string officeFileExt = Path.GetExtension(officeFile.FileName.ToLowerInvariant());
                if (!GHelper.fileHasAllowedExtension(GHelper.ExtensionType.OfficeFile, officeFileExt))
                {
                    ac.Status  = ApiActivity.ApiStatus.Error;
                    ac.Message = $"Office File extension {officeFileExt} not valid!";
                    _l.Error(ac.Message);
                    _asvc.addUpdateApiActivity(ac);
                    return(Content(ac.getWebresult()));
                }
                string certFileExt = Path.GetExtension(certFile.FileName.ToLowerInvariant());
                if (!GHelper.fileHasAllowedExtension(GHelper.ExtensionType.CertFile, certFileExt))
                {
                    ac.Status  = ApiActivity.ApiStatus.Error;
                    ac.Message = $"Certificate File extension {certFileExt} not valid!";
                    _l.Error(ac.Message);
                    _asvc.addUpdateApiActivity(ac);
                    return(Content(ac.getWebresult()));
                }

                // check magic number file types
                if (!(GHelper.fileHasValidFormat(GHelper.ExtensionType.OfficeFile, officeFile.OpenReadStream())))
                {
                    ac.Status  = ApiActivity.ApiStatus.Error;
                    ac.Message = $"Office File {officeFile.FileName} not a valid office file!";
                    _l.Error(ac.Message);
                    _asvc.addUpdateApiActivity(ac);
                    return(Content(ac.getWebresult()));
                }
                if (!(GHelper.fileHasValidFormat(GHelper.ExtensionType.CertFile, certFile.OpenReadStream())))
                {
                    ac.Status  = ApiActivity.ApiStatus.Error;
                    ac.Message = $"Cert File {certFile.FileName} not a valid cert file!";
                    _l.Error(ac.Message);
                    _asvc.addUpdateApiActivity(ac);
                    return(Content(ac.getWebresult()));
                }

                // check PW field
                int maxPwLength = Int32.Parse(_conf.GetSection("Security")["MaxCertPwLength"]);
                if (certPw != null && certPw.Length > maxPwLength)
                {
                    ac.Status  = ApiActivity.ApiStatus.Error;
                    ac.Message = $"Cert Pw exceeding max Length: {maxPwLength}!";
                    _l.Error(ac.Message);
                    _asvc.addUpdateApiActivity(ac);
                    return(Content(ac.getWebresult()));
                }

                // SAVE FILES
                //save office file with unique filename, not enumerable
                string uniFilenameOfficeFile    = GHelper.createUniqueFileName(officeFile.FileName);
                string systemFolderOfficeFile   = GHelper.getOfficeFilesSystemDir(_webHostEnv, _conf);
                string systemFileNameOfficeFile = Path.Combine(systemFolderOfficeFile, uniFilenameOfficeFile);
                ac.SystemOfficeFilename = systemFileNameOfficeFile;

                // create dir if not exist
                System.IO.Directory.CreateDirectory(systemFolderOfficeFile);
                _l.Debug($"Saving Office file to {systemFolderOfficeFile}");
                using (var fileStream = new FileStream(systemFileNameOfficeFile, FileMode.Create))
                {
                    officeFile.CopyTo(fileStream);
                }

                //save cert file with unique filename, not enumerable
                string uniFilenameCertFile    = GHelper.createUniqueFileName(certFile.FileName);
                string systemFolderCertFile   = GHelper.getCertFilesSystemDir(_webHostEnv, _conf);
                string systemFileNameCertFile = Path.Combine(systemFolderCertFile, uniFilenameCertFile);
                systemFileNameCertFile = systemFileNameCertFile.Replace('/', Path.DirectorySeparatorChar).Replace('\\', Path.DirectorySeparatorChar);
                ac.SystemCertFilename  = systemFileNameCertFile;

                // create dir if not exist
                System.IO.Directory.CreateDirectory(systemFolderCertFile);
                _l.Debug($"Saving cert file to {systemFileNameCertFile}");
                using (var fileStream = new FileStream(systemFileNameCertFile, FileMode.Create))
                {
                    certFile.CopyTo(fileStream);
                }

                if (analyse)
                {
                    // Queue foor ANALYSING
                    ac.Status  = ApiActivity.ApiStatus.QueuedAnalysis;
                    ac.Message = "File queued for analysis";
                    _asvc.addUpdateApiActivity(ac);
                    _l.Debug("Analysis requested, queuing for analysis...");
                }
                else
                {
                    // Queue for SIGNING
                    ac.Status  = ApiActivity.ApiStatus.QueuedSigning;
                    ac.Message = "File queued for signing";
                    _asvc.addUpdateApiActivity(ac);
                    _l.Debug("NO analysis requested, queuing for signing at once...");
                }


                // RETURN STATUS PAGE
                _l.Debug($"Returning Queued API Status for Key {ac.UniqueKey}");
                return(Content(ac.getWebresult()));
            }
            else
            {
                ac.Status  = ApiActivity.ApiStatus.Error;
                ac.Message = "Office File or Cert File not submitted. Both required for signing!";
                _l.Error(ac.Message);
                _asvc.addUpdateApiActivity(ac);
                return(Content(ac.getWebresult()));
            }
        }
Пример #25
0
 /// <summary>
 /// sha256 加密
 /// </summary>
 /// <param name="input">字符串</param>
 /// <returns></returns>
 public static string Sha256Encry(this string input)
 {
     return(EncryptProvider.Sha256(input));
 }
Пример #26
0
        public IActionResult RequestSigning(IFormFile officeFile, [FromForm] bool analyse, string profileName)
        {
            //prepare ac (used for logging / error return as well)
            ApiActivity ac = new ApiActivity();

            ac.Operation       = ApiActivity.ApiOperation.RequestSigning;
            ac.ClientIPAddress = HttpContext.Connection.RemoteIpAddress.ToString();
            ac.StatusUrl       = GHelper.generateUrl(GHelper.UrlType.StatusUrl, ac, _httpctx);
            ac.DownloadUrl     = GHelper.generateUrl(GHelper.UrlType.DownloadUrl, ac, _httpctx);

            if (officeFile == null)
            {
                ac.Status  = ApiActivity.ApiStatus.Error;
                ac.Message = "Office File not submitted. Required for signing!";
                _l.Error(ac.Message);
                _asvc.addUpdateApiActivity(ac);
                return(Content(ac.getWebresult()));
            }

            ac.UserOfficeFilename = officeFile.FileName;
            ac.Message            = $"Starting request Signing with {officeFile.FileName} and profile ID {profileName}...";

            //--- check if valid profile name was provided

            //check if secrets file present
            string secretFilename = "secrets.json";

            if (!System.IO.File.Exists(secretFilename))
            {
                ac.Status  = ApiActivity.ApiStatus.Error;
                ac.Message = "secrets file not found for reading profiles";
                _l.Error(ac.Message);
                _asvc.addUpdateApiActivity(ac);
                return(Content(ac.getWebresult()));
            }

            //read secrets config
            JObject jsonConfig = JObject.Parse(System.IO.File.ReadAllText(secretFilename));

            var profileCertFile = (string)jsonConfig["SigningProfiles"][profileName]["CertFile"];
            var profileCertPw   = (string)jsonConfig["SigningProfiles"][profileName]["CertPw"];

            if (profileCertFile == null || profileCertPw == null)
            {
                ac.Status  = ApiActivity.ApiStatus.Error;
                ac.Message = $"No certfile or certPW found for Profilename {profileName}";
                _l.Error(ac.Message);
                _asvc.addUpdateApiActivity(ac);
                return(Content(ac.getWebresult()));
            }
            ac.UserCertFilename = profileCertFile;


            //check if cert file from settings is really on filesystem
            var systemCertFileName = Path.Combine(GHelper.getCertFilesSystemDir(_webHostEnv, _conf), ac.UserCertFilename);

            if (!System.IO.File.Exists(systemCertFileName))
            {
                ac.Status  = ApiActivity.ApiStatus.Error;
                ac.Message = $"certfile {ac.SystemCertFilename} not found for Profilename {profileName}";
                _l.Error(ac.Message);
                _asvc.addUpdateApiActivity(ac);
                return(Content(ac.getWebresult()));
            }
            ac.SystemCertFilename = systemCertFileName;

            // Save certPW encyrpted in AC, to be decrypted by signer service later.
            // todo: better PW handling -> was already in cleartext in secrets file
            _l.Debug($"Provided cert PW = \"{profileCertPw}\"");
            // Read secrets
            JObject secretsConfig   = JObject.Parse(System.IO.File.ReadAllText(@"secrets.json")); //secrets.json file not checked in. .gitignore
            var     aesKey          = (string)secretsConfig["aesKey"];
            var     encryptedCertPw = EncryptProvider.AESEncrypt(profileCertPw, aesKey);

            // save pw encrypted in DB
            ac.EncCertPw = encryptedCertPw;


            //------- CHECKS

            //check for valid file extension
            string officeFileExt = Path.GetExtension(officeFile.FileName.ToLowerInvariant());

            if (!GHelper.fileHasAllowedExtension(GHelper.ExtensionType.OfficeFile, officeFileExt))
            {
                ac.Status  = ApiActivity.ApiStatus.Error;
                ac.Message = $"Office File extension {officeFileExt} not valid!";
                _l.Error(ac.Message);
                _asvc.addUpdateApiActivity(ac);
                return(Content(ac.getWebresult()));
            }

            // check magic number file types
            if (!(GHelper.fileHasValidFormat(GHelper.ExtensionType.OfficeFile, officeFile.OpenReadStream())))
            {
                ac.Status  = ApiActivity.ApiStatus.Error;
                ac.Message = $"Office File {officeFile.FileName} not a valid office file!";
                _l.Error(ac.Message);
                _asvc.addUpdateApiActivity(ac);
                return(Content(ac.getWebresult()));
            }


            // SAVE FILES
            //save office file with unique filename, not enumerable
            string uniFilenameOfficeFile    = GHelper.createUniqueFileName(officeFile.FileName);
            string systemFolderOfficeFile   = GHelper.getOfficeFilesSystemDir(_webHostEnv, _conf);
            string systemFileNameOfficeFile = Path.Combine(systemFolderOfficeFile, uniFilenameOfficeFile);


            // create dir if not exist
            System.IO.Directory.CreateDirectory(systemFolderOfficeFile);
            _l.Debug($"Saving Office file to {systemFolderOfficeFile}");
            using (var fileStream = new FileStream(systemFileNameOfficeFile, FileMode.Create))
            {
                officeFile.CopyTo(fileStream);
            }
            ac.SystemOfficeFilename = systemFileNameOfficeFile;

            if (analyse)
            {
                // Queue for ANALYSING
                ac.Status  = ApiActivity.ApiStatus.QueuedAnalysis;
                ac.Message = "File queued for analysis";
                _asvc.addUpdateApiActivity(ac);
                _l.Debug("Analysis requested, queuing for analysis...");
            }
            else
            {
                // Queue for SIGNING
                ac.Status  = ApiActivity.ApiStatus.QueuedSigning;
                ac.Message = "File queued for signing";
                _asvc.addUpdateApiActivity(ac);
                _l.Debug("NO analysis requested, queuing for signing at once...");
            }

            // RETURN STATUS
            _l.Debug($"Returning Queued API Status for Key {ac.UniqueKey}");
            return(Content(ac.getWebresult()));
        }
Пример #27
0
        public ActionResult Create(TenantModel tenantModel)
        {
            if (ModelState.IsValid)
            {
                var _tenantEntity = tenantModel.ToEntity();

                _tenantEntity.Active       = true;
                _tenantEntity.CreatedDate  = DateTime.Now;
                _tenantEntity.CreatedBy    = _userInfo.ID;
                _tenantEntity.ModifiedBy   = _userInfo.ID;
                _tenantEntity.ModifiedDate = DateTime.Now;
                _tenantEntity.DbName       = "MultiOrg_" + _tenantEntity.TenantNameAlias;
                try
                {
                    if (_tenantService.CheckAlias(_tenantEntity.TenantNameAlias))
                    {
                        // create directory folder tenant
                        _pathFiles = "/tenants/" + tenantModel.TenantNameAlias;
                        var _newPath = Server.MapPath(_pathFiles);
                        if (!Directory.Exists(_newPath))
                        {
                            Directory.CreateDirectory(_newPath);
                        }

                        // create file default
                        var _fileDefault     = "default.png";
                        var _sourceFile      = Path.Combine(Server.MapPath(_tempFiles), _fileDefault);
                        var _destinationFile = Path.Combine(Server.MapPath(_pathFiles), _fileDefault);
                        System.IO.File.Copy(_sourceFile, _destinationFile);

                        if (!string.IsNullOrEmpty(_logoModel.FileName))
                        {
                            _tenantEntity.CompanyLogo = _pathFiles + "/" + _logoModel.FileName;

                            //move a file from temps file to tenant folder
                            _sourceFile      = Path.Combine(Server.MapPath(_tempFiles), _logoModel.FileName);
                            _destinationFile = Path.Combine(Server.MapPath(_pathFiles), _logoModel.FileName);
                            if (System.IO.File.Exists(_destinationFile))
                            {
                                System.IO.File.Delete(_destinationFile);
                            }
                            System.IO.File.Move(_sourceFile, _destinationFile);

                            _logoModel = null;
                        }
                        else
                        {
                            _tenantEntity.CompanyLogo = _pathFiles + "/" + _fileDefault;
                        }

                        // insert new tenant
                        _tenantService.Insert(_tenantEntity);
                        _unitOfWork.SaveChanges();

                        // write log
                        _helper.InsertLogActive(_logService, _unitOfWork, "Tenants", "Insert new tenant", 1, true);
                        var result = new SqlQueryExcute().CreateDBByTenant(_tenantEntity.DbName, _tenantEntity.DbUsername, _tenantEntity.DbPassword);

                        // add new user
                        var _tenantId = _tenantService.GetTanentByAlias(_tenantEntity.TenantNameAlias).TenantId;
                        if (_tenantId > 0)
                        {
                            try
                            {
                                var _newUser = new crm_Users();
                                _newUser.Username = tenantModel.Username ?? _tenantEntity.DbUsername;

                                string encryptPassword = "";
                                string passwordSalt    = "";
                                passwordSalt    = EncryptProvider.GenerateSalt();
                                encryptPassword = EncryptProvider.EncryptPassword(tenantModel.Password, passwordSalt);

                                _newUser.PasswordSalt = passwordSalt;
                                _newUser.Password     = encryptPassword;

                                _newUser.TenantId      = _tenantId;
                                _newUser.CreatedDate   = DateTime.Now;
                                _newUser.Active        = true;
                                _newUser.Email         = tenantModel.ContactEmail ?? _tenantEntity.Email;
                                _newUser.DisplayName   = tenantModel.ContactName ?? _tenantEntity.TenantName;
                                _newUser.FullName      = tenantModel.ContactName ?? _tenantEntity.TenantName;
                                _newUser.FacebookURL   = _tenantEntity.FacebookURL;
                                _newUser.TwitterURL    = _tenantEntity.TwitterURL;
                                _newUser.GoogleplusURL = _tenantEntity.GoogleplusURL;
                                _newUser.LinkedURL     = _tenantEntity.LinkedURL;
                                _newUser.Image         = _tenantEntity.CompanyLogo;
                                _newUser.Phone         = tenantModel.ContactPhone;
                                _newUser.Mobile        = tenantModel.MobilePhone;
                                _userService.Insert(_newUser);
                                _unitOfWork.SaveChanges();

                                _helper.InsertLogActive(_logService, _unitOfWork, "Users", "Insert user tenant admin", 1, true);

                                // add tenant admin role
                                var _userId = _userService.GetUserByUsername(_newUser.Username).ID;
                                if (_userId > 0)
                                {
                                    try
                                    {
                                        // AssignedUserId
                                        var _ownTenantEntity = _tenantService.Find(_tenantId);
                                        _ownTenantEntity.AssignedUserId = _userId;
                                        _ownTenantEntity.ObjectState    = ObjectState.Modified;
                                        _tenantService.Update(_ownTenantEntity);
                                        _unitOfWork.SaveChanges();
                                        _helper.InsertLogActive(_logService, _unitOfWork, "Tenant", "Assigned user for tenant", 2, true);

                                        // create group role
                                        var _roleEntity = new crm_Roles();

                                        //Console.WriteLine(((WeekDays)1).ToString());

                                        // TenantAdmin = 512
                                        _roleEntity.RoleName       = UserGroupEnum.TenantAdmin.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.TenantAdmin + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.TenantAdmin;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        // add  Manager = 256
                                        _roleEntity                = new crm_Roles();
                                        _roleEntity.RoleName       = UserGroupEnum.Manager.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.Manager + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.Manager;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        // add  Support = 128
                                        _roleEntity                = new crm_Roles();
                                        _roleEntity.RoleName       = UserGroupEnum.Support.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.Support + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.Support;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        // Marketing=64
                                        _roleEntity                = new crm_Roles();
                                        _roleEntity.RoleName       = UserGroupEnum.Marketing.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.Marketing + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.Marketing;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        // Sales = 32
                                        _roleEntity                = new crm_Roles();
                                        _roleEntity.RoleName       = UserGroupEnum.Sales.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.Sales + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.Sales;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        //  NormalUser = 16
                                        _roleEntity                = new crm_Roles();
                                        _roleEntity.RoleName       = UserGroupEnum.NormalUser.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.NormalUser + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.NormalUser;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        // map role tenant admin
                                        var _newRole = new crm_UserRoles();
                                        _newRole.RoleID = _roleService.GetRoleIdByPermisstionType(_tenantId, (int)UserGroupEnum.TenantAdmin);
                                        _newRole.UserID = _userId;
                                        _userRoleService.Insert(_newRole);
                                        _unitOfWork.SaveChanges();
                                        _helper.InsertLogActive(_logService, _unitOfWork, "User Role", "Insert role tenant admin for user", 1, true);
                                    }
                                    catch
                                    {
                                        _helper.InsertLogActive(_logService, _unitOfWork, "User Role", "Insert role tenant admin for user", 1, false);
                                    }
                                }
                            }
                            catch
                            {
                                _helper.InsertLogActive(_logService, _unitOfWork, "Users", "Insert user tenant admin", 1, false);
                            }
                        }
                    }
                    MessageBoxModel.ShowMessage = "Add tenant " + _tenantEntity.TenantName + " success!";
                    return(RedirectToAction("Index"));
                }
                catch
                {
                    _helper.InsertLogActive(_logService, _unitOfWork, "Tenants", "Insert new tenant", 1, false);
                    return(View(tenantModel));
                }
            }

            return(View(tenantModel));
        }
Пример #28
0
 /// <summary>
 /// SHA512加密
 /// </summary>
 /// <param name="str">未加密字符串</param>
 /// <returns>已加密字符串</returns>
 public static string Sha512(string str)
 {
     return(EncryptProvider.Sha512(str));
 }
Пример #29
0
        static void Main(string[] args)
        {
            var aesKey = EncryptProvider.CreateAesKey();
            var key    = aesKey.Key;
            var iv     = aesKey.IV;

            /*
             * var _max = 10000;
             *
             * var s1 = Stopwatch.StartNew();
             *
             * for (int i = 0; i < _max; i++)
             * {
             *  aesKey = EncryptProvider.CreateAesKey();
             * }
             * s1.Stop();
             *
             * var s2 = Stopwatch.StartNew();
             * for (int i = 0; i < _max; i++)
             * {
             *  aesKey = EncryptProvider.CreateAesKey(false);
             * }
             * s2.Stop();
             *
             * Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns"));
             * Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns"));
             * Console.Read();
             */

            var plaintext = "Hello world 123456789/*-+!@#$%^&*()-=_+";
            var encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv);
            var decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv);

            Console.WriteLine("Plaintext to encrypt: " + plaintext);
            Console.WriteLine();

            Console.WriteLine("** AES SecureRandom **");
            Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted);
            Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted);
            //Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();
            Console.WriteLine("** AES SecureRandom with Byte input/output **");
            byte[] bencrypted = EncryptProvider.AESEncrypt(Encoding.UTF8.GetBytes(plaintext), key, iv);
            byte[] bdecrypted = EncryptProvider.AESDecrypt(bencrypted, key, iv);

            Console.WriteLine("Encrypted " + " (Length: " + bencrypted.Length + ") " + Encoding.UTF8.GetString(bencrypted));
            Console.WriteLine("Decrypted " + " (Length: " + bdecrypted.Length + ") " + Encoding.UTF8.GetString(bdecrypted));
            //Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();

            Console.WriteLine("** AES Non-SecureRandom **");

            aesKey = EncryptProvider.CreateAesKey(false);
            key    = aesKey.Key;
            iv     = aesKey.IV;

            encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv);
            decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv);
            Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted);
            Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted);
            //Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();
            Console.WriteLine("** RSA **");
            var rsaKey = EncryptProvider.CreateRsaKey();

            var publicKey  = rsaKey.PublicKey;
            var privateKey = rsaKey.PrivateKey;

            //var exponent = rsaKey.Exponent;
            //var modulus = rsaKey.Modulus;

            encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext);

            encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext, RSAEncryptionPadding.Pkcs1);
            decrypted = EncryptProvider.RSADecrypt(privateKey, encrypted, RSAEncryptionPadding.Pkcs1);


            Console.WriteLine("Encrypted: " + encrypted);
            Console.WriteLine("Decrypted: " + decrypted);
            //Console.WriteLine("publicKey: {0} privateKey: {1}", publicKey, privateKey);

            Console.WriteLine();
            Console.WriteLine("** SHA **");
            Console.WriteLine("SHA1: " + EncryptProvider.Sha1(plaintext));
            Console.WriteLine("SHA256: " + EncryptProvider.Sha256(plaintext));
            Console.WriteLine("SHA384: " + EncryptProvider.Sha384(plaintext));
            Console.WriteLine("SHA512: " + EncryptProvider.Sha512(plaintext));

            Console.ReadKey();
        }
Пример #30
0
        /// <summary>
        /// 根据关键字查询文章
        /// </summary>
        /// <param name="keyword">关键字</param>
        /// <param name="langId">语言id</param>
        /// <returns></returns>
        dynamic IArticle.SearchByKeyword(string keyword, int langId)
        {
            string key_id_md5 = EncryptProvider.Md5((keyword + langId), MD5Length.L16);

            //检查Redis是否有记录
            if (m_redis.HashExists("SearchByKeyword", key_id_md5))
            {
                return(m_redis.HashGet <dynamic>("SearchByKeyword", key_id_md5));
            }

            /*
             *  1.将相关数据查询
             *  2.匹配内容
             *  3.匹配度排序
             */
            IQueryable <TType> types   = m_iType.RetrieveArticleTypesByLangId(langId);
            string             partten = @"(?<=[??!!::。.\n]*)[^??!!::。.\n]*" + keyword + "[^??!!::。.\n]*.(?<=[??!!::。.\n]*)";
            //string partten = @"(?<=[。|?|!|:|.|?|!|:])*" + keyword + ".*?(?<=[。|?|!|:|.|?|!|:])";

            dynamic key_search = types.SelectMany(sm => m_db.TArticleLang
                                                  .Include(i => i.User)
                                                  .Include(i => i.Type)
                                                  .Include(i => i.THelpful)
                                                  .Where(
                                                      L =>
                                                      sm.TypeId == L.TypeId && (
                                                          L.Title.Contains(keyword) ||
                                                          L.Content.Contains(keyword)
                                                          )
                                                      )
                                                  .Select(s => new
            {
                s.ArticleLangId,
                s.Title,
                s.Commentable,
                s.Flag,
                s.ArticleId,
                s.UpdateTime,
                s.CreateTime,
                Type = new
                {
                    s.Type.TypeId,
                    s.Type.Name,
                    s.Type.Description,
                    s.Type.Parent
                },
                User = new
                {
                    s.User.UserId,
                    s.User.UserName,
                    s.User.Photo
                },
                Content      = Regex.Match(s.Content, partten).Value,
                CommentCount = m_db.TComment.Where(w => w.ArticleLangId == s.ArticleLangId).Count(),
                Helpful      = s.THelpful.Where(w => w.ArticleLangId == s.ArticleLangId && w.Helpful == 1).Count(),
            }))
                                 .OrderByDescending(ob => Regex.Matches(ob.Title, keyword).Count + Regex.Matches(ob.Content, keyword).Count)
                                 .ToList();

            // Regex.Matches(s.Content, keyword)
            //                                     .OrderByDescending(ob => Regex.Matches(ob.Value, keyword).Count)
            //                                     .FirstOrDefault().Value

            //记录搜索结果到Redis
            m_redis.HashSet("SearchByKeyword", key_id_md5, key_search, TimeSpan.FromMinutes(30));

            return(JArray.FromObject(key_search));
        }