Fix importing of sites.
[FIXED] Parsing mpsites for import.
This commit is contained in:
parent
587461144b
commit
eb4e25c0ba
2
External/iCloudStoreManager
vendored
2
External/iCloudStoreManager
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 71cfb8f4e21a536f5d88a69401f02eeaf1c0a89f
|
Subproject commit 01f70ef927d497fb179688b1e2da0b25f80ec425
|
@ -4092,7 +4092,7 @@
|
|||||||
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
||||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||||
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
|
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Maarten Billemont (DWGU95U4ZD)";
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
@ -4132,6 +4132,7 @@
|
|||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
OTHER_LDFLAGS = "-ObjC";
|
||||||
PRODUCT_NAME = "${TARGET_NAME}";
|
PRODUCT_NAME = "${TARGET_NAME}";
|
||||||
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "8CFABC40-E134-41B3-83D3-DD64DE74903D";
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
@ -269,13 +269,13 @@ static NSDateFormatter *rfc3339DateFormatter = nil;
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Header
|
// Header
|
||||||
if ([headerPattern numberOfMatchesInString:importedSiteLine options:0 range:NSRangeFromString(importedSiteLine)] != 2) {
|
if ([headerPattern numberOfMatchesInString:importedSiteLine options:0 range:NSMakeRange(0, [importedSiteLine length])] != 1) {
|
||||||
err(@"Invalid header format in line: %@", importedSiteLine);
|
err(@"Invalid header format in line: %@", importedSiteLine);
|
||||||
return MPImportResultMalformedInput;
|
return MPImportResultMalformedInput;
|
||||||
}
|
}
|
||||||
NSArray *headerElements = [headerPattern matchesInString:importedSiteLine options:0 range:NSRangeFromString(importedSiteLine)];
|
NSTextCheckingResult *headerElements = [[headerPattern matchesInString:importedSiteLine options:0 range:NSMakeRange(0, [importedSiteLine length])] lastObject];
|
||||||
NSString *key = [importedSiteLine substringWithRange:[[headerElements objectAtIndex:0] range]];
|
NSString *key = [importedSiteLine substringWithRange:[headerElements rangeAtIndex:1]];
|
||||||
NSString *value = [importedSiteLine substringWithRange:[[headerElements objectAtIndex:1] range]];
|
NSString *value = [importedSiteLine substringWithRange:[headerElements rangeAtIndex:2]];
|
||||||
if ([key isEqualToString:@"Key ID"]) {
|
if ([key isEqualToString:@"Key ID"]) {
|
||||||
if (![(keyID = value) isEqualToString:[keyHashForPassword(password) encodeHex]])
|
if (![(keyID = value) isEqualToString:[keyHashForPassword(password) encodeHex]])
|
||||||
return MPImportResultInvalidPassword;
|
return MPImportResultInvalidPassword;
|
||||||
@ -291,16 +291,16 @@ static NSDateFormatter *rfc3339DateFormatter = nil;
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Site
|
// Site
|
||||||
if ([sitePattern numberOfMatchesInString:importedSiteLine options:0 range:NSRangeFromString(importedSiteLine)] != 2) {
|
if ([sitePattern numberOfMatchesInString:importedSiteLine options:0 range:NSMakeRange(0, [importedSiteLine length])] != 1) {
|
||||||
err(@"Invalid site format in line: %@", importedSiteLine);
|
err(@"Invalid site format in line: %@", importedSiteLine);
|
||||||
return MPImportResultMalformedInput;
|
return MPImportResultMalformedInput;
|
||||||
}
|
}
|
||||||
NSArray *siteElements = [headerPattern matchesInString:importedSiteLine options:0 range:NSRangeFromString(importedSiteLine)];
|
NSTextCheckingResult *siteElements = [[sitePattern matchesInString:importedSiteLine options:0 range:NSMakeRange(0, [importedSiteLine length])] lastObject];
|
||||||
NSString *lastUsed = [importedSiteLine substringWithRange:[[siteElements objectAtIndex:0] range]];
|
NSString *lastUsed = [importedSiteLine substringWithRange:[siteElements rangeAtIndex:1]];
|
||||||
NSString *uses = [importedSiteLine substringWithRange:[[siteElements objectAtIndex:1] range]];
|
NSString *uses = [importedSiteLine substringWithRange:[siteElements rangeAtIndex:2]];
|
||||||
NSString *type = [importedSiteLine substringWithRange:[[siteElements objectAtIndex:2] range]];
|
NSString *type = [importedSiteLine substringWithRange:[siteElements rangeAtIndex:3]];
|
||||||
NSString *name = [importedSiteLine substringWithRange:[[siteElements objectAtIndex:3] range]];
|
NSString *name = [importedSiteLine substringWithRange:[siteElements rangeAtIndex:4]];
|
||||||
NSString *exportContent = [importedSiteLine substringWithRange:[[siteElements objectAtIndex:4] range]];
|
NSString *exportContent = [importedSiteLine substringWithRange:[siteElements rangeAtIndex:5]];
|
||||||
|
|
||||||
// Find existing site.
|
// Find existing site.
|
||||||
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"name == %@ AND keyID == %@", name, keyID];
|
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"name == %@ AND keyID == %@", name, keyID];
|
||||||
@ -320,9 +320,11 @@ static NSDateFormatter *rfc3339DateFormatter = nil;
|
|||||||
|
|
||||||
// Delete existing sites.
|
// Delete existing sites.
|
||||||
[elementsToDelete enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
|
[elementsToDelete enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
|
||||||
|
dbg(@"Deleting: %@", [obj name]);
|
||||||
[self.managedObjectContext deleteObject:obj];
|
[self.managedObjectContext deleteObject:obj];
|
||||||
}];
|
}];
|
||||||
|
[self saveContext];
|
||||||
|
|
||||||
// Import new sites.
|
// Import new sites.
|
||||||
for (NSArray *siteElements in importedSiteElements) {
|
for (NSArray *siteElements in importedSiteElements) {
|
||||||
NSDate *lastUsed = [rfc3339DateFormatter dateFromString:[siteElements objectAtIndex:0]];
|
NSDate *lastUsed = [rfc3339DateFormatter dateFromString:[siteElements objectAtIndex:0]];
|
||||||
@ -332,16 +334,19 @@ static NSDateFormatter *rfc3339DateFormatter = nil;
|
|||||||
NSString *exportContent = [siteElements objectAtIndex:4];
|
NSString *exportContent = [siteElements objectAtIndex:4];
|
||||||
|
|
||||||
// Create new site.
|
// Create new site.
|
||||||
|
dbg(@"Creating: name=%@, lastUsed=%@, uses=%d, type=%u, keyID=%@", name, lastUsed, uses, type, keyID);
|
||||||
MPElementEntity *element = [NSEntityDescription insertNewObjectForEntityForName:ClassNameFromMPElementType(type)
|
MPElementEntity *element = [NSEntityDescription insertNewObjectForEntityForName:ClassNameFromMPElementType(type)
|
||||||
inManagedObjectContext:self.managedObjectContext];
|
inManagedObjectContext:self.managedObjectContext];
|
||||||
element.lastUsed = [lastUsed timeIntervalSinceReferenceDate];
|
|
||||||
element.uses = uses;
|
|
||||||
element.type = type;
|
|
||||||
element.name = name;
|
element.name = name;
|
||||||
|
element.keyID = keyID;
|
||||||
|
element.type = type;
|
||||||
|
element.uses = uses;
|
||||||
|
element.lastUsed = [lastUsed timeIntervalSinceReferenceDate];
|
||||||
if ([exportContent length])
|
if ([exportContent length])
|
||||||
[element importContent:exportContent];
|
[element importContent:exportContent];
|
||||||
}
|
}
|
||||||
|
[self saveContext];
|
||||||
|
|
||||||
return MPImportResultSuccess;
|
return MPImportResultSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1171" systemVersion="11D50" minimumToolsVersion="Automatic" macOSVersion="Automatic" iOSVersion="Automatic">
|
<model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1171" systemVersion="11E53" minimumToolsVersion="Automatic" macOSVersion="Automatic" iOSVersion="Automatic">
|
||||||
<entity name="MPElementEntity" representedClassName="MPElementEntity" isAbstract="YES" syncable="YES">
|
<entity name="MPElementEntity" representedClassName="MPElementEntity" isAbstract="YES" syncable="YES">
|
||||||
<attribute name="keyID" optional="YES" attributeType="String" syncable="YES"/>
|
<attribute name="keyID" attributeType="String" indexed="YES" syncable="YES" isSyncIdentityProperty="YES"/>
|
||||||
<attribute name="lastUsed" attributeType="Date" syncable="YES"/>
|
<attribute name="lastUsed" attributeType="Date" syncable="YES"/>
|
||||||
<attribute name="name" attributeType="String" indexed="YES" syncable="YES"/>
|
<attribute name="name" attributeType="String" minValueString="1" indexed="YES" syncable="YES" isSyncIdentityProperty="YES"/>
|
||||||
<attribute name="type" attributeType="Integer 16" defaultValueString="16" syncable="YES"/>
|
<attribute name="type" attributeType="Integer 16" defaultValueString="16" syncable="YES"/>
|
||||||
<attribute name="uses" attributeType="Integer 16" defaultValueString="0" syncable="YES"/>
|
<attribute name="uses" attributeType="Integer 16" defaultValueString="0" syncable="YES"/>
|
||||||
</entity>
|
</entity>
|
||||||
|
@ -37,8 +37,20 @@
|
|||||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
</head>
|
<script type="text/javascript" charset="utf-8">
|
||||||
|
var is_ssl = ("https:" == document.location.protocol);
|
||||||
|
var asset_host = is_ssl ? "https://d3rdqalhjaisuu.cloudfront.net/" : "http://d3rdqalhjaisuu.cloudfront.net/";
|
||||||
|
document.write(unescape("%3Cscript src='" + asset_host + "javascripts/feedback-v2.js' type='text/javascript'%3E%3C/script%3E"));
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" charset="utf-8">
|
||||||
|
var feedback_widget_options = {};
|
||||||
|
feedback_widget_options.display = "overlay";
|
||||||
|
feedback_widget_options.company = "lyndir";
|
||||||
|
feedback_widget_options.placement = "right";
|
||||||
|
feedback_widget_options.color = "#222";
|
||||||
|
feedback_widget_options.style = "question";
|
||||||
|
var feedback_widget = new GSFN.feedback_widget(feedback_widget_options);
|
||||||
|
</script>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
|
|
||||||
|
@ -28,6 +28,20 @@
|
|||||||
navigateTo(document.location.hash.substring(1));
|
navigateTo(document.location.hash.substring(1));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
<script type="text/javascript" charset="utf-8">
|
||||||
|
var is_ssl = ("https:" == document.location.protocol);
|
||||||
|
var asset_host = is_ssl ? "https://d3rdqalhjaisuu.cloudfront.net/" : "http://d3rdqalhjaisuu.cloudfront.net/";
|
||||||
|
document.write(unescape("<script src='" + asset_host + "javascripts/feedback-v2.js' type='text/javascript'></script>"));
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" charset="utf-8">
|
||||||
|
var feedback_widget_options = {};
|
||||||
|
feedback_widget_options.display = "overlay";
|
||||||
|
feedback_widget_options.company = "lyndir";
|
||||||
|
feedback_widget_options.placement = "left";
|
||||||
|
feedback_widget_options.color = "#222";
|
||||||
|
feedback_widget_options.style = "question";
|
||||||
|
var feedback_widget = new GSFN.feedback_widget(feedback_widget_options);
|
||||||
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
Loading…
Reference in New Issue
Block a user