From 0e0c9d8abc6ac91722d28074d89d74f9a184e7bf Mon Sep 17 00:00:00 2001 From: Jim Norman Date: Fri, 11 Nov 2005 15:38:05 +0000 Subject: [PATCH] Help files and code to launch them added --- CASA.changes | 5 + c_gui/CasaMain.cs | 2349 +++++++++-------- c_gui/Common.cs | 58 + c_gui/CommonGUI.cs | 5 + c_gui/MiCasa.cs | 25 +- c_gui/help/en/AddNewSecrets.htm | 63 + .../en/CASAMasterPasswordAuthentication.htm | 54 + c_gui/help/en/Contents.htm | 61 + c_gui/help/en/DestroyingSecrets.htm | 34 + c_gui/help/en/EditingSecrets.html | 47 + c_gui/help/en/LinkA.gif | Bin 0 -> 53890 bytes c_gui/help/en/LinkingSecrets.htm | 57 + c_gui/help/en/Persistent Storage.htm | 37 + c_gui/help/en/Preferences.htm | 46 + c_gui/help/en/UnlockSecrets.htm | 38 + c_gui/help/en/ViewSecrets.htm | 38 + c_gui/help/en/en.zip | Bin 0 -> 75155 bytes c_gui/help/en/h1_help_zcc.gif | Bin 0 -> 490 bytes c_gui/help/en/help_zcc_bg.gif | Bin 0 -> 5448 bytes c_gui/help/en/hf_style.css | 157 ++ c_gui/help/en/legal_notices_en.html | 62 + c_gui/images/casa-1.5.glade | 76 +- c_jwrapper/c_jwrapper.iws | 30 +- .../src/com/novell/casa/MiCasaTest.java | 2 +- shsrc/lshsrc/CASA.spec | 11 +- 25 files changed, 2037 insertions(+), 1218 deletions(-) create mode 100644 c_gui/help/en/AddNewSecrets.htm create mode 100644 c_gui/help/en/CASAMasterPasswordAuthentication.htm create mode 100644 c_gui/help/en/Contents.htm create mode 100644 c_gui/help/en/DestroyingSecrets.htm create mode 100644 c_gui/help/en/EditingSecrets.html create mode 100644 c_gui/help/en/LinkA.gif create mode 100644 c_gui/help/en/LinkingSecrets.htm create mode 100644 c_gui/help/en/Persistent Storage.htm create mode 100644 c_gui/help/en/Preferences.htm create mode 100644 c_gui/help/en/UnlockSecrets.htm create mode 100644 c_gui/help/en/ViewSecrets.htm create mode 100644 c_gui/help/en/en.zip create mode 100644 c_gui/help/en/h1_help_zcc.gif create mode 100644 c_gui/help/en/help_zcc_bg.gif create mode 100644 c_gui/help/en/hf_style.css create mode 100644 c_gui/help/en/legal_notices_en.html diff --git a/CASA.changes b/CASA.changes index 16bb6d38..fc2920f0 100644 --- a/CASA.changes +++ b/CASA.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Fri Nov 11 08:26:50 MST 2005 - jnorman@novell.com + +- Added help files, and code to launch help files to GUI + ------------------------------------------------------------------- Thu Nov 10 12:32:38 MST 2005 - jnorman@novell.com diff --git a/c_gui/CasaMain.cs b/c_gui/CasaMain.cs index 0a09cbcf..c1a3ce88 100644 --- a/c_gui/CasaMain.cs +++ b/c_gui/CasaMain.cs @@ -7,567 +7,574 @@ ///################################################################# -namespace Novell.CASA.GUI { +namespace Novell.CASA.GUI +{ -using System; -using System.IO; -using System.Diagnostics; -using Gtk; -using Glade; -using Novell.CASA; -using Novell.CASA.MiCasa.Common; -using Novell.CASA.MiCasa.Communication; + using System; + using System.IO; + using System.Diagnostics; + using Gtk; + using Glade; + using Novell.CASA; + using Novell.CASA.MiCasa.Common; + using Novell.CASA.MiCasa.Communication; #if W32 -using Microsoft.Win32; + using Microsoft.Win32; #endif -public class CasaMain -{ - public MiCasa objMiCasa = null; - public Firefox objFirefox = null; - public Mozilla objMozilla = null; - public KdeWallet objKdeWallet = null; - public GnomeKeyring objGnomeKeyring = null; + public class CasaMain + { + public MiCasa objMiCasa = null; + public Firefox objFirefox = null; + public Mozilla objMozilla = null; + public KdeWallet objKdeWallet = null; + public GnomeKeyring objGnomeKeyring = null; - public static Glade.XML gxml; + public static Glade.XML gxml; - int loginPromptCount = 3; + int loginPromptCount = 3; - #region Glade Widgets + #region Glade Widgets - [Glade.Widget] - Gtk.Window windowMain, - windowLog; + [Glade.Widget] + Gtk.Window windowMain, + windowLog; - [Glade.Widget] - Gtk.TreeView tvLog; + [Glade.Widget] + Gtk.TreeView tvLog; - [Glade.Widget] - Gtk.Notebook notebookStores; + [Glade.Widget] + Gtk.Notebook notebookStores; - [Glade.Widget] - Gtk.Dialog dialogPersistentStorage, - dialogPreferences, - dialogAbout, - dialogLogin, - dialogLoginContinue, - dialogConfirmRefresh, - dialogSingleInstance, - dialogLoginReprompt, - dialogShortPassword, - dialogResetMP; + [Glade.Widget] + Gtk.Dialog dialogPersistentStorage, + dialogPreferences, + dialogAbout, + dialogLogin, + dialogLoginContinue, + dialogConfirmRefresh, + dialogSingleInstance, + dialogLoginReprompt, + dialogShortPassword, + dialogResetMP; - [Glade.Widget] - Gtk.Entry entryMasterPassword1, - entryMasterPassword2, - entryMasterPassword3, - entryMasterPassword4, - entryOldMP, - entryNewMP1, - entryNewMP2; + [Glade.Widget] + Gtk.Entry entryMasterPassword1, + entryMasterPassword2, + entryMasterPassword3, + entryMasterPassword4, + entryOldMP, + entryNewMP1, + entryNewMP2; - [Glade.Widget] - Gtk.CheckButton checkbuttonFirefox, - checkbuttonMozilla, - checkbuttonGnomeKeyring, - checkbuttonKdeWallet; + [Glade.Widget] + Gtk.CheckButton checkbuttonFirefox, + checkbuttonMozilla, + checkbuttonGnomeKeyring, + checkbuttonKdeWallet; - [Glade.Widget] - Gtk.Label label88, - labelLoginContinue1, - labelLoginContinue2; + [Glade.Widget] + Gtk.Label label88, + labelLoginContinue1, + labelLoginContinue2; - [Glade.Widget] - Gtk.Button okbuttonPersistentStorage; + [Glade.Widget] + Gtk.Button okbuttonPersistentStorage, + buttonNovell; - [Glade.Widget] - Gtk.MenuItem mmiNew, - mmiNewKey, - mmiView, - mmiLink, - mmiCopy, - mmiDelete, - mmiRefresh, - mmiLockSecrets, - mmiUnlockSecrets, - mmiDestroySecrets, - mmiEdit, - mmiOptions, - mmiDebug; - [Glade.Widget] - Gtk.CheckMenuItem mmiShowTaskIcon; + [Glade.Widget] + Gtk.MenuItem mmiNew, + mmiNewKey, + mmiView, + mmiLink, + mmiCopy, + mmiDelete, + mmiRefresh, + mmiLockSecrets, + mmiUnlockSecrets, + mmiDestroySecrets, + mmiEdit, + mmiOptions, + mmiDebug; + [Glade.Widget] + Gtk.CheckMenuItem mmiShowTaskIcon; - #endregion + #endregion - public static CasaTray mCasaTray = null; - public static bool m_bShowDebug = false; - public static bool m_bNotifyUser = true; + public static CasaTray mCasaTray = null; + public static bool m_bShowDebug = false; + public static bool m_bNotifyUser = true; - ///####################################################################### - /// MAIN + ///####################################################################### + /// MAIN - /// - /// The main entry point for the CASA application. - /// - [STAThread] - public static void Main(string[] args) - { - Logger.DbgLog("GUI:CasaMain.Main() - BEGIN"); - - Common.ReadPlatform(); - - Application.Init(); - - try + /// + /// The main entry point for the CASA application. + /// + [STAThread] + public static void Main(string[] args) { - if (Common.IsArgSet(args, Common.ARG_DEBUG)) - m_bShowDebug = true; + Logger.DbgLog("GUI:CasaMain.Main() - BEGIN"); - // ping micasad - Ping ping = new Ping(); - ping.clientmessage = "Hello micasad"; - MiCasaRequestReply.Send(MiCasaRequestReply.VERB_PING_MICASAD,ping); + Common.ReadPlatform(); + + Application.Init(); + + try + { + if (Common.IsArgSet(args, Common.ARG_DEBUG)) + m_bShowDebug = true; + + // ping micasad + Ping ping = new Ping(); + ping.clientmessage = "Hello micasad"; + MiCasaRequestReply.Send(MiCasaRequestReply.VERB_PING_MICASAD,ping); - new CasaMain(args); - Application.Run(); + new CasaMain(args); + Application.Run(); - } - catch (Exception e) - { - string message = "miCASA services are not available"; + } + catch (Exception e) + { + string message = "miCASA services are not available"; - if (m_bShowDebug) - message = e.ToString(); + if (m_bShowDebug) + message = e.ToString(); - MessageDialog md=new MessageDialog(null,Gtk.DialogFlags.Modal, - Gtk.MessageType.Error, - Gtk.ButtonsType.Close, - message); + MessageDialog md=new MessageDialog(null,Gtk.DialogFlags.Modal, + Gtk.MessageType.Error, + Gtk.ButtonsType.Close, + message); - md.Response+=new ResponseHandler(md_ResponseCloseWindow); - md.SetPosition(Gtk.WindowPosition.CenterAlways); - md.Show(); - Application.Run(); - } + md.Response+=new ResponseHandler(md_ResponseCloseWindow); + md.SetPosition(Gtk.WindowPosition.CenterAlways); + md.Show(); + Application.Run(); + } - Logger.DbgLog("GUI:CasaMain.Main() - END"); - } + Logger.DbgLog("GUI:CasaMain.Main() - END"); + } - ///####################################################################### - /// CONSTRUCTOR + ///####################################################################### + /// CONSTRUCTOR - /// - /// CasaMain constructor funtion. - /// - public CasaMain(string[] args) - { - Logger.DbgLog("GUI:CasaMain.CasaMain() - BEGIN"); + /// + /// CasaMain constructor funtion. + /// + public CasaMain(string[] args) + { + Logger.DbgLog("GUI:CasaMain.CasaMain() - BEGIN"); - if( false == Common.CheckForSingleInstance() ) - { - MasterPasswordAuthentication(); + if( false == Common.CheckForSingleInstance() ) + { + MasterPasswordAuthentication(); - if (Common.IsTrayAvailable()) // && Common.IsArgSet(args, Common.ARG_SHOW_TRAY_ICON)) - { - try + if (Common.IsTrayAvailable()) // && Common.IsArgSet(args, Common.ARG_SHOW_TRAY_ICON)) { - if (mCasaTray == null) - mCasaTray = new CasaTray(); + try + { + if (mCasaTray == null) + mCasaTray = new CasaTray(); + } + catch{} } - catch{} - } - } - else - { - Glade.XML gxmlTemp = new Glade.XML(Common.GladeFile, "dialogSingleInstance", null); - gxmlTemp.Autoconnect(this); - } - - Logger.DbgLog("GUI:CasaMain.CasaMain() - END"); - } - - - - ///####################################################################### - /// INITIALIZE MAIN GUI - - /// - /// Main GUI initializing routine. This routine builds the Main window of CASA. - /// - public void InitializeGUI() - { - Logger.DbgLog("GUI:CasaMain.InitializeGUI() - BEGIN"); - - gxml = new Glade.XML(Common.GladeFile, "windowMain", null); - gxml.Autoconnect(this); - - if (!m_bShowDebug) - mmiDebug.Hide(); - - - windowMain.DeleteEvent += new DeleteEventHandler(OnWindowMainDeleted); - - /// PLATFORM SPECIFIC GUI CHANGES - //ConfigureGUI(); - - /// POLICY INIT - StorePolicyInterface.Init(); - - Logger.DbgLog("GUI:CasaMain.InitializeGUI() - miCASA policy = " + Common.IS_MICASA); - Logger.DbgLog("GUI:CasaMain.InitializeGUI() - Firefox policy = " + Common.IS_FIREFOX); - Logger.DbgLog("GUI:CasaMain.InitializeGUI() - Mozilla policy = " + Common.IS_MOZILLA); - Logger.DbgLog("GUI:CasaMain.InitializeGUI() - KdeWallet policy = " + Common.IS_KDEWALLET); - Logger.DbgLog("GUI:CasaMain.InitializeGUI() - GNOME Keyring policy = " + Common.IS_GNOMEKEYRING); - - /// STOREDATA INIT - StoreDataInterface.Init(); - - if( Common.IS_MICASA ) - { - Logger.DbgLog("GUI:CasaMain.new MiCasa()."); - objMiCasa = new MiCasa(); - } - else - (notebookStores.GetNthPage(Common.STORE_MICASA)).Visible = Common.IS_MICASA; - - if( Common.IS_FIREFOX ) - { - Logger.DbgLog("GUI:CasaMain.new Firefox()."); - objFirefox = new Firefox(); - } - else - (notebookStores.GetNthPage(Common.STORE_FIREFOX)).Visible = Common.IS_FIREFOX; - - if( Common.IS_MOZILLA ) - { - Logger.DbgLog("GUI:CasaMain.new Mozilla()."); - objMozilla = new Mozilla(); - } - else - (notebookStores.GetNthPage(Common.STORE_MOZILLA)).Visible = Common.IS_MOZILLA; - - if( Common.IS_KDEWALLET ) - { - Logger.DbgLog("GUI:CasaMain.new KdeWallet()."); - objKdeWallet = new KdeWallet(); - } - else - (notebookStores.GetNthPage(Common.STORE_KDEWALLET)).Visible = Common.IS_KDEWALLET; - - if( Common.IS_GNOMEKEYRING ) - { - Logger.DbgLog("GUI:CasaMain.new GnomeKeyring()."); - objGnomeKeyring = new GnomeKeyring(); - } - else - (notebookStores.GetNthPage(Common.STORE_GNOMEKEYRING)).Visible = Common.IS_GNOMEKEYRING; - - notebookStores.CurrentPage = Common.STORE_MICASA; - - if (MiCASAStore.IsLocked()) - LockGUI(); - else - UnlockGUI(); - - windowMain.Show(); - - Logger.DbgLog("GUI:CasaMain.InitializeGUI() - END"); - } - - - - ///####################################################################### - /// MASTER PASSWORD AUTHENTICATION - - /// - /// This routine implements the MasterPassword authentication. - /// - public void MasterPasswordAuthentication() - { - Logger.DbgLog("GUI:CasaMain.Login() - BEGIN"); - - if( true == IsMasterPasswordSet() ) - { - Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned true"); - - if( false == miCASA.IsSecretPersistent(1,"") ) - { - Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned false"); - Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogLogin", null); - gxmlTemp.Autoconnect (this); - dialogLogin.TransientFor = windowMain; - entryMasterPassword3.Text=""; - label88.Hide(); - entryMasterPassword4.Hide(); - } - else - { - Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned true"); - InitializeGUI(); - } - } - else - { - Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned false"); - - Glade.XML gxmlTemp = new Glade.XML(Common.GladeFile, "dialogLogin", null); - gxmlTemp.Autoconnect(this); - entryMasterPassword3.Text=""; - entryMasterPassword4.Text=""; - } - - Logger.DbgLog("GUI:CasaMain.Login() - END"); - } - - - - public void okbuttonLogin_clicked(object abj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.okbuttonLogin_clicked() - BEGIN"); - - if( true == entryMasterPassword4.Visible ) - { - if( entryMasterPassword3.Text.Length < 8 ) - { - Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogShortPassword", null); - gxmlTemp.Autoconnect (this); - - } - else if(entryMasterPassword3.Text != "" && (entryMasterPassword3.Text == entryMasterPassword4.Text) && entryMasterPassword3.Text.Length >= 8) - { - miCASA.SetMasterPassword(0, entryMasterPassword3.Text); - MiCasaRequestReply.Send(MiCasaRequestReply.VERB_UNLOCK_STORE, entryMasterPassword3.Text); - dialogLogin.Destroy(); - InitializeGUI(); - } - else - { - entryMasterPassword3.Text=""; - entryMasterPassword4.Text=""; - entryMasterPassword3.HasFocus=true; - } - } - else - { - if( 0 == miCASA.SetMasterPassword(0, entryMasterPassword3.Text) ) - { - MiCasaRequestReply.Send(MiCasaRequestReply.VERB_UNLOCK_STORE, entryMasterPassword3.Text); - dialogLogin.Destroy(); - InitializeGUI(); - } - else - { - Logger.DbgLog("GUI:CasaMain.okbuttonLogin_clicked() - MasterPassword verification failed."); - //dialogLogin.Destroy(); - //LoginContinue("Master Password verfication failed", "The store will not be persistent"); - loginPromptCount--; - dialogLogin.Hide(); - - if( loginPromptCount > 0 ) - { - dialogLogin.Show(); - entryMasterPassword3.Text=""; } else - { - Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogLoginReprompt", null); - gxmlTemp.Autoconnect (this); - } - } - } - - Logger.DbgLog("GUI:CasaMain.okbuttonLogin_clicked() - END"); - } - - internal void on_buttonRetryRepropmt_clicked(object obj, EventArgs args) - { - dialogLoginReprompt.Destroy(); - dialogLogin.Show(); - entryMasterPassword3.Text=""; - loginPromptCount = 3; - } - - internal void on_buttonRetryShortPassword_clicked(object obj, EventArgs args) - { - dialogShortPassword.Destroy(); - entryMasterPassword3.Text = ""; - entryMasterPassword4.Text = ""; - entryMasterPassword3.HasFocus = true; - } - - internal void on_buttonCloseReprompt_clicked(object obj, EventArgs args) - { - dialogLoginReprompt.Destroy(); - dialogLogin.Destroy(); - HandleQuit(); - } - - public void closebuttonLogin_clicked(object abj, EventArgs args) - { - dialogLogin.Destroy(); - HandleQuit(); - } - - - public void OnDialogLoginDeleted(object obj, DeleteEventArgs args) - { - Logger.DbgLog("GUI:CasaMain.OnDialogLoginDeleted() - BEGIN"); - - HandleQuit(); - args.RetVal = true; - - Logger.DbgLog("GUI:CasaMain.OnDialogLoginDeleted() - END"); - } - - public void on_entryMasterPassword3_activate(object obj, EventArgs args) - { - if( true == entryMasterPassword4.Visible ) - entryMasterPassword4.HasFocus = true; - else if( "" != entryMasterPassword3.Text ) - okbuttonLogin_clicked(obj, args); - } - - public void on_entryMasterPassword4_activate(object obj, EventArgs args) - { - okbuttonLogin_clicked(obj, args); - } - - public bool IsMasterPasswordSet() - { - Logger.DbgLog("GUI:CasaMain.IsMasterPasswordSet() - BEGIN"); - - string MICASA_PASSCODE_BY_MASTER_PASSWD_FILE = "/.miCASAPCByMPasswd"; - string fileName = GetUserHomeDir() + MICASA_PASSCODE_BY_MASTER_PASSWD_FILE; - - Logger.DbgLog("GUI:CasaMain.IsMasterPasswordSet() - END"); - return (File.Exists(fileName)); - } - - private string GetUserHomeDir() - { - if (Common.IS_LINUX) - return Environment.GetEnvironmentVariable("HOME"); - else - return Environment.GetEnvironmentVariable("USERPROFILE"); + { + Glade.XML gxmlTemp = new Glade.XML(Common.GladeFile, "dialogSingleInstance", null); + gxmlTemp.Autoconnect(this); + } - } + Logger.DbgLog("GUI:CasaMain.CasaMain() - END"); + } - ///####################################################################### - /// LOGIN WARNING DIALOG - /// - /// Error dialog prompt for MasterPassword authentication - /// - public void LoginContinue(string LabelMain, string LabelTips) - { - Logger.DbgLog("GUI:CasaMain.LoginContinue() - BEGIN"); + + ///####################################################################### + /// INITIALIZE MAIN GUI + + /// + /// Main GUI initializing routine. This routine builds the Main window of CASA. + /// + public void InitializeGUI() + { + Logger.DbgLog("GUI:CasaMain.InitializeGUI() - BEGIN"); + + gxml = new Glade.XML(Common.GladeFile, "windowMain", null); + gxml.Autoconnect(this); + + if (!m_bShowDebug) + mmiDebug.Hide(); + + + windowMain.DeleteEvent += new DeleteEventHandler(OnWindowMainDeleted); + + /// PLATFORM SPECIFIC GUI CHANGES + //ConfigureGUI(); + + /// POLICY INIT + StorePolicyInterface.Init(); + + Logger.DbgLog("GUI:CasaMain.InitializeGUI() - miCASA policy = " + Common.IS_MICASA); + Logger.DbgLog("GUI:CasaMain.InitializeGUI() - Firefox policy = " + Common.IS_FIREFOX); + Logger.DbgLog("GUI:CasaMain.InitializeGUI() - Mozilla policy = " + Common.IS_MOZILLA); + Logger.DbgLog("GUI:CasaMain.InitializeGUI() - KdeWallet policy = " + Common.IS_KDEWALLET); + Logger.DbgLog("GUI:CasaMain.InitializeGUI() - GNOME Keyring policy = " + Common.IS_GNOMEKEYRING); + + /// STOREDATA INIT + StoreDataInterface.Init(); + + if( Common.IS_MICASA ) + { + Logger.DbgLog("GUI:CasaMain.new MiCasa()."); + objMiCasa = new MiCasa(); + } + else + (notebookStores.GetNthPage(Common.STORE_MICASA)).Visible = Common.IS_MICASA; + + if( Common.IS_FIREFOX ) + { + Logger.DbgLog("GUI:CasaMain.new Firefox()."); + objFirefox = new Firefox(); + } + else + (notebookStores.GetNthPage(Common.STORE_FIREFOX)).Visible = Common.IS_FIREFOX; + + if( Common.IS_MOZILLA ) + { + Logger.DbgLog("GUI:CasaMain.new Mozilla()."); + objMozilla = new Mozilla(); + } + else + (notebookStores.GetNthPage(Common.STORE_MOZILLA)).Visible = Common.IS_MOZILLA; + + if( Common.IS_KDEWALLET ) + { + Logger.DbgLog("GUI:CasaMain.new KdeWallet()."); + objKdeWallet = new KdeWallet(); + } + else + (notebookStores.GetNthPage(Common.STORE_KDEWALLET)).Visible = Common.IS_KDEWALLET; + + if( Common.IS_GNOMEKEYRING ) + { + Logger.DbgLog("GUI:CasaMain.new GnomeKeyring()."); + objGnomeKeyring = new GnomeKeyring(); + } + else + (notebookStores.GetNthPage(Common.STORE_GNOMEKEYRING)).Visible = Common.IS_GNOMEKEYRING; + + notebookStores.CurrentPage = Common.STORE_MICASA; + + if (MiCASAStore.IsLocked()) + LockGUI(); + else + UnlockGUI(); + + windowMain.Show(); + + Logger.DbgLog("GUI:CasaMain.InitializeGUI() - END"); + } + + + + ///####################################################################### + /// MASTER PASSWORD AUTHENTICATION + + /// + /// This routine implements the MasterPassword authentication. + /// + public void MasterPasswordAuthentication() + { + Logger.DbgLog("GUI:CasaMain.Login() - BEGIN"); + + if( true == IsMasterPasswordSet() ) + { + Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned true"); + + if( false == miCASA.IsSecretPersistent(1,"") ) + { + Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned false"); + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogLogin", null); + gxmlTemp.Autoconnect (this); + dialogLogin.TransientFor = windowMain; + entryMasterPassword3.Text=""; + label88.Hide(); + entryMasterPassword4.Hide(); + } + else + { + Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned true"); + InitializeGUI(); + } + } + else + { + Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned false"); + + Glade.XML gxmlTemp = new Glade.XML(Common.GladeFile, "dialogLogin", null); + gxmlTemp.Autoconnect(this); + entryMasterPassword3.Text=""; + entryMasterPassword4.Text=""; + } + + Logger.DbgLog("GUI:CasaMain.Login() - END"); + } + + + + public void okbuttonLogin_clicked(object abj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.okbuttonLogin_clicked() - BEGIN"); + + if( true == entryMasterPassword4.Visible ) + { + if( entryMasterPassword3.Text.Length < 8 ) + { + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogShortPassword", null); + gxmlTemp.Autoconnect (this); + + } + else if(entryMasterPassword3.Text != "" && (entryMasterPassword3.Text == entryMasterPassword4.Text) && entryMasterPassword3.Text.Length >= 8) + { + miCASA.SetMasterPassword(0, entryMasterPassword3.Text); + MiCasaRequestReply.Send(MiCasaRequestReply.VERB_UNLOCK_STORE, entryMasterPassword3.Text); + dialogLogin.Destroy(); + InitializeGUI(); + } + else + { + entryMasterPassword3.Text=""; + entryMasterPassword4.Text=""; + entryMasterPassword3.HasFocus=true; + } + } + else + { + if( 0 == miCASA.SetMasterPassword(0, entryMasterPassword3.Text) ) + { + MiCasaRequestReply.Send(MiCasaRequestReply.VERB_UNLOCK_STORE, entryMasterPassword3.Text); + dialogLogin.Destroy(); + InitializeGUI(); + } + else + { + Logger.DbgLog("GUI:CasaMain.okbuttonLogin_clicked() - MasterPassword verification failed."); + //dialogLogin.Destroy(); + //LoginContinue("Master Password verfication failed", "The store will not be persistent"); + loginPromptCount--; + dialogLogin.Hide(); + + if( loginPromptCount > 0 ) + { + dialogLogin.Show(); + entryMasterPassword3.Text=""; + } + else + { + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogLoginReprompt", null); + gxmlTemp.Autoconnect (this); + } + } + } + + Logger.DbgLog("GUI:CasaMain.okbuttonLogin_clicked() - END"); + } + + public void on_helpbuttonAuthentication_clicked(object obj, EventArgs args) + { + Common.ShowHelpUrl("CASAMasterPasswordAuthentication.htm"); + } + + internal void on_buttonRetryRepropmt_clicked(object obj, EventArgs args) + { + dialogLoginReprompt.Destroy(); + dialogLogin.Show(); + entryMasterPassword3.Text=""; + loginPromptCount = 3; + } + + internal void on_buttonRetryShortPassword_clicked(object obj, EventArgs args) + { + dialogShortPassword.Destroy(); + entryMasterPassword3.Text = ""; + entryMasterPassword4.Text = ""; + entryMasterPassword3.HasFocus = true; + } + + internal void on_buttonCloseReprompt_clicked(object obj, EventArgs args) + { + dialogLoginReprompt.Destroy(); + dialogLogin.Destroy(); + HandleQuit(); + } + + public void closebuttonLogin_clicked(object abj, EventArgs args) + { + dialogLogin.Destroy(); + HandleQuit(); + } + + + public void OnDialogLoginDeleted(object obj, DeleteEventArgs args) + { + Logger.DbgLog("GUI:CasaMain.OnDialogLoginDeleted() - BEGIN"); - Glade.XML gxmlTemp = new Glade.XML(Common.GladeFile, "dialogLoginContinue", null); - gxmlTemp.Autoconnect(this); - dialogLoginContinue.TransientFor = windowMain; - labelLoginContinue1.LabelProp = LabelMain; - labelLoginContinue2.LabelProp = LabelTips; - - Logger.DbgLog("GUI:CasaMain.LoginContinue() - END"); - } + HandleQuit(); + args.RetVal = true; + + Logger.DbgLog("GUI:CasaMain.OnDialogLoginDeleted() - END"); + } - public void on_buttonLoginContinue_clicked(object abj, EventArgs args) - { - dialogLoginContinue.Destroy(); - InitializeGUI(); - } + public void on_entryMasterPassword3_activate(object obj, EventArgs args) + { + if( true == entryMasterPassword4.Visible ) + entryMasterPassword4.HasFocus = true; + else if( "" != entryMasterPassword3.Text ) + okbuttonLogin_clicked(obj, args); + } + + public void on_entryMasterPassword4_activate(object obj, EventArgs args) + { + okbuttonLogin_clicked(obj, args); + } + + public bool IsMasterPasswordSet() + { + Logger.DbgLog("GUI:CasaMain.IsMasterPasswordSet() - BEGIN"); + + string MICASA_PASSCODE_BY_MASTER_PASSWD_FILE = "/.miCASAPCByMPasswd"; + string fileName = GetUserHomeDir() + MICASA_PASSCODE_BY_MASTER_PASSWD_FILE; + + Logger.DbgLog("GUI:CasaMain.IsMasterPasswordSet() - END"); + return (File.Exists(fileName)); + } + + private string GetUserHomeDir() + { + if (Common.IS_LINUX) + return Environment.GetEnvironmentVariable("HOME"); + else + return Environment.GetEnvironmentVariable("USERPROFILE"); + + } + + ///####################################################################### + /// LOGIN WARNING DIALOG + + /// + /// Error dialog prompt for MasterPassword authentication + /// + public void LoginContinue(string LabelMain, string LabelTips) + { + Logger.DbgLog("GUI:CasaMain.LoginContinue() - BEGIN"); + + Glade.XML gxmlTemp = new Glade.XML(Common.GladeFile, "dialogLoginContinue", null); + gxmlTemp.Autoconnect(this); + dialogLoginContinue.TransientFor = windowMain; + labelLoginContinue1.LabelProp = LabelMain; + labelLoginContinue2.LabelProp = LabelTips; + + Logger.DbgLog("GUI:CasaMain.LoginContinue() - END"); + } + + public void on_buttonLoginContinue_clicked(object abj, EventArgs args) + { + dialogLoginContinue.Destroy(); + InitializeGUI(); + } - ///####################################################################### - /// ON MAIN MENU ACTIVATED HANDLERS + ///####################################################################### + /// ON MAIN MENU ACTIVATED HANDLERS - internal void on_notebookStores_switch_page(object obj, SwitchPageArgs args) - { - switch(args.PageNum) - { - case Common.STORE_MICASA: - break; + internal void on_notebookStores_switch_page(object obj, SwitchPageArgs args) + { + switch(args.PageNum) + { + case Common.STORE_MICASA: + break; - case Common.STORE_FIREFOX: - break; + case Common.STORE_FIREFOX: + break; - case Common.STORE_MOZILLA: - break; + case Common.STORE_MOZILLA: + break; - case Common.STORE_KDEWALLET: - if( false == objKdeWallet.IS_STORE_AGGREGATED ) + case Common.STORE_KDEWALLET: + if( false == objKdeWallet.IS_STORE_AGGREGATED ) { objKdeWallet.AggregateStore(); objKdeWallet.IS_STORE_AGGREGATED = true; } - break; + break; - case Common.STORE_GNOMEKEYRING: - if( false == objGnomeKeyring.IS_STORE_AGGREGATED ) + case Common.STORE_GNOMEKEYRING: + if( false == objGnomeKeyring.IS_STORE_AGGREGATED ) { objGnomeKeyring.AggregateStore(); objGnomeKeyring.IS_STORE_AGGREGATED = true; } - break; - } + break; + } - } + } - /// - /// - /// - internal void FileMenuActivated(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.FileMenuActivated() - BEGIN"); + /// + /// + /// + internal void FileMenuActivated(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.FileMenuActivated() - BEGIN"); - if (MiCASAStore.IsLocked()) - { - LockGUI(); - Logger.DbgLog("GUI:CasaMain.FileMenuActivated() Store is locked - END"); - return; - } - else - { - UnlockGUI(); - } + if (MiCASAStore.IsLocked()) + { + LockGUI(); + Logger.DbgLog("GUI:CasaMain.FileMenuActivated() Store is locked - END"); + return; + } + else + { + UnlockGUI(); + } - switch(notebookStores.CurrentPage) - { - case Common.STORE_MICASA: - if( 0 != objMiCasa.tvSecretIDMiCasa.Selection.CountSelectedRows() ) - { - mmiNew.Sensitive = mmiNewKey.Sensitive = true; - } - else - { - mmiNew.Sensitive = true; - mmiNewKey.Sensitive = false; - } - break; + switch(notebookStores.CurrentPage) + { + case Common.STORE_MICASA: + if( 0 != objMiCasa.tvSecretIDMiCasa.Selection.CountSelectedRows() ) + { + mmiNew.Sensitive = mmiNewKey.Sensitive = true; + } + else + { + mmiNew.Sensitive = true; + mmiNewKey.Sensitive = false; + } + break; - case Common.STORE_FIREFOX: - break; + case Common.STORE_FIREFOX: + break; - case Common.STORE_MOZILLA: - break; + case Common.STORE_MOZILLA: + break; - case Common.STORE_KDEWALLET: - if( 0 != objKdeWallet.tvSecretIDKdeWallet.Selection.CountSelectedRows() ) + case Common.STORE_KDEWALLET: + if( 0 != objKdeWallet.tvSecretIDKdeWallet.Selection.CountSelectedRows() ) { mmiNew.Sensitive = false; } @@ -575,35 +582,35 @@ public class CasaMain { mmiNew.Sensitive = false; } - break; + break; - case Common.STORE_GNOMEKEYRING: - if( 0 != objGnomeKeyring.tvSecretIDGnomeKeyring.Selection.CountSelectedRows() ) - { - mmiNew.Sensitive = false; - } - else - { - mmiNew.Sensitive = false; - } - break; - } + case Common.STORE_GNOMEKEYRING: + if( 0 != objGnomeKeyring.tvSecretIDGnomeKeyring.Selection.CountSelectedRows() ) + { + mmiNew.Sensitive = false; + } + else + { + mmiNew.Sensitive = false; + } + break; + } - Logger.DbgLog("GUI:CasaMain.FileMenuActivated() - END"); - } + Logger.DbgLog("GUI:CasaMain.FileMenuActivated() - END"); + } - /// - /// - /// - internal void EditMenuActivated(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.EditMenuActivated() - BEGIN"); + /// + /// + /// + internal void EditMenuActivated(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.EditMenuActivated() - BEGIN"); - switch(notebookStores.CurrentPage) - { - case Common.STORE_MICASA: + switch(notebookStores.CurrentPage) + { + case Common.STORE_MICASA: if( 0 != objMiCasa.tvSecretIDMiCasa.Selection.CountSelectedRows() ) { mmiView.Sensitive = mmiDelete.Sensitive = true; @@ -613,15 +620,15 @@ public class CasaMain { mmiView.Sensitive = mmiLink.Sensitive = mmiCopy.Sensitive = mmiDelete.Sensitive = false; } - break; + break; - case Common.STORE_FIREFOX: + case Common.STORE_FIREFOX: break; - case Common.STORE_MOZILLA: + case Common.STORE_MOZILLA: break; - case Common.STORE_KDEWALLET: + case Common.STORE_KDEWALLET: if( 0 != objKdeWallet.tvSecretIDKdeWallet.Selection.CountSelectedRows() ) { mmiView.Sensitive = true; @@ -631,776 +638,808 @@ public class CasaMain { mmiView.Sensitive = mmiLink.Sensitive = mmiCopy.Sensitive = mmiDelete.Sensitive = false; } - break; + break; - case Common.STORE_GNOMEKEYRING: if( 0 != objGnomeKeyring.tvSecretIDGnomeKeyring.Selection.CountSelectedRows() ) - { - mmiView.Sensitive = true; - mmiLink.Sensitive = mmiCopy.Sensitive = mmiDelete.Sensitive = false; - } - else - { - mmiView.Sensitive = mmiLink.Sensitive = mmiCopy.Sensitive = mmiDelete.Sensitive = false; - } - break; - } + case Common.STORE_GNOMEKEYRING: if( 0 != objGnomeKeyring.tvSecretIDGnomeKeyring.Selection.CountSelectedRows() ) + { + mmiView.Sensitive = true; + mmiLink.Sensitive = mmiCopy.Sensitive = mmiDelete.Sensitive = false; + } + else + { + mmiView.Sensitive = mmiLink.Sensitive = mmiCopy.Sensitive = mmiDelete.Sensitive = false; + } + break; + } - Logger.DbgLog("GUI:CasaMain.EditMenuActivated() - END"); - } + Logger.DbgLog("GUI:CasaMain.EditMenuActivated() - END"); + } - ///####################################################################### - /// REFRESH ALL STORES + ///####################################################################### + /// REFRESH ALL STORES - /// - /// - /// - public void RefreshAllStores(object obj, EventArgs args) - { - Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogConfirmRefresh", null); - gxmlTemp.Autoconnect (this); - dialogConfirmRefresh.TransientFor = windowMain; - } + /// + /// + /// + public void RefreshAllStores(object obj, EventArgs args) + { + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogConfirmRefresh", null); + gxmlTemp.Autoconnect (this); + dialogConfirmRefresh.TransientFor = windowMain; + } - public void on_buttonRefreshYes_clicked(object abj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.on_buttonRefreshYes_clicked() - BEGIN"); + public void on_buttonRefreshYes_clicked(object abj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.on_buttonRefreshYes_clicked() - BEGIN"); - if( Common.IS_MICASA ) - objMiCasa.AggregateStore(); + if( Common.IS_MICASA ) + objMiCasa.AggregateStore(); - if( Common.IS_FIREFOX ) - objFirefox.AggregateStore(); + if( Common.IS_FIREFOX ) + objFirefox.AggregateStore(); - if( Common.IS_MOZILLA ) - objMozilla.AggregateStore(); + if( Common.IS_MOZILLA ) + objMozilla.AggregateStore(); - if( Common.IS_KDEWALLET ) - objKdeWallet.AggregateStore(); + if( Common.IS_KDEWALLET ) + objKdeWallet.AggregateStore(); - if( Common.IS_GNOMEKEYRING ) - objGnomeKeyring.AggregateStore(); + if( Common.IS_GNOMEKEYRING ) + objGnomeKeyring.AggregateStore(); - dialogConfirmRefresh.Destroy(); + dialogConfirmRefresh.Destroy(); - Logger.DbgLog("GUI:CasaMain.on_buttonRefreshYes_clicked() - END"); - } + Logger.DbgLog("GUI:CasaMain.on_buttonRefreshYes_clicked() - END"); + } - public void on_buttonRefreshNo_clicked(object abj, EventArgs args) - { - dialogConfirmRefresh.Destroy(); - } + public void on_buttonRefreshNo_clicked(object abj, EventArgs args) + { + dialogConfirmRefresh.Destroy(); + } + + public void on_helpbuttonRefresh_clicked(object obj, EventArgs Args) + { + Common.ShowHelpUrl("RefreshStore.htm"); + } + + ///####################################################################### + /// QUIT APPLICATION - - ///####################################################################### - /// QUIT APPLICATION - - /// - /// - /// - public void QuitApplication(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.QuitApplication() - BEGIN"); + /// + /// + /// + public void QuitApplication(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.QuitApplication() - BEGIN"); - windowMain.Destroy(); - HandleQuit(); + windowMain.Destroy(); + HandleQuit(); - Logger.DbgLog("GUI:CasaMain.QuitApplication() - END"); - } + Logger.DbgLog("GUI:CasaMain.QuitApplication() - END"); + } - ///####################################################################### - /// ADD NEW SECRET + ///####################################################################### + /// ADD NEW SECRET - /// - /// - /// - public void OnNewSecretActivated(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.NewSecret() - BEGIN"); + /// + /// + /// + public void OnNewSecretActivated(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.NewSecret() - BEGIN"); - switch(notebookStores.CurrentPage) - { - case Common.STORE_MICASA: + switch(notebookStores.CurrentPage) + { + case Common.STORE_MICASA: objMiCasa.OnNewSecretActivated(obj, args); - break; + break; - case Common.STORE_FIREFOX: + case Common.STORE_FIREFOX: break; - case Common.STORE_MOZILLA: + case Common.STORE_MOZILLA: break; - case Common.STORE_KDEWALLET: + case Common.STORE_KDEWALLET: break; - case Common.STORE_GNOMEKEYRING: + case Common.STORE_GNOMEKEYRING: break; - } + } - Logger.DbgLog("GUI:CasaMain.NewSecret() - END"); - } + Logger.DbgLog("GUI:CasaMain.NewSecret() - END"); + } - ///####################################################################### - /// ADD NEW KEY + ///####################################################################### + /// ADD NEW KEY - /// - /// - /// - public void OnNewKeyActivated(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.NewKeyValue() - BEGIN"); + /// + /// + /// + public void OnNewKeyActivated(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.NewKeyValue() - BEGIN"); - switch(notebookStores.CurrentPage) - { - case Common.STORE_MICASA: + switch(notebookStores.CurrentPage) + { + case Common.STORE_MICASA: objMiCasa.OnNewKeyActivated(obj, args); - break; + break; - case Common.STORE_FIREFOX: + case Common.STORE_FIREFOX: break; - case Common.STORE_MOZILLA: + case Common.STORE_MOZILLA: break; - case Common.STORE_KDEWALLET: + case Common.STORE_KDEWALLET: break; - case Common.STORE_GNOMEKEYRING: + case Common.STORE_GNOMEKEYRING: break; - } + } - Logger.DbgLog("GUI:CasaMain.NewKeyValue() - END"); - } + Logger.DbgLog("GUI:CasaMain.NewKeyValue() - END"); + } - ///####################################################################### - /// UI handling + ///####################################################################### + /// UI handling - public void OnLockMiCASASecrets(object sender, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.OnLockMiCASASecrets() - START"); - MiCasaRequestReply.Send(MiCasaRequestReply.VERB_LOCK_STORE); - LockGUI(); - if (mCasaTray != null) - mCasaTray.UpdateTrayIcon(true); - Logger.DbgLog("GUI:CasaMain.OnLockMiCASASecrets() - END"); - } - - public void OnUnLockMiCASASecrets(object sender, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.OnUnLockMiCASASecrets() - START"); - CommonGUI cg = new CommonGUI(); - cg.HandleUnlock(this, mCasaTray); - Logger.DbgLog("GUI:CasaMain.OnUnLockMiCASASecrets() - END"); - } - - public void OnDestroyMiCASASecrets(object sender, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.OnDestroyMiCASASecrets() - START"); - CommonGUI temp = new CommonGUI(); - temp.menuDestroyMiCasa_Activated(this, mCasaTray); - Logger.DbgLog("GUI:CasaMain.OnDestroyMiCASASecrets() - END"); - } - - - internal void LockGUI() - { - mmiLockSecrets.Sensitive = false; - mmiUnlockSecrets.Sensitive = true; - mmiDestroySecrets.Sensitive = false; - notebookStores.Sensitive = false; - mmiNew.Sensitive = false; - mmiRefresh.Sensitive = false; - mmiDebug.Sensitive = false; - mmiOptions.Sensitive = false; - mmiEdit.Sensitive = false; - } - - internal void UnlockGUI() - { - mmiLockSecrets.Sensitive = true; - mmiUnlockSecrets.Sensitive = false; - mmiDestroySecrets.Sensitive = true; - notebookStores.Sensitive = true; - mmiRefresh.Sensitive = true; - mmiDebug.Sensitive = true; - mmiOptions.Sensitive = true; - mmiEdit.Sensitive = true; - } - - - ///####################################################################### - /// VIEW KEY-VALUES - - /// - /// VIEW Key-Values - /// - public void ViewKeyValue(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.ViewKeyValue() - BEGIN"); - - switch(notebookStores.CurrentPage) - { - case Common.STORE_MICASA: - objMiCasa.ViewKeyValues(); - break; - - case Common.STORE_FIREFOX: - objFirefox.ViewKeyValues(); - break; - - case Common.STORE_MOZILLA: - objMozilla.ViewKeyValues(); - break; - - case Common.STORE_KDEWALLET: - objKdeWallet.ViewKeyValues(); - break; - - case Common.STORE_GNOMEKEYRING: - objGnomeKeyring.ViewKeyValues(); - break; - } - - Logger.DbgLog("GUI:CasaMain.ViewKeyValue() - END"); - } - - - - ///####################################################################### - /// LINK KEY-VALUE - - /// - /// LINK Key-Values - /// - public void LinkKeyValue(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.LinkKeyValue() - BEGIN"); - - switch(notebookStores.CurrentPage) - { - case Common.STORE_MICASA: - objMiCasa.ViewKeyValues(); - break; - - case Common.STORE_FIREFOX: - break; - - case Common.STORE_MOZILLA: - break; - - case Common.STORE_KDEWALLET: - break; - - case Common.STORE_GNOMEKEYRING: - break; - } - - Logger.DbgLog("GUI:CasaMain.LinkKeyValue() - END"); - } - - - - ///####################################################################### - /// COPY KEY-VALUE - - /// - /// COPY Key-Values - /// - public void CopyKeyValue(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.CopyKeyValue() - BEGIN"); - - //Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogCopyKeyValue", null); - //gxmlTemp.Autoconnect (this); - - Logger.DbgLog("GUI:CasaMain.CopyKeyValue() - END"); - } - - - - ///####################################################################### - /// DELETE SECRET - - /// - /// DELETE Secret - /// - public void DeleteSecret(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.DeleteSecret() - BEGIN"); - - switch(notebookStores.CurrentPage) - { - case Common.STORE_MICASA: - objMiCasa.OnDeleteActivated(obj, args); - break; - - case Common.STORE_FIREFOX: - break; - - case Common.STORE_MOZILLA: - break; - - case Common.STORE_KDEWALLET: - break; - - case Common.STORE_GNOMEKEYRING: - break; - } - - Logger.DbgLog("GUI:CasaMain.DeleteSecret() - END"); - } - - - ///####################################################################### - /// Reset Master Password CALLED VIA MAIN MENU - - /// - /// - /// - public void ResetMasterPassword(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.ResetMasterPassword() - BEGIN"); - - Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogResetMP", null); - gxmlTemp.Autoconnect (this); - dialogResetMP.TransientFor = windowMain; - entryOldMP.Text=""; - entryNewMP1.Text=""; - entryNewMP2.Text=""; - Logger.DbgLog("GUI:CasaMain.ResetMasterPassword() - END"); - } - - public void okbuttonResetMasterPWD_clicked(object abj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.okbuttonResetMasterPWD_clicked() - BEGIN"); - - if (entryOldMP.Text == "") + public void OnLockMiCASASecrets(object sender, EventArgs args) { - DisplayError("You must enter you current Master Password"); - return; + Logger.DbgLog("GUI:CasaMain.OnLockMiCASASecrets() - START"); + MiCasaRequestReply.Send(MiCasaRequestReply.VERB_LOCK_STORE); + LockGUI(); + if (mCasaTray != null) + mCasaTray.UpdateTrayIcon(true); + Logger.DbgLog("GUI:CasaMain.OnLockMiCASASecrets() - END"); } - // check Current MP - if (entryOldMP.Text != "") + public void OnUnLockMiCASASecrets(object sender, EventArgs args) { - int rcode = miCASA.SetMasterPassword(1, entryOldMP.Text); - if (rcode != 0) + Logger.DbgLog("GUI:CasaMain.OnUnLockMiCASASecrets() - START"); + CommonGUI cg = new CommonGUI(); + cg.HandleUnlock(this, mCasaTray); + Logger.DbgLog("GUI:CasaMain.OnUnLockMiCASASecrets() - END"); + } + + public void OnDestroyMiCASASecrets(object sender, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.OnDestroyMiCASASecrets() - START"); + CommonGUI temp = new CommonGUI(); + temp.menuDestroyMiCasa_Activated(this, mCasaTray); + Logger.DbgLog("GUI:CasaMain.OnDestroyMiCASASecrets() - END"); + } + + + internal void LockGUI() + { + mmiLockSecrets.Sensitive = false; + mmiUnlockSecrets.Sensitive = true; + mmiDestroySecrets.Sensitive = false; + notebookStores.Sensitive = false; + mmiNew.Sensitive = false; + mmiRefresh.Sensitive = false; + mmiDebug.Sensitive = false; + mmiOptions.Sensitive = false; + mmiEdit.Sensitive = false; + } + + internal void UnlockGUI() + { + mmiLockSecrets.Sensitive = true; + mmiUnlockSecrets.Sensitive = false; + mmiDestroySecrets.Sensitive = true; + notebookStores.Sensitive = true; + mmiRefresh.Sensitive = true; + mmiDebug.Sensitive = true; + mmiOptions.Sensitive = true; + mmiEdit.Sensitive = true; + } + + + ///####################################################################### + /// VIEW KEY-VALUES + + /// + /// VIEW Key-Values + /// + public void ViewKeyValue(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.ViewKeyValue() - BEGIN"); + + switch(notebookStores.CurrentPage) { - DisplayError("Current Master Password is not correct"); + case Common.STORE_MICASA: + objMiCasa.ViewKeyValues(); + break; + + case Common.STORE_FIREFOX: + objFirefox.ViewKeyValues(); + break; + + case Common.STORE_MOZILLA: + objMozilla.ViewKeyValues(); + break; + + case Common.STORE_KDEWALLET: + objKdeWallet.ViewKeyValues(); + break; + + case Common.STORE_GNOMEKEYRING: + objGnomeKeyring.ViewKeyValues(); + break; + } + + Logger.DbgLog("GUI:CasaMain.ViewKeyValue() - END"); + } + + + + ///####################################################################### + /// LINK KEY-VALUE + + /// + /// LINK Key-Values + /// + public void LinkKeyValue(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.LinkKeyValue() - BEGIN"); + + switch(notebookStores.CurrentPage) + { + case Common.STORE_MICASA: + objMiCasa.ViewKeyValues(); + break; + + case Common.STORE_FIREFOX: + break; + + case Common.STORE_MOZILLA: + break; + + case Common.STORE_KDEWALLET: + break; + + case Common.STORE_GNOMEKEYRING: + break; + } + + Logger.DbgLog("GUI:CasaMain.LinkKeyValue() - END"); + } + + + + ///####################################################################### + /// COPY KEY-VALUE + + /// + /// COPY Key-Values + /// + public void CopyKeyValue(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.CopyKeyValue() - BEGIN"); + + //Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogCopyKeyValue", null); + //gxmlTemp.Autoconnect (this); + + Logger.DbgLog("GUI:CasaMain.CopyKeyValue() - END"); + } + + + + ///####################################################################### + /// DELETE SECRET + + /// + /// DELETE Secret + /// + public void DeleteSecret(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.DeleteSecret() - BEGIN"); + + switch(notebookStores.CurrentPage) + { + case Common.STORE_MICASA: + objMiCasa.OnDeleteActivated(obj, args); + break; + + case Common.STORE_FIREFOX: + break; + + case Common.STORE_MOZILLA: + break; + + case Common.STORE_KDEWALLET: + break; + + case Common.STORE_GNOMEKEYRING: + break; + } + + Logger.DbgLog("GUI:CasaMain.DeleteSecret() - END"); + } + + + ///####################################################################### + /// Reset Master Password CALLED VIA MAIN MENU + + /// + /// + /// + public void ResetMasterPassword(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.ResetMasterPassword() - BEGIN"); + + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogResetMP", null); + gxmlTemp.Autoconnect (this); + dialogResetMP.TransientFor = windowMain; + entryOldMP.Text=""; + entryNewMP1.Text=""; + entryNewMP2.Text=""; + Logger.DbgLog("GUI:CasaMain.ResetMasterPassword() - END"); + } + + public void okbuttonResetMasterPWD_clicked(object abj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.okbuttonResetMasterPWD_clicked() - BEGIN"); + + if (entryOldMP.Text == "") + { + DisplayError("You must enter you current Master Password"); return; } - } - if (entryNewMP1.Text.Length < 8) - { - Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogShortPassword", null); - gxmlTemp.Autoconnect (this); - return; - } + // check Current MP + if (entryOldMP.Text != "") + { + int rcode = miCASA.SetMasterPassword(1, entryOldMP.Text); + if (rcode != 0) + { + DisplayError("Current Master Password is not correct"); + return; + } + } - if (entryNewMP1.Text != entryNewMP2.Text) - { - DisplayError("New Master Passwords do not match"); - return; - } + if (entryNewMP1.Text.Length < 8) + { + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogShortPassword", null); + gxmlTemp.Autoconnect (this); + return; + } + + if (entryNewMP1.Text != entryNewMP2.Text) + { + DisplayError("New Master Passwords do not match"); + return; + } - if (miCASA.ChangeMasterPassword(entryOldMP.Text, entryNewMP1.Text)) - dialogResetMP.Destroy(); - else - DisplayError("Change failed"); + if (miCASA.ChangeMasterPassword(entryOldMP.Text, entryNewMP1.Text)) + dialogResetMP.Destroy(); + else + DisplayError("Change failed"); - Logger.DbgLog("GUI:CasaMain.okbuttonResetMasterPWD_clicked() - END"); - } + Logger.DbgLog("GUI:CasaMain.okbuttonResetMasterPWD_clicked() - END"); + } - public void cancelbuttonResetMasterPWD_clicked(object abj, EventArgs args) - { - dialogResetMP.Destroy(); - } + public void cancelbuttonResetMasterPWD_clicked(object abj, EventArgs args) + { + dialogResetMP.Destroy(); + } - private void DisplayError(String sErrorMessage) - { - MessageDialog md = new MessageDialog(windowMain, - Gtk.DialogFlags.Modal, - Gtk.MessageType.Warning, - Gtk.ButtonsType.Close, - sErrorMessage); + public void on_helpbuttonResetMP_clicked(object obj, EventArgs args) + { + Common.ShowHelpUrl("CASAMasterPasswordAuthentication.htm"); + } - md.Response +=new ResponseHandler(md_Response); - //md_ResponseCloseWindow - md.Show(); + private void DisplayError(String sErrorMessage) + { + MessageDialog md = new MessageDialog(windowMain, + Gtk.DialogFlags.Modal, + Gtk.MessageType.Warning, + Gtk.ButtonsType.Close, + sErrorMessage); - } + md.Response +=new ResponseHandler(md_Response); + //md_ResponseCloseWindow + md.Show(); + + } - ///####################################################################### - /// PERSISTENT STORAGE CALLED VIA MAIN MENU + ///####################################################################### + /// PERSISTENT STORAGE CALLED VIA MAIN MENU - /// - /// - /// - public void PersistentStorage(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.PersistentStorage() - BEGIN"); + /// + /// + /// + public void PersistentStorage(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.PersistentStorage() - BEGIN"); - Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogPersistentStorage", null); - gxmlTemp.Autoconnect (this); - dialogPersistentStorage.TransientFor = windowMain; - entryMasterPassword1.Text=""; - entryMasterPassword2.Text=""; + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogPersistentStorage", null); + gxmlTemp.Autoconnect (this); + dialogPersistentStorage.TransientFor = windowMain; + entryMasterPassword1.Text=""; + entryMasterPassword2.Text=""; - if(IsMasterPasswordSet() == true) - { - entryMasterPassword1.Sensitive=false; - entryMasterPassword2.Sensitive=false; - okbuttonPersistentStorage.Sensitive=false; - } + if(IsMasterPasswordSet() == true) + { + entryMasterPassword1.Sensitive=false; + entryMasterPassword2.Sensitive=false; + okbuttonPersistentStorage.Sensitive=false; + } - Logger.DbgLog("GUI:CasaMain.PersistentStorage() - END"); - } + Logger.DbgLog("GUI:CasaMain.PersistentStorage() - END"); + } - public void okbuttonPersistentStorage_clicked(object abj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.okbuttonPersistentStorage_clicked() - BEGIN"); - - if((entryMasterPassword1.Text != "" && entryMasterPassword2.Text != "") && (entryMasterPassword1.Text == entryMasterPassword2.Text)) - { - //StorePolicyInterface.SetMasterPassword(entryMasterPassword1.Text); - miCASA.SetMasterPassword(0, entryMasterPassword1.Text); - dialogPersistentStorage.Destroy(); - } - - Logger.DbgLog("GUI:CasaMain.okbuttonPersistentStorage_clicked() - END"); - } - - public void cancelbuttonPersistentStorage_clicked(object abj, EventArgs args) - { - dialogPersistentStorage.Destroy(); - } - - - - ///####################################################################### - /// PREFERENCES - - /// - /// - /// - public void Preferences(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.Preferences() - BEGIN"); - - Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogPreferences", null); - gxmlTemp.Autoconnect (this); - dialogPreferences.SetPosition(Gtk.WindowPosition.CenterOnParent); - dialogPreferences.TransientFor = windowMain; - checkbuttonFirefox.Active=Common.IS_FIREFOX; - checkbuttonMozilla.Active=Common.IS_MOZILLA; - checkbuttonGnomeKeyring.Active=Common.IS_GNOMEKEYRING; - checkbuttonKdeWallet.Active=Common.IS_KDEWALLET; - - if (Common.IS_WINDOWS) + public void okbuttonPersistentStorage_clicked(object abj, EventArgs args) { - checkbuttonGnomeKeyring.Sensitive = false; - checkbuttonKdeWallet.Sensitive = false; + Logger.DbgLog("GUI:CasaMain.okbuttonPersistentStorage_clicked() - BEGIN"); + + if((entryMasterPassword1.Text != "" && entryMasterPassword2.Text != "") && (entryMasterPassword1.Text == entryMasterPassword2.Text)) + { + //StorePolicyInterface.SetMasterPassword(entryMasterPassword1.Text); + miCASA.SetMasterPassword(0, entryMasterPassword1.Text); + dialogPersistentStorage.Destroy(); + } + + Logger.DbgLog("GUI:CasaMain.okbuttonPersistentStorage_clicked() - END"); } - - Logger.DbgLog("GUI:CasaMain.Preferences() - END"); - } - public void okbuttonPreferences_clicked(object abj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.okbuttonPreferences_clicked() - BEGIN"); + public void cancelbuttonPersistentStorage_clicked(object abj, EventArgs args) + { + dialogPersistentStorage.Destroy(); + } + + + + ///####################################################################### + /// PREFERENCES + + /// + /// + /// + public void Preferences(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.Preferences() - BEGIN"); + + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogPreferences", null); + gxmlTemp.Autoconnect (this); + dialogPreferences.SetPosition(Gtk.WindowPosition.CenterOnParent); + dialogPreferences.TransientFor = windowMain; + checkbuttonFirefox.Active=Common.IS_FIREFOX; + checkbuttonMozilla.Active=Common.IS_MOZILLA; + checkbuttonGnomeKeyring.Active=Common.IS_GNOMEKEYRING; + checkbuttonKdeWallet.Active=Common.IS_KDEWALLET; + + if (Common.IS_WINDOWS) + { + checkbuttonGnomeKeyring.Sensitive = false; + checkbuttonKdeWallet.Sensitive = false; + } - string[] storeID = new string[]{""}; + Logger.DbgLog("GUI:CasaMain.Preferences() - END"); + } + + public void okbuttonPreferences_clicked(object abj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.okbuttonPreferences_clicked() - BEGIN"); - notebookStores.GetNthPage(Common.STORE_FIREFOX).Visible = Common.IS_FIREFOX = checkbuttonFirefox.Active; - notebookStores.GetNthPage(Common.STORE_MOZILLA).Visible = Common.IS_MOZILLA = checkbuttonMozilla.Active; - notebookStores.GetNthPage(Common.STORE_GNOMEKEYRING).Visible = Common.IS_GNOMEKEYRING = checkbuttonGnomeKeyring.Active; - notebookStores.GetNthPage(Common.STORE_KDEWALLET).Visible = Common.IS_KDEWALLET = checkbuttonKdeWallet.Active; + string[] storeID = new string[]{""}; + + notebookStores.GetNthPage(Common.STORE_FIREFOX).Visible = Common.IS_FIREFOX = checkbuttonFirefox.Active; + notebookStores.GetNthPage(Common.STORE_MOZILLA).Visible = Common.IS_MOZILLA = checkbuttonMozilla.Active; + notebookStores.GetNthPage(Common.STORE_GNOMEKEYRING).Visible = Common.IS_GNOMEKEYRING = checkbuttonGnomeKeyring.Active; + notebookStores.GetNthPage(Common.STORE_KDEWALLET).Visible = Common.IS_KDEWALLET = checkbuttonKdeWallet.Active; - StorePolicyInterface.SetAggregationPolicy(Common.STORE_FIREFOX, Common.IS_FIREFOX, storeID, 1); - StorePolicyInterface.SetAggregationPolicy(Common.STORE_MOZILLA, Common.IS_MOZILLA, storeID, 1); - StorePolicyInterface.SetAggregationPolicy(Common.STORE_KDEWALLET, Common.IS_KDEWALLET, storeID, 1); - StorePolicyInterface.SetAggregationPolicy(Common.STORE_GNOMEKEYRING, Common.IS_GNOMEKEYRING, storeID, 1); + StorePolicyInterface.SetAggregationPolicy(Common.STORE_FIREFOX, Common.IS_FIREFOX, storeID, 1); + StorePolicyInterface.SetAggregationPolicy(Common.STORE_MOZILLA, Common.IS_MOZILLA, storeID, 1); + StorePolicyInterface.SetAggregationPolicy(Common.STORE_KDEWALLET, Common.IS_KDEWALLET, storeID, 1); + StorePolicyInterface.SetAggregationPolicy(Common.STORE_GNOMEKEYRING, Common.IS_GNOMEKEYRING, storeID, 1); - StorePolicyInterface.SaveAggregationPolicy(); + StorePolicyInterface.SaveAggregationPolicy(); - if(Common.IS_FIREFOX) - { - if( null == objFirefox ) - objFirefox = new Firefox(); + if(Common.IS_FIREFOX) + { + if( null == objFirefox ) + objFirefox = new Firefox(); - objFirefox.AggregateStore(); - } - if(Common.IS_MOZILLA) - { - if( null == objMozilla ) - objMozilla = new Mozilla(); + objFirefox.AggregateStore(); + } + if(Common.IS_MOZILLA) + { + if( null == objMozilla ) + objMozilla = new Mozilla(); - objMozilla.AggregateStore(); - } - if(Common.IS_KDEWALLET) - { - if( null == objKdeWallet ) - objKdeWallet = new KdeWallet(); + objMozilla.AggregateStore(); + } + if(Common.IS_KDEWALLET) + { + if( null == objKdeWallet ) + objKdeWallet = new KdeWallet(); - objKdeWallet.AggregateStore(); - } - if(Common.IS_GNOMEKEYRING) - { - if( null == objGnomeKeyring ) - objGnomeKeyring = new GnomeKeyring(); + objKdeWallet.AggregateStore(); + } + if(Common.IS_GNOMEKEYRING) + { + if( null == objGnomeKeyring ) + objGnomeKeyring = new GnomeKeyring(); - objGnomeKeyring.AggregateStore(); - } + objGnomeKeyring.AggregateStore(); + } - dialogPreferences.Destroy(); + dialogPreferences.Destroy(); - Logger.DbgLog("GUI:CasaMain.okbuttonPreferences_clicked() - END"); - } + Logger.DbgLog("GUI:CasaMain.okbuttonPreferences_clicked() - END"); + } - public void cancelbuttonPreferences_clicked(object abj, EventArgs args) - { - dialogPreferences.Destroy(); - } + public void cancelbuttonPreferences_clicked(object abj, EventArgs args) + { + dialogPreferences.Destroy(); + } - private bool IsTraySetForStartup() - { + public void on_helpbuttonPreferences_clicked(object obj, EventArgs args) + { + Common.ShowHelpUrl("Preferences.htm"); + } + + + /* + private bool IsTraySetForStartup() + { #if W32 - string sStartup = CommonGUI.ReadRegKey( - Registry.CurrentUser, - "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", - "CASA Tray"); + string sStartup = CommonGUI.ReadRegKey( + Registry.CurrentUser, + "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", + "CASA Tray"); - if (sStartup == null || sStartup.Length < 1) - return false; - else - return true; + if (sStartup == null || sStartup.Length < 1) + return false; + else + return true; #endif #if LINUX // TODO check startup script for the user. return true; #endif - } - - - private static void md_ResponseCloseWindow(object o, ResponseArgs args) - { - MessageDialog md = (MessageDialog)o; - if (md != null) - { - md.Destroy(); - Application.Quit(); } - } + */ + + + private static void md_ResponseCloseWindow(object o, ResponseArgs args) + { + MessageDialog md = (MessageDialog)o; + if (md != null) + { + md.Destroy(); + Application.Quit(); + } + } - private void PromptUserForStartup() - { - // prompt user - MessageDialog md=new MessageDialog(null,Gtk.DialogFlags.Modal, - Gtk.MessageType.Question, - Gtk.ButtonsType.YesNo, - "Show the Tray Icon at startup?"); - - md.SetPosition(Gtk.WindowPosition.Center); - md.Response +=new ResponseHandler(md_Response); - md.Modal = true; - md.SetIconFromFile(Common.CASAICONS); - md.Show(); - } - - private void md_Response(object o, ResponseArgs args) - { - if (args.ResponseId.Equals(Gtk.ResponseType.Yes)) + private void PromptUserForStartup() { + // prompt user + MessageDialog md=new MessageDialog(null,Gtk.DialogFlags.Modal, + Gtk.MessageType.Question, + Gtk.ButtonsType.YesNo, + "Show the Tray Icon at startup?"); + + md.SetPosition(Gtk.WindowPosition.Center); + md.Response +=new ResponseHandler(md_Response); + md.Modal = true; + md.SetIconFromFile(Common.CASAICONS); + md.Show(); + } + + private void md_Response(object o, ResponseArgs args) + { + if (args.ResponseId.Equals(Gtk.ResponseType.Yes)) + { #if W32 - // get our program path - String sPath = "\"" +Environment.GetEnvironmentVariable("ProgramFiles")+ - "\\Novell\\CASA\\bin\\CASAManager.exe\" -tray"; + // get our program path + String sPath = "\"" +Environment.GetEnvironmentVariable("ProgramFiles")+ + "\\Novell\\CASA\\bin\\CASAManager.exe\" -tray"; - CommonGUI.WriteRegKey(Registry.CurrentUser, - "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", - "CASA Tray", - sPath); + CommonGUI.WriteRegKey(Registry.CurrentUser, + "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", + "CASA Tray", + sPath); #endif - // TODO: Set startup script for the user - } - - MessageDialog md = (MessageDialog)o; - if (md != null) - { - md.Destroy(); - } - } - - ///####################################################################### - /// DEBUG - - /// - /// - /// - public void on_create_sample_secrets1_activate(object obj, EventArgs arg) - { - MiCasaRequestReply.Send(MiCasaRequestReply.VERB_CREATE_TEST_SECRETS, null, null, null, null); - //StoreDataInterface.RefreshAllStores(); - objMiCasa.AggregateStore(); - } - - public void on_remove_test_secrets1_activate(object obj, EventArgs args) - { - MiCasaRequestReply.Send(MiCasaRequestReply.VERB_REMOVE_TEST_SECRETS, null, null, null, null); - //StoreDataInterface.RefreshAllStores(); - objMiCasa.AggregateStore(); - } - - ///####################################################################### - /// ABOUT - - /// - /// - /// - public void About(object obj, EventArgs args) - { - Logger.DbgLog("GUI:CasaMain.About() - BEGIN"); - - Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogAbout", null); - gxmlTemp.Autoconnect (this); - dialogAbout.TransientFor = windowMain; - Logger.DbgLog("GUI:CasaMain.About() - END"); - } - - public void closebuttonAbout_clicked(object obj, EventArgs args) - { - dialogAbout.Destroy(); - } - - - ///####################################################################### - /// SINGLE INSTANCE DIALOG CLOSE HANDLER - - /// - /// dislogSingleInstance delete window handler - /// - public void on_dialogSingleInstance_delete_event(object obj, DeleteEventArgs args) - { - dialogSingleInstance.Destroy(); - HandleQuit(); - //Application.Quit(); - } - - public void on_buttonSIClose_clicked(object obj, EventArgs args) - { - dialogSingleInstance.Destroy(); - HandleQuit(); - //Application.Quit(); - } - - ///####################################################################### - /// WINDOW MAIN CLOSE HANDLER - - /// - /// MainWindow delete window handler - /// - public void OnWindowMainDeleted(object obj, DeleteEventArgs args) - { - Logger.DbgLog("GUI:CasaMain.OnWindowMainDeleted() - BEGIN"); - - windowMain.Destroy(); - HandleQuit(); - //Gtk.Application.Quit (); - args.RetVal = true; - - Logger.DbgLog("GUI:CasaMain.OnWindowMainDeleted() - END"); - } - - private void HandleQuit() - { - if (mCasaTray != null) - { - if (m_bNotifyUser) - { - // prompt user - MessageDialog md=new MessageDialog(null,Gtk.DialogFlags.Modal, - Gtk.MessageType.Info, - Gtk.ButtonsType.Close, - "CASA Manager will continue to run in the task bar"); - - md.SetPosition(Gtk.WindowPosition.Center); - md.Response +=new ResponseHandler(md_Response); - md.Modal = true; - md.SetIconFromFile(Common.CASAICONS); - md.Show(); - - m_bNotifyUser = false; + // TODO: Set startup script for the user } - mCasaTray.CasaManagerQuit(); - return; + MessageDialog md = (MessageDialog)o; + if (md != null) + { + md.Destroy(); + } + } + + ///####################################################################### + /// DEBUG + + /// + /// + /// + public void on_create_sample_secrets1_activate(object obj, EventArgs arg) + { + MiCasaRequestReply.Send(MiCasaRequestReply.VERB_CREATE_TEST_SECRETS, null, null, null, null); + //StoreDataInterface.RefreshAllStores(); + objMiCasa.AggregateStore(); + } + + public void on_remove_test_secrets1_activate(object obj, EventArgs args) + { + MiCasaRequestReply.Send(MiCasaRequestReply.VERB_REMOVE_TEST_SECRETS, null, null, null, null); + //StoreDataInterface.RefreshAllStores(); + objMiCasa.AggregateStore(); + } + + ///####################################################################### + /// ABOUT + + /// + /// + /// + public void About(object obj, EventArgs args) + { + Logger.DbgLog("GUI:CasaMain.About() - BEGIN"); + + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogAbout", null); + gxmlTemp.Autoconnect (this); + dialogAbout.TransientFor = windowMain; + Logger.DbgLog("GUI:CasaMain.About() - END"); + } + + public void closebuttonAbout_clicked(object obj, EventArgs args) + { + dialogAbout.Destroy(); + } + + + public void on_buttonNovell_clicked(object obj, EventArgs args) + { + Common.ShowUrl("http://www.novell.com"); + } + + ///####################################################################### + /// SINGLE INSTANCE DIALOG CLOSE HANDLER + + /// + /// dislogSingleInstance delete window handler + /// + public void on_dialogSingleInstance_delete_event(object obj, DeleteEventArgs args) + { + dialogSingleInstance.Destroy(); + HandleQuit(); + //Application.Quit(); + } + + public void on_buttonSIClose_clicked(object obj, EventArgs args) + { + dialogSingleInstance.Destroy(); + HandleQuit(); + //Application.Quit(); + } + + ///####################################################################### + /// WINDOW MAIN CLOSE HANDLER + + /// + /// MainWindow delete window handler + /// + public void OnWindowMainDeleted(object obj, DeleteEventArgs args) + { + Logger.DbgLog("GUI:CasaMain.OnWindowMainDeleted() - BEGIN"); + + windowMain.Destroy(); + HandleQuit(); + //Gtk.Application.Quit (); + args.RetVal = true; + + Logger.DbgLog("GUI:CasaMain.OnWindowMainDeleted() - END"); + } + + private void HandleQuit() + { + if (mCasaTray != null) + { + if (m_bNotifyUser) + { + // prompt user + MessageDialog md=new MessageDialog(null,Gtk.DialogFlags.Modal, + Gtk.MessageType.Info, + Gtk.ButtonsType.Close, + "CASA Manager will continue to run in the task bar"); + + md.SetPosition(Gtk.WindowPosition.Center); + md.Response +=new ResponseHandler(md_Response); + md.Modal = true; + md.SetIconFromFile(Common.CASAICONS); + md.Show(); + + m_bNotifyUser = false; + } + + mCasaTray.CasaManagerQuit(); + return; + } + else + Application.Quit(); } - else - Application.Quit(); - } - ///####################################################################### - /// WINDOW MAIN FOCUS - /// - internal void Focus() - { - windowMain.Present(); - } + ///####################################################################### + /// WINDOW MAIN FOCUS + /// + internal void Focus() + { + windowMain.Present(); + } - ///####################################################################### - /// LOGGING WINDOW operations - /// + ///####################################################################### + /// LOGGING WINDOW operations + /// - public void on_view_log_file1_activate(object obj, EventArgs args) - { + public void on_view_log_file1_activate(object obj, EventArgs args) + { - } + } - public void on_enable_logging1_activate(object obj, EventArgs args) - { - Gtk.CheckMenuItem miLog = (Gtk.CheckMenuItem)obj; - if (miLog.Active) - OpenLogWindow(); - else - CloseLogWindow(); - } + public void on_enable_logging1_activate(object obj, EventArgs args) + { + Gtk.CheckMenuItem miLog = (Gtk.CheckMenuItem)obj; + if (miLog.Active) + OpenLogWindow(); + else + CloseLogWindow(); + } - internal void OpenLogWindow() - { - Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogLog", null); - gxmlTemp.Autoconnect (this); + internal void OpenLogWindow() + { + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogLog", null); + gxmlTemp.Autoconnect (this); - Gtk.TreeViewColumn col1 = new Gtk.TreeViewColumn("", new Gtk.CellRendererText(), "text", 0); - tvLog.AppendColumn(col1); - Logger.ActivateLogWindow(tvLog); - } + Gtk.TreeViewColumn col1 = new Gtk.TreeViewColumn("", new Gtk.CellRendererText(), "text", 0); + tvLog.AppendColumn(col1); + Logger.ActivateLogWindow(tvLog); + } + + internal void CloseLogWindow() + { + Logger.StopLogWindow(); + dialogLogin.Dispose(); + dialogLogin.Destroy(); + } + + + ///########################################################################### + /// Help Handlers + ///########################################################################### + public void OnMenuHelpActivate(object sender, EventArgs args) + { + Common.ShowHelpUrl("Contents.htm"); + } - internal void CloseLogWindow() - { - Logger.StopLogWindow(); - dialogLogin.Dispose(); - dialogLogin.Destroy(); } -} } ///########################################################################### /// END OF FILE diff --git a/c_gui/Common.cs b/c_gui/Common.cs index 4c0446fa..8accb36c 100644 --- a/c_gui/Common.cs +++ b/c_gui/Common.cs @@ -81,6 +81,10 @@ public class Common INDEX_NATIVEINFO_SYNC = 2, INDEX_NATIVEINFO_SYNCTYPE = 3, INDEX_NATIVEINFO_MODIFIEDTIME = 4; + + + public static string LINUX_HELP_PATH = "file:///opt/novell/CASA/help/"; + public static string WINDOWS_HELP_PATH = "..\\help\\"; ///############################################################## /// ARG CONSTANTS @@ -267,6 +271,60 @@ public class Common return false; } + private static string GetLocale() + { + if (IS_LINUX) + return "en/"; + else + return "en\\"; + } + + private static string GetHelpPath() + { + if (IS_LINUX) + return LINUX_HELP_PATH; + else + return WINDOWS_HELP_PATH; + } + + public static bool ShowHelpUrl(string sHelpFilename) + { + // get absolute path and locale + string sUrl = GetHelpPath() + GetLocale() + sHelpFilename; + return ShowUrl(sUrl); + } + + + public static bool ShowUrl(string url) + { + + Process urlShowProcess = new Process(); + + if (Common.IS_LINUX) + { + urlShowProcess.StartInfo.FileName = "gnome-open"; + urlShowProcess.StartInfo.Arguments = url; + } + else + urlShowProcess.StartInfo.FileName = url; + + try + { + urlShowProcess.Start(); + urlShowProcess.WaitForExit(); + } + catch (Exception e) + { + Logger.DbgLog(e.Message); + Logger.DbgLog(e.StackTrace); + return false; + } + + if (urlShowProcess.ExitCode == 0) + return true; + else + return false; + } } } diff --git a/c_gui/CommonGUI.cs b/c_gui/CommonGUI.cs index bbf153a0..9cebadab 100644 --- a/c_gui/CommonGUI.cs +++ b/c_gui/CommonGUI.cs @@ -71,6 +71,11 @@ namespace Novell.CASA.GUI dialogLogin.Show(); } + public void on_helpbuttonAuthentication_clicked(object sender, EventArgs args) + { + Common.ShowHelpUrl("CASAMasterPasswordAuthentication.htm"); + } + internal void menuDestroyMiCasa_Activated(CasaMain casaMain, CasaTray tray) { mCasaInstance = casaMain; diff --git a/c_gui/MiCasa.cs b/c_gui/MiCasa.cs index fbf64bba..f9e1d378 100644 --- a/c_gui/MiCasa.cs +++ b/c_gui/MiCasa.cs @@ -376,6 +376,11 @@ public class MiCasa : Store Logger.DbgLog("GUI:MiCasa.OnKeyValueEdited() - END"); } + + public void on_buttonhelpEditSecret_clicked(object obj, EventArgs args) + { + Common.ShowHelpUrl("EditingSecrets.html"); + } /// /// ADD BUTTON CLICKED @@ -540,6 +545,11 @@ public class MiCasa : Store entryMasterPassword3.HasFocus = true; } } + + public void on_helpbuttonAuthentication_clicked(object obj, EventArgs args) + { + Common.ShowHelpUrl("CASAMasterPasswordAuthentication.htm"); + } /// /// MANAGE SECRET-ID DIALOG OK-BUTTON CLICKED @@ -796,15 +806,18 @@ public class MiCasa : Store Logger.DbgLog("GUI:MiCasa.on_buttonNewOk_clicked() - END"); } - - + public void on_buttonNewCancel_clicked(object obj, EventArgs args) { dialogNewSecret.Destroy(); } + + public void on_helpbuttonNewSecret_clicked(object obj, EventArgs args) + { + Common.ShowHelpUrl("AddNewSecrets.htm"); + } + - - ///####################################################################### /// LINK @@ -830,6 +843,10 @@ public class MiCasa : Store } + public void on_helpbuttonLinkKeys_clicked(object obj, EventArgs args) + { + Common.ShowHelpUrl("LinkingSecrets.htm"); + } ///####################################################################### diff --git a/c_gui/help/en/AddNewSecrets.htm b/c_gui/help/en/AddNewSecrets.htm new file mode 100644 index 00000000..75585426 --- /dev/null +++ b/c_gui/help/en/AddNewSecrets.htm @@ -0,0 +1,63 @@ + + + + Novell® CASA Manager + + + + + +
+
+
+ + + +
Adding New Secrets
+ + +

