Exemplo n.º 1
0
        public void VerifyWhenMaskingFieldAsPayloadFails_ValueIsSetToDefaultMaskingFailureValue()
        {
            var apiLog = new ApiLog();
            var filter = new StreamLogMaskingFilter(new List <JsonPayloadMaskingRule>
            {
                new JsonPayloadMaskingRule("jsonfield", new PayloadFieldMaskingRule []
                {
                    new PayloadFieldMaskingRule {
                        Path = "param1", Mask = new FuncMask(new Func <string, string>((string value) => { throw new Exception("MaskingFailed"); }))
                    }
                })
            });

            var json = string.Format(@"{{
                            ""PARAM1"": "" aa ""
                       }}");

            apiLog.TrySetValue("jsonField", new Payload(json));

            var masked          = filter.Apply(apiLog);
            var fields          = masked.GetFields();
            var maskedJsonField = fields.First(x => x.Key == "jsonField").Value.ToString();

            Assert.Equal(KeyStore.Masking.MaskingFailed, maskedJsonField);
            Assert.True(Boolean.Parse(fields.First(x => x.Key == KeyStore.Masking.MaskingFailedKey).Value.ToString()));
        }
Exemplo n.º 2
0
        public void VerifyQueryStringFieldsAreMaskedCorrectly()
        {
            var apiLog   = new ApiLog();
            var cc       = "4111111111111111";
            var maskedCC = "411111******1111";
            var query    = "PARAM1= aa &paramCC= " + cc + " &param2= aaa &param3= aaaaa ";
            var filter   = new TextLogMaskingFilter(new QueryStringMaskingRule("queryField", new TextMaskingRule[]
            {
                new TextMaskingRule {
                    Field = "param1", Mask = Masks.DefaultMask
                },
                new TextMaskingRule {
                    Field = "paramcc", Mask = Masks.CreditCardMask
                }
            }));

            apiLog.TrySetValue("queryField", query);
            apiLog.TrySetValue("queryFieldNotToBeMasked", query);


            var masked                       = filter.Apply(apiLog);
            var fields                       = masked.GetFields();
            var maskedQueryField             = fields.First(x => x.Key == "queryField").Value;
            var maskedQueryFieldNoToBeMasked = fields.First(x => x.Key == "queryFieldNotToBeMasked").Value;

            Assert.Equal("PARAM1=**&paramCC=" + maskedCC + "&param2= aaa &param3= aaaaa ", maskedQueryField);
            Assert.Equal(query, maskedQueryFieldNoToBeMasked);
        }
Exemplo n.º 3
0
        public void VerifyWhenCustomMaskSpecified_FieldsAreMaskedCorrectly()
        {
            var apiLog = new ApiLog();
            var filter = new DelegateFilter((ILog log) =>
            {
                var copy   = new List <KeyValuePair <string, object> >();
                var fields = log.GetFields();
                foreach (var field in fields)
                {
                    if (field.Key == "fieldToMask")
                    {
                        copy.Add(new KeyValuePair <string, object>(field.Key, Masks.DefaultMask.Mask(field.Value.ToString())));
                    }
                    else if (field.Key == "fieldNotToMask")
                    {
                        copy.Add(field);
                    }
                }
                return(new SimpleLog(log.Id, log.LogTime, copy));
            });

            apiLog.TrySetValue("fieldToMask", "ValueToMask");
            apiLog.TrySetValue("fieldNotToMask", "ValueNotToMask");

            var masked         = filter.Apply(apiLog);
            var maskedFields   = masked.GetFields();
            var maskedField    = maskedFields.First(x => x.Key == "fieldToMask").Value;
            var notMaskedField = maskedFields.First(x => x.Key == "fieldNotToMask").Value;

            Assert.Equal(maskedField, "V*********k");
            Assert.Equal(notMaskedField, "ValueNotToMask");
        }
        protected override async Task <ApiLog> GetLog(HttpContext httpContext)
        {
            //var responseBodyStream = new MemoryStream();
            //httpContext.Response.Body = responseBodyStream;

            var urlMapping = GetRouteMapping(httpContext.Request.Path);
            var log        = new ApiLog
            {
                ApplicationName = "Test Application",
                Api             = urlMapping.Item1,
                Verb            = urlMapping.Item2,
                Url             = $"{httpContext.Request.Scheme}://{httpContext.Request.Host.Value}{httpContext.Request.Path.Value}",
                IsSuccessful    = httpContext.Response?.StatusCode == 200,
                Request         = new Payload(await GetRequestPayload(httpContext)),
                Response        = new Payload(await GetResponsePayload(httpContext))
                                  //CorrelationId = BaseContext.Current?.CorrelationId,
                                  //StackId = BaseContext.Current?.StackId,
                                  //ApplicationTransactionId = BaseContext.Current?.TransactionId
            };

            foreach (var header in httpContext.Request.Headers)
            {
                log.RequestHeaders[header.Key] = string.Join(", ", header.Value);
            }
            foreach (var header in httpContext.Response.Headers)
            {
                log.ResponseHeaders[header.Key] = string.Join(", ", header.Value);
            }


            return(log);
        }
