Пример #1
0
        /// <summary>
        /// Gets the report configuration from the server.
        /// </summary>
        private void GetReportConfiguration()
        {
            // Get the system information.
            iFolderSystem system = web.GetSystem();

            // If there are no report settings saved, use the default settings.
            string       settings = web.GetiFolderSetting(system.ReportiFolderID, ReportSettingName);
            ReportConfig rc       = (settings != null) ? new ReportConfig(settings) : new ReportConfig();

            // Set the web page selections.
            EnableReporting.Checked = Summary.Visible = rc.Enabled;

            FrequencyList.Enabled       = rc.Enabled;
            FrequencyList.SelectedIndex = ( int )rc.Frequency;

            ReportLocation.Enabled       = rc.Enabled;
            ReportLocation.SelectedIndex = rc.IsiFolder ? 0 : 1;

            DayOfMonthList.Enabled       = rc.Enabled;
            DayOfMonthList.SelectedIndex = rc.DayOfMonth - 1;

            DayOfWeekList.Enabled       = rc.Enabled;
            DayOfWeekList.SelectedIndex = ( int )rc.Weekday;

            TimeOfDayList.Enabled       = rc.Enabled;
            TimeOfDayList.SelectedIndex = ConvertTimeToIndex(rc.TimeOfDay);

            FormatList.Enabled       = rc.Enabled;
            FormatList.SelectedIndex = ( int )rc.Format;

            // Save the report settings in the ViewState.
            ReportID   = system.ReportiFolderID;
            ReportName = system.ReportiFolderName;
            ReportPath = system.ReportPath;
        }
