private static void UpgradeModule(EventMessage message)
        {
            try
            {
                int desktopModuleId = Convert.ToInt32(message.Attributes["DesktopModuleId"]);
                var desktopModule = DesktopModuleController.GetDesktopModule(desktopModuleId, Null.NullInteger);

                string BusinessControllerClass = message.Attributes["BusinessControllerClass"];
                object controller = Reflection.CreateObject(BusinessControllerClass, "");
                if (controller is IUpgradeable)
                {
					//get the list of applicable versions
                    string[] UpgradeVersions = message.Attributes["UpgradeVersionsList"].Split(',');
                    foreach (string Version in UpgradeVersions)
                    {
						//call the IUpgradeable interface for the module/version
                        string Results = ((IUpgradeable) controller).UpgradeModule(Version);
                        //log the upgrade results
                        var log = new LogInfo {LogTypeKey = EventLogController.EventLogType.MODULE_UPDATED.ToString()};
                        log.AddProperty("Module Upgraded", BusinessControllerClass);
                        log.AddProperty("Version", Version);
                        if (!string.IsNullOrEmpty(Results))
                        {
                            log.AddProperty("Results", Results);
                        }
                        LogController.Instance.AddLog(log);
                    }
                }
                UpdateSupportedFeatures(controller, Convert.ToInt32(message.Attributes["DesktopModuleId"]));
            }
            catch (Exception exc)
            {
                Exceptions.LogException(exc);
            }
        }
        public HttpResponseMessage GetLogDetails(string guid)
        {
            Guid logId;
            if (string.IsNullOrEmpty(guid) || !Guid.TryParse(guid, out logId))
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }

            try
            {
                var logInfo = new LogInfo {LogGUID = guid};
                logInfo = EventLogController.Instance.GetSingleLog(logInfo, LoggingProvider.ReturnType.LogInfoObjects) as LogInfo;
                if (logInfo == null)
                {
                    return Request.CreateResponse(HttpStatusCode.BadRequest);
                }

                return Request.CreateResponse(HttpStatusCode.OK, new
                                                                     {
                                                                         Title = Localization.GetSafeJSString("CriticalError.Error", Localization.SharedResourceFile),
                                                                         Content = GetPropertiesText(logInfo)
                                                                     });
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
Exemple #3
0
    public bool Send(
        string emailTemplateFilename,
        Dictionary <string, object> contactFormRequest,
        string MailFrom,
        string MailTo,
        string MailCC,
        string MailReply)
    {
        var mailEngine = CreateInstance("../../live/email-templates/" + emailTemplateFilename);
        var mailSubj   = mailEngine.Subject();
        var mailBody   = mailEngine.Message(contactFormRequest).ToString();

        // Send Mail
        // uses the DNN command: http://www.dnnsoftware.com/dnn-api/html/886d0ac8-45e8-6472-455a-a7adced60ada.htm
        var sendMailResult = Mail.SendMail(MailFrom, MailTo, MailCC, "", MailReply, MailPriority.Normal,
                                           mailSubj, MailFormat.Html, System.Text.Encoding.UTF8, mailBody, new string[0], "", "", "", "", false);

        // Log to DNN - just as a last resort in case something is lost, to track down why
        var logInfo = new DotNetNuke.Services.Log.EventLog.LogInfo
        {
            LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.ADMIN_ALERT.ToString()
        };

        logInfo.AddProperty("MailFrom", MailFrom);
        logInfo.AddProperty("MailTo", MailTo);
        logInfo.AddProperty("MailCC", MailCC);
        logInfo.AddProperty("MailReply", MailReply);
        logInfo.AddProperty("MailSubject", mailSubj);
        logInfo.AddProperty("SSL", DotNetNuke.Entities.Host.Host.EnableSMTPSSL.ToString());
        logInfo.AddProperty("Result", sendMailResult);
        DotNetNuke.Services.Log.EventLog.EventLogController.Instance.AddLog(logInfo);

        return(sendMailResult == "");
    }
 private static Dictionary<string, string> GetProperties(LogInfo logInfo)
 {
     var prop = new Dictionary<string, string>();
     prop.AddIfNotNull("TypeKey", logInfo.LogTypeKey);
     prop.AddIfNotNull("ConfigID", logInfo.LogConfigID);
     prop.AddIfNotNull("FileID", logInfo.LogFileID);
     prop.AddIfNotNull("GUID", logInfo.LogGUID);
     prop.AddIfNotNull("PortalName", logInfo.LogPortalName);
     prop.AddIfNotNull("ServerName", logInfo.LogServerName);
     prop.AddIfNotNull("UserName", logInfo.LogUserName);
     prop.Add("CreateDate", logInfo.LogCreateDate.ToString(CultureInfo.InvariantCulture));
     prop.Add("EventID", logInfo.LogEventID.ToString());
     prop.Add("PortalID", logInfo.LogPortalID.ToString());
     prop.Add("UserID", logInfo.LogUserID.ToString());
     prop.AddIfNotNull("Exception.Message", logInfo.Exception.Message);
     prop.AddIfNotNull("Exception.Source", logInfo.Exception.Source);
     prop.AddIfNotNull("Exception.StackTrace", logInfo.Exception.StackTrace);
     prop.AddIfNotNull("Exception.InnerMessage", logInfo.Exception.InnerMessage);
     prop.AddIfNotNull("Exception.InnerStackTrace", logInfo.Exception.InnerStackTrace);
     if (logInfo.LogProperties != null)
     {
         prop.AddIfNotNull("Summary", logInfo.LogProperties.Summary);
         foreach (LogDetailInfo logProperty in logInfo.LogProperties)
         {
             prop.Add(logProperty.PropertyName, logProperty.PropertyValue);
         }
     }
     return prop;
 } 
        /// <summary>
        /// Logs the 404 error to a table for later checking 
        /// </summary>
        /// <param name="request"></param>
        /// <param name="settings"></param>
        /// <param name="result"></param>
        public static void Log404(HttpRequest request, FriendlyUrlSettings settings, UrlAction result)
        {
            var controller = new LogController();
            var log = new LogInfo
                {
                    LogTypeKey = EventLogController.EventLogType.PAGE_NOT_FOUND_404.ToString(),
                    LogPortalID = (result.PortalAlias != null) ? result.PortalId : -1
                };
            log.LogProperties.Add(new LogDetailInfo("TabId", (result.TabId > 0) ? result.TabId.ToString() : String.Empty));
            log.LogProperties.Add(new LogDetailInfo("PortalAlias",  (result.PortalAlias != null) ? result.PortalAlias.HTTPAlias : String.Empty));
            log.LogProperties.Add(new LogDetailInfo("OriginalUrl",  result.RawUrl));

            if (request != null)
            {
                if (request.UrlReferrer != null)
                {
                    log.LogProperties.Add(new LogDetailInfo("Referer", request.UrlReferrer.AbsoluteUri));
                }
                log.LogProperties.Add(new LogDetailInfo("Url", request.Url.AbsoluteUri));
                log.LogProperties.Add(new LogDetailInfo("UserAgent", request.UserAgent));
                log.LogProperties.Add(new LogDetailInfo("HostAddress", request.UserHostAddress));
                log.LogProperties.Add(new LogDetailInfo("HostName", request.UserHostName));
            }

            controller.AddLog(log);
        }
        public void AddLog(Exception objException, ExceptionLogType LogType)
        {
            var objLogController = new LogController();
            var objLogInfo = new LogInfo();
            objLogInfo.LogTypeKey = LogType.ToString();
            if (LogType == ExceptionLogType.SEARCH_INDEXER_EXCEPTION)
            {
				//Add SearchException Properties
                var objSearchException = (SearchException) objException;
                objLogInfo.LogProperties.Add(new LogDetailInfo("ModuleId", objSearchException.SearchItem.ModuleId.ToString()));
                objLogInfo.LogProperties.Add(new LogDetailInfo("SearchItemId", objSearchException.SearchItem.SearchItemId.ToString()));
                objLogInfo.LogProperties.Add(new LogDetailInfo("Title", objSearchException.SearchItem.Title));
                objLogInfo.LogProperties.Add(new LogDetailInfo("SearchKey", objSearchException.SearchItem.SearchKey));
                objLogInfo.LogProperties.Add(new LogDetailInfo("GUID", objSearchException.SearchItem.GUID));
            }
            else if (LogType == ExceptionLogType.MODULE_LOAD_EXCEPTION)
            {
				//Add ModuleLoadException Properties
                var objModuleLoadException = (ModuleLoadException) objException;
                objLogInfo.LogProperties.Add(new LogDetailInfo("ModuleId", objModuleLoadException.ModuleId.ToString()));
                objLogInfo.LogProperties.Add(new LogDetailInfo("ModuleDefId", objModuleLoadException.ModuleDefId.ToString()));
                objLogInfo.LogProperties.Add(new LogDetailInfo("FriendlyName", objModuleLoadException.FriendlyName));
                objLogInfo.LogProperties.Add(new LogDetailInfo("ModuleControlSource", objModuleLoadException.ModuleControlSource));
            }
            else if (LogType == ExceptionLogType.SECURITY_EXCEPTION)
            {
				//Add SecurityException Properties
                var objSecurityException = (SecurityException) objException;
                objLogInfo.LogProperties.Add(new LogDetailInfo("Querystring", objSecurityException.Querystring));
                objLogInfo.LogProperties.Add(new LogDetailInfo("IP", objSecurityException.IP));
            }
			
			//Add BasePortalException Properties
            var objBasePortalException = new BasePortalException(objException.ToString(), objException);
            objLogInfo.LogProperties.Add(new LogDetailInfo("AssemblyVersion", objBasePortalException.AssemblyVersion));
            objLogInfo.LogProperties.Add(new LogDetailInfo("PortalID", objBasePortalException.PortalID.ToString()));
            objLogInfo.LogProperties.Add(new LogDetailInfo("PortalName", objBasePortalException.PortalName));
            objLogInfo.LogProperties.Add(new LogDetailInfo("UserID", objBasePortalException.UserID.ToString()));
            objLogInfo.LogProperties.Add(new LogDetailInfo("UserName", objBasePortalException.UserName));
            objLogInfo.LogProperties.Add(new LogDetailInfo("ActiveTabID", objBasePortalException.ActiveTabID.ToString()));
            objLogInfo.LogProperties.Add(new LogDetailInfo("ActiveTabName", objBasePortalException.ActiveTabName));
            objLogInfo.LogProperties.Add(new LogDetailInfo("RawURL", objBasePortalException.RawURL));
            objLogInfo.LogProperties.Add(new LogDetailInfo("AbsoluteURL", objBasePortalException.AbsoluteURL));
            objLogInfo.LogProperties.Add(new LogDetailInfo("AbsoluteURLReferrer", objBasePortalException.AbsoluteURLReferrer));
            objLogInfo.LogProperties.Add(new LogDetailInfo("UserAgent", objBasePortalException.UserAgent));
            objLogInfo.LogProperties.Add(new LogDetailInfo("DefaultDataProvider", objBasePortalException.DefaultDataProvider));
            objLogInfo.LogProperties.Add(new LogDetailInfo("ExceptionGUID", objBasePortalException.ExceptionGUID));
            objLogInfo.LogProperties.Add(new LogDetailInfo("InnerException", objBasePortalException.InnerException.Message));
            objLogInfo.LogProperties.Add(new LogDetailInfo("FileName", objBasePortalException.FileName));
            objLogInfo.LogProperties.Add(new LogDetailInfo("FileLineNumber", objBasePortalException.FileLineNumber.ToString()));
            objLogInfo.LogProperties.Add(new LogDetailInfo("FileColumnNumber", objBasePortalException.FileColumnNumber.ToString()));
            objLogInfo.LogProperties.Add(new LogDetailInfo("Method", objBasePortalException.Method));
            objLogInfo.LogProperties.Add(new LogDetailInfo("StackTrace", objBasePortalException.StackTrace));
            objLogInfo.LogProperties.Add(new LogDetailInfo("Message", objBasePortalException.Message));
            objLogInfo.LogProperties.Add(new LogDetailInfo("Source", objBasePortalException.Source));
            objLogInfo.LogPortalID = objBasePortalException.PortalID;
            objLogController.AddLog(objLogInfo);
        }
        private static void AddLogToFile(LogInfo logInfo)
        {
            try
            {
                var f = Globals.HostMapPath + "\\Logs\\LogFailures.xml.resources";
                WriteLog(f, logInfo.Serialize());
            }
            // ReSharper disable EmptyGeneralCatchClause
            catch (Exception exc) // ReSharper restore EmptyGeneralCatchClause
            {
                Logger.Error(exc);

            }
        }
Exemple #8
0
        public void Log(ServicesAction action)
        {
            EventLogController eventLog = new EventLogController();

            DotNetNuke.Services.Log.EventLog.LogInfo logInfo = default(DotNetNuke.Services.Log.EventLog.LogInfo);
            logInfo               = new LogInfo();
            logInfo.LogUserName   = action.Username;
            logInfo.LogPortalID   = PortalId;
            logInfo.LogTypeKey    = action.LogTypeKey;
            logInfo.LogServerName = action.LogServerName;
            logInfo.AddProperty("Requested By", action.AppName);
            //logInfo.AddProperty("PropertyName2", propertyValue2);

            eventLog.AddLog(logInfo);
        }
Exemple #9
0
        public static void LogToEventLog(string methodName, string message)
        {
            DotNetNuke.Services.Log.EventLog.ExceptionLogController objEventLog = new DotNetNuke.Services.Log.EventLog.ExceptionLogController();
            DotNetNuke.Services.Log.EventLog.LogInfo objEventLogInfo            = new DotNetNuke.Services.Log.EventLog.LogInfo();
            objEventLogInfo.BypassBuffering = true;
            objEventLogInfo.LogTypeKey      = "ADMIN_ALERT";
            objEventLogInfo.LogPortalID     = staticPortalSettings.PortalId;

            LogDetailInfo logInfo1 = new LogDetailInfo("methodName: ", methodName);
            LogDetailInfo logInfo2 = new LogDetailInfo("Message: ", message);

            objEventLogInfo.LogProperties.Add(logInfo1);
            objEventLogInfo.LogProperties.Add(logInfo2);
            objEventLog.AddLog(objEventLogInfo);

            //eventLog.AddLog("DNN.Authentication.SAML." + methodName + " : " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss:fff"), message, staticPortalSettings, -1, EventLogController.EventLogType.ADMIN_ALERT);
        }
Exemple #10
0
    public bool Send(
        string emailTemplateFilename,
        Dictionary <string, object> valuesWithMailLabels,
        string MailFrom,
        string MailTo,
        string MailCC,
        string MailReply,
        List <ToSic.Sxc.Adam.IFile> files)
    {
        // Log what's happening in case we run into problems
        var wrapLog = Log.Call("template:" + emailTemplateFilename + ", from:" + MailFrom + ", to:" + MailTo + ", cc:" + MailCC + ", reply:" + MailReply);

        // Check for attachments and add them to the mail
        var attachments = files.Select(f =>
                                       new System.Net.Mail.Attachment(
                                           new FileStream(System.Web.Hosting.HostingEnvironment.MapPath("~/") + f.Url, FileMode.Open), f.FullName)).ToList();

        Log.Add("Get MailEngine");
        var mailEngine = CreateInstance("../../email-templates/" + emailTemplateFilename);
        var mailBody   = mailEngine.Message(valuesWithMailLabels).ToString();
        var mailSubj   = mailEngine.Subject(valuesWithMailLabels);

        // Send Mail
        // uses the DNN command: http://www.dnnsoftware.com/dnn-api/html/886d0ac8-45e8-6472-455a-a7adced60ada.htm
        Log.Add("sending...");
        var sendMailResult = Mail.SendMail(MailFrom, MailTo, MailCC, "", MailReply, MailPriority.Normal, mailSubj, MailFormat.Html, System.Text.Encoding.UTF8, mailBody, attachments, "", "", "", "", DotNetNuke.Entities.Host.Host.EnableSMTPSSL);

        // Log to DNN - just as a last resort in case something is lost, to track down why
        var logInfo = new DotNetNuke.Services.Log.EventLog.LogInfo
        {
            LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.ADMIN_ALERT.ToString()
        };

        logInfo.AddProperty("MailFrom", MailFrom);
        logInfo.AddProperty("MailTo", MailTo);
        logInfo.AddProperty("MailCC", MailCC);
        logInfo.AddProperty("MailReply", MailReply);
        logInfo.AddProperty("MailSubject", mailSubj);
        logInfo.AddProperty("SSL", DotNetNuke.Entities.Host.Host.EnableSMTPSSL.ToString());
        logInfo.AddProperty("Result", sendMailResult);
        DotNetNuke.Services.Log.EventLog.EventLogController.Instance.AddLog(logInfo);

        wrapLog("ok");
        return(sendMailResult == "");
    }
        public override void AddLog(LogInfo logInfo)
        {   
            // Add log to DNN event log         
            base.AddLog(logInfo);

            // Add log to Application Insights
            if (string.IsNullOrEmpty(AppInsightsClient.InstrumentationKey)) return;

            // Repeat base class private check 
            var logTypeConfigInfoByKey = GetLogTypeConfigInfoByKey(logInfo.LogTypeKey, (logInfo.LogPortalID != Null.NullInteger ? logInfo.LogPortalID.ToString() : "*"));
            if (logTypeConfigInfoByKey == null || !logTypeConfigInfoByKey.LoggingIsActive)
            {
                return;
            }
            logInfo.LogConfigID = logTypeConfigInfoByKey.ID;
            var message =
                $"{logInfo.LogTypeKey}{(string.IsNullOrEmpty(logInfo.LogUserName) ? string.Empty : $" Username: {logInfo.LogUserName}")}{(string.IsNullOrEmpty(logInfo.LogProperties.Summary) ? string.Empty : $" Summary: {logInfo.LogProperties.Summary}")}";
            AppInsightsClient.TrackEvent(message, GetProperties(logInfo));
        }
 private string GetPropertiesText(LogInfo logInfo)
 {
     var objLogProperties = logInfo.LogProperties;
     var str = new StringBuilder();
     int i;
     for (i = 0; i <= objLogProperties.Count - 1; i++)
     {
         //display the values in the Panel child controls.
         var ldi = (LogDetailInfo)objLogProperties[i];
         if (ldi.PropertyName == "Message")
         {
             str.Append("<p><strong>" + ldi.PropertyName + "</strong>:</br><pre>" + HttpUtility.HtmlEncode(ldi.PropertyValue) + "</pre></p>");
         }
         else
         {
             str.Append("<p><strong>" + ldi.PropertyName + "</strong>:" + HttpUtility.HtmlEncode(ldi.PropertyValue) + "</p>");
         }
     }
     str.Append("<p><b>Server Name</b>: " + HttpUtility.HtmlEncode(logInfo.LogServerName) + "</p>");
     return str.ToString();
 }
		public void AddLog(BasePortalException objBasePortalException)
		{
			var log = new LogInfo
			{
				Exception = Exceptions.Exceptions.GetExceptionInfo(objBasePortalException),
			};
			log.Exception.AssemblyVersion = objBasePortalException.AssemblyVersion;
			log.Exception.PortalId = objBasePortalException.PortalID;
			log.Exception.UserId = objBasePortalException.UserID;
			log.Exception.TabId = objBasePortalException.ActiveTabID;
			log.Exception.RawUrl = objBasePortalException.RawURL;
			log.Exception.Referrer = objBasePortalException.AbsoluteURLReferrer;
			log.Exception.UserAgent = objBasePortalException.UserAgent;
			if (objBasePortalException.GetType().Name == "ModuleLoadException")
			{
				AddLog(objBasePortalException, log, ExceptionLogType.MODULE_LOAD_EXCEPTION);
			}
			else if (objBasePortalException.GetType().Name == "PageLoadException")
			{
				AddLog(objBasePortalException, log, ExceptionLogType.PAGE_LOAD_EXCEPTION);
			}
			else if (objBasePortalException.GetType().Name == "SchedulerException")
			{
				AddLog(objBasePortalException, log, ExceptionLogType.SCHEDULER_EXCEPTION);
			}
			else if (objBasePortalException.GetType().Name == "SecurityException")
			{
				AddLog(objBasePortalException, log, ExceptionLogType.SECURITY_EXCEPTION);
			}
			else if (objBasePortalException.GetType().Name == "SearchException")
			{
				AddLog(objBasePortalException, log, ExceptionLogType.SEARCH_INDEXER_EXCEPTION);
			}
			else
			{
				AddLog(objBasePortalException, log, ExceptionLogType.GENERAL_EXCEPTION);
			}
		}
        public void PerformStepOne()
        {
            IDataReader dr;
            string      sqlStatement;
            var         objLogger = new DotNetNuke.Services.Log.EventLog.EventLogController();
            LogInfo     objLog;

            InsertLogNote("Starting Phase 1 Processing");

            //Remove temporary table if needed
            sqlStatement = "DROP TABLE dbo.[ICG_SMI_Passwords]";
            try
            {
                ExecuteNonQuery(sqlStatement);
            }
            catch (Exception)
            {
                //Table didn't exist
            }

            //Create temporary table
            sqlStatement = "CREATE TABLE dbo.[ICG_SMI_Passwords]( [UserId] [uniqueidentifier] NOT NULL, [Username] [nvarchar](256) NOT NULL, [OldPassword] [nvarchar](128) NOT NULL, [Password] [nvarchar](128) NULL, CONSTRAINT [PK_aspnet_Membership_Passwords] PRIMARY KEY CLUSTERED ( [UserId] ASC ) ON [PRIMARY] ) ON [PRIMARY]";
            try
            {
                ExecuteNonQuery(sqlStatement);
                objLog = new LogInfo();
                objLog.AddProperty("SecureMyInstall", "Phase 1 Created Temp Password Table");
                objLog.LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString();
                objLogger.AddLog(objLog);
            }
            catch (Exception ex)
            {
                objLog = new LogInfo();
                objLog.AddProperty("SecureMyInstall", "Phase 1 Error Creating Temp Password Table " + ex);
                objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                objLogger.AddLog(objLog);
            }

            InsertLogNote("Created temp password table");

            //Migrate over passwords
            sqlStatement = "INSERT INTO dbo.ICG_SMI_Passwords (UserId, Username, OldPassword, Password) SELECT dbo.aspnet_Users.UserId, Username, Password, NULL FROM dbo.aspnet_Users INNER JOIN dbo.aspnet_Membership ON dbo.aspnet_Users.UserId = dbo.aspnet_Membership.UserId";
            try
            {
                ExecuteNonQuery(sqlStatement);
                objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                objLog.AddProperty("SecureMyInstall", "Phase 1 Inserted User Accounts Into Temp Password Table");
                objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                objLogger.AddLog(objLog);
            }
            catch (Exception ex)
            {
                objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                objLog.AddProperty("SecureMyInstall", "Phase 1 Error Inserting User Accounts Into Temp Password Table " + ex.ToString());
                objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                objLogger.AddLog(objLog);
            }

            InsertLogNote("Migrated passwords to temporary table");

            //Decrypt passwords
            int processedUsers = 0;
            int decryptedUsers = 0;

            System.Web.Security.MembershipUser objUser;
            var wasSuccessful = false;

            sqlStatement = "SELECT * FROM dbo.ICG_SMI_Passwords";

            try
            {
                dr = ExecuteReader(sqlStatement);
                while (dr.Read())
                {
                    processedUsers++;
                    objUser = Membership.GetUser(dr.GetString(dr.GetOrdinal("Username")));
                    if (objUser != null)
                    {
                        try
                        {
                            var strPassword = objUser.GetPassword();
                            sqlStatement = "UPDATE dbo.ICG_SMI_Passwords SET Password = '******'", "''") + "' WHERE Username = '******'";
                            ExecuteNonQuery(sqlStatement);
                            decryptedUsers++;
                        }
                        catch (Exception)
                        {
                            //Unable to get this users password
                        }
                    }

                    //Provide status
                    if (processedUsers != 0 && (processedUsers % 1000) == 0)
                    {
                        objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                        objLog.AddProperty("SecureMyInstall", "Phase 1 User Accounts Processed: " + processedUsers.ToString());
                        objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                        objLogger.AddLog(objLog);
                    }
                }
                dr.Close();
                InsertLogNote(string.Format("Processed {0} user accounts", processedUsers.ToString()));
                InsertLogNote(string.Format("Decrypted {0} user password", decryptedUsers.ToString()));
                wasSuccessful = true;
            }
            catch (Exception)
            {
                //Oopsie
            }

            //Final eventLog entries
            objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
            objLog.AddProperty("SecureMyInstall", "Phase 1 User Accounts Processed: " + processedUsers.ToString());
            objLog.AddProperty("SecureMyInstall", "Phase 1 User Passwords Decrypted: " + decryptedUsers.ToString());
            objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
            objLogger.AddLog(objLog);

            if (wasSuccessful)
            {
                //Generate new keys
                var objSecurity      = new PortalSecurity();
                var newValidationKey = objSecurity.CreateKey(20);
                var newDecryptionKey = objSecurity.CreateKey(24);
                objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                objLog.AddProperty("SecureMyInstall", "Phase 1 New Machine Keys Generated");
                objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                objLogger.AddLog(objLog);
                InsertLogNote("Phase 2 New Machine Keys Generated");

                //Update web.config, change keys as well as password format
                try
                {
                    DotNetNuke.Common.Utilities.Config.BackupConfig();
                    var xmlConfig = new XmlDocument();
                    xmlConfig = DotNetNuke.Common.Utilities.Config.Load();
                    var xmlMachineKey = xmlConfig.SelectSingleNode("configuration/system.web/machineKey");
                    XmlUtils.UpdateAttribute(xmlMachineKey, "validationKey", newValidationKey);
                    XmlUtils.UpdateAttribute(xmlMachineKey, "decryptionKey", newDecryptionKey);
                    var xmlMembershipProvider = xmlConfig.SelectSingleNode("configuration/system.web/membership/providers/add[@name='AspNetSqlMembershipProvider']");
                    XmlUtils.UpdateAttribute(xmlMembershipProvider, "passwordFormat", "Hashed");
                    XmlUtils.UpdateAttribute(xmlMembershipProvider, "enablePasswordRetrieval", "false");
                    DotNetNuke.Common.Utilities.Config.Save(xmlConfig);
                    objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                    objLog.AddProperty("SecureMyInstall", "Phase 1 Updated Web.Config With New Machine Keys and password format");
                    objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                    objLogger.AddLog(objLog);
                }
                catch (Exception)
                {
                    objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                    objLog.AddProperty("SecureMyInstall", "Phase 1 Error Processing User Accounts");
                    objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                    objLogger.AddLog(objLog);
                }
            }
        }
        private void LogResult(string message)
        {
            var portalSecurity = new PortalSecurity();

            var objEventLog = new EventLogController();
            var objEventLogInfo = new LogInfo();

            objEventLogInfo.LogPortalID = PortalSettings.PortalId;
            objEventLogInfo.LogPortalName = PortalSettings.PortalName;
            objEventLogInfo.LogUserID = UserId;
            objEventLogInfo.LogUserName = portalSecurity.InputFilter(User.Username,
                                                                     PortalSecurity.FilterFlag.NoScripting | PortalSecurity.FilterFlag.NoAngleBrackets | PortalSecurity.FilterFlag.NoMarkup);
            if (string.IsNullOrEmpty(message))
            {
                objEventLogInfo.LogTypeKey = "PASSWORD_SENT_SUCCESS";
            }
            else
            {
                objEventLogInfo.LogTypeKey = "PASSWORD_SENT_FAILURE";
                objEventLogInfo.LogProperties.Add(new LogDetailInfo("Cause", message));
            }

            objEventLog.AddLog(objEventLogInfo);
        }
