本文整理汇总了C#中PwEntry.CreateBackup方法的典型用法代码示例。如果您正苦于以下问题:C# PwEntry.CreateBackup方法的具体用法?C# PwEntry.CreateBackup怎么用?C# PwEntry.CreateBackup使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PwEntry
的用法示例。
在下文中一共展示了PwEntry.CreateBackup方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ImportEntry
private static void ImportEntry(XmlNode xmlNode, PwDatabase pwStorage,
string strLineBreak)
{
Debug.Assert(xmlNode != null); if(xmlNode == null) return;
PwEntry pe = new PwEntry(true, true);
string strGroupName = string.Empty;
List<DatePasswordPair> listHistory = null;
foreach(XmlNode xmlChild in xmlNode.ChildNodes)
{
if(xmlChild.Name == ElemGroup)
strGroupName = XmlUtil.SafeInnerText(xmlChild);
else if(xmlChild.Name == ElemTitle)
pe.Strings.Set(PwDefs.TitleField,
new ProtectedString(pwStorage.MemoryProtection.ProtectTitle,
XmlUtil.SafeInnerText(xmlChild)));
else if(xmlChild.Name == ElemUserName)
pe.Strings.Set(PwDefs.UserNameField,
new ProtectedString(pwStorage.MemoryProtection.ProtectUserName,
XmlUtil.SafeInnerText(xmlChild)));
else if(xmlChild.Name == ElemPassword)
pe.Strings.Set(PwDefs.PasswordField,
new ProtectedString(pwStorage.MemoryProtection.ProtectPassword,
XmlUtil.SafeInnerText(xmlChild)));
else if(xmlChild.Name == ElemURL)
pe.Strings.Set(PwDefs.UrlField,
new ProtectedString(pwStorage.MemoryProtection.ProtectUrl,
XmlUtil.SafeInnerText(xmlChild)));
else if(xmlChild.Name == ElemNotes)
pe.Strings.Set(PwDefs.NotesField,
new ProtectedString(pwStorage.MemoryProtection.ProtectNotes,
XmlUtil.SafeInnerText(xmlChild, strLineBreak)));
else if(xmlChild.Name == ElemEMail)
pe.Strings.Set("E-Mail", new ProtectedString(false,
XmlUtil.SafeInnerText(xmlChild)));
else if(xmlChild.Name == ElemCreationTime)
pe.CreationTime = ReadDateTime(xmlChild);
else if(xmlChild.Name == ElemLastAccessTime)
pe.LastAccessTime = ReadDateTime(xmlChild);
else if(xmlChild.Name == ElemExpireTime)
{
pe.ExpiryTime = ReadDateTime(xmlChild);
pe.Expires = true;
}
else if(xmlChild.Name == ElemLastModTime) // = last mod
pe.LastModificationTime = ReadDateTime(xmlChild);
else if(xmlChild.Name == ElemRecordModTime) // = last mod
pe.LastModificationTime = ReadDateTime(xmlChild);
else if(xmlChild.Name == ElemCreationTimeX)
pe.CreationTime = ReadDateTimeX(xmlChild);
else if(xmlChild.Name == ElemLastAccessTimeX)
pe.LastAccessTime = ReadDateTimeX(xmlChild);
else if(xmlChild.Name == ElemExpireTimeX)
{
pe.ExpiryTime = ReadDateTimeX(xmlChild);
pe.Expires = true;
}
else if(xmlChild.Name == ElemLastModTimeX) // = last mod
pe.LastModificationTime = ReadDateTimeX(xmlChild);
else if(xmlChild.Name == ElemRecordModTimeX) // = last mod
pe.LastModificationTime = ReadDateTimeX(xmlChild);
else if(xmlChild.Name == ElemAutoType)
pe.AutoType.DefaultSequence = XmlUtil.SafeInnerText(xmlChild);
else if(xmlChild.Name == ElemRunCommand)
pe.OverrideUrl = XmlUtil.SafeInnerText(xmlChild);
else if(xmlChild.Name == ElemEntryHistory)
listHistory = ReadEntryHistory(xmlChild);
}
if(listHistory != null)
{
string strPassword = pe.Strings.ReadSafe(PwDefs.PasswordField);
DateTime dtLastMod = pe.LastModificationTime;
foreach(DatePasswordPair dpp in listHistory)
{
pe.Strings.Set(PwDefs.PasswordField, new ProtectedString(
pwStorage.MemoryProtection.ProtectPassword,
dpp.Password));
pe.LastModificationTime = dpp.Time;
pe.CreateBackup(null);
}
// Maintain backups manually now (backups from the imported file
// might have been out of order)
pe.MaintainBackups(pwStorage);
pe.Strings.Set(PwDefs.PasswordField, new ProtectedString(
pwStorage.MemoryProtection.ProtectPassword,
strPassword));
pe.LastModificationTime = dtLastMod;
}
PwGroup pgContainer = pwStorage.RootGroup;
if(strGroupName.Length != 0)
pgContainer = pwStorage.RootGroup.FindCreateSubTree(strGroupName,
new string[1]{ "." }, true);
pgContainer.AddEntry(pe, true);
//.........这里部分代码省略.........
示例2: SaveEntry
private bool SaveEntry(PwEntry peTarget, bool bValidate)
{
if(m_pwEditMode == PwEditMode.ViewReadOnlyEntry) return true;
if(bValidate && !m_icgPassword.ValidateData(true)) return false;
if(this.EntrySaving != null)
{
CancellableOperationEventArgs eaCancel = new CancellableOperationEventArgs();
this.EntrySaving(this, eaCancel);
if(eaCancel.Cancel) return false;
}
peTarget.History = m_vHistory; // Must be called before CreateBackup()
bool bCreateBackup = (m_pwEditMode != PwEditMode.AddNewEntry);
if(bCreateBackup) peTarget.CreateBackup(null);
peTarget.IconId = m_pwEntryIcon;
peTarget.CustomIconUuid = m_pwCustomIconID;
if(m_cbCustomForegroundColor.Checked)
peTarget.ForegroundColor = m_clrForeground;
else peTarget.ForegroundColor = Color.Empty;
if(m_cbCustomBackgroundColor.Checked)
peTarget.BackgroundColor = m_clrBackground;
else peTarget.BackgroundColor = Color.Empty;
peTarget.OverrideUrl = m_cmbOverrideUrl.Text;
List<string> vNewTags = StrUtil.StringToTags(m_tbTags.Text);
peTarget.Tags.Clear();
foreach(string strTag in vNewTags) peTarget.AddTag(strTag);
peTarget.Expires = m_cgExpiry.Checked;
if(peTarget.Expires) peTarget.ExpiryTime = m_cgExpiry.Value;
UpdateEntryStrings(true, false, false);
peTarget.Strings = m_vStrings;
peTarget.Binaries = m_vBinaries;
m_atConfig.Enabled = m_cbAutoTypeEnabled.Checked;
m_atConfig.ObfuscationOptions = (m_cbAutoTypeObfuscation.Checked ?
AutoTypeObfuscationOptions.UseClipboard :
AutoTypeObfuscationOptions.None);
SaveDefaultSeq();
peTarget.AutoType = m_atConfig;
peTarget.Touch(true, false); // Touch *after* backup
if(object.ReferenceEquals(peTarget, m_pwEntry)) m_bTouchedOnce = true;
StrUtil.NormalizeNewLines(peTarget.Strings, true);
bool bUndoBackup = false;
PwCompareOptions cmpOpt = m_cmpOpt;
if(bCreateBackup) cmpOpt |= PwCompareOptions.IgnoreLastBackup;
if(peTarget.EqualsEntry(m_pwInitialEntry, cmpOpt, MemProtCmpMode.CustomOnly))
{
// No modifications at all => restore last mod time and undo backup
peTarget.LastModificationTime = m_pwInitialEntry.LastModificationTime;
bUndoBackup = bCreateBackup;
}
else if(bCreateBackup)
{
// If only history items have been modified (deleted) => undo
// backup, but without restoring the last mod time
PwCompareOptions cmpOptNH = (m_cmpOpt | PwCompareOptions.IgnoreHistory);
if(peTarget.EqualsEntry(m_pwInitialEntry, cmpOptNH, MemProtCmpMode.CustomOnly))
bUndoBackup = true;
}
if(bUndoBackup) peTarget.History.RemoveAt(peTarget.History.UCount - 1);
peTarget.MaintainBackups(m_pwDatabase);
if(this.EntrySaved != null) this.EntrySaved(this, EventArgs.Empty);
return true;
}
示例3: MergeEntries
private void MergeEntries(PwEntry destination, PwEntry source, int urlMergeMode, PwDatabase db)
{
EntryConfig destConfig;
string destJSON = KeePassRPCPlugin.GetPwEntryString(destination, "KPRPC JSON", db);
if (string.IsNullOrEmpty(destJSON))
{
destConfig = new EntryConfig();
}
else
{
try
{
destConfig = (EntryConfig)Jayrock.Json.Conversion.JsonConvert.Import(typeof(EntryConfig), destJSON);
}
catch (Exception)
{
MessageBox.Show("There are configuration errors in this entry. To fix the entry and prevent this warning message appearing, please edit the value of the 'KeePassRPC JSON config' advanced string. Please ask for help on http://keefox.org/help/forum if you're not sure how to fix this. The URL of the entry is: " + destination.Strings.ReadSafe("URL") + " and the full configuration data is: " + destJSON, "Warning: Configuration errors", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
EntryConfig sourceConfig;
string sourceJSON = KeePassRPCPlugin.GetPwEntryString(source, "KPRPC JSON", db);
if (string.IsNullOrEmpty(sourceJSON))
{
sourceConfig = new EntryConfig();
}
else
{
try
{
sourceConfig = (EntryConfig)Jayrock.Json.Conversion.JsonConvert.Import(typeof(EntryConfig), sourceJSON);
}
catch (Exception)
{
MessageBox.Show("There are configuration errors in this entry. To fix the entry and prevent this warning message appearing, please edit the value of the 'KeePassRPC JSON config' advanced string. Please ask for help on http://keefox.org/help/forum if you're not sure how to fix this. The URL of the entry is: " + source.Strings.ReadSafe("URL") + " and the full configuration data is: " + sourceJSON, "Warning: Configuration errors", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
destination.CreateBackup(db);
destConfig.HTTPRealm = sourceConfig.HTTPRealm;
destination.IconId = source.IconId;
destination.CustomIconUuid = source.CustomIconUuid;
destination.Strings.Set("UserName", new ProtectedString(
host.Database.MemoryProtection.ProtectUserName, source.Strings.ReadSafe("UserName")));
destination.Strings.Set("Password", new ProtectedString(
host.Database.MemoryProtection.ProtectPassword, source.Strings.ReadSafe("Password")));
destConfig.FormFieldList = sourceConfig.FormFieldList;
// This algorithm could probably be made more efficient (lots of O(n) operations
// but we're dealing with pretty small n so I've gone with the conceptually
// easiest approach for now).
List<string> destURLs = new List<string>();
destURLs.Add(destination.Strings.ReadSafe("URL"));
if (destConfig.AltURLs != null)
destURLs.AddRange(destConfig.AltURLs);
List<string> sourceURLs = new List<string>();
sourceURLs.Add(source.Strings.ReadSafe("URL"));
if (sourceConfig.AltURLs != null)
sourceURLs.AddRange(sourceConfig.AltURLs);
switch (urlMergeMode)
{
case 1:
MergeInNewURLs(destURLs, sourceURLs);
break;
case 2:
destURLs.RemoveAt(0);
MergeInNewURLs(destURLs, sourceURLs);
break;
case 3:
if (sourceURLs.Count > 0)
{
foreach (string sourceUrl in sourceURLs)
if (!destURLs.Contains(sourceUrl))
destURLs.Add(sourceUrl);
}
break;
case 4:
default:
// No changes to URLs
break;
}
// These might not have changed but meh
destination.Strings.Set("URL", new ProtectedString(host.Database.MemoryProtection.ProtectUrl, destURLs[0]));
destConfig.AltURLs = new string[0];
if (destURLs.Count > 1)
destConfig.AltURLs = destURLs.GetRange(1,destURLs.Count-1).ToArray();
destination.Strings.Set("KPRPC JSON", new ProtectedString(true, Jayrock.Json.Conversion.JsonConvert.ExportToString(destConfig)));
destination.Touch(true);
}
示例4: MergeEntries
private void MergeEntries(PwEntry destination, PwEntry source, int urlMergeMode, PwDatabase db)
{
EntryConfig destConfig = destination.GetKPRPCConfig();
if (destConfig == null)
return;
EntryConfig sourceConfig = source.GetKPRPCConfig();
if (sourceConfig == null)
return;
destination.CreateBackup(db);
destConfig.HTTPRealm = sourceConfig.HTTPRealm;
destination.IconId = source.IconId;
destination.CustomIconUuid = source.CustomIconUuid;
destination.Strings.Set("UserName", new ProtectedString(
host.Database.MemoryProtection.ProtectUserName, source.Strings.ReadSafe("UserName")));
destination.Strings.Set("Password", new ProtectedString(
host.Database.MemoryProtection.ProtectPassword, source.Strings.ReadSafe("Password")));
destConfig.FormFieldList = sourceConfig.FormFieldList;
// This algorithm could probably be made more efficient (lots of O(n) operations
// but we're dealing with pretty small n so I've gone with the conceptually
// easiest approach for now).
List<string> destURLs = new List<string>();
destURLs.Add(destination.Strings.ReadSafe("URL"));
if (destConfig.AltURLs != null)
destURLs.AddRange(destConfig.AltURLs);
List<string> sourceURLs = new List<string>();
sourceURLs.Add(source.Strings.ReadSafe("URL"));
if (sourceConfig.AltURLs != null)
sourceURLs.AddRange(sourceConfig.AltURLs);
switch (urlMergeMode)
{
case 1:
MergeInNewURLs(destURLs, sourceURLs);
break;
case 2:
destURLs.RemoveAt(0);
MergeInNewURLs(destURLs, sourceURLs);
break;
case 3:
if (sourceURLs.Count > 0)
{
foreach (string sourceUrl in sourceURLs)
if (!destURLs.Contains(sourceUrl))
destURLs.Add(sourceUrl);
}
break;
case 4:
default:
// No changes to URLs
break;
}
// These might not have changed but meh
destination.Strings.Set("URL", new ProtectedString(host.Database.MemoryProtection.ProtectUrl, destURLs[0]));
destConfig.AltURLs = new string[0];
if (destURLs.Count > 1)
destConfig.AltURLs = destURLs.GetRange(1,destURLs.Count-1).ToArray();
destination.SetKPRPCConfig(destConfig);
destination.Touch(true);
}
示例5: ImportEntry
private void ImportEntry(XmlNode xmlNode, PwDatabase pwStorage)
{
Debug.Assert(xmlNode != null); if(xmlNode == null) return;
PwEntry pe = new PwEntry(true, true);
string strGroupName = string.Empty;
List<DatePasswordPair> listHistory = null;
foreach(XmlNode xmlChild in xmlNode.ChildNodes)
{
if(xmlChild.Name == ElemGroup)
strGroupName = ImportUtil.SafeInnerText(xmlChild);
else if(xmlChild.Name == ElemTitle)
pe.Strings.Set(PwDefs.TitleField,
new ProtectedString(pwStorage.MemoryProtection.ProtectTitle,
ImportUtil.SafeInnerText(xmlChild)));
else if(xmlChild.Name == ElemUserName)
pe.Strings.Set(PwDefs.UserNameField,
new ProtectedString(pwStorage.MemoryProtection.ProtectUserName,
ImportUtil.SafeInnerText(xmlChild)));
else if(xmlChild.Name == ElemPassword)
pe.Strings.Set(PwDefs.PasswordField,
new ProtectedString(pwStorage.MemoryProtection.ProtectPassword,
ImportUtil.SafeInnerText(xmlChild)));
else if(xmlChild.Name == ElemURL)
pe.Strings.Set(PwDefs.UrlField,
new ProtectedString(pwStorage.MemoryProtection.ProtectUrl,
ImportUtil.SafeInnerText(xmlChild)));
else if(xmlChild.Name == ElemNotes)
pe.Strings.Set(PwDefs.NotesField,
new ProtectedString(pwStorage.MemoryProtection.ProtectNotes,
ImportUtil.SafeInnerText(xmlChild, m_strLineBreak)));
else if(xmlChild.Name == ElemCreationTime)
pe.CreationTime = ReadDateTime(xmlChild);
else if(xmlChild.Name == ElemLastAccessTime)
pe.LastAccessTime = ReadDateTime(xmlChild);
else if(xmlChild.Name == ElemExpireTime)
{
pe.ExpiryTime = ReadDateTime(xmlChild);
pe.Expires = true;
}
else if(xmlChild.Name == ElemLastModTime) // = last mod
pe.LastModificationTime = ReadDateTime(xmlChild);
else if(xmlChild.Name == ElemRecordModTime) // = last mod
pe.LastModificationTime = ReadDateTime(xmlChild);
else if(xmlChild.Name == ElemAutoType)
pe.AutoType.DefaultSequence = ImportUtil.SafeInnerText(xmlChild);
else if(xmlChild.Name == ElemEntryHistory)
listHistory = ReadEntryHistory(xmlChild);
else { Debug.Assert(false); }
}
if(listHistory != null)
{
string strPassword = pe.Strings.ReadSafe(PwDefs.PasswordField);
foreach(DatePasswordPair dpp in listHistory)
{
pe.LastAccessTime = dpp.Time;
pe.Strings.Set(PwDefs.PasswordField, new ProtectedString(
pwStorage.MemoryProtection.ProtectPassword,
dpp.Password));
pe.CreateBackup();
}
pe.Strings.Set(PwDefs.PasswordField, new ProtectedString(
pwStorage.MemoryProtection.ProtectPassword,
strPassword));
}
PwGroup pgContainer = pwStorage.RootGroup;
if(strGroupName.Length != 0)
pgContainer = pwStorage.RootGroup.FindCreateSubTree(strGroupName,
new char[]{ '.' });
pgContainer.AddEntry(pe, true);
pgContainer.IsExpanded = true;
}
示例6: ReplaceNewPasswordPlaceholder
private static string ReplaceNewPasswordPlaceholder(string strText,
PwEntry pe, PwDatabase pd, SprContentFlags cf)
{
if((pe == null) || (pd == null)) return strText;
string str = strText;
const string strNewPwPlh = @"{NEWPASSWORD}";
if(str.IndexOf(strNewPwPlh, StrUtil.CaseIgnoreCmp) >= 0)
{
ProtectedString psAutoGen = new ProtectedString(
pd.MemoryProtection.ProtectPassword);
PwgError e = PwGenerator.Generate(psAutoGen,
Program.Config.PasswordGenerator.AutoGeneratedPasswordsProfile,
null, Program.PwGeneratorPool);
if(e == PwgError.Success)
{
pe.CreateBackup();
pe.Strings.Set(PwDefs.PasswordField, psAutoGen);
pd.Modified = true;
string strIns = SprEngine.TransformContent(psAutoGen.ReadString(), cf);
str = StrUtil.ReplaceCaseInsensitive(str, strNewPwPlh, strIns);
}
}
return str;
}