Exemple #1
0
        public async Task <ActionResult> GetAuth([FromRoute] string type, [FromQuery] GetAuthRequest request)
        {
            var oAuthType   = OAuthType.Parse(type);
            var host        = ApiUtils.GetHost(Request);
            var redirectUrl = request.RedirectUrl;

            if (string.IsNullOrEmpty(redirectUrl))
            {
                redirectUrl = ApiUtils.GetHomeUrl();
            }

            var url = string.Empty;

            if (oAuthType == OAuthType.Weixin)
            {
                var settings = await _loginManager.GetWeixinSettingsAsync();

                var client = new WeixinClient(settings.WeixinAppId, settings.WeixinAppSecret, host, redirectUrl);
                url = client.GetAuthorizationUrl();
            }
            else if (oAuthType == OAuthType.Qq)
            {
                var settings = await _loginManager.GetQqSettingsAsync();

                var client = new QqClient(settings.QqAppId, settings.QqAppKey, host, redirectUrl);
                url = client.GetAuthorizationUrl();
            }
            else if (oAuthType == OAuthType.Weibo)
            {
                var settings = await _loginManager.GetWeiboSettingsAsync();

                var client = new WeiboClient(settings.WeiboAppKey, settings.WeiboAppSecret, host, redirectUrl);
                url = client.GetAuthorizationUrl();
            }

            if (!string.IsNullOrEmpty(url))
            {
                return(Redirect(url));
            }

            return(this.Error("类型不正确"));
        }
Exemple #2
0
        public async Task <ResultData> DeleteDataBaseInfo(List <DataBaseInfo> infos, string type)
        {
            //获取配置文件信息
            ConfigInfo configInfo = _dbContext.Queryable <ConfigInfo>().Where(x => x.ConfigName == "PublicDataAdapters.json" && x.CategoryType == type).First();

            if (configInfo == null)
            {
                return(ResultData.CreateResult("-1", "配置文件不存在", null));
            }

            string localPath = ApiUtils.GetLocalPath(_dbContext, configInfo.Guid, out string errorMessage);

            if (!string.IsNullOrEmpty(errorMessage))
            {
                return(ResultData.CreateResult("-1", errorMessage, null));
            }

            List <PublicDataAdapters> datainfos;

            using (StreamReader reader = new StreamReader(localPath))
            {
                string json = await reader.ReadToEndAsync();

                datainfos = JsonConvert.DeserializeObject <List <PublicDataAdapters> >(json);
            }

            string[] dataAdapterAlias = infos.Select(x => x.AccountSetNumber).ToArray();

            List <PublicDataAdapters> deleteData = datainfos.Where(x => dataAdapterAlias.Contains(x.DataAdapterAlias)).ToList();

            foreach (var item in deleteData)
            {
                datainfos.Remove(item);
            }

            using (StreamWriter writer = new StreamWriter(localPath, false, Encoding.UTF8))
            {
                await writer.WriteAsync(ApiUtils.ConvertJsonString(JsonConvert.SerializeObject(datainfos)));
            }

            return(ResultData.CreateSuccessResult());
        }
Exemple #3
0
        public async Task <ResultData> UpdateUserPassword([FromBody] UpdateUserPasswordRequest request)
        {
            UserInfo userInfo = HttpContext.Session.GetData <UserInfo>("user");

            if (userInfo.Password != ApiUtils.MD5Encode(request.OldPassword, "32"))
            {
                return(ResultData.CreateResult("-1", "旧密码不正确", null));
            }
            userInfo.Password = ApiUtils.MD5Encode(request.NewPassword, "32");

            if (await _dbContext.Updateable(userInfo).ExecuteCommandAsync() > 0)
            {
                HttpContext.Session.SetData("user", userInfo);
                return(ResultData.CreateSuccessResult());
            }
            else
            {
                return(ResultData.CreateResult("-1", "更新失败", null));
            }
        }
Exemple #4
0
        public async Task <List <DailyCommentModel> > GetComment(string id)
        {
            var comments = new List <DailyCommentModel>();

            try
            {
                var longs = JsonConvert.DeserializeObject <Comments>(
                    await WebClientUtils.Instance.GetAsync(ApiUtils.GetDailyCommentLong(id)));
                comments.AddRange(longs.comments);

                var shorts = JsonConvert.DeserializeObject <Comments>(
                    await WebClientUtils.Instance.GetAsync(ApiUtils.GetDailyCommentShort(id)));
                comments.AddRange(shorts.comments);
                return(comments);
            }
            catch
            {
                return(comments);
            }
        }
Exemple #5
0
        private void btnLogin_Click(object sender, RoutedEventArgs e)
        {
            e.Handled = true;
            if (!vmLogin.IsValid)
            {
                MessageWindow.ShowMsg(MessageType.Warning, OperationDesc.Validate, vmLogin.Error);
                return;
            }
            if (!vmLogin.CheckVerifyCode())
            {
                MessageWindow.ShowMsg(MessageType.Warning, OperationDesc.Validate, "验证码错误");
                return;
            }
            //登录
            var url = ApiUtils.GetApiUrl(ApiKeys.Login);
            var rst = HttpUtils.PostResult(url, new { username = vmLogin.logindata.username, pwd = vmLogin.logindata.pwd });

            if (rst.code != ResultCode.Success)
            {
                MessageWindow.ShowMsg(MessageType.Warning, OperationDesc.Login, rst.msg);
                return;
            }
            //登录成功,记录token
            ClientContext.Token = rst.data.token;
            //获取用户信息
            rst = HttpUtils.PostResult(ApiUtils.GetApiUrl(ApiKeys.GetUsr), new { pk = rst.data.usrid }, ClientContext.Token);
            if (rst.code != ResultCode.Success)
            {
                MessageWindow.ShowMsg(MessageType.Warning, OperationDesc.GetUsr, rst.msg);
                return;
            }
            var user = JsonConvert.DeserializeObject <User>(((JObject)rst.data).ToString());

            ClientContext.CurrentUser = new UserVM();
            OOMapper.Map(typeof(User), typeof(UserVM), user, ClientContext.CurrentUser);
            //记住我?
            RememberMe();

            new MainWindow().Show();
            this.Close();
        }
        internal PrivilegedFileStream(string path, FileAccess fileAccess, FileShare share, FileMode mode)
        {
            Access access = 0;

            if (fileAccess.HasFlag(FileAccess.Read))
            {
                access |= Access.GenericRead;
                canRead = true;
            }
            if (fileAccess.HasFlag(FileAccess.Write))
            {
                access  |= Access.GenericWrite;
                canWrite = true;
            }

            fileHandle = CreateFile(path, access, share, IntPtr.Zero, mode, FileFlags.Normal | FileFlags.BackupSemantics, IntPtr.Zero);
            if (fileHandle.DangerousGetHandle() == INVALID_HANDLE_VALUE)
            {
                throw new IOException("Cannot open PrivilegedFileStream : " + ApiUtils.LastError());
            }
        }