Пример #2
0
        /// <summary>
        /// Do Login
        /// </summary>
        /// <param name="username">Username</param>
        /// <param name="password">Password</param>
        /// <param name="check">Perform browser checks.</param>
        private void DoLogin(string username, string password, bool check)
        {
            // client information
            log.Info(Context, "Client Information: {0}, {1}, {2}",
                     username, Context.Request.UserHostName,
                     Context.Request.UserAgent);

            // expires for new cookies
            DateTime expires = DateTime.Now + TimeSpan.FromDays(30);

            // check for cookies
            if (check)
            {
                HttpCookie testCookie = Request.Cookies["test"];
                if (testCookie == null)
                {
                    MessageType.Text = rm.GetString("LOGINERROR");
                    MessageText.Text = "LOGINNOCOOKIES";

                    // log access
                    log.Info(Context, "Login Failed: Browser Cookies Disabled");

                    return;
                }
            }

            // check for running scripts
            // NOTE: check the value for iChain
            if (check)
            {
                string noscript = Request.Form.Get("noscript");
                if ((noscript != null) && (noscript == "true"))
                {
                    MessageType.Text = rm.GetString("LOGINERROR");
                    MessageText.Text = "LOGINNOSCRIPT";

                    // log access
                    log.Info(Context, "Login Failed: Browser Scripts Disabled");

                    return;
                }
            }

            try
            {
                // connection
                iFolderAdmin web = new iFolderAdmin();

                // update web url
                // always use the original path from the WSDL file
                string simiasUrl = Environment.GetEnvironmentVariable("SimiasUrl");
                if (simiasUrl == null)
                {
                    simiasUrl = System.Configuration.ConfigurationSettings.AppSettings.Get("SimiasUrl");
                }

                UriBuilder webUrl = new UriBuilder(simiasUrl);

                webUrl.Path = (new Uri(web.Url)).PathAndQuery;
                web.Url     = webUrl.Uri.ToString();

                UTF8Encoding utf8Name = new UTF8Encoding();
                byte[]       encodedCredsByteArray = utf8Name.GetBytes(username);
                string       iFolderUserBase64     = Convert.ToBase64String(encodedCredsByteArray);

                encodedCredsByteArray = utf8Name.GetBytes(password);
                string iFolderPassBase64 = Convert.ToBase64String(encodedCredsByteArray);

                // credentials
                web.PreAuthenticate = true;
                web.Credentials     = new NetworkCredential(iFolderUserBase64, iFolderPassBase64);

                // in only one path this value will persist, that is when language cookie is null
                Session["Language"] = "en";
                string code = Session["Language"] as string;
                // ui language
                if (LanguageList.SelectedValue == null || LanguageList.SelectedValue == String.Empty)
                {
                    /// Case when single sign on happens without the login page so no language selected

                    if ((Request.UserLanguages != null) && (Request.UserLanguages.Length > 0))
                    {
                        code = Request.UserLanguages[0];
                        if (!(code.StartsWith("zh") || code.StartsWith("pt")))
                        {
                            code = code.Substring(0, 2);
                        }
                        else
                        {
                            // On Single sign-on Browser sends language as zh-cn,zh-tw and pt-br .
                            // Help files are placed in a folder with names zh-CN,zh-TW and pt-BR .
                            if (code == "zh-cn")
                            {
                                code = "zh-CN";
                            }
                            else if (code == "zh-tw")
                            {
                                code = "zh-TW";
                            }
                            else if (code == "pt-br")
                            {
                                code = "pt-BR";
                            }
                        }
                        Session["Language"] = code;
                    }
                }
                else
                {
                    /// Normal login so select from the list
                    Session["Language"] = LanguageList.SelectedValue;
                    code = Session["Language"] as string;
                }
                Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(code);
                log.Info(Context, "Current culture :{0}", Thread.CurrentThread.CurrentUICulture.Name);
                // user and system
                iFolderUser user = null;
                try
                {
                    user = web.GetAuthenticatedUser();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                string multibyteserver = web.GetServerStatus();

                iFolderSystem system = web.GetSystem();
                Session["System"] = system.Name;
                iFolderServer server = web.GetHomeServer();
                Session["Version"] = server.Version;

                if (multibyteserver == "no")
                {
                    web.PreAuthenticate = true;
                    web.Credentials     = new NetworkCredential(username, password);
                }
                // cookies
                web.CookieContainer   = new CookieContainer();
                encodedCredsByteArray = utf8Name.GetBytes(user.UserName);
                iFolderUserBase64     = Convert.ToBase64String(encodedCredsByteArray);

                // new username cookie for 30 days
                Response.Cookies["username"].Value   = multibyteserver == "no" ? user.UserName : iFolderUserBase64;
                Response.Cookies["username"].Expires = expires;
                Response.Cookies["username"].Path    = "/admin/";

                // session
                Session["Connection"] = web;
                Session["Name"]       = user.FullName;
                Session["UserID"]     = user.ID;


                // add server information to the session.
                Session["HostName"]    = server.HostName;
                Session["MachineName"] = server.MachineName;
                Session["OSVersion"]   = server.OSVersion;
                Session["ClrVersion"]  = server.ClrVersion;

                // new language cookie for 30 days
                Response.Cookies["language"].Value   = code;
                Response.Cookies["language"].Expires = expires;
                Response.Cookies["language"].Path    = "/admin/";

                // log access
                log.Info(Context, "Login Successful");

                // redirect
                FormsAuthentication.RedirectFromLoginPage(user.UserName, false);
            }
            catch (WebException ex)
            {
                // log access
                log.Info(Context, ex, "Login Failed");

                if (!HandleException(ex))
                {
                    throw;
                }
            }
            catch (Exception ex)
            {
                // log access
                log.Info(Context, ex, "Login Failed");
                throw ex;
            }
        }
Пример #3
0
        /// <summary>
        /// Do Login
        /// </summary>
        /// <param name="username">Username</param>
        /// <param name="password">Password</param>
        /// <param name="check">Perform browser checks.</param>
        private void DoLogin(string username, string password, bool check)
        {
            // client information
            log.Info(Context, "Client Information: {0}, {1}, {2}",
                     username, Context.Request.UserHostName,
                     Context.Request.UserAgent);

            // expires for new cookies
            DateTime expires = DateTime.Now + TimeSpan.FromDays(30);

            // check for cookies
            if (check)
            {
                HttpCookie testCookie = Request.Cookies["test"];
                if (testCookie == null)
                {
                    Message.Text = "LOGIN.NOCOOKIES";

                    // log access
                    log.Info(Context, "Login Failed: Browser Cookies Disabled");

                    return;
                }
            }

            // check for running scripts
            // NOTE: check the value for iChain
            if (check)
            {
                string noscript = Request.Form.Get("noscript");
                if ((noscript != null) && (noscript == "true"))
                {
                    Message.Text = "LOGIN.NOSCRIPT";

                    // log access
                    log.Info(Context, "Login Failed: Browser Scripts Disabled");

                    return;
                }
            }

            try
            {
                // connection
                iFolderWeb weblogin = new iFolderWeb();

                // update web url
                // always use the original path from the WSDL file
                string url = Environment.GetEnvironmentVariable("SimiasUrl");
                if (url == null)
                {
                    url = System.Configuration.ConfigurationSettings.AppSettings.Get("SimiasUrl");
                }

#if TESTING
                url = "http://localhost:8086";
#endif

                UriBuilder loginUrl = new UriBuilder(url);
                loginUrl.Path = (new Uri(weblogin.Url)).PathAndQuery;
                weblogin.Url  = loginUrl.Uri.ToString();

                UTF8Encoding utf8Name = new UTF8Encoding();
                byte[]       encodedCredsByteArray = utf8Name.GetBytes(username);
                string       iFolderUserBase64     = Convert.ToBase64String(encodedCredsByteArray);

                encodedCredsByteArray = utf8Name.GetBytes(password);
                string iFolderPassBase64 = Convert.ToBase64String(encodedCredsByteArray);



                // credentials
                weblogin.PreAuthenticate = true;
                weblogin.Credentials     = new NetworkCredential(iFolderUserBase64, iFolderPassBase64);

                // cookies
                weblogin.CookieContainer = new CookieContainer();
                //Initial Login
                iFolderUser loginuser = null;;
                try
                {
                    loginuser = weblogin.GetAuthenticatedUser();
                }
                catch (WebException ex)
                {
                    log.Info(Context, ex, "Login Failed");
                    string ccode = LanguageList.SelectedValue == null ? "en" : LanguageList.SelectedValue;
                    Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(ccode);
                    if (!HandleException(ex))
                    {
                        throw;
                    }
                    return;
                }
                catch (Exception e)
                {
                    //for now give a general message
                    log.Info(Context, e, "Login Failed");
                    string ccode = LanguageList.SelectedValue == null ? "en" : LanguageList.SelectedValue;
                    Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(ccode);
                    Message.Text = "LOGIN.UNAUTHORIZED";
                    return;
                }


                url = weblogin.GetHomeServerForUser(loginuser.UserName, password);

                iFolderWeb web = new iFolderWeb();

                UriBuilder webUrl = new UriBuilder(url);
                webUrl.Path = (new Uri(web.Url)).PathAndQuery;

                web.Url = webUrl.Uri.ToString();

                string multibyteserver = weblogin.GetServerStatus();

                // credentials
                web.PreAuthenticate = true;
                if (multibyteserver == "no")
                {
                    web.Credentials = new NetworkCredential(username, password);
                }
                else
                {
                    web.Credentials = new NetworkCredential(iFolderUserBase64, iFolderPassBase64);
                }

                // cookies
                web.CookieContainer = new CookieContainer();

                // user, system, and server
                iFolderUser user = null;
                try
                {
                    user = web.GetAuthenticatedUser();
                }
                catch (WebException ex)
                {
                    log.Info(Context, ex, "Login Failed");
                    if (!HandleException(ex))
                    {
                        throw;
                    }
                    return;
                }
                catch (Exception e)
                {
                    //for now give a general message
                    log.Info(Context, e, "Login Failed");
                    Message.Text = "LOGIN.UNAUTHORIZED";
                    return;
                }

                Session["Connection"] = web;
                Session["User"]       = user;
                iFolderSystem system = web.GetSystem();
                Session["System"] = system;
                iFolderServer server = web.GetHomeServer();
                Session["Server"] = server;

                encodedCredsByteArray = utf8Name.GetBytes(user.UserName);
                iFolderUserBase64     = Convert.ToBase64String(encodedCredsByteArray);

                // new username cookie for 30 days
                Response.Cookies.Remove("username");
                Response.Cookies["username"].Value   = (multibyteserver == "no") ? user.UserName : iFolderUserBase64;
                Response.Cookies["username"].Expires = expires;
                Response.Cookies["username"].Path    = "/ifolder/";
                Session["Language"] = "en";
                string code = "en";
                // ui language
                if (LanguageList.SelectedValue == null || LanguageList.SelectedValue == String.Empty)
                {
                    /// Case when single sign on happens without the login page so no language selected
                    if ((Request.UserLanguages != null) && (Request.UserLanguages.Length > 0))
                    {
                        code = Request.UserLanguages[0];
                        if (!(code.StartsWith("zh") || code.StartsWith("pt")))
                        {
                            code = code.Substring(0, 2);
                        }
                        Session["Language"] = code;
                    }
                }
                else
                {
                    /// Normal login so select from the list
                    code = LanguageList.SelectedValue;
                    Session["Language"] = LanguageList.SelectedValue;
                }

                // settings
                WebSettings settings = new WebSettings(web);
                Session["Settings"] = settings;

                Response.Cookies["language"].Value   = code;
                Response.Cookies["language"].Expires = expires;
                Response.Cookies["language"].Path    = "/ifolder/";

                // log access
                log.Info(Context, "Login Successful");

                // redirect
                FormsAuthentication.RedirectFromLoginPage(user.UserName, false);
            }
            catch (WebException ex)
            {
                // log access
                log.Info(Context, ex, "Login Failed");

                if (!HandleException(ex))
                {
                    throw;
                }
            }
            catch (Exception ex)
            {
                // log access
                log.Info(Context, ex, "Login Failed");

                throw;
            }
        }
Пример #4
0
        /// <summary>
        /// Gets the displayable ifolder system information.
        /// </summary>
        private void GetSystemInformation()
        {
            iFolderSystem system = web.GetSystem();

            Name.Text         = system.Name;
            Description.Value = system.Description;
            if (system.UsersFullNameDisplay == "FirstNameLastName")
            {
                FullNameSetting.SelectedIndex = 0;
            }
            else
            {
                FullNameSetting.SelectedIndex = 1;
            }
            if (system.GroupSegregated == "yes")
            {
                GroupSegregated.Checked = true;
            }

            if (system.GroupQuotaRestrictionMethod == (int)QuotaRestriction.UI_Based)
            {
                GroupQuotaRestriction.SelectedIndex = 0;
            }
            else if (system.GroupQuotaRestrictionMethod == (int)QuotaRestriction.Sync_Based)
            {
                GroupQuotaRestriction.SelectedIndex = 1;
            }

            iFolderUserSet users = web.GetUsers(0, 1);

            NumberOfUsers.Text = users.Total.ToString();

            iFolderSet ifolders = web.GetiFolders(iFolderType.All, 0, 1);

            NumberOfiFolders.Text = ifolders.Total.ToString();

            web.Url = currentServerURL;
            iFolderServer[] list = web.GetServers();
            foreach (iFolderServer server in list)
            {
                if (server.IsLocal)
                {
                    UriBuilder remoteurl = new UriBuilder(server.PublicUrl);
                    remoteurl.Path = (new Uri(web.Url)).PathAndQuery;
                    web.Url        = remoteurl.Uri.ToString();

                    string [] SSlOptionsStr = new string [3];
                    SSlOptionsStr[0] = GetString("SSLSTRING");
                    SSlOptionsStr[1] = GetString("NONSSLSTRING");
                    SSlOptionsStr[2] = GetString("BOTHSTRING");
                    string     SelectedString  = "";
                    string     simiassslstatus = web.GetSimiasRequiresSSLStatus();
                    UriBuilder urlforssl       = new UriBuilder(web.Url);
                    if (urlforssl.Scheme == Uri.UriSchemeHttps)
                    {
                        if (simiassslstatus == "no")
                        {
                            SelectedString = GetString("BOTHSTRING");
                        }
                        else
                        {
                            SelectedString = GetString("SSLSTRING");
                        }
                    }
                    else
                    {
                        SelectedString = GetString("NONSSLSTRING");
                    }
                    SSLValue.DataSource = SSlOptionsStr;
                    SSLValue.DataBind();
                    SSLValue.SelectedValue = SelectedString;
                    break;
                }
            }
            SSLValue.Enabled = false;
            // SSLOption was server specific, now connect back to master
            ConnectToMaster();
        }
Пример #5
0
        /// <summary>
        /// Event that gets called when the save button is clicked.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        protected void OnSaveButton_Click(object source, EventArgs e)
        {
            iFolderSystem system = new iFolderSystem();

            system.Name        = Name.Text;
            system.Description = Description.Value;
            if (FullNameSetting.SelectedIndex == 0)
            {
                system.UsersFullNameDisplay = "FirstNameLastName";
            }
            else
            {
                system.UsersFullNameDisplay = "LastNameFirstName";
            }
            if (GroupQuotaRestriction.SelectedIndex == 0)
            {
                system.GroupQuotaRestrictionMethod = (int)QuotaRestriction.UI_Based;
            }
            else if (GroupQuotaRestriction.SelectedIndex == 1)
            {
                system.GroupQuotaRestrictionMethod = (int)QuotaRestriction.Sync_Based;
            }

            if (GroupSegregated.Checked == true)
            {
                system.GroupSegregated = "yes";
            }
            else
            {
                system.GroupSegregated = "no";
            }

            ConnectToMaster();
            web.SetSystem(system);

            // To Set SSL option connect to local server, not master
            web.Url = currentServerURL;
            iFolderServer[] list = web.GetServers();
            foreach (iFolderServer server in list)
            {
                if (server.IsLocal)
                {
                    UriBuilder remoteurl = new UriBuilder(server.PublicUrl);
                    remoteurl.Path = (new Uri(web.Url)).PathAndQuery;
                    web.Url        = remoteurl.Uri.ToString();

                    int SelectedIndex = 0;
                    SaveButton.Enabled = CancelButton.Enabled = false;
                    if (IsSSLOptionChanged == "true")
                    {
                        SelectedIndex = SSLValue.SelectedIndex;
                        string SelectedValue = "both";
                        bool   SSLUpdated    = false;
                        switch (SelectedIndex)
                        {
                        case 0:                                  // SSL
                            SelectedValue = "ssl";
                            break;

                        case 1:                                  // NONSSL
                            SelectedValue = "nonssl";
                            break;

                        case 2:                                  // BOTH
                        default:
                            SelectedValue = "both";
                            break;
                        }
                        SSLUpdated         = web.SetSimiasSSLStatus(SelectedValue);
                        IsSSLOptionChanged = "false";

                        // Now connect back to master
                        if (!server.IsMaster)
                        {
                            ConnectToMaster();
                        }

                        if (SSLUpdated == true)
                        {
                            // restart server message
                            TopNav.ShowInfo(GetString("RESTARTSERVER"));
                            return;
                        }
                        else
                        {
                            // updation of ssl failed message
                            TopNav.ShowInfo(GetString("UNKNOWNERROR"));
                            return;
                        }
                    }
                }
            }

            GetSystemInformation();
        }
Пример #6
0
        /// <summary>
        /// Page Load
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Page_Load(object sender, System.EventArgs e)
        {
            // localization
            rm = (ResourceManager)Application["RM"];

            // strings
            ErrorMessage.Text = GetString("ERROR.MESSAGE");
            LoginButton.Text  = GetString("LOGIN");

            // details
            StringWriter details = new StringWriter();

            // message from query string
            string message = Request.QueryString.Get("Exception");

            if ((message != null) && (message.Length != 0))
            {
                details.WriteLine("Message: {0}", message);
                details.WriteLine();
            }

            // session additions
            if (Session != null)
            {
                // exception
                Exception ex = (Exception)Session["Exception"];
                if (ex != null)
                {
                    details.WriteLine("Exception Message: {0}", ex.Message);
                    details.WriteLine("Exception Type: {0}", ex.GetType());
                    details.WriteLine("Exception Site: {0}", ex.TargetSite);
                    details.WriteLine("Exception Source: {0}", ex.Source);
                    details.WriteLine();
                    details.WriteLine("Exception Stack:");
                    details.WriteLine();
                    details.WriteLine(ex);
                    details.WriteLine();
                }

                // user
                iFolderUser user = (iFolderUser)Session["User"];
                if (user != null)
                {
                    details.WriteLine("Username: {0}", user.UserName);
                    details.WriteLine("User Full Name: {0}", user.FullName);
                    details.WriteLine();
                }

                // system
                iFolderSystem system = (iFolderSystem)Session["System"];
                if (system != null)
                {
                    details.WriteLine("System iFolder Name: {0}", system.Name);
                    details.WriteLine("System iFolder Version: {0}", system.Version);
                    details.WriteLine();
                }

                // server
                iFolderServer server = (iFolderServer)Session["Server"];
                if (server != null)
                {
                    details.WriteLine("Server iFolder Version: {0}", server.Version);
                    details.WriteLine("Server CLR Version: {0}", server.ClrVersion);
                    details.WriteLine("Server Host: {0}", server.HostName);
                    details.WriteLine("Server Machine: {0}", server.MachineName);
                    details.WriteLine("Server Operating System: {0}", server.OSVersion);
                    details.WriteLine("Server Username: {0}", server.UserName);
                    details.WriteLine();
                }
            }

            // details
            ErrorDetails.Text = details.ToString();
        }