/// <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; }
/// <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; } }
/// <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; } }
/// <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(); }
/// <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(); }
/// <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(); }