Thread: [simias-svn] SF.net SVN: simias:[7336] trunk/src/admin
Brought to you by:
srinidhi_bs
|
From: <he...@us...> - 2010-04-21 11:46:44
|
Revision: 7336
http://simias.svn.sourceforge.net/simias/?rev=7336&view=rev
Author: hegdegg
Date: 2010-04-21 11:46:37 +0000 (Wed, 21 Apr 2010)
Log Message:
-----------
UI changes for changing slave server to master.
Modified Paths:
--------------
trunk/src/admin/ServerDetails.aspx
trunk/src/admin/ServerDetails.aspx.cs
trunk/src/admin/css/iFolderAdmin.css
trunk/src/admin/iFolderAdmin.resx
trunk/src/admin/iFolderWebLogger.cs
Modified: trunk/src/admin/ServerDetails.aspx
===================================================================
--- trunk/src/admin/ServerDetails.aspx 2010-04-21 11:45:26 UTC (rev 7335)
+++ trunk/src/admin/ServerDetails.aspx 2010-04-21 11:46:37 UTC (rev 7336)
@@ -38,14 +38,13 @@
document.getElementById( "CancelLdapDetailsButton" ).disabled = false;
}
- function ConfirmDeletion()
- {
- return alert("<%= GetString("CONFIRMDELETION") %>");
- }
+ function ConfirmChangeMaster()
+ {
+ return alert("<%= GetString("CONFIRMCHANGEMASTER") %>");
+ }
</script>
-
</head>
<body id="server" runat="server">
@@ -85,6 +84,13 @@
<td>
<asp:Literal ID="Type" Runat="server" />
+
+ <asp:LinkButton
+ ID="ChangeMasterButton"
+ Runat="server"
+ CssClass="changemasterbuttons"
+ Enabled="True"
+ />
</td>
</tr>
Modified: trunk/src/admin/ServerDetails.aspx.cs
===================================================================
--- trunk/src/admin/ServerDetails.aspx.cs 2010-04-21 11:45:26 UTC (rev 7335)
+++ trunk/src/admin/ServerDetails.aspx.cs 2010-04-21 11:46:37 UTC (rev 7336)
@@ -39,6 +39,7 @@
using System.Net;
using System.Resources;
using System.Text;
+using System.Threading;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
@@ -53,6 +54,8 @@
public class ServerDetails : System.Web.UI.Page
{
#region Class Members
+ private static readonly iFolderWebLogger log = new iFolderWebLogger(
+ System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name);
/// <summary>
/// iFolder Connection
@@ -251,6 +254,11 @@
protected LinkButton SyncNowButton;
/// <summary>
+ /// External Identity ChangeMasterButton
+ /// </summary>
+ protected LinkButton ChangeMasterButton;
+
+ /// <summary>
/// Server Details cancel button control.
/// </summary>
protected Button CancelServerDetailsButton;
@@ -601,12 +609,14 @@
MasterIP.Visible = MasterIP.Enabled = true;
MasterIP.Text = ldapInfo.MasterURL;
MasterUri.Text = GetString( "MASTERURI" );
+ ChangeMasterButton.Enabled = true;
}
else
{
MasterIP.Enabled = false;
MasterIP.Text = "";
MasterUri.Text = "";
+ ChangeMasterButton.Enabled = false;
}
//LoggedOnUsersCount.Text = "(Not Implemented)";
@@ -750,6 +760,7 @@
LdapEditButton.Text = GetString( "EDIT" );
LdapEditButton.Enabled = true;
SyncNowButton.Text = GetString ("SYNCNOW");
+ ChangeMasterButton.Text = GetString ("CHANGEMASTER");
DisableButton.Text = GetString( "DISABLE" );
DeleteButton.Text = GetString( "DELETE" );
@@ -889,7 +900,6 @@
}
DeleteButton.Attributes["onclick"] = "return ConfirmDeletion();";
-
//TODO : future!
//GetTailData();
}
@@ -1041,43 +1051,42 @@
/// <param name="e"></param>
protected void OnSaveServerDetailsButton_Click( object source, EventArgs e )
{
-
try
- {
- string MastersIP = "";
- iFolderServer server = web.GetServer ( ServerID);
+ {
+ string MastersIP = "";
+ iFolderServer server = web.GetServer ( ServerID);
remoteweb.PreAuthenticate = true;
remoteweb.Credentials = web.Credentials;
- remoteweb.Url = server.PublicUrl + "/iFolderAdmin.asmx";
-
+ remoteweb.Url = server.PublicUrl + "/iFolderAdmin.asmx";
+
redirectUrl = server.PublicUrl;
- remoteweb.GetAuthenticatedUser();
+ remoteweb.GetAuthenticatedUser();
server = remoteweb.GetServer ( ServerID);
- if(! server.IsMaster)
- {
+ if(! server.IsMaster)
+ {
MastersIP = MasterIP.Text.Trim();
- }
- bool ReturnStatus = remoteweb.SetIPDetails(PrivateIP.Text.Trim() , PublicIP.Text.Trim(), MastersIP);
- if (ReturnStatus == true)
- {
- TopNav.ShowInfo(GetString("RESTARTSERVER"));
- return;
- }
- else
- {
- TopNav.ShowInfo(GetString("UNABLETOEDITIPDETAILS"));
- return;
- }
- }
- catch
- {
- TopNav.ShowError(GetString("UNABLETOEDITIPDETAILS"));
- return;
- }
-
+ }
+ log.Info("remote web = {0}", remoteweb.Url);
+ bool ReturnStatus = remoteweb.SetIPDetails(PrivateIP.Text.Trim() , PublicIP.Text.Trim(), MastersIP);
+ if (ReturnStatus == true)
+ {
+ TopNav.ShowInfo(GetString("RESTARTSERVER"));
+ return;
+ }
+ else
+ {
+ TopNav.ShowInfo(GetString("UNABLETOEDITIPDETAILS"));
+ return;
+ }
+ }
+ catch
+ {
+ TopNav.ShowError(GetString("UNABLETOEDITIPDETAILS"));
+ return;
+ }
}
/// <summary>
@@ -1088,9 +1097,6 @@
protected void OnCancelServerDetailsButton_Click( object source, EventArgs e )
{
GetServerDetails();
-
- //BuildBreadCrumbList( serverName );
-
}
/// <summary>
@@ -1168,19 +1174,257 @@
}
+ protected void ChangeMaster_PreRender(object source, EventArgs e)
+ {
+ // TODO : get this stuff from a resource
+ // GetString("CONFIRMCHANGEMASTER")
+ ChangeMasterButton.Attributes["onclick"] = "javascript:return confirm('The selected server will be designated as a Master Server. Do you want to continue? Click OK to continue or Cancel to quit.');";
+ }
+
/// <summary>
+ /// Event that gets called when the ChangeMasterButton is clicked
+ /// Here all the calls are made to respective master and slave servers
+ /// to update the required details to turn it into new Master or new
+ /// Slave. After this all other servers are updated with new master
+ /// server information.
+ /// TODO: ldapcontext info update could be clubbed here, but at this
+ /// moment its opted out. Admin has to update the context once this
+ /// operation is successful
+ /// </summary>
+ /// <param name="source"></param>
+ /// <param name="e"></param>
+ protected void OnChangeMasterButton_Click( object source, EventArgs e )
+ {
+ log.Info("Change Master Server process Initiated");
+ bool currentMasterUpdateComplete = false, newMasterUpdateComplete = false;
+
+ string HostID = null, newServerPublicUrl = null;
+ iFolderServer mServer = null, newmServer=null;
+ try
+ {
+ try
+ {
+ //check server ID here
+ newmServer = web.GetServer(ServerID);
+ mServer = web.GetMasterServer();
+ }
+ catch(Exception ex)
+ {
+ // for some unknow reason first call fails randomly...so tring
+ // it again.
+ log.Info("Caught exception while trying to get Master server and slected server, retrying");
+ newmServer = web.GetServer(ServerID);
+ mServer = web.GetMasterServer();
+ }
+
+ if ( newmServer != null && mServer != null &&
+ ServerID != null && (newServerPublicUrl = newmServer.PublicUrl) != null)
+ {
+ log.Info("New Master Server ID = {0}", ServerID);
+ log.Info("Current Master Server Url : {0}", mServer.PublicUrl);
+ log.Info("New Master Server Url : {0}", newmServer.PublicUrl);
+
+ // First Set current Master server to Slave
+ iFolderAdmin currentMasterServer = new iFolderAdmin();
+ currentMasterServer.PreAuthenticate = true;
+ currentMasterServer.Credentials = web.Credentials;
+ currentMasterServer.Url = mServer.PublicUrl + "/iFolderAdmin.asmx";
+ log.Info("Current Master Server admin service Url = {0}", currentMasterServer.Url);
+
+ log.Info("Setting as Slave server...");
+ try
+ {
+ if( !currentMasterServer.SetAsSlaveServer(ServerID, newServerPublicUrl))
+ {
+ log.Info("Unable to set the server as slave, retry");
+ TopNav.ShowError(GetString("UNABLETOSETASSLAVE"));
+ return;
+ }
+ }
+ catch(WebException ex)
+ {
+ log.Info("Exception while SetAsSlaveServer");
+ HttpWebResponse htpw = (HttpWebResponse)(ex.Response);
+ if(ex.Status == WebExceptionStatus.ProtocolError)
+ {
+ TopNav.ShowError(String.Format("WebException {0}", htpw.StatusDescription));
+ }
+ if(ex.Status == WebExceptionStatus.SendFailure)
+ {
+ UriBuilder turl = new UriBuilder(mServer.PublicUrl);
+ if(turl.Scheme == Uri.UriSchemeHttps) //check it should be http
+ {
+ turl.Scheme = Uri.UriSchemeHttp;
+ // non standard port does not work
+ turl.Port = 80;
+ }
+ else
+ {
+ turl.Scheme = Uri.UriSchemeHttps;
+ turl.Port = 443;
+ }
+ currentMasterServer.Url = turl.ToString();
+ redirectUrl = currentMasterServer.Url;
+ currentMasterServer.Url = currentMasterServer.Url + "/iFolderAdmin.asmx";
+
+ try
+ {
+ if( !currentMasterServer.SetAsSlaveServer(ServerID, newServerPublicUrl))
+ {
+ log.Info("Unable to set the server as slave, retry");
+ TopNav.ShowError(GetString("UNABLETOSETASSLAVE"));
+ return;
+ }
+ }
+ catch{
+ log.Info("Exception while SetAsSlave");
+ return;
+ }
+ }
+ }
+
+ currentMasterUpdateComplete = true;
+ log.Info("Set as Slave Server Complete.");
+
+ log.Info("Setting selected server as Master Server...");
+ // Then, Set the New Master Server
+ iFolderAdmin newMasterServer = new iFolderAdmin ();
+ newMasterServer.PreAuthenticate = true;
+ newMasterServer.Credentials = web.Credentials;
+ newMasterServer.Url = newServerPublicUrl + "/iFolderAdmin.asmx";
+ log.Info("New Master Server admin service Url = {0}", newMasterServer.Url);
+ try
+ {
+ if(!newMasterServer.SetAsMasterServer(ServerID))
+ {
+ log.Info("Unable to set the server as Master, retry");
+ }
+ }
+ catch (WebException ex)
+ {
+ log.Info("Exception while SetAsMasterServer");
+ HttpWebResponse htpw = (HttpWebResponse)(ex.Response);
+ if(ex.Status == WebExceptionStatus.ProtocolError)
+ {
+ TopNav.ShowInfo (String.Format("WebException {0}", htpw.StatusDescription));
+ }
+ if(ex.Status == WebExceptionStatus.SendFailure)
+ {
+ UriBuilder turl = new UriBuilder(newmServer.PublicUrl);
+ // non standard port does not work ....
+ if(turl.Scheme == Uri.UriSchemeHttps)
+ {
+ turl.Scheme = Uri.UriSchemeHttp;
+ turl.Port = 80;
+ }
+ else
+ {
+ turl.Scheme = Uri.UriSchemeHttps;
+ turl.Port = 443;
+ }
+ newMasterServer.Url = turl.ToString();
+ redirectUrl = newMasterServer.Url;
+ newMasterServer.Url = newMasterServer.Url + "/iFolderAdmin.asmx";
+ try
+ {
+ newMasterServer.SetAsMasterServer(ServerID);
+ }
+ catch
+ {
+ TopNav.ShowError(String.Format (GetString("CONNECTFAILED"), newMasterServer.Url));
+ }
+ }
+ }
+
+ newMasterUpdateComplete = true;
+
+ // Master and Slave updated, now set the Master node attribute for new Master host on both
+ // current master and new master
+ if ( currentMasterServer.SetMasterNodeAttribute(newmServer.ID, true ))
+ {
+ int count = 0;
+ while (newMasterServer.GetMasterNodeAttribute(newmServer.ID) != true )
+ {
+ TopNav.ShowInfo(GetString("MASTERNODEUPDATEWAIT"));
+ log.Info("Waiting for master node attrituge to sync acress old and new master server");
+ Thread.Sleep(1000);
+ count ++;
+ if (count > 15)
+ {
+ log.Info("Unable to get Master node attribute from the new master server, you may have to retry the operation");
+ //break; ///come out from here .....
+ TopNav.ShowError(String.Format("CHANGEMASTERRETRY"));
+ return;
+ }
+ }
+ log.Info("Set as Master Server Complete");
+ }
+
+ //Master and Slave updated and set, now we will let all other slaves
+ //know about the changes.
+ iFolderServer[] iFolderServers = web.GetServers();
+ foreach(iFolderServer ifs in iFolderServers)
+ {
+ if ( ifs.HostName != newmServer.HostName)
+ {
+ log.Info("Updating new master url on : {0}", ifs.PublicUrl);
+ iFolderAdmin otherSlaveServers = new iFolderAdmin();
+ otherSlaveServers.PreAuthenticate = true;
+ otherSlaveServers.Credentials = web.Credentials;
+ otherSlaveServers.Url = ifs.PublicUrl + "/iFolderAdmin.asmx";
+ log.Info("Connecting to : {0}", otherSlaveServers.Url);
+ try
+ {
+ otherSlaveServers.SetMasterServerUrl(ServerID, newServerPublicUrl);
+ }catch(Exception ex)
+ {
+ log.Info("Update master serverurl on {0} failed ", ifs.PublicUrl);
+ TopNav.ShowError(String.Format(GetString("UPDATEMASTERURLONSLAVESFAILED"), ifs.PublicUrl));
+ }
+ // collect all failed url and print once.
+ }
+ }
+ //refresh server deatils
+ //GetServerDetails();
+ //disable the button so the user does not click it again.
+ ChangeMasterButton.Enabled = false;
+ TopNav.ShowInfo (String.Format (GetString ("CHANGEMASTERSUCCESSFUL"), newServerPublicUrl));
+ }
+ else
+ {
+ log.Info(String.Format ("Unable to get new Master ServerID and newServerPublicUrl, retry"));
+ TopNav.ShowError(GetString("CHANGEMASTERINFOFAILED"));
+ ChangeMasterButton.Enabled = false;
+ }
+ }
+ finally
+ {
+ try
+ {
+ //this is just to get all the changes done on both the
+ //servers. does nothing other than logging. Will be useful
+ //for debuggind in case of any error
+ web.VerifyChangeMaster(mServer.ID, newmServer.ID);
+ }
+ catch{}
+ log.Info("Change Master Server process Complete");
+ }
+ return;
+ }
+
+ /// <summary>
/// Event that gets called when the SyncNow button is clicked.
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
protected void OnSyncNowButton_Click( object source, EventArgs e )
{
- iFolderServer server = web.GetServer ( ServerID);
- remoteweb.PreAuthenticate = true;
- remoteweb.Credentials = web.Credentials;
- remoteweb.Url = server.PublicUrl + "/iFolderAdmin.asmx";
- remoteweb.GetAuthenticatedUser();
- remoteweb.IdentitySyncNow ();
+ iFolderServer server = web.GetServer ( ServerID);
+ remoteweb.PreAuthenticate = true;
+ remoteweb.Credentials = web.Credentials;
+ remoteweb.Url = server.PublicUrl + "/iFolderAdmin.asmx";
+ remoteweb.GetAuthenticatedUser();
+ remoteweb.IdentitySyncNow ();
}
/// <summary>
@@ -1413,16 +1657,17 @@
// Set the render event to happen only on page load.
Page.PreRender += new EventHandler( Page_PreRender );
}
-
DataPathsFooter.PageFirstClick += new ImageClickEventHandler( PageFirstButton_Click );
- DataPathsFooter.PagePreviousClick += new ImageClickEventHandler( PagePreviousButton_Click );
- DataPathsFooter.PageNextClick += new ImageClickEventHandler( PageNextButton_Click );
- DataPathsFooter.PageLastClick += new ImageClickEventHandler( PageLastButton_Click );
+ DataPathsFooter.PagePreviousClick += new ImageClickEventHandler( PagePreviousButton_Click );
+ DataPathsFooter.PageNextClick += new ImageClickEventHandler( PageNextButton_Click );
+ DataPathsFooter.PageLastClick += new ImageClickEventHandler( PageLastButton_Click );
this.Load += new System.EventHandler(this.Page_Load);
this.Unload += new System.EventHandler (this.Page_Unload);
this.SyncNowButton.Click += new System.EventHandler(this.OnSyncNowButton_Click);
+ this.ChangeMasterButton.PreRender += new EventHandler(this.ChangeMaster_PreRender);
+ this.ChangeMasterButton.Click += new System.EventHandler(this.OnChangeMasterButton_Click);
this.ViewLogButton.Click += new System.EventHandler(this.ViewLogFile);
}
#endregion
Modified: trunk/src/admin/css/iFolderAdmin.css
===================================================================
--- trunk/src/admin/css/iFolderAdmin.css 2010-04-21 11:45:26 UTC (rev 7335)
+++ trunk/src/admin/css/iFolderAdmin.css 2010-04-21 11:46:37 UTC (rev 7336)
@@ -43,6 +43,7 @@
width: 6.0em;
margin-left: 4px;
margin-top: 6px;
+ font-weight: bold;
}
.ldapeditifolderbuttons
Modified: trunk/src/admin/iFolderAdmin.resx
===================================================================
--- trunk/src/admin/iFolderAdmin.resx 2010-04-21 11:45:26 UTC (rev 7335)
+++ trunk/src/admin/iFolderAdmin.resx 2010-04-21 11:46:37 UTC (rev 7336)
@@ -1275,5 +1275,38 @@
<data name="WAITING">
<value>Waiting</value>
</data>
+ <data name="CHANGEMASTER">
+ <value>Set as Master</value>
+ </data>
+ <data name="UNABLETOSETASSLAVE">
+ <value>Unable to set as slave server. Retry the operation.</value>
+ </data>
+ <data name="CONFIGFILEUPDATEFAILED">
+ <value>Unable to update configuration file. Update the simias.config file manually.</value>
+ </data>
+ <data name="CONNECTIONFAILED">
+ <value>Unable to connect to server {0}.</value>
+ </data>
+ <data name="CHANGEMASTERNOINFOFAILED">
+ <value>Unable to get Server ID and New Server Public URL.</value>
+ </data>
+ <data name="CHANGEMASTERSUCCESSFUL">
+ <value>Successfully changed the Master and Slave. New Master is {0}. Restart all servers for the changes to take effect.</value>
+ </data>
+ <data name="CHANGEMASTERFAILED">
+ <value>Unable to change the Master and Slave. Check log files for more information.</value>
+ </data>
+ <data name="CONFIRMCHANGEMASTER">
+ <value>The selected server will be designated as a Master Server. Do you want to continue? Click OK to continue or Cancel to quit.</value>
+ </data>
+ <data name="UPDATEMASTERURLONSLAVESFAILED">
+ <value>Unable to update new master URL on server {0}. Update master IP in this server manually.</value>
+ </data>
+ <data name="MASTERNODEUPDATEWAIT">
+ <value>Waiting for master node attribute to synchronize to new master and slaves.</value>
+ </data>
+ <data name="CHANGEMASTERRETRY">
+ <value>Unable to update master node attribute on Master and slave. Retry the operation.</value>
+ </data>
</data>
</root>
Modified: trunk/src/admin/iFolderWebLogger.cs
===================================================================
--- trunk/src/admin/iFolderWebLogger.cs 2010-04-21 11:45:26 UTC (rev 7335)
+++ trunk/src/admin/iFolderWebLogger.cs 2010-04-21 11:46:37 UTC (rev 7336)
@@ -250,5 +250,16 @@
log.Fatal(Format(context, format, args), e);
}
}
+ private string Format(string format, params object[] args)
+ {
+ return String.Format(String.Format("[{0}] ", format), args);
+ }
+ public void Info(string format, params object[] args)
+ {
+ if (log.IsInfoEnabled)
+ {
+ log.Info(Format(format, args));
+ }
+ }
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <he...@us...> - 2010-04-28 15:57:19
|
Revision: 7349
http://simias.svn.sourceforge.net/simias/?rev=7349&view=rev
Author: hegdegg
Date: 2010-04-28 15:57:13 +0000 (Wed, 28 Apr 2010)
Log Message:
-----------
Updates to UI changes for upgrading slave server to master. Added checks
around each web service calls, added a option for repair.
Modified Paths:
--------------
trunk/src/admin/ServerDetails.aspx
trunk/src/admin/ServerDetails.aspx.cs
trunk/src/admin/iFolderAdmin.resx
Modified: trunk/src/admin/ServerDetails.aspx
===================================================================
--- trunk/src/admin/ServerDetails.aspx 2010-04-28 15:55:35 UTC (rev 7348)
+++ trunk/src/admin/ServerDetails.aspx 2010-04-28 15:57:13 UTC (rev 7349)
@@ -96,6 +96,12 @@
CssClass="changemasterbuttons"
Enabled="True"
/>
+ <asp:LinkButton
+ ID="RepairServerButton"
+ Runat="server"
+ CssClass="changemasterbuttons"
+ Enabled="False"
+ />
</td>
</tr>
Modified: trunk/src/admin/ServerDetails.aspx.cs
===================================================================
--- trunk/src/admin/ServerDetails.aspx.cs 2010-04-28 15:55:35 UTC (rev 7348)
+++ trunk/src/admin/ServerDetails.aspx.cs 2010-04-28 15:57:13 UTC (rev 7349)
@@ -259,6 +259,11 @@
protected LinkButton ChangeMasterButton;
/// <summary>
+ /// External Identity RepairServerButton
+ /// </summary>
+ protected LinkButton RepairServerButton;
+
+ /// <summary>
/// Server Details cancel button control.
/// </summary>
protected Button CancelServerDetailsButton;
@@ -349,6 +354,11 @@
/// Server online status
/// </summary>
protected bool serverStatus = false;
+
+ /// <summary>
+ /// Retry count for invalidaexception
+ /// </summary>
+ protected int retryCount = 3;
#endregion
@@ -487,6 +497,42 @@
}
/// <summary>
+ /// Gets the details about the server status.
+ /// </summary>
+ /// <returns>The name of the host node.</returns>
+ private bool GetServerStatus()
+ {
+ log.Info("GetServerStatus begin");
+ bool status = false;
+ iFolderServer server = null;
+ server = web.GetServer( ServerID );
+ remoteweb.PreAuthenticate = true;
+ remoteweb.Credentials = web.Credentials;
+ remoteweb.Url = server.PublicUrl + "/iFolderAdmin.asmx";
+ redirectUrl = server.PublicUrl;
+ try
+ {
+ if ( remoteweb.ServerNeedsRepair() == true )
+ {
+ log.Info("This server needs a repair");
+ RepairServerButton.Enabled = true;
+ RepairServerButton.Visible = true;
+ }
+ else
+ {
+ RepairServerButton.Enabled = false;
+ RepairServerButton.Visible = false;
+ }
+ }
+ catch (WebException ex)
+ {
+ log.Info("Exception throw at GetSTatus");
+ }
+ log.Info("Leaving GetServerStatus");
+ return status;
+ }
+
+ /// <summary>
/// Gets the details about the current server.
/// </summary>
/// <returns>The name of the host node.</returns>
@@ -761,8 +807,10 @@
LdapEditButton.Enabled = true;
SyncNowButton.Text = GetString ("SYNCNOW");
ChangeMasterButton.Text = GetString ("CHANGEMASTER");
+ RepairServerButton.Text= GetString("NEEDSREPAIR");
+ RepairServerButton.Enabled = false;
- DisableButton.Text = GetString( "DISABLE" );
+ DisableButton.Text = GetString( "DISABLE" );
DeleteButton.Text = GetString( "DELETE" );
EnableButton.Text = GetString("ENABLE");
AddButton.Text = GetString( "ADD" );
@@ -886,19 +934,16 @@
/// <param name="e"></param>
private void Page_PreRender( object sender, EventArgs e )
{
-// TopNav.ShowInfo (String.Format("Exception- {0}", web.Url));
string serverName = GetServerDetails();
-
BuildBreadCrumbList( serverName );
-
if(serverStatus)
{
+ GetServerStatus();
GetReportList();
GetLogList();
GetLdapDetails ();
GetDataPaths();
}
-
DeleteButton.Attributes["onclick"] = "return ConfirmDeletion();";
//TODO : future!
//GetTailData();
@@ -1171,9 +1216,58 @@
iFolderServer server = web.GetServer( ServerID );
string ServerName = server.Name;
Response.Redirect(String.Format("LdapAdminAuth.aspx?ServerID={0}&serverName={1}",ServerID,ServerName));
+ }
+ /// <summary>
+ /// Associate the actions to buttons
+ /// </summary>
+ /// <param name="source"></param>
+ /// <param name="e"></param>
+ protected void RepairServer_PreRender(object source, EventArgs e)
+ {
+ //TODO:get the string from resource.
+ RepairServerButton.Attributes["onclick"] = "javascript:return confirm('This will repair the server. Click to contiue or Cancel to quit.');";
}
+ /// <summary>
+ /// Method to call the reapir on the server, this would call repair on
+ /// server if the change master is incomplete
+ /// </summary>
+ /// <param name="source"></param>
+ /// <param name="e"></param>
+ protected void OnRepairServerButton_Click( object source, EventArgs e )
+ {
+ log.Info("GetServerStatus begin");
+ bool repairDone = true;
+ iFolderServer[] iFolderServers = web.GetServers();
+ foreach(iFolderServer ifs in iFolderServers)
+ {
+ if ( ifs.IsMaster )
+ {
+ remoteweb.PreAuthenticate = true;
+ remoteweb.Credentials = web.Credentials;
+ remoteweb.Url = ifs.PublicUrl + "/iFolderAdmin.asmx";
+ try
+ {
+ log.Info("Running repair on : {0}", ifs.PublicUrl);
+ remoteweb.RepairChangeMasterUpdates();
+ }
+ catch (WebException ex)
+ {
+ repairDone = false;
+ log.Info("Exception while RepairChangeMasterUpdates");
+ }
+ }
+ }
+ ChangeMasterButton.Enabled = repairDone;
+ RepairServerButton.Enabled = !repairDone;
+ }
+
+ /// <summary>
+ /// Associate the actions to buttons
+ /// </summary>
+ /// <param name="source"></param>
+ /// <param name="e"></param>
protected void ChangeMaster_PreRender(object source, EventArgs e)
{
// TODO : get this stuff from a resource
@@ -1181,7 +1275,201 @@
ChangeMasterButton.Attributes["onclick"] = "javascript:return confirm('The selected server will be designated as a Master Server. Do you want to continue? Click OK to continue or Cancel to quit.');";
}
+
/// <summary>
+ /// Wrapper funtion to call SetAsSlaveServer
+ /// </summary>
+ /// <param name="serverID">ID of the server</param>
+ /// <param name="ServerURL">Url of the server</param>
+ protected bool SetAsSlave(string serverID, string ServerURL)
+ {
+ int count = 0 ;
+ bool retval = false;
+ iFolderAdmin remoteWebServer = new iFolderAdmin();
+ remoteWebServer.PreAuthenticate = true;
+ remoteWebServer.Credentials = web.Credentials;
+ remoteWebServer.Url = ServerURL + "/iFolderAdmin.asmx";
+
+ while ( count <= retryCount)
+ {
+ try
+ {
+ retval = remoteWebServer.SetAsSlaveServer(serverID, ServerURL);
+ break;
+ }
+ catch(Exception ex)
+ {
+ log.Info("Caught exception while SetAsSlave, retrying : {0} :{1}", ex.Message, ex.StackTrace);
+ if (ex.Message.IndexOf("InvalidOperation") >= 0)
+ {
+ count ++;
+ continue;
+ }
+ else
+ break;
+ }
+ }
+ return retval;
+ }
+
+ /// <summary>
+ /// Wrapper funtion to call SetAsMasterServer
+ /// </summary>
+ /// <param name="serverID">ID of the server</param>
+ /// <param name="ServerURL">Url of the server</param>
+ protected bool SetAsMaster(string serverID, string serverURL)
+ {
+ int count = 0 ;
+ bool retval = false;
+ iFolderAdmin remoteWebServer = new iFolderAdmin();
+ remoteWebServer.PreAuthenticate = true;
+ remoteWebServer.Credentials = web.Credentials;
+ remoteWebServer.Url = serverURL + "/iFolderAdmin.asmx";
+
+ while ( count <= retryCount)
+ {
+ try
+ {
+ retval = remoteWebServer.SetAsMasterServer( serverID );
+ break;
+ }
+ catch(Exception ex)
+ {
+ log.Info("Caught exception while SetAsMaster : {0} : {1}", ex.Message, ex.StackTrace);
+ if (ex.Message.IndexOf("InvalidOperation") >= 0)
+ {
+ count ++;
+ continue;
+ }
+ else
+ break;
+ }
+ }
+ return retval;
+ }
+
+ /// <summary>
+ /// Wrapper funtion to call SetAsMasterNodeAttribute
+ /// </summary>
+ /// <param name="serverID">ID of the server</param>
+ /// <param name="ServerURL">Url of the server</param>
+ /// <param name="nodeValue">true/false for master/slave</param>
+ protected bool SetMasterNode(string serverID, string serverURL, bool nodeValue)
+ {
+ int count = 0;
+ bool retval = false;
+
+ iFolderAdmin remoteWebServer = new iFolderAdmin();
+ remoteWebServer.PreAuthenticate = true;
+ remoteWebServer.Credentials = web.Credentials;
+ remoteWebServer.Url = serverURL + "/iFolderAdmin.asmx";
+
+ while ( count <= retryCount)
+ {
+ try
+ {
+ retval = remoteWebServer.SetMasterNodeAttribute(serverID, nodeValue );
+ break;
+ }
+ catch(Exception ex)
+ {
+ log.Info("Caught exception while SetMasterNode : {0} : {1}", ex.Message, ex.StackTrace);;
+ if (ex.Message.IndexOf("InvalidOperation") >= 0)
+ {
+ count ++;
+ continue;
+ }
+ else
+ break;
+ }
+ }
+ return retval;
+ }
+
+ /// <summary>
+ /// Wrapper funtion to call GetAsMasterNode
+ /// </summary>
+ /// <param name="serverID">ID of the server</param>
+ /// <param name="ServerURL">Url of the server</param>
+ /// <param name="checkVal">true/false for master/slave</param>
+ protected bool GetMasterNode(string serverID, string serverURL, bool checkVal)
+ {
+ int count = 0;
+ bool retval = false;
+
+ iFolderAdmin remoteWebServer = new iFolderAdmin();
+ remoteWebServer.PreAuthenticate = true;
+ remoteWebServer.Credentials = web.Credentials;
+ remoteWebServer.Url = serverURL + "/iFolderAdmin.asmx";
+
+ int loop = 0;
+ while ( count <= retryCount)
+ {
+ try
+ {
+ while (loop <= retryCount)
+ {
+ retval = remoteWebServer.GetMasterNodeAttribute(serverID);
+ if (retval != checkVal)
+ {
+ log.Info("Waiting for master node attrituge to sync accross old and new master server");
+ Thread.Sleep(10000);
+ }
+ loop++;
+ }
+ }
+ catch(Exception ex)
+ {
+ log.Info("Caught exception while GetMasterNode :{0} : {1}", ex.Message, ex.StackTrace);
+ if (ex.Message.IndexOf("InvalidOperation") >= 0)
+ {
+ count++;
+ continue;
+ }
+ else
+ break;
+ }
+ }
+ return retval;
+ }
+
+ /// <summary>
+ /// Wrapper funtion to call SetMasterSeverUrl
+ /// </summary>
+ /// <param name="serverID">ID of the server</param>
+ /// <param name="ServerURL">Url of the server</param>
+ protected bool SetMasterURL(string serverID, string serverURL)
+ {
+ int count = 0;
+ bool retval = false;
+ iFolderAdmin otherSlaveServers = new iFolderAdmin();
+ otherSlaveServers.PreAuthenticate = true;
+ otherSlaveServers.Credentials = web.Credentials;
+ otherSlaveServers.Url = serverURL + "/iFolderAdmin.asmx";
+ log.Info("Connecting to : {0}", otherSlaveServers.Url);
+
+ while ( count <= retryCount)
+ {
+ try
+ {
+ retval = otherSlaveServers.SetMasterServerUrl(serverID, serverURL);
+ break;
+ }
+ catch(Exception ex)
+ {
+ log.Info("Caught exception while SetMasterURL : {0} : {1}", ex.Message, ex.StackTrace);
+ if (ex.Message.IndexOf("InvalidOperation") >= 0)
+ {
+ count ++;
+ continue;
+ }
+ else
+ break;
+ }
+ }
+ return retval;
+ }
+ /// <summary>
/// Event that gets called when the ChangeMasterButton is clicked
/// Here all the calls are made to respective master and slave servers
/// to update the required details to turn it into new Master or new
@@ -1195,219 +1483,142 @@
/// <param name="e"></param>
protected void OnChangeMasterButton_Click( object source, EventArgs e )
{
+ int count = 0;
+ bool currentMasterUpdateComplete = false,
+ newMasterUpdateComplete = false,
+ slaveUpdateComplete = false;
+ string HostID = null,
+ newServerPublicUrl = null;
+ iFolderServer mServer = null,
+ newmServer=null;
+
+ newmServer = web.GetServer(ServerID);
+ mServer = web.GetMasterServer();
log.Info("Change Master Server process Initiated");
- bool currentMasterUpdateComplete = false, newMasterUpdateComplete = false;
-
- string HostID = null, newServerPublicUrl = null;
- iFolderServer mServer = null, newmServer=null;
try
{
- try
+ if (ServerID != null)
{
- //check server ID here
- newmServer = web.GetServer(ServerID);
- mServer = web.GetMasterServer();
- }
- catch(Exception ex)
- {
- // for some unknow reason first call fails randomly...so tring
- // it again.
- log.Info("Caught exception while trying to get Master server and slected server, retrying");
- newmServer = web.GetServer(ServerID);
- mServer = web.GetMasterServer();
- }
-
- if ( newmServer != null && mServer != null &&
- ServerID != null && (newServerPublicUrl = newmServer.PublicUrl) != null)
- {
- log.Info("New Master Server ID = {0}", ServerID);
- log.Info("Current Master Server Url : {0}", mServer.PublicUrl);
- log.Info("New Master Server Url : {0}", newmServer.PublicUrl);
-
- // First Set current Master server to Slave
- iFolderAdmin currentMasterServer = new iFolderAdmin();
- currentMasterServer.PreAuthenticate = true;
- currentMasterServer.Credentials = web.Credentials;
- currentMasterServer.Url = mServer.PublicUrl + "/iFolderAdmin.asmx";
- log.Info("Current Master Server admin service Url = {0}", currentMasterServer.Url);
-
- log.Info("Setting as Slave server...");
- try
+ while ( count <= retryCount )
{
- if( !currentMasterServer.SetAsSlaveServer(ServerID, newServerPublicUrl))
+ /* Dont worry about the loops around all webservice calls.
+ * this is to avoid the invalid operation exception that comes
+ * once in a while. */
+ try
{
- log.Info("Unable to set the server as slave, retry");
- TopNav.ShowError(GetString("UNABLETOSETASSLAVE"));
- return;
+ log.Info("Getting current server and master server info");
+ // TODO: why call both webservice even if one fails?
+ newmServer = web.GetServer(ServerID);
+ mServer = web.GetMasterServer();
+ break;
}
- }
- catch(WebException ex)
- {
- log.Info("Exception while SetAsSlaveServer");
- HttpWebResponse htpw = (HttpWebResponse)(ex.Response);
- if(ex.Status == WebExceptionStatus.ProtocolError)
+ catch(Exception ex)
{
- TopNav.ShowError(String.Format("WebException {0}", htpw.StatusDescription));
- }
- if(ex.Status == WebExceptionStatus.SendFailure)
- {
- UriBuilder turl = new UriBuilder(mServer.PublicUrl);
- if(turl.Scheme == Uri.UriSchemeHttps) //check it should be http
+ log.Info("Caught exception while trying to get Master server and slected server, retrying : {0} :{1}", ex.Message, ex.StackTrace);
+ if (ex.Message.IndexOf("InvalidOperation") >= 0)
{
- turl.Scheme = Uri.UriSchemeHttp;
- // non standard port does not work
- turl.Port = 80;
+ count++;
+ continue;
}
else
- {
- turl.Scheme = Uri.UriSchemeHttps;
- turl.Port = 443;
- }
- currentMasterServer.Url = turl.ToString();
- redirectUrl = currentMasterServer.Url;
- currentMasterServer.Url = currentMasterServer.Url + "/iFolderAdmin.asmx";
-
- try
- {
- if( !currentMasterServer.SetAsSlaveServer(ServerID, newServerPublicUrl))
- {
- log.Info("Unable to set the server as slave, retry");
- TopNav.ShowError(GetString("UNABLETOSETASSLAVE"));
- return;
- }
- }
- catch{
- log.Info("Exception while SetAsSlave");
- return;
- }
+ break;
}
}
+ if ( newmServer != null && mServer != null && newmServer.PublicUrl != null)
+ {
+ newServerPublicUrl = newmServer.PublicUrl;
+ log.Info("ServerID = {0}, master url = {1}, new master url = {2} ",
+ ServerID, mServer.PublicUrl, newmServer.PublicUrl);
- currentMasterUpdateComplete = true;
- log.Info("Set as Slave Server Complete.");
+ // First Set current Master server to Slave
- log.Info("Setting selected server as Master Server...");
- // Then, Set the New Master Server
- iFolderAdmin newMasterServer = new iFolderAdmin ();
- newMasterServer.PreAuthenticate = true;
- newMasterServer.Credentials = web.Credentials;
- newMasterServer.Url = newServerPublicUrl + "/iFolderAdmin.asmx";
- log.Info("New Master Server admin service Url = {0}", newMasterServer.Url);
- try
- {
- if(!newMasterServer.SetAsMasterServer(ServerID))
+ log.Info("Setting as Slave server...");
+ currentMasterUpdateComplete = SetAsSlave(ServerID, mServer.PublicUrl);
+ if( !currentMasterUpdateComplete )
{
- log.Info("Unable to set the server as Master, retry");
+ log.Info("Unable to set the server as slave, retry");
+ TopNav.ShowError(GetString("UNABLETOSETASSLAVE"));
+ return;
}
- }
- catch (WebException ex)
- {
- log.Info("Exception while SetAsMasterServer");
- HttpWebResponse htpw = (HttpWebResponse)(ex.Response);
- if(ex.Status == WebExceptionStatus.ProtocolError)
+
+ log.Info("Set as Slave Server Complete.Setting selected server as Master Server...");
+ // Then, Set the New Master Server
+ log.Info("New Master Server admin service Url = {0}", newmServer.PublicUrl);
+ newMasterUpdateComplete = SetAsMaster(ServerID, newmServer.PublicUrl);
+ if(!newMasterUpdateComplete)
{
- TopNav.ShowInfo (String.Format("WebException {0}", htpw.StatusDescription));
+ log.Info("Unable to set the server as Master, retry");
+ TopNav.ShowError(GetString("UNABLETOSETASMASTER"));
+ return;
}
- if(ex.Status == WebExceptionStatus.SendFailure)
+ // Master and Slave updated, now set the Master node attribute for new Master host on both
+ // current master and new master
+ if ( SetMasterNode(ServerID, mServer.PublicUrl, true))
{
- UriBuilder turl = new UriBuilder(newmServer.PublicUrl);
- // non standard port does not work ....
- if(turl.Scheme == Uri.UriSchemeHttps)
+ if (GetMasterNode(newmServer.ID, newmServer.PublicUrl, true) != true )
{
- turl.Scheme = Uri.UriSchemeHttp;
- turl.Port = 80;
+ TopNav.ShowInfo(GetString("CHANGEMASTERRETRY"));
+ return;
}
else
- {
- turl.Scheme = Uri.UriSchemeHttps;
- turl.Port = 443;
- }
- newMasterServer.Url = turl.ToString();
- redirectUrl = newMasterServer.Url;
- newMasterServer.Url = newMasterServer.Url + "/iFolderAdmin.asmx";
- try
- {
- newMasterServer.SetAsMasterServer(ServerID);
- }
- catch
- {
- TopNav.ShowError(String.Format (GetString("CONNECTFAILED"), newMasterServer.Url));
- }
+ log.Info("Verified the Master node attribute on both old and new Master");
}
- }
- newMasterUpdateComplete = true;
-
- // Master and Slave updated, now set the Master node attribute for new Master host on both
- // current master and new master
- if ( currentMasterServer.SetMasterNodeAttribute(newmServer.ID, true ))
- {
- int count = 0;
- while (newMasterServer.GetMasterNodeAttribute(newmServer.ID) != true )
+ //Master and Slave updated and set, now we will let all other slaves
+ //know about the changes.
+ iFolderServer[] iFolderServers = web.GetServers();
+ ArrayList list = new ArrayList();
+ StringBuilder failedServers = new System.Text.StringBuilder();
+ foreach(iFolderServer ifs in iFolderServers)
{
- TopNav.ShowInfo(GetString("MASTERNODEUPDATEWAIT"));
- log.Info("Waiting for master node attrituge to sync acress old and new master server");
- Thread.Sleep(1000);
- count ++;
- if (count > 15)
+ if ( ifs.HostName != newmServer.HostName)
{
- log.Info("Unable to get Master node attribute from the new master server, you may have to retry the operation");
- //break; ///come out from here .....
- TopNav.ShowError(String.Format("CHANGEMASTERRETRY"));
- return;
+ if (SetMasterURL(ServerID, newServerPublicUrl) != true)
+ {
+ log.Info("Update master serverurl on {0} failed ", ifs.PublicUrl);
+ list.Add(ifs.HostName);
+ }
}
}
- log.Info("Set as Master Server Complete");
- }
-
- //Master and Slave updated and set, now we will let all other slaves
- //know about the changes.
- iFolderServer[] iFolderServers = web.GetServers();
- foreach(iFolderServer ifs in iFolderServers)
- {
- if ( ifs.HostName != newmServer.HostName)
+ if (list.Count >= 1)
{
- log.Info("Updating new master url on : {0}", ifs.PublicUrl);
- iFolderAdmin otherSlaveServers = new iFolderAdmin();
- otherSlaveServers.PreAuthenticate = true;
- otherSlaveServers.Credentials = web.Credentials;
- otherSlaveServers.Url = ifs.PublicUrl + "/iFolderAdmin.asmx";
- log.Info("Connecting to : {0}", otherSlaveServers.Url);
- try
+ for (int i = 0; i < list.Count; i++)
{
- otherSlaveServers.SetMasterServerUrl(ServerID, newServerPublicUrl);
- }catch(Exception ex)
- {
- log.Info("Update master serverurl on {0} failed ", ifs.PublicUrl);
- TopNav.ShowError(String.Format(GetString("UPDATEMASTERURLONSLAVESFAILED"), ifs.PublicUrl));
+ failedServers.Append(list[i].ToString()).Append(" ");
}
- // collect all failed url and print once.
+ log.Info("Unable to set master url on : {0}", failedServers.ToString());
+ TopNav.ShowError(GetString("UPDATEMASTERURLONSLAVEFAILED") + failedServers.ToString());
}
+ else
+ {
+ slaveUpdateComplete = true;
+ }
}
- //refresh server deatils
- //GetServerDetails();
- //disable the button so the user does not click it again.
- ChangeMasterButton.Enabled = false;
- TopNav.ShowInfo (String.Format (GetString ("CHANGEMASTERSUCCESSFUL"), newServerPublicUrl));
+ else
+ {
+ log.Info(String.Format ("Unable to get new Master ServerID and newServerPublicUrl, retry"));
+ TopNav.ShowError(GetString("CHANGEMASTERINFOFAILED"));
+ }
}
else
{
- log.Info(String.Format ("Unable to get new Master ServerID and newServerPublicUrl, retry"));
- TopNav.ShowError(GetString("CHANGEMASTERINFOFAILED"));
- ChangeMasterButton.Enabled = false;
+ log.Info(String.Format ("Unable to get new Master ServerID"));
}
}
finally
{
- try
+ ChangeMasterButton.Enabled = false;
+ /* this is just to get all the changes done on both the
+ servers. does nothing other than logging. Will be useful
+ for debuggind in case of any error */
+ if (mServer != null && newmServer != null)
+ web.VerifyChangeMaster(mServer.ID, newmServer.ID);
+
+ if (currentMasterUpdateComplete && newMasterUpdateComplete &&
+ slaveUpdateComplete)
{
- //this is just to get all the changes done on both the
- //servers. does nothing other than logging. Will be useful
- //for debuggind in case of any error
- web.VerifyChangeMaster(mServer.ID, newmServer.ID);
+ TopNav.ShowInfo (String.Format (GetString ("CHANGEMASTERSUCCESSFUL"), newServerPublicUrl));
}
- catch{}
- log.Info("Change Master Server process Complete");
}
return;
}
@@ -1668,6 +1879,8 @@
this.SyncNowButton.Click += new System.EventHandler(this.OnSyncNowButton_Click);
this.ChangeMasterButton.PreRender += new EventHandler(this.ChangeMaster_PreRender);
this.ChangeMasterButton.Click += new System.EventHandler(this.OnChangeMasterButton_Click);
+ this.RepairServerButton.PreRender += new EventHandler(this.RepairServer_PreRender);
+ this.RepairServerButton.Click += new System.EventHandler(this.OnRepairServerButton_Click);
this.ViewLogButton.Click += new System.EventHandler(this.ViewLogFile);
}
#endregion
Modified: trunk/src/admin/iFolderAdmin.resx
===================================================================
--- trunk/src/admin/iFolderAdmin.resx 2010-04-28 15:55:35 UTC (rev 7348)
+++ trunk/src/admin/iFolderAdmin.resx 2010-04-28 15:57:13 UTC (rev 7349)
@@ -1276,8 +1276,11 @@
<value>Waiting</value>
</data>
<data name="CHANGEMASTER">
- <value>Set as Master</value>
+ <value>Set As Master</value>
</data>
+ <data name="NEEDSREPAIR">
+ <value>Repair Server</value>
+ </data>
<data name="UNABLETOSETASSLAVE">
<value>Unable to set as slave server. Retry the operation.</value>
</data>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jj...@us...> - 2010-05-18 10:02:18
|
Revision: 7365
http://simias.svn.sourceforge.net/simias/?rev=7365&view=rev
Author: jjohnny
Date: 2010-05-18 10:02:11 +0000 (Tue, 18 May 2010)
Log Message:
-----------
ID: Bug#495427
Reviewers: Anil
Localization Required: No
Documentation Required: Yes
Description: FileType policy control will consistently have 'Allow',
'Deny' and 'Delete' button.
Modified Paths:
--------------
trunk/src/admin/FileTypeFilter.ascx
trunk/src/admin/FileTypeFilter.ascx.cs
Modified: trunk/src/admin/FileTypeFilter.ascx
===================================================================
--- trunk/src/admin/FileTypeFilter.ascx 2010-05-17 18:07:52 UTC (rev 7364)
+++ trunk/src/admin/FileTypeFilter.ascx 2010-05-18 10:02:11 UTC (rev 7365)
@@ -105,21 +105,13 @@
<ifolder:ListFooter ID="FileTypeListFooter" Runat="server" />
- <asp:Button
- ID="DeleteButton"
- Runat="server"
- CssClass="filetypecontrolbutton"
- Enabled="False"
- OnClick="OnDeleteFileType"
- Visible="False" />
-
<asp:Button
ID="AllowButton"
Runat="server"
CssClass="filetypecontrolbutton"
Enabled="False"
OnClick="OnAllowFileType"
- Visible="False" />
+ Visible="True" />
<asp:Button
ID="DenyButton"
@@ -127,7 +119,15 @@
CssClass="filetypecontrolbutton"
Enabled="False"
OnClick="OnDenyFileType"
- Visible="False" />
+ Visible="True" />
+
+ <asp:Button
+ ID="DeleteButton"
+ Runat="server"
+ CssClass="filetypecontrolbutton"
+ Enabled="False"
+ OnClick="OnDeleteFileType"
+ Visible="True" />
</div>
Modified: trunk/src/admin/FileTypeFilter.ascx.cs
===================================================================
--- trunk/src/admin/FileTypeFilter.ascx.cs 2010-05-17 18:07:52 UTC (rev 7364)
+++ trunk/src/admin/FileTypeFilter.ascx.cs 2010-05-18 10:02:11 UTC (rev 7365)
@@ -493,15 +493,9 @@
// See if there are any checked members.
bool hasEntries = allCheckBox.Checked ? true : HasCheckedEntries;
- if ( DeleteButton.Visible )
- {
- DeleteButton.Enabled = hasEntries;
- }
- else
- {
- AllowButton.Enabled = HasDisallowedEntries && hasEntries;
- DenyButton.Enabled = HasAllowedEntries && hasEntries;
- }
+ DeleteButton.Enabled = hasEntries;
+ AllowButton.Enabled = HasDisallowedEntries && hasEntries;
+ DenyButton.Enabled = HasAllowedEntries && hasEntries;
}
/// <summary>
@@ -675,15 +669,9 @@
fti.IsChecked = checkBox.Checked;
bool hasEntries = checkBox.Checked ? true : HasCheckedEntries;
- if ( DeleteButton.Visible )
- {
- DeleteButton.Enabled = hasEntries;
- }
- else
- {
- AllowButton.Enabled = HasDisallowedEntries && hasEntries;
- DenyButton.Enabled = HasAllowedEntries && hasEntries;
- }
+ DeleteButton.Enabled = hasEntries;
+ AllowButton.Enabled = HasDisallowedEntries && hasEntries;
+ DenyButton.Enabled = HasAllowedEntries && hasEntries;
}
}
}
@@ -783,10 +771,9 @@
/// <param name="policy">User policy.</param>
public void GetFileTypePolicy( UserPolicy policy )
{
- // Show the proper control buttons.
- AllowButton.Visible = DenyButton.Visible = true;
-
+ // Show new file type controls
NewFileTypeName.Visible = AddButton.Visible = true;
+
// Create a list from the file type policy.
FileTypeSource = CreateFileTypeSource( policy );
@@ -802,8 +789,8 @@
/// <param name="policy">iFolder policy.</param>
public void GetFileTypePolicy( iFolderPolicy policy )
{
- // Enable the add/delete controls.
- NewFileTypeName.Visible = AddButton.Visible = DeleteButton.Visible = true;
+ // Show new file type controls
+ NewFileTypeName.Visible = AddButton.Visible = true;
// Create a list from the file type policy.
FileTypeSource = CreateFileTypeSource( policy );
@@ -820,8 +807,8 @@
/// <param name="policy">System policy.</param>
public void GetFileTypePolicy( SystemPolicy policy )
{
- // Enable the add/delete controls.
- NewFileTypeName.Visible = AddButton.Visible = DeleteButton.Visible = true;
+ // Show new file type controls
+ NewFileTypeName.Visible = AddButton.Visible = true;
// Create a list from the file type policy.
FileTypeSource = CreateFileTypeSource( policy );
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jj...@us...> - 2010-05-18 13:08:30
|
Revision: 7367
http://simias.svn.sourceforge.net/simias/?rev=7367&view=rev
Author: jjohnny
Date: 2010-05-18 13:08:23 +0000 (Tue, 18 May 2010)
Log Message:
-----------
ID: Bug#583289
Reviewers: Anil
Localization Required: Yes
Documentation Required: Yes
Description: Allow deletion of iFolders from admin console. Secondary
admins would be restricted by a policy.
Modified Paths:
--------------
trunk/src/admin/AdminRights.aspx
trunk/src/admin/AdminRights.aspx.cs
trunk/src/admin/PreferencesEnum.cs
trunk/src/admin/iFolderAdmin.resx
trunk/src/admin/iFolders.aspx
trunk/src/admin/iFolders.aspx.cs
Modified: trunk/src/admin/AdminRights.aspx
===================================================================
--- trunk/src/admin/AdminRights.aspx 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/AdminRights.aspx 2010-05-18 13:08:23 UTC (rev 7367)
@@ -308,7 +308,7 @@
</table>
<table class="policyclass" >
-
+
<tr>
<th colspan="2">
@@ -330,6 +330,7 @@
<asp:ListItem></asp:ListItem>
<asp:ListItem></asp:ListItem>
<asp:ListItem></asp:ListItem>
+ <asp:ListItem></asp:ListItem>
</asp:CheckBoxList>
Modified: trunk/src/admin/AdminRights.aspx.cs
===================================================================
--- trunk/src/admin/AdminRights.aspx.cs 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/AdminRights.aspx.cs 2010-05-18 13:08:23 UTC (rev 7367)
@@ -72,8 +72,8 @@
EnableDisableUserAllowed = 4096,
OwnOrphaniFolderAllowed = 8192,
EnableDisableiFolderAllowed = 16384,
- ModifyMemberRightAllowed = 32768
-
+ ModifyMemberRightAllowed = 32768,
+ DeleteiFolderAllowed = 65536,
};
@@ -396,9 +396,11 @@
iFolderRightsList.Items[ 0 ].Text = GetString( "ALLOWORPHANIFOLDEROWNERSHIP" );
iFolderRightsList.Items[ 1 ].Text = GetString( "ALLOWIFOLDERENABLING" );
iFolderRightsList.Items[ 2 ].Text = GetString( "ALLOWSHAREDMEMBERRIGHTS" );
+ iFolderRightsList.Items[ 3 ].Text = GetString( "ALLOWDELETEIFOLDERRIGHTS" );
iFolderRightsList.Items[ 0 ].Selected = true;
iFolderRightsList.Items[ 1 ].Selected = true;
iFolderRightsList.Items[ 2 ].Selected = true;
+ iFolderRightsList.Items[ 3 ].Selected = true;
iFolderUser user = web.GetUser( SecondaryAdmin );
string LebelDisplay;
@@ -661,8 +663,7 @@
iFolderRightsList.Items[0].Selected = UsersGroupRights.OwnOrphaniFolderAllowed;
iFolderRightsList.Items[1].Selected = UsersGroupRights.EnableDisableiFolderAllowed;
iFolderRightsList.Items[2].Selected = UsersGroupRights.ModifyMemberRightAllowed;
-
-
+ iFolderRightsList.Items[3].Selected = UsersGroupRights.DeleteiFolderAllowed;
}
protected int GetSelectedRights()
@@ -685,6 +686,7 @@
value += (iFolderRightsList.Items[0].Selected ? (int)Novell.iFolderWeb.Admin.UserGroupAdminRights.GroupAdminPreferencesEnum.OwnOrphaniFolderAllowed : 0);
value += (iFolderRightsList.Items[1].Selected ? (int)Novell.iFolderWeb.Admin.UserGroupAdminRights.GroupAdminPreferencesEnum.EnableDisableiFolderAllowed : 0);
value += (iFolderRightsList.Items[2].Selected ? (int)Novell.iFolderWeb.Admin.UserGroupAdminRights.GroupAdminPreferencesEnum.ModifyMemberRightAllowed : 0);
+ value += (iFolderRightsList.Items[3].Selected ? (int)Novell.iFolderWeb.Admin.UserGroupAdminRights.GroupAdminPreferencesEnum.DeleteiFolderAllowed : 0);
return value;
}
Modified: trunk/src/admin/PreferencesEnum.cs
===================================================================
--- trunk/src/admin/PreferencesEnum.cs 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/PreferencesEnum.cs 2010-05-18 13:08:23 UTC (rev 7367)
@@ -55,6 +55,7 @@
public bool OwnOrphaniFolderAllowed;
public bool EnableDisableiFolderAllowed;
public bool ModifyMemberRightAllowed;
+ public bool DeleteiFolderAllowed;
public long preference;
public static int defaultpreference;
@@ -73,6 +74,7 @@
OwnOrphaniFolderAllowed = 0x00000200, //512
EnableDisableiFolderAllowed = 0x00000400, //1024
ModifyMemberRightAllowed = 0x00000800, //2048
+ DeleteiFolderAllowed = 0x00001000, //4096
};
public UserGroupAdminRights(long value)
@@ -92,6 +94,7 @@
this.OwnOrphaniFolderAllowed = (this.preference & (int)GroupAdminPreferencesEnum.OwnOrphaniFolderAllowed) == 0 ? false:true;
this.EnableDisableiFolderAllowed = (this.preference & (int)GroupAdminPreferencesEnum.EnableDisableiFolderAllowed) == 0 ? false:true;
this.ModifyMemberRightAllowed = (this.preference & (int)GroupAdminPreferencesEnum.ModifyMemberRightAllowed) == 0 ? false:true;
+ this.DeleteiFolderAllowed = (this.preference & (int)GroupAdminPreferencesEnum.DeleteiFolderAllowed) == 0 ? false:true;
}
}
Modified: trunk/src/admin/iFolderAdmin.resx
===================================================================
--- trunk/src/admin/iFolderAdmin.resx 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/iFolderAdmin.resx 2010-05-18 13:08:23 UTC (rev 7367)
@@ -264,6 +264,9 @@
<data name="ERRORCANNOTDELETEIFOLDER">
<value>Cannot delete iFolder.</value>
</data>
+ <data name="ERRORCANNOTDELETEIFOLDER">
+ <value>You do not have permissions to delete {0}.</value>
+ </data>
<data name="ERRORCANNOTDELETEMEMBERS">
<value>Cannot delete iFolder member {0}.</value>
</data>
@@ -1243,6 +1246,9 @@
<data name="ALLOWSHAREDMEMBERRIGHTS">
<value>Allow to modify rights of shared iFolder members</value>
</data>
+ <data name="ALLOWDELETEIFOLDERRIGHTS">
+ <value>Allow permission to delete iFolders</value>
+ </data>
<data name="ASSIGNADMINRIGHTS">
<value>Assign Admin Rights to: </value>
</data>
Modified: trunk/src/admin/iFolders.aspx
===================================================================
--- trunk/src/admin/iFolders.aspx 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/iFolders.aspx 2010-05-18 13:08:23 UTC (rev 7367)
@@ -179,7 +179,7 @@
Runat="server"
CssClass="ifolderbuttons"
Enabled="False"
- Visible="False"
+ Visible="True"
OnClick="OnDeleteButton_Click" />
<asp:Button
Modified: trunk/src/admin/iFolders.aspx.cs
===================================================================
--- trunk/src/admin/iFolders.aspx.cs 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/iFolders.aspx.cs 2010-05-18 13:08:23 UTC (rev 7367)
@@ -38,6 +38,7 @@
using System.Data;
using System.Drawing;
using System.Resources;
+using System.Text;
using System.Threading;
using System.Web;
using System.Web.SessionState;
@@ -157,6 +158,21 @@
/// </summary>
protected string currentServerURL;
+ /// <summary>
+ /// Logged in admin system rights instance
+ /// </summary>
+ UserGroupAdminRights uRights;
+
+ /// <summary>
+ /// Logged in user system rights value
+ /// </summary>
+ int grpAccessPolicy = 0;
+
+ /// <summary>
+ /// Currently logged in User ID
+ /// </summary>
+ protected string userID;
+
protected bool reachable = true;
#endregion
@@ -258,7 +274,7 @@
list = web.GetiFoldersByName(iFolderSearch.SearchOperation,
( iFolderSearch.SearchName == String.Empty) ? "*" : iFolderSearch.SearchName,
CurrentiFolderOffset,iFolderList.PageSize);
- DeleteButton.Visible = false;
+ DeleteButton.Visible = true;
break;
}
@@ -381,6 +397,10 @@
rm = Application[ "RM" ] as ResourceManager;
// TopNav.ShowInfo(String.Format("URL: {0}", web.Url));
+ userID = Session[ "UserID" ] as String;
+ grpAccessPolicy = web.GetUserGroupRights(userID, null);
+ uRights = new UserGroupAdminRights(grpAccessPolicy);
+
if ( !IsPostBack )
{
// Initialize the localized fields.
@@ -404,6 +424,8 @@
}
// Set the active ifolder display tab
SetActiveiFolderListTab( ActiveiFolderTab );
+ DeleteButton.Enabled = uRights.DeleteiFolderAllowed;
+
// TopNav.ShowInfo(String.Format("URL: {0}", web.Url));
string code = Thread.CurrentThread.CurrentUICulture.Name;
if (code.StartsWith("pt") || code.StartsWith("de") || code.StartsWith("ru"))
@@ -431,6 +453,7 @@
private void SetActionButtons()
{
Hashtable ht = CheckediFolders;
+
switch(ActiveiFolderTab)
{
case ListDisplayType.Orphaned:
@@ -440,11 +463,11 @@
case ListDisplayType.All:
default:
- DeleteButton.Visible = false;
+ DeleteButton.Visible = true;
break;
}
- //DeleteButton.Enabled = ( ht.Count > 0 ) ? true : false;
+ DeleteButton.Enabled = (ht.Count > 0) ? true : false;
DisableButton.Enabled = ht.ContainsValue( Boolean.FalseString );
EnableButton.Enabled = ht.ContainsValue( Boolean.TrueString );
}
@@ -493,6 +516,36 @@
}
/// <summary>
+ /// Gets iFolder name
+ /// </summary>
+ private string GetiFolderName(string iFolderID)
+ {
+ foreach( DataGridItem item in iFolderList.Items )
+ {
+ string ifolderid = item.Cells[ iFolderIDColumn].Text;
+ if( ifolderid == iFolderID )
+ //FIXME : Magic numbers
+ return item.Cells [12].Text; //iFolder name column.
+ }
+ return null;
+ }
+
+ /// <summary>
+ /// Gets iFolder's owner ID
+ /// </summary>
+ private string GetiFolderOwnerID(string iFolderID)
+ {
+ foreach( DataGridItem item in iFolderList.Items )
+ {
+ string ifolderid = item.Cells[iFolderIDColumn].Text;
+ if( ifolderid == iFolderID )
+ //FIXME : Magic numbers
+ return item.Cells [8].Text; //iFolder ID column.
+ }
+ return null;
+ }
+
+ /// <summary>
/// Sets the ifolder synchronization status on all selected ifolders.
/// </summary>
/// <param name="syncStatus">If true then all selected ifolders will be enabled.</param>
@@ -693,10 +746,30 @@
/// <param name="e"></param>
protected void OnDeleteButton_Click( object source, EventArgs e )
{
+ string skippediFolderNames = "";
foreach( string ifolderID in CheckediFolders.Keys )
{
try
{
+ int rights = GetRightsForiFolder(ifolderID);
+ if (rights == -1 ) rights = 0xffff;
+
+ UserGroupAdminRights adminRights = new UserGroupAdminRights(rights);
+ string ownerID = GetiFolderOwnerID (ifolderID);
+ /*Condition for skipping iFolders for deletion. We allow the owner to
+ delete his own iFolder. */
+ if (userID != ownerID) {
+ if(!adminRights.DeleteiFolderAllowed) {
+ string ifolderName = GetiFolderName (ifolderID);
+ if (skippediFolderNames.Length > 0 ) //Just for adding a comma.
+ skippediFolderNames += ", " + ifolderName;
+ else
+ skippediFolderNames += ifolderName;
+
+ continue;
+ }
+ }
+
string ifolderLocation = web.GetiFolderLocation (ifolderID);
UriBuilder remoteurl = new UriBuilder(ifolderLocation);
remoteurl.Path = (new Uri(web.Url)).PathAndQuery;
@@ -710,6 +783,7 @@
web.Url = currentServerURL;
return;
}
+
}
web.Url = currentServerURL;
@@ -722,6 +796,10 @@
// Rebind the data source with the new data.
GetiFolders();
+
+ //If we have skipped some iFolders, tell the admin.
+ if (skippediFolderNames.Length > 0)
+ TopNav.ShowError(string.Format (GetString ("ERRORCANNOTDELETEIFOLDER"), skippediFolderNames));
}
/// <summary>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2010-05-25 11:42:12
|
Revision: 7375
http://simias.svn.sourceforge.net/simias/?rev=7375&view=rev
Author: ravim85
Date: 2010-05-25 11:42:05 +0000 (Tue, 25 May 2010)
Log Message:
-----------
Linguistic errors on admin page. N/A was shown in English. Issue is
fixed
Modified Paths:
--------------
trunk/src/admin/ProvisionUsers.aspx.cs
trunk/src/admin/ServerDetails.aspx.cs
trunk/src/admin/Users.aspx.cs
trunk/src/admin/iFolderDetailsPage.aspx.cs
trunk/src/admin/userMove.aspx.cs
Modified: trunk/src/admin/ProvisionUsers.aspx.cs
===================================================================
--- trunk/src/admin/ProvisionUsers.aspx.cs 2010-05-25 11:34:05 UTC (rev 7374)
+++ trunk/src/admin/ProvisionUsers.aspx.cs 2010-05-25 11:42:05 UTC (rev 7375)
@@ -310,7 +310,7 @@
{
string [] ProvisioningListStr = new string [ProvisioningListStrTemp.Length + 1];
/// making 1st entry of dropdownlist as None
- ProvisioningListStr[0] = "N/A";
+ ProvisioningListStr[0] = GetString("NOTAPPLICABLE");
for (int i = 1; i <= ProvisioningListStrTemp.Length ; i++)
ProvisioningListStr[i] = String.Copy(ProvisioningListStrTemp[i-1]);
return ProvisioningListStr;
@@ -527,7 +527,7 @@
protected void OnSelectServerList_Changed(Object sender, EventArgs e)
{
string SelectedServerName = SelectServerList.SelectedItem.Text;
- if( SelectedServerName.Equals("N/A"))
+ if( SelectedServerName.Equals(GetString("NOTAPPLICABLE")))
{
OkButton.Enabled = false;
}
Modified: trunk/src/admin/ServerDetails.aspx.cs
===================================================================
--- trunk/src/admin/ServerDetails.aspx.cs 2010-05-25 11:34:05 UTC (rev 7374)
+++ trunk/src/admin/ServerDetails.aspx.cs 2010-05-25 11:42:05 UTC (rev 7375)
@@ -483,7 +483,7 @@
}
catch
{
- reports.Add ("N/A");
+ reports.Add (GetString("NOTAPPLICABLE"));
}
if (files == null || files.Length == 0) {
Modified: trunk/src/admin/Users.aspx.cs
===================================================================
--- trunk/src/admin/Users.aspx.cs 2010-05-25 11:34:05 UTC (rev 7374)
+++ trunk/src/admin/Users.aspx.cs 2010-05-25 11:42:05 UTC (rev 7375)
@@ -568,7 +568,7 @@
{
string [] ProvisioningListStr = new string [ProvisioningListStrTemp.Length + 1];
/// making 1st entry of dropdownlist as None
- ProvisioningListStr[0] = "N/A";
+ ProvisioningListStr[0] = GetString("NOTAPPLICABLE");
for (int i = 1; i <= ProvisioningListStrTemp.Length ; i++)
ProvisioningListStr[i] = String.Copy(ProvisioningListStrTemp[i-1]);
return ProvisioningListStr;
@@ -576,7 +576,7 @@
else
{
string [] ProvisioningListStrNA = new string [ 1 ];
- ProvisioningListStrNA[0] = "N/A";
+ ProvisioningListStrNA[0] = GetString("NOTAPPLICABLE");
return ProvisioningListStrNA;
}
}
@@ -852,7 +852,7 @@
DataGridItem item = ServerProvisioningList.Parent.Parent as DataGridItem;
string SelectedName = ServerProvisioningList.SelectedItem.Text;
string UserID = item.Cells[ AccountsIDColumn ].Text;
- if(SelectedName.Equals("N/A"))
+ if(SelectedName.Equals(GetString("NOTAPPLICABLE")))
{
/// remove entry fron hashtable, if any for this userid
if(ServerProvisioningNames.ContainsKey(UserID))
Modified: trunk/src/admin/iFolderDetailsPage.aspx.cs
===================================================================
--- trunk/src/admin/iFolderDetailsPage.aspx.cs 2010-05-25 11:34:05 UTC (rev 7374)
+++ trunk/src/admin/iFolderDetailsPage.aspx.cs 2010-05-25 11:42:05 UTC (rev 7375)
@@ -554,7 +554,7 @@
dr[1] = false;
dr[2] = user.ID;
dr[3] = user.FullName;
- dr[4] = "<font color=red>N/A</font>";
+ dr[4] = String.Format("<font color=red>" + GetString("NOTAPPLICABLE") + "</font>");
dt.Rows.Add(dr);
Modified: trunk/src/admin/userMove.aspx.cs
===================================================================
--- trunk/src/admin/userMove.aspx.cs 2010-05-25 11:34:05 UTC (rev 7374)
+++ trunk/src/admin/userMove.aspx.cs 2010-05-25 11:42:05 UTC (rev 7375)
@@ -448,7 +448,7 @@
DataGridItem item = ServerProvisioningList.Parent.Parent as DataGridItem;
string SelectedName = ServerProvisioningList.SelectedItem.Text;
string UserID = item.Cells[ AccountsIDColumn ].Text;
- if(SelectedName.Equals("N/A"))
+ if(SelectedName.Equals(GetString("NOTAPPLICABLE")))
{
/// remove entry fron hashtable, if any for this userid
if(ServerProvisioningNames.ContainsKey(UserID))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jj...@us...> - 2010-06-30 14:02:48
|
Revision: 7413
http://simias.svn.sourceforge.net/simias/?rev=7413&view=rev
Author: jjohnny
Date: 2010-06-30 14:02:42 +0000 (Wed, 30 Jun 2010)
Log Message:
-----------
ID: Bug #614704
Reviewers:GG
Localization Required: Yes
Documentation Required: No
Description: WebAdmin - When there are no policies in the list, display the right string "No policies available"
Modified Paths:
--------------
trunk/src/admin/FileTypeFilter.ascx.cs
trunk/src/admin/ListFooter.ascx.cs
trunk/src/admin/iFolderAdmin.resx
Modified: trunk/src/admin/FileTypeFilter.ascx.cs
===================================================================
--- trunk/src/admin/FileTypeFilter.ascx.cs 2010-06-30 14:02:10 UTC (rev 7412)
+++ trunk/src/admin/FileTypeFilter.ascx.cs 2010-06-30 14:02:42 UTC (rev 7413)
@@ -425,6 +425,9 @@
TotalFiles,
GetString( "FILES" ),
GetString( "FILE" ) );
+
+ if (TotalFiles == 0)
+ FileTypeListFooter.SetPageText (GetString ("NOPOLICIESAVAILABLE"));
}
/// <summary>
Modified: trunk/src/admin/ListFooter.ascx.cs
===================================================================
--- trunk/src/admin/ListFooter.ascx.cs 2010-06-30 14:02:10 UTC (rev 7412)
+++ trunk/src/admin/ListFooter.ascx.cs 2010-06-30 14:02:42 UTC (rev 7413)
@@ -237,6 +237,15 @@
#region Public Methods
/// <summary>
+ /// Sets the text to be displayed at the botton of the list
+ /// </summary>
+ /// <param name="footerText"> Text to be displayed at the botton of the list</param>
+ public void SetPageText( string footerText )
+ {
+ PageText.Text = footerText;
+ }
+
+ /// <summary>
/// Enables or disables the search navigation buttons depending on the display data index.
/// </summary>
/// <param name="dataGrid"></param>
Modified: trunk/src/admin/iFolderAdmin.resx
===================================================================
--- trunk/src/admin/iFolderAdmin.resx 2010-06-30 14:02:10 UTC (rev 7412)
+++ trunk/src/admin/iFolderAdmin.resx 2010-06-30 14:02:42 UTC (rev 7413)
@@ -1267,6 +1267,9 @@
<data name="NOMEMBERAVAILABLE">
<value>No member available</value>
</data>
+ <data name="NOPOLICIESAVAILABLE">
+ <value>No policies available</value>
+ </data>
<data name="SAVETO">
<value>Save to</value>
</data>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jj...@us...> - 2010-06-30 15:27:02
|
Revision: 7415
http://simias.svn.sourceforge.net/simias/?rev=7415&view=rev
Author: jjohnny
Date: 2010-06-30 15:26:56 +0000 (Wed, 30 Jun 2010)
Log Message:
-----------
ID: Bug #558617
Reviewers: Ravi
Localization Required: No
Documentation Required: No
Description: WebAdmin - Changed non editable fields from a textbox to label in serverdetails page.
Modified Paths:
--------------
trunk/src/admin/ServerDetails.aspx
trunk/src/admin/ServerDetails.aspx.cs
Modified: trunk/src/admin/ServerDetails.aspx
===================================================================
--- trunk/src/admin/ServerDetails.aspx 2010-06-30 14:03:11 UTC (rev 7414)
+++ trunk/src/admin/ServerDetails.aspx 2010-06-30 15:26:56 UTC (rev 7415)
@@ -421,11 +421,10 @@
</th>
<td>
- <asp:TextBox
+ <asp:Literal
ID="LdapServer"
Runat="server"
- CssClass="syncnowtextbox"
- Enabled="false" />
+ />
</td>
</tr>
@@ -449,44 +448,23 @@
</th>
<td>
- <asp:TextBox
+ <asp:Literal
ID="LdapProxyUser"
Runat="server"
- Enabled="false"
/>
</td>
</tr>
- <tr>
- <th>
- <%= GetString( "LDAPPROXYUSERPWD" ) %>
- </th>
-
- <td>
- <asp:TextBox
- ID="LdapProxyUserPwd"
- TextMode="Password"
- Enabled="false"
- Runat="server"
- />
- </td>
- </tr>
-
<tr>
<th>
<%= GetString( "LDAPCONTEXTTAG" ) %>
</th>
<td>
- <textarea
+ <asp:Literal
ID="LdapSearchContext"
- runat="server"
- class="edittext"
- readonly="true"
- wrap="soft"
- rows="2"
- cols="25"
- ></textarea>
+ Runat="server"
+ />
</td>
</tr>
Modified: trunk/src/admin/ServerDetails.aspx.cs
===================================================================
--- trunk/src/admin/ServerDetails.aspx.cs 2010-06-30 14:03:11 UTC (rev 7414)
+++ trunk/src/admin/ServerDetails.aspx.cs 2010-06-30 15:26:56 UTC (rev 7415)
@@ -201,7 +201,7 @@
/// <summary>
/// LDAP Server name.
/// </summary>
- protected TextBox LdapServer;
+ protected Literal LdapServer;
/// <summary>
/// LDAP Cycles
@@ -216,14 +216,9 @@
/// <summary>
/// LDAP Proxy User
/// </summary>
- protected TextBox LdapProxyUser;
+ protected Literal LdapProxyUser;
/// <summary>
- /// LDAP Proxy User
- /// </summary>
- protected TextBox LdapProxyUserPwd;
-
- /// <summary>
/// LDAP SSL
/// </summary>
protected Literal LdapSsl;
@@ -231,7 +226,7 @@
/// <summary>
/// External Identity Sync Interval
/// </summary>
- protected HtmlTextArea LdapSearchContext;
+ protected Literal LdapSearchContext;
/// <summary>
/// Member Delete Grace Interval
@@ -745,9 +740,8 @@
//Pick information from IdentityProvider
LdapInfo ldapInfo = remoteweb.GetLdapDetails();
LdapServer.Text = ldapInfo.Host ;
- LdapSearchContext.Value = ldapInfo.SearchContexts;
+ LdapSearchContext.Text = ldapInfo.SearchContexts;
LdapProxyUser.Text = ldapInfo.ProxyDN;
- LdapProxyUserPwd.Text = ldapInfo.ProxyPassword;
LdapSsl.Text = ldapInfo.SSL ? GetString ("YES") : GetString ("NO");
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sb...@us...> - 2010-08-16 05:03:59
|
Revision: 7462
http://simias.svn.sourceforge.net/simias/?rev=7462&view=rev
Author: sbipin
Date: 2010-08-16 05:03:52 +0000 (Mon, 16 Aug 2010)
Log Message:
-----------
ID: #00000
Reviewer: Shane
Localization Required: No
Documentation Required: No
Description: Localized resx files
Modified Paths:
--------------
trunk/src/admin/iFolderAdmin.cs.resx
trunk/src/admin/iFolderAdmin.it.resx
trunk/src/admin/iFolderAdmin.sk.resx
Modified: trunk/src/admin/iFolderAdmin.cs.resx
===================================================================
--- trunk/src/admin/iFolderAdmin.cs.resx 2010-08-11 16:53:24 UTC (rev 7461)
+++ trunk/src/admin/iFolderAdmin.cs.resx 2010-08-16 05:03:52 UTC (rev 7462)
@@ -668,7 +668,7 @@
<value>Práva správce pro: </value>
</data>
<data name="PROVISIONREPROVISION">
- <value>Poskytnout / Opakované poskytování</value>
+ <value>Poskytnout/Znovu poskytnout</value>
</data>
<data name="ALL">
<value>Vše</value>
Modified: trunk/src/admin/iFolderAdmin.it.resx
===================================================================
--- trunk/src/admin/iFolderAdmin.it.resx 2010-08-11 16:53:24 UTC (rev 7461)
+++ trunk/src/admin/iFolderAdmin.it.resx 2010-08-16 05:03:52 UTC (rev 7462)
@@ -668,7 +668,7 @@
<value>Diritti di amministratore per: </value>
</data>
<data name="PROVISIONREPROVISION">
- <value>Provisioning/Nuovo provisioning</value>
+ <value>Provisioning/Reprovisioning</value>
</data>
<data name="ALL">
<value>Tutte</value>
Modified: trunk/src/admin/iFolderAdmin.sk.resx
===================================================================
--- trunk/src/admin/iFolderAdmin.sk.resx 2010-08-11 16:53:24 UTC (rev 7461)
+++ trunk/src/admin/iFolderAdmin.sk.resx 2010-08-16 05:03:52 UTC (rev 7462)
@@ -668,7 +668,7 @@
<value>Práva správcu pre: </value>
</data>
<data name="PROVISIONREPROVISION">
- <value>Poskytovanie/opätovné poskytovanie</value>
+ <value>Poskytnúť / Opakov. poskyt.</value>
</data>
<data name="ALL">
<value>Všetko</value>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jj...@us...> - 2010-08-25 19:14:07
|
Revision: 7492
http://simias.svn.sourceforge.net/simias/?rev=7492&view=rev
Author: jjohnny
Date: 2010-08-25 19:14:00 +0000 (Wed, 25 Aug 2010)
Log Message:
-----------
ID: Bug #631463
Reviewers: Ramesh, Anil
Localization Required: No
Documentation Required: No
Description: Added a new button to delete ifolders in UserDetails page
Modified Paths:
--------------
trunk/src/admin/UserDetails.aspx
trunk/src/admin/UserDetails.aspx.cs
Modified: trunk/src/admin/UserDetails.aspx
===================================================================
--- trunk/src/admin/UserDetails.aspx 2010-08-25 19:13:13 UTC (rev 7491)
+++ trunk/src/admin/UserDetails.aspx 2010-08-25 19:14:00 UTC (rev 7492)
@@ -278,12 +278,12 @@
<ifolder:ListFooter ID="iFolderListFooter" Runat="server" />
-<%-- <asp:Button
+ <asp:Button
ID="DeleteiFolderButton"
Runat="server"
Enabled="False"
CssClass="actionbuttons"
- OnClick="OnDeleteiFolder" /> --%>
+ OnClick="OnDeleteiFolderButton_Click" />
<asp:Button
ID="DisableiFolderButton"
Modified: trunk/src/admin/UserDetails.aspx.cs
===================================================================
--- trunk/src/admin/UserDetails.aspx.cs 2010-08-25 19:13:13 UTC (rev 7491)
+++ trunk/src/admin/UserDetails.aspx.cs 2010-08-25 19:14:00 UTC (rev 7492)
@@ -210,13 +210,7 @@
/// </summary>
protected HtmlGenericControl CurrentTab;
-
/// <summary>
- /// iFolder delete button control.
- /// </summary>
- //protected Button DeleteiFolderButton;
-
- /// <summary>
/// iFolder disable button control.
/// </summary>
protected Button DisableiFolderButton;
@@ -227,6 +221,11 @@
protected Button EnableiFolderButton;
/// <summary>
+ /// Delete ifolder button control.
+ /// </summary>
+ protected Button DeleteiFolderButton;
+
+ /// <summary>
/// iFolder create button control.
/// </summary>
//protected Button CreateiFolderButton;
@@ -593,6 +592,7 @@
//DeleteiFolderButton.Text = GetString( "DELETE" );
DisableiFolderButton.Text = GetString( "DISABLE" );
EnableiFolderButton.Text = GetString( "ENABLE" );
+ DeleteiFolderButton.Text = GetString ("DELETE");
//CreateiFolderButton.Text = GetString( "CREATE" );
AlliFoldersLink.Text = GetString( "ALL" );
@@ -613,6 +613,7 @@
// Set the active ifolder display tab.
SetActiveiFolderListTab( ActiveiFolderTab );
+ DeleteiFolderButton.Enabled = uRights.DeleteiFolderAllowed;
if(uRights.EnableDisableiFolderAllowed == false)
{
@@ -648,7 +649,7 @@
private void SetActionButtons()
{
Hashtable ht = CheckediFolders;
- //DeleteiFolderButton.Enabled = ( ht.Count > 0 ) ? true : false;
+ DeleteiFolderButton.Enabled = ( ht.Count > 0 ) ? true : false;
DisableiFolderButton.Enabled = ht.ContainsValue( Boolean.FalseString );
EnableiFolderButton.Enabled = ht.ContainsValue( Boolean.TrueString );
}
@@ -711,6 +712,20 @@
return preference;
}
+ /// <summary>
+ /// Gets iFolder's owner ID
+ /// </summary>
+ private string GetiFolderOwnerID(string iFolderID)
+ {
+ foreach( DataGridItem item in iFolderList.Items )
+ {
+ string ifolderid = item.Cells[iFolderIDColumn].Text;
+ if( ifolderid == iFolderID )
+ //FIXME : Magic numbers
+ return item.Cells [2].Text; //iFolder ID column.
+ }
+ return null;
+ }
/// <summary>
/// Sets the ifolder synchronization status on all selected ifolders.
@@ -753,9 +768,8 @@
// Clear the checked members.
CheckediFolders.Clear();
- // Set the action buttons.
+ web.Url = currentServerURL;
SetActionButtons();
- web.Url = currentServerURL;
// Rebind the data source with the new data.
GetiFolders( false );
@@ -930,6 +944,17 @@
return (bool) reach? String.Format( "iFolderDetailsPage.aspx?id={0}", iFolderID ) : String.Empty;
}
+ private string GetiFolderName(string iFolderID)
+ {
+ foreach( DataGridItem item in iFolderList.Items )
+ {
+ string ifolderid = item.Cells[ iFolderIDColumn].Text;
+ if( ifolderid == iFolderID )
+ //FIXME : Magic numbers
+ return item.Cells [9].Text; //iFolder name column.
+ }
+ return null;
+ }
/// <summary>
/// Get a Localized String
@@ -942,6 +967,67 @@
}
/// <summary>
+ /// Event handler that gets called when the delete ifolder button is clicked.
+ /// </summary>
+ /// <param name="source"></param>
+ /// <param name="e"></param>
+ protected void OnDeleteiFolderButton_Click( object source, EventArgs e )
+ {
+ string skippediFolderNames = "";
+ string loggedinuserID = Session[ "UserID" ] as String;
+
+ foreach( string ifolderID in CheckediFolders.Keys )
+ {
+ try
+ {
+ int rights = GetRightsForiFolder(ifolderID);
+ if (rights == -1 ) rights = 0xffff;
+
+ UserGroupAdminRights adminRights = new UserGroupAdminRights(rights);
+ string ownerID = GetiFolderOwnerID (ifolderID);
+ /*Condition for skipping iFolders for deletion. We allow the owner to
+ delete his own iFolder. */
+ if (loggedinuserID != ownerID) {
+ if(!adminRights.DeleteiFolderAllowed) {
+ string ifolderName = GetiFolderName (ifolderID);
+ if (skippediFolderNames.Length > 0 ) //Just for adding a comma.
+ skippediFolderNames += ", " + ifolderName;
+ else
+ skippediFolderNames += ifolderName;
+
+ continue;
+ }
+ }
+
+ string ifolderLocation = web.GetiFolderLocation (ifolderID);
+ UriBuilder remoteurl = new UriBuilder(ifolderLocation);
+ remoteurl.Path = (new Uri(web.Url)).PathAndQuery;
+ web.Url = remoteurl.Uri.ToString();
+ web.DeleteiFolder( ifolderID );
+ }
+ catch ( Exception ex )
+ {
+ TopNav.ShowError( GetString( "ERRORCANNOTDELETEIFOLDER" ), ex );
+ web.Url = currentServerURL;
+ return;
+ }
+
+ }
+ web.Url = currentServerURL;
+
+ // Clear the checked members.
+ CheckediFolders.Clear();
+ AlliFoldersCheckBox.Checked = false;
+
+ // Rebind the data source with the new data.
+ GetiFolders( false );
+
+ //If we have skipped some iFolders, tell the admin.
+ if (skippediFolderNames.Length > 0)
+ TopNav.ShowError(string.Format (GetString ("ERRORCANNOTDELETEIFOLDER"), skippediFolderNames));
+ }
+
+ /// <summary>
/// Event handler that gets called when the check all iFolders checkbox is selected.
/// </summary>
/// <param name="sender"></param>
@@ -984,39 +1070,6 @@
}
/// <summary>
- /// Event handler that gets called when the delete ifolder button is clicked.
- /// </summary>
- /// <param name="source"></param>
- /// <param name="e"></param>
- protected void OnDeleteiFolder( object source, EventArgs e )
- {
- foreach( string iFolderID in CheckediFolders.Keys )
- {
- try
- {
- string ifolderLocation = web.GetiFolderLocation (iFolderID);
- UriBuilder remoteurl = new UriBuilder(ifolderLocation);
- remoteurl.Path = (new Uri(web.Url)).PathAndQuery;
- web.Url = remoteurl.Uri.ToString();
-
- web.DeleteiFolder( iFolderID );
- }
- catch ( Exception ex )
- {
- TopNav.ShowError( GetString( "ERRORCANNOTDELETEIFOLDER" ), ex );
- return;
- }
- }
- web.Url = currentServerURL;
-
- // Clear the checked members.
- CheckediFolders.Clear();
-
- // Rebind the data source with the new data.
- GetiFolders( false );
- }
-
- /// <summary>
/// Event handler that gets called when the disable ifolder button is clicked.
/// </summary>
/// <param name="source"></param>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mv...@us...> - 2010-08-27 18:12:55
|
Revision: 7499
http://simias.svn.sourceforge.net/simias/?rev=7499&view=rev
Author: mvikash
Date: 2010-08-27 18:12:49 +0000 (Fri, 27 Aug 2010)
Log Message:
-----------
changes are done to handle exception for deleted ifolder.
Modified Paths:
--------------
trunk/src/admin/UserDetails.aspx.cs
trunk/src/admin/iFolderDetailsPage.aspx.cs
Modified: trunk/src/admin/UserDetails.aspx.cs
===================================================================
--- trunk/src/admin/UserDetails.aspx.cs 2010-08-27 15:59:16 UTC (rev 7498)
+++ trunk/src/admin/UserDetails.aspx.cs 2010-08-27 18:12:49 UTC (rev 7499)
@@ -251,6 +251,7 @@
/// </summary>
protected bool reachable = true;
+
#endregion
#region Properties
@@ -300,6 +301,13 @@
get { return Request.Params[ "ID" ]; }
}
+ public string ErrorMsg
+ {
+ get { return Request.Params[ "errormsg" ]; }
+ }
+
+
+
#endregion
#region Private Methods
@@ -322,6 +330,12 @@
/// <returns>A DataView object containing the iFolder list.</returns>
private DataView CreateiFolderList()
{
+
+ if(ErrorMsg !=null )
+ {
+ TopNav.ShowError(ErrorMsg);
+ }
+
DataTable dt = new DataTable();
DataRow dr;
@@ -941,7 +955,7 @@
/// <returns>The URL to navigate to the ifolder.</returns>
protected string GetiFolderUrl( Object reach, Object iFolderID )
{
- return (bool) reach? String.Format( "iFolderDetailsPage.aspx?id={0}", iFolderID ) : String.Empty;
+ return (bool) reach? String.Format( "iFolderDetailsPage.aspx?id={0}&userid={1}", iFolderID,UserID ) : String.Empty;
}
private string GetiFolderName(string iFolderID)
Modified: trunk/src/admin/iFolderDetailsPage.aspx.cs
===================================================================
--- trunk/src/admin/iFolderDetailsPage.aspx.cs 2010-08-27 15:59:16 UTC (rev 7498)
+++ trunk/src/admin/iFolderDetailsPage.aspx.cs 2010-08-27 18:12:49 UTC (rev 7499)
@@ -208,6 +208,8 @@
/// </summary>
protected Literal ServerName;
+ public string UserId;
+
#endregion
#region Properties
@@ -260,6 +262,14 @@
}
/// <summary>
+ /// Gets the User ID.
+ /// </summary>
+ private string UserID
+ {
+ get { return Request.Params[ "userid" ]; }
+ }
+
+ /// <summary>
/// Gets or sets whether the MemberCheckBox is checked.
/// </summary>
private bool MembersChecked
@@ -353,10 +363,17 @@
{
ifolder = web.GetiFolderDetails( iFolderID );
}
- catch
+ catch(Exception ex)
{
- web.Url = currentServerURL;
- TopNav.ShowError(GetString("LOGINCONNECTFAILED"));
+ if(ex.Message.IndexOf("iFolderDoesNotExistException") != -1)
+ {
+ Page.Response.Redirect(String.Format("UserDetails.aspx?id={0}&errormsg={1}",UserID,GetString("ERRORIFOLDERDOESNOTEXIST")));
+ }
+ else
+ {
+ web.Url = currentServerURL;
+ TopNav.ShowError(GetString("LOGINCONNECTFAILED"));
+ }
return null;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mv...@us...> - 2010-11-10 07:13:36
|
Revision: 7549
http://simias.svn.sourceforge.net/simias/?rev=7549&view=rev
Author: mvikash
Date: 2010-11-10 07:13:29 +0000 (Wed, 10 Nov 2010)
Log Message:
-----------
Reviewer: GG
Locallization Required: String changed, Localization not planned for this release.
Documentation Required: No
Description: Time-out exception while setting group quota has been
handled.
Modified Paths:
--------------
trunk/src/admin/UserDetails.aspx.cs
trunk/src/admin/iFolderAdmin.resx
Modified: trunk/src/admin/UserDetails.aspx.cs
===================================================================
--- trunk/src/admin/UserDetails.aspx.cs 2010-11-10 06:30:29 UTC (rev 7548)
+++ trunk/src/admin/UserDetails.aspx.cs 2010-11-10 07:13:29 UTC (rev 7549)
@@ -805,7 +805,7 @@
{
limitString = "Unlimited";
}
-
+
try
{
decimal limit = Convert.ToDecimal( limitString == "Unlimited" ? "-1" : limitString );
@@ -813,11 +813,11 @@
{
// Convert from megabytes back to bytes.
GroupDiskLimit = limitString == "Unlimited" ? -1 : Convert.ToInt64( Decimal.Round( limit, 2 ) * 1048576 );
-
+
// connect to master to set member property
ConnectMaster();
+ // call webservice and pass parameters to commit.
- // call webservice and pass parameters to commit.
bool retval = web.SetAggregateDiskQuota(UserID, GroupDiskLimit);
DisconnectMaster();
web.Url = currentServerURL;
@@ -844,12 +844,20 @@
TopNav.ShowError( GetString( "ERRORINVALIDQUOTA" ) );
return;
}
- catch
+ catch(Exception ex)
{
- DisconnectMaster();
- web.Url = currentServerURL;
- TopNav.ShowError( GetString( "ERRORUNKNOWNERROR" ) );
- return;
+ if(ex.Message.IndexOf("timed out") != -1)
+ {
+ TopNav.ShowInfo(GetString("TIMEOUT"));
+ return;
+ }
+ else
+ {
+ DisconnectMaster();
+ web.Url = currentServerURL;
+ TopNav.ShowError( GetString( "ERRORUNKNOWNERROR" ));
+ return;
+ }
}
GetUserDetails();
@@ -862,7 +870,7 @@
/// <param name="sender"></param>
/// <param name="e"></param>
private void ConnectMaster ()
- {
+ {
iFolderServer[] list = web.GetServers();
foreach( iFolderServer server in list )
Modified: trunk/src/admin/iFolderAdmin.resx
===================================================================
--- trunk/src/admin/iFolderAdmin.resx 2010-11-10 06:30:29 UTC (rev 7548)
+++ trunk/src/admin/iFolderAdmin.resx 2010-11-10 07:13:29 UTC (rev 7549)
@@ -1347,5 +1347,8 @@
<data name="waiting">
<value>waiting</value>
</data>
+ <data name="TIMEOUT">
+ <value>It may take a long time to complete the request. You may perform other tasks while this request is being processed.</value>
+ </data>
</data>
</root>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <he...@us...> - 2011-06-15 16:17:17
|
Revision: 7603
http://simias.svn.sourceforge.net/simias/?rev=7603&view=rev
Author: hegdegg
Date: 2011-06-15 16:17:10 +0000 (Wed, 15 Jun 2011)
Log Message:
-----------
ID: Bug #697635
Reviewers:Vikash
Localization Required: No
Documentation Required: No
Description: Fix for misbehaviour of master slave server after proxy
password change.
Modified Paths:
--------------
trunk/src/admin/LdapAdminAuth.aspx
trunk/src/admin/LdapAdminAuth.aspx.cs
trunk/src/admin/iFolderAdmin.resx
Modified: trunk/src/admin/LdapAdminAuth.aspx
===================================================================
--- trunk/src/admin/LdapAdminAuth.aspx 2011-06-15 11:43:15 UTC (rev 7602)
+++ trunk/src/admin/LdapAdminAuth.aspx 2011-06-15 16:17:10 UTC (rev 7603)
@@ -21,7 +21,7 @@
{
document.getElementById( "OkButton" ).disabled = false;
document.getElementById( "CancelButton" ).disabled = false;
- }
+ }
</script>
</head>
@@ -126,6 +126,14 @@
<tr>
<th>
+ </th>
+ <td>
+ <%= GetString( "PASSWORDCHANGEWARNING" ) %>
+ </td>
+ </tr>
+
+ <tr>
+ <th>
<%= GetString( "LDAPPROXYUSERPWD" ) %>
</th>
Modified: trunk/src/admin/LdapAdminAuth.aspx.cs
===================================================================
--- trunk/src/admin/LdapAdminAuth.aspx.cs 2011-06-15 11:43:15 UTC (rev 7602)
+++ trunk/src/admin/LdapAdminAuth.aspx.cs 2011-06-15 16:17:10 UTC (rev 7603)
@@ -49,67 +49,68 @@
/// Summary description for editing ldap details
/// </summary>
public class LdapAdminAuth : System.Web.UI.Page
- {
- #region Class Members
-
+ {
+#region Class Members
+ private static readonly iFolderWebLogger log = new iFolderWebLogger(
+ System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name);
/// <summary>
- /// iFolder Connection
- /// </summary>
- private iFolderAdmin web;
+ /// iFolder Connection
+ /// </summary>
+ private iFolderAdmin web;
- /// <summary>
- /// iFolder Connection to the remote server
- /// </summary>
+ /// <summary>
+ /// iFolder Connection to the remote server
+ /// </summary>
private iFolderAdmin remoteweb;
- /// <summary>
- /// Resource Manager
- /// </summary>
- private ResourceManager rm;
+ /// <summary>
+ /// Resource Manager
+ /// </summary>
+ private ResourceManager rm;
/// <summary>
/// Logged in admin system rights instance
/// </summary>
UserSystemAdminRights uRights;
-
+
/// <summary>
/// Logged in user system rights value
/// </summary>
int sysAccessPolicy = 0;
- /// <summary>
- /// Top navigation panel control.
- /// </summary>
- protected TopNavigation TopNav;
+ /// <summary>
+ /// Top navigation panel control.
+ /// </summary>
+ protected TopNavigation TopNav;
/// <summary>
- /// ldap admin name edit control.
- /// </summary>
- protected TextBox LdapAdminName;
+ /// ldap admin name edit control.
+ /// </summary>
+ protected TextBox LdapAdminName;
/// <summary>
- /// ldap admin password control.
- /// </summary>
- protected TextBox LdapAdminPwd;
-
+ /// ldap admin password control.
+ /// </summary>
+ protected TextBox LdapAdminPwd;
+
/// <summary>
- /// LDAP Server name.
- /// </summary>
+ /// LDAP Server name.
+ /// </summary>
protected TextBox LdapServer;
- /// <summary>
- /// LDAP Proxy User
- /// </summary>
+ /// <summary>
+ /// LDAP Proxy User
+ /// </summary>
protected TextBox LdapProxyUser;
- /// <summary>
- /// LDAP Proxy User
- /// </summary>
+ /// <summary>
+ /// LDAP Proxy User
+ /// </summary>
protected TextBox LdapProxyUserPwd;
- /// <summary>
- /// LDAP Proxy User
- /// </summary>
+ /// <summary>
+ /// LDAP Proxy User
+ /// </summary>
protected TextBox ConfirmLdapProxyUserPwd;
/// <summary>
@@ -117,69 +118,69 @@
/// </summary>
protected DropDownList LdapSslList;
- /// <summary>
- /// Search context
- /// </summary>
+ /// <summary>
+ /// Search context
+ /// </summary>
protected TextBox LdapSearchContext;
/// <summary>
- /// OK button control.
- /// </summary>
- protected Button OkButton;
+ /// OK button control.
+ /// </summary>
+ protected Button OkButton;
/// <summary>
- /// cancel button control.
- /// </summary>
- protected Button CancelButton;
+ /// cancel button control.
+ /// </summary>
+ protected Button CancelButton;
- #endregion
-
- #region Properties
-
+#endregion
+
+#region Properties
+
/// <summary>
- /// Gets the Server ID.
- /// </summary>
- private string ServerID
- {
- get { return Request.Params[ "ServerID" ]; }
- }
+ /// Gets the Server ID.
+ /// </summary>
+ private string ServerID
+ {
+ get { return Request.Params[ "ServerID" ]; }
+ }
/// <summary>
- /// Gets the Server Name.
- /// </summary>
- private string serverName
- {
- get { return Request.Params[ "serverName" ]; }
- }
+ /// Gets the Server Name.
+ /// </summary>
+ private string serverName
+ {
+ get { return Request.Params[ "serverName" ]; }
+ }
- #endregion
-
- #region Private Methods
+#endregion
- /// <summary>
- /// Builds the breadcrumb list for this page.
- /// </summary>
- private void BuildBreadCrumbList(string ServerID,string serverName)
- {
+#region Private Methods
+
+ /// <summary>
+ /// Builds the breadcrumb list for this page.
+ /// </summary>
+ private void BuildBreadCrumbList(string ServerID,string serverName)
+ {
TopNav.AddBreadCrumb( GetString( "SERVERS" ), "Servers.aspx" );
TopNav.AddBreadCrumb( serverName, String.Format( "ServerDetails.aspx?id={0}", ServerID ) );
- TopNav.AddBreadCrumb( GetString( "LDAPDETAILS" ), null );
+ TopNav.AddBreadCrumb( GetString( "LDAPDETAILS" ), null );
// Pass this page information to create the help link
TopNav.AddHelpLink(GetString("LDAPADMINAUTH"));
- }
-
+ }
+
/// <summary>
- /// Page_Load
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void Page_Load(object sender, System.EventArgs e)
- {
- // connection
- web = Session[ "Connection" ] as iFolderAdmin;
+ /// Page_Load
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Page_Load(object sender, System.EventArgs e)
+ {
+ // connection
+ web = Session[ "Connection" ] as iFolderAdmin;
// localization
- rm = Application[ "RM" ] as ResourceManager;
+ rm = Application[ "RM" ] as ResourceManager;
string userID = Session[ "UserID" ] as String;
if(userID != null && ServerID != null && ServerID != String.Empty)
@@ -189,45 +190,45 @@
uRights = new UserSystemAdminRights(sysAccessPolicy);
if(uRights.ServerPolicyManagementAllowed == false)
Page.Response.Redirect(String.Format("Error.aspx?ex={0}&Msg={1}",GetString( "ACCESSDENIED" ), GetString( "ACCESSDENIEDERROR" )));
-
+
if ( !IsPostBack )
{
remoteweb = new iFolderAdmin ();
-
+
OkButton.Text = GetString( "OK" );
CancelButton.Text = GetString( "CANCEL" );
}
- }
+ }
-
+
/// <summary>
- /// Page_PreRender
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void Page_PreRender(object sender, EventArgs e)
- {
+ /// Page_PreRender
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Page_PreRender(object sender, EventArgs e)
+ {
GetLdapDetails ();
- // Set the breadcrumb list.
- BuildBreadCrumbList(ServerID,serverName);
- }
-
+ // Set the breadcrumb list.
+ BuildBreadCrumbList(ServerID,serverName);
+ }
+
/// <summary>
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- /// </summary>
- private void InitializeComponent()
- {
- if ( !Page.IsPostBack )
- {
- // Set the render event to happen only on page load.
- Page.PreRender += new EventHandler( Page_PreRender );
- }
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ if ( !Page.IsPostBack )
+ {
+ // Set the render event to happen only on page load.
+ Page.PreRender += new EventHandler( Page_PreRender );
+ }
- this.Load += new System.EventHandler(this.Page_Load);
- }
+ this.Load += new System.EventHandler(this.Page_Load);
+ }
/// <summary>
@@ -238,11 +239,11 @@
{
iFolderServer server = web.GetServer( ServerID );
- remoteweb.PreAuthenticate = true;
- remoteweb.Credentials = web.Credentials;
- remoteweb.Url = server.PublicUrl + "/iFolderAdmin.asmx";
+ remoteweb.PreAuthenticate = true;
+ remoteweb.Credentials = web.Credentials;
+ remoteweb.Url = server.PublicUrl + "/iFolderAdmin.asmx";
remoteweb.GetAuthenticatedUser();
- server = remoteweb.GetServer ( ServerID);
+ server = remoteweb.GetServer ( ServerID);
//Pick information from IdentityProvider
LdapInfo ldapInfo = remoteweb.GetLdapDetails();
@@ -262,6 +263,45 @@
LdapSslList.SelectedValue = ldapInfo.SSL ? GetString ("YES") : GetString ("NO");
}
+ private bool UpdateProxyUserInfo(string ldapAdmin, string ldapAdminPwd, string proxyDN, string ProxyDNPwd)
+ {
+ bool status = true;
+ try
+ {
+ iFolderServer[] list = web.GetServers();
+ foreach( iFolderServer server in list )
+ {
+ //check all servers other than current server.
+ if(server.ID != ServerID)
+ {
+ log.Info("Connecting to {0}", server.ID);
+ remoteweb = new iFolderAdmin ();
+ remoteweb.PreAuthenticate = true;
+ remoteweb.Credentials = web.Credentials;
+ remoteweb.Url = server.PublicUrl + "/iFolderAdmin.asmx";
+ remoteweb.GetAuthenticatedUser();
+ //Pick information from IdentityProvider
+ LdapInfo ldapInfo = remoteweb.GetLdapDetails();
+ log.Info("Proxy User = {0} on {1}", ldapInfo.ProxyDN, server.ID);
+ if(proxyDN == ldapInfo.ProxyDN)
+ {
+ //ldapInfo.ProxyDN = ProxyDN;
+ ldapInfo.ProxyPassword = ProxyDNPwd;
+ log.Info("Changing proxy user password on : {0}", server.ID);
+ remoteweb.SetLdapDetails (ldapInfo, ldapAdmin, ldapAdminPwd, server.ID);
+ }
+ }
+ }
+ }
+ catch(Exception ex)
+ {
+ status = false;
+ log.Info("Exception in UpdateProxyUserInfo : (0)", ex.Message);
+ TopNav.ShowInfo(String.Format(GetString("ALLSERVERPROXYPASSWORDCHANGEERROR")));
+ return status;
+ }
+ return status;
+ }
/// <summary>
/// To check if ldap admin name and password text boxes are empty
@@ -289,12 +329,15 @@
#region Protected Methods
/// <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 )
- {
+ /// 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"));
@@ -308,28 +351,36 @@
if(String.Compare(LdapProxyUserPwd.Text.Trim(), ConfirmLdapProxyUserPwd.Text.Trim()) != 0)
{
TopNav.ShowError(GetString("ERRORPROXYPASSWORDSDOESNOTMATCH"));
- return;
+ return;
}
/// if ldap admin username and password is right, go ahead
- iFolderServer server = web.GetServer( ServerID );
+ iFolderServer server = web.GetServer( ServerID );
remoteweb = new iFolderAdmin ();
- remoteweb.PreAuthenticate = true;
- remoteweb.Credentials = web.Credentials;
- remoteweb.Url = server.PublicUrl + "/iFolderAdmin.asmx";
+ remoteweb.PreAuthenticate = true;
+ remoteweb.Credentials = web.Credentials;
+ remoteweb.Url = server.PublicUrl + "/iFolderAdmin.asmx";
remoteweb.GetAuthenticatedUser();
- server = remoteweb.GetServer ( ServerID);
+ server = remoteweb.GetServer ( ServerID);
LdapInfo ldapInfo = new LdapInfo ();
- ldapInfo.Host = LdapServer.Text.Trim();
- ldapInfo.SearchContexts = LdapSearchContext.Text;
+ ldapInfo.Host = LdapServer.Text.Trim();
+ ldapInfo.SearchContexts = LdapSearchContext.Text;
ldapInfo.ProxyDN = LdapProxyUser.Text;
+ currentServerProxyDN = LdapProxyUser.Text;
ldapInfo.ProxyPassword = LdapProxyUserPwd.Text;
- ldapInfo.SSL = (LdapSslList.SelectedValue == GetString("YES")) ? true : false;
+ currentServerProxyDNPwd = LdapProxyUserPwd.Text;
+ ldapInfo.SSL = (LdapSslList.SelectedValue == GetString("YES")) ? true : false;
try
{
- remoteweb.SetLdapDetails (ldapInfo, LdapAdminName.Text.Trim(), LdapAdminPwd.Text, ServerID);
-
+ 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)
{
@@ -337,7 +388,8 @@
GetLdapDetails();
return;
}
- Response.Redirect(String.Format("ServerDetails.aspx?ID={0}",ServerID));
+ if (proxychagnestatus != false)
+ Response.Redirect(String.Format("ServerDetails.aspx?ID={0}",ServerID));
}
/// <summary>
Modified: trunk/src/admin/iFolderAdmin.resx
===================================================================
--- trunk/src/admin/iFolderAdmin.resx 2011-06-15 11:43:15 UTC (rev 7602)
+++ trunk/src/admin/iFolderAdmin.resx 2011-06-15 16:17:10 UTC (rev 7603)
@@ -1350,5 +1350,13 @@
<data name="TIMEOUT">
<value>It may take a long time to complete the request. You may perform other tasks while this request is being processed.</value>
</data>
+ <data name="PASSWORDCHANGEWARNING">
+ <value>If Common Proxy user is used for iFolder, do not change the
+ Proxy User's password</value>
+ </data>
+ <data name="ALLSERVERPROXYPASSWORDCHANGEERROR">
+ <value>All settings updated successfully, except Proxy user password on
+ other servers. You must change password on each server</value>
+ </data>
</data>
</root>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|