Ejemplo n.º 1
0
        /// <summary>
        /// Send email to a recipient and BCC members.
        /// </summary>
        /// <param name="FromName">Sender name.</param>
        /// <param name="FromEmail">Sender email.</param>
        /// <param name="ToName">Recipient name.</param>
        /// <param name="ToEmail">Recipient email.</param>
        /// <param name="Bcc">BCC recipient emails.</param>
        /// <param name="Subject">Mail subject.</param>
        /// <param name="Body">Mail body.</param>
        /// <returns>True if an email has been sent succesfully.</returns>
        public static bool SendMail(string FromName, string FromEmail, string ToName, string ToEmail, string Bcc, string Subject, string Body)
        {
            ApplicationParameters AppParams = Parameters;
            var    fromAddress  = new MailAddress(FromEmail, FromName);
            var    toAddress    = new MailAddress(ToEmail, ToName);
            string fromPassword = AppParams.MailServerSmtpPassword.Value;
            string subject      = Subject;
            string body         = Body;

            var smtp = new SmtpClient
            {
                Host           = Parameters.MailServerSmtpHost.Value,
                Port           = int.Parse(AppParams.MailServerSmtpPort.Value),
                EnableSsl      = bool.Parse(AppParams.MailServerSmtpSSLEnabled.Value),
                DeliveryMethod = SmtpDeliveryMethod.Network,
                Credentials    = new NetworkCredential(fromAddress.Address, fromPassword),
                Timeout        = 20000
            };

            using (var message = new MailMessage(fromAddress, toAddress)
            {
                Subject = subject,
                Body = body,
                IsBodyHtml = true
            })

                try
                {
                    if (Bcc != null && Bcc.Length > 0)
                    {
                        message.Bcc.Add(Bcc);
                    }
                    else
                    {
                        Bcc = "";
                    }

                    string Title = String.Format(AuditEvent.TheEmailhasBeenSent, FromName, FromEmail, ToName, ToEmail, Bcc, Subject);
                    smtp.Send(message);
                    AuditEvent.AppEventSuccess(FromEmail, Title, "##Details%%" + Title + "\r\n\r\nE-mail message:\r\n" + Body + "%%");
                    return(true);
                }
                catch (Exception ex)
                {
                    AuditEvent.AddAppEvent(
                        new AuditEventItem
                    {
                        EventType   = AuditEventType.Error,
                        IPAddress   = HttpContext.Current.Request.UserHostAddress,
                        MemberEmail = AppParams.GeneralAdminEmail.Value,
                        Description = ex.Message,
                        Details     = AuditEvent.GetSessionDetails("E-mail message:\r\n" + body + "\r\nStackTrace:\r\n" + ex.StackTrace)
                    }
                        );

                    return(false);
                }
        }
Ejemplo n.º 2
0
        protected void Application_Error()
        {
            var exception     = Server.GetLastError();
            var httpException = exception as HttpException;

            string Message = exception.Message;
            string Details = String.Format("Source: {0}\r\nStackTrace: {1}", exception.Source, exception.StackTrace);

            if (exception.InnerException != null)
            {
                Message += " " + exception.InnerException.Message;
                Details += String.Format("\r\nSource: {0}\r\nStackTrace: {1}", exception.InnerException.Source, exception.InnerException.StackTrace);
            }


            try
            {
                AuditEvent.AppEventError(AppSession.Parameters.GeneralAdminEmail.Value, "Unhandled exception: " + Message, AuditEvent.GetSessionDetails(Details));
            }
            catch
            {
            }

            if (HttpContext.Current.IsDebuggingEnabled || (User.Identity.IsAuthenticated && AppSession.IsMemberInAdminRole))
            {
            }
            else
            {
                Response.Clear();
                Server.ClearError();

                var routeData = new RouteData();
                routeData.Values["controller"] = "Errors";
                routeData.Values["action"]     = "General";
                routeData.Values["exception"]  = exception;
                Response.StatusCode            = 500;

                if (httpException != null)
                {
                    Response.StatusCode = httpException.GetHttpCode();
                    switch (Response.StatusCode)
                    {
                    case 403:
                        routeData.Values["action"] = "Http403";
                        break;

                    case 404:
                        routeData.Values["action"] = "Http404";
                        break;
                    }
                }

                // Avoid IIS7 getting in the middle
                // http://blog.davebouwman.com/2011/04/21/custom-404-pages-for-asp-net-mvc-3/
                Response.TrySkipIisCustomErrors = true;

                IController errorsController = new ErrorsController();
                var         rc = new RequestContext(new HttpContextWrapper(Context), routeData);
                errorsController.Execute(rc);
            }
        }