Exemple #7
0
        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            var rst = HttpUtils.GetResult(ApiUtils.GetApiUrl(PartyBuildingApiKeys.AreaGet, PartyBuildingApiKeys.Key_ApiProvider_Party));

            if (rst.code != ResultCode.Success)
            {
                MessageWindow.ShowMsg(MessageType.Error, OperationDesc.Search, rst.msg);
                return;
            }
            if (rst.data != null && rst.data.infos != null)
            {
                allActPlaces = JsonConvert.DeserializeObject <IEnumerable <PartyActAreaModel> >(((JArray)rst.data.infos).ToString());
            }

            InitTotal();

            InitColChart();

            radioTown.Command.Execute("town");
            radioTown.IsChecked = true;
        }
Exemple #8
0
        private void GetDbFieldsAction(object parameter)
        {
            if (Tables.IsEmpty())
            {
                MessageWindow.ShowMsg(MessageType.Error, OperationDesc.Cq_GetDbFields, "未定义查询表!");
                return;
            }
            var url = ApiUtils.GetApiUrl(ApiKeys.Cq_FieldDbFields);
            var rst = HttpUtils.PostResult(url, Tables.Select(t => t.id), ClientContext.Token);

            if (rst.code != ResultCode.Success)
            {
                MessageWindow.ShowMsg(MessageType.Error, OperationDesc.Cq_GetDbFields, rst.msg);
                return;
            }
            if (rst.data != null && rst.data.rows != null)
            {
                var fields = JsonConvert.DeserializeObject <IEnumerable <FieldViewModel> >(((JArray)rst.data.rows).ToString());
                base.Models = ((IEnumerable <CheckableModel>)fields).ToList();//
            }
        }
Exemple #9
0
        public async Task <ActionResult <StringResult> > Submit([FromBody] WeixinSettings request)
        {
            if (!await _authManager.HasAppPermissionsAsync(LoginManager.PermissionsLoginWeixin))
            {
                return(Unauthorized());
            }

            await _loginManager.SetWeixinSettingsAsync(request);

            var url = string.Empty;

            if (request.IsWeixin)
            {
                url = ApiUtils.GetAuthUrl(OAuthType.Weixin, ApiUtils.GetHomeUrl());
            }

            return(new StringResult
            {
                Value = url
            });
        }
Exemple #10
0
        private void SaveAction(object parameter)
        {
            if (!this.IsValid)
            {
                MessageWindow.ShowMsg(MessageType.Warning, OperationDesc.Validate, this.Error);
                return;
            }
            var url = ApiUtils.GetApiUrl(this.IsNew ? ApiKeys.AddUsr : ApiKeys.EditUsr);
            var rst = HttpUtils.PostResult(url, this.userdata, ClientContext.Token);

            if (rst.code != ResultCode.Success)
            {
                MessageWindow.ShowMsg(MessageType.Error, this.IsNew ? OperationDesc.Add : OperationDesc.Edit, rst.msg);
                return;
            }
            MessageWindow.ShowMsg(MessageType.Info, this.IsNew ? OperationDesc.Add : OperationDesc.Edit, MsgConst.Msg_Succeed);
            if (Window != null)
            {
                Window.DialogResult = true;
                Window.CloseCmd.Execute(null);
            }
        }
        public async Task <ResultData> UpdateRedisApi()
        {
            using StreamReader bodyReader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8);
            var data = await bodyReader.ReadToEndAsync();

            JObject jObject = JObject.Parse(data);

            List <string> localPath = ApiUtils.GetLocalPathByFileName(_dbContext, "Redis.json", out string errorMessage);

            if (!string.IsNullOrEmpty(errorMessage))
            {
                return(ResultData.CreateResult("-1", errorMessage, null));
            }

            List <RedisInfo> info;

            using (StreamReader reader = new StreamReader(localPath[0]))
            {
                string json = await reader.ReadToEndAsync();

                info = JsonConvert.DeserializeObject <List <RedisInfo> >(json);
                info[0].ServiceName     = jObject["ServiceName"].ToString();
                info[0].Servers[0].IP   = jObject["IP"].ToString();
                info[0].Servers[0].Port = jObject["Port"].ToString().ToInt32();
                info[0].Address         = jObject["Address"].ToString();
                info[0].InstanceName    = jObject["InstanceName"].ToString();
                info[0].Password        = jObject["Password"].ToString();
            }

            foreach (var item in localPath)
            {
                using (StreamWriter writer = new StreamWriter(item, false, Encoding.UTF8))
                {
                    await writer.WriteAsync(ApiUtils.ConvertJsonString(JsonConvert.SerializeObject(info)));
                }
            }

            return(ResultData.CreateSuccessResult());
        }