Exemplo n.º 5
0
        //<summary>Se ejecuta cuando se  produce una excepcion, esta lee los datos de la excepcion y genera un log en la base de datos.</summary>
        /// <param name="actionExecutedContext">Contexto de ejecucion.</param>
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            using (IUnitOfWork unitOfWork = new UnitOfWork())
            {
                IRepository <ApiLog> repository = new Repository <ApiLog>(unitOfWork);
                apiLogService = new ApiLogService(repository);

                string requestUuid = actionExecutedContext.Request.GetCorrelationId().ToString();
                //unitOfWork.BeginTransaction();
                try
                {
                    ApiLog requestLog = apiLogService.FindBy(x => x.Uuid == requestUuid).FirstOrDefault();
                    if (requestLog != null)
                    {
                        requestLog.Exception = actionExecutedContext.Exception.GetExceptionDetails();
                        apiLogService.Update(requestLog);
                    }
                    //unitOfWork.Commit();
                }
                catch (Exception e)
                {
                    //unitOfWork.Rollback();
                }
                base.OnException(actionExecutedContext);
            }
        }
        public GenericResponse GetMyProducts(string userId)
        {
            try
            {
                User           user     = db.Users.Where(u => u.Id == userId).FirstOrDefault();
                List <Product> products = db.Products.Where(l => l.User.Id == user.Id && l.IsDeleted != true).ToList();

                UserProductListDto dto = new UserProductListDto();
                dto.userName = user.Name;
                foreach (var item in products)
                {
                    ProductDto product = new ProductDto(item);
                    dto.products.Add(product);
                }

                GenericResponse response = new GenericResponse();
                response.entity = dto;

                return(response);
            }
            catch (Exception ex)
            {
                ApiLog log = new ApiLog();

                log.Request    = "";
                log.MethodName = "GetMyProducts";
                log.Exception  = ex.ToString();
                log.UserId     = userId;

                db.ApiLog.Add(log);
                db.SaveChanges();

                return(new GenericResponse(ex));
            }
        }
        public GenericResponse RemoveProduct(RemoveProduct request, string userId)
        {
            try
            {
                Product product = db.Products.Where(p => p.Id == request.productId).FirstOrDefault();

                product.IsDeleted = true;

                db.SaveChanges();


                return(new GenericResponse());
            }
            catch (Exception ex)
            {
                ApiLog log = new ApiLog();

                log.Request    = request.ToString();
                log.MethodName = "RemoveProduct";
                log.Exception  = ex.ToString();
                log.UserId     = userId;

                db.ApiLog.Add(log);
                db.SaveChanges();

                return(new GenericResponse(ex));
            }
        }