CASA enables you to manually create new secrets or to + manage secrets that have been previously created by programs that integrate + with CASA. To manually create a new secret, use the following procedure:

+
    +
  1. In CASA Manager, click File > New > New Secret
  2. +
  3. Type the identifying name of the new secret in the Secret ID field, for + example, “Example Secret.”
  4. +
  5. Type the name of the key and its value in the Key and Value fields, + for example, Key: “Password,” and Value: “testpassword.” + The asterisk (*) is the only restricted character in both the Key and Value fields.
  6. +
  7. Click the + button to add the newly formed Key-Value pair for the + new secret.
  8. +
  9. By default, to safe guard secrets, values are shown as asterisks (*). + To show values in clear text, select "Show Values in clear text", and + enter your master password to enable a single instance display + of the value in the Value field.
  10. +
  11. Click OK to add the new secret, with its corresponding Key-Value pair, + to the credential store. The secret will now display in the Secret-ID window, + indicating that it has been added to the miCASA credential store.
  12. +
+

See also Editing Secrets.

+ +
+ + Refreshing Credentials Stores +

Refresh Stores in CASA Manager is used to reload all Secrets from the configured stores. + The miCASA store is supported on Windows* and Linux*. KDE Wallet and GNOME* + Keyring are additional stores supported in Linux*.