Exemple #12
0
        public async Task <ActionResult <GetResult> > Get()
        {
            if (!await _authManager.HasAppPermissionsAsync(LoginManager.PermissionsLoginWeibo))
            {
                return(Unauthorized());
            }

            var settings = await _loginManager.GetWeiboSettingsAsync();

            var url = string.Empty;

            if (settings.IsWeibo)
            {
                url = ApiUtils.GetAuthUrl(OAuthType.Weibo, ApiUtils.GetHomeUrl());
            }

            return(new GetResult
            {
                Settings = settings,
                Url = url
            });
        }
Exemple #13
0
        internal void DownloadProfile()
        {
            var syncInformation = GetSyncInformation();

            ApiUtils.GetSeBackupPrivilege();
            ApiUtils.GetSeRestorePrivilege();

            switch (syncInformation.Status)
            {
            case SyncInformation.SyncStatus.DoesNotExist:
                SaveSyncInformation(SyncInformation.SyncStatus.LoggedOn);
                break;

            case SyncInformation.SyncStatus.LoggedOn:
            case SyncInformation.SyncStatus.Uploading:
                if (syncInformation.LastHost == Environment.MachineName && ProfileExists(new SecurityIdentifier(syncInformation.SidInLastHost)))
                {
                    SaveSyncInformation(SyncInformation.SyncStatus.LoggedOn);
                    ApiUtils.SetOwner(localProfile.Path, username);
                    ApiUtils.ResetUserRegistryPermission(username, localProfile.Path);
                    break;
                }
                else
                {
                    throw new UserNotLoggedOutException(syncInformation.LastHost);
                }

            case SyncInformation.SyncStatus.LoggedOut:
                SyncDirectory(remoteProfile, localProfile);
                ApiUtils.SetOwner(localProfile.Path, username);
                ApiUtils.ResetUserRegistryPermission(username, localProfile.Path);
                SaveSyncInformation(SyncInformation.SyncStatus.LoggedOn);
                break;

            default:
                throw new Exception("Unhandled status : " + syncInformation.Status.ToString());
            }
        }
 public async Task <DailysModelTotal> GetServiceDailys(string date = null)
 {
     try
     {
         var dailys = JsonConvert.DeserializeObject <DailysModelTotal>(
             await WebClientUtils.Instance.GetAsync(
                 date == null ? ApiUtils.GetDailyLatest() :
                 ApiUtils.GetDailyBefore(date)));
         foreach (var item in dailys.Stories)
         {
             try
             {
                 var extra = JsonConvert.DeserializeObject <DailyExtraModel>(
                     await WebClientUtils.Instance.GetAsync(ApiUtils.GetDailyExtra(item.Id.ToString())));
                 item.extra = extra;
             }
             catch
             {
                 return(null);
             }
         }
         if (date == null)
         {
             await Task.Run(() =>
             {
                 SQLiteUtils.Instance.DeleteAllDailys();
                 SQLiteUtils.Instance.UpdateAllDailys(dailys.Stories);
                 SQLiteUtils.Instance.DeleteAllTopDailys();
                 SQLiteUtils.Instance.UpdateAllTopDailys(dailys.Top_stories);
             });
         }
         return(dailys);
     }
     catch
     {
         return(null);
     }
 }
Exemple #15
0
        protected override void DelAction(object param)
        {
            IEnumerable <CheckableModel> items = null;

            if (!base.BeforeDelete(out items))
            {
                return;
            }
            var ids = items.Select(m => ((TableViewModel)m).id);
            var rst = HttpUtils.PostResult(ApiUtils.GetApiUrl(ApiKeys.Cq_TableDel),
                                           new
            {
                pks = ids.ToArray()
            }, ClientContext.Token);

            if (rst.code != ResultCode.Success)
            {
                MessageWindow.ShowMsg(MessageType.Error, OperationDesc.Delete, rst.msg);
                return;
            }
            MessageWindow.ShowMsg(MessageType.Info, OperationDesc.Delete, MsgConst.Msg_Succeed);
            base.SearchCmd.Execute(null);
        }
