diff --git a/DMSplitView b/DMSplitView deleted file mode 160000 index 30f709ae..00000000 --- a/DMSplitView +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 30f709ae03dc69d9a5bbad871397af0a2a71fb0c diff --git a/HNHUi b/HNHUi index 8e8e175c..3434cada 160000 --- a/HNHUi +++ b/HNHUi @@ -1 +1 @@ -Subproject commit 8e8e175cbea29066217e2d08e200a162ed73b832 +Subproject commit 3434cadaf40cf2c09addf134721350c92c262b11 diff --git a/MacPass.xcodeproj/project.pbxproj b/MacPass.xcodeproj/project.pbxproj index bc4a7dba..1bf8c938 100644 --- a/MacPass.xcodeproj/project.pbxproj +++ b/MacPass.xcodeproj/project.pbxproj @@ -10,10 +10,34 @@ 4C01C23F1764D2980016D5D0 /* KdbEntry+Undo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C23E1764D2980016D5D0 /* KdbEntry+Undo.m */; }; 4C01C2421764D8980016D5D0 /* MPContextMenuHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */; }; 4C01C245176500C40016D5D0 /* HNHLevelIndicatorCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C244176500C40016D5D0 /* HNHLevelIndicatorCell.m */; }; - 4C099930176D4C5C00C885CB /* MPTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C09992F176D4C5C00C885CB /* MPTableCellView.m */; }; 4C099933176D4EA600C885CB /* HNHScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C099932176D4EA600C885CB /* HNHScrollView.m */; }; 4C1DDCDD1711ECEB00C98DA3 /* PasswordCreatorWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */; }; 4C22040D1746ED160054C916 /* KdbGroup+Undo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C22040C1746ED160054C916 /* KdbGroup+Undo.m */; }; + 4C245B76176E1E3D0086100E /* DDData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A6A176E1E3C0086100E /* DDData.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B77176E1E3D0086100E /* DDNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A6C176E1E3C0086100E /* DDNumber.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B78176E1E3D0086100E /* DDRange.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A6E176E1E3C0086100E /* DDRange.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B79176E1E3D0086100E /* HTTPAuthenticationRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A70176E1E3C0086100E /* HTTPAuthenticationRequest.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B7A176E1E3D0086100E /* HTTPConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A72176E1E3C0086100E /* HTTPConnection.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B7B176E1E3D0086100E /* HTTPMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A75176E1E3C0086100E /* HTTPMessage.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B7C176E1E3D0086100E /* HTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A78176E1E3C0086100E /* HTTPServer.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B7D176E1E3D0086100E /* MultipartFormDataParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A7B176E1E3C0086100E /* MultipartFormDataParser.m */; }; + 4C245B7E176E1E3D0086100E /* MultipartMessageHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A7D176E1E3C0086100E /* MultipartMessageHeader.m */; }; + 4C245B7F176E1E3D0086100E /* MultipartMessageHeaderField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A7F176E1E3C0086100E /* MultipartMessageHeaderField.m */; }; + 4C245B80176E1E3D0086100E /* HTTPAsyncFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A82176E1E3C0086100E /* HTTPAsyncFileResponse.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B81176E1E3D0086100E /* HTTPDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A84176E1E3C0086100E /* HTTPDataResponse.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B82176E1E3D0086100E /* HTTPDynamicFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A86176E1E3C0086100E /* HTTPDynamicFileResponse.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B83176E1E3D0086100E /* HTTPErrorResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A88176E1E3C0086100E /* HTTPErrorResponse.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B84176E1E3D0086100E /* HTTPFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A8A176E1E3C0086100E /* HTTPFileResponse.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B85176E1E3D0086100E /* HTTPRedirectResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A8C176E1E3C0086100E /* HTTPRedirectResponse.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245B86176E1E3D0086100E /* WebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245A8E176E1E3C0086100E /* WebSocket.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245BE9176E1E3D0086100E /* GCDAsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245B61176E1E3D0086100E /* GCDAsyncSocket.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245BEB176E1E3D0086100E /* DDAbstractDatabaseLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245B65176E1E3D0086100E /* DDAbstractDatabaseLogger.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245BEC176E1E3D0086100E /* DDASLLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245B67176E1E3D0086100E /* DDASLLogger.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245BED176E1E3D0086100E /* DDFileLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245B69176E1E3D0086100E /* DDFileLogger.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245BEE176E1E3D0086100E /* DDLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245B6B176E1E3D0086100E /* DDLog.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245BEF176E1E3D0086100E /* DDTTYLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245B6D176E1E3D0086100E /* DDTTYLogger.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245BF0176E1E3D0086100E /* ContextFilterLogFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245B70176E1E3D0086100E /* ContextFilterLogFormatter.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + 4C245BF1176E1E3D0086100E /* DispatchQueueLogFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C245B72176E1E3D0086100E /* DispatchQueueLogFormatter.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 4C25D58716CF0FAA00F6806C /* EntryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C25D58616CF0FAA00F6806C /* EntryView.xib */; }; 4C2C4C2C16D3BE3700D49295 /* KdbGroup+MPTreeTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPTreeTools.m */; }; 4C2E381D16D11FF900037A9D /* 03_ServerTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */; }; @@ -24,10 +48,8 @@ 4C37A6731769393300AD0A40 /* HNHTableHeaderCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A6721769393300AD0A40 /* HNHTableHeaderCell.m */; }; 4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A83F15B8B474005EF8EE /* MPOutlineDataSource.m */; }; 4C3BD51516D276F800389F1F /* MPToolbarDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3BD51416D276F800389F1F /* MPToolbarDelegate.m */; }; - 4C3CD2A8175570C9005F911C /* DMSplitView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3CD2A7175570C9005F911C /* DMSplitView.m */; }; 4C3D4C0817594CA40038DAAC /* HNHSeparator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3D4C0717594CA40038DAAC /* HNHSeparator.m */; }; 4C3FFD9E16DAF60600DF9186 /* FilterBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C3FFD9D16DAF60600DF9186 /* FilterBar.xib */; }; - 4C40AC5C170782730073D1C3 /* MPAbstractSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C40AC5B170782730073D1C3 /* MPAbstractSettingsViewController.m */; }; 4C431BCD16E2A82800700A81 /* MPPasteBoardController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C431BCC16E2A82700700A81 /* MPPasteBoardController.m */; }; 4C431BCF16E2BAB000700A81 /* OverlayWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C431BCE16E2BAB000700A81 /* OverlayWindow.xib */; }; 4C46B88517063A070046109A /* NSString+MPPasswordCreation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C46B88417063A070046109A /* NSString+MPPasswordCreation.m */; }; @@ -139,6 +161,11 @@ 4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE5B549173AFBA700207B39 /* MPDocument.m */; }; 4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */; }; 4CE8247516E2F2B900573141 /* MPOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8247416E2F2B900573141 /* MPOverlayView.m */; }; + 4CF78057176E5CFD0032EE71 /* MPConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF78056176E5CFD0032EE71 /* MPConnection.m */; }; + 4CF7805A176E6D5F0032EE71 /* HNHTableRowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF78059176E6D5F0032EE71 /* HNHTableRowView.m */; }; + 4CF7805D176E71170032EE71 /* MPServerDaemon.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF7805C176E71170032EE71 /* MPServerDaemon.m */; }; + 4CF7805F176E75110032EE71 /* ServerSettings.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CF7805E176E75110032EE71 /* ServerSettings.xib */; }; + 4CF78064176E75AD0032EE71 /* MPServerSettingsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF78063176E75AD0032EE71 /* MPServerSettingsController.m */; }; 4CFC53BF16E94729007396BE /* MPShadowBox.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CFC53BE16E94729007396BE /* MPShadowBox.m */; }; /* End PBXBuildFile section */ @@ -149,13 +176,63 @@ 4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPContextMenuHelper.m; sourceTree = ""; }; 4C01C243176500C40016D5D0 /* HNHLevelIndicatorCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHLevelIndicatorCell.h; sourceTree = ""; }; 4C01C244176500C40016D5D0 /* HNHLevelIndicatorCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHLevelIndicatorCell.m; sourceTree = ""; }; - 4C09992E176D4C5C00C885CB /* MPTableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTableCellView.h; sourceTree = ""; }; - 4C09992F176D4C5C00C885CB /* MPTableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTableCellView.m; sourceTree = ""; }; 4C099931176D4EA600C885CB /* HNHScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHScrollView.h; sourceTree = ""; }; 4C099932176D4EA600C885CB /* HNHScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHScrollView.m; sourceTree = ""; }; 4C1DDCDC1711ECEB00C98DA3 /* PasswordCreatorWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PasswordCreatorWindow.xib; sourceTree = ""; }; 4C22040B1746ED160054C916 /* KdbGroup+Undo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbGroup+Undo.h"; sourceTree = ""; }; 4C22040C1746ED160054C916 /* KdbGroup+Undo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbGroup+Undo.m"; sourceTree = ""; }; + 4C245A69176E1E3C0086100E /* DDData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDData.h; sourceTree = ""; }; + 4C245A6A176E1E3C0086100E /* DDData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDData.m; sourceTree = ""; }; + 4C245A6B176E1E3C0086100E /* DDNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDNumber.h; sourceTree = ""; }; + 4C245A6C176E1E3C0086100E /* DDNumber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDNumber.m; sourceTree = ""; }; + 4C245A6D176E1E3C0086100E /* DDRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDRange.h; sourceTree = ""; }; + 4C245A6E176E1E3C0086100E /* DDRange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDRange.m; sourceTree = ""; }; + 4C245A6F176E1E3C0086100E /* HTTPAuthenticationRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPAuthenticationRequest.h; sourceTree = ""; }; + 4C245A70176E1E3C0086100E /* HTTPAuthenticationRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPAuthenticationRequest.m; sourceTree = ""; }; + 4C245A71176E1E3C0086100E /* HTTPConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPConnection.h; sourceTree = ""; }; + 4C245A72176E1E3C0086100E /* HTTPConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPConnection.m; sourceTree = ""; }; + 4C245A73176E1E3C0086100E /* HTTPLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPLogging.h; sourceTree = ""; }; + 4C245A74176E1E3C0086100E /* HTTPMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPMessage.h; sourceTree = ""; }; + 4C245A75176E1E3C0086100E /* HTTPMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPMessage.m; sourceTree = ""; }; + 4C245A76176E1E3C0086100E /* HTTPResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPResponse.h; sourceTree = ""; }; + 4C245A77176E1E3C0086100E /* HTTPServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPServer.h; sourceTree = ""; }; + 4C245A78176E1E3C0086100E /* HTTPServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPServer.m; sourceTree = ""; }; + 4C245A7A176E1E3C0086100E /* MultipartFormDataParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipartFormDataParser.h; sourceTree = ""; }; + 4C245A7B176E1E3C0086100E /* MultipartFormDataParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipartFormDataParser.m; sourceTree = ""; }; + 4C245A7C176E1E3C0086100E /* MultipartMessageHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipartMessageHeader.h; sourceTree = ""; }; + 4C245A7D176E1E3C0086100E /* MultipartMessageHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipartMessageHeader.m; sourceTree = ""; }; + 4C245A7E176E1E3C0086100E /* MultipartMessageHeaderField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipartMessageHeaderField.h; sourceTree = ""; }; + 4C245A7F176E1E3C0086100E /* MultipartMessageHeaderField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipartMessageHeaderField.m; sourceTree = ""; }; + 4C245A81176E1E3C0086100E /* HTTPAsyncFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPAsyncFileResponse.h; sourceTree = ""; }; + 4C245A82176E1E3C0086100E /* HTTPAsyncFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPAsyncFileResponse.m; sourceTree = ""; }; + 4C245A83176E1E3C0086100E /* HTTPDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPDataResponse.h; sourceTree = ""; }; + 4C245A84176E1E3C0086100E /* HTTPDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPDataResponse.m; sourceTree = ""; }; + 4C245A85176E1E3C0086100E /* HTTPDynamicFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPDynamicFileResponse.h; sourceTree = ""; }; + 4C245A86176E1E3C0086100E /* HTTPDynamicFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPDynamicFileResponse.m; sourceTree = ""; }; + 4C245A87176E1E3C0086100E /* HTTPErrorResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPErrorResponse.h; sourceTree = ""; }; + 4C245A88176E1E3C0086100E /* HTTPErrorResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPErrorResponse.m; sourceTree = ""; }; + 4C245A89176E1E3C0086100E /* HTTPFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPFileResponse.h; sourceTree = ""; }; + 4C245A8A176E1E3C0086100E /* HTTPFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPFileResponse.m; sourceTree = ""; }; + 4C245A8B176E1E3C0086100E /* HTTPRedirectResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPRedirectResponse.h; sourceTree = ""; }; + 4C245A8C176E1E3C0086100E /* HTTPRedirectResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPRedirectResponse.m; sourceTree = ""; }; + 4C245A8D176E1E3C0086100E /* WebSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSocket.h; sourceTree = ""; }; + 4C245A8E176E1E3C0086100E /* WebSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebSocket.m; sourceTree = ""; }; + 4C245B60176E1E3D0086100E /* GCDAsyncSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDAsyncSocket.h; sourceTree = ""; }; + 4C245B61176E1E3D0086100E /* GCDAsyncSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDAsyncSocket.m; sourceTree = ""; }; + 4C245B64176E1E3D0086100E /* DDAbstractDatabaseLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDAbstractDatabaseLogger.h; sourceTree = ""; }; + 4C245B65176E1E3D0086100E /* DDAbstractDatabaseLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDAbstractDatabaseLogger.m; sourceTree = ""; }; + 4C245B66176E1E3D0086100E /* DDASLLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDASLLogger.h; sourceTree = ""; }; + 4C245B67176E1E3D0086100E /* DDASLLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDASLLogger.m; sourceTree = ""; }; + 4C245B68176E1E3D0086100E /* DDFileLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDFileLogger.h; sourceTree = ""; }; + 4C245B69176E1E3D0086100E /* DDFileLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDFileLogger.m; sourceTree = ""; }; + 4C245B6A176E1E3D0086100E /* DDLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDLog.h; sourceTree = ""; }; + 4C245B6B176E1E3D0086100E /* DDLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDLog.m; sourceTree = ""; }; + 4C245B6C176E1E3D0086100E /* DDTTYLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDTTYLogger.h; sourceTree = ""; }; + 4C245B6D176E1E3D0086100E /* DDTTYLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDTTYLogger.m; sourceTree = ""; }; + 4C245B6F176E1E3D0086100E /* ContextFilterLogFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContextFilterLogFormatter.h; sourceTree = ""; }; + 4C245B70176E1E3D0086100E /* ContextFilterLogFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContextFilterLogFormatter.m; sourceTree = ""; }; + 4C245B71176E1E3D0086100E /* DispatchQueueLogFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DispatchQueueLogFormatter.h; sourceTree = ""; }; + 4C245B72176E1E3D0086100E /* DispatchQueueLogFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DispatchQueueLogFormatter.m; sourceTree = ""; }; 4C25D58616CF0FAA00F6806C /* EntryView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EntryView.xib; sourceTree = ""; }; 4C2C4C2A16D3BE3700D49295 /* KdbGroup+MPTreeTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KdbGroup+MPTreeTools.h"; sourceTree = ""; }; 4C2C4C2B16D3BE3700D49295 /* KdbGroup+MPTreeTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KdbGroup+MPTreeTools.m"; sourceTree = ""; }; @@ -172,13 +249,9 @@ 4C37A83F15B8B474005EF8EE /* MPOutlineDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOutlineDataSource.m; sourceTree = ""; }; 4C3BD51316D276F800389F1F /* MPToolbarDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPToolbarDelegate.h; sourceTree = ""; }; 4C3BD51416D276F800389F1F /* MPToolbarDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPToolbarDelegate.m; sourceTree = ""; }; - 4C3CD2A6175570C9005F911C /* DMSplitView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DMSplitView.h; sourceTree = ""; }; - 4C3CD2A7175570C9005F911C /* DMSplitView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DMSplitView.m; sourceTree = ""; }; 4C3D4C0617594CA40038DAAC /* HNHSeparator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHSeparator.h; sourceTree = ""; }; 4C3D4C0717594CA40038DAAC /* HNHSeparator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHSeparator.m; sourceTree = ""; }; 4C3FFD9D16DAF60600DF9186 /* FilterBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FilterBar.xib; sourceTree = ""; }; - 4C40AC581707819A0073D1C3 /* MPAbstractSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAbstractSettingsViewController.h; sourceTree = ""; }; - 4C40AC5B170782730073D1C3 /* MPAbstractSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAbstractSettingsViewController.m; sourceTree = ""; }; 4C431BCB16E2A82700700A81 /* MPPasteBoardController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasteBoardController.h; sourceTree = ""; }; 4C431BCC16E2A82700700A81 /* MPPasteBoardController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasteBoardController.m; sourceTree = ""; }; 4C431BCE16E2BAB000700A81 /* OverlayWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = OverlayWindow.xib; sourceTree = ""; }; @@ -398,6 +471,15 @@ 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayWindowController.m; sourceTree = ""; }; 4CE8247316E2F2B900573141 /* MPOverlayView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPOverlayView.h; sourceTree = ""; }; 4CE8247416E2F2B900573141 /* MPOverlayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayView.m; sourceTree = ""; }; + 4CF78055176E5CFD0032EE71 /* MPConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPConnection.h; sourceTree = ""; }; + 4CF78056176E5CFD0032EE71 /* MPConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPConnection.m; sourceTree = ""; }; + 4CF78058176E6D5F0032EE71 /* HNHTableRowView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHTableRowView.h; sourceTree = ""; }; + 4CF78059176E6D5F0032EE71 /* HNHTableRowView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHTableRowView.m; sourceTree = ""; }; + 4CF7805B176E71170032EE71 /* MPServerDaemon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPServerDaemon.h; sourceTree = ""; }; + 4CF7805C176E71170032EE71 /* MPServerDaemon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPServerDaemon.m; sourceTree = ""; }; + 4CF7805E176E75110032EE71 /* ServerSettings.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ServerSettings.xib; sourceTree = ""; }; + 4CF78062176E75AD0032EE71 /* MPServerSettingsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPServerSettingsController.h; sourceTree = ""; }; + 4CF78063176E75AD0032EE71 /* MPServerSettingsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPServerSettingsController.m; sourceTree = ""; }; 4CFC53BD16E94729007396BE /* MPShadowBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPShadowBox.h; sourceTree = ""; }; 4CFC53BE16E94729007396BE /* MPShadowBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPShadowBox.m; sourceTree = ""; }; 6E719715172058BA00E4C5FC /* MPDatabaseVersion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPDatabaseVersion.h; sourceTree = ""; }; @@ -421,13 +503,11 @@ 4C06398C15B980480004DE27 /* Views */ = { isa = PBXGroup; children = ( + 4CF78060176E75180032EE71 /* Settings */, 4C25D58616CF0FAA00F6806C /* EntryView.xib */, - 4C76155E1764C04C0015A1A6 /* GeneralSettings.xib */, 4C77E37B15B84A240093A587 /* MainMenu.xib */, 4C61EA0416D2FFE200AC519E /* OutlineView.xib */, - 4C7615651764C08C0015A1A6 /* PasswordEditView.xib */, - 4C76156A1764C0C40015A1A6 /* PasswordInputView.xib */, - 4C5A11FD1708DE8700223D8A /* PasswordCreatorView.xib */, + 4CF78061176E752E0032EE71 /* PasswordInputs */, 4C3FFD9D16DAF60600DF9186 /* FilterBar.xib */, 4C76156F1764C0E20015A1A6 /* InspectorView.xib */, 4CE39AC016ECE359000FE29D /* IconSelection.xib */, @@ -439,12 +519,144 @@ 4CE39AC316ECE4F7000FE29D /* MPPopupImageView.m */, 4C4A100D176286FD00BBF2CA /* MPTableView.h */, 4C4A100E176286FD00BBF2CA /* MPTableView.m */, - 4C09992E176D4C5C00C885CB /* MPTableCellView.h */, - 4C09992F176D4C5C00C885CB /* MPTableCellView.m */, ); name = Views; sourceTree = ""; }; + 4C245A64176E1E3C0086100E /* CocoaHTTPServer */ = { + isa = PBXGroup; + children = ( + 4C245A67176E1E3C0086100E /* Core */, + 4C245B5D176E1E3D0086100E /* Vendor */, + ); + path = CocoaHTTPServer; + sourceTree = ""; + }; + 4C245A67176E1E3C0086100E /* Core */ = { + isa = PBXGroup; + children = ( + 4C245A68176E1E3C0086100E /* Categories */, + 4C245A6F176E1E3C0086100E /* HTTPAuthenticationRequest.h */, + 4C245A70176E1E3C0086100E /* HTTPAuthenticationRequest.m */, + 4C245A71176E1E3C0086100E /* HTTPConnection.h */, + 4C245A72176E1E3C0086100E /* HTTPConnection.m */, + 4C245A73176E1E3C0086100E /* HTTPLogging.h */, + 4C245A74176E1E3C0086100E /* HTTPMessage.h */, + 4C245A75176E1E3C0086100E /* HTTPMessage.m */, + 4C245A76176E1E3C0086100E /* HTTPResponse.h */, + 4C245A77176E1E3C0086100E /* HTTPServer.h */, + 4C245A78176E1E3C0086100E /* HTTPServer.m */, + 4C245A79176E1E3C0086100E /* Mime */, + 4C245A80176E1E3C0086100E /* Responses */, + 4C245A8D176E1E3C0086100E /* WebSocket.h */, + 4C245A8E176E1E3C0086100E /* WebSocket.m */, + ); + path = Core; + sourceTree = ""; + }; + 4C245A68176E1E3C0086100E /* Categories */ = { + isa = PBXGroup; + children = ( + 4C245A69176E1E3C0086100E /* DDData.h */, + 4C245A6A176E1E3C0086100E /* DDData.m */, + 4C245A6B176E1E3C0086100E /* DDNumber.h */, + 4C245A6C176E1E3C0086100E /* DDNumber.m */, + 4C245A6D176E1E3C0086100E /* DDRange.h */, + 4C245A6E176E1E3C0086100E /* DDRange.m */, + ); + path = Categories; + sourceTree = ""; + }; + 4C245A79176E1E3C0086100E /* Mime */ = { + isa = PBXGroup; + children = ( + 4C245A7A176E1E3C0086100E /* MultipartFormDataParser.h */, + 4C245A7B176E1E3C0086100E /* MultipartFormDataParser.m */, + 4C245A7C176E1E3C0086100E /* MultipartMessageHeader.h */, + 4C245A7D176E1E3C0086100E /* MultipartMessageHeader.m */, + 4C245A7E176E1E3C0086100E /* MultipartMessageHeaderField.h */, + 4C245A7F176E1E3C0086100E /* MultipartMessageHeaderField.m */, + ); + path = Mime; + sourceTree = ""; + }; + 4C245A80176E1E3C0086100E /* Responses */ = { + isa = PBXGroup; + children = ( + 4C245A81176E1E3C0086100E /* HTTPAsyncFileResponse.h */, + 4C245A82176E1E3C0086100E /* HTTPAsyncFileResponse.m */, + 4C245A83176E1E3C0086100E /* HTTPDataResponse.h */, + 4C245A84176E1E3C0086100E /* HTTPDataResponse.m */, + 4C245A85176E1E3C0086100E /* HTTPDynamicFileResponse.h */, + 4C245A86176E1E3C0086100E /* HTTPDynamicFileResponse.m */, + 4C245A87176E1E3C0086100E /* HTTPErrorResponse.h */, + 4C245A88176E1E3C0086100E /* HTTPErrorResponse.m */, + 4C245A89176E1E3C0086100E /* HTTPFileResponse.h */, + 4C245A8A176E1E3C0086100E /* HTTPFileResponse.m */, + 4C245A8B176E1E3C0086100E /* HTTPRedirectResponse.h */, + 4C245A8C176E1E3C0086100E /* HTTPRedirectResponse.m */, + ); + path = Responses; + sourceTree = ""; + }; + 4C245B5D176E1E3D0086100E /* Vendor */ = { + isa = PBXGroup; + children = ( + 4C245B5E176E1E3D0086100E /* CocoaAsyncSocket */, + 4C245B62176E1E3D0086100E /* CocoaLumberjack */, + ); + path = Vendor; + sourceTree = ""; + }; + 4C245B5E176E1E3D0086100E /* CocoaAsyncSocket */ = { + isa = PBXGroup; + children = ( + 4C245B60176E1E3D0086100E /* GCDAsyncSocket.h */, + 4C245B61176E1E3D0086100E /* GCDAsyncSocket.m */, + ); + path = CocoaAsyncSocket; + sourceTree = ""; + }; + 4C245B62176E1E3D0086100E /* CocoaLumberjack */ = { + isa = PBXGroup; + children = ( + 4C245B64176E1E3D0086100E /* DDAbstractDatabaseLogger.h */, + 4C245B65176E1E3D0086100E /* DDAbstractDatabaseLogger.m */, + 4C245B66176E1E3D0086100E /* DDASLLogger.h */, + 4C245B67176E1E3D0086100E /* DDASLLogger.m */, + 4C245B68176E1E3D0086100E /* DDFileLogger.h */, + 4C245B69176E1E3D0086100E /* DDFileLogger.m */, + 4C245B6A176E1E3D0086100E /* DDLog.h */, + 4C245B6B176E1E3D0086100E /* DDLog.m */, + 4C245B6C176E1E3D0086100E /* DDTTYLogger.h */, + 4C245B6D176E1E3D0086100E /* DDTTYLogger.m */, + 4C245B6E176E1E3D0086100E /* Extensions */, + ); + path = CocoaLumberjack; + sourceTree = ""; + }; + 4C245B6E176E1E3D0086100E /* Extensions */ = { + isa = PBXGroup; + children = ( + 4C245B6F176E1E3D0086100E /* ContextFilterLogFormatter.h */, + 4C245B70176E1E3D0086100E /* ContextFilterLogFormatter.m */, + 4C245B71176E1E3D0086100E /* DispatchQueueLogFormatter.h */, + 4C245B72176E1E3D0086100E /* DispatchQueueLogFormatter.m */, + ); + path = Extensions; + sourceTree = ""; + }; + 4C245C11176E22150086100E /* Server */ = { + isa = PBXGroup; + children = ( + 4CF78055176E5CFD0032EE71 /* MPConnection.h */, + 4CF78056176E5CFD0032EE71 /* MPConnection.m */, + 4CF7805B176E71170032EE71 /* MPServerDaemon.h */, + 4CF7805C176E71170032EE71 /* MPServerDaemon.m */, + ); + name = Server; + sourceTree = ""; + }; 4C2C4C2516D3BCEA00D49295 /* KeePassLibAdditions */ = { isa = PBXGroup; children = ( @@ -514,16 +726,6 @@ name = Model; sourceTree = ""; }; - 4C3CD2A5175570C9005F911C /* DMSplitView */ = { - isa = PBXGroup; - children = ( - 4C3CD2A6175570C9005F911C /* DMSplitView.h */, - 4C3CD2A7175570C9005F911C /* DMSplitView.m */, - ); - name = DMSplitView; - path = DMSplitView/DMSplitView; - sourceTree = ""; - }; 4C46B8821706397A0046109A /* Security Additions */ = { isa = PBXGroup; children = ( @@ -656,8 +858,8 @@ 4C77E35715B84A240093A587 = { isa = PBXGroup; children = ( + 4C245A64176E1E3C0086100E /* CocoaHTTPServer */, 4CC3AAB6175F4983003EF01B /* HNHUi */, - 4C3CD2A5175570C9005F911C /* DMSplitView */, 4C669B2D16760ED100DD0774 /* MiniKeePassLib */, 4CAD745415B887FD00104512 /* KissXML */, 4C77E36C15B84A240093A587 /* MacPass */, @@ -699,6 +901,7 @@ 4C77E36C15B84A240093A587 /* MacPass */ = { isa = PBXGroup; children = ( + 4C245C11176E22150086100E /* Server */, 4C46B8821706397A0046109A /* Security Additions */, 4C2C4C2516D3BCEA00D49295 /* KeePassLibAdditions */, 4C2E382016D141F700037A9D /* Helper */, @@ -736,12 +939,16 @@ children = ( 4CA0B2F715BCAF6700654E32 /* MPGeneralSettingsController.h */, 4CA0B2F815BCAF6700654E32 /* MPGeneralSettingsController.m */, + 4CF78062176E75AD0032EE71 /* MPServerSettingsController.h */, + 4CF78063176E75AD0032EE71 /* MPServerSettingsController.m */, 4C2E382416D1470200037A9D /* MPViewController.h */, 4C2E382516D1470200037A9D /* MPViewController.m */, 4C65FAE616D16DDB006E0577 /* MPPasswordInputController.h */, 4C65FAE716D16DDB006E0577 /* MPPasswordInputController.m */, 4C7E8328172DE2F2002493D8 /* MPPasswordEditViewController.h */, 4C7E8329172DE2F2002493D8 /* MPPasswordEditViewController.m */, + 4C5A11FB1708DE8700223D8A /* MPPasswordCreatorViewController.h */, + 4C5A11FC1708DE8700223D8A /* MPPasswordCreatorViewController.m */, 4CDF01A116D1B76700D0AC08 /* MPEntryViewController.h */, 4CDF01A216D1B76700D0AC08 /* MPEntryViewController.m */, 4C61EA0116D2FD0800AC519E /* MPOutlineViewController.h */, @@ -750,10 +957,6 @@ 4C77547416E55FE800970E02 /* MPInspectorViewController.m */, 4CE39ABD16ECE34A000FE29D /* MPIconSelectViewController.h */, 4CE39ABE16ECE34A000FE29D /* MPIconSelectViewController.m */, - 4C40AC581707819A0073D1C3 /* MPAbstractSettingsViewController.h */, - 4C40AC5B170782730073D1C3 /* MPAbstractSettingsViewController.m */, - 4C5A11FB1708DE8700223D8A /* MPPasswordCreatorViewController.h */, - 4C5A11FC1708DE8700223D8A /* MPPasswordCreatorViewController.m */, ); name = "View Controller"; sourceTree = ""; @@ -847,6 +1050,8 @@ 4C099932176D4EA600C885CB /* HNHScrollView.m */, 4C80BB6D176DE06F00E5E248 /* HNHFlippedView.h */, 4C80BB6E176DE06F00E5E248 /* HNHFlippedView.m */, + 4CF78058176E6D5F0032EE71 /* HNHTableRowView.h */, + 4CF78059176E6D5F0032EE71 /* HNHTableRowView.m */, ); path = HNHUi; sourceTree = ""; @@ -895,6 +1100,25 @@ name = Windows; sourceTree = ""; }; + 4CF78060176E75180032EE71 /* Settings */ = { + isa = PBXGroup; + children = ( + 4C76155E1764C04C0015A1A6 /* GeneralSettings.xib */, + 4CF7805E176E75110032EE71 /* ServerSettings.xib */, + ); + name = Settings; + sourceTree = ""; + }; + 4CF78061176E752E0032EE71 /* PasswordInputs */ = { + isa = PBXGroup; + children = ( + 4C7615651764C08C0015A1A6 /* PasswordEditView.xib */, + 4C76156A1764C0C40015A1A6 /* PasswordInputView.xib */, + 4C5A11FD1708DE8700223D8A /* PasswordCreatorView.xib */, + ); + name = PasswordInputs; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -981,6 +1205,7 @@ 4C7615631764C08C0015A1A6 /* PasswordEditView.xib in Resources */, 4C7714AA176C998F00549F2A /* 43_TrashTemplate.pdf in Resources */, 4C7714AC176C9D4600549F2A /* 99_InfoTemplate.pdf in Resources */, + 4CF7805F176E75110032EE71 /* ServerSettings.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1079,12 +1304,10 @@ 4C46B88517063A070046109A /* NSString+MPPasswordCreation.m in Sources */, 4C46B88817063A170046109A /* NSString+MPPasswordAnalysis.m in Sources */, 4C46B88B1706D16E0046109A /* NSData+MPRandomBytes.m in Sources */, - 4C40AC5C170782730073D1C3 /* MPAbstractSettingsViewController.m in Sources */, 4C5A11FE1708DE8700223D8A /* MPPasswordCreatorViewController.m in Sources */, 4C7E832A172DE2F2002493D8 /* MPPasswordEditViewController.m in Sources */, 4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */, 4C22040D1746ED160054C916 /* KdbGroup+Undo.m in Sources */, - 4C3CD2A8175570C9005F911C /* DMSplitView.m in Sources */, 4C3D4C0817594CA40038DAAC /* HNHSeparator.m in Sources */, 4C5BF67B175C01F300D53DF7 /* MPUppercaseStringValueTransformer.m in Sources */, 4CC3AABD175F4983003EF01B /* HNHRoundedTextFieldCell.m in Sources */, @@ -1102,10 +1325,38 @@ 4C79DF2A176685870083708F /* HNHRoundedTextField.m in Sources */, 4C46E09E17673A0A00DA62E8 /* HNHShadowBox.m in Sources */, 4C37A6731769393300AD0A40 /* HNHTableHeaderCell.m in Sources */, - 4C099930176D4C5C00C885CB /* MPTableCellView.m in Sources */, 4C099933176D4EA600C885CB /* HNHScrollView.m in Sources */, 4CA2335A176DBFE100F0B6AC /* MPLockDaemon.m in Sources */, 4C80BB6F176DE06F00E5E248 /* HNHFlippedView.m in Sources */, + 4C245B76176E1E3D0086100E /* DDData.m in Sources */, + 4C245B77176E1E3D0086100E /* DDNumber.m in Sources */, + 4C245B78176E1E3D0086100E /* DDRange.m in Sources */, + 4C245B79176E1E3D0086100E /* HTTPAuthenticationRequest.m in Sources */, + 4C245B7A176E1E3D0086100E /* HTTPConnection.m in Sources */, + 4C245B7B176E1E3D0086100E /* HTTPMessage.m in Sources */, + 4C245B7C176E1E3D0086100E /* HTTPServer.m in Sources */, + 4C245B7D176E1E3D0086100E /* MultipartFormDataParser.m in Sources */, + 4C245B7E176E1E3D0086100E /* MultipartMessageHeader.m in Sources */, + 4C245B7F176E1E3D0086100E /* MultipartMessageHeaderField.m in Sources */, + 4C245B80176E1E3D0086100E /* HTTPAsyncFileResponse.m in Sources */, + 4C245B81176E1E3D0086100E /* HTTPDataResponse.m in Sources */, + 4C245B82176E1E3D0086100E /* HTTPDynamicFileResponse.m in Sources */, + 4C245B83176E1E3D0086100E /* HTTPErrorResponse.m in Sources */, + 4C245B84176E1E3D0086100E /* HTTPFileResponse.m in Sources */, + 4C245B85176E1E3D0086100E /* HTTPRedirectResponse.m in Sources */, + 4C245B86176E1E3D0086100E /* WebSocket.m in Sources */, + 4C245BE9176E1E3D0086100E /* GCDAsyncSocket.m in Sources */, + 4C245BEB176E1E3D0086100E /* DDAbstractDatabaseLogger.m in Sources */, + 4C245BEC176E1E3D0086100E /* DDASLLogger.m in Sources */, + 4C245BED176E1E3D0086100E /* DDFileLogger.m in Sources */, + 4C245BEE176E1E3D0086100E /* DDLog.m in Sources */, + 4C245BEF176E1E3D0086100E /* DDTTYLogger.m in Sources */, + 4C245BF0176E1E3D0086100E /* ContextFilterLogFormatter.m in Sources */, + 4C245BF1176E1E3D0086100E /* DispatchQueueLogFormatter.m in Sources */, + 4CF78057176E5CFD0032EE71 /* MPConnection.m in Sources */, + 4CF7805A176E6D5F0032EE71 /* HNHTableRowView.m in Sources */, + 4CF7805D176E71170032EE71 /* MPServerDaemon.m in Sources */, + 4CF78064176E75AD0032EE71 /* MPServerSettingsController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/MacPass/Base.lproj/GeneralSettings.xib b/MacPass/Base.lproj/GeneralSettings.xib index 8fc4ebde..19e31600 100644 --- a/MacPass/Base.lproj/GeneralSettings.xib +++ b/MacPass/Base.lproj/GeneralSettings.xib @@ -176,28 +176,28 @@ 400 75 - + + + Never + + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + YES ClipboardClearInterval - - - Never - - 2147483647 - 1 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - _popUpItemAction: - - + 10 Seconds @@ -294,23 +294,24 @@ 400 75 - + + + 1 Minute + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + 60 + + YES LockTimes - - - 1 Minute - - 1048576 - 2147483647 - - - _popUpItemAction: - 60 - - + 5 Minutes @@ -636,6 +637,38 @@ 29 3 + + + 8 + 0 + + 0 + 1 + + 230 + + 1000 + + 9 + 40 + 1 + + + + 7 + 0 + + 0 + 1 + + 400 + + 1000 + + 9 + 40 + 1 + @@ -1239,13 +1272,25 @@ + + 798 + + + + + 799 + + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + + + @@ -1343,26 +1388,20 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - 797 + 799 - - MPAbstractSettingsViewController - MPViewController - - IBProjectSource - ./Classes/MPAbstractSettingsViewController.h - - MPGeneralSettingsController - MPAbstractSettingsViewController + NSViewController NSButton NSPopUpButton @@ -1387,14 +1426,6 @@ ./Classes/MPGeneralSettingsController.h - - MPViewController - NSViewController - - IBProjectSource - ./Classes/MPViewController.h - - NSLayoutConstraint NSObject diff --git a/MacPass/Base.lproj/InspectorView.xib b/MacPass/Base.lproj/InspectorView.xib index d23485fd..60e946fe 100644 --- a/MacPass/Base.lproj/InspectorView.xib +++ b/MacPass/Base.lproj/InspectorView.xib @@ -2519,7 +2519,6 @@ com.apple.InterfaceBuilder.CocoaPlugin - MPTableCellView @@ -2770,14 +2769,6 @@ ./Classes/MPPopupImageView.h - - MPTableCellView - NSTableCellView - - IBProjectSource - ./Classes/MPTableCellView.h - - MPViewController NSViewController diff --git a/MacPass/MPAbstractSettingsViewController.h b/MacPass/MPAbstractSettingsViewController.h deleted file mode 100644 index 6eef21f7..00000000 --- a/MacPass/MPAbstractSettingsViewController.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// MPAbstractSettingsViewController.h -// MacPass -// -// Created by Michael Starke on 30.03.13. -// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. -// - -#import "MPSettingsTab.h" -#import "MPViewController.h" - -@interface MPAbstractSettingsViewController : MPViewController - -@end diff --git a/MacPass/MPAbstractSettingsViewController.m b/MacPass/MPAbstractSettingsViewController.m deleted file mode 100644 index fca70f3a..00000000 --- a/MacPass/MPAbstractSettingsViewController.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// MPAbstractSettingsViewController.m -// MacPass -// -// Created by Michael Starke on 30.03.13. -// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. -// - -#import "MPAbstractSettingsViewController.h" - -@implementation MPAbstractSettingsViewController - -+ (NSString *)identifier { - return @"NONAME"; -} - -@end diff --git a/MacPass/MPAppDelegate.m b/MacPass/MPAppDelegate.m index 316c0ae6..77c32c90 100644 --- a/MacPass/MPAppDelegate.m +++ b/MacPass/MPAppDelegate.m @@ -12,8 +12,12 @@ #import "MPPasswordCreatorViewController.h" #import "MPSettingsHelper.h" #import "MPUppercaseStringValueTransformer.h" +#import "MPServerDaemon.h" -@interface MPAppDelegate () +@interface MPAppDelegate () { +@private + MPServerDaemon *serverDaemon; +} @property (retain, nonatomic) MPSettingsWindowController *settingsController; @property (retain, nonatomic) MPPasswordCreatorViewController *passwordCreatorController; @@ -33,9 +37,15 @@ return [[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeyOpenEmptyDatabaseOnLaunch]; } +- (void)applicationDidFinishLaunching:(NSNotification *)notification { + serverDaemon = [[MPServerDaemon alloc] init]; +} + + - (void)dealloc { [_settingsController release]; [_passwordCreatorController release]; + [serverDaemon release]; [super dealloc]; } diff --git a/MacPass/MPTableCellView.h b/MacPass/MPConnection.h similarity index 60% rename from MacPass/MPTableCellView.h rename to MacPass/MPConnection.h index 9b8d2bac..6334de25 100644 --- a/MacPass/MPTableCellView.h +++ b/MacPass/MPConnection.h @@ -1,13 +1,13 @@ // -// MPTableCellView.h +// MPConnection.h // MacPass // // Created by Michael Starke on 16.06.13. // Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. // -#import +#import "HTTPConnection.h" -@interface MPTableCellView : NSTableCellView +@interface MPConnection : HTTPConnection @end diff --git a/MacPass/MPConnection.m b/MacPass/MPConnection.m new file mode 100644 index 00000000..897b0565 --- /dev/null +++ b/MacPass/MPConnection.m @@ -0,0 +1,17 @@ +// +// MPConnection.m +// MacPass +// +// Created by Michael Starke on 16.06.13. +// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. +// + +#import "MPConnection.h" + +@implementation MPConnection + +- (NSObject *)httpResponseForMethod:(NSString *)method URI:(NSString *)path { + return [super httpResponseForMethod:method URI:path]; +} + +@end diff --git a/MacPass/MPEntryViewController.m b/MacPass/MPEntryViewController.m index 0e0b4c20..0af0e3af 100644 --- a/MacPass/MPEntryViewController.m +++ b/MacPass/MPEntryViewController.m @@ -219,7 +219,6 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername"; self.selectedEntry = [self.entryArrayController arrangedObjects][[self.entryTable selectedRow]]; } [[NSNotificationCenter defaultCenter] postNotificationName:MPDidChangeSelectedEntryNotification object:self userInfo:nil]; - } #pragma mark Notifications diff --git a/MacPass/MPGeneralSettingsController.h b/MacPass/MPGeneralSettingsController.h index 6315a142..cced9c1e 100644 --- a/MacPass/MPGeneralSettingsController.h +++ b/MacPass/MPGeneralSettingsController.h @@ -7,9 +7,9 @@ // #import -#import "MPAbstractSettingsViewController.h" +#import "MPSettingsTab.h" -@interface MPGeneralSettingsController : MPAbstractSettingsViewController +@interface MPGeneralSettingsController : NSViewController @property (assign) IBOutlet NSImageView *imageView; @property (assign) IBOutlet NSButton *clearPasteboardOnQuitCheckButton; @property (assign) IBOutlet NSPopUpButton *clearPasteboardTimeoutPopup; diff --git a/MacPass/MPGeneralSettingsController.m b/MacPass/MPGeneralSettingsController.m index 86b2a11a..3cfe075d 100644 --- a/MacPass/MPGeneralSettingsController.m +++ b/MacPass/MPGeneralSettingsController.m @@ -8,21 +8,22 @@ #import "MPGeneralSettingsController.h" #import "MPSettingsHelper.h" +#import "MPIconHelper.h" NSString *const MPGeneralSetingsIdentifier = @"GeneralSettingsTab"; @implementation MPGeneralSettingsController -+ (NSString *)identifier { - return MPGeneralSetingsIdentifier; -} - - (id)init { return [self initWithNibName:@"GeneralSettings" bundle:[NSBundle mainBundle]]; } +- (NSString *)identifier { + return MPGeneralSetingsIdentifier; +} + - (NSImage *)image { - return [NSImage imageNamed:NSImageNamePreferencesGeneral]; + return [MPIconHelper icon:MPIconWarning]; } - (NSString *)label { diff --git a/MacPass/MPInspectorViewController.m b/MacPass/MPInspectorViewController.m index 179e9e35..a8127bcb 100644 --- a/MacPass/MPInspectorViewController.m +++ b/MacPass/MPInspectorViewController.m @@ -277,9 +277,11 @@ NSTableCellView *tableCellView = [tableView makeViewWithIdentifier:[tableColumn identifier] owner:tableView]; BinaryRef *binaryRef = [self.attachmentController arrangedObjects][row]; [tableCellView.textField bind:NSValueBinding toObject:binaryRef withKeyPath:@"key" options:nil]; - [[tableCellView.textField cell] setBackgroundStyle:NSBackgroundStyleRaised]; - [[tableCellView.imageView cell] setBackgroundStyle:NSBackgroundStyleLight]; return tableCellView; } +- (void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row { + NSLog(@"didAddRowView"); +} + @end diff --git a/MacPass/MPPasswordCreatorViewController.m b/MacPass/MPPasswordCreatorViewController.m index 9f207ae8..ede2d758 100644 --- a/MacPass/MPPasswordCreatorViewController.m +++ b/MacPass/MPPasswordCreatorViewController.m @@ -67,7 +67,7 @@ [self _resetCharacters]; } -- (IBAction)_generatePassword:(id)sender { +- (IBAction)_generatePassword:(id)sender { if(_useCustomString) { if([[_customCharactersTextField stringValue] length] > 0) { self.password = [[_customCharactersTextField stringValue] passwordWithLength:_passwordLength]; diff --git a/MacPass/MPServerDaemon.h b/MacPass/MPServerDaemon.h new file mode 100644 index 00000000..f61dd0a1 --- /dev/null +++ b/MacPass/MPServerDaemon.h @@ -0,0 +1,13 @@ +// +// MPServerDaemon.h +// MacPass +// +// Created by Michael Starke on 17.06.13. +// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. +// + +#import + +@interface MPServerDaemon : NSObject + +@end diff --git a/MacPass/MPServerDaemon.m b/MacPass/MPServerDaemon.m new file mode 100644 index 00000000..043894ab --- /dev/null +++ b/MacPass/MPServerDaemon.m @@ -0,0 +1,69 @@ +// +// MPServerDaemon.m +// MacPass +// +// Created by Michael Starke on 17.06.13. +// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. +// + +#import "MPServerDaemon.h" +#import "MPSettingsHelper.h" +#import "HTTPServer.h" + +@interface MPServerDaemon () { +@private + HTTPServer *server; +} + +@property (nonatomic, assign) BOOL isEnabled; + +@end + +@implementation MPServerDaemon + +- (id)init { + self = [super init]; + if (self) { + NSUserDefaultsController *defaultsController = [NSUserDefaultsController sharedUserDefaultsController]; + NSString *defaultsKeyPath = [NSString stringWithFormat:@"values.%@", kMPSettingsKeyEnableHttpServer]; + [self bind:@"isEnabled" toObject:defaultsController withKeyPath:defaultsKeyPath options:nil]; + } + return self; +} + +- (void)dealloc +{ + [server release]; + [super dealloc]; +} + +- (void)setIsEnabled:(BOOL)enabled { + if(_isEnabled == enabled) { + return; // NO changes + } + _isEnabled = enabled; + if(enabled) { + if(!server) { + [self _setupServer]; + } + NSError *error= nil; + if(![server start:&error]) { + [NSApp presentError:error]; + } + } + else { + /* Do not let the resource linger around */ + [server release]; + server = nil; + } +} + +- (void)_setupServer { + NSAssert(server == nil, @"Server should be nil"); + server = [[HTTPServer alloc] init]; + [server setInterface:@"localhost"]; + NSInteger port = [[NSUserDefaults standardUserDefaults] integerForKey:kMPSettingsKeyHttpPort]; + [server setPort:port]; +} + +@end diff --git a/MacPass/MPServerSettingsController.h b/MacPass/MPServerSettingsController.h new file mode 100644 index 00000000..85754acb --- /dev/null +++ b/MacPass/MPServerSettingsController.h @@ -0,0 +1,16 @@ +// +// MPServerSettingsController.h +// MacPass +// +// Created by Michael Starke on 17.06.13. +// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. +// + +#import "MPViewController.h" +#import "MPSettingsTab.h" + +@interface MPServerSettingsController : MPViewController + +@property (assign) IBOutlet NSButton *enableServerCheckbutton; + +@end diff --git a/MacPass/MPServerSettingsController.m b/MacPass/MPServerSettingsController.m new file mode 100644 index 00000000..ae86c14b --- /dev/null +++ b/MacPass/MPServerSettingsController.m @@ -0,0 +1,42 @@ +// +// MPServerSettingsController.m +// MacPass +// +// Created by Michael Starke on 17.06.13. +// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. +// + +#import "MPServerSettingsController.h" +#import "MPSettingsHelper.h" +#import "MPIconHelper.h" + +@interface MPServerSettingsController () + +@end + +@implementation MPServerSettingsController + +- (NSString *)identifier { + return @"ServerSettings"; +} + +- (NSImage *)image { + return [MPIconHelper icon:MPIconServer]; +} + +- (NSString *)label { + return NSLocalizedString(@"SERVER_SETTINGS", ""); +} + +- (id)init { + self = [super initWithNibName:@"ServerSettings" bundle:nil]; + return self; +} + +- (void)didLoadView { + NSUserDefaultsController *defaultsController = [NSUserDefaultsController sharedUserDefaultsController]; + NSString *serverKeyPath = [NSString stringWithFormat:@"values.%@", kMPSettingsKeyEnableHttpServer]; + [self.enableServerCheckbutton bind:NSValueBinding toObject:defaultsController withKeyPath:serverKeyPath options:nil]; +} + +@end diff --git a/MacPass/MPSettingsHelper.h b/MacPass/MPSettingsHelper.h index ac94dccf..754a5ecc 100644 --- a/MacPass/MPSettingsHelper.h +++ b/MacPass/MPSettingsHelper.h @@ -12,6 +12,8 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyPasteboardClearTimeout; APPKIT_EXTERN NSString *const kMPSettingsKeyClearPasteboardOnQuit; APPKIT_EXTERN NSString *const kMPSettingsKeyPasswordEncoding; APPKIT_EXTERN NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch; +APPKIT_EXTERN NSString *const kMPSettingsKeyHttpPort; +APPKIT_EXTERN NSString *const kMPSettingsKeyEnableHttpServer; typedef NS_ENUM(NSUInteger, MPPasswordEncoding) { MPPasswordEncodingUTF8, diff --git a/MacPass/MPSettingsHelper.m b/MacPass/MPSettingsHelper.m index 2a0e269d..96bb2965 100644 --- a/MacPass/MPSettingsHelper.m +++ b/MacPass/MPSettingsHelper.m @@ -11,6 +11,8 @@ NSString *const kMPSettingsKeyPasteboardClearTimeout = @"ClipboardClearTimeout"; NSString *const kMPSettingsKeyClearPasteboardOnQuit = @"ClearClipboardOnQuit"; NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch = @"OpenEmptyDatabaseOnLaunch"; +NSString *const kMPSettingsKeyHttpPort =@"HttpPort"; +NSString *const kMPSettingsKeyEnableHttpServer = @"kMPSettingsKeyEnableHttpServer"; @implementation MPSettingsHelper @@ -23,6 +25,8 @@ NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch = @"OpenEmptyDatabaseOnL kMPSettingsKeyPasteboardClearTimeout: @10, kMPSettingsKeyClearPasteboardOnQuit: @YES, kMPSettingsKeyOpenEmptyDatabaseOnLaunch: @YES, + kMPSettingsKeyHttpPort: @19455, + kMPSettingsKeyEnableHttpServer: @NO }; } diff --git a/MacPass/MPSettingsTab.h b/MacPass/MPSettingsTab.h index 878de98f..beae2616 100644 --- a/MacPass/MPSettingsTab.h +++ b/MacPass/MPSettingsTab.h @@ -15,7 +15,7 @@ @protocol MPSettingsTab @required -+ (NSString *)identifier; +- (NSString *)identifier; @optional - (NSString *)label; diff --git a/MacPass/MPSettingsWindowController.m b/MacPass/MPSettingsWindowController.m index c0cf9609..cfb9a914 100644 --- a/MacPass/MPSettingsWindowController.m +++ b/MacPass/MPSettingsWindowController.m @@ -8,6 +8,7 @@ #import "MPSettingsWindowController.h" #import "MPGeneralSettingsController.h" +#import "MPServerSettingsController.h" @interface MPSettingsWindowController () @@ -46,7 +47,7 @@ - (void)showSettings { if([self.settingsController count] > 0) { id tab = [self.settingsController allValues][0]; - NSString *identifier = [[tab class] identifier]; + NSString *identifier = [tab identifier]; [self showSettingsTabWithIdentifier:identifier]; } } @@ -60,13 +61,30 @@ NSLog(@"Warning. Unknow settingscontroller for identifier: %@. Did you miss to add the controller?", identifier); return; } - NSViewController *tabViewController = (NSViewController *)tab; [self.toolbar setSelectedItemIdentifier:identifier]; - NSRect newRect = [[self window] frameRectForContentRect:[tabViewController.view frame]]; - newRect.origin = [[self window] frame].origin; - newRect.origin.y += [[self window] frame].size.height - newRect.size.height; - [[self window] setFrame:newRect display:YES animate:YES]; - [[self window] setContentView:tabViewController.view]; + if([tab respondsToSelector:@selector(label)]) { + [[self window] setTitle:[tab label]]; + } + else { + [[self window] setTitle:[tab identifier]]; + } + NSView *tabView = [(NSViewController *)tab view]; + NSView *contentView = [[self window] contentView]; + if( [[contentView subviews] count] == 1) { + [[contentView subviews][0] removeFromSuperview]; + } + [contentView addSubview:tabView]; + [contentView layout]; + [contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[tabView]-0-|" + options:0 + metrics:nil + views:NSDictionaryOfVariableBindings(tabView)]]; + [contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[tabView]-0-|" + options:0 + metrics:nil + views:NSDictionaryOfVariableBindings(tabView)]]; + + [contentView layoutSubtreeIfNeeded]; [[self window] makeKeyAndOrderFront:[self window]]; } @@ -83,7 +101,7 @@ userInfo:nil]; @throw controllerException; } - NSString *identifier = [[tabController class] identifier]; + NSString *identifier = [tabController identifier]; if(nil != self.settingsController[identifier]) { NSLog(@"Warning: Settingscontroller with identifer %@ already present!", identifier); } @@ -94,15 +112,19 @@ - (void)_setupDefaultSettingsTabs { MPGeneralSettingsController *generalSettingsController = [[MPGeneralSettingsController alloc] init]; + MPServerSettingsController *serverSettingsController = [[MPServerSettingsController alloc] init]; [self _addSettingsTab:generalSettingsController]; + [self _addSettingsTab:serverSettingsController]; - [generalSettingsController release]; + for(id controller in _settingsController) { + [controller release]; + } } - (void)_showSettingsTab:(id)sender { - if([sender respondsToSelector:@selector(identifier)]) { - NSString *identfier = [sender identifier]; + if([sender respondsToSelector:@selector(itemIdentifier)]) { + NSString *identfier = [sender itemIdentifier]; [self showSettingsTabWithIdentifier:identfier]; } } diff --git a/MacPass/MPTableCellView.m b/MacPass/MPTableCellView.m deleted file mode 100644 index d51217f3..00000000 --- a/MacPass/MPTableCellView.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// MPTableCellView.m -// MacPass -// -// Created by Michael Starke on 16.06.13. -// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. -// - -#import "MPTableCellView.h" - -@implementation MPTableCellView - -- (void)setBackgroundStyle:(NSBackgroundStyle)backgroundStyle { - [super setBackgroundStyle:NSBackgroundStyleRaised]; -} - -@end diff --git a/MacPass/MacPass-Info.plist b/MacPass/MacPass-Info.plist index bd795e53..ccfb23bf 100644 --- a/MacPass/MacPass-Info.plist +++ b/MacPass/MacPass-Info.plist @@ -48,7 +48,7 @@ CFBundleSignature ???? CFBundleVersion - 382 + 497 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} NSHumanReadableCopyright diff --git a/MacPass/NSData+MPRandomBytes.m b/MacPass/NSData+MPRandomBytes.m index a63a3a13..b696681a 100644 --- a/MacPass/NSData+MPRandomBytes.m +++ b/MacPass/NSData+MPRandomBytes.m @@ -12,6 +12,7 @@ @implementation NSData (MPRandomBytes) + (NSData *)dataWithRandomBytes:(NSUInteger)length { + NSLog(@"requesting %ld bytes", length); unsigned char *bytes = malloc(sizeof(unsigned char) * length); SecRandomCopyBytes(kSecRandomDefault, length, bytes); return [NSData dataWithBytesNoCopy:bytes length:length freeWhenDone:YES]; diff --git a/MacPass/NSString+MPPasswordCreation.h b/MacPass/NSString+MPPasswordCreation.h index a703e6ba..7eec0e66 100644 --- a/MacPass/NSString+MPPasswordCreation.h +++ b/MacPass/NSString+MPPasswordCreation.h @@ -16,11 +16,6 @@ typedef NS_OPTIONS(NSUInteger, MPPasswordCharacterFlags) { MPPasswordCharactersAll = MPPasswordCharactersUpperCase | MPPasswordCharactersLowerCase | MPPasswordCharactersNumbers | MPPasswordCharactersSymbols }; -/* - Generates a random integer in between (inkluding) minimum and maxium - */ -static NSUInteger randomInteger(NSUInteger minimum, NSUInteger maximum); - @interface NSString (MPPasswordCreation) /* diff --git a/MacPass/NSString+MPPasswordCreation.m b/MacPass/NSString+MPPasswordCreation.m index 488d78d3..87007f67 100644 --- a/MacPass/NSString+MPPasswordCreation.m +++ b/MacPass/NSString+MPPasswordCreation.m @@ -13,35 +13,18 @@ NSString *const kMPLowercaseLetterCharacters = @"abcdefghijklmnopqrstuvw"; NSString *const kMPNumberCharacters = @"1234567890"; NSString *const kMPSymbolCharacters = @"!$%&\\|/<>(){}[]=?*'+#-_.:,;"; - -static NSUInteger randomInteger(NSUInteger minimum, NSUInteger maximum) { - NSInteger delta = maximum - minimum; - if( delta == 0) { - return maximum; - } - if( delta < 0 ) { - minimum -= delta; - delta = -delta; - } - NSUInteger randomByteSize = floor(log2(delta)); - NSData *randomData = [NSData dataWithRandomBytes:randomByteSize]; - NSNumber *number = [NSNumber numberWithUnsignedChar:(unsigned char)[randomData bytes]]; - NSUInteger randomNumber = [number integerValue]; - return minimum + (randomNumber % delta); -} - static NSString *allowedCharactersString(MPPasswordCharacterFlags flags) { NSMutableString *characterString = [NSMutableString stringWithCapacity:30]; - if( 0 != (flags & MPPasswordCharactersLowerCase) ) { + if(flags & MPPasswordCharactersLowerCase) { [characterString appendString:kMPLowercaseLetterCharacters]; } - if( 0 != (flags & MPPasswordCharactersUpperCase) ) { + if(flags & MPPasswordCharactersUpperCase) { [characterString appendString:[kMPLowercaseLetterCharacters uppercaseString]]; } - if(0 != (flags & MPPasswordCharactersNumbers) ) { + if(flags & MPPasswordCharactersNumbers) { [characterString appendString:kMPNumberCharacters]; } - if(0 != (flags & MPPasswordCharactersSymbols) ){ + if(flags & MPPasswordCharactersSymbols){ [characterString appendString:kMPSymbolCharacters]; } return characterString; @@ -83,11 +66,10 @@ static NSString *allowedCharactersString(MPPasswordCharacterFlags flags) { } - (NSString *)randomCharacter { - NSUInteger randomIndex = randomInteger(0, [self length] - 1); - if(randomIndex >= [self length]) { - return nil; - } - return [self substringWithRange:NSMakeRange(randomIndex, 1)]; + NSData *data = [NSData dataWithRandomBytes:sizeof(unsigned long)]; + NSUInteger randomIndex; + [data getBytes:&randomIndex length:[data length]]; + return [self substringWithRange:NSMakeRange(randomIndex % [self length], 1)]; } @end diff --git a/MacPass/ServerSettings.xib b/MacPass/ServerSettings.xib new file mode 100644 index 00000000..6ab349a2 --- /dev/null +++ b/MacPass/ServerSettings.xib @@ -0,0 +1,312 @@ + + + + 1080 + 12E55 + 3084 + 1187.39 + 626.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 3084 + + + IBNSLayoutConstraint + NSButton + NSButtonCell + NSCustomObject + NSCustomView + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + MPServerSettingsController + + + FirstResponder + + + NSApplication + + + + 268 + + + + 268 + {{18, 18}, {189, 18}} + + + _NS:9 + YES + + -2080374784 + 268435456 + Enable KeePassHttp server + + LucidaGrande + 13 + 1044 + + _NS:9 + + 1211912448 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + NO + + + {400, 54} + + + + NSView + + + + + + + enableServerCheckbutton + + + + 17 + + + + view + + + + 18 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 8 + 0 + + 0 + 1 + + 54 + + 1000 + + 9 + 40 + 1 + + + + 7 + 0 + + 0 + 1 + + 400 + + 1000 + + 9 + 40 + 1 + + + + + + 2 + + + + + + + + 3 + + + + + 4 + + + + + 5 + + + + + 19 + + + + + 20 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 20 + + + + + MPServerSettingsController + MPViewController + + enableServerCheckbutton + NSButton + + + enableServerCheckbutton + + enableServerCheckbutton + NSButton + + + + IBProjectSource + ./Classes/MPServerSettingsController.h + + + + MPViewController + NSViewController + + IBProjectSource + ./Classes/MPViewController.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + + 0 + IBCocoaFramework + YES + 3 + + NSSwitch + {15, 15} + + YES + + diff --git a/MacPass/SettingsWindow.xib b/MacPass/SettingsWindow.xib index b2439256..4eb407b1 100644 --- a/MacPass/SettingsWindow.xib +++ b/MacPass/SettingsWindow.xib @@ -36,7 +36,7 @@ 7 2 {{196, 240}, {400, 200}} - 544735232 + 544736256 Window NSWindow @@ -111,9 +111,11 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin {{357, 418}, {480, 270}} - + com.apple.InterfaceBuilder.CocoaPlugin diff --git a/MacPass/en.lproj/Localizable.strings b/MacPass/en.lproj/Localizable.strings index 24d3c82d..f6482a41 100644 Binary files a/MacPass/en.lproj/Localizable.strings and b/MacPass/en.lproj/Localizable.strings differ diff --git a/README.md b/README.md index d5be1422..41ab1a6f 100644 --- a/README.md +++ b/README.md @@ -64,3 +64,5 @@ This Project is based upon the following work: [KeePass Database Library](https://github.com/mpowrie/KeePassLib) Copyright 2010 Qiang Yu. All rights reserved. [PXSourceList](https://github.com/Perspx/PXSourceList) Copyright 2011, Alex Rozanski. All rights reserved. + +[CocoaHTTPServer](https://github.com/robbiehanson/CocoaHTTPServer )Copyright 2011, Deusty, LLC. All rights reserved.