+

A trademark symbol (®, TM, etc.) denotes a Novell trademark. + An asterisk (*) denotes a third-party trademark. For information on trademarks, + see Legal Notices. + +

+ +

+
+ + \ No newline at end of file diff --git a/c_gui/help/en/CASAMasterPasswordAuthentication.htm b/c_gui/help/en/CASAMasterPasswordAuthentication.htm new file mode 100644 index 00000000..c3c95170 --- /dev/null +++ b/c_gui/help/en/CASAMasterPasswordAuthentication.htm @@ -0,0 +1,54 @@ + + + + +Novell® CASA Manager + + + + + + +
+
+
+ + + +
Setting Master Password
+ + +

When you start CASA Manager, you are prompted to + enter a master password. You are prompted for your master password when + displaying the values of secrets. The master password must be at least 8 characters + long.

+ Your desktop password and master password are used to encypt your secrets + and store them on your computer. When you login to the computer, CASA will decrypt + the saved secrets using your desktop password and make them available for + applications integrated with CASA. + If your desktop password changes, you must run CASA Manager and enter your master + password before CASA can decrypt your saved secrets. + + You can change the master password by using the following procedure from the main CASA Manager + screen:

+
    +
  1. Click Options > Change Master Password.
  2. +
  3. Enter your current master password, Enter your new master password, re-enter + your new master password, then click OK.
  4. +