Exemple #16
0
        protected override void DelAction(object parameter)
        {
            IEnumerable <CheckableModel> items = null;

            if (!base.BeforeDelete(out items))
            {
                return;
            }
            var ids = items.Select(m => ((PermDetailViewModel)m).permdata.per_id);
            var rst = HttpUtils.PostResult(ApiUtils.GetApiUrl(ApiKeys.MultiDeletePer),
                                           new
            {
                pks = ids.ToArray()
            }, ClientContext.Token);

            if (rst.code != ResultCode.Success)
            {
                MessageWindow.ShowMsg(MessageType.Error, OperationDesc.Delete, rst.msg);
                return;
            }
            MessageWindow.ShowMsg(MessageType.Info, OperationDesc.Delete, MsgConst.Msg_Succeed);
            //清除垃圾缓存
            var funcCodes = items.Where(m => ((PermDetailViewModel)m).permdata.per_type == PermType.Func.ToString())
                            .Select(m => ((PermDetailViewModel)m).permdata.per_code);

            if (funcCodes != null && funcCodes.Count() > 0 && DataCacheUtils.AllFuncs.Count > 0)
            {
                foreach (var code in funcCodes)
                {
                    if (DataCacheUtils.AllFuncs.ContainsKey(code))
                    {
                        DataCacheUtils.AllFuncs.Remove(code);
                    }
                }
            }
            base.SearchCmd.Execute(null);
        }
        public IActionResult CreateToken([FromForm] UserOAuthRequest userAuthRequest)
        {
            if (userAuthRequest == null)
            {
                BadRequest();
            }
            var api = Api.INSTANCE;

            using (var da = api.DAFactory.Get())
            {
                var user = da.Users.GetByUsername(userAuthRequest.username);
                if (user == null || user.is_banned)
                {
                    return(ApiResponse.Json(System.Net.HttpStatusCode.Unauthorized, new UserOAuthError("unauthorized_client", "user_credentials_invalid")));
                }
                var ip                = ApiUtils.GetIP(Request);
                var hashSettings      = da.Users.GetAuthenticationSettings(user.user_id);
                var isPasswordCorrect = PasswordHasher.Verify(userAuthRequest.password, new PasswordHash
                {
                    data   = hashSettings.data,
                    scheme = hashSettings.scheme_class
                });
                //check if account is locked due to failed attempts
                var accLock = da.Users.GetRemainingAuth(user.user_id, ip);
                if (accLock != null && (accLock.active || accLock.count >= AuthLoginController.LockAttempts) && accLock.expire_time > Epoch.Now)
                {
                    return(ApiResponse.Json(System.Net.HttpStatusCode.OK, new UserOAuthError("unauthorized_client", "account_locked")));
                }
                //if the password is incorrect and check if user failed muli times and set a time out till next try.
                if (!isPasswordCorrect)
                {
                    var durations = AuthLoginController.LockDuration;
                    var failDelay = 60 * durations[Math.Min(durations.Length - 1, da.Users.FailedConsecutive(user.user_id, ip))];
                    if (accLock == null)
                    {
                        da.Users.NewFailedAuth(user.user_id, ip, (uint)failDelay);
                    }
                    else
                    {
                        var remaining = da.Users.FailedAuth(accLock.attempt_id, (uint)failDelay, AuthLoginController.LockAttempts);
                    }
                    return(ApiResponse.Json(System.Net.HttpStatusCode.OK, new UserOAuthError("unauthorized_client", "user_credentials_invalid")));
                }

                //user passed the password check, and now creates the claim/token
                da.Users.SuccessfulAuth(user.user_id, ip);
                var claims = new List <string>();

                //set the permission level in the claim
                switch (userAuthRequest.permission_level)
                {
                case 1:
                    claims.Add("userReadPermissions");
                    break;

                case 2:
                    claims.Add("userReadPermissions");
                    claims.Add("userWritePermissions");
                    break;

                case 3:
                    claims.Add("userReadPermissions");
                    claims.Add("userWritePermissions");
                    claims.Add("userUpdatePermissions");
                    break;

                case 4:
                    claims.Add("userReadPermissions");
                    claims.Add("userWritePermissions");
                    claims.Add("userUpdatePermissions");
                    claims.Add("userDeletePermissions");
                    break;

                default:
                    break;
                }

                //set the user identity
                JWTUser identity = new JWTUser
                {
                    UserID   = user.user_id,
                    UserName = user.username,
                    Claims   = claims
                };

                //generate the the tokenen and send it in a JSON format as response
                var generatedToken = api.JWT.CreateToken(identity);
                return(ApiResponse.Json(System.Net.HttpStatusCode.OK, new UserOAuthSuccess
                {
                    access_token = generatedToken.Token,
                    expires_in = generatedToken.ExpiresIn
                }));
            }
        }