Exemple #16
0
 /// <inheritdoc/>
 public virtual object GetSingleLog(LogInfo log, LoggingProvider.ReturnType returnType)
 {
     return(LoggingProvider.Instance().GetSingleLog(log, returnType));
 }
Exemple #17
0
 public abstract object GetSingleLog(LogInfo logInfo, ReturnType returnType);
        private void OnPreRequestHandlerExecute(object sender, EventArgs e)
        {
            try
            {
                //First check if we are upgrading/installing or if it is a non-page request
                var app = (HttpApplication) sender;
                HttpRequest request = app.Request;

                //First check if we are upgrading/installing
                if (request.Url.LocalPath.ToLower().EndsWith("install.aspx")
                        || request.Url.LocalPath.ToLower().Contains("upgradewizard.aspx")
                        || request.Url.LocalPath.ToLower().Contains("installwizard.aspx"))
                {
                    return;
                }
				
                //exit if a request for a .net mapping that isn't a content page is made i.e. axd
                if (request.Url.LocalPath.ToLower().EndsWith(".aspx") == false && request.Url.LocalPath.ToLower().EndsWith(".asmx") == false &&
                    request.Url.LocalPath.ToLower().EndsWith(".ashx") == false)
                {
                    return;
                }
                if (HttpContext.Current != null)
                {
                    HttpContext context = HttpContext.Current;
                    if ((context == null))
                    {
                        return;
                    }
                    var page = context.Handler as CDefault;
                    if ((page == null))
                    {
                        return;
                    }
                    page.Load += OnPageLoad;
                }
            }
            catch (Exception ex)
            {
                var objEventLog = new EventLogController();
                var objEventLogInfo = new LogInfo();
                objEventLogInfo.AddProperty("Analytics.AnalyticsModule", "OnPreRequestHandlerExecute");
                objEventLogInfo.AddProperty("ExceptionMessage", ex.Message);
                objEventLogInfo.LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString();
                objEventLog.AddLog(objEventLogInfo);
                Logger.Error(objEventLogInfo);

            }
        }