+ + +

Important: To prevent unauthorized access to your credential stores, + always create confidential passwords that are not easily discovered.

+ + +
+
+ + \ No newline at end of file diff --git a/c_gui/help/en/Contents.htm b/c_gui/help/en/Contents.htm new file mode 100644 index 00000000..8cfbf66a --- /dev/null +++ b/c_gui/help/en/Contents.htm @@ -0,0 +1,61 @@ + + + + Novell® CASA Manager + + + + + +
+
+
+ +
Contents
+ +

Common Authentication Service Adapter (CASA) is the common + cross-platform foundation for authentication and single sign-on services for + Novell® Linux* Desktop, Microsoft* Windows*, and Macintosh* OS 10 operating + systems. CASA Manageris the graphical user interface that enables you to access + and manage the authentication credentials (secrets) of the programs and services + installed any any of these platforms.

+

This Help file contains the following topics:

+ + + +

Important: Because CASA Manager collects and displays security credentials + from secure applications running on your system, this software should not + be used in any public environment where security might be compromised. In + addition, because CASA is integrated with your workstation login and other + resident applications that require authentication credentials, you should + create confidential passwords that are not easily broken in order to prevent + unauthorized access.

+ +
A trademark symbol (®, TM, etc.) denotes a Novell trademark. + An asterisk (*) denotes a third-party trademark. For information on trademarks, + see Legal Notices.
+