Exemple #18
0
        public async Task GetServiceDailys(string date = null)
        {
            try
            {
                var dailys = JsonConvert.DeserializeObject <DailysModel>(await OkHttpUtils.Instance.GetAsyn(date == null ? ApiUtils.GetDailyLatest() : ApiUtils.GetDailyBefore(date)));

                foreach (var item in dailys.Stories)
                {
                    try
                    {
                        await Task.Run(async() =>
                        {
                            var extra = JsonConvert.DeserializeObject <DailyExtraModel>(await OkHttpUtils.Instance.GetAsyn(ApiUtils.GetDailyExtra(item.Id.ToString())));

                            item.extra = extra;
                        });
                    }
                    catch
                    {
                    }
                }
                dailysView.GetServiceDailysSuccess(dailys.Date, dailys.Stories);
                if (date == null)
                {
                    dailysView.GetServiceTopDailysSuccess(dailys.Top_stories);

                    await SQLiteUtils.Instance().DeleteAllDailys();

                    await SQLiteUtils.Instance().UpdateAllDailys(dailys.Stories);

                    await SQLiteUtils.Instance().DeleteAllTopDailys();

                    await SQLiteUtils.Instance().UpdateAllTopDailys(dailys.Top_stories);
                }
            }
            catch (Exception ex)
            {
                dailysView.GetServiceDailysFail(ex.Message);
            }
        }
        // POST: api/OrderCancel
        public OrderCancelResponseModel Post([FromBody] OrderCancelRequestModel model, string customerId)
        {
            if (customerId == "CH1")
            {
                customerId = "CH";
            }
            OrderCancelResponseModel response = new OrderCancelResponseModel();

            using (DBContainer context = new DBContainer())
            {
                QiMen_RequestLog log  = new QiMen_RequestLog();
                HttpContextBase  ctx  = (HttpContextBase)Request.Properties["MS_HttpContext"];
                string           body = ApiUtils.GetStreamAsString(ctx.Request.InputStream, new UTF8Encoding(false));
                string           ip   = ctx.Request.UserHostAddress;

                log.Interface   = "OrderCancel";
                log.Url         = Request.RequestUri.AbsoluteUri;
                log.Ip          = ip;
                log.CustomerId  = customerId;
                log.RequestBody = body;
                context.QiMen_RequestLog.Add(log);
                context.SaveChanges();
            }

            using (SCVDBContainer dbContext = new SCVDBContainer())
            {
                //DbSet<RECEIPT_HEADER> dbSet0 = dbContext.Set<RECEIPT_HEADER>();
                //DbSet<SHIPMENT_HEADER> dbSet1 = dbContext.Set<SHIPMENT_HEADER>();

                RECEIPT_HEADER  rHeader = dbContext.RECEIPT_HEADER.FirstOrDefault(r => r.RECEIPT_ID == model.OrderCode && r.COMPANY == customerId);
                SHIPMENT_HEADER sHeader = dbContext.SHIPMENT_HEADER.FirstOrDefault(r => r.SHIPMENT_ID == model.OrderCode && r.COMPANY == customerId);

                if (sHeader != null)
                {
                    if (sHeader.TRAILING_STS >= 750)
                    {
                        response.Flag    = "failure";
                        response.Code    = "-1";
                        response.Message = model.OrderCode + ":当前状态不允许取消";
                        return(response);
                    }

                    if (sHeader.PROCESS_TYPE.Equals("CANCEL", StringComparison.OrdinalIgnoreCase))
                    {
                        response.Flag    = "success";
                        response.Code    = "0";
                        response.Message = model.OrderCode + ":该订单已经取消";
                        return(response);
                    }
                    else
                    {
                        sHeader.PROCESS_TYPE       = "CANCEL";
                        sHeader.SHIPMENT_CATEGORY6 = "Cancel";
                    }
                }
                else if (rHeader != null)
                {
                    //response.Flag = "failure";
                    //response.Code = "-1";
                    //response.Message = model.OrderCode + ":入库单取消,请联系商务";
                    //return response;
                    if (rHeader.LEADING_STS == 100 && rHeader.TRAILING_STS == 100)
                    {
                        rHeader.LEADING_STS  = 900;
                        rHeader.TRAILING_STS = 900;
                        rHeader.USER_DEF8    = "Cancel";
                        //rHeader.CLOSE_DATE = DateTime.Now.AddHours(-4);
                    }
                    else
                    {
                        response.Flag    = "failure";
                        response.Code    = "-1";
                        response.Message = model.OrderCode + "已收货不允许取消";
                        return(response);
                    }
                }

                if (dbContext.SaveChanges() >= 0)
                {
                    response.Flag    = "success";
                    response.Code    = "0";
                    response.Message = model.OrderCode + ":取消成功";
                }
                else
                {
                    response.Flag    = "failure";
                    response.Code    = "-1";
                    response.Message = model.OrderCode + ":取消失败";
                }
            }

            return(response);
        }
        public HttpResponseMessage Post(HttpRequestMessage request, [FromBody] RegistrationModel user)
        {
            var api = Api.INSTANCE;
            var ip  = ApiUtils.GetIP(Request);

            user.username = user.username ?? "";
            user.username = user.username.ToLowerInvariant();
            user.email    = user.email ?? "";
            user.key      = user.key ?? "";

            string failReason = null;

            if (user.username.Length < 3)
            {
                failReason = "user_short";
            }
            else if (user.username.Length > 24)
            {
                failReason = "user_long";
            }
            else if (!USERNAME_VALIDATION.IsMatch(user.username ?? ""))
            {
                failReason = "user_invalid";
            }
            else if ((user.password?.Length ?? 0) == 0)
            {
                failReason = "pass_required";
            }

            if (failReason != null)
            {
                return(ApiResponse.Json(HttpStatusCode.OK, new RegistrationError()
                {
                    error = "bad_request",
                    error_description = failReason
                }));
            }

            bool isAdmin = false;

            if (!string.IsNullOrEmpty(api.Config.Regkey) && api.Config.Regkey != user.key)
            {
                return(ApiResponse.Json(HttpStatusCode.OK, new RegistrationError()
                {
                    error = "key_wrong",
                    error_description = failReason
                }));
            }

            var passhash = PasswordHasher.Hash(user.password);

            using (var da = api.DAFactory.Get())
            {
                //has this ip been banned?
                var ban = da.Bans.GetByIP(ip);
                if (ban != null)
                {
                    return(ApiResponse.Json(HttpStatusCode.OK, new RegistrationError()
                    {
                        error = "registration_failed",
                        error_description = "ip_banned"
                    }));
                }

                //has this user registered a new account too soon after their last?
                var now  = Epoch.Now;
                var prev = da.Users.GetByRegisterIP(ip);
                if (now - (prev.FirstOrDefault()?.register_date ?? 0) < REGISTER_THROTTLE_SECS)
                {
                    //cannot create a new account this soon.
                    return(ApiResponse.Json(HttpStatusCode.OK, new RegistrationError()
                    {
                        error = "registration_failed",
                        error_description = "registrations_too_frequent"
                    }));
                }

                //TODO: is this ip banned?

                var userModel = new User();
                userModel.username      = user.username;
                userModel.email         = user.email;
                userModel.is_admin      = isAdmin;
                userModel.is_moderator  = isAdmin;
                userModel.user_state    = UserState.valid;
                userModel.register_date = now;
                userModel.is_banned     = false;
                userModel.register_ip   = ip;
                userModel.last_ip       = ip;

                var authSettings = new UserAuthenticate();
                authSettings.scheme_class = passhash.scheme;
                authSettings.data         = passhash.data;

                try
                {
                    var userId = da.Users.Create(userModel);
                    authSettings.user_id = userId;
                    da.Users.CreateAuth(authSettings);

                    userModel = da.Users.GetById(userId);
                    if (userModel == null)
                    {
                        throw new Exception("Unable to find user");
                    }
                    return(ApiResponse.Json(HttpStatusCode.OK, userModel));
                }
                catch (Exception)
                {
                    return(ApiResponse.Json(HttpStatusCode.OK, new RegistrationError()
                    {
                        error = "registration_failed",
                        error_description = "user_exists"
                    }));
                }
            }
        }
 public void WriteTo(ByteBuffer buffer)
 {
     buffer.PutInt(this.Id);
     ApiUtils.WriteShortString(buffer, this.Host);
     buffer.PutInt(this.Port);
 }
        public async Task GetServiceArticle(int slug)
        {
            try
            {
                var article = JsonConvert.DeserializeObject <ArticleModel>(await OkHttpUtils.Instance.GetAsyn(ApiUtils.GetArticle(slug)));
                article.UpdateTime = DateTime.Now;
                await SQLiteUtils.Instance().UpdateArticle(article);

                articleView.GetServiceArticleSuccess(article);
            }
            catch (Exception ex)
            {
                articleView.GetArticleFail(ex.Message);
            }
        }