Exemple #19
0
 protected virtual void RestartApplication()
 {
     var objEv = new EventLogController();
     var objEventLogInfo = new LogInfo { BypassBuffering = true, LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString() };
     objEventLogInfo.AddProperty("Message", GetString("UserRestart"));
     objEv.AddLog(objEventLogInfo);
     Config.Touch();
 }
        public static void InvalidateDictionary(string reason, PageIndexData rebuildData, int portalId)
        {
            //if supplied, store the rebuildData for when the dictionary gets rebuilt
            //this is a way of storing data between dictionary rebuilds
            if (rebuildData != null)
            {
                DataCache.SetCache("rebuildData", rebuildData);
            }

            //add log entry for cache clearance
            var elc = new EventLogController();
            var logValue = new LogInfo { LogTypeKey = "HOST_ALERT" };
            try
            {
                //817 : not clearing items correctly from dictionary
                CacheController.FlushPageIndexFromCache();
            }
            catch (Exception ex)
            {
                //do nothing ; can be from trying to access cache after system restart
                Services.Exceptions.Exceptions.LogException(ex);
            }

            logValue.AddProperty("Url Rewriting Caching Message", "Page Index Cache Cleared.  Reason: " + reason);
            logValue.AddProperty("Thread Id", Thread.CurrentThread.ManagedThreadId.ToString());
            elc.AddLog(logValue);
        }
        public static string UploadSkin( string rootPath, string skinRoot, string skinName, Stream objInputStream )
        {
            ZipInputStream objZipInputStream = new ZipInputStream(objInputStream);

            ZipEntry objZipEntry;
            int intSize = 2049;
            byte[] arrData = new byte[intSize];
            string strMessage = "";
            ArrayList arrSkinFiles = new ArrayList();

            //Localized Strings
            PortalSettings ResourcePortalSettings = Globals.GetPortalSettings();
            string BEGIN_MESSAGE = Localization.GetString("BeginZip", ResourcePortalSettings);
            string CREATE_DIR = Localization.GetString("CreateDir", ResourcePortalSettings);
            string WRITE_FILE = Localization.GetString("WriteFile", ResourcePortalSettings);
            string FILE_ERROR = Localization.GetString("FileError", ResourcePortalSettings);
            string END_MESSAGE = Localization.GetString("EndZip", ResourcePortalSettings);
            string FILE_RESTICTED = Localization.GetString("FileRestricted", ResourcePortalSettings);

            strMessage += FormatMessage(BEGIN_MESSAGE, skinName, -1, false);

            objZipEntry = objZipInputStream.GetNextEntry();
            while (objZipEntry != null)
            {
                if (!objZipEntry.IsDirectory)
                {
                    // validate file extension
                    string strExtension = objZipEntry.Name.Substring(objZipEntry.Name.LastIndexOf(".") + 1);
                    if (Strings.InStr(1, ",ASCX,HTM,HTML,CSS,SWF,RESX," + Globals.HostSettings["FileExtensions"].ToString().ToUpper(), "," + strExtension.ToUpper(), 0) != 0)
                    {
                        // process embedded zip files
                        if (objZipEntry.Name.ToLower() == SkinInfo.RootSkin.ToLower() + ".zip")
                        {
                            MemoryStream objMemoryStream = new MemoryStream();
                            intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            while (intSize > 0)
                            {
                                objMemoryStream.Write(arrData, 0, intSize);
                                intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            }
                            objMemoryStream.Seek(0, SeekOrigin.Begin);
                            strMessage += UploadSkin(rootPath, SkinInfo.RootSkin, skinName, objMemoryStream);
                        }
                        else if (objZipEntry.Name.ToLower() == SkinInfo.RootContainer.ToLower() + ".zip")
                        {
                            MemoryStream objMemoryStream = new MemoryStream();
                            intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            while (intSize > 0)
                            {
                                objMemoryStream.Write(arrData, 0, intSize);
                                intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            }
                            objMemoryStream.Seek(0, SeekOrigin.Begin);
                            strMessage += UploadSkin(rootPath, SkinInfo.RootContainer, skinName, objMemoryStream);
                        }
                        else
                        {
                            string strFileName = rootPath + skinRoot + "\\" + skinName + "\\" + objZipEntry.Name;

                            // create the directory if it does not exist
                            if (!Directory.Exists(Path.GetDirectoryName(strFileName)))
                            {
                                strMessage += FormatMessage(CREATE_DIR, Path.GetDirectoryName(strFileName), 2, false);
                                Directory.CreateDirectory(Path.GetDirectoryName(strFileName));
                            }

                            // remove the old file
                            if (File.Exists(strFileName))
                            {
                                File.SetAttributes(strFileName, FileAttributes.Normal);
                                File.Delete(strFileName);
                            }
                            // create the new file
                            FileStream objFileStream = File.Create(strFileName);

                            // unzip the file
                            strMessage += FormatMessage(WRITE_FILE, Path.GetFileName(strFileName), 2, false);
                            intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            while (intSize > 0)
                            {
                                objFileStream.Write(arrData, 0, intSize);
                                intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            }
                            objFileStream.Close();

                            // save the skin file
                            switch (Path.GetExtension(strFileName))
                            {
                                case ".htm":
                                    if (strFileName.ToLower().IndexOf(Globals.glbAboutPage.ToLower()) < 0)
                                    {
                                        arrSkinFiles.Add(strFileName);
                                    }
                                    break;

                                case ".html":
                                    if (strFileName.ToLower().IndexOf(Globals.glbAboutPage.ToLower()) < 0)
                                    {
                                        arrSkinFiles.Add(strFileName);
                                    }
                                    break;

                                case ".ascx":
                                    if (strFileName.ToLower().IndexOf(Globals.glbAboutPage.ToLower()) < 0)
                                    {
                                        arrSkinFiles.Add(strFileName);
                                    }
                                    break;

                                case ".css":

                                    if (strFileName.ToLower().IndexOf(Globals.glbAboutPage.ToLower()) < 0)
                                    {
                                        arrSkinFiles.Add(strFileName);
                                    }
                                    break;
                            }
                        }
                    }
                    else
                    {
                        strMessage += FormatMessage(FILE_ERROR, string.Format(FILE_RESTICTED, objZipEntry.Name, Strings.Replace(Globals.HostSettings["FileExtensions"].ToString(), ",", ", *.", 1, -1, 0)), 2, true);
                    }
                }
                objZipEntry = objZipInputStream.GetNextEntry();
            }
            strMessage += FormatMessage(END_MESSAGE, skinName + ".zip", 1, false);
            objZipInputStream.Close();

            // process the list of skin files
            SkinFileProcessor NewSkin = new SkinFileProcessor(rootPath, skinRoot, skinName);
            strMessage += NewSkin.ProcessList(arrSkinFiles, SkinParser.Portable);

            // log installation event
            try
            {                
                LogInfo objEventLogInfo = new LogInfo();
                objEventLogInfo.LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString();
                objEventLogInfo.LogProperties.Add(new LogDetailInfo("Install Skin:", skinName));
                Array arrMessage = strMessage.Split("<br>".ToCharArray()[0]);
                foreach (string tempLoopVar_strRow in arrMessage)
                {
                    string strRow = tempLoopVar_strRow;
                    objEventLogInfo.LogProperties.Add(new LogDetailInfo("Info:", HtmlUtils.StripTags(strRow, true)));
                }
                EventLogController objEventLog = new EventLogController();
                objEventLog.AddLog(objEventLogInfo);
            }
            catch (Exception)
            {            
                // error
            }

            return strMessage;
        }