+
+
+ + \ No newline at end of file diff --git a/c_gui/help/en/DestroyingSecrets.htm b/c_gui/help/en/DestroyingSecrets.htm new file mode 100644 index 00000000..3ab1dd99 --- /dev/null +++ b/c_gui/help/en/DestroyingSecrets.htm @@ -0,0 +1,34 @@ + + + + Novell® CASA Manager + + + + + +
+
+
+ + + +
Destroying Secrets
+ +

Use the following procedure to clear your cache and destroy + all credentials that are stored in memory:

+
    +
  • Click File > Destroy Secrets, then click OK.
  • +
+

You can restore your secrets manually by creating new + secrets or automatically by rebooting your system, or by installing new applications + and refreshing credential stores.

+
+ + \ No newline at end of file diff --git a/c_gui/help/en/EditingSecrets.html b/c_gui/help/en/EditingSecrets.html new file mode 100644 index 00000000..cac430d5 --- /dev/null +++ b/c_gui/help/en/EditingSecrets.html @@ -0,0 +1,47 @@ + + + + Novell® CASA Manager + + + + + +
+
+
+ + + +
Editing Secrets
+ + +

You edit a secret by adding new Key-Value pairs or changing + existing Key-Value pairs:
+

+
    +
  1. In the main Secret-ID window, double-click the secret you want to edit.
    +
  2. +
  3. Type a second password key and corresponding password value (for example, + Password2 and testpassword2) in the Key and Value fields, then click the + + button.
    + In this example, from the new Password2 key, the value is encrypted and + displays as asterisks. To show the value in clear text, click Show Values + in Clear Text, then enter your master password.
    +
  4. +
  5. To edit the password value, click the Value field in the Key-Value pairs + window, type your new value, then click OK. The new password value is saved + in the miCASA credential store.
    + After they are created, Secret ID names cannot be edited.
  6. +
