Ejemplo n.º 1
0
        /// <summary>
        /// Gets Ldap details into the fields
        /// </summary>
        /// <returns>The name of the host node.</returns>
        private void GetLdapDetails()
        {
            iFolderServer server = web.GetServer(ServerID);

            remoteweb.PreAuthenticate = true;
            remoteweb.Credentials     = web.Credentials;
            remoteweb.Url             = server.PublicUrl + "/iFolderAdmin.asmx";
            remoteweb.GetAuthenticatedUser();
            server = remoteweb.GetServer(ServerID);

            //Pick information from IdentityProvider
            LdapInfo ldapInfo = remoteweb.GetLdapDetails();

            LdapServer.Text              = ldapInfo.Host;
            LdapSearchContext.Text       = ldapInfo.SearchContexts;
            LdapProxyUser.Text           = ldapInfo.ProxyDN;
            LdapProxyUserPwd.Text        = ldapInfo.ProxyPassword;
            ConfirmLdapProxyUserPwd.Text = ldapInfo.ProxyPassword;
            string [] options = new string[2];

            options[0] = GetString("YES");
            options[1] = GetString("NO");

            LdapSslList.DataSource = options;
            LdapSslList.DataBind();

            LdapSslList.SelectedValue = ldapInfo.SSL ? GetString("YES") : GetString("NO");
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Event handler that gets called when the Add DataPath button is clicked.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        protected void OnAddDataPathButton_Click(object source, EventArgs e)
        {
            if (!ValidPage)
            {
                TopNav.ShowError(GetString("ALLFIELDSREQUIRED"));
            }
            else
            {
                iFolderServer server = web.GetServer(ServerID);

                remoteweb.PreAuthenticate = true;
                remoteweb.Credentials     = web.Credentials;

                remoteweb.Url = server.PublicUrl + "/iFolderAdmin.asmx";

                int result = remoteweb.AddDataStore(DataPathName.Text, FullPath.Text, ServerID);
                switch (result)
                {
                case 0:
                    string url = web.TrimUrl(ReferringPage);
                    Page.Response.Redirect(url, true);
                    break;

                case 1:
                    TopNav.ShowError(GetString("LINKALREADYEXISTS"));
                    break;

                case 2:
                    TopNav.ShowError(GetString("INVALIDFULLPATH"));
                    break;
                }
            }
        }
Ejemplo n.º 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)
                {
                    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;
            }
        }
Ejemplo n.º 4
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;
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Event handler that gets called when OK button is clicked.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        protected void OnOkButton_Click(object source, EventArgs e)
        {
            string currentServerProxyDN    = null;
            string currentServerProxyDNPwd = null;
            bool   proxychagnestatus       = true;

            if (!validOK())
            {
                TopNav.ShowError(GetString("ENTERLDAPDETAILS"));
                return;
            }
            if (!DataValidated())
            {
                TopNav.ShowError(GetString("ERRORINVALIDDATA"));
                return;
            }
            if (String.Compare(LdapProxyUserPwd.Text.Trim(), ConfirmLdapProxyUserPwd.Text.Trim()) != 0)
            {
                TopNav.ShowError(GetString("ERRORPROXYPASSWORDSDOESNOTMATCH"));
                return;
            }
            /// if ldap admin username and password is right, go ahead
            iFolderServer server = web.GetServer(ServerID);

            remoteweb = new iFolderAdmin();
            remoteweb.PreAuthenticate = true;
            remoteweb.Credentials     = web.Credentials;
            remoteweb.Url             = server.PublicUrl + "/iFolderAdmin.asmx";
            remoteweb.GetAuthenticatedUser();
            server = remoteweb.GetServer(ServerID);
            LdapInfo ldapInfo = new LdapInfo();

            ldapInfo.Host           = LdapServer.Text.Trim();
            ldapInfo.SearchContexts = LdapSearchContext.Text;
            ldapInfo.ProxyDN        = LdapProxyUser.Text;
            currentServerProxyDN    = LdapProxyUser.Text;
            ldapInfo.ProxyPassword  = LdapProxyUserPwd.Text;
            currentServerProxyDNPwd = LdapProxyUserPwd.Text;
            ldapInfo.SSL            = (LdapSslList.SelectedValue == GetString("YES")) ? true : false;

            try
            {
                remoteweb.SetLdapDetails(ldapInfo, LdapAdminName.Text.Trim(), LdapAdminPwd.Text, ServerID);
                //now the proxy user info changed, check if the same proxy is
                //used in any other servers.
                if (ldapInfo.ProxyDN != null && ldapInfo.ProxyPassword != null)
                {
                    proxychagnestatus = UpdateProxyUserInfo(LdapAdminName.Text.Trim(), LdapAdminPwd.Text,
                                                            currentServerProxyDN, currentServerProxyDNPwd);
                }
            }
            catch (Exception ex)
            {
                TopNav.ShowInfo(String.Format("{0} {1}", GetString("UNABLETOEDITLDAPDETAILS"), ex.Message));
                GetLdapDetails();
                return;
            }
            if (proxychagnestatus != false)
            {
                Response.Redirect(String.Format("ServerDetails.aspx?ID={0}", ServerID));
            }
        }
Ejemplo n.º 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();
        }