Exemplo n.º 8
0
 public void InsertAPILog(ApiLog apiLog)
 {
     try
     {
         using (var sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["APILoggingConnection"].ConnectionString))
         {
             sqlConnection.Open();
             var cmd =
                 new SqlCommand("FTSP_APILogging", connection: sqlConnection)
             {
                 CommandType = CommandType.StoredProcedure
             };
             cmd.Parameters.AddWithValue("@Host", apiLog.Host);
             cmd.Parameters.AddWithValue("@Headers", apiLog.Headers);
             cmd.Parameters.AddWithValue("@StatusCode", apiLog.StatusCode);
             cmd.Parameters.AddWithValue("@RequestBody", apiLog.RequestBody);
             cmd.Parameters.AddWithValue("@RequestedMethod", apiLog.RequestedMethod);
             cmd.Parameters.AddWithValue("@UserHostAddress", apiLog.UserHostAddress);
             cmd.Parameters.AddWithValue("@Useragent", apiLog.Useragent);
             cmd.Parameters.AddWithValue("@AbsoluteUri", apiLog.AbsoluteUri);
             cmd.Parameters.AddWithValue("@RequestType", apiLog.RequestType);
             cmd.ExecuteNonQuery();
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
Exemplo n.º 9
0
        public void OutgoingMessageAsync(ApiLog apiLog)
        {
            apiLog.RequestType = "Response";
            var sqlLogging = new SqlLogging();

            sqlLogging.InsertAPILog(apiLog);
        }
Exemplo n.º 10
0
        public void IncomingMessageAsync(ApiLog apiLog)
        {
            apiLog.RequestType = "Request";
            var sqlLogging = new SqlLogging();

            sqlLogging.InsertAPILog(apiLog);
        }
Exemplo n.º 11
0
        ////----------正式参数---------------
        //public string organization = "1000000438";//机构号
        //public string password = "******";//密码
        //public string skey = "oiszFLRc";//DES密钥

        ////-----------测试参数----------------
        //public string organization = "1000000286";//机构号
        //public string password = "******";//密码
        //public string skey = "vSK5eIRC";//des密钥

        #region  发送电子票
        internal string Add_Order(ApiService mapiservice, Api_yg_addorder_input minput)
        {
            StringBuilder builderOrder = new StringBuilder();

            builderOrder.Append(@"<?xml version=""1.0"" encoding=""utf-8"" ?>");
            builderOrder.Append(@"<business_trans version=""1.0"">");
            builderOrder.AppendFormat("<request_type>{0}</request_type>", "add_order");
            builderOrder.AppendFormat("<organization>{0}</organization>", mapiservice.Organization);  //<!-机构号-->
            builderOrder.AppendFormat("<password>{0}</password>", mapiservice.Password);              //<!-- 接口使用密码  y-->
            builderOrder.AppendFormat("<req_seq>{0}</req_seq>", minput.req_seq);                      //<!--请求流水号 y-->
            builderOrder.AppendFormat("<order>");                                                     //<!--订单信息-->
            builderOrder.AppendFormat("<product_num>{0}</product_num>", minput.product_num);          //<!--产品编码 y-->
            builderOrder.AppendFormat("<num>{0}</num>", minput.num);                                  //<!--购买数量 y-->
            builderOrder.AppendFormat("<mobile>{0}</mobile>", minput.mobile);                         //<!-- 手机号码 y-->
            builderOrder.AppendFormat("<use_date>{0}</use_date>", minput.use_date);                   //<!-- 使用时间 -->
            builderOrder.AppendFormat("<real_name_type>{0}</real_name_type>", minput.real_name_type); //<!-- 实名制类型:0无需实名 1一张一人,2一单一人,3一单一人+身份证-->
            builderOrder.AppendFormat("<real_name>{0}</real_name>", minput.real_name);                //<!--真是姓名  ,隔开 最多3个名字 <=3 -->
            builderOrder.AppendFormat("<id_card>{0}</id_card>", minput.id_card);                      //<!--证件号码 -->
            builderOrder.AppendFormat("<card_type>{0}</card_type>", minput.card_type);                //<!--证件类型0身份证;1其他证件 -->
            builderOrder.AppendFormat("</order>");
            builderOrder.AppendFormat("</business_trans>");

            string bstr = "";

            try
            {
                ITicketService its10   = new ITicketService();
                string         en      = EncryptionHelper.DESEnCode(builderOrder.ToString(), mapiservice.Deskey);
                string         retxmls = its10.getEleInterface(mapiservice.Organization, en);

                bstr = EncryptionHelper.DESDeCode(retxmls, mapiservice.Deskey);
            }
            catch (Exception e)
            {
                bstr = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                       "<business_trans>" +
                       "<response_type>add_order</response_type>" +
                       "<req_seq>" + minput.req_seq + "</req_seq>" +
                       "<result>" +
                       "<id></id>" +
                       "<comment>" + e.Message + "</comment>" +
                       " </result>" +
                       "</business_trans>";
            }
            //录入交互日志
            ApiLog mapilog = new ApiLog
            {
                Id            = 0,
                request_type  = "add_order",
                Serviceid     = 1,
                Str           = builderOrder.ToString().Trim(),
                Subdate       = DateTime.Now,
                ReturnStr     = bstr,
                ReturnSubdate = DateTime.Now,
                Errmsg        = "",
            };
            int ins = new ApiLogData().EditLog(mapilog);

            return(bstr);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Logs info/Error to Log file
        /// </summary>
        /// <param name="record"></param>
        private void log(TraceRecord record, ApiLog apiLog, Exception exception, string message)
        {
            //var message = new StringBuilder();
            LogEventInfo logDetailInfo = new LogEventInfo(LogLevel.FromString(record.Level.ToString()), "BilisimHRWebApiLogger", message);

            logDetailInfo.Exception = exception;

            if (apiLog != null)
            {
                logDetailInfo.Properties["APPLICATION"]            = apiLog.Application;
                logDetailInfo.Properties["USER_ID"]                = apiLog.UserId;
                logDetailInfo.Properties["USERNAME"]               = apiLog.Username;
                logDetailInfo.Properties["MACHINE"]                = apiLog.Machine;
                logDetailInfo.Properties["CONTROLLER"]             = apiLog.Controller;
                logDetailInfo.Properties["ACTION"]                 = apiLog.Action;
                logDetailInfo.Properties["REQUEST_IP_ADDRESS"]     = apiLog.RequestIpAddress;
                logDetailInfo.Properties["REQUEST_CONTENT_TYPE"]   = apiLog.RequestContentType;
                logDetailInfo.Properties["REQUEST_CONTENT_BODY"]   = apiLog.RequestContentBody;
                logDetailInfo.Properties["REQUEST_URI"]            = apiLog.RequestUri;
                logDetailInfo.Properties["REQUEST_METHOD"]         = apiLog.RequestMethod;
                logDetailInfo.Properties["REQUEST_ROUTE_TEMPLATE"] = apiLog.RequestRouteTemplate;
                logDetailInfo.Properties["REQUEST_ROUTE_DATA"]     = apiLog.RequestRouteData;
                logDetailInfo.Properties["REQUEST_HEADERS"]        = apiLog.RequestHeaders;
                logDetailInfo.Properties["REQUEST_TIMESTAMP"]      = (apiLog.RequestTimestamp.HasValue ? apiLog.RequestTimestamp.Value.ToString("dd'/'MM'/'yyyy HH:mm:ss") : string.Empty);
                logDetailInfo.Properties["RESPONSE_CONTENT_TYPE"]  = apiLog.ResponseContentType;
                // Response Content Body veri tabanında büyük alana karşılık geldiğinden eklenmesi kapatılmıştır.
                // logDetailInfo.Properties["RESPONSE_CONTENT_BODY"] = apiLog.ResponseContentBody;
                logDetailInfo.Properties["RESPONSE_STATUS_CODE"]    = (apiLog.ResponseStatusCode.HasValue ? apiLog.ResponseStatusCode.Value.ToJSON() : string.Empty);
                logDetailInfo.Properties["RESPONSE_HEADERS"]        = apiLog.ResponseHeaders;
                logDetailInfo.Properties["RESPONSE_TIMESTAMP"]      = (apiLog.ResponseTimestamp.HasValue ? apiLog.ResponseTimestamp.Value.ToString("dd'/'MM'/'yyyy HH:mm:ss") : string.Empty);
                logDetailInfo.Properties["TOTAL_EXECUTION_SECONDS"] = apiLog.TotalExecutionSeconds.ToString();
                // _logger[record.Level](logDetailInfo);
                _classLogger.Log(logDetailInfo);
            }
        }
Exemplo n.º 13
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request,
                                                                      CancellationToken cancellationToken)
        {
            var requestedMethod = request.Method;
            var userHostAddress = "";//HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : "0.0.0.0";
            var useragent       = request.Headers.UserAgent.ToString();
            var requestMessage  = await request.Content.ReadAsByteArrayAsync();

            var uriAccessed = request.RequestUri.AbsoluteUri;

            var responseHeadersString = new StringBuilder();

            foreach (var header in request.Headers)
            {
                responseHeadersString.Append($"{header.Key}: {String.Join(", ", header.Value)}{Environment.NewLine}");
            }

            var messageLoggingHandler = new MessageLogging();

            var requestLog = new ApiLog()
            {
                Headers         = responseHeadersString.ToString(),
                AbsoluteUri     = uriAccessed,
                Host            = userHostAddress,
                RequestBody     = Encoding.UTF8.GetString(requestMessage),
                UserHostAddress = userHostAddress,
                Useragent       = useragent,
                RequestedMethod = requestedMethod.ToString(),
                StatusCode      = string.Empty
            };

            messageLoggingHandler.IncomingMessageAsync(requestLog);

            var response = await base.SendAsync(request, cancellationToken);

            byte[] responseMessage;
            if (response.IsSuccessStatusCode)
            {
                responseMessage = await response.Content.ReadAsByteArrayAsync();
            }
            else
            {
                responseMessage = Encoding.UTF8.GetBytes(response.ReasonPhrase);
            }

            var responseLog = new ApiLog()
            {
                Headers         = responseHeadersString.ToString(),
                AbsoluteUri     = uriAccessed,
                Host            = userHostAddress,
                RequestBody     = Encoding.UTF8.GetString(responseMessage),
                UserHostAddress = userHostAddress,
                Useragent       = useragent,
                RequestedMethod = requestedMethod.ToString(),
                StatusCode      = string.Empty
            };

            messageLoggingHandler.OutgoingMessageAsync(responseLog);
            return(response);
        }
Exemplo n.º 14
0
 public int EditLog(ApiLog m)
 {
     using (var sql = new SqlHelper())
     {
         return(new InternalApiLog(sql).EditLog(m));
     }
 }
Exemplo n.º 15
0
        /// <summary>
        /// Implementation of TraceWriter to trace the logs.
        /// </summary>
        /// <param name="request"></param>
        /// <param name="category"></param>
        /// <param name="level"></param>
        /// <param name="traceAction"></param>
        public void Trace(HttpRequestMessage request, string module, TraceLevel level, Action <TraceRecord> traceAction)
        {
            if (!module.StartsWith("bilisimHR"))
            {
                return;
            }

            string message = string.Empty;
            //JToken Jtoken = JObject.Parse(traceAction.Target.ToJSON());
            JToken Jtoken       = JObject.Parse(JsonConvert.SerializeObject(traceAction.Target));
            JToken subToken     = Jtoken.SelectToken("messageArguments");
            JToken exceptionObj = Jtoken.SelectToken("exception");

            if (subToken == null)
            {
                return;
            }

            object jsonObj = subToken.First.ToObject(typeof(ApiLog));

            if (level != TraceLevel.Off && jsonObj.GetType() == typeof(ApiLog))
            {
                ApiLog apiLog = (ApiLog)jsonObj;
                if (traceAction != null && traceAction.Target != null)
                {
                    apiLog.Application = module;
                    message            = "Application : " + apiLog.Application +
                                         Environment.NewLine + "UserId : " + apiLog.UserId +
                                         Environment.NewLine + "Username : "******"Machine : " + apiLog.Machine +
                                         Environment.NewLine + "Controller : " + apiLog.Controller +
                                         Environment.NewLine + "Action : " + apiLog.Action +
                                         Environment.NewLine + "RequestIpAddress : " + apiLog.RequestIpAddress +
                                         Environment.NewLine + "RequestContentType : " + apiLog.RequestContentType +
                                         Environment.NewLine + "RequestContentBody : " + apiLog.RequestContentBody +
                                         Environment.NewLine + "RequestUri : " + apiLog.RequestUri +
                                         Environment.NewLine + "RequestMethod : " + apiLog.RequestMethod +
                                         Environment.NewLine + "RequestRouteTemplate : " + apiLog.RequestRouteTemplate +
                                         Environment.NewLine + "RequestRouteData : " + apiLog.RequestRouteData +
                                         Environment.NewLine + "RequestHeaders : " + apiLog.RequestHeaders +
                                         Environment.NewLine + "RequestTimestamp : " + (apiLog.RequestTimestamp.HasValue ? apiLog.RequestTimestamp.Value.ToString("dd'/'MM'/'yyyy HH:mm:ss") : string.Empty) +
                                         Environment.NewLine + "ResponseContentType : " + apiLog.ResponseContentType +
                                         Environment.NewLine + "ResponseContentBody : " + apiLog.ResponseContentBody +
                                         Environment.NewLine + "ResponseStatusCode : " + (apiLog.ResponseStatusCode.HasValue ? apiLog.ResponseStatusCode.Value.ToJSON() : string.Empty) +
                                         Environment.NewLine + "ResponseHeaders : " + apiLog.ResponseHeaders +
                                         Environment.NewLine + "ResponseTimestamp : " + (apiLog.ResponseTimestamp.HasValue ? apiLog.ResponseTimestamp.Value.ToString("dd'/'MM'/'yyyy HH:mm:ss") : string.Empty) +
                                         Environment.NewLine + "TotalExecutionTime: " + apiLog.TotalExecutionSeconds.ToString() +
                                         Environment.NewLine + "-----------------------------------------------------------------------------";
                }

                var record = new TraceRecord(request, module, level);

                if (traceAction != null)
                {
                    traceAction(record);
                }

                log(record, apiLog, (exceptionObj != null ? ((Exception)exceptionObj.ToObject(typeof(Exception))) : null), message);
            }
        }
Exemplo n.º 16
0
        public async Task Invoke(HttpContext httpContext, IApiLogRepository apiLogRepository)
        {
            Stopwatch watch = new Stopwatch();
            var       now   = _clock.UtcNow.UtcDateTime;

            watch.Start();
            await _next(httpContext);

            watch.Stop();

            var user = httpContext.User.ParseAllClaims();

            var log = new ApiLog();

            log.DurationMs   = (int)watch.ElapsedMilliseconds;
            log.Route        = httpContext.GetRouteData().Values["controller"] + "." + httpContext.GetRouteData().Values["action"];
            log.StartedAt    = now;
            log.UserId       = user != null ? (int?)user.User.Id : null;
            log.Verb         = httpContext.Request.Method;
            log.ResponseCode = httpContext.Response.StatusCode;
            log.QueryString  = httpContext.Request.QueryString.ToString();

            try
            {
                await apiLogRepository.InsertApiLog(log);
            }
            catch (Exception ex)
            {
            }
        }
Exemplo n.º 17
0
        public void VerifyTextFieldsAreMaskedCorrectly()
        {
            var apiLog   = new ApiLog();
            var cc       = "4111111111111111";
            var maskedCC = "411111******1111";
            var filter   = new TextLogMaskingFilter(new List <TextMaskingRule> {
                new TextMaskingRule {
                    Field = "textField", Mask = Masks.DefaultMask
                },
                new TextMaskingRule {
                    Field = "textFieldCC", Mask = Masks.CreditCardMask
                }
            });

            apiLog.TrySetValue("textField", "textFieldValue");
            apiLog.TrySetValue("textFieldCC", cc);
            apiLog.TrySetValue("textFieldNotToBeMasked", "textFieldNotToBeMaskedValue");

            var masked                      = filter.Apply(apiLog);
            var fields                      = masked.GetFields();
            var maskedTextField             = fields.First(x => x.Key == "textField").Value;
            var maskedTextFieldCC           = fields.First(x => x.Key == "textFieldCC").Value;
            var maskedTextFieldNoToBeMasked = fields.First(x => x.Key == "textFieldNotToBeMasked").Value;

            Assert.Equal("t************e", maskedTextField);
            Assert.Equal(maskedCC, maskedTextFieldCC);
            Assert.Equal("textFieldNotToBeMaskedValue", maskedTextFieldNoToBeMasked);
        }
Exemplo n.º 18
0
        public bool Add(ApiLog log)
        {
            if (log == null)
            {
                return(false);
            }

            using (MySqlConnection conn = new MySqlConnection(connStr))
            {
                try
                {
                    conn.Open();
                    MySqlCommand cmd = new MySqlCommand("insert into apilog(openid, nickname, ip, endpoint, client, createdAt) values(@openid, @nickname, @ip, @endpoint, @client, now())", conn);
                    cmd.Parameters.Add(new MySqlParameter("openid", log.openId));
                    cmd.Parameters.Add(new MySqlParameter("nickname", log.nickName));
                    cmd.Parameters.Add(new MySqlParameter("ip", log.ip));
                    cmd.Parameters.Add(new MySqlParameter("endpoint", log.endpoint));
                    cmd.Parameters.Add(new MySqlParameter("client", log.client));

                    cmd.ExecuteNonQuery();

                    return(true);
                }
                finally
                {
                    conn.Close();
                }
            }
        }
Exemplo n.º 19
0
        protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            try
            {
                ApiLog log = new ApiLog();
                if (request.Headers.Contains("openid"))
                {
                    log.openId = request.Headers.GetValues("openid").FirstOrDefault();
                }
                if (request.Headers.Contains("nickname"))
                {
                    log.nickName = request.Headers.GetValues("nickname").FirstOrDefault();
                }

                log.endpoint = request.RequestUri.ToString();

                log.ip     = GetClientIpAddress(request);
                log.client = request.Headers.UserAgent.ToString();

                var dao = new ApiLogDao(ConfigurationManager.AppSettings["mysqlConnStr"]);
                dao.Add(log);
            }
            catch (Exception ex) {
                logger.Error(ex.Message);
            }


            return(base.SendAsync(request, cancellationToken));
        }
Exemplo n.º 20
0
        public ActionResult DeleteConfirmed(int id)
        {
            ApiLog apiLog = db.ApiLogs.Find(id);

            db.ApiLogs.Remove(apiLog);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemplo n.º 21
0
        public string query_order(string req_seq_sel)
        {
            ApiService mapiservice = new ApiServiceData().GetApiservice(1);


            string req_seq = mapiservice.Organization + DateTime.Now.ToString("yyyyMMddhhssmm") + CommonFunc.CreateNum(6);//请求流水号

            StringBuilder builderOrder = new StringBuilder();

            builderOrder.Append(@"<?xml version=""1.0"" encoding=""utf-8""?>");
            builderOrder.Append(@"<business_trans version=""1.0"">");
            builderOrder.Append("<request_type>query_order</request_type>");                         //<!--查询-->
            builderOrder.AppendFormat("<organization>{0}</organization>", mapiservice.Organization); //<!--机构号-->
            builderOrder.AppendFormat("<password>{0}</password>", mapiservice.Password);             //<!-- 接口使用密码  -->
            builderOrder.AppendFormat("<req_seq>{0}</req_seq>", req_seq);                            //<!--请求流水号-->
            builderOrder.Append("<order>");
            builderOrder.AppendFormat("<order_num>{0}</order_num>", req_seq_sel);                    //<!-- 订单号 y-->
            builderOrder.Append("</order>");
            builderOrder.Append("</business_trans>");

            string bstr = "";

            try
            {
                ITicketService its11   = new ITicketService();
                string         en      = EncryptionHelper.DESEnCode(builderOrder.ToString(), mapiservice.Deskey);
                string         retxmls = its11.getEleInterface(mapiservice.Organization, en);

                bstr = EncryptionHelper.DESDeCode(retxmls, mapiservice.Deskey);
            }
            catch (Exception e)
            {
                bstr = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                       "<business_trans>" +
                       "<response_type>query_order</response_type>" +
                       "<req_seq>" + req_seq + "</req_seq>" +
                       "<result>" +
                       "<id></id>" +
                       "<comment>" + e.Message + "</comment>" +
                       " </result>" +
                       "</business_trans>";
            }
            //录入交互日志
            ApiLog mapilog = new ApiLog
            {
                Id            = 0,
                request_type  = "query_order",
                Serviceid     = 1,
                Str           = builderOrder.ToString().Trim(),
                Subdate       = DateTime.Now,
                ReturnStr     = bstr,
                ReturnSubdate = DateTime.Now,
                Errmsg        = "",
            };
            int ins = new ApiLogData().EditLog(mapilog);

            return(bstr);
        }
Exemplo n.º 22
0
        internal int EditLog(ApiLog m)
        {
            if (m.Id > 0)
            {
                string sql = @"update  [api_log]
                                   set serviceid=@serviceid
                                   ,str=@str
                                   ,subdate=@subdate
                                   ,returnstr=@returnstr
                                   ,returndate=@returndate
                                   ,errmsg=@errmsg
                                   ,request_type=@request_type
                               where id=@id";
                var cmd = sqlHelper.PrepareTextSqlCommand(sql);
                cmd.AddParam("@serviceid", m.Serviceid);
                cmd.AddParam("@str", m.Str);
                cmd.AddParam("@subdate", m.Subdate);
                cmd.AddParam("@returnstr", m.ReturnStr);
                cmd.AddParam("@returndate", m.ReturnSubdate);
                cmd.AddParam("@errmsg", m.Errmsg);
                cmd.AddParam("@request_type", m.request_type);
                cmd.AddParam("@id", m.Id);

                cmd.ExecuteNonQuery();
                return m.Id;
            }
            else
            {
                string sql = @"INSERT INTO  [api_log]
                                   ([serviceid]
                                   ,[str]
                                   ,[subdate]
                                   ,[returnstr]
                                   ,[returndate]
                                   ,[errmsg]
                                   ,[request_type])
                             VALUES
                                   (@serviceid
                                   ,@str
                                   ,@subdate
                                   ,@returnstr
                                   ,@returndate
                                   ,@errmsg
                                   ,@request_type);select @@identity;";
                var cmd = sqlHelper.PrepareTextSqlCommand(sql);
                cmd.AddParam("@serviceid", m.Serviceid);
                cmd.AddParam("@str", m.Str);
                cmd.AddParam("@subdate", m.Subdate);
                cmd.AddParam("@returnstr", m.ReturnStr);
                cmd.AddParam("@returndate", m.ReturnSubdate);
                cmd.AddParam("@errmsg", m.Errmsg);
                cmd.AddParam("@request_type", m.request_type);

                object o = cmd.ExecuteScalar();
                return int.Parse(o.ToString());
            }
        }
Exemplo n.º 23
0
        public void VerifyJSONFieldsAreMaskedCorrectly()
        {
            var apiLog   = new ApiLog();
            var cc       = "4111111111111111";
            var maskedCC = "411111******1111";
            var filter   = new StreamLogMaskingFilter(new List <JsonPayloadMaskingRule>
            {
                new JsonPayloadMaskingRule("jsonfield", new PayloadFieldMaskingRule []
                {
                    new PayloadFieldMaskingRule {
                        Path = "param1"
                    },
                    new PayloadFieldMaskingRule {
                        Path = "param2"
                    },
                    new PayloadFieldMaskingRule {
                        Path = "param3"
                    },
                    new PayloadFieldMaskingRule {
                        Path = "param4.childParam"
                    },
                    new PayloadFieldMaskingRule {
                        Path = "param4.childParamCC", Mask = Masks.CreditCardMask
                    }
                })
            });

            var json = string.Format(@"{{
                            ""PARAM1"": "" aa "",
                            ""param2"": "" aaaa "",
                            ""param3"": "" aaaaa "",
                            ""param4"": {{
                                ""childParam"": ""ccccc"",
                                ""childParamCC"": ""{0}""
                            }}
                       }}", cc);

            apiLog.TrySetValue("jsonField", new Payload(json));
            apiLog.TrySetValue("jsonFieldNotToBeMasked", new Payload(json));

            var masked                      = filter.Apply(apiLog);
            var fields                      = masked.GetFields();
            var maskedJsonField             = (fields.First(x => x.Key == "jsonField").Value as Payload).GetString();
            var maskedJsonFieldNoToBeMasked = (fields.First(x => x.Key == "jsonFieldNotToBeMasked").Value as Payload).GetString();

            Assert.Equal(string.Format(Regex.Replace(@"{{
                            ""PARAM1"": ""**"",
                            ""param2"": ""a***"",
                            ""param3"": ""a***a"",
                            ""param4"": {{
                                ""childParam"": ""c***c"",
                                ""childParamCC"": ""{0}""
                            }}
                       }}", @"\s|\t|\n|\r", ""), maskedCC), maskedJsonField);
            Assert.Equal(json, maskedJsonFieldNoToBeMasked);
        }
Exemplo n.º 24
0
 public void Save(ApiLog log)
 {
     Task.Run(() =>
     {
         using (var client = new Database(ApiConstants.ConnectionStringName))
         {
             client.Save(log);
         }
     });
 }
Exemplo n.º 25
0
        public static string GetApiLog(RestCommand command, int apiLogID)
        {
            ApiLog apiLog = ApiLogs.GetApiLog(command.LoginUser, apiLogID);

            if (apiLog.OrganizationID != command.Organization.OrganizationID)
            {
                throw new RestException(HttpStatusCode.Unauthorized);
            }
            return(apiLog.GetXml("ApiLog", true));
        }
Exemplo n.º 26
0
        private string interurl = "http://outer.mjld.com.cn/Outer/Interface/";//正式接口url

        #region 2.5、	提交订单(SubmitOrder)
        public string SubmitOrder(ApiService mapiservice, Api_Mjld_SubmitOrder_input minput)
        {
            string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                         "<Body>" +
                         "<timeStamp>" + minput.timeStamp + "</timeStamp>" +
                         "<user>" + minput.user + "</user>" +
                         "<password>" + minput.password + "</password>" +
                         "<goodsId>" + minput.goodsId + "</goodsId>" +
                         "<num>" + minput.num + "</num>" +       //<!—可以填多个,默认为1 -->
                         "<phone>" + minput.phone + "</phone>" +
                         "<batch>" + minput.batch + "</batch>" + //<!-值填1时一码一票,值填0或不填该字段是一码多票>
                         "<guest_name>" + minput.guest_name + "</guest_name>" +
                         "<identityno>" + minput.identityno + "</identityno>" +
                         "<order_note>" + minput.order_note + "</order_note>" +
                         "<forecasttime>" + minput.forecasttime + "</forecasttime>" + //【产品详情里IsReserve=True时,需传递该时间;IsReserve=False时,必须保留该值为空】
                         "<outOrderId>" + minput.orderId + "</outOrderId>" +
                         "<orderpost>" +                                              //快递信息
                         "<consignee>" + minput.consignee + "</consignee>" +
                         "<address>" + minput.address + "</address>" +
                         "<zipcode>" + minput.zipcode + "</zipcode>" +
                         "</orderpost>" +
                         "</Body>";

            string data     = HttpUtility.UrlEncode(Mjld_TCodeServiceCrypt.Encrypt3DESToBase64(xml, mapiservice.Deskey));
            string postData = string.Format("businessid={1}&content={0}", data, mapiservice.Organization);

            string str = POST(interurl + "SubmitOrder", postData);

            string bstr = "fail";

            try
            {
                bstr = Mjld_TCodeServiceCrypt.Decrypt3DESFromBase64(str, mapiservice.Deskey);
            }
            catch
            {
                bstr += " " + str;
            }

            //录入交互日志
            ApiLog mapilog = new ApiLog
            {
                Id            = 0,
                request_type  = "SubmitOrder",
                Serviceid     = 3,
                Str           = xml.Trim(),
                Subdate       = DateTime.Now,
                ReturnStr     = bstr,
                ReturnSubdate = DateTime.Now,
                Errmsg        = "",
            };
            int ins = new ApiLogData().EditLog(mapilog);

            return(bstr);
        }
Exemplo n.º 27
0
        public ActionResult Create([Bind(Include = "Id,Method,URL,Request,Response,Status,StatusCode,CreatedOn")] ApiLog apiLog)
        {
            if (ModelState.IsValid)
            {
                db.ApiLogs.Add(apiLog);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(apiLog));
        }
Exemplo n.º 28
0
        public IHttpActionResult Login([FromBody] RequestModel req)//string data,string secret
        {
            try
            {
                //真实参数
                var parameters = Common.AesDecryp.GetAesDecryp(req.data, req.secret);

                LoginUser u = new LoginUser();
                u.Mobile = parameters["Mobile"];
                u.Pwd    = parameters["Pwd"];
                if (!string.IsNullOrEmpty(u.Mobile) && !string.IsNullOrEmpty(u.Pwd))
                {
                    using (dbDataContext db = new dbDataContext())
                    {
                        string pwd  = Common.MD5.Encrypt(u.Pwd, 32);
                        var    list = db.Users.Where(x => x.Mobile == u.Mobile && x.Pwd == pwd).Select(x => new
                        {
                            x.ID,
                            x.Mobile,
                            x.Name,
                            x.RoleID,
                            x.Roles.RoleName,
                            x.Areas,
                            x.Grids,
                            x.Post,
                            x.AddTime,
                        }).FirstOrDefault();
                        if (list != null)
                        {
                            #region 添加登录日志
                            ApiLog log = new ApiLog();
                            log.AddTime     = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                            log.ClientType  = 0;
                            log.Code        = (int?)System.Net.HttpStatusCode.OK;
                            log.ErrMsg      = "";
                            log.Parameters  = Newtonsoft.Json.JsonConvert.SerializeObject(parameters.AllKeys.ToDictionary(k => k, k => parameters[k]));
                            log.RequestName = "/Users/Login";
                            log.UserID      = list.ID;

                            db.ApiLog.InsertOnSubmit(log);
                            db.SubmitChanges();
                            #endregion
                            return(Json(new { data = list, state = 1, msg = "登录成功" }));
                        }
                        return(Json(new { state = 0, msg = "手机号或密码错误" }));
                    }
                }
                return(Json(new { state = 0, msg = "手机号或密码为空" }));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 29
0
 public ActionResult Edit([Bind(Include = "Id,Method,URL,Request,Response,Status,StatusCode,CreatedOn")] ApiLog apiLog)
 {
     if (ModelState.IsValid)
     {
         var t =
             db.Entry(apiLog).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(apiLog));
 }
Exemplo n.º 30
0
        public string cancel_order(ApiService mapiservice, Api_yg_cancelorder m_ygcancelorder)
        {
            StringBuilder buildOrder = new StringBuilder();

            buildOrder.Append(@"<?xml version=""1.0"" encoding=""utf-8""?>");
            buildOrder.Append(@"<business_trans version=""1.0"">");
            buildOrder.Append("<request_type>cancel_order</request_type>");                        //<!--撤销-->
            buildOrder.AppendFormat("<organization>{0}</organization>", mapiservice.Organization); //<!--机构号-->
            buildOrder.AppendFormat("<password>{0}</password>", mapiservice.Password);             //<!-- 接口使用密码  -->
            buildOrder.AppendFormat("<req_seq>{0}</req_seq>", m_ygcancelorder.req_seq);            //<!--请求流水号-->
            buildOrder.Append("<order>");
            buildOrder.AppendFormat("<order_num>{0}</order_num>", m_ygcancelorder.ygorder_num);    //<!-- 订单号 y-->
            buildOrder.AppendFormat("<num>{0}</num>", m_ygcancelorder.num);                        //<!-- 张数 y-->
            buildOrder.Append("</order>");
            buildOrder.Append("</business_trans>");

            string bstr = "";

            try
            {
                ITicketService its12   = new ITicketService();
                string         en      = EncryptionHelper.DESEnCode(buildOrder.ToString(), mapiservice.Deskey);
                string         retxmls = its12.getEleInterface(mapiservice.Organization, en);
                bstr = EncryptionHelper.DESDeCode(retxmls, mapiservice.Deskey);
            }
            catch (Exception e)
            {
                bstr = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                       "<business_trans>" +
                       "<response_type>cancel_order</response_type>" +
                       "<req_seq>" + m_ygcancelorder.req_seq + "</req_seq>" +
                       "<result>" +
                       "<id></id>" +
                       "<comment>" + e.Message + "</comment>" +
                       " </result>" +
                       "</business_trans>";
            }

            //录入交互日志
            ApiLog mapilog = new ApiLog
            {
                Id            = 0,
                request_type  = "cancel_order",
                Serviceid     = 1,
                Str           = buildOrder.ToString().Trim(),
                Subdate       = DateTime.Now,
                ReturnStr     = bstr,
                ReturnSubdate = DateTime.Now,
                Errmsg        = "",
            };
            int ins = new ApiLogData().EditLog(mapilog);

            return(bstr);
        }