+ +

+
+ + \ No newline at end of file diff --git a/c_gui/help/en/LinkA.gif b/c_gui/help/en/LinkA.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bcdb758bf6f0899eb7cb78e4f5d380fdf7764f9 GIT binary patch literal 53890 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 + + + Novell® CASA Manager + + + + + +
+
+
+ + + +
Linking Secrets
+ +

You can link two or more secrets so that their respective + passwords or key values are synchronized simultaneously. For example, you + can link the password of one secret to the password of another secret, all of the + keys with one secret to each other, or any combination to synchronize management + of all your secrets.

+

Currently, CASA provides only the ability to link keys + within the miCASA store. Link secrets by using the Link feature from the + CASA Manager:

+
    +
  1. Press the F2 key or click Edit > Link to open the Manage Secrets and + Key-Value pairs window.
  2. +
  3. Double click on the Key field to open the Link management + window. This utility enables you to link the keys of any secrets contained + in your miCASA store. +
  4. Click the Secret-ID component you want to link.
  5. +
  6. Click the Key you want to link, click the Key value you want to link, + then click the + Button to link the selected Key-Value pair.
  7. +
  8. Repeat Step 4 to add and link as many secrets as you want. The status + of your linked secrets is displayed in the Existing Linked Keys window.
  9. +
  10. To verify if a secret is linked, view its status in the Key-Value pairs + window. The Link field displays either Yes or No. Verify by following any + one of these steps:
    + * Double-click the secret.
    + * Right-click the secret > Click View.
    + * Press F2.
  11. +
  12. To unlink selected secrets, click any of the Secret-ID components listed + in the Existing Linked Keys window, then click the — button. The selected + secret is deleted from the Existing Linked Keys window.
  13. +