Exemple #23
0
        public static TEntity GetDetails(Int64 id, ParaCredentials creds)
        {
            var entity = ApiUtils.ApiGetEntity <TEntity>(creds, id);

            return(entity);
        }
        public HttpResponseMessage CreateUser(RegistrationModel user)
        {
            var api = Api.INSTANCE;

            if (api.Config.SmtpEnabled)
            {
                return(ApiResponse.Json(HttpStatusCode.OK, new RegistrationError()
                {
                    error = "registration_failed",
                    error_description = "missing_confirmation_token"
                }));
            }

            var ip = ApiUtils.GetIP(Request);

            user.username = user.username ?? "";
            user.username = user.username.ToLowerInvariant();
            user.email    = user.email ?? "";
            user.key      = user.key ?? "";

            string failReason = null;

            if (user.username.Length < 3)
            {
                failReason = "user_short";
            }
            else if (user.username.Length > 24)
            {
                failReason = "user_long";
            }
            else if (!USERNAME_VALIDATION.IsMatch(user.username ?? ""))
            {
                failReason = "user_invalid";
            }
            else if ((user.password?.Length ?? 0) == 0)
            {
                failReason = "pass_required";
            }

            try
            {
                var addr = new System.Net.Mail.MailAddress(user.email);
            }
            catch
            {
                failReason = "email_invalid";
            }

            if (failReason != null)
            {
                return(ApiResponse.Json(HttpStatusCode.OK, new RegistrationError()
                {
                    error = "bad_request",
                    error_description = failReason
                }));
            }

            if (!string.IsNullOrEmpty(api.Config.Regkey) && api.Config.Regkey != user.key)
            {
                return(ApiResponse.Json(HttpStatusCode.OK, new RegistrationError()
                {
                    error = "key_wrong",
                    error_description = failReason
                }));
            }

            using (var da = api.DAFactory.Get)
            {
                //has this ip been banned?
                var ban = da.Bans.GetByIP(ip);
                if (ban != null)
                {
                    return(ApiResponse.Json(HttpStatusCode.OK, new RegistrationError()
                    {
                        error = "registration_failed",
                        error_description = "ip_banned"
                    }));
                }

                //has this user registered a new account too soon after their last?
                var now  = Epoch.Now;
                var prev = da.Users.GetByRegisterIP(ip);
                if (now - (prev.FirstOrDefault()?.register_date ?? 0) < REGISTER_THROTTLE_SECS)
                {
                    //cannot create a new account this soon.
                    return(ApiResponse.Json(HttpStatusCode.OK, new RegistrationError()
                    {
                        error = "registration_failed",
                        error_description = "registrations_too_frequent"
                    }));
                }

                var userModel = api.CreateUser(user.username, user.email, user.password, ip);

                if (userModel == null)
                {
                    return(ApiResponse.Json(HttpStatusCode.OK, new RegistrationError()
                    {
                        error = "registration_failed",
                        error_description = "user_exists"
                    }));
                }
                else
                {
                    api.SendEmailConfirmationOKMail(user.username, user.email);
                    return(ApiResponse.Json(HttpStatusCode.OK, userModel));
                }
            }
        }
Exemple #25
0
 /// <summary>
 /// 初始化上下文
 /// </summary>
 private void Init()
 {
     if (Config == null)
     {
         Config = ConfigurationManager.GetSection("AliApplyConfig") as AliApply;
     }
     Util = new ApiUtils(this);
     Auth = new AuthApi(this);
     Company = new CompanyApi(this);
     Product = new ProductApi(this);
     CustomClassify = new CustomClassifyApi(this);
     Album = new AlbumApi(this);
     Photo = new PhotoApi(this);
     Url=new UrlApi(this);
     Platform = new PlatformApi(this);
     Member=new MemberApi(this);
     Order=new OrderApi(this);
     Logistics=new LogisticsApi(this);
     CustomerRelations= new CustomerRelApi(this);
     Category=new CategoryApi(this);
     Search = new SearchApi(this);
     Timeout = 15;
 }
        public IActionResult Get(string username, string password, string version, string clientid)
        {
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
            {
                return(ERROR_020());
            }

            AuthTicket ticket = null;

            var api = Api.INSTANCE;

            using (var db = api.DAFactory.Get())
            {
                var user = db.Users.GetByUsername(username);
                if (user == null)
                {
                    return(ERROR_110());
                }

                if (user.is_banned)
                {
                    return(ERROR_150());
                }

                if (api.Config.Maintainance && !(user.is_admin || user.is_moderator))
                {
                    return(ERROR_160());
                }

                var ip = ApiUtils.GetIP(Request);

                var accLock = db.Users.GetRemainingAuth(user.user_id, ip);
                if (accLock != null && (accLock.active || accLock.count >= LockAttempts) && accLock.expire_time > Epoch.Now)
                {
                    return(printError("INV-170", LOCK_MESSAGE + Epoch.HMSRemaining(accLock.expire_time))());
                }

                var authSettings      = db.Users.GetAuthenticationSettings(user.user_id);
                var isPasswordCorrect = PasswordHasher.Verify(password, new PasswordHash
                {
                    data   = authSettings.data,
                    scheme = authSettings.scheme_class
                });

                if (!isPasswordCorrect)
                {
                    var failDelay = 60 * LockDuration[Math.Min(LockDuration.Length - 1, db.Users.FailedConsecutive(user.user_id, ip))];
                    if (accLock == null)
                    {
                        db.Users.NewFailedAuth(user.user_id, ip, (uint)failDelay);
                    }
                    else
                    {
                        var remaining = db.Users.FailedAuth(accLock.attempt_id, (uint)failDelay, LockAttempts);
                        if (remaining == 0)
                        {
                            return(printError("INV-170", LOCK_MESSAGE + Epoch.HMSRemaining(Epoch.Now + (uint)failDelay))());
                        }
                    }
                    return(ERROR_110());
                }

                var ban = db.Bans.GetByIP(ip);
                if (ban != null)
                {
                    return(ERROR_110());
                }

                db.Users.SuccessfulAuth(user.user_id, ip);
                db.Users.UpdateClientID(user.user_id, clientid ?? "0");

                /** Make a ticket **/
                ticket           = new AuthTicket();
                ticket.ticket_id = Guid.NewGuid().ToString().Replace("-", "");
                ticket.user_id   = user.user_id;
                ticket.date      = Epoch.Now;
                ticket.ip        = ip;

                db.AuthTickets.Create(ticket);
                db.Users.UpdateLastLogin(user.user_id, Epoch.Now);
            }
            var content = "Valid=TRUE\r\nTicket=" + ticket.ticket_id.ToString() + "\r\n";

            return(ApiResponse.Plain(HttpStatusCode.OK, content));
        }