Ejemplo n.º 3
0
        public ActionResult SaveProfile(List <ProfileFieldInfo> FieldInfo, string TimeZoneID)
        {
            System.Threading.Thread.Sleep(1000);
            RequestResultModel _model = new RequestResultModel();

            _model.InfoType = RequestResultInfoType.ErrorOrDanger;
            _model.Message  = "";

            // Check mandatory fields
            foreach (ProfileFieldInfo Field in FieldInfo)
            {
                ProfileField profileField = ProfileFields.GetBy(int.Parse(Field.ID));
                if (profileField.IsMandatory == 1 && (Field.Value == null || Field.Value.Trim().Length == 0))
                {
                    _model.Message += String.Format("<li>{0}</li>", String.Format(GetLabel("Account.CreateAccount.Mandatory"), profileField.FieldName));
                }

                if (profileField.IsMandatory == 1 && profileField.FieldTypeID == ProfileFieldTypeEnum.CheckBox && Field.Value != null && Field.Value.ToLower() == "false")
                {
                    _model.Message += String.Format("<li>{0}</li>", String.Format(GetLabel("Account.CreateAccount.Mandatory"), profileField.FieldName));
                }
            }

            if (_model.Message.Length > 0)
            {
                _model.Message = String.Format("<ul class=\"error-message-list\">{0}</ul>", _model.Message);
                return(Json(new
                {
                    Status = RequestResultInfoType.ErrorOrDanger,
                    NotifyType = NotifyType.DialogInline,
                    Message = HttpUtility.HtmlDecode(this.RenderPartialView(@"_RequestResultPageInLine", _model))
                }, JsonRequestBehavior.AllowGet));
            }

            if (Profile.Member.TimeZoneID != TimeZoneID)
            {
                AuditEvent.AppEventInfo(AppSession.Profile.Member.Email, String.Format("Member updated time zone to: \"{0}\" ", Profile.Member.TimeZoneID));
            }

            Profile.Member.TimeZoneID = TimeZoneID;
            Profile.Member.UpdateTimeZone();

            String FieldValues = "";
            List <MemberProfileField> memberProfileFields = MemberProfileFields.GetByMember(Profile.Member.MemberID);

            foreach (ProfileFieldInfo Field in FieldInfo)
            {
                String Value = Field.Value != null?Field.Value.Trim() : Field.Value;

                ProfileField       profileField       = ProfileFields.GetBy(int.Parse(Field.ID));
                MemberProfileField memberProfileField = MemberProfileFields.GetField(memberProfileFields, int.Parse(Field.ID));

                if (profileField.Encrypted == 1 && memberProfileField.FieldValue != null && memberProfileField.FieldValue.Length > 0)
                {
                    memberProfileField.FieldValue = Encryptor.DecryptStringAES(memberProfileField.FieldValue, AppSession.EncryptionKey);
                }

                if (Value != memberProfileField.FieldValue)
                {
                    FieldValues += String.Format("<b>Name</b>:  {0} <b>Before:</b>  \"{1}\" <b>Now:</b>  \"{2}\"<br/>", profileField.FieldName, memberProfileField.FieldValue, Value);
                }

                memberProfileField.MemberID   = Profile.Member.MemberID;
                memberProfileField.FieldID    = int.Parse(Field.ID);
                memberProfileField.FieldValue = Value;

                if (profileField.Encrypted == 1 && memberProfileField.FieldValue != null && memberProfileField.FieldValue.Length > 0)
                {
                    memberProfileField.FieldValue = Encryptor.EncryptStringAES(memberProfileField.FieldValue, AppSession.EncryptionKey);
                }

                memberProfileField.Save();
            }

            memberProfileFields = MemberProfileFields.GetByMember(Profile.Member.MemberID);

            List <MemberFieldNameValue> MemberFieldNameValues = new List <MemberFieldNameValue>();

            foreach (MemberProfileField memberField in memberProfileFields)
            {
                MemberFieldNameValues.Add(new MemberFieldNameValue {
                    Name = memberField.ProfileFieldID.ToString(), Value = memberField.FieldValue, Type = (int)ProfileFields.GetBy(memberField.FieldID).FieldTypeID
                });
            }

            _model.Message  = "Your profile has been updated successfully.";
            _model.InfoType = RequestResultInfoType.Success;

            AuditEvent.AppEventInfo(AppSession.Profile.Member.Email, String.Format("Profile of \"{0}\" {1} member has been updated successfully.", AppSession.Profile.Member.Name, AppSession.Profile.Member.Email), AuditEvent.GetSessionDetails(FieldValues));

            return(Json(new
            {
                Status = RequestResultInfoType.Success,
                NotifyType = NotifyType.DialogInline,
                Message = HttpUtility.HtmlDecode(this.RenderPartialView(@"_RequestResultPageInLine", _model)),
                MemberFields = MemberFieldNameValues,
                TimeZoneID = Profile.Member.TimeZoneID != null && Profile.Member.TimeZoneID.Length > 0 ? Profile.Member.TimeZoneID : ""
            }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Returns LDAP member info which are stored in the directory.
        /// </summary>
        /// <returns></returns>
        public LDAPMemberInfo GetMemberInfo()
        {
            DirectoryEntry DirEntry = new DirectoryEntry();
            {
                DirEntry.Path               = DirectoryPath;
                DirEntry.Username           = UserName;
                DirEntry.Password           = Password;
                DirEntry.AuthenticationType = AuthenticationTypes.Secure;
            }

            LDAPMemberInfo memberInfo = new LDAPMemberInfo();

            string[] nameParts = UserName.Split(new string[] { "@" }, StringSplitOptions.RemoveEmptyEntries);

            DirectorySearcher search = new DirectorySearcher(DirEntry);

            search.Filter = "(SAMAccountName=" + nameParts[0] + ")";
            search.PropertiesToLoad.Add("cn");
            search.PropertiesToLoad.Add("mail");
            try{
                SearchResult result = search.FindOne();
                if (null != result)
                {
                    memberInfo.DisplayName = (String)result.Properties["cn"][0];
                    memberInfo.Email       = (String)result.Properties["mail"][0];
                }
            }
            catch (Exception ex)
            {
                String Message = String.Format("Member:{0}, Message:{1}", UserName, ex.Message);
                AuditEvent.AppEventError(AppSession.Parameters.GeneralAdminEmail.Value, "LDAP obtaining member name failed. " + Message, AuditEvent.GetSessionDetails(Message), true);
            }

            return(memberInfo);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Authenticates a member in LDAP directory.
        /// </summary>
        /// <returns>True if Aathentication was fine.</returns>
        public bool Authenticate()
        {
            bool authentic = false;

            try
            {
                DirectoryEntry entry        = new DirectoryEntry(DirectoryPath, UserName, Password);
                object         nativeObject = entry.NativeObject;

                string[] nameParts = UserName.Split(new string[] { "@" }, StringSplitOptions.RemoveEmptyEntries);

                DirectorySearcher search = new DirectorySearcher(entry);
                search.Filter = "(SAMAccountName=" + nameParts[0] + ")";
                search.PropertiesToLoad.Add("cn");
                search.PropertiesToLoad.Add("mail");
                SearchResult result = search.FindOne();

                if (null != result)
                {
                    MemberInfo.DisplayName = (String)result.Properties["cn"][0];
                    MemberInfo.Email       = (String)result.Properties["mail"][0];
                }

                authentic = true;
            }
            catch (DirectoryServicesCOMException ex) {
                String Message = String.Format("Member: {0}  Message:{1}", UserName, ex.Message);
                AuditEvent.AppEventError(AppSession.Parameters.GeneralAdminEmail.Value, "LDAP authentication failed. " + Message, AuditEvent.GetSessionDetails(Message), true);
            }

            return(authentic);
        }
Ejemplo n.º 6
0
        public ActionResult ImportRoles()
        {
            System.Threading.Thread.Sleep(200);
            CultureInfo provider = CultureInfo.InvariantCulture;

            List <Role> RoleResult = new List <Role>();

            try
            {
                for (int i = 0; i < Request.Files.Count; i++)
                {
                    System.Threading.Thread.Sleep(1);

                    String             FileContent = "";
                    HttpPostedFileBase PostedFile  = Request.Files[i];

                    using (System.IO.Stream input = PostedFile.InputStream)
                    {
                        byte[] buffer = new byte[PostedFile.InputStream.Length];
                        input.Read(buffer, 0, buffer.Length);
                        FileContent = System.Text.ASCIIEncoding.UTF8.GetString(buffer);
                    }


                    if (FileContent.Length > 0)
                    {
                        string[] Lines = FileContent.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                        AuditEvent.AppEventSuccess(Profile.Member.Email, String.Format(AuditEvent.RoleUploadHasStarted, Lines.Length));

                        int LineNumber = 1;
                        foreach (String Line in Lines)
                        {
                            if (LineNumber == 1 || Line == null || Line.Trim().Length == 0)
                            {
                                LineNumber++;
                                continue;
                            }

                            List <string> Values = new List <string>();
                            CsvParser     parser = new CsvParser(Line);

                            foreach (string s in parser)
                            {
                                Values.Add(s.Trim());
                            }

                            if (Values.Count >= 4)
                            {
                                Role Role = Web.Admin.Logic.Collections.Roles.GetBy(Values[0]);
                                if (Role.RoleID > 0)
                                {
                                    Role.UIMessage     = "Role already exists.";
                                    Role.UILineNumber  = LineNumber;
                                    Role.UIMessageType = Logic.UIMessageType.Warning;
                                    AuditEvent.AppEventWarning(Profile.Member.Email, String.Format(AuditEvent.RoleUploadMemberExists, Role.Name));
                                }
                                else
                                {
                                    Role.Name     = Values[0];
                                    Role.Settings = Values[1];

                                    if (Values[3].Trim().Length == 0)
                                    {
                                        Role.BackColor = "aaaaaa";
                                    }
                                    else
                                    {
                                        Role.BackColor = Values[2];
                                    }

                                    if (Values[3].Trim().Length == 0)
                                    {
                                        Role.ForeColor = "000000";
                                    }
                                    else
                                    {
                                        Role.ForeColor = Values[3];
                                    }

                                    if (BuiltInRoleMember.ContainsRole(Role.Name))
                                    {
                                        Role.IsBuiltIn = true;
                                    }
                                    else
                                    {
                                        Role.IsBuiltIn = false;
                                    }

                                    try
                                    {
                                        Role.Created = DateTime.ParseExact(Values[4], "dd.MM.yyyy HH:mm:ss", provider);
                                    }
                                    catch { }

                                    try
                                    {
                                        Role.Modified = DateTime.ParseExact(Values[5], "dd.MM.yyyy HH:mm:ss", provider);
                                    }
                                    catch {
                                    }

                                    Role.Save();

                                    Role.UIMessage     = "Role has been added.";
                                    Role.UIMessageType = Logic.UIMessageType.Success;
                                    Role.UILineNumber  = LineNumber;
                                    AuditEvent.AppEventSuccess(Profile.Member.Email, String.Format(AuditEvent.RoleUploadedItemAdded, Role.Name));
                                }

                                RoleResult.Add(Role);
                            }
                            else if (Values.Count > 0)
                            {
                                Role Role = new Role();

                                Role.UIMessage     = "Wrong line format. Number of columns: " + Values.Count.ToString();
                                Role.UIMessageType = Logic.UIMessageType.ErrorOrDanger;
                                Role.UILineNumber  = LineNumber;
                                AuditEvent.AppEventSuccess(Profile.Member.Email, String.Format(AuditEvent.RoleUploadWrongLineFormat, LineNumber, Values.Count));

                                RoleResult.Add(Role);
                            }

                            LineNumber++;
                        }
                    }
                }

                System.Threading.Thread.Sleep(1000);
                RoleListModel Model = new RoleListModel();
                Model.Roles = RoleResult;

                return(Json(new
                {
                    NotifyType = NotifyType.Dialog,
                    Html = this.RenderPartialView(@"_ImportRolesResult", Model)
                }, "text/html", JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                RequestResultModel _model = new RequestResultModel();

                _model.Title         = "Warning";
                _model.Message       = String.Format("Something went wrong: {0}", HttpUtility.HtmlEncode(ex.Message));
                _model.InfoType      = RequestResultInfoType.ErrorOrDanger;
                _model.HideInSeconds = 0;
                _model.Height        = 250;

                AuditEvent.AppEventError(Profile.Member.Email, _model.Message, AuditEvent.GetSessionDetails(ex.StackTrace));

                return(Json(new
                {
                    NotifyType = NotifyType.DialogInline,
                    Html = this.RenderPartialView(@"_RequestResultDialog", _model)
                }, "text/html", JsonRequestBehavior.AllowGet));
            }
        }