Exemple #22
0
        /// <inheritdoc/>
        public void AddLog(LogInfo logInfo)
        {
            if (Globals.Status == Globals.UpgradeStatus.Install)
            {
                Logger.Info(logInfo);
            }
            else
            {
                try
                {
                    logInfo.LogCreateDate = DateTime.Now;
                    logInfo.LogServerName = Globals.ServerName;
                    if (string.IsNullOrEmpty(logInfo.LogServerName))
                    {
                        logInfo.LogServerName = "NA";
                    }

                    if (string.IsNullOrEmpty(logInfo.LogUserName))
                    {
                        if (HttpContext.Current != null)
                        {
                            try
                            {
                                if (HttpContext.Current.Request.IsAuthenticated)
                                {
                                    logInfo.LogUserName = UserController.Instance.GetCurrentUserInfo().Username;
                                }
                            }
                            catch (HttpException exception)
                            {
                                Logger.Error("Unable to retrieve HttpContext.Request, ignoring LogUserName", exception);
                            }
                        }
                    }

                    // Get portal name if name isn't set
                    if (logInfo.LogPortalID != Null.NullInteger && string.IsNullOrEmpty(logInfo.LogPortalName))
                    {
                        logInfo.LogPortalName = PortalController.Instance.GetPortal(logInfo.LogPortalID).PortalName;
                    }

                    // Check if Log Type exists
                    if (!this.GetLogTypeInfoDictionary().ContainsKey(logInfo.LogTypeKey))
                    {
                        // Add new Log Type
                        var logType = new LogTypeInfo()
                        {
                            LogTypeKey          = logInfo.LogTypeKey,
                            LogTypeFriendlyName = logInfo.LogTypeKey,
                            LogTypeOwner        = "DotNetNuke.Logging.EventLogType",
                            LogTypeCSSClass     = "GeneralAdminOperation",
                            LogTypeDescription  = string.Empty,
                        };
                        this.AddLogType(logType);

                        var logTypeConfigInfo = new LogTypeConfigInfo()
                        {
                            LogTypeKey                    = logInfo.LogTypeKey,
                            LogTypePortalID               = "*",
                            LoggingIsActive               = false,
                            KeepMostRecent                = "-1",
                            EmailNotificationIsActive     = false,
                            NotificationThreshold         = 1,
                            NotificationThresholdTime     = 1,
                            NotificationThresholdTimeType = LogTypeConfigInfo.NotificationThresholdTimeTypes.Seconds,
                            MailFromAddress               = string.Empty,
                            MailToAddress                 = string.Empty,
                        };
                        this.AddLogTypeConfigInfo(logTypeConfigInfo);
                    }

                    if (LoggingProvider.Instance() != null)
                    {
                        try
                        {
                            LoggingProvider.Instance().AddLog(logInfo);
                        }
                        catch (Exception)
                        {
                            if (Globals.Status != Globals.UpgradeStatus.Upgrade) // this may caught exception during upgrade because old logging provider has problem in it.
                            {
                                throw;
                            }
                        }
                    }
                }
                catch (Exception exc)
                {
                    Logger.Error(exc);

                    AddLogToFile(logInfo);
                }
            }
        }
Exemple #23
0
 public abstract void AddLog(LogInfo logInfo);
