diff --git a/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/GSPaddle b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/GSPaddle index 5753f17..30f4b21 100755 Binary files a/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/GSPaddle and b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/GSPaddle differ diff --git a/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Headers/GSPaddle.h b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Headers/GSPaddle.h index 051ff22..c240227 100644 --- a/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Headers/GSPaddle.h +++ b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Headers/GSPaddle.h @@ -17,3 +17,14 @@ FOUNDATION_EXPORT const unsigned char GSPaddleVersionString[]; // In this header, you should import all the public headers of your framework using statements like #import #import #import +#import +#import + +// Recereate missing headers for PaddleAnalytics to disable Analytics. + +@interface PaddleAnalyticsKit : NSObject + ++ (void)disableTracking; ++ (BOOL)isOptedIn; + +@end diff --git a/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Headers/GSPaddleErrorCodes.h b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Headers/GSPaddleErrorCodes.h new file mode 100644 index 0000000..05f8a72 --- /dev/null +++ b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Headers/GSPaddleErrorCodes.h @@ -0,0 +1,18 @@ +// +// GSPaddleErrorCodes.h +// GSPaddle +// +// Created by Lukas Pitschl on 27.09.18. +// Copyright © 2018 Lukas Pitschl. All rights reserved. +// + +#ifndef GSPaddleErrorCodes_h +#define GSPaddleErrorCodes_h + +typedef enum { + GSPaddleErrorCodeNetworkError = 99, + GSPaddleErrorCodeActivationCodeNotFound = 100, + GSPaddleErrorCodeActivationCodeAlreadyUsed = 104 +} GSPaddleErrorCodes; + +#endif /* GSPaddleErrorCodes_h */ diff --git a/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Headers/PADApi+GSPaddle.h b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Headers/PADApi+GSPaddle.h new file mode 100644 index 0000000..a96d4d0 --- /dev/null +++ b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Headers/PADApi+GSPaddle.h @@ -0,0 +1,20 @@ +// +// PADApi+GSPaddle.h +// GSPaddle +// +// Created by Lukas Pitschl on 27.09.18. +// Copyright © 2018 Lukas Pitschl. All rights reserved. +// + +#import + +@interface PADApi_GSPaddle : NSObject + +@end + +@interface Paddle (GSPaddleMore) + +- (NSError *)activationErrorForActivationCode:(NSString *)activationCode; +- (void)setActivationError:(NSError *)error forActivationCode:(NSString *)activationCode; + +@end diff --git a/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Resources/Info.plist b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Resources/Info.plist index a936f0d..601623d 100644 --- a/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Resources/Info.plist +++ b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/Resources/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.0 + 1.1 CFBundleSupportedPlatforms MacOSX diff --git a/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/_CodeSignature/CodeResources b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/_CodeSignature/CodeResources new file mode 100644 index 0000000..8036210 --- /dev/null +++ b/Source/org.gpgtools.Libmacgpg.xpc/GSPaddle.framework/Versions/A/_CodeSignature/CodeResources @@ -0,0 +1,163 @@ + + + + + files + + Resources/Info.plist + + 6Rq8gyvwJGgu6d+s0qoEM2vG/m8= + + + files2 + + Headers/GSPaddle.h + + hash2 + + b2CD6bKLNtrgsQF9xzXcPgpPzdA6uENGu3CTaXJbiJE= + + + Headers/GSPaddleErrorCodes.h + + hash2 + + IzYJ7gTVtRFThhKibUhMMgvLKNqe7UbKs+lsfOYjq54= + + + Headers/PADApi+GSPaddle.h + + hash2 + + GA1q/vOJ5pIEcJKTKNdbwkVIlYXwwAKoAcPuTPufLgQ= + + + Headers/Paddle+CustomBundleIdentifier.h + + hash2 + + 2y7lyvP3tidKNLwWVt7AkJsDleth6iu72yyjqktBqPo= + + + Modules/module.modulemap + + hash2 + + ZSOiL3zrBK9vfTgXpOCNX5zsZRA7fEBLCKP8L9LAQGI= + + + Resources/Info.plist + + hash2 + + bOd+8folBr1y6IRCZefTu9QysovrLJqH5kgwFuw/hmQ= + + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Source/org.gpgtools.Libmacgpg.xpc/JailfreeTask.m b/Source/org.gpgtools.Libmacgpg.xpc/JailfreeTask.m index 9dbb2c1..7c893ab 100644 --- a/Source/org.gpgtools.Libmacgpg.xpc/JailfreeTask.m +++ b/Source/org.gpgtools.Libmacgpg.xpc/JailfreeTask.m @@ -179,6 +179,10 @@ - (void)validSupportContractAvailableForProduct:(NSString *)identifier reply:(vo - (void)activateProductWithEmail:(NSString *)email activationCode:(NSString *)activationCode reply:(void (^)(BOOL, NSError *))reply { [self paddleInstance]; [[self paddleProduct] activateEmail:email license:activationCode completion:^(BOOL activated, NSError * _Nullable error) { + // Instead of the paddle error, it is best to use our own error which contains + // more information of what actually happened. + NSError *realError = [[self paddleInstance] activationErrorForActivationCode:activationCode]; + error = realError != nil ? realError : error; reply(activated, error); }]; } @@ -194,6 +198,9 @@ - (void)startTrialWithReply:(void (^)(BOOL))reply { - (Paddle *)paddleInstance { // While truly perverted, this swizzle is now on the NSFileManager. [[NSFileManager defaultManager] GSSetCustomBundleIdentifier:@"GPGTools/org.gpgtools.GPGMail"]; + // While this call should no longer be necessary, since the GSPaddle framework makes sure + // that only activation calls are allowed, it can't hurt to still call it. + [PaddleAnalyticsKit disableTracking]; Paddle *paddle = [Paddle sharedInstanceWithVendorID:@"2230" apiKey:@"ba08ae628cf630e40d1f8be305bbfb96" productID:@"496039" configuration:nil]; return paddle;