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); }
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); }
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)); }
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; } }
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; } }