Exemple #24
0
        public void PerformStepTwo()
        {
            IDataReader dr;
            string      sqlStatement;
            var         objLogger = new EventLogController();
            LogInfo     objLog;

            InsertLogNote("Phase 2 Starting");

            //Set user passwords
            int            processedUsers = 0;
            int            resetUsers     = 0;
            MembershipUser objUser;
            var            wasSuccessful = false;

            sqlStatement = "SELECT * FROM dbo.ICG_SMI_Passwords WHERE Password IS NOT NULL";
            try
            {
                dr = ExecuteReader(sqlStatement);
                while (dr.Read())
                {
                    processedUsers++;
                    objUser = Membership.GetUser(dr.GetString(dr.GetOrdinal("Username")));
                    if (objUser != null)
                    {
                        try
                        {
                            //Reset password,
                            var tempPassword = objUser.ResetPassword();

                            //Now, set the password
                            objUser.ChangePassword(tempPassword, dr.GetString(dr.GetOrdinal("Password")));
                            resetUsers++;
                        }
                        catch (Exception)
                        {
                            //One user failed, they can request forgotten password
                        }
                    }

                    //Provide status
                    if (processedUsers != 0 && (processedUsers % 1000) == 0)
                    {
                        objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                        objLog.AddProperty("SecureMyInstall", "Phase 2 User Accounts Processed: " + processedUsers.ToString());
                        objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                        objLogger.AddLog(objLog);
                    }
                }

                dr.Close();
                InsertLogNote(string.Format("Processed {0} user accounts", processedUsers.ToString()));
                InsertLogNote(string.Format("Updated {0} user passwords", resetUsers.ToString()));
                wasSuccessful = true;
            }
            catch (Exception)
            {
                //Skippy dee-doo-da-day
            }

            objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
            objLog.AddProperty("SecureMyInstall", "Phase 2 User Accounts Processed: " + processedUsers.ToString());
            objLog.AddProperty("SecureMyInstall", "Phase 2 User Passwords Updated: " + resetUsers.ToString());
            objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
            objLogger.AddLog(objLog);

            if (wasSuccessful)
            {
                //Drop table
                sqlStatement = "DROP TABLE dbo.[ICG_SMI_Passwords]";
                try
                {
                    ExecuteNonQuery(sqlStatement);
                    objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                    objLog.AddProperty("SecureMyInstall", "Phase 2 Dropped Temp Password Table");
                    objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                    objLogger.AddLog(objLog);
                }
                catch (Exception ex)
                {
                    objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                    objLog.AddProperty("SecureMyInstall", "Phase 2 Error Dropping Temp Password Table " + ex.ToString());
                    objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                    objLogger.AddLog(objLog);
                }

                try
                {
                    var xmlConfig = new XmlDocument();
                    xmlConfig = DotNetNuke.Common.Utilities.Config.Load();
                    var xmlForms = xmlConfig.SelectSingleNode("configuration/system.web/authentication/forms");
                    XmlUtils.UpdateAttribute(xmlForms, "name", ".DOTNETNUKE" + DateTime.Now.ToString("yyyyMMddhhss"));
                    DotNetNuke.Common.Utilities.Config.Save(xmlConfig);
                    objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                    objLog.AddProperty("SecureMyInstall", "Phase 2 Updated Web.Config With New Forms Authentication Ticket Name");
                    objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                    objLogger.AddLog(objLog);
                }
                catch (Exception ex)
                {
                    objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                    objLog.AddProperty("SecureMyInstall", "Phase 2 Error Updating Web.Config With New Forms Authentication Ticket Name " + ex.ToString());
                    objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                    objLogger.AddLog(objLog);
                }
            }
            else
            {
                objLog = new DotNetNuke.Services.Log.EventLog.LogInfo();
                objLog.AddProperty("SecureMyInstall", "Phase 2 Error Processing User Accounts");
                objLog.LogTypeKey = DotNetNuke.Services.Log.EventLog.EventLogController.EventLogType.HOST_ALERT.ToString();
                objLogger.AddLog(objLog);
            }
        }
        /// <summary>
        /// cmdSendPassword_Click runs when the Password Reminder button is clicked
        /// </summary>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// 	[cnurse]	03/21/2006  Created
        /// </history>
        protected void cmdSendPassword_Click( Object sender, EventArgs e )
        {
            string strMessage = Null.NullString;
            bool canSend = true;

            if( ( UseCaptcha && ctlCaptcha.IsValid ) || ( ! UseCaptcha ) )
            {
                if( txtUsername.Text.Trim() != "" )
                {
                    PortalSecurity objSecurity = new PortalSecurity();

                    UserInfo objUser = UserController.GetUserByName( PortalSettings.PortalId, txtUsername.Text, false );
                    if( objUser != null )
                    {
                        if( MembershipProviderConfig.PasswordRetrievalEnabled )
                        {
                            try
                            {
                                objUser.Membership.Password = UserController.GetPassword( ref objUser, txtAnswer.Text );
                            }
                            catch( Exception )
                            {
                                canSend = false;
                                strMessage = Localization.GetString( "PasswordRetrievalError", this.LocalResourceFile );
                            }
                        }
                        else
                        {
                            canSend = false;
                            strMessage = Localization.GetString( "PasswordRetrievalDisabled", this.LocalResourceFile );
                        }
                        if( canSend )
                        {
                            try
                            {
                                Mail.SendMail( objUser, MessageType.PasswordReminder, PortalSettings );
                                strMessage = Localization.GetString( "PasswordSent", this.LocalResourceFile );
                            }
                            catch( Exception )
                            {
                                canSend = false;
                            }
                        }
                    }
                    else
                    {
                        strMessage = Localization.GetString( "UsernameError", this.LocalResourceFile );
                        canSend = false;
                    }

                    if( canSend )
                    {
                        EventLogController objEventLog = new EventLogController();
                        LogInfo objEventLogInfo = new LogInfo();
                        objEventLogInfo.AddProperty( "IP", ipAddress );
                        objEventLogInfo.LogPortalID = PortalSettings.PortalId;
                        objEventLogInfo.LogPortalName = PortalSettings.PortalName;
                        objEventLogInfo.LogUserID = UserId;
                        objEventLogInfo.LogUserName = objSecurity.InputFilter( txtUsername.Text, PortalSecurity.FilterFlag.NoScripting | PortalSecurity.FilterFlag.NoAngleBrackets | PortalSecurity.FilterFlag.NoMarkup );
                        objEventLogInfo.LogTypeKey = "PASSWORD_SENT_SUCCESS";
                        objEventLog.AddLog( objEventLogInfo );

                        UI.Skins.Skin.AddModuleMessage( this, strMessage, ModuleMessageType.GreenSuccess );
                    }
                    else
                    {
                        EventLogController objEventLog = new EventLogController();
                        LogInfo objEventLogInfo = new LogInfo();
                        objEventLogInfo.AddProperty( "IP", ipAddress );
                        objEventLogInfo.LogPortalID = PortalSettings.PortalId;
                        objEventLogInfo.LogPortalName = PortalSettings.PortalName;
                        objEventLogInfo.LogUserID = UserId;
                        objEventLogInfo.LogUserName = objSecurity.InputFilter( txtUsername.Text, PortalSecurity.FilterFlag.NoScripting | PortalSecurity.FilterFlag.NoAngleBrackets | PortalSecurity.FilterFlag.NoMarkup );
                        objEventLogInfo.LogTypeKey = "PASSWORD_SENT_FAILURE";
                        objEventLog.AddLog( objEventLogInfo );

                        UI.Skins.Skin.AddModuleMessage( this, strMessage, ModuleMessageType.RedError );
                    }
                }
                else
                {
                    strMessage = Localization.GetString( "EnterUsername", this.LocalResourceFile );
                    UI.Skins.Skin.AddModuleMessage( this, strMessage, ModuleMessageType.RedError );
                }
            }
        }
        private void LogResult(string message)
        {
            var portalSecurity = new PortalSecurity();

			var log = new LogInfo
            {
                LogPortalID = PortalSettings.PortalId,
                LogPortalName = PortalSettings.PortalName,
                LogUserID = UserId,
                LogUserName = portalSecurity.InputFilter(txtUsername.Text, PortalSecurity.FilterFlag.NoScripting | PortalSecurity.FilterFlag.NoAngleBrackets | PortalSecurity.FilterFlag.NoMarkup)
            };
			
            if (string.IsNullOrEmpty(message))
            {
                log.LogTypeKey = "PASSWORD_SENT_SUCCESS";
            }
            else
            {
                log.LogTypeKey = "PASSWORD_SENT_FAILURE";
                log.LogProperties.Add(new LogDetailInfo("Cause", message));
            }
            
			log.AddProperty("IP", _ipAddress);
            
            LogController.Instance.AddLog(log);

        }
        public void AuthenticationLogon()
        {
            Configuration configuration = Configuration.GetConfig();

            UserController authUserController = new UserController();
            string authCookies = Configuration.AUTHENTICATION_KEY + "_" + _portalSettings.PortalId;
            string LoggedOnUserName = HttpContext.Current.Request.ServerVariables[Configuration.LOGON_USER_VARIABLE];
            // HACK : Modified to not error if object is null.
            //if( LoggedOnUserName.Length > 0 )
            if (!String.IsNullOrEmpty(LoggedOnUserName))
            {
                UserInfo authUser;

                int intUserId = 0;

                Entities.Users.UserInfo dnnUser = Entities.Users.UserController.GetUserByName( _portalSettings.PortalId, LoggedOnUserName, false );

                if( dnnUser != null )
                {
                    intUserId = dnnUser.UserID;

                    // Synchronize role membership if it's required in settings
                    if( configuration.SynchronizeRole )
                    {
                        authUser = authUserController.GetUser( LoggedOnUserName );

                        // user object might be in simple version in none active directory network
                        if( authUser.GUID.Length != 0 )
                        {
                            authUser.UserID = intUserId;
                            UserController.AddUserRoles( _portalSettings.PortalId, authUser );
                        }
                    }
                }
                else
                {
                    // User not exists in DNN database, obtain user info from provider to add new
                    authUser = authUserController.GetUser( LoggedOnUserName );
                    if( authUser != null )
                    {
                        authUserController.AddDNNUser( authUser );
                        intUserId = authUser.UserID;
                        SetStatus( _portalSettings.PortalId, AuthenticationStatus.WinLogon );
                    }
                }

                if( intUserId > 0 )
                {
                    FormsAuthentication.SetAuthCookie( Convert.ToString( LoggedOnUserName ), true );

                    //check if user has supplied custom value for expiration
                    int PersistentCookieTimeout = 0;
                    if (Config.GetSetting("PersistentCookieTimeout") != null)
                    {
                        PersistentCookieTimeout = int.Parse(Config.GetSetting("PersistentCookieTimeout"));
                        //only use if non-zero, otherwise leave as asp.net value
                        if (PersistentCookieTimeout != 0)
                        {
                            //locate and update cookie
                            string authCookie = FormsAuthentication.FormsCookieName;
                            foreach (string cookie in HttpContext.Current.Response.Cookies)
                            {
                                if (cookie.Equals(authCookie))
                                {
                                    HttpContext.Current.Response.Cookies[cookie].Expires = DateTime.Now.AddMinutes(PersistentCookieTimeout);
                                }
                            }
                        }
                    }

                    SetStatus( _portalSettings.PortalId, AuthenticationStatus.WinLogon );

                    // Get ipAddress for eventLog
                    string ipAddress = "";
                    if( HttpContext.Current.Request.UserHostAddress != null )
                    {
                        ipAddress = HttpContext.Current.Request.UserHostAddress;
                    }

                    EventLogController eventLog = new EventLogController();
                    LogInfo eventLogInfo = new LogInfo();
                    eventLogInfo.AddProperty( "IP", ipAddress );
                    eventLogInfo.LogPortalID = _portalSettings.PortalId;
                    eventLogInfo.LogPortalName = _portalSettings.PortalName;
                    eventLogInfo.LogUserID = intUserId;
                    eventLogInfo.LogUserName = LoggedOnUserName;
                    eventLogInfo.AddProperty( "WindowsAuthentication", "True" );
                    eventLogInfo.LogTypeKey = "LOGIN_SUCCESS";

                    eventLog.AddLog( eventLogInfo );
                }
            }
            else
            {
                // Not Windows Authentication
            }

            // params "logon=windows" does nothing, just to force page to be refreshed
            string strURL = Globals.NavigateURL( _portalSettings.ActiveTab.TabID, "", "logon=windows" );
            HttpContext.Current.Response.Redirect( strURL, true );
        }
        public static AnalyticsEngineConfiguration GetConfig()
        {
            var config = new AnalyticsEngineConfiguration {AnalyticsEngines = new AnalyticsEngineCollection()};
            FileStream fileReader = null;
            string filePath = "";
            try
            {
                config = (AnalyticsEngineConfiguration) DataCache.GetCache("AnalyticsEngineConfig");
                if ((config == null))
                {
                    filePath = Common.Utilities.Config.GetPathToFile(Common.Utilities.Config.ConfigFileType.SiteAnalytics);

                    //Create a FileStream for the Config file
                    fileReader = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
                    var doc = new XPathDocument(fileReader);
                    config = new AnalyticsEngineConfiguration {AnalyticsEngines = new AnalyticsEngineCollection()};
                    foreach (XPathNavigator nav in
                        doc.CreateNavigator().Select("AnalyticsEngineConfig/Engines/AnalyticsEngine"))
                    {
                        var analyticsEngine = new AnalyticsEngine
                                                  {
                                                      EngineType = nav.SelectSingleNode("EngineType").Value,
                                                      ElementId = nav.SelectSingleNode("ElementId").Value,
                                                      InjectTop = Convert.ToBoolean(nav.SelectSingleNode("InjectTop").Value),
                                                      ScriptTemplate = nav.SelectSingleNode("ScriptTemplate").Value
                                                  };
                        config.AnalyticsEngines.Add(analyticsEngine);
                    }
                    if (File.Exists(filePath))
                    {
                        //Set back into Cache
                        DataCache.SetCache("AnalyticsEngineConfig", config, new DNNCacheDependency(filePath));
                    }
                }
            }
            catch (Exception ex)
            {
                //log it
                var objEventLog = new EventLogController();
                var objEventLogInfo = new LogInfo();
                objEventLogInfo.AddProperty("Analytics.AnalyticsEngineConfiguration", "GetConfig Failed");
                objEventLogInfo.AddProperty("FilePath", filePath);
                objEventLogInfo.AddProperty("ExceptionMessage", ex.Message);
                objEventLogInfo.LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString();
                objEventLog.AddLog(objEventLogInfo);
                Logger.Error(objEventLogInfo);

            }
            finally
            {
                if (fileReader != null)
                {
                    //Close the Reader
                    fileReader.Close();
                }
            }
            return config;
        }
        private static void AddToTabDict(SharedDictionary<string, string> tabIndex,
                                            Dictionary<string, DupKeyCheck> dupCheckDict,
                                            string httpAlias,
                                            string tabPath,
                                            string rewrittenPath,
                                            int tabId,
                                            UrlEnums.TabKeyPreference keyDupAction,
                                            ref int tabPathDepth,
                                            bool checkForDupUrls,
                                            bool isDeleted)
        {
            //remove leading '/' and convert to lower for all keys 
            string tabPathSimple = tabPath.Replace("//", "/").ToLower();
            //the tabpath depth is only set if it's higher than the running highest tab path depth
            int thisTabPathDepth = tabPathSimple.Length - tabPathSimple.Replace("/", "").Length;
            if (thisTabPathDepth > tabPathDepth)
            {
                tabPathDepth = thisTabPathDepth;
            }
            if ((tabPathSimple.Length > 0 && tabPathSimple[0] == '/'))
            {
                tabPathSimple = tabPathSimple.Substring(1);
            }

            //Contruct the tab key for the dictionary. Using :: allows for separation of portal alias and tab path. 
            string tabKey = (httpAlias + "::" + tabPathSimple).ToLower();

            //construct the duplicate key check
            string dupKey = (httpAlias + "/" + tabPathSimple).ToLower();
            if (dupKey[dupKey.Length - 1] != '/')
            {
                dupKey += "/";
            }

            //now make sure there is NEVER a duplicate key exception by testing for existence first
            using (tabIndex.GetWriteLock())
            {
                if (tabIndex.ContainsKey(tabKey))
                {
                    //it's possible for a tab to be deleted and the tab path repeated. 
                    //the dictionary must be checked to ascertain whether the existing tab 
                    //should be replaced or not.  If the action is 'TabOK' it means
                    //replace the entry regardless.  If the action is 'TabRedirected' it means
                    //replace the existing dictionary ONLY if the existing dictionary entry is a 
                    //deleted tab.
                    bool replaceTab = (keyDupAction == UrlEnums.TabKeyPreference.TabOK); //default, replace the tab
                    if (replaceTab == false)
                    {
                        //ok, the tab to be added is either a redirected or deleted tab
                        //get the existing entry
                        //775 : don't assume that the duplicate check dictionary has the key
                        if (dupCheckDict.ContainsKey(dupKey))
                        {
                            DupKeyCheck foundTab = dupCheckDict[dupKey];
                            //a redirected tab will replace a deleted tab
                            if (foundTab.IsDeleted && keyDupAction == UrlEnums.TabKeyPreference.TabRedirected)
                            {
                                replaceTab = true;
                            }
                            if (foundTab.TabIdOriginal == "-1")
                            {
                                replaceTab = true;
                            }
                        }
                    }
                    if (replaceTab && !isDeleted) //don't replace if the incoming tab is deleted
                    {
                        //remove the previous one 
                        tabIndex.Remove(tabKey);
                        //add the new one 
                        tabIndex.Add(tabKey, Globals.glbDefaultPage + rewrittenPath);
                    }
                }
                else
                {
                    //just add the tabkey into the dictionary
                    tabIndex.Add(tabKey, Globals.glbDefaultPage + rewrittenPath);
                }
            }

            //checking for duplicates means throwing an exception when one is found, but this is just logged to the event log
            if (dupCheckDict.ContainsKey(dupKey))
            {
                DupKeyCheck foundTAb = dupCheckDict[dupKey];
                if ((foundTAb.IsDeleted == false && isDeleted == false) //found is not deleted, this tab is not deleted
                    && keyDupAction == UrlEnums.TabKeyPreference.TabOK
                    && foundTAb.TabIdOriginal != "-1")
                //-1 tabs are login, register, privacy etc
                {
                    //check whether to log for this or not
                    if (checkForDupUrls && foundTAb.TabIdOriginal != tabId.ToString())
                    //dont' show message for where same tab is being added twice)
                    {
                        //there is a naming conflict where this alias/tab path could be mistaken 
                        int tabIdOriginal;
                        string tab1Name = "", tab2Name = "";
                        if (int.TryParse(foundTAb.TabIdOriginal, out tabIdOriginal))
                        {
                            Dictionary<int, int> portalDic = PortalController.GetPortalDictionary();
                            int portalId = -1;
                            if (portalDic != null && portalDic.ContainsKey(tabId))
                            {
                                portalId = portalDic[tabId];
                            }

                            var tc = new TabController();
                            TabInfo tab1 = tc.GetTab(tabIdOriginal, portalId, false);
                            TabInfo tab2 = tc.GetTab(tabId, portalId, false);
                            if (tab1 != null)
                            {
                                tab1Name = tab1.TabName + " [" + tab1.TabPath + "]";
                            }
                            if (tab2 != null)
                            {
                                tab2Name = tab2.TabName + " [" + tab2.TabPath + "]";
                            }
                        }

                        string msg = "Page naming conflict. Url of (" + foundTAb.TabPath +
                                     ") resolves to two separate pages (" + tab1Name + " [tabid = " +
                                     foundTAb.TabIdOriginal + "], " + tab2Name + " [tabid = " + tabId.ToString() +
                                     "]). Only the second page will be shown for the url.";
                        const string msg2 = "PLEASE NOTE : this is an information message only, this message does not affect site operations in any way.";

                        //771 : change to admin alert instead of exception
                        var elc = new EventLogController();
                        //log a host alert
                        var logValue = new LogInfo { LogTypeKey = "HOST_ALERT" };
                        logValue.AddProperty("Advanced Friendly URL Provider Duplicate URL Warning", "Page Naming Conflict");
                        logValue.AddProperty("Duplicate Page Details", msg);
                        logValue.AddProperty("Warning Information", msg2);
                        logValue.AddProperty("Suggested Action", "Rename one or both of the pages to ensure a unique URL");
                        logValue.AddProperty("Hide this message", "To stop this message from appearing in the log, uncheck the option for 'Produce an Exception in the Site Log if two pages have the same name/path?' in the Advanced Url Rewriting settings.");
                        logValue.AddProperty("Thread Id", Thread.CurrentThread.ManagedThreadId.ToString());
                        elc.AddLog(logValue);
                    }
                }
                else
                {
                    dupCheckDict.Remove(dupKey);
                    //add this tab to the duplicate key dictionary 
                    dupCheckDict.Add(dupKey, new DupKeyCheck(dupKey, tabId.ToString(), dupKey, isDeleted));
                }
            }
            else
            {
                //add this tab to the duplicate key dictionary - the dup key check dict is always maintained 
                //regardless of whether checking is employed or not
                dupCheckDict.Add(dupKey, new DupKeyCheck(dupKey, tabId.ToString(), dupKey, isDeleted));
            }
        }
        public static RewriterConfiguration GetConfig()
        {
            var config = new RewriterConfiguration {Rules = new RewriterRuleCollection()};
            FileStream fileReader = null;
            string filePath = "";
            try
            {
                config = (RewriterConfiguration) DataCache.GetCache("RewriterConfig");
                if ((config == null))
                {
                    filePath = Common.Utilities.Config.GetPathToFile(Common.Utilities.Config.ConfigFileType.SiteUrls);

                    //Create a FileStream for the Config file
                    fileReader = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
                    var doc = new XPathDocument(fileReader);
                    config = new RewriterConfiguration {Rules = new RewriterRuleCollection()};
                    foreach (XPathNavigator nav in doc.CreateNavigator().Select("RewriterConfig/Rules/RewriterRule"))
                    {
                        var rule = new RewriterRule {LookFor = nav.SelectSingleNode("LookFor").Value, SendTo = nav.SelectSingleNode("SendTo").Value};
                        config.Rules.Add(rule);
                    }
                    if (File.Exists(filePath))
                    {
						//Set back into Cache
                        DataCache.SetCache("RewriterConfig", config, new DNNCacheDependency(filePath));
                    }
                }
            }
            catch (Exception ex)
            {
				//log it
                var objEventLog = new EventLogController();
                var objEventLogInfo = new LogInfo();
                objEventLogInfo.AddProperty("UrlRewriter.RewriterConfiguration", "GetConfig Failed");
                objEventLogInfo.AddProperty("FilePath", filePath);
                objEventLogInfo.AddProperty("ExceptionMessage", ex.Message);
                objEventLogInfo.LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString();
                objEventLog.AddLog(objEventLogInfo);
                Logger.Error(objEventLogInfo);

            }
            finally
            {
                if (fileReader != null)
                {
					//Close the Reader
                    fileReader.Close();
                }
            }
            return config;
        }
        private void OnPageLoad(object sender, EventArgs e)
        {
            try
            {
                AnalyticsEngineCollection analyticsEngines = AnalyticsEngineConfiguration.GetConfig().AnalyticsEngines;
                if (analyticsEngines == null || analyticsEngines.Count == 0)
                {
                    return;
                }
                var page = (Page) sender;
                if ((page == null))
                {
                    return;
                }
                foreach (AnalyticsEngine engine in analyticsEngines)
                {
                    if ((!String.IsNullOrEmpty(engine.ElementId)))
                    {
                        AnalyticsEngineBase objEngine = null;
                        if ((!String.IsNullOrEmpty(engine.EngineType)))
                        {
                            Type engineType = Type.GetType(engine.EngineType);
                            if (engineType == null) 
                                objEngine = new GenericAnalyticsEngine();
                            else
                                objEngine = (AnalyticsEngineBase) Activator.CreateInstance(engineType);
                        }
                        else
                        {
                            objEngine = new GenericAnalyticsEngine();
                        }
                        if (objEngine != null)
                        {
                            string script = engine.ScriptTemplate;
                            if ((!String.IsNullOrEmpty(script)))
                            {
                                script = objEngine.RenderScript(script);
                                if ((!String.IsNullOrEmpty(script)))
                                {
                                    var element = (HtmlContainerControl) page.FindControl(engine.ElementId);
                                    if (element != null)
                                    {
                                        var scriptControl = new LiteralControl();
                                        scriptControl.Text = script;
                                        if (engine.InjectTop)
                                        {
                                            element.Controls.AddAt(0, scriptControl);
                                        }
                                        else
                                        {
                                            element.Controls.Add(scriptControl);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                var objEventLog = new EventLogController();
                var objEventLogInfo = new LogInfo();
                objEventLogInfo.AddProperty("Analytics.AnalyticsModule", "OnPageLoad");
                objEventLogInfo.AddProperty("ExceptionMessage", ex.Message);
                objEventLogInfo.LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString();
                objEventLog.AddLog(objEventLogInfo);
                Logger.Error(ex);

            }
        }
Exemple #32
0
        ///-----------------------------------------------------------------------------
        ///<summary>
        ///  UpgradeApplication - This overload is used for general application upgrade operations.
        ///</summary>
        ///<remarks>
        ///  Since it is not version specific and is invoked whenever the application is
        ///  restarted, the operations must be re-executable.
        ///</remarks>
        ///<history>
        ///  [cnurse]	11/6/2004	documented
        ///  [cnurse] 02/27/2007 made public so it can be called from Wizard
        ///</history>
        ///-----------------------------------------------------------------------------
        public static void UpgradeApplication()
        {
            try
            {
                //Remove UpdatePanel from Login Control - not neccessary in popup.
                var loginControl = ModuleControlController.GetModuleControlByControlKey("Login", -1);
                loginControl.SupportsPartialRendering = false;

                ModuleControlController.SaveModuleControl(loginControl, true);

                //Upgrade to .NET 3.5/4.0
                TryUpgradeNETFramework();

                //Update the version of the client resources - so the cache is cleared
                DataCache.ClearHostCache(false);
                HostController.Instance.IncrementCrmVersion(true);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                var log = new LogInfo
                {
                    LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString(),
                    BypassBuffering = true
                };
                log.AddProperty("Upgraded DotNetNuke", "General");
                log.AddProperty("Warnings", "Error: " + ex.Message + Environment.NewLine);
                LogController.Instance.AddLog(log);
                try
                {
                    Exceptions.Exceptions.LogException(ex);
                }
                catch (Exception exc)
                {
                    Logger.Error(exc);
                }

            }

            //Remove any .txt and .config files that may exist in the Install folder
            foreach (string file in Directory.GetFiles(Globals.InstallMapPath + "Cleanup\\", "??.??.??.txt"))
            {
                FileSystemUtils.DeleteFile(file);
            }
            foreach (string file in Directory.GetFiles(Globals.InstallMapPath + "Config\\", "??.??.??.config"))
            {
                FileSystemUtils.DeleteFile(file);
            }
        }
        public static string UploadLegacySkin(string rootPath, string skinRoot, string skinName, Stream inputStream)
        {
            var objZipInputStream = new ZipInputStream(inputStream);

            ZipEntry objZipEntry;
            string strExtension;
            string strFileName;
            FileStream objFileStream;
            int intSize = 2048;
            var arrData = new byte[2048];
            string strMessage = "";
            var arrSkinFiles = new ArrayList();

            //Localized Strings
            PortalSettings ResourcePortalSettings = Globals.GetPortalSettings();
            string BEGIN_MESSAGE = Localization.GetString("BeginZip", ResourcePortalSettings);
            string CREATE_DIR = Localization.GetString("CreateDir", ResourcePortalSettings);
            string WRITE_FILE = Localization.GetString("WriteFile", ResourcePortalSettings);
            string FILE_ERROR = Localization.GetString("FileError", ResourcePortalSettings);
            string END_MESSAGE = Localization.GetString("EndZip", ResourcePortalSettings);
            string FILE_RESTICTED = Localization.GetString("FileRestricted", ResourcePortalSettings);

            strMessage += FormatMessage(BEGIN_MESSAGE, skinName, -1, false);

            objZipEntry = objZipInputStream.GetNextEntry();
            while (objZipEntry != null)
            {
                if (!objZipEntry.IsDirectory)
                {
					//validate file extension
                    strExtension = objZipEntry.Name.Substring(objZipEntry.Name.LastIndexOf(".") + 1);
                    var extraExtensions = new List<string> {".ASCX", ".HTM", ".HTML", ".CSS", ".SWF", ".RESX", ".XAML", ".JS"};
                    if(Host.AllowedExtensionWhitelist.IsAllowedExtension(strExtension, extraExtensions))
                    {
                        //process embedded zip files
						if (objZipEntry.Name.ToLower() == RootSkin.ToLower() + ".zip")
                        {
                            var objMemoryStream = new MemoryStream();
                            intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            while (intSize > 0)
                            {
                                objMemoryStream.Write(arrData, 0, intSize);
                                intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            }
                            objMemoryStream.Seek(0, SeekOrigin.Begin);
                            strMessage += UploadLegacySkin(rootPath, RootSkin, skinName, objMemoryStream);
                        }
                        else if (objZipEntry.Name.ToLower() == RootContainer.ToLower() + ".zip")
                        {
                            var objMemoryStream = new MemoryStream();
                            intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            while (intSize > 0)
                            {
                                objMemoryStream.Write(arrData, 0, intSize);
                                intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            }
                            objMemoryStream.Seek(0, SeekOrigin.Begin);
                            strMessage += UploadLegacySkin(rootPath, RootContainer, skinName, objMemoryStream);
                        }
                        else
                        {
                            strFileName = rootPath + skinRoot + "\\" + skinName + "\\" + objZipEntry.Name;

                            //create the directory if it does not exist
                            if (!Directory.Exists(Path.GetDirectoryName(strFileName)))
                            {
                                strMessage += FormatMessage(CREATE_DIR, Path.GetDirectoryName(strFileName), 2, false);
                                Directory.CreateDirectory(Path.GetDirectoryName(strFileName));
                            }
							
							//remove the old file
                            if (File.Exists(strFileName))
                            {
                                File.SetAttributes(strFileName, FileAttributes.Normal);
                                File.Delete(strFileName);
                            }
							
							//create the new file
                            objFileStream = File.Create(strFileName);
							
							//unzip the file
                            strMessage += FormatMessage(WRITE_FILE, Path.GetFileName(strFileName), 2, false);
                            intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            while (intSize > 0)
                            {
                                objFileStream.Write(arrData, 0, intSize);
                                intSize = objZipInputStream.Read(arrData, 0, arrData.Length);
                            }
                            objFileStream.Close();

                            //save the skin file
                            switch (Path.GetExtension(strFileName))
                            {
                                case ".htm":
                                case ".html":
                                case ".ascx":
                                case ".css":
                                    if (strFileName.ToLower().IndexOf(Globals.glbAboutPage.ToLower()) < 0)
                                    {
                                        arrSkinFiles.Add(strFileName);
                                    }
                                    break;
                            }
                            break;
                        }
                    }
                    else
                    {
                        strMessage += string.Format(FILE_RESTICTED, objZipEntry.Name, Host.AllowedExtensionWhitelist.ToStorageString(), ",", ", *.").Replace("2", "true");
                    }
                }
                objZipEntry = objZipInputStream.GetNextEntry();
            }
            strMessage += FormatMessage(END_MESSAGE, skinName + ".zip", 1, false);
            objZipInputStream.Close();

            //process the list of skin files
            var NewSkin = new SkinFileProcessor(rootPath, skinRoot, skinName);
            strMessage += NewSkin.ProcessList(arrSkinFiles, SkinParser.Portable);
			
			//log installation event
            try
            {
                var objEventLogInfo = new LogInfo();
                objEventLogInfo.LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString();
                objEventLogInfo.LogProperties.Add(new LogDetailInfo("Install Skin:", skinName));
                Array arrMessage = strMessage.Split(new[] {"<br />"}, StringSplitOptions.None);
                foreach (string strRow in arrMessage)
                {
                    objEventLogInfo.LogProperties.Add(new LogDetailInfo("Info:", HtmlUtils.StripTags(strRow, true)));
                }
                var objEventLog = new EventLogController();
                objEventLog.AddLog(objEventLogInfo);
            }
            catch (Exception exc)
            {
                Logger.Error(exc);

            }
            return strMessage;
        }
Exemple #34
0
 public abstract void DeleteLog(LogInfo logInfo);
        /// <summary>
        /// logs an exception related to a module provider once per cache-lifetime
        /// </summary>
        /// <param name="ex"></param>
        /// <param name="status"></param>
        /// <param name="result"></param>
        /// <param name="messages"></param>
        /// <param name="provider"></param>
        public static void LogModuleProviderExceptionInRequest(Exception ex, string status,
                                                                ExtensionUrlProvider provider, 
                                                                UrlAction result,
                                                                List<string> messages)
        {
            if (ex != null)
            {
                string moduleProviderName = "Unknown Provider";
                string moduleProviderVersion = "Unknown Version";
                if (provider != null)
                {
                    moduleProviderName = provider.ProviderConfig.ProviderName;
                    moduleProviderVersion = provider.GetType().Assembly.GetName(false).Version.ToString();
                }
                //this logic prevents a site logging an exception for every request made.  Instead 
                //the exception will be logged once for the life of the cache / application restart or 1 hour, whichever is shorter.
                //create a cache key for this exception type
                string cacheKey = ex.GetType().ToString();
                //see if there is an existing object logged for this exception type
                object existingEx = DataCache.GetCache(cacheKey);
                if (existingEx == null)
                {
                    //if there was no existing object logged for this exception type, this is a new exception
                    DateTime expire = DateTime.Now.AddHours(1);
                    DataCache.SetCache(cacheKey, cacheKey, expire);
                    //just store the cache key - it doesn't really matter
                    //create a log event
                    string productVer = Assembly.GetExecutingAssembly().GetName(false).Version.ToString();
                    var elc = new EventLogController();
                    var logEntry = new LogInfo {LogTypeKey = "GENERAL_EXCEPTION"};
                    logEntry.AddProperty("Url Rewriting Extension Url Provider Exception",
                                         "Exception in Url Rewriting Process");
                    logEntry.AddProperty("Provider Name", moduleProviderName);
                    logEntry.AddProperty("Provider Version", moduleProviderVersion);
                    logEntry.AddProperty("Http Status", status);
                    logEntry.AddProperty("Product Version", productVer);
                    if (result != null)
                    {
                        logEntry.AddProperty("Original Path", result.OriginalPath ?? "null");
                        logEntry.AddProperty("Raw Url", result.RawUrl ?? "null");
                        logEntry.AddProperty("Final Url", result.FinalUrl ?? "null");

                        logEntry.AddProperty("Rewrite Result", !string.IsNullOrEmpty(result.RewritePath)
                                                                     ? result.RewritePath
                                                                     : "[no rewrite]");
                        logEntry.AddProperty("Redirect Location", string.IsNullOrEmpty(result.FinalUrl) 
                                                                    ? "[no redirect]" 
                                                                    : result.FinalUrl);
                        logEntry.AddProperty("Action", result.Action.ToString());
                        logEntry.AddProperty("Reason", result.Reason.ToString());
                        logEntry.AddProperty("Portal Id", result.PortalId.ToString());
                        logEntry.AddProperty("Tab Id", result.TabId.ToString());
                        logEntry.AddProperty("Http Alias", result.PortalAlias != null ? result.PortalAlias.HTTPAlias : "Null");

                        if (result.DebugMessages != null)
                        {
                            int i = 1;
                            foreach (string debugMessage in result.DebugMessages)
                            {
                                string msg = debugMessage;
                                if (debugMessage == null)
                                {
                                    msg = "[message was null]";
                                }
                                logEntry.AddProperty("Debug Message[result] " + i.ToString(), msg);
                                i++;
                            }
                        }
                    }
                    else
                    {
                        logEntry.AddProperty("Result", "Result value null");
                    }
                    if (messages != null)
                    {
                        int i = 1;
                        foreach (string msg in messages)
                        {
                            logEntry.AddProperty("Debug Message[raw] " + i.ToString(), msg);
                            i++;
                        }
                    }
                    logEntry.AddProperty("Exception Type", ex.GetType().ToString());
                    logEntry.AddProperty("Message", ex.Message);
                    logEntry.AddProperty("Stack Trace", ex.StackTrace);
                    if (ex.InnerException != null)
                    {
                        logEntry.AddProperty("Inner Exception Message", ex.InnerException.Message);
                        logEntry.AddProperty("Inner Exception Stacktrace", ex.InnerException.StackTrace);
                    }
                    logEntry.BypassBuffering = true;
                    elc.AddLog(logEntry);
                }
            }
        }
        private void OnPreRequestHandlerExecute(object sender, EventArgs e)
        {
            try
            {
                //First check if we are upgrading/installing or if it is a non-page request
                var app = (HttpApplication) sender;
                HttpRequest request = app.Request;

                if (!Initialize.ProcessHttpModule(request, false, false))
                {
                    return;
                }

                if (HttpContext.Current != null)
                {
                    HttpContext context = HttpContext.Current;
                    if ((context == null))
                    {
                        return;
                    }
                    var page = context.Handler as CDefault;
                    if ((page == null))
                    {
                        return;
                    }
                    page.Load += OnPageLoad;
                }
            }
            catch (Exception ex)
            {
                var log = new LogInfo {LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString()};
                log.AddProperty("Analytics.AnalyticsModule", "OnPreRequestHandlerExecute");
                log.AddProperty("ExceptionMessage", ex.Message);
                LogController.Instance.AddLog(log);
                Logger.Error(log);

            }
        }
Exemple #37
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Logs the Install event to the Event Log
        /// </summary>
        /// <param name="package">The name of the package</param>
        /// <param name="eventType">Event Type.</param>
        /// -----------------------------------------------------------------------------
        private void LogInstallEvent(string package, string eventType)
        {
            try
            {
                var objEventLogInfo = new LogInfo();
                objEventLogInfo.LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString();

	            if (InstallerInfo.ManifestFile != null)
	            {
		            objEventLogInfo.LogProperties.Add(new LogDetailInfo(eventType + " " + package + ":", InstallerInfo.ManifestFile.Name.Replace(".dnn", "")));
	            }

	            foreach (LogEntry objLogEntry in InstallerInfo.Log.Logs)
                {
                    objEventLogInfo.LogProperties.Add(new LogDetailInfo("Info:", objLogEntry.Description));
                }
                var objEventLog = new EventLogController();
                objEventLog.AddLog(objEventLogInfo);
            }
            catch (Exception exc)
            {
                Logger.Error(exc);

            }
        }
        /// <summary>
        /// LogEnd logs the Application Start Event
        /// </summary>
        /// <history>
        ///     [cnurse]    1/28/2005   Moved back to App_End from Logging Module
        /// </history>
        private void LogEnd()
        {
            try
            {
                EventLogController objEv = new EventLogController();
                LogInfo objEventLogInfo = new LogInfo();
                objEventLogInfo.BypassBuffering = true;
                objEventLogInfo.LogTypeKey = EventLogController.EventLogType.APPLICATION_SHUTTING_DOWN.ToString();
                objEv.AddLog( objEventLogInfo );
            }
            catch( Exception exc )
            {
                Exceptions.LogException( exc );
            }

            // purge log buffer
            LoggingProvider.Instance().PurgeLogBuffer();
        }
Exemple #39
0
        private static void FavIconsToPortalSettings()
        {
            DnnInstallLogger.InstallLogInfo(Localization.Localization.GetString("LogStart", Localization.Localization.GlobalResourceFile) + "FavIconsToPortalSettings");
            const string fileName = "favicon.ico";
            var portals = PortalController.Instance.GetPortals().Cast<PortalInfo>();

            foreach (var portalInfo in portals)
            {
                string localPath = Path.Combine(portalInfo.HomeDirectoryMapPath, fileName);

                if (File.Exists(localPath))
                {
                    try
                    {
                        int fileId;
                        var folder = FolderManager.Instance.GetFolder(portalInfo.PortalID, "");
                        if (!FileManager.Instance.FileExists(folder, fileName))
                        {
                            using (var stream = File.OpenRead(localPath))
                            {
                                FileManager.Instance.AddFile(folder, fileName, stream, /*overwrite*/ false);
                            }
                        }
                        fileId = FileManager.Instance.GetFile(folder, fileName).FileId;

                        new FavIcon(portalInfo.PortalID).Update(fileId);
                    }
                    catch (Exception e)
                    {
                        string message = string.Format("Unable to setup Favicon for Portal: {0}", portalInfo.PortalName);
                        var log = new LogInfo {LogTypeKey = EventLogController.EventLogType.ADMIN_ALERT.ToString()};
                        log.AddProperty("Issue", message);
                        log.AddProperty("ExceptionMessage", e.Message);
                        log.AddProperty("StackTrace", e.StackTrace);
                        LogController.Instance.AddLog(log);

                        Logger.Warn(message, e);
                    }
                }
            }
        }
 /// <summary>
 /// LogStart logs the Application Start Event
 /// </summary>
 /// <remarks>
 /// </remarks>
 /// <history>
 ///     [cnurse]    1/27/2005   Moved back to App_Start from Logging Module
 /// </history>
 public static void LogStart()
 {
     EventLogController objEv = new EventLogController();
     LogInfo objEventLogInfo = new LogInfo();
     objEventLogInfo.BypassBuffering = true;
     objEventLogInfo.LogTypeKey = EventLogController.EventLogType.APPLICATION_START.ToString();
     objEv.AddLog( objEventLogInfo );
 }
Exemple #41
0
        ///-----------------------------------------------------------------------------
        ///<summary>
        ///  UpgradeVersion upgrades a single version
        ///</summary>
        ///<remarks>
        ///</remarks>
        ///<param name = "scriptFile">The upgrade script file</param>
        ///<param name="writeFeedback">Write status to Response Stream?</param>
        ///<history>
        ///  [cnurse]	02/14/2007	created
        ///</history>
        ///-----------------------------------------------------------------------------
        public static string UpgradeVersion(string scriptFile, bool writeFeedback)
        {
            DnnInstallLogger.InstallLogInfo(Localization.Localization.GetString("LogStart", Localization.Localization.GlobalResourceFile) + "UpgradeVersion:" + scriptFile);
            var version = new Version(GetFileNameWithoutExtension(scriptFile));
            string exceptions = Null.NullString;

            // verify script has not already been run
            if (!Globals.FindDatabaseVersion(version.Major, version.Minor, version.Build))
            {
                // execute script file (and version upgrades) for version
                exceptions = ExecuteScript(scriptFile, writeFeedback);

                // update the version
                Globals.UpdateDataBaseVersion(version);

                var log = new LogInfo
                {
                    LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString(),
                    BypassBuffering = true
                };
                log.AddProperty("Upgraded DotNetNuke", "Version: " + Globals.FormatVersion(version));
                if (exceptions.Length > 0)
                {
                    log.AddProperty("Warnings", exceptions);
                }
                else
                {
                    log.AddProperty("No Warnings", "");
                }
                LogController.Instance.AddLog(log);
            }
            if (string.IsNullOrEmpty(exceptions))
            {
                DnnInstallLogger.InstallLogInfo(Localization.Localization.GetString("LogStart", Localization.Localization.GlobalResourceFile) + "UpgradeVersion:" + scriptFile);
            }
            else
            {
                DnnInstallLogger.InstallLogError(exceptions);
            }
            return exceptions;
        }
Exemple #42
0
 /// <inheritdoc/>
 public void DeleteLog(LogInfo logInfo)
 {
     LoggingProvider.Instance().DeleteLog(logInfo);
 }