- Added Modify and Delete functionalities for Firefox Password
Manager Secrets into CASAManager.
This commit is contained in:
@@ -842,8 +842,8 @@ namespace Novell.CASA.GUI
|
||||
case Common.STORE_FIREFOX:
|
||||
if( 0 != objFirefox.tvSecretIDFirefox.Selection.CountSelectedRows() )
|
||||
{
|
||||
mmiView.Sensitive = true;
|
||||
mmiDelete.Sensitive = mmiLink.Sensitive = mmiCopy.Sensitive = false;
|
||||
mmiView.Sensitive = mmiDelete.Sensitive = true;
|
||||
mmiLink.Sensitive = mmiCopy.Sensitive = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1250,6 +1250,7 @@ namespace Novell.CASA.GUI
|
||||
break;
|
||||
|
||||
case Common.STORE_FIREFOX:
|
||||
objFirefox.OnDeleteActivated(obj, args);
|
||||
break;
|
||||
|
||||
case Common.STORE_MOZILLA:
|
||||
|
||||
138
c_gui/Firefox.cs
138
c_gui/Firefox.cs
@@ -55,7 +55,8 @@ public class Firefox : Store
|
||||
[Glade.Widget]
|
||||
Gtk.Dialog dialogNewSecret,
|
||||
dialogManageSecret,
|
||||
dialogLogin;
|
||||
dialogLogin,
|
||||
dialogConfirmDelete;
|
||||
|
||||
[Glade.Widget]
|
||||
Gtk.Menu menuRightClick;
|
||||
@@ -65,7 +66,8 @@ public class Firefox : Store
|
||||
entryKey,
|
||||
entryValue,
|
||||
entryMasterPassword3,
|
||||
entryMasterPassword4;
|
||||
entryMasterPassword4,
|
||||
entryDeleteSecretID;
|
||||
|
||||
[Glade.Widget]
|
||||
Gtk.CheckButton cbuttonShowPassword;
|
||||
@@ -193,7 +195,7 @@ public class Firefox : Store
|
||||
menuRightClick.Popup(null, null, null, IntPtr.Zero, 3, Gtk.Global.CurrentEventTime);
|
||||
|
||||
if( 0 != tvSecretIDFirefox.Selection.CountSelectedRows() )
|
||||
cmiNewSecret.Sensitive = cmiNewKey.Sensitive = cmiDelete.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = false;
|
||||
cmiNewSecret.Sensitive = cmiNewKey.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = false;
|
||||
else
|
||||
cmiNewSecret.Sensitive = cmiNewKey.Sensitive = cmiDelete.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = cmiView.Sensitive = false;
|
||||
}
|
||||
@@ -235,7 +237,8 @@ public class Firefox : Store
|
||||
dialogManageSecret.Title = "Firefox - Manage Secret";
|
||||
|
||||
cellEditable = new CellRendererText();
|
||||
cellEditable.Editable = false;
|
||||
cellEditable.Editable = true;
|
||||
cellEditable.Edited += new EditedHandler(OnKeyValueEdited);
|
||||
//cellEditable.Edited += new EditedHandler(OnKeyValueEdited);
|
||||
/// KEY:0 VALUE:1 VALUE-DUP:2 DIRTY-BIT:3 LINK:4
|
||||
tsKeyValue = new TreeStore(typeof(string),typeof(string), typeof(string), typeof(bool), typeof(string));
|
||||
@@ -262,6 +265,77 @@ public class Firefox : Store
|
||||
|
||||
Logger.DbgLog("GUI:Firefox.ViewKeyValues() - END");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// EDIT KEY-VALUE
|
||||
/// </summary>
|
||||
public void OnKeyValueEdited(object obj, EditedArgs args)
|
||||
{
|
||||
Logger.DbgLog("GUI:Firefox.OnKeyValueEdited() - BEGIN");
|
||||
|
||||
TreeModel model;
|
||||
TreeIter iter;
|
||||
object val;
|
||||
string KeyName = null,
|
||||
KeyValue = null;
|
||||
string[] Keys = null,
|
||||
Values = null;
|
||||
|
||||
try
|
||||
{
|
||||
tvKeyValue.Selection.GetSelected (out model, out iter);
|
||||
val = tsKeyValue.GetValue(iter,0);
|
||||
KeyName = val.ToString();
|
||||
if( true == cbuttonShowPassword.Active )
|
||||
val = tsKeyValue.GetValue(iter,1);
|
||||
else
|
||||
val = tsKeyValue.GetValue(iter,2);
|
||||
KeyValue = val.ToString();
|
||||
|
||||
tvSecretIDFirefox.Selection.GetSelected (out model, out iter);
|
||||
|
||||
if( false == entrySecretID.Editable )
|
||||
{
|
||||
if( ("" != args.NewText) && (KeyValue != args.NewText) )
|
||||
if( Common.STATUS_SUCCESS == StoreDataInterface.UpdateStore(Common.STORE_FIREFOX, Common.OPERATION_MODIFY_KEY, KeyName, args.NewText, ref model, ref iter) )
|
||||
{
|
||||
Logger.DbgLog("GUI:Firefox.OnKeyValueEdited() - StoreDataInterface.UpdateStore() succeeded");
|
||||
tvKeyValue.Selection.GetSelected (out model, out iter);
|
||||
tsKeyValue.SetValue(iter, 1, args.NewText);
|
||||
tsKeyValue.SetValue(iter, 2, "********");
|
||||
|
||||
tvSecretIDFirefox.Selection.GetSelected (out model, out iter);
|
||||
Keys = (string[]) model.GetValue(iter, 1);
|
||||
Values = (string[]) model.GetValue(iter, 2);
|
||||
for( int i=0; i< Keys.Length; i++ )
|
||||
{
|
||||
if( Keys[i] == KeyName )
|
||||
{
|
||||
Values[i] = args.NewText;
|
||||
tsSecretIDFirefox.SetValue(iter, 2, Values);
|
||||
break;
|
||||
}
|
||||
}
|
||||
AggregateStore();
|
||||
}
|
||||
else
|
||||
Logger.DbgLog("GUI:Firefox.OnKeyValueEdited() - ERROR: STATUS_STORE_UPDATEFAILED");
|
||||
}
|
||||
else
|
||||
{
|
||||
tvKeyValue.Selection.GetSelected (out model, out iter);
|
||||
tsKeyValue.SetValue(iter, 1, args.NewText);
|
||||
tsKeyValue.SetValue(iter, 2, "********");
|
||||
}
|
||||
}
|
||||
catch(Exception exp)
|
||||
{
|
||||
Logger.DbgLog("GUI:Firefox.OnKeyValueEdited() - EXCEPTION:" + exp.ToString());
|
||||
}
|
||||
|
||||
Logger.DbgLog("GUI:Firefox.OnKeyValueEdited() - END");
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ADD BUTTON CLICKED
|
||||
@@ -450,6 +524,62 @@ public class Firefox : Store
|
||||
/// </summary>
|
||||
public void OnDeleteActivated(object obj, EventArgs args)
|
||||
{
|
||||
Logger.DbgLog("GUI:Firefox.OnDeleteActivated() - BEGIN");
|
||||
if( 0 != tvSecretIDFirefox.Selection.CountSelectedRows() )
|
||||
{
|
||||
Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogConfirmDelete", null);
|
||||
gxmlTemp.Autoconnect (this);
|
||||
dialogConfirmDelete.TransientFor = (Gtk.Window)CasaMain.gxmlMain.GetWidget("windowMain");
|
||||
dialogConfirmDelete.Title = "Firefox - Delete Secret";
|
||||
|
||||
TreeModel model;
|
||||
TreeIter iter;
|
||||
string selected = null;
|
||||
if( tvSecretIDFirefox.Selection.GetSelected (out model, out iter) )
|
||||
{
|
||||
selected = (string) model.GetValue (iter, 0);
|
||||
if( (null != selected) && (selected.Length > 0) )
|
||||
entryDeleteSecretID.Text = selected;
|
||||
}
|
||||
}
|
||||
Logger.DbgLog("GUI:Firefox.OnDeleteActivated() - END");
|
||||
}
|
||||
|
||||
public void on_buttonYes_clicked(object obj, EventArgs args)
|
||||
{
|
||||
Logger.DbgLog("GUI:Firefox.on_buttonYes_clicked() - BEGIN");
|
||||
|
||||
TreeModel model;
|
||||
TreeIter iter;
|
||||
|
||||
try
|
||||
{
|
||||
if( tvSecretIDFirefox.Selection.GetSelected (out model, out iter) )
|
||||
{
|
||||
if( Common.STATUS_SUCCESS == StoreDataInterface.UpdateStore(Common.STORE_FIREFOX, Common.OPERATION_DELETE_SECRET, "", "", ref model, ref iter) )
|
||||
{
|
||||
tsSecretIDFirefox.Remove(ref iter);
|
||||
tvSecretIDFirefox.ColumnsAutosize();
|
||||
tsNativeInfoFirefox.Clear();
|
||||
dialogConfirmDelete.Destroy();
|
||||
Logger.DbgLog("GUI:Firefox.on_buttonYes_clicked() - DELETE_SECRET_SUCCEEDED");
|
||||
|
||||
}
|
||||
else
|
||||
Logger.DbgLog("GUI:Firefox.on_buttonYes_clicked() - DELETE_SECRET_FAILED");
|
||||
}
|
||||
}
|
||||
catch(Exception exp)
|
||||
{
|
||||
Logger.DbgLog("GUI:Firefox.on_buttonYes_clicked() - EXCEPTION:" + exp.ToString());
|
||||
}
|
||||
|
||||
Logger.DbgLog("GUI:Firefox.on_buttonYes_clicked() - END");
|
||||
}
|
||||
|
||||
public void on_buttonNo_clicked(object obj, EventArgs args)
|
||||
{
|
||||
dialogConfirmDelete.Destroy();
|
||||
}
|
||||
|
||||
///#######################################################################
|
||||
|
||||
@@ -640,6 +640,23 @@ namespace Novell.CASA.GUI {
|
||||
newKeyElement.AppendChild(newValue);
|
||||
}
|
||||
}
|
||||
else if( Common.STORE_FIREFOX == storeIDentifier )
|
||||
{
|
||||
storeChainKey = CCFXML_ELEMENT_FIREFOX_PROFILE;
|
||||
ccfRootStorePath = "//CCF/FireFox";
|
||||
if( Common.OPERATION_MODIFY_KEY == operation || Common.OPERATION_DELETE_KEY == operation )
|
||||
{
|
||||
ccfSecretPath = "//CCF/FireFox/Profile[@ID='" + keyChainID + "']/Secret[@ID='" + SecretID + "']/Key[@ID='" + keyID + "']";
|
||||
//Console.WriteLine("OPERATION_MODIFY_KEY-OR-OPERATION_DELETE_KEY:ccfSecretPath:"+ccfSecretPath);//FIXME:Remove this line
|
||||
}
|
||||
else if( Common.OPERATION_DELETE_SECRET == operation )
|
||||
{
|
||||
ccfKeyChainPath = "//CCF/FireFox/Profile[@ID='" + keyChainID + "']";
|
||||
ccfSecretPath = "Secret[@ID='" + SecretID + "']";
|
||||
//Console.WriteLine("OPERATION_DELETE_SECRET:ccfKeyChainPath:"+ccfKeyChainPath);//FIXME:Remove this line
|
||||
//Console.WriteLine("OPERATION_DELETE_SECRET:ccfSecretPath:"+ccfSecretPath);//FIXME:Remove this line
|
||||
}
|
||||
}
|
||||
else
|
||||
return( Common.STATUS_STORE_UNSUPPORTEDOPERATION );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user