Exemple #27
0
        // GET api/<controller>
        public HttpResponseMessage Get(string username, string password, string version, string clientid)
        {
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
            {
                return(ERROR_020());
            }

            AuthTicket ticket = null;

            var api = Api.INSTANCE;

            using (var db = api.DAFactory.Get())
            {
                var user = db.Users.GetByUsername(username);
                if (user == null)
                {
                    return(ERROR_110());
                }

                if (user.is_banned)
                {
                    return(ERROR_150());
                }

                if (api.Config.Maintainance && !(user.is_admin || user.is_moderator))
                {
                    return(ERROR_160());
                }

                var authSettings      = db.Users.GetAuthenticationSettings(user.user_id);
                var isPasswordCorrect = PasswordHasher.Verify(password, new PasswordHash
                {
                    data   = authSettings.data,
                    scheme = authSettings.scheme_class
                });

                if (!isPasswordCorrect)
                {
                    return(ERROR_110());
                }

                var ip = ApiUtils.GetIP(Request);

                var ban = db.Bans.GetByIP(ip);
                if (ban != null)
                {
                    return(ERROR_110());
                }

                db.Users.UpdateClientID(user.user_id, clientid ?? "0");

                /** Make a ticket **/
                ticket           = new AuthTicket();
                ticket.ticket_id = Guid.NewGuid().ToString().Replace("-", "");
                ticket.user_id   = user.user_id;
                ticket.date      = Epoch.Now;
                ticket.ip        = ip;

                db.AuthTickets.Create(ticket);
            }
            var content = "Valid=TRUE\r\nTicket=" + ticket.ticket_id.ToString() + "\r\n";

            return(ApiResponse.Plain(HttpStatusCode.OK, content));
        }
Exemple #28
0
 public static ParaEntityList <TEntity> GetList(ParaCredentials creds)
 {
     return(ApiUtils.ApiGetEntityList <TModule, TEntity>(creds, new TQuery()));
 }
