Normalizing some more line endings

This commit is contained in:
Lombiq
2015-12-09 00:41:46 +01:00
parent 4105f4490b
commit 6cc481e825
3 changed files with 724 additions and 724 deletions
+418 -418
View File
@@ -1,419 +1,419 @@
using System; using System;
using System.Globalization; using System.Globalization;
using System.Web; using System.Web;
using Orchard.Environment; using Orchard.Environment;
using Orchard.Environment.Configuration; using Orchard.Environment.Configuration;
using log4net; using log4net;
using log4net.Core; using log4net.Core;
using log4net.Util; using log4net.Util;
using Logger = Castle.Core.Logging.ILogger; using Logger = Castle.Core.Logging.ILogger;
namespace Orchard.Logging { namespace Orchard.Logging {
[Serializable] [Serializable]
public class OrchardLog4netLogger : MarshalByRefObject, Logger, IShim { public class OrchardLog4netLogger : MarshalByRefObject, Logger, IShim {
private static readonly Type declaringType = typeof(OrchardLog4netLogger); private static readonly Type declaringType = typeof(OrchardLog4netLogger);
private readonly Lazy<ShellSettings> _shellSettings; private readonly Lazy<ShellSettings> _shellSettings;
public IOrchardHostContainer HostContainer { get; set; } public IOrchardHostContainer HostContainer { get; set; }
public OrchardLog4netLogger(log4net.Core.ILogger logger, OrchardLog4netFactory factory) { public OrchardLog4netLogger(log4net.Core.ILogger logger, OrchardLog4netFactory factory) {
OrchardHostContainerRegistry.RegisterShim(this); OrchardHostContainerRegistry.RegisterShim(this);
Logger = logger; Logger = logger;
Factory = factory; Factory = factory;
_shellSettings = new Lazy<ShellSettings>(LoadSettings); _shellSettings = new Lazy<ShellSettings>(LoadSettings);
} }
internal OrchardLog4netLogger() { internal OrchardLog4netLogger() {
} }
internal OrchardLog4netLogger(ILog log, OrchardLog4netFactory factory) internal OrchardLog4netLogger(ILog log, OrchardLog4netFactory factory)
: this(log.Logger, factory) { : this(log.Logger, factory) {
} }
private ShellSettings LoadSettings() { private ShellSettings LoadSettings() {
var ctx = HttpContext.Current; var ctx = HttpContext.Current;
if (ctx == null) if (ctx == null)
return null; return null;
var runningShellTable = HostContainer.Resolve<IRunningShellTable>(); var runningShellTable = HostContainer.Resolve<IRunningShellTable>();
if (runningShellTable == null) if (runningShellTable == null)
return null; return null;
var shellSettings = runningShellTable.Match(new HttpContextWrapper(ctx)); var shellSettings = runningShellTable.Match(new HttpContextWrapper(ctx));
if (shellSettings == null) if (shellSettings == null)
return null; return null;
var orchardHost = HostContainer.Resolve<IOrchardHost>(); var orchardHost = HostContainer.Resolve<IOrchardHost>();
if (orchardHost == null) if (orchardHost == null)
return null; return null;
var shellContext = orchardHost.GetShellContext(shellSettings); var shellContext = orchardHost.GetShellContext(shellSettings);
if (shellContext == null || shellContext.Settings == null) if (shellContext == null || shellContext.Settings == null)
return null; return null;
return shellContext.Settings; return shellContext.Settings;
} }
// Load the log4net thread with additional properties if they are available // Load the log4net thread with additional properties if they are available
protected internal void AddExtendedThreadInfo() { protected internal void AddExtendedThreadInfo() {
if (_shellSettings.Value != null) { if (_shellSettings.Value != null) {
ThreadContext.Properties["Tenant"] = _shellSettings.Value.Name; ThreadContext.Properties["Tenant"] = _shellSettings.Value.Name;
} }
try { try {
var ctx = HttpContext.Current; var ctx = HttpContext.Current;
if (ctx != null) { if (ctx != null) {
ThreadContext.Properties["Url"] = ctx.Request.Url.ToString(); ThreadContext.Properties["Url"] = ctx.Request.Url.ToString();
} }
} }
catch(HttpException) { catch(HttpException) {
// can happen on cloud service for an unknown reason // can happen on cloud service for an unknown reason
} }
} }
public bool IsDebugEnabled { public bool IsDebugEnabled {
get { return Logger.IsEnabledFor(Level.Debug); } get { return Logger.IsEnabledFor(Level.Debug); }
} }
public bool IsErrorEnabled { public bool IsErrorEnabled {
get { return Logger.IsEnabledFor(Level.Error); } get { return Logger.IsEnabledFor(Level.Error); }
} }
public bool IsFatalEnabled { public bool IsFatalEnabled {
get { return Logger.IsEnabledFor(Level.Fatal); } get { return Logger.IsEnabledFor(Level.Fatal); }
} }
public bool IsInfoEnabled { public bool IsInfoEnabled {
get { return Logger.IsEnabledFor(Level.Info); } get { return Logger.IsEnabledFor(Level.Info); }
} }
public bool IsWarnEnabled { public bool IsWarnEnabled {
get { return Logger.IsEnabledFor(Level.Warn); } get { return Logger.IsEnabledFor(Level.Warn); }
} }
protected internal OrchardLog4netFactory Factory { get; set; } protected internal OrchardLog4netFactory Factory { get; set; }
protected internal log4net.Core.ILogger Logger { get; set; } protected internal log4net.Core.ILogger Logger { get; set; }
public override string ToString() { public override string ToString() {
return Logger.ToString(); return Logger.ToString();
} }
public virtual Logger CreateChildLogger(String name) { public virtual Logger CreateChildLogger(String name) {
return Factory.Create(Logger.Name + "." + name); return Factory.Create(Logger.Name + "." + name);
} }
public void Debug(String message) { public void Debug(String message) {
if (IsDebugEnabled) { if (IsDebugEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Debug, message, null); Logger.Log(declaringType, Level.Debug, message, null);
} }
} }
public void Debug(Func<string> messageFactory) { public void Debug(Func<string> messageFactory) {
if (IsDebugEnabled) { if (IsDebugEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Debug, messageFactory.Invoke(), null); Logger.Log(declaringType, Level.Debug, messageFactory.Invoke(), null);
} }
} }
public void Debug(String message, Exception exception) { public void Debug(String message, Exception exception) {
if (IsDebugEnabled) { if (IsDebugEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Debug, message, exception); Logger.Log(declaringType, Level.Debug, message, exception);
} }
} }
public void DebugFormat(String format, params Object[] args) { public void DebugFormat(String format, params Object[] args) {
if (IsDebugEnabled) { if (IsDebugEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Debug, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null); Logger.Log(declaringType, Level.Debug, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null);
} }
} }
public void DebugFormat(Exception exception, String format, params Object[] args) { public void DebugFormat(Exception exception, String format, params Object[] args) {
if (IsDebugEnabled) { if (IsDebugEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Debug, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), exception); Logger.Log(declaringType, Level.Debug, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), exception);
} }
} }
public void DebugFormat(IFormatProvider formatProvider, String format, params Object[] args) { public void DebugFormat(IFormatProvider formatProvider, String format, params Object[] args) {
if (IsDebugEnabled) { if (IsDebugEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Debug, new SystemStringFormat(formatProvider, format, args), null); Logger.Log(declaringType, Level.Debug, new SystemStringFormat(formatProvider, format, args), null);
} }
} }
public void DebugFormat(Exception exception, IFormatProvider formatProvider, String format, params Object[] args) { public void DebugFormat(Exception exception, IFormatProvider formatProvider, String format, params Object[] args) {
if (IsDebugEnabled) { if (IsDebugEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Debug, new SystemStringFormat(formatProvider, format, args), exception); Logger.Log(declaringType, Level.Debug, new SystemStringFormat(formatProvider, format, args), exception);
} }
} }
public void Error(String message) { public void Error(String message) {
if (IsErrorEnabled) { if (IsErrorEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Error, message, null); Logger.Log(declaringType, Level.Error, message, null);
} }
} }
public void Error(Func<string> messageFactory) { public void Error(Func<string> messageFactory) {
if (IsErrorEnabled) { if (IsErrorEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Error, messageFactory.Invoke(), null); Logger.Log(declaringType, Level.Error, messageFactory.Invoke(), null);
} }
} }
public void Error(String message, Exception exception) { public void Error(String message, Exception exception) {
if (IsErrorEnabled) { if (IsErrorEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Error, message, exception); Logger.Log(declaringType, Level.Error, message, exception);
} }
} }
public void ErrorFormat(String format, params Object[] args) { public void ErrorFormat(String format, params Object[] args) {
if (IsErrorEnabled) { if (IsErrorEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Error, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null); Logger.Log(declaringType, Level.Error, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null);
} }
} }
public void ErrorFormat(Exception exception, String format, params Object[] args) { public void ErrorFormat(Exception exception, String format, params Object[] args) {
if (IsErrorEnabled) { if (IsErrorEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Error, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), exception); Logger.Log(declaringType, Level.Error, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), exception);
} }
} }
public void ErrorFormat(IFormatProvider formatProvider, String format, params Object[] args) { public void ErrorFormat(IFormatProvider formatProvider, String format, params Object[] args) {
if (IsErrorEnabled) { if (IsErrorEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Error, new SystemStringFormat(formatProvider, format, args), null); Logger.Log(declaringType, Level.Error, new SystemStringFormat(formatProvider, format, args), null);
} }
} }
public void ErrorFormat(Exception exception, IFormatProvider formatProvider, String format, params Object[] args) { public void ErrorFormat(Exception exception, IFormatProvider formatProvider, String format, params Object[] args) {
if (IsErrorEnabled) { if (IsErrorEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Error, new SystemStringFormat(formatProvider, format, args), exception); Logger.Log(declaringType, Level.Error, new SystemStringFormat(formatProvider, format, args), exception);
} }
} }
public void Fatal(String message) { public void Fatal(String message) {
if (IsFatalEnabled) { if (IsFatalEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Fatal, message, null); Logger.Log(declaringType, Level.Fatal, message, null);
} }
} }
public void Fatal(Func<string> messageFactory) { public void Fatal(Func<string> messageFactory) {
if (IsFatalEnabled) { if (IsFatalEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Fatal, messageFactory.Invoke(), null); Logger.Log(declaringType, Level.Fatal, messageFactory.Invoke(), null);
} }
} }
public void Fatal(String message, Exception exception) { public void Fatal(String message, Exception exception) {
if (IsFatalEnabled) { if (IsFatalEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Fatal, message, exception); Logger.Log(declaringType, Level.Fatal, message, exception);
} }
} }
public void FatalFormat(String format, params Object[] args) { public void FatalFormat(String format, params Object[] args) {
if (IsFatalEnabled) { if (IsFatalEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Fatal, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null); Logger.Log(declaringType, Level.Fatal, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null);
} }
} }
public void FatalFormat(Exception exception, String format, params Object[] args) { public void FatalFormat(Exception exception, String format, params Object[] args) {
if (IsFatalEnabled) { if (IsFatalEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Fatal, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), exception); Logger.Log(declaringType, Level.Fatal, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), exception);
} }
} }
public void FatalFormat(IFormatProvider formatProvider, String format, params Object[] args) { public void FatalFormat(IFormatProvider formatProvider, String format, params Object[] args) {
if (IsFatalEnabled) { if (IsFatalEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Fatal, new SystemStringFormat(formatProvider, format, args), null); Logger.Log(declaringType, Level.Fatal, new SystemStringFormat(formatProvider, format, args), null);
} }
} }
public void FatalFormat(Exception exception, IFormatProvider formatProvider, String format, params Object[] args) { public void FatalFormat(Exception exception, IFormatProvider formatProvider, String format, params Object[] args) {
if (IsFatalEnabled) { if (IsFatalEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Fatal, new SystemStringFormat(formatProvider, format, args), exception); Logger.Log(declaringType, Level.Fatal, new SystemStringFormat(formatProvider, format, args), exception);
} }
} }
public void Info(String message) { public void Info(String message) {
if (IsInfoEnabled) { if (IsInfoEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Info, message, null); Logger.Log(declaringType, Level.Info, message, null);
} }
} }
public void Info(Func<string> messageFactory) { public void Info(Func<string> messageFactory) {
if (IsInfoEnabled) { if (IsInfoEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Info, messageFactory.Invoke(), null); Logger.Log(declaringType, Level.Info, messageFactory.Invoke(), null);
} }
} }
public void Info(String message, Exception exception) { public void Info(String message, Exception exception) {
if (IsInfoEnabled) { if (IsInfoEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Info, message, exception); Logger.Log(declaringType, Level.Info, message, exception);
} }
} }
public void InfoFormat(String format, params Object[] args) { public void InfoFormat(String format, params Object[] args) {
if (IsInfoEnabled) { if (IsInfoEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Info, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null); Logger.Log(declaringType, Level.Info, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null);
} }
} }
public void InfoFormat(Exception exception, String format, params Object[] args) { public void InfoFormat(Exception exception, String format, params Object[] args) {
if (IsInfoEnabled) { if (IsInfoEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Info, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), exception); Logger.Log(declaringType, Level.Info, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), exception);
} }
} }
public void InfoFormat(IFormatProvider formatProvider, String format, params Object[] args) { public void InfoFormat(IFormatProvider formatProvider, String format, params Object[] args) {
if (IsInfoEnabled) { if (IsInfoEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Info, new SystemStringFormat(formatProvider, format, args), null); Logger.Log(declaringType, Level.Info, new SystemStringFormat(formatProvider, format, args), null);
} }
} }
public void InfoFormat(Exception exception, IFormatProvider formatProvider, String format, params Object[] args) { public void InfoFormat(Exception exception, IFormatProvider formatProvider, String format, params Object[] args) {
if (IsInfoEnabled) { if (IsInfoEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Info, new SystemStringFormat(formatProvider, format, args), exception); Logger.Log(declaringType, Level.Info, new SystemStringFormat(formatProvider, format, args), exception);
} }
} }
public void Warn(String message) { public void Warn(String message) {
if (IsWarnEnabled) { if (IsWarnEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Warn, message, null); Logger.Log(declaringType, Level.Warn, message, null);
} }
} }
public void Warn(Func<string> messageFactory) { public void Warn(Func<string> messageFactory) {
if (IsWarnEnabled) { if (IsWarnEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Warn, messageFactory.Invoke(), null); Logger.Log(declaringType, Level.Warn, messageFactory.Invoke(), null);
} }
} }
public void Warn(String message, Exception exception) { public void Warn(String message, Exception exception) {
if (IsWarnEnabled) { if (IsWarnEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Warn, message, exception); Logger.Log(declaringType, Level.Warn, message, exception);
} }
} }
public void WarnFormat(String format, params Object[] args) { public void WarnFormat(String format, params Object[] args) {
if (IsWarnEnabled) { if (IsWarnEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Warn, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null); Logger.Log(declaringType, Level.Warn, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), null);
} }
} }
public void WarnFormat(Exception exception, String format, params Object[] args) { public void WarnFormat(Exception exception, String format, params Object[] args) {
if (IsWarnEnabled) { if (IsWarnEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Warn, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), exception); Logger.Log(declaringType, Level.Warn, new SystemStringFormat(CultureInfo.InvariantCulture, format, args), exception);
} }
} }
public void WarnFormat(IFormatProvider formatProvider, String format, params Object[] args) { public void WarnFormat(IFormatProvider formatProvider, String format, params Object[] args) {
if (IsWarnEnabled) { if (IsWarnEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Warn, new SystemStringFormat(formatProvider, format, args), null); Logger.Log(declaringType, Level.Warn, new SystemStringFormat(formatProvider, format, args), null);
} }
} }
public void WarnFormat(Exception exception, IFormatProvider formatProvider, String format, params Object[] args) { public void WarnFormat(Exception exception, IFormatProvider formatProvider, String format, params Object[] args) {
if (IsWarnEnabled) { if (IsWarnEnabled) {
AddExtendedThreadInfo(); AddExtendedThreadInfo();
Logger.Log(declaringType, Level.Warn, new SystemStringFormat(formatProvider, format, args), exception); Logger.Log(declaringType, Level.Warn, new SystemStringFormat(formatProvider, format, args), exception);
} }
} }
[Obsolete("Use IsFatalEnabled instead")] [Obsolete("Use IsFatalEnabled instead")]
public bool IsFatalErrorEnabled { public bool IsFatalErrorEnabled {
get { get {
return Logger.IsEnabledFor(Level.Fatal); return Logger.IsEnabledFor(Level.Fatal);
} }
} }
[Obsolete("Use DebugFormat instead")] [Obsolete("Use DebugFormat instead")]
public void Debug(string format, params object[] args) { public void Debug(string format, params object[] args) {
if (IsDebugEnabled) { if (IsDebugEnabled) {
Logger.Log(declaringType, Level.Debug, string.Format(format, args), null); Logger.Log(declaringType, Level.Debug, string.Format(format, args), null);
} }
} }
[Obsolete("Use ErrorFormat instead")] [Obsolete("Use ErrorFormat instead")]
public void Error(string format, params object[] args) { public void Error(string format, params object[] args) {
if (IsErrorEnabled) { if (IsErrorEnabled) {
Logger.Log(declaringType, Level.Error, string.Format(format, args), null); Logger.Log(declaringType, Level.Error, string.Format(format, args), null);
} }
} }
[Obsolete("Use FatalFormat instead")] [Obsolete("Use FatalFormat instead")]
public void Fatal(string format, params object[] args) { public void Fatal(string format, params object[] args) {
if (IsFatalEnabled) { if (IsFatalEnabled) {
Logger.Log(declaringType, Level.Fatal, string.Format(format, args), null); Logger.Log(declaringType, Level.Fatal, string.Format(format, args), null);
} }
} }
[Obsolete("Use Fatal instead")] [Obsolete("Use Fatal instead")]
public void FatalError(string message) { public void FatalError(string message) {
if (IsFatalErrorEnabled) { if (IsFatalErrorEnabled) {
Logger.Log(declaringType, Level.Fatal, message, null); Logger.Log(declaringType, Level.Fatal, message, null);
} }
} }
[Obsolete("Use FatalFormat instead")] [Obsolete("Use FatalFormat instead")]
public void FatalError(string format, params object[] args) { public void FatalError(string format, params object[] args) {
if (IsFatalErrorEnabled) { if (IsFatalErrorEnabled) {
Logger.Log(declaringType, Level.Fatal, string.Format(format, args), null); Logger.Log(declaringType, Level.Fatal, string.Format(format, args), null);
} }
} }
[Obsolete("Use Fatal instead")] [Obsolete("Use Fatal instead")]
public void FatalError(string message, Exception exception) { public void FatalError(string message, Exception exception) {
if (IsFatalErrorEnabled) { if (IsFatalErrorEnabled) {
Logger.Log(declaringType, Level.Fatal, message, exception); Logger.Log(declaringType, Level.Fatal, message, exception);
} }
} }
[Obsolete("Use InfoFormat instead")] [Obsolete("Use InfoFormat instead")]
public void Info(string format, params object[] args) { public void Info(string format, params object[] args) {
if (IsInfoEnabled) { if (IsInfoEnabled) {
Logger.Log(declaringType, Level.Info, string.Format(format, args), null); Logger.Log(declaringType, Level.Info, string.Format(format, args), null);
} }
} }
[Obsolete("Use WarnFormat instead")] [Obsolete("Use WarnFormat instead")]
public void Warn(string format, params object[] args) { public void Warn(string format, params object[] args) {
if (IsWarnEnabled) { if (IsWarnEnabled) {
Logger.Log(declaringType, Level.Warn, string.Format(format, args), null); Logger.Log(declaringType, Level.Warn, string.Format(format, args), null);
} }
} }
} }
} }
@@ -1,145 +1,145 @@
using System; using System;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Linq; using System.Linq;
using System.Web; using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Routing; using System.Web.Routing;
using JetBrains.Annotations; using JetBrains.Annotations;
using Orchard.Environment.Extensions; using Orchard.Environment.Extensions;
using Orchard.Mvc.Filters; using Orchard.Mvc.Filters;
using Orchard.Security; using Orchard.Security;
namespace Orchard.Mvc.AntiForgery { namespace Orchard.Mvc.AntiForgery {
[UsedImplicitly] [UsedImplicitly]
public class AntiForgeryAuthorizationFilter : FilterProvider, IAuthorizationFilter { public class AntiForgeryAuthorizationFilter : FilterProvider, IAuthorizationFilter {
private readonly IAuthenticationService _authenticationService; private readonly IAuthenticationService _authenticationService;
private readonly IExtensionManager _extensionManager; private readonly IExtensionManager _extensionManager;
public AntiForgeryAuthorizationFilter(IAuthenticationService authenticationService, IExtensionManager extensionManager) { public AntiForgeryAuthorizationFilter(IAuthenticationService authenticationService, IExtensionManager extensionManager) {
_authenticationService = authenticationService; _authenticationService = authenticationService;
_extensionManager = extensionManager; _extensionManager = extensionManager;
} }
public void OnAuthorization(AuthorizationContext filterContext) { public void OnAuthorization(AuthorizationContext filterContext) {
// If the request is not a POST or is anonymous, and the request doesn't have validation forced, return. // If the request is not a POST or is anonymous, and the request doesn't have validation forced, return.
if ((filterContext.HttpContext.Request.HttpMethod != "POST" || if ((filterContext.HttpContext.Request.HttpMethod != "POST" ||
_authenticationService.GetAuthenticatedUser() == null) && !ShouldValidateGet(filterContext)) { _authenticationService.GetAuthenticatedUser() == null) && !ShouldValidateGet(filterContext)) {
return; return;
} }
if (!IsAntiForgeryProtectionEnabled(filterContext)) { if (!IsAntiForgeryProtectionEnabled(filterContext)) {
return; return;
} }
var validator = new ValidateAntiForgeryTokenAttribute(); var validator = new ValidateAntiForgeryTokenAttribute();
validator.OnAuthorization(filterContext); validator.OnAuthorization(filterContext);
if (filterContext.HttpContext is HackHttpContext) if (filterContext.HttpContext is HackHttpContext)
filterContext.HttpContext = ((HackHttpContext)filterContext.HttpContext).OriginalHttpContextBase; filterContext.HttpContext = ((HackHttpContext)filterContext.HttpContext).OriginalHttpContextBase;
} }
private bool IsAntiForgeryProtectionEnabled(AuthorizationContext context) { private bool IsAntiForgeryProtectionEnabled(AuthorizationContext context) {
// POST is opt-out // POST is opt-out
var attributes = var attributes =
(ValidateAntiForgeryTokenOrchardAttribute[]) (ValidateAntiForgeryTokenOrchardAttribute[])
context.ActionDescriptor.GetCustomAttributes(typeof (ValidateAntiForgeryTokenOrchardAttribute), false); context.ActionDescriptor.GetCustomAttributes(typeof (ValidateAntiForgeryTokenOrchardAttribute), false);
if (attributes.Length > 0 && !attributes[0].Enabled) return false; if (attributes.Length > 0 && !attributes[0].Enabled) return false;
var currentModule = GetArea(context.RouteData); var currentModule = GetArea(context.RouteData);
return !String.IsNullOrEmpty(currentModule) return !String.IsNullOrEmpty(currentModule)
&& (_extensionManager.AvailableExtensions() && (_extensionManager.AvailableExtensions()
.First(descriptor => String.Equals(descriptor.Id, currentModule, StringComparison.OrdinalIgnoreCase)) .First(descriptor => String.Equals(descriptor.Id, currentModule, StringComparison.OrdinalIgnoreCase))
.AntiForgery.Equals("enabled", StringComparison.OrdinalIgnoreCase)); .AntiForgery.Equals("enabled", StringComparison.OrdinalIgnoreCase));
} }
private static string GetArea(RouteData routeData) { private static string GetArea(RouteData routeData) {
if (routeData.Values.ContainsKey("area")) if (routeData.Values.ContainsKey("area"))
return routeData.Values["area"] as string; return routeData.Values["area"] as string;
return routeData.DataTokens["area"] as string ?? ""; return routeData.DataTokens["area"] as string ?? "";
} }
private static bool ShouldValidateGet(AuthorizationContext context) { private static bool ShouldValidateGet(AuthorizationContext context) {
const string tokenFieldName = "__RequestVerificationToken"; const string tokenFieldName = "__RequestVerificationToken";
var attributes = var attributes =
(ValidateAntiForgeryTokenOrchardAttribute[]) (ValidateAntiForgeryTokenOrchardAttribute[])
context.ActionDescriptor.GetCustomAttributes(typeof (ValidateAntiForgeryTokenOrchardAttribute), false); context.ActionDescriptor.GetCustomAttributes(typeof (ValidateAntiForgeryTokenOrchardAttribute), false);
if (attributes.Length > 0 && attributes[0].Enabled) { if (attributes.Length > 0 && attributes[0].Enabled) {
var request = context.HttpContext.Request; var request = context.HttpContext.Request;
//HAACK: (erikpo) If the token is in the querystring, put it in the form so MVC can validate it //HAACK: (erikpo) If the token is in the querystring, put it in the form so MVC can validate it
if (!string.IsNullOrEmpty(request.QueryString[tokenFieldName])) { if (!string.IsNullOrEmpty(request.QueryString[tokenFieldName])) {
context.HttpContext = new HackHttpContext(context.HttpContext, (HttpContext)context.HttpContext.Items["originalHttpContext"]); context.HttpContext = new HackHttpContext(context.HttpContext, (HttpContext)context.HttpContext.Items["originalHttpContext"]);
((HackHttpRequest)context.HttpContext.Request).AddFormValue(tokenFieldName, context.HttpContext.Request.QueryString[tokenFieldName]); ((HackHttpRequest)context.HttpContext.Request).AddFormValue(tokenFieldName, context.HttpContext.Request.QueryString[tokenFieldName]);
} }
return true; return true;
} }
return false; return false;
} }
#region HackHttpContext #region HackHttpContext
private class HackHttpContext : HttpContextWrapper { private class HackHttpContext : HttpContextWrapper {
private readonly HttpContextBase _originalHttpContextBase; private readonly HttpContextBase _originalHttpContextBase;
private readonly HttpContext _originalHttpContext; private readonly HttpContext _originalHttpContext;
private HttpRequestWrapper _request; private HttpRequestWrapper _request;
public HackHttpContext(HttpContextBase httpContextBase, HttpContext httpContext) public HackHttpContext(HttpContextBase httpContextBase, HttpContext httpContext)
: base(httpContext) { : base(httpContext) {
_originalHttpContextBase = httpContextBase; _originalHttpContextBase = httpContextBase;
_originalHttpContext = httpContext; _originalHttpContext = httpContext;
} }
public HttpContextBase OriginalHttpContextBase { public HttpContextBase OriginalHttpContextBase {
get { return _originalHttpContextBase; } get { return _originalHttpContextBase; }
} }
public override HttpRequestBase Request public override HttpRequestBase Request
{ {
get get
{ {
if (_request == null) if (_request == null)
_request = new HackHttpRequest(_originalHttpContext.Request); _request = new HackHttpRequest(_originalHttpContext.Request);
return _request; return _request;
} }
} }
} }
#endregion #endregion
#region HackHttpRequest #region HackHttpRequest
private class HackHttpRequest : HttpRequestWrapper { private class HackHttpRequest : HttpRequestWrapper {
private readonly HttpRequest _originalHttpRequest; private readonly HttpRequest _originalHttpRequest;
private NameValueCollection _form; private NameValueCollection _form;
public HackHttpRequest(HttpRequest httpRequest) public HackHttpRequest(HttpRequest httpRequest)
: base(httpRequest) { : base(httpRequest) {
_originalHttpRequest = httpRequest; _originalHttpRequest = httpRequest;
} }
public override NameValueCollection Form public override NameValueCollection Form
{ {
get get
{ {
if (_form == null) if (_form == null)
_form = new NameValueCollection(_originalHttpRequest.Form); _form = new NameValueCollection(_originalHttpRequest.Form);
return _form; return _form;
} }
} }
public void AddFormValue(string key, string value) { public void AddFormValue(string key, string value) {
Form.Add(key, value); Form.Add(key, value);
} }
} }
#endregion #endregion
} }
} }
+162 -162
View File
@@ -1,162 +1,162 @@
using System; using System;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Mvc.Html; using System.Web.Mvc.Html;
using System.Web.Routing; using System.Web.Routing;
using Orchard.ContentManagement; using Orchard.ContentManagement;
using Orchard.Utility.Extensions; using Orchard.Utility.Extensions;
namespace Orchard.Mvc.Html { namespace Orchard.Mvc.Html {
public static class ContentItemExtensions { public static class ContentItemExtensions {
public static MvcHtmlString ItemDisplayText(this HtmlHelper html, IContent content) { public static MvcHtmlString ItemDisplayText(this HtmlHelper html, IContent content) {
return ItemDisplayText(html, content, true); return ItemDisplayText(html, content, true);
} }
public static MvcHtmlString ItemDisplayText(this HtmlHelper html, IContent content, bool encode) { public static MvcHtmlString ItemDisplayText(this HtmlHelper html, IContent content, bool encode) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
if (metadata.DisplayText == null) if (metadata.DisplayText == null)
return null; return null;
if (encode) { if (encode) {
return MvcHtmlString.Create(html.Encode(metadata.DisplayText)); return MvcHtmlString.Create(html.Encode(metadata.DisplayText));
} else { } else {
return MvcHtmlString.Create(metadata.DisplayText); return MvcHtmlString.Create(metadata.DisplayText);
} }
} }
public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, IContent content) { public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, IContent content) {
return ItemDisplayLink(html, null, content, null); return ItemDisplayLink(html, null, content, null);
} }
public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, IContent content, object htmlAttributes) { public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, IContent content, object htmlAttributes) {
return ItemDisplayLink(html, null, content, htmlAttributes); return ItemDisplayLink(html, null, content, htmlAttributes);
} }
public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, string linkText, IContent content) { public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, string linkText, IContent content) {
return ItemDisplayLink(html, linkText, content, null); return ItemDisplayLink(html, linkText, content, null);
} }
public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, string linkText, IContent content, object htmlAttributes = null) { public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, string linkText, IContent content, object htmlAttributes = null) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
if (metadata.DisplayRouteValues == null) if (metadata.DisplayRouteValues == null)
return null; return null;
return html.ActionLink( return html.ActionLink(
NonNullOrEmpty(linkText, metadata.DisplayText, "view"), NonNullOrEmpty(linkText, metadata.DisplayText, "view"),
Convert.ToString(metadata.DisplayRouteValues["action"]), Convert.ToString(metadata.DisplayRouteValues["action"]),
metadata.DisplayRouteValues, metadata.DisplayRouteValues,
new RouteValueDictionary(htmlAttributes)); new RouteValueDictionary(htmlAttributes));
} }
public static string ItemDisplayUrl(this UrlHelper urlHelper, IContent content) { public static string ItemDisplayUrl(this UrlHelper urlHelper, IContent content) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
if (metadata.DisplayRouteValues == null) if (metadata.DisplayRouteValues == null)
return null; return null;
return urlHelper.Action( return urlHelper.Action(
Convert.ToString(metadata.DisplayRouteValues["action"]), Convert.ToString(metadata.DisplayRouteValues["action"]),
metadata.DisplayRouteValues); metadata.DisplayRouteValues);
} }
public static MvcHtmlString ItemRemoveLink(this HtmlHelper html, IContent content) { public static MvcHtmlString ItemRemoveLink(this HtmlHelper html, IContent content) {
return ItemRemoveLink(html, null, content, null); return ItemRemoveLink(html, null, content, null);
} }
public static MvcHtmlString ItemRemoveLink(this HtmlHelper html, string linkText, IContent content, object additionalRouteValues) { public static MvcHtmlString ItemRemoveLink(this HtmlHelper html, string linkText, IContent content, object additionalRouteValues) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
if (metadata.RemoveRouteValues == null) if (metadata.RemoveRouteValues == null)
return null; return null;
return html.ActionLink( return html.ActionLink(
NonNullOrEmpty(linkText, metadata.DisplayText, "remove"), NonNullOrEmpty(linkText, metadata.DisplayText, "remove"),
Convert.ToString(metadata.RemoveRouteValues["action"]), Convert.ToString(metadata.RemoveRouteValues["action"]),
metadata.RemoveRouteValues.Merge(additionalRouteValues)); metadata.RemoveRouteValues.Merge(additionalRouteValues));
} }
public static string ItemRemoveUrl(this UrlHelper urlHelper, IContent content, object additionalRouteValues) { public static string ItemRemoveUrl(this UrlHelper urlHelper, IContent content, object additionalRouteValues) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
if (metadata.RemoveRouteValues == null) if (metadata.RemoveRouteValues == null)
return null; return null;
return urlHelper.Action( return urlHelper.Action(
Convert.ToString(metadata.RemoveRouteValues["action"]), Convert.ToString(metadata.RemoveRouteValues["action"]),
metadata.RemoveRouteValues.Merge(additionalRouteValues)); metadata.RemoveRouteValues.Merge(additionalRouteValues));
} }
public static MvcHtmlString ItemEditLinkWithReturnUrl(this HtmlHelper html, string linkText, IContent content) { public static MvcHtmlString ItemEditLinkWithReturnUrl(this HtmlHelper html, string linkText, IContent content) {
return html.ItemEditLink(linkText, content, new { ReturnUrl = html.ViewContext.HttpContext.Request.RawUrl }); return html.ItemEditLink(linkText, content, new { ReturnUrl = html.ViewContext.HttpContext.Request.RawUrl });
} }
public static MvcHtmlString ItemEditLink(this HtmlHelper html, string linkText, IContent content) { public static MvcHtmlString ItemEditLink(this HtmlHelper html, string linkText, IContent content) {
return html.ItemEditLink(linkText, content, null); return html.ItemEditLink(linkText, content, null);
} }
public static MvcHtmlString ItemEditLink(this HtmlHelper html, string linkText, IContent content, object additionalRouteValues) { public static MvcHtmlString ItemEditLink(this HtmlHelper html, string linkText, IContent content, object additionalRouteValues) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
if (metadata.EditorRouteValues == null) if (metadata.EditorRouteValues == null)
return null; return null;
return html.ActionLink( return html.ActionLink(
NonNullOrEmpty(linkText, metadata.DisplayText, content.ContentItem.TypeDefinition.DisplayName), NonNullOrEmpty(linkText, metadata.DisplayText, content.ContentItem.TypeDefinition.DisplayName),
Convert.ToString(metadata.EditorRouteValues["action"]), Convert.ToString(metadata.EditorRouteValues["action"]),
metadata.EditorRouteValues.Merge(additionalRouteValues)); metadata.EditorRouteValues.Merge(additionalRouteValues));
} }
public static MvcHtmlString ItemEditLink(this HtmlHelper html, string linkText, IContent content, object additionalRouteValues, object htmlAttributes) { public static MvcHtmlString ItemEditLink(this HtmlHelper html, string linkText, IContent content, object additionalRouteValues, object htmlAttributes) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
if (metadata.EditorRouteValues == null) if (metadata.EditorRouteValues == null)
return null; return null;
return html.ActionLink( return html.ActionLink(
NonNullOrEmpty(linkText, metadata.DisplayText, content.ContentItem.TypeDefinition.DisplayName), NonNullOrEmpty(linkText, metadata.DisplayText, content.ContentItem.TypeDefinition.DisplayName),
Convert.ToString(metadata.EditorRouteValues["action"]), Convert.ToString(metadata.EditorRouteValues["action"]),
metadata.EditorRouteValues.Merge(additionalRouteValues), metadata.EditorRouteValues.Merge(additionalRouteValues),
htmlAttributes); htmlAttributes);
} }
public static MvcHtmlString ItemAdminLink(this HtmlHelper html, IContent content) { public static MvcHtmlString ItemAdminLink(this HtmlHelper html, IContent content) {
return ItemAdminLink(html, null, content); return ItemAdminLink(html, null, content);
} }
public static MvcHtmlString ItemAdminLink(this HtmlHelper html, string linkText, IContent content) { public static MvcHtmlString ItemAdminLink(this HtmlHelper html, string linkText, IContent content) {
return html.ItemAdminLink(linkText, content, null); return html.ItemAdminLink(linkText, content, null);
} }
public static MvcHtmlString ItemAdminLink(this HtmlHelper html, string linkText, IContent content, object additionalRouteValues) { public static MvcHtmlString ItemAdminLink(this HtmlHelper html, string linkText, IContent content, object additionalRouteValues) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
if (metadata.AdminRouteValues == null) if (metadata.AdminRouteValues == null)
return null; return null;
return html.ActionLink( return html.ActionLink(
NonNullOrEmpty(linkText, metadata.DisplayText, content.ContentItem.TypeDefinition.DisplayName), NonNullOrEmpty(linkText, metadata.DisplayText, content.ContentItem.TypeDefinition.DisplayName),
Convert.ToString(metadata.AdminRouteValues["action"]), Convert.ToString(metadata.AdminRouteValues["action"]),
metadata.AdminRouteValues.Merge(additionalRouteValues)); metadata.AdminRouteValues.Merge(additionalRouteValues));
} }
public static string ItemEditUrl(this UrlHelper urlHelper, IContent content, object additionalRouteValues = null) { public static string ItemEditUrl(this UrlHelper urlHelper, IContent content, object additionalRouteValues = null) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
if (metadata.EditorRouteValues == null) if (metadata.EditorRouteValues == null)
return null; return null;
return urlHelper.Action( return urlHelper.Action(
Convert.ToString(metadata.EditorRouteValues["action"]), Convert.ToString(metadata.EditorRouteValues["action"]),
metadata.EditorRouteValues.Merge(additionalRouteValues ?? new {})); metadata.EditorRouteValues.Merge(additionalRouteValues ?? new {}));
} }
public static string ItemAdminUrl(this UrlHelper urlHelper, IContent content, object additionalRouteValues = null) { public static string ItemAdminUrl(this UrlHelper urlHelper, IContent content, object additionalRouteValues = null) {
var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); var metadata = content.ContentItem.ContentManager.GetItemMetadata(content);
return metadata.AdminRouteValues == null ? null : urlHelper.RouteUrl(metadata.AdminRouteValues.Merge(additionalRouteValues ?? new { })); return metadata.AdminRouteValues == null ? null : urlHelper.RouteUrl(metadata.AdminRouteValues.Merge(additionalRouteValues ?? new { }));
} }
private static string NonNullOrEmpty(params string[] values) { private static string NonNullOrEmpty(params string[] values) {
foreach (var value in values) { foreach (var value in values) {
if (!string.IsNullOrEmpty(value)) if (!string.IsNullOrEmpty(value))
return value; return value;
} }
return null; return null;
} }
public static MvcHtmlString ItemEditLink(this HtmlHelper html, IContent content) { public static MvcHtmlString ItemEditLink(this HtmlHelper html, IContent content) {
return ItemEditLink(html, null, content); return ItemEditLink(html, null, content);
} }
} }
} }