From 650103b52dc72d318db89b9ae3407c70ccfa99f2 Mon Sep 17 00:00:00 2001 From: michael starke Date: Fri, 21 Jun 2013 18:26:08 +0200 Subject: [PATCH] Changed initial empty database layout to conform to KeePass standards --- MacPass/Kdb3Tree+NewTree.h | 15 ++++++++ MacPass/Kdb3Tree+NewTree.m | 55 +++++++++++++++++++++++++++ MacPass/Kdb4Tree+NewTree.h | 15 ++++++++ MacPass/Kdb4Tree+NewTree.m | 77 ++++++++++++++++++++++++++++++++++++++ MacPass/MPDocument.m | 9 ++--- 5 files changed, 166 insertions(+), 5 deletions(-) create mode 100644 MacPass/Kdb3Tree+NewTree.h create mode 100644 MacPass/Kdb3Tree+NewTree.m create mode 100644 MacPass/Kdb4Tree+NewTree.h create mode 100644 MacPass/Kdb4Tree+NewTree.m diff --git a/MacPass/Kdb3Tree+NewTree.h b/MacPass/Kdb3Tree+NewTree.h new file mode 100644 index 00000000..47ce4d17 --- /dev/null +++ b/MacPass/Kdb3Tree+NewTree.h @@ -0,0 +1,15 @@ +// +// Kdb3Tree+NewTree.h +// MacPass +// +// Created by Michael Starke on 21.06.13. +// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. +// + +#import "Kdb3Node.h" + +@interface Kdb3Tree (NewTree) + ++ (Kdb3Tree *)newTemplateTree; + +@end diff --git a/MacPass/Kdb3Tree+NewTree.m b/MacPass/Kdb3Tree+NewTree.m new file mode 100644 index 00000000..b1934a54 --- /dev/null +++ b/MacPass/Kdb3Tree+NewTree.m @@ -0,0 +1,55 @@ +// +// Kdb3Tree+NewTree.m +// MacPass +// +// Created by Michael Starke on 21.06.13. +// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. +// + +#import "Kdb3Tree+NewTree.h" + +@implementation Kdb3Tree (NewTree) + ++ (Kdb3Tree *)newTemplateTree { + Kdb3Tree *tree = [[Kdb3Tree alloc] init]; + + Kdb3Group *rootGroup = [[Kdb3Group alloc] init]; + rootGroup.name = @"%ROOT%"; + tree.root = rootGroup; + + KdbGroup *parentGroup = [tree createGroup:rootGroup]; + parentGroup.name = @"General"; + parentGroup.image = 48; + [rootGroup addGroup:parentGroup]; + + KdbGroup *group = [tree createGroup:parentGroup]; + group.name = @"Windows"; + group.image = 38; + [parentGroup addGroup:group]; + + group = [tree createGroup:parentGroup]; + group.name = @"Network"; + group.image = 3; + [parentGroup addGroup:group]; + + group = [tree createGroup:parentGroup]; + group.name = @"Internet"; + group.image = 1; + [parentGroup addGroup:group]; + + group = [tree createGroup:parentGroup]; + group.name = @"eMail"; + group.image = 19; + [parentGroup addGroup:group]; + + group = [tree createGroup:parentGroup]; + group.name = @"Homebanking"; + group.image = 37; + [parentGroup addGroup:group]; + + [rootGroup release]; + + return tree; +} + +@end diff --git a/MacPass/Kdb4Tree+NewTree.h b/MacPass/Kdb4Tree+NewTree.h new file mode 100644 index 00000000..bfd5150c --- /dev/null +++ b/MacPass/Kdb4Tree+NewTree.h @@ -0,0 +1,15 @@ +// +// Kdb4Tree+NewTree.h +// MacPass +// +// Created by Michael Starke on 21.06.13. +// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. +// + +#import "Kdb4Node.h" + +@interface Kdb4Tree (NewTree) + ++(Kdb4Tree *)newTemplateTree; + +@end diff --git a/MacPass/Kdb4Tree+NewTree.m b/MacPass/Kdb4Tree+NewTree.m new file mode 100644 index 00000000..9c1b8c29 --- /dev/null +++ b/MacPass/Kdb4Tree+NewTree.m @@ -0,0 +1,77 @@ +// +// Kdb4Tree+NewTree.m +// MacPass +// +// Created by Michael Starke on 21.06.13. +// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. +// + +#import "Kdb4Tree+NewTree.h" + +@implementation Kdb4Tree (NewTree) + ++ (Kdb4Tree *)newTemplateTree { + NSDate *currentTime = [NSDate date]; + + Kdb4Tree *tree = [[Kdb4Tree alloc] init]; + tree.generator = @"MiniKeePass"; + tree.databaseName = @""; + tree.databaseNameChanged = currentTime; + tree.databaseDescription = @""; + tree.databaseDescriptionChanged = currentTime; + tree.defaultUserName = @""; + tree.defaultUserNameChanged = currentTime; + tree.maintenanceHistoryDays = 365; + tree.color = @""; + tree.masterKeyChanged = currentTime; + tree.masterKeyChangeRec = -1; + tree.masterKeyChangeForce = -1; + tree.protectTitle = NO; + tree.protectUserName = NO; + tree.protectPassword = YES; + tree.protectUrl = NO; + tree.protectNotes = NO; + tree.recycleBinEnabled = YES; + tree.recycleBinUuid = [UUID nullUuid]; + tree.recycleBinChanged = currentTime; + tree.entryTemplatesGroup = [UUID nullUuid]; + tree.entryTemplatesGroupChanged = currentTime; + tree.historyMaxItems = 10; + tree.historyMaxSize = 6 * 1024 * 1024; // 6 MB + tree.lastSelectedGroup = [UUID nullUuid]; + tree.lastTopVisibleGroup = [UUID nullUuid]; + + KdbGroup *parentGroup = [tree createGroup:nil]; + parentGroup.name = @"General"; + parentGroup.image = 48; + tree.root = parentGroup; + + KdbGroup *group = [tree createGroup:parentGroup]; + group.name = @"Windows"; + group.image = 38; + [parentGroup addGroup:group]; + + group = [tree createGroup:parentGroup]; + group.name = @"Network"; + group.image = 3; + [parentGroup addGroup:group]; + + group = [tree createGroup:parentGroup]; + group.name = @"Internet"; + group.image = 1; + [parentGroup addGroup:group]; + + group = [tree createGroup:parentGroup]; + group.name = @"eMail"; + group.image = 19; + [parentGroup addGroup:group]; + + group = [tree createGroup:parentGroup]; + group.name = @"Homebanking"; + group.image = 37; + [parentGroup addGroup:group]; + + return tree; +} + +@end diff --git a/MacPass/MPDocument.m b/MacPass/MPDocument.m index 64ff19ce..4e93fac7 100644 --- a/MacPass/MPDocument.m +++ b/MacPass/MPDocument.m @@ -17,6 +17,8 @@ #import "KdbGroup+KVOAdditions.h" #import "KdbGroup+MPTreeTools.h" #import "KdbEntry+Undo.h" +#import "Kdb3Tree+NewTree.h" +#import "Kdb4Tree+NewTree.h" NSString *const MPDocumentDidAddGroupNotification = @"MPDocumentDidAddGroupNotification"; NSString *const MPDocumentWillDelteGroupNotification = @"MPDocumentDidDelteGroupNotification"; @@ -52,18 +54,15 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGroupKey"; _isProtected = NO; switch(version) { case MPDatabaseVersion3: - self.tree = [[[Kdb3Tree alloc] init] autorelease]; + _tree = [Kdb3Tree newTemplateTree]; break; case MPDatabaseVersion4: - self.tree = [[[Kdb4Tree alloc] init] autorelease]; + _tree = [Kdb4Tree newTemplateTree]; break; default: [self release]; return nil; } - KdbGroup *newGroup = [self.tree createGroup:self.tree.root]; - newGroup.name = @"Default"; - self.tree.root = newGroup; } return self; }