Exemple #29
0
        public async Task GetServiceArticles(int offset)
        {
            try
            {
                var articles = JsonConvert.DeserializeObject <List <ArticleModel> >(await OkHttpUtils.Instance.GetAsyn(ApiUtils.GetRecommendationArticles(limit, offset)));
                await SQLiteUtils.Instance().UpdateArticles(articles);

                articlesView.GetArticlesSuccess(articles);
            }
            catch (Exception ex)
            {
                articlesView.GetArticlesFail(ex.Message);
            }
        }
        // POST: api/SingleitemSynchronize
        public SingleitemSynchronizeResponseModel Post([FromBody] SingleitemSynchronizeRequestModel model, string customerId)
        {
            //测试相关
            //if (customerId == "c1515046170643")
            //{
            //    customerId = "HPH";
            //}
            //---------------------------------
            if (customerId == "CH1")
            {
                customerId = "CH";
            }
            SingleitemSynchronizeResponseModel response = new SingleitemSynchronizeResponseModel();

            using (DBContainer context = new DBContainer())
            {
                QiMen_RequestLog log  = new QiMen_RequestLog();
                HttpContextBase  ctx  = (HttpContextBase)Request.Properties["MS_HttpContext"];
                string           body = ApiUtils.GetStreamAsString(ctx.Request.InputStream, new UTF8Encoding(false));
                string           ip   = ctx.Request.UserHostAddress;

                log.Interface   = "SingleitemSynchronize";
                log.Url         = Request.RequestUri.AbsoluteUri;
                log.Ip          = ip;
                log.CustomerId  = customerId;
                log.RequestBody = body;
                context.QiMen_RequestLog.Add(log);
                context.SaveChanges();
            }

            using (SCVDBContainer dbContext = new SCVDBContainer())
            {
                DbSet <ITEM> dbSet = dbContext.Set <ITEM>();
                DbSet <ITEM_UNIT_OF_MEASURE> dbSet1  = dbContext.Set <ITEM_UNIT_OF_MEASURE>();
                Apps.Models.ITEM             scvItem = null;
                if (model.ActionType == "update")
                {
                    scvItem = dbSet.FirstOrDefault(i => i.ITEM1 == model.Item.ItemCode && i.COMPANY == customerId);

                    if (scvItem != null)
                    {
                        scvItem.COMPANY          = model.OwnerCode;
                        scvItem.ITEM1            = model.Item.ItemCode;
                        scvItem.ITEM_DESC        = model.Item.ItemName;
                        scvItem.STORAGE_TEMPLATE = "三层模板";
                        scvItem.ACTIVE           = "Y";
                        scvItem.DATE_TIME_STAMP  = DateTime.Now;
                        scvItem.ATTRIBUTE_TRACK  = "N";
                        scvItem.ITEM_SIZE        = model.Item.SkuProperty;
                        scvItem.ITEM_COLOR       = model.Item.Color;
                        scvItem.ITEM_STYLE       = model.Item.GoodsCode;
                    }
                }
                if (model.ActionType == "add")
                {
                    scvItem                  = new Apps.Models.ITEM();
                    scvItem.COMPANY          = model.OwnerCode;
                    scvItem.ITEM1            = model.Item.ItemCode;
                    scvItem.ITEM_DESC        = model.Item.ItemName;
                    scvItem.STORAGE_TEMPLATE = "三层模板";
                    scvItem.ACTIVE           = "Y";
                    scvItem.DATE_TIME_STAMP  = DateTime.Now;
                    scvItem.ATTRIBUTE_TRACK  = "N";
                    scvItem.ITEM_SIZE        = model.Item.SkuProperty;
                    scvItem.ITEM_COLOR       = model.Item.Color;
                    scvItem.ITEM_STYLE       = model.Item.GoodsCode;
                    var scvItemUnit = dbSet1.FirstOrDefault(u => u.ITEM == model.Item.ItemCode && u.COMPANY == customerId);
                    if (scvItemUnit == null)
                    {
                        scvItemUnit                      = new Apps.Models.ITEM_UNIT_OF_MEASURE();
                        scvItemUnit.ITEM                 = model.Item.ItemCode;
                        scvItemUnit.COMPANY              = customerId;
                        scvItemUnit.SEQUENCE             = 1;
                        scvItemUnit.QUANTITY_UM          = "EA";
                        scvItemUnit.CONVERSION_QTY       = 1;
                        scvItemUnit.LENGTH               = model.Item.Length;
                        scvItemUnit.WIDTH                = model.Item.Width;
                        scvItemUnit.HEIGHT               = model.Item.Height;
                        scvItemUnit.DIMENSION_UM         = "CM";
                        scvItemUnit.WEIGHT               = model.Item.GrossWeight;
                        scvItemUnit.WEIGHT_UM            = "KG";
                        scvItemUnit.USER_STAMP           = "Interface";
                        scvItemUnit.DATE_TIME_STAMP      = DateTime.Now;
                        scvItemUnit.TREAT_FULL_PCT       = 100;
                        scvItemUnit.TREAT_AS_LOOSE       = "Y";
                        scvItemUnit.GROUP_DURING_CHECKIN = "Y";
                        scvItemUnit.USER_DEF7            = "0";
                        scvItemUnit.USER_DEF8            = "0";
                        dbSet1.Add(scvItemUnit);
                    }

                    dbSet.Add(scvItem);
                }

                if (dbContext.SaveChanges() >= 0)
                {
                    response.Code    = "0";
                    response.Flag    = "success";
                    response.Message = "商品同步成功";
                    response.ItemId  = scvItem.INTERNAL_ITEM_NUM.ToString();
                }
                else
                {
                    response.Code    = "-1";
                    response.Flag    = "failure";
                    response.Message = "商品同步失败,请重试";
                }
            }


            return(response);
        }
Exemple #31
0
        private void btnAnalyze_Click(object sender, EventArgs e)
        {
            txtInfo.Text = "...";



            if (!File.Exists(txtJarFile.Text))
            {
                MessageBox.Show("请选择有效的Jar文件!");
                return;
            }

            if (!Directory.Exists(txtDownloadPath.Text))
            {
                MessageBox.Show("请选择有效的输出文件夹!");
                return;
            }

            var he = new
            {
                masterHost     = txtMasterHost.Text,
                masterUser     = txtMasterUser.Text,
                masterPassword = txtMasterPassword.Text,
                masterPort     = "22",
                appRoot        = txtAppRoot.Text,
                hadoopBin      = txtHadoopBin.Text
            };



            string inputs_folder = txtInputs.Text;


            string[] files = Directory.GetFiles(inputs_folder, "*.*", SearchOption.AllDirectories);

            foreach (string file in files)
            {
                Console.WriteLine(file);

                string result = ApiUtils.uploadFile(Shared.API_ROOT, "hdfs", "upload", "post", file,
                                                    new string[] { "appId", "userId", "hdfsPath" },
                                                    new string[] { "guest_app", "guest", ApiUtils.encodeBase64("hdfs://" + txtMasterHost.Text + ":9000" + file.Replace(inputs_folder, "").Replace("\\", "/")) });
            }

            traceId         = DateTime.Now.ToString("yyyyMMddHHmmss");
            txtTraceId.Text = traceId;


            string localFile = txtJarFile.Text;
            string job_id    = ApiUtils.uploadFile(Shared.API_ROOT, "guest", "submit", "post", localFile,
                                                   new string[] { "jobName", "jarName", "jobDesc", "masterHost", "masterPassword", "masterPort", "masterUser", "hadoopBin", "appRoot", "mainClass", "args" },
                                                   new string[] {
                ApiUtils.encodeBase64(txtJobName.Text),
                ApiUtils.encodeBase64(Path.GetFileName(txtJarFile.Text)),
                ApiUtils.encodeBase64(txtJobDesc.Text),
                he.masterHost,
                he.masterPassword,
                he.masterPort,
                he.masterUser,
                he.hadoopBin,
                he.appRoot,
                txtMainClass.Text,
                ApiUtils.encodeBase64(txtArgs.Text + " @traceId=" + traceId)
            });


            if (!string.IsNullOrEmpty(job_id))
            {
                job_id = job_id.Replace("\"", "");

                this.Current_Job_Id = job_id;
                txtJobId.Text       = this.Current_Job_Id;

                if (cbAutomatic.Checked)
                {
                    t = new System.Timers.Timer(1000); //设置时间间隔为5秒

                    t.Elapsed  += new System.Timers.ElapsedEventHandler(DetectJobStatus);
                    t.AutoReset = true;
                    t.Enabled   = true;
                    t.Start();
                }
            }
            else
            {
                MessageBox.Show("提交失败!");
            }
        }