+ +

+
+ + \ No newline at end of file diff --git a/c_gui/help/en/Persistent Storage.htm b/c_gui/help/en/Persistent Storage.htm new file mode 100644 index 00000000..4438ad21 --- /dev/null +++ b/c_gui/help/en/Persistent Storage.htm @@ -0,0 +1,37 @@ + + + + Novell® CASA Manager + + + + + +
+
+
+ + + +
Persistent Storage
+ + +

CASA automatically saves your secrets on your computer + and retrieves them the next time you login. Your secrets are encrypted using + the password used for login, as well as the master password required to use + CASA Manager. Should the desktop password change, you will need to enter your + master password to decrypt your saved secrets. + See also Setting + Master Password.

+ + +

+
+ + \ No newline at end of file diff --git a/c_gui/help/en/Preferences.htm b/c_gui/help/en/Preferences.htm new file mode 100644 index 00000000..640448e1 --- /dev/null +++ b/c_gui/help/en/Preferences.htm @@ -0,0 +1,46 @@ + + + + +Novell® CASA Manager + + + + + + +
+
+
+ + + +
Preferences
+ + +

This option is active only when CASA is installed in a + Linux* environment. Linux provides support for miCASA, KDE Wallet, GNOME* + Keyring, or all three credential stores.

+

Use the following procedure to specify which credential + stores you want to use:

+
    +
  1. From the CASA Manager page, Click Options > Preferences
  2. +
  3. Select which credential stores you wish to use (miCASA, KDE Wallet, GNOME + Keyring).
  4. +
+

In Windows*, miCASA is the only credential store available, so references + to KDE Wallet and GNOME Keyring are inactive. +

A trademark symbol (®, TM, etc.) denotes a Novell trademark. An asterisk + (*) denotes a third-party trademark. For information on trademarks, see Legal Notices. + +

+
+ + \ No newline at end of file diff --git a/c_gui/help/en/UnlockSecrets.htm b/c_gui/help/en/UnlockSecrets.htm new file mode 100644 index 00000000..ad8bb2b7 --- /dev/null +++ b/c_gui/help/en/UnlockSecrets.htm @@ -0,0 +1,38 @@ + + + + Novell® CASA Manager + + + + + +
+
+
+ + + +
Locking and Unlocking Secrets
+ +

To prevent individuals and other applications from viewing + or manipulating your secrets, CASA enables you to lock secrets, which temporarily + disables the functionality of CASA.

+
    +
  1. Click File > Lock Secrets. The credential store tab (miCASA) and cached + secrets are dimmed when CASA is locked.
  2. +
  3. To unlock and restore functionality to CASA:
  4. +
  5. Click File > Unlock Secrets.
  6. +
  7. Enter your master password.
  8. +
+ +

+
+ + \ No newline at end of file diff --git a/c_gui/help/en/ViewSecrets.htm b/c_gui/help/en/ViewSecrets.htm new file mode 100644 index 00000000..56fbcbe6 --- /dev/null +++ b/c_gui/help/en/ViewSecrets.htm @@ -0,0 +1,38 @@ + + + + Novell® CASA Manager + + + + + +
+
+
+ + + +
Viewing Secret Values
+ + +

You can view the Key-Value pairs of all secrets cached + in the miCASA credential store.

+
    +
  1. In the main Secret-ID window, click the secret you want to view.
  2. +
  3. Click Edit > View or Press F2.
  4. +
  5. By default, the key values are encrypted and displayed as asterisks. To + show the value in clear text, click Show Values in Clear Text, then enter + your master password.
  6. +
+ +

+
+ + \ No newline at end of file diff --git a/c_gui/help/en/en.zip b/c_gui/help/en/en.zip new file mode 100644 index 0000000000000000000000000000000000000000..ff33e28d542d6f5a5a5f66b046e9a2d07610c664 GIT binary patch literal 75155 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%0A>^FFcG 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 L-wxk{AQ1BZQKT<~ literal 0 HcmV?d00001 diff --git a/c_gui/help/en/hf_style.css b/c_gui/help/en/hf_style.css new file mode 100644 index 00000000..4468d5a5 --- /dev/null +++ b/c_gui/help/en/hf_style.css @@ -0,0 +1,157 @@ +a { color: #039; text-decoration: underline } +body { color: black; font-family: "Trebuchet MS", Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: white } +th, tr, td, table { font-family: "Trebuchet MS", Arial, Helvetica, Geneva, Swiss, SunSans-Regular } +p, li, ol, ul, td { font-size: 0.9em } +td label { font-size: 0.85em } +label { font-size: 0.765em; } + +h1 { font-weight: bold; font-size: 1.3em; line-height: 1.3em; margin-bottom: 0.6em } +h2 { font-weight: bold; font-size: 1.2em; line-height: 1.2em; margin-bottom: 0.4em } +h3 { font-weight: bold; font-size: 1em; line-height: 1.1em; margin-bottom: 0.2em } +h4 { font-weight: bold; font-size: 0.85em; line-height: 1em; margin-bottom: 0.1em } + +img.floatright { float: right } +img.margin1 { margin: 1px } +img.margin2 { margin: 2px } +img.margin4 { margin: 4px } +img.margin5r { margin-right: 5px } +img.margin5l { margin-left: 5px } +img.margin6 { margin: 6px } +img.margin8 { margin: 8px } +img.margin10 { margin: 10px } +img.margin10r { margin-right: 10px } +img.margin10l { margin-left: 10px; margin-right: 5px } + +span.tab1u { color: black; } +span.tab2u { text-decoration: underline } +span.tab2s { text-decoration: underline } + +.activitycolor { background-color: #e8e887 } +.allcaps { color: black; font-style: normal; font-weight: 500; font-size: 0.7em; text-transform: uppercase; letter-spacing: 0.2em } +.errorlink { color: #c82727; font-weight: normal; margin-top: 2px } +.linktrialversion { color: #c82727; font-style: normal; font-weight: normal; font-size: 0.85em; text-decoration: underline } +.errorhead { color: #c82727; font-style: normal; font-weight: 800; font-size: 1.2em; line-height: 1.5em; margin-bottom: 0.7em } + +.formcolumnhead1 { color: black; font-weight: bold; font-size: 0.7em; text-align: center } +.formhead1 { color: white; font-weight: bold; font-size: 1em; background-color: #458ab9; text-align: left; text-indent: 0.2em; letter-spacing: 0.05em; vertical-align: middle; padding: 0.2em } +.formhead2 { color: white; font-weight: bold; font-size: 0.8em; line-height: 1.1em; background-color: #458ab9; text-align: left; text-indent: 0.5em; letter-spacing: 0.1em; vertical-align: middle } +.menuhead1 { color: white; font-weight: 600; font-size: 0.7em; line-height: 1em; background-color: #458ab9; text-align: center; text-transform: uppercase; letter-spacing: 0.1em; vertical-align: middle; padding: 0.2em } +.formhead1b { color: white; font-weight: bold; font-size: 1em; line-height: 1.2em; background-color: #458ab9; text-align: left; text-indent: 0.5em; vertical-align: middle } +.formdescriptext { color: #4d6d8b; font-size: 0.8em; margin-left: 1em } +.formdescriptextml0 { color: #4d6d8b; font-size: 0.8em } +.instructions { color: #4d6d8b; font-size: 0.8em } +.head1 { color: black; font-weight: bold; font-size: 1.3em; line-height: 1.3em; margin-bottom: 0.6em } +.head1a { color: #663; font-weight: bold; font-size: 1.3em; line-height: 1.3em; margin-bottom: 0.6em; margin-left: 1em } +.head1b { color: black; font-weight: bold; font-size: 1.3em; line-height: 1.3em } +.head1r { color: #e10000; font-weight: normal; font-size: 1.3em } +.head1w { color: white; font-weight: bold; font-size: 1.3em; line-height: 1.3em } + +.head2 { color: black; font-weight: bold; font-size: 1.2em; margin-top: 0.4em; margin-bottom: 1.2em } +.head2a { color: #663; font-weight: bold; font-size: 1.2em; margin-top: 0.4em } +.head2b { color: black; font-weight: 600; font-size: 1.2em; letter-spacing: 0.1em; margin-top: 0.4em; margin-bottom: 0.4em; border-bottom: 2px solid #458ab9 } +.head2tm6 { color: black; font-weight: bold; font-size: 1.2em; margin-top: 0.6em } +.head2tm8 { color: black; font-weight: bold; font-size: 1.2em; margin-top: 0.8em } +.head2w { color: #fff; font-weight: bold; font-size: 1.2em; } +.head2r { color: #e10000; font-weight: normal; font-size: 1.2em; margin-top: 0.5em } +.head2indent { color: black; font-weight: bold; font-size: 1.2em; margin-top: 0.4em; margin-left: 0.5em } + +.head3 { color: black; font-weight: bold; font-size: 1em; margin-top: 0.3em; margin-bottom: 1em } +.head3a { color: #663; font-weight: bold; font-size: 1em; margin-top: 0.3em } +.head3b { color: black; font-weight: bold; font-size: 1em; letter-spacing: 0.1em; margin-top: 0.4em; margin-bottom: 0.4em; border-bottom: 2px solid #458ab9 } +.head3d { color: black; font-weight: bold; font-size: 1em } +.head3center { color: black; font-weight: bold; font-size: 1em; text-align: center } +.head3indent { color: black; font-weight: bold; font-size: 1em; margin-top: 0.3em; margin-left: 1em } +.head3tm6 { color: black; font-weight: bold; font-size: 1em; margin-top: 0.6em; margin-bottom: 0.1em } +.head3tm8 { color: black; font-weight: bold; font-size: 1em; margin-top: 0.8em; margin-bottom: 0.2em } +.head3w { color: #fff; font-weight: bold; font-size: 1em } +.head3r { color: #e10000; font-weight: bold; font-size: 1em; letter-spacing: 0.05em; margin-top: 0.75em } + +.head4 { color: black; font-weight: bold; font-size: 0.85em; margin-top: 0.5em; margin-bottom: 0.2em; margin-left: 1em;} +.head4center { color: black; font-weight: bold; font-size: 0.85em; text-align: center } +.head4b { color: #663; font-weight: bold; font-size: 0.85em; margin-top: 0.2em } +.head4tm6 { color: black; font-weight: bold; font-size: 0.85em; margin-top: 0.6em; margin-bottom: 0.1em } +.head4tm8 { color: black; font-weight: bold; font-size: 0.85em; margin-top: 0.8em; margin-bottom: 0.2em } +.head4margin4 { color: black; font-weight: bold; font-size: 0.85em; background-color: #dfddd5; margin: 0.4em } + +.head5 { color: black; font-weight: 600; font-size: 0.75em; margin-top: 0.2em; margin-left: 2em; } +.head5a { color: black; font-weight: 600; font-size: 0.75em; margin-top: 0.2em } +.head5b { color: #663; font-weight: 600; font-size: 0.75em; margin-top: 0.2em; margin-left: 1em } +.head5tm6 { color: black; font-weight: 600; font-size: 0.75em; margin-top: 0.6em; margin-left: 1em } +.head5tm8 { color: black; font-weight: 600; font-size: 0.75em; margin-top: 0.8em; margin-left: 1em } +.hint1 { color: #663; font-size: 12px; line-height: 14px } + +.inactive { color: #6c8899 } +.margintop1 { margin-left: 1em; margin-top: 0.3em } +.margintop2 { margin-top: 0.5em } +.margintop3 { margin-top: 1em } +.marginleft1 { margin-left: 1.5em; margin-top: 0.3em } +.marginleft1b { font-size: 0.85em; margin-left: 1em } +.marginleft2 { margin-left: 2em } +.marginleft3 { margin-left: 3em } +.marginleft4 { margin-left: 4em } + +.nonproportional { font-size: 10pt; font-family: "Courier New", Courier, Monaco } +.padding8 { padding: 8px } +.padding2x4 { padding-top: 2px; padding-bottom: 2px; padding-right: 4px; padding-left: 4px } +.padding2 { padding: 2px } +.padding4 { padding: 4px } +.rowaltcolor { background-color: #f4f4f4 } +.scroll1 { background-color: #efeee9; padding: 10px 12px 10px 10px; overflow: auto } +.ruleblue { color: #458ab9 } +.rulebelow { padding-bottom: 5px; border-bottom: 2px solid #458ab9 } +.rulebelow2 { padding-bottom: 3px; border-bottom: 1px solid #babdb6 } +.ruleabove { padding-top: 5px; border-top: 2px solid #458ab9 } + +.breadcrumb { color: #848582; font-size: 0.65em; line-height: 1em; text-decoration: none; margin-bottom: 1em } +.smalltext { color: black; font-size: 0.75em; line-height: 1em } +.smalltext2a { color: #663; font-size: 0.75em; line-height: 1em } +.smalltext2b { color: black; font-weight: bold; font-size: 0.75em; line-height: 1em } +.smalltext2c { color: #355263; font-size: 0.75em; line-height: 1.1em; width: 480px } +.smalltext2d { color: #355263; font-size: 0.75em } +.mediumtext { color: black; font-size: 0.85em; line-height: 1.1em } +.largetext { color: black; font-style: normal; font-weight: normal; font-size: 1em; line-height: 1.1em } +.textblue1 { color: #4d6d8b; font-size: 0.9em; line-height: 1.2em } +.typegold1 { color: #663; font-size: 1em; line-height: 1.1em } +.typegold2 { color: #663; font-size: 0.85em; line-height: 1.1em } + +.tablecolumnhead1 { color: black; font-weight: bold; font-size: 0.75em; background-color: #efeeec; border-bottom: 1px solid black } +.tablecolumnhead1b { color: black; font-weight: bold; font-size: 0.75em; border-bottom: 1px solid black } +.tablecolumnhead2 { color: #663; font-weight: 600; font-size: 0.75em; text-align: center } +.tablehead1 { color: white; font-weight: bold; font-size: 0.95em; background-color: #458ab9; text-align: left; text-indent: 0.2em; padding: 0.2em } +.tablehead2 { color: black; font-weight: 600; font-size: 0.9em; line-height: 1.1em; background-color: #cc9; text-align: left; text-indent: 0.5em; letter-spacing: 0.1em } +.tablehead1b { font-weight: bold; font-size: 1em; line-height: 1.1em; background-color: #cc9; text-align: left; text-indent: 0.5em } +.tablesubhead1 { color: black; font-weight: bold; font-size: 0.85em; background-color: #efeeec; text-align: left; text-indent: 0.2em; padding: 0.2em } +.tablesubhead3 { color: black; font-weight: 600; font-size: 0.75em; background-color: #dfddd5; text-align: left; padding: 0.2em } +.tablesubhead2 { color: black; font-weight: normal; font-size: 0.85em; background-color: #efeeec; text-align: left; padding: 0.2em } +.tabb { font-weight: bold; font-size: 14pt;} +.tabw { color: white; font-weight: bold; font-size: 14pt; } + +.task1 { font-size: 0.7em; margin-top: 0.35em; margin-left: 1.3em } +.grouphead { color: #333; font-weight: 600; font-size: 0.8em; line-height: 0.9em; margin-top: 0.7em; margin-left: 1.2em } +.task1a { font-size: 0.7em; margin-top: 0.35em } +.task2 { font-size: 0.7em; margin-top: 0.35em; margin-left: 2.3em } +.task3 { color: #003399; font-size: 0.6em; line-height: 1em; text-decoration: none; margin-top: 0.5em; margin-bottom: 0.5em; margin-left: 0.5em } +.task3b { color: #003399; font-size: 0.75em; line-height: 1em; text-decoration: none; margin-top: 0.5em; margin-bottom: 0.5em; margin-left: 0.5em } +.navhead { color: black; font-weight: bold; font-size: 0.85em; line-height: 0.9em; background-color: #cfcdc6; vertical-align: middle; padding: 4px } +.role1 { color: black; font-weight: bold; font-size: 0.75em; line-height: 0.85em; text-decoration: none; margin-top: 0.6em } + +.windowheaddgrey { color: #5a5958; font-weight: bold; font-size: 18pt; line-height: 18pt; letter-spacing: 1px } +.windowheadblack { color: #5a5958; font-weight: bold; font-size: 18pt; line-height: 18pt; letter-spacing: 1px } +.windowheadwhite { color: white; font-weight: bold; font-size: 18pt; line-height: 18pt; letter-spacing: 1px } +.width350 { width: 350px } +.width300 { width: 300px } +.width400 { width: 400px } +.width450 { width: 450px } +.width500 { width: 500px } + +.headcapwide { color: #663; font-weight: 600; font-size: 0.6em; letter-spacing: 0.2em } +.subtitle1 { color: black; font-weight: bold; font-size: 14px; line-height: 14px } +.subtitle2 { color: white; font-weight: bold; font-size: 14px; line-height: 14px } + +.headpb { color: black; font-weight: bold; font-size: 15px; text-align: left; vertical-align: top; letter-spacing: 2px } +.tab1s { color: white; font-weight: bold; font-size: 12px; line-height: 17px; text-decoration: none; background-color: #458ab9; text-align: center; white-space: nowrap } +.tab1u { color: black; background-color: #DFDDD5; font-size: 12px; text-decoration: none; font-weight: bold; text-align: center; white-space: nowrap } +.tab2s { color: white; font-weight: bold; font-size: 11px; text-decoration: none; background-color: #458ab9; white-space: nowrap } +.tab2u { color: white; font-weight: normal; font-size: 11px; text-decoration: none; background-color: #458ab9; white-space: nowrap } + +.copyright { color: #cfcdc6; font-size: 0.55em } \ No newline at end of file diff --git a/c_gui/help/en/legal_notices_en.html b/c_gui/help/en/legal_notices_en.html new file mode 100644 index 00000000..d016b5fd --- /dev/null +++ b/c_gui/help/en/legal_notices_en.html @@ -0,0 +1,62 @@ + + + + + Novell ZENworks Control Center + + + + + +
+
+
+ +
Legal Notices
+ +

Disclaimer
+Novell, Inc. makes no representations or warranties with respect to the contents or use of +this documentation and specifically disclaims any express or implied warranties of +merchantability or fitness for any particular purpose. Further, Novell, Inc. reserves the +right to revise this publication and to make changes to its content, at any time, without +obligation to notify any person or entity of such revisions or changes.

+ +

Further, Novell, Inc. makes no representations or warranties with respect to any Novell +software, and specifically disclaims any express or implied warranties of merchantability +or fitness for any particular purpose. Further, Novell, Inc. reserves the right to make +changes to any and all parts of Novell software, at any time, without any obligation to +notify any person or entity of such changes.

+ +

Export Notice
+ You may not use, export, or re-export this product in violation of any applicable + laws or regulations including, without limitation, U.S. export regulations + or the laws of the country in which you reside. +

Copyright
+ Copyright © 2005 Novell, Inc. All rights reserved. No part of this publication + may be reproduced, photocopied, stored on a retrieval system, or transmitted + without the express written consent of the publisher.

+ +

Patents
+ Novell, Inc. has intellectual property rights relating to technology embodied + in the product that is described in this document. In particular, and without + limitation, these intellectual property rights may include one or more of + the U.S. patents listed at http://www.novell.com/company/legal/patents/ + and one or more additional patents or pending patent applications in the U.S. + and in other countries.

+ +

Novell Trademarks
+Novell, NetWare, and ZENworks are registered trademarks of Novell, Inc. in the United States and +other countries. +

eDirectory and Red Carpet are trademarks of Novell, Inc.

+ +

Third-Party Trademarks
+All third-party trademarks are the property of their respective owners.

+
+ + \ No newline at end of file diff --git a/c_gui/images/casa-1.5.glade b/c_gui/images/casa-1.5.glade index 25462add..23f68683 100644 --- a/c_gui/images/casa-1.5.glade +++ b/c_gui/images/casa-1.5.glade @@ -52,7 +52,7 @@ True - + True gtk-new 1 @@ -74,7 +74,7 @@ - + True gtk-new 1 @@ -95,7 +95,7 @@ - + True gtk-new 1 @@ -121,7 +121,7 @@ - + True gtk-refresh 1 @@ -148,7 +148,7 @@ - + True gtk-dialog-authentication 1 @@ -169,7 +169,7 @@ - + True gtk-open 1 @@ -190,7 +190,7 @@ - + True gtk-delete 1 @@ -218,7 +218,7 @@ - + True gtk-quit 1 @@ -254,7 +254,7 @@ - + True gtk-zoom-fit 1 @@ -275,7 +275,7 @@ - + True gtk-jump-to 1 @@ -296,7 +296,7 @@ - + True gtk-copy 1 @@ -324,7 +324,7 @@ - + True gtk-delete 1 @@ -358,7 +358,7 @@ - + True gtk-revert-to-saved 1 @@ -379,7 +379,7 @@ - + True gtk-preferences 1 @@ -413,7 +413,7 @@ - + True gtk-file 1 @@ -434,7 +434,7 @@ - + True gtk-missing-image 1 @@ -481,10 +481,11 @@ True _Contents True + - + True gtk-help 1 @@ -511,7 +512,7 @@ - + True gtk-dialog-info 1 @@ -1329,7 +1330,7 @@ GTK_BUTTONBOX_END - + True True True @@ -1338,6 +1339,7 @@ GTK_RELIEF_NONE True -11 + @@ -1511,7 +1513,7 @@ their backend stores. GTK_BUTTONBOX_END - + True True True @@ -1520,6 +1522,7 @@ their backend stores. GTK_RELIEF_NONE True -11 + @@ -1919,7 +1922,7 @@ their backend stores. True True - Show passwords in clear text. + Show Values in clear text. True GTK_RELIEF_NORMAL True @@ -2061,7 +2064,7 @@ their backend stores. GTK_BUTTONBOX_END - + True True True @@ -2070,6 +2073,7 @@ their backend stores. GTK_RELIEF_NONE True -11 + @@ -3161,19 +3165,6 @@ their backend stores. True GTK_BUTTONBOX_END - - - True - True - True - gtk-help - True - GTK_RELIEF_NONE - True - -11 - - - True @@ -3941,7 +3932,7 @@ prompted for the Master Password at startup. GTK_BUTTONBOX_END - + True True True @@ -3950,6 +3941,7 @@ prompted for the Master Password at startup. GTK_RELIEF_NONE True -11 + @@ -4418,13 +4410,14 @@ prompted for the Master Password at startup. GTK_BUTTONBOX_EDGE - + True True True GTK_RELIEF_NONE True -7 + @@ -4762,7 +4755,7 @@ CSL Manojna</b> GTK_BUTTONBOX_END - + True True True @@ -4771,6 +4764,7 @@ CSL Manojna</b> GTK_RELIEF_NONE True -11 + @@ -5202,7 +5196,7 @@ prompted for the Master Password at startup. GTK_BUTTONBOX_END - + True True True @@ -5211,6 +5205,7 @@ prompted for the Master Password at startup. GTK_RELIEF_NONE True -11 + @@ -6421,7 +6416,7 @@ by cilcking the Close button. GTK_BUTTONBOX_END - + True True True @@ -6430,6 +6425,7 @@ by cilcking the Close button. GTK_RELIEF_NORMAL True -11 + diff --git a/c_jwrapper/c_jwrapper.iws b/c_jwrapper/c_jwrapper.iws index 75931b8b..239403bf 100644 --- a/c_jwrapper/c_jwrapper.iws +++ b/c_jwrapper/c_jwrapper.iws @@ -12,27 +12,27 @@ - - - + + + - - - + + + - + - + - - + + @@ -273,17 +273,15 @@ - - - + + + - - - + diff --git a/c_jwrapper/src/com/novell/casa/MiCasaTest.java b/c_jwrapper/src/com/novell/casa/MiCasaTest.java index fc952413..d74b96a1 100644 --- a/c_jwrapper/src/com/novell/casa/MiCasaTest.java +++ b/c_jwrapper/src/com/novell/casa/MiCasaTest.java @@ -18,7 +18,7 @@ public class MiCasaTest { store.setCredential(0, "JavaAppID", "Network", 0, "javaAppID Username", "javaAppID Password"); store.setCredential(0, "Groupwise", null, 0, "groupwise Username", "gw Password"); - NetCredential nc = store.getCredential(0, "Groupwise", null, 0); + NetCredential nc = store.getCredential(0, "JavaAppID", null, 0); System.out.println("Username: "+nc.getUsername()); System.out.println("Password: "+nc.getPassword()); diff --git a/shsrc/lshsrc/CASA.spec b/shsrc/lshsrc/CASA.spec index 0c43d080..ed080cd1 100644 --- a/shsrc/lshsrc/CASA.spec +++ b/shsrc/lshsrc/CASA.spec @@ -18,7 +18,7 @@ License: GNU Library General Public License v. 2.0 and 2.1 (LGPL) Group: Productivity/Other Autoreqprov: on %define bldno 1.1.1 -Version: 1.5.127 +Version: 1.5.128 Release: 0 Summary: Novell Common Authentication Service Adapter (CASA) Source: %{name}-%{version}.tar.bz2 @@ -49,7 +49,7 @@ for credential storage and single sign-on. %package gui Summary: The CASA Console Utility Group: Productivity/Other -Requires: CASA = %{version} gtk-sharp >= 1.0.9 +Requires: CASA = %{version} gtk-sharp >= 1.0.9 gnome-keyring >= 0.2.1 kdelibs3 >= 3.2.1 Provides: CASA-gui %description gui @@ -81,6 +81,8 @@ mkdir %{buildroot}%{prefix}/CASA/%{_lib} mkdir %{buildroot}%{prefix}/CASA/bin mkdir %{buildroot}%{prefix}/CASA/include mkdir %{buildroot}%{prefix}/CASA/images +mkdir %{buildroot}%{prefix}/CASA/help +mkdir %{buildroot}%{prefix}/CASA/help/en mkdir %{buildroot}%{prefix}/CASA/doc mkdir -p %{buildroot}/%{_lib}/security @@ -100,6 +102,7 @@ install -m 755 %{binsource}/lux/ndbg/CASAManager.exe %{buildroot}%{prefix}/CASA/ install -m 755 c_gui/CASAManager.sh %{buildroot}%{prefix}/CASA/bin install -m 755 c_gui/CASAManager.desktop %{buildroot}%{prefix}/CASA/ cp -f c_gui/images/* %{buildroot}%{prefix}/CASA/images +cp -f c_gui/help/en/* %{buildroot}%{prefix}/CASA/help/en install -m 755 c_micasad/startup/micasad %{buildroot}%{prefix}/CASA/bin install -m 755 c_micasad/startup/micasad.sh %{buildroot}%{prefix}/CASA/bin #install -m 755 c_clientlogin/novell-ncl-autologin.sh %{buildroot}%{prefix}/CASA/bin @@ -114,6 +117,7 @@ install -d %{buildroot}%{prefix}/CASA/bin install -d %{buildroot}%{prefix}/CASA/doc install -d %{buildroot}%{prefix}/CASA/include install -d %{buildroot}%{prefix}/CASA/images +install -d %{buildroot}%{prefix}/CASA/help/en install -d %{buildroot}/%{_lib}/security @@ -290,4 +294,7 @@ rm -rf $RPM_BUILD_ROOT %dir %{prefix}/CASA/images %dir %{prefix}/CASA/images/* +%dir %{prefix}/CASA/help/en +%dir %{prefix}/CASA/help/en/* + %changelog -n CASA