Esempio n. 1
0
 public async Task Invoke(HttpContext context, WorkFlowPostgreSqlContext dbcontext)
 {
     try
     {
         await next(context);
     }
     catch (Exception ex)
     {
         await HandleExceptionAsync(context, ex, dbcontext);
     }
 }
        private int getSessionTimeOut(WorkFlowPostgreSqlContext _context)
        {
            var session = _context.Configurations.FirstOrDefault(o => o.owner == "be_restserver" && o.key == "session_timeout");

            if (session != null)
            {
                int value = Int32.Parse(session.value);
                return(value);
            }
            return(15);
        }
Esempio n. 3
0
 public SMTPService(WorkFlowPostgreSqlContext context, IMemoryCache cache)
 {
     _cache         = cache;
     _dbcontext     = context;
     from           = _cache.GetOrCreate("SMTP_from", p => _dbcontext.Configurations.FirstOrDefault(o => o.owner == "be_notifier" && o.key == "notifier_from").value);
     sslTrust       = _cache.GetOrCreate("SMTP_sslTrust", p => _dbcontext.Configurations.FirstOrDefault(o => o.owner == "be_notifier" && o.key == "ssl_trust").value);
     senderPassword = _cache.GetOrCreate("SMTP_senderPassword", p => _dbcontext.Configurations.FirstOrDefault(o => o.owner == "be_notifier" && o.key == "sender_password").value);
     senderUsername = _cache.GetOrCreate("SMTP_senderUsername", p => _dbcontext.Configurations.FirstOrDefault(o => o.owner == "be_notifier" && o.key == "sender_username").value);
     startTlsEnable = _cache.GetOrCreate("SMTP_startTlsEnable", p => bool.Parse(_dbcontext.Configurations.FirstOrDefault(o => o.owner == "be_notifier" && o.key == "is_start_tls_enable").value));
     serverPort     = _cache.GetOrCreate("SMTP_serverPort", p => System.Convert.ToInt32(_dbcontext.Configurations.FirstOrDefault(o => o.owner == "be_notifier" && o.key == "server_port").value));
     serverHost     = _cache.GetOrCreate("SMTP_serverHost", p => _dbcontext.Configurations.FirstOrDefault(o => o.owner == "be_notifier" && o.key == "server_host").value);
     isAuth         = _cache.GetOrCreate("SMTP_isAuth", p => bool.Parse(_dbcontext.Configurations.FirstOrDefault(o => o.owner == "be_notifier" && o.key == "is_auth").value));
     notifierAlias  = _cache.GetOrCreate("SMTP_notifierAlias", p => _dbcontext.Configurations.FirstOrDefault(o => o.owner == "be_notifier" && o.key == "notifier_alias").value);
 }
Esempio n. 4
0
        private static Task HandleExceptionAsync(HttpContext context, Exception ex, WorkFlowPostgreSqlContext dbcontext)
        {
            try
            {
                var exception = new T_Exception()
                {
                    message    = ex.Message.Substring(0, Math.Min(999, ex.Message.Length)),
                    stacktrace = ex.StackTrace.Substring(0, Math.Min(999, ex.StackTrace.Length)),
                    loglevel   = null,
                    timestamp  = DateTime.Now
                };
                var inner_exception = ex.InnerException;
                while (inner_exception != null)
                {
                    exception.innerexceptions += ">>>>>>" + inner_exception.Message;
                    inner_exception            = inner_exception.InnerException;
                }
                exception.innerexceptions = (exception.innerexceptions != null) ? exception.innerexceptions.Substring(0, Math.Min(1000, exception.innerexceptions.Length)) : null;
                dbcontext.Exceptions.Add(exception);
                dbcontext.SaveChanges();
            }
            catch (Exception e)
            {
            }
            if (context.Response.StatusCode == (int)HttpStatusCode.Unauthorized)
            {
                var results = JsonConvert.SerializeObject(new { error = "Login not found!" });
                context.Response.ContentType = "application/json";
                return(context.Response.WriteAsync(results));
            }
            if (context.Response.StatusCode == (int)HttpStatusCode.Forbidden)
            {
                var results = JsonConvert.SerializeObject(new { error = "Permission denied! Forbidden" });
                context.Response.ContentType = "application/json";
                return(context.Response.WriteAsync(results));
            }
            var code   = HttpStatusCode.InternalServerError; // 500 if unexpected
            var result = JsonConvert.SerializeObject(new { error = "Some Error has occurred in API check logs or contact administrator" });

            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)code;
            return(context.Response.WriteAsync(result));
        }
Esempio n. 5
0
 public static void LogInformation(this WorkFlowPostgreSqlContext dbcontext, string logMessage)
 {
     try
     {
         var exception = new T_Exception()
         {
             message         = logMessage.Substring(0, Math.Min(999, logMessage.Length)),
             stacktrace      = null,
             loglevel        = "Information",
             timestamp       = DateTime.Now,
             innerexceptions = null
         };
         dbcontext.Exceptions.Add(exception);
         dbcontext.SaveChanges();
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Esempio n. 6
0
 public static string GetOracleConnectionString(WorkFlowPostgreSqlContext _dbcontext)
 {
     try
     {
         Dictionary <string, string> config = null;
         var bsiconf    = _dbcontext.Configurations.FirstOrDefault(o => o.owner == "be_bsi" && o.key == "bsi_api_url");
         var oracleconf = _dbcontext.Configurations.FirstOrDefault(o => o.owner == "be_oracle" && o.key == "con_str");
         if (bsiconf == null || oracleconf == null)
         {
             var e = new Exception("Configuration of BSI or Oracle does not exist");
             throw e;
         }
         using (var client = new HttpClient())
         {
             string basePath = bsiconf.value;
             string apiPath  = "/api/OracleCon/GetOracleConnection";
             var    output   = QuantisUtilities.FixHttpURLForCall(basePath, apiPath);
             client.BaseAddress = new Uri(output.Item1);
             var response = client.GetAsync(output.Item2).Result;
             if (response.IsSuccessStatusCode)
             {
                 config = JsonConvert.DeserializeObject <Dictionary <string, string> >(response.Content.ReadAsStringAsync().Result);
             }
             else
             {
                 var e = new Exception(string.Format("Connection to retrieve Orcle credentials cannot be created: basePath: {0} apipath: {1}", basePath, apiPath));
                 throw e;
             }
         }
         string finalconfig = string.Format(oracleconf.value, config["datasource"], config["username"], config["password"]);
         //string finalconfig = string.Format(oracleconf.value, "oblicore", "oblicore", "oblicore");
         return(finalconfig);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
        public async Task Invoke(HttpContext context, WorkFlowPostgreSqlContext _context, ILogger <AuthenticationMiddleware> _logger, IInformationService info, IMemoryCache memoryCache)
        {
            if (_authentications == null)
            {
                _authentications = _context.Authentication.Select(o => new Tuple <string, string>(o.Username, o.Password)).ToList();
            }
            _logger.LogError(string.IsNullOrEmpty(context.Request.Headers["Authorization"].ToString()) ? "No Authorization in header" : context.Request.Headers["Authorization"].ToString());
            string token = context.Request.Headers["AuthToken"];

            if (!string.IsNullOrEmpty(token))
            {
                Encoding encoding = Encoding.GetEncoding("iso-8859-1");
                string   mytoken  = encoding.GetString(Convert.FromBase64String(token));
                //string mytoken = token;
                var token_entity = _context.Sessions.FirstOrDefault(o => o.session_token == token && o.logout_time == null && o.expire_time > DateTime.Now);
                if (token_entity != null)
                {
                    var user_entity = _context.CatalogUsers.FirstOrDefault(o => o.ca_bsi_account == token_entity.user_name);

                    AuthUser usr = new AuthUser()
                    {
                        UserId       = token_entity.user_id,
                        UserName     = user_entity.ca_bsi_account,
                        SessionToken = token_entity.session_token,
                        Permissions  = (List <string>)memoryCache.GetOrCreate("Permission_" + token_entity.user_id, f =>
                        {
                            var permissions = info.GetPermissionsByUserId(token_entity.user_id).Select(o => o.Code).ToList();
                            return(permissions);
                        })
                    };
                    token_entity.expire_time = DateTime.Now.AddMinutes(getSessionTimeOut(_context));
                    _context.SaveChanges();
                    context.User = usr;
                }
            }
            string authHeader = context.Request.Headers["Authorization"];

            if (authHeader != null && authHeader.StartsWith("Basic"))
            {
                //Extract credentials
                string   encodedUsernamePassword = authHeader.Substring("Basic ".Length).Trim();
                Encoding encoding         = Encoding.GetEncoding("iso-8859-1");
                string   usernamePassword = encoding.GetString(Convert.FromBase64String(encodedUsernamePassword));
                _logger.LogError(usernamePassword);
                int seperatorIndex = usernamePassword.IndexOf(':');

                var username = usernamePassword.Substring(0, seperatorIndex);
                var password = usernamePassword.Substring(seperatorIndex + 1);

                if (_authentications.FirstOrDefault(o => o.Item1 == username && o.Item2 == password) != null)
                {
                    await _next.Invoke(context);
                }
                else
                {
                    context.Response.Headers["WWW-Authenticate"] = "Basic";// no authorization header
                    context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                    return;
                }
            }
            else
            {
                context.Response.Headers["WWW-Authenticate"] = "Basic";// no authorization header
                context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                return;
            }
        }