├── .theos ├── _ │ ├── DEBIAN │ │ └── control │ ├── Library │ │ ├── ControlCenter │ │ │ └── Bundles │ │ │ │ └── ForwardNotifierCC.bundle │ │ │ │ ├── ForwardNotifierCC │ │ │ │ ├── Icon@2x.png │ │ │ │ └── Info.plist │ │ ├── MobileSubstrate │ │ │ └── DynamicLibraries │ │ │ │ ├── ForwardNotifier.dylib │ │ │ │ └── ForwardNotifier.plist │ │ ├── PreferenceBundles │ │ │ └── ForwardNotifier.bundle │ │ │ │ ├── Email@2x.png │ │ │ │ ├── ForwardNotifier │ │ │ │ ├── IconWelcome.png │ │ │ │ ├── Info.plist │ │ │ │ ├── Paypal@2x.png │ │ │ │ ├── Reddit@2x.png │ │ │ │ ├── Root.plist │ │ │ │ ├── Twitter@2x.png │ │ │ │ └── icon@2x.png │ │ └── PreferenceLoader │ │ │ └── Preferences │ │ │ └── ForwardNotifier.plist │ └── usr │ │ └── bin │ │ └── ForwardNotifierReceiver ├── build_session ├── fakeroot ├── last_package └── obj │ ├── .stamp │ ├── ForwardNotifier.bundle │ ├── Email@2x.png │ ├── ForwardNotifier │ ├── IconWelcome.png │ ├── Info.plist │ ├── Paypal@2x.png │ ├── Reddit@2x.png │ ├── Root.plist │ ├── Twitter@2x.png │ └── icon@2x.png │ ├── ForwardNotifier.dylib │ ├── ForwardNotifierCC.bundle │ ├── ForwardNotifierCC │ ├── Icon@2x.png │ └── Info.plist │ ├── ForwardNotifierReceiver │ ├── arm64 │ ├── FNPRootListController.m.09745f32.Td │ ├── FNPRootListController.m.09745f32.o │ ├── FNPRootListController.m.a9e3cd08.Td │ ├── FNPRootListController.m.a9e3cd08.o │ ├── ForwardNotifier.bundle │ │ ├── ForwardNotifier │ │ └── ForwardNotifier.dSYM │ │ │ └── Contents │ │ │ ├── Info.plist │ │ │ └── Resources │ │ │ └── DWARF │ │ │ └── ForwardNotifier │ ├── ForwardNotifier.dylib │ ├── ForwardNotifier.dylib.dSYM │ │ └── Contents │ │ │ ├── Info.plist │ │ │ └── Resources │ │ │ └── DWARF │ │ │ └── ForwardNotifier.dylib │ ├── ForwardNotifierCC.bundle │ │ ├── ForwardNotifierCC │ │ └── ForwardNotifierCC.dSYM │ │ │ └── Contents │ │ │ ├── Info.plist │ │ │ └── Resources │ │ │ └── DWARF │ │ │ └── ForwardNotifierCC │ ├── ForwardNotifierCC.m.b26de4cf.Td │ ├── ForwardNotifierCC.m.b26de4cf.o │ ├── ForwardNotifierReceiver │ ├── ForwardNotifierReceiver.dSYM │ │ └── Contents │ │ │ ├── Info.plist │ │ │ └── Resources │ │ │ └── DWARF │ │ │ └── ForwardNotifierReceiver │ ├── Tweak.x.10f0f3ca.Td │ ├── Tweak.x.10f0f3ca.o │ ├── Tweak.x.5dac7822.Td │ ├── Tweak.x.5dac7822.o │ ├── Tweak.x.653cbd7a.Td │ ├── Tweak.x.653cbd7a.o │ ├── Tweak.x.m │ ├── main.m.f318108f.Td │ └── main.m.f318108f.o │ └── arm64e │ ├── FNPRootListController.m.2caf96a5.Td │ ├── FNPRootListController.m.2caf96a5.o │ ├── FNPRootListController.m.f07d197f.Td │ ├── FNPRootListController.m.f07d197f.o │ ├── ForwardNotifier.bundle │ ├── ForwardNotifier │ └── ForwardNotifier.dSYM │ │ └── Contents │ │ ├── Info.plist │ │ └── Resources │ │ └── DWARF │ │ └── ForwardNotifier │ ├── ForwardNotifier.dylib │ ├── ForwardNotifier.dylib.dSYM │ └── Contents │ │ ├── Info.plist │ │ └── Resources │ │ └── DWARF │ │ └── ForwardNotifier.dylib │ ├── ForwardNotifierCC.bundle │ ├── ForwardNotifierCC │ └── ForwardNotifierCC.dSYM │ │ └── Contents │ │ ├── Info.plist │ │ └── Resources │ │ └── DWARF │ │ └── ForwardNotifierCC │ ├── ForwardNotifierCC.m.98cdb3a4.Td │ ├── ForwardNotifierCC.m.98cdb3a4.o │ ├── ForwardNotifierReceiver │ ├── ForwardNotifierReceiver.dSYM │ └── Contents │ │ ├── Info.plist │ │ └── Resources │ │ └── DWARF │ │ └── ForwardNotifierReceiver │ ├── Tweak.x.586144b7.Td │ ├── Tweak.x.586144b7.o │ ├── Tweak.x.6472c773.Td │ ├── Tweak.x.6472c773.o │ ├── Tweak.x.9020a7f1.Td │ ├── Tweak.x.9020a7f1.o │ ├── Tweak.x.m │ ├── main.m.0135e4e0.Td │ └── main.m.0135e4e0.o ├── Artwork ├── Banner.png ├── CC Icon.png └── Icon.png ├── ForwardNotifier Client Tools ├── Crossplatform Server │ ├── ForwardNotifierServer.py │ ├── Linux Autoinstall │ │ └── ForwardNotifierInstaller.bash │ ├── Mac Autoinstall │ │ └── ForwardNotifierInstaller.bash │ └── Windows Autoinstall │ │ ├── ForwardNotifierSetup.exe │ │ └── Program.cs └── Windows SSH Client tool │ ├── ForwardNotifierReceiver.exe │ └── SetEnviromentVariable.exe ├── ForwardNotifier.plist ├── LICENSE ├── Makefile ├── README.md ├── Tweak.h ├── Tweak.x ├── control ├── forwardnotifier ├── .theos │ ├── build_session │ └── obj │ │ └── .stamp ├── FNPRootListController.h ├── FNPRootListController.m ├── Makefile ├── Resources │ ├── Email@2x.png │ ├── IconWelcome.png │ ├── Info.plist │ ├── Paypal@2x.png │ ├── Reddit@2x.png │ ├── Root.plist │ ├── Twitter@2x.png │ └── icon@2x.png └── entry.plist ├── forwardnotifiercc ├── .DS_Store ├── ForwardNotifierCC.h ├── ForwardNotifierCC.m ├── Makefile ├── Resources │ ├── Icon@2x.png │ └── Info.plist └── control ├── forwardnotifierreceiver ├── Makefile └── main.m └── packages └── com.greg0109.forwardnotifier_1.4.3_iphoneos-arm.deb /.theos/_/DEBIAN/control: -------------------------------------------------------------------------------- 1 | Package: com.greg0109.forwardnotifier 2 | Name: ForwardNotifier 3 | Depends: mobilesubstrate, sshpass, openssh, applist, preferenceloader, curl 4 | Conflict: com.yourepo.greg0109.forwardnotifier8 5 | Replaces: com.yourepo.greg0109.forwardnotifier8 6 | Architecture: iphoneos-arm 7 | Description: Forward Notifications to your PC! 8 | Maintainer: Greg0109 9 | Author: Greg0109 10 | Section: Tweaks 11 | Version: 1.4.3 12 | Installed-Size: 784 13 | -------------------------------------------------------------------------------- /.theos/_/Library/ControlCenter/Bundles/ForwardNotifierCC.bundle/ForwardNotifierCC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/_/Library/ControlCenter/Bundles/ForwardNotifierCC.bundle/ForwardNotifierCC -------------------------------------------------------------------------------- /.theos/_/Library/ControlCenter/Bundles/ForwardNotifierCC.bundle/Icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/_/Library/ControlCenter/Bundles/ForwardNotifierCC.bundle/Icon@2x.png -------------------------------------------------------------------------------- /.theos/_/Library/ControlCenter/Bundles/ForwardNotifierCC.bundle/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | ForwardNotifierCC 7 | CFBundleExecutable 8 | ForwardNotifierCC 9 | CFBundleIdentifier 10 | com.greg0109.forwardnotifiercc 11 | CFBundleDevelopmentRegion 12 | English 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | MinimumOSVersion 22 | 7.0 23 | UIDeviceFamily 24 | 25 | 1 26 | 2 27 | 28 | NSPrincipalClass 29 | ForwardNotifierCC 30 | CFBundleSupportedPlatforms 31 | 32 | iPhoneOS 33 | 34 | CCSGetModuleSizeAtRuntime 35 | 36 | CCSModuleSize 37 | 38 | Portrait 39 | 40 | Height 41 | 1 42 | Width 43 | 1 44 | 45 | Landscape 46 | 47 | Height 48 | 1 49 | Width 50 | 1 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /.theos/_/Library/MobileSubstrate/DynamicLibraries/ForwardNotifier.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/_/Library/MobileSubstrate/DynamicLibraries/ForwardNotifier.dylib -------------------------------------------------------------------------------- /.theos/_/Library/MobileSubstrate/DynamicLibraries/ForwardNotifier.plist: -------------------------------------------------------------------------------- 1 | { Filter = { Bundles = ( "com.apple.springboard" ); }; } 2 | -------------------------------------------------------------------------------- /.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/Email@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/Email@2x.png -------------------------------------------------------------------------------- /.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/ForwardNotifier: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/ForwardNotifier -------------------------------------------------------------------------------- /.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/IconWelcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/IconWelcome.png -------------------------------------------------------------------------------- /.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ForwardNotifier 9 | CFBundleIdentifier 10 | com.greg0109.forwardnotifierprefs 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1.0 21 | NSPrincipalClass 22 | FNPRootListController 23 | 24 | 25 | -------------------------------------------------------------------------------- /.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/Paypal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/Paypal@2x.png -------------------------------------------------------------------------------- /.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/Reddit@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/Reddit@2x.png -------------------------------------------------------------------------------- /.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/Root.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | items 6 | 7 | 8 | cell 9 | PSGroupCell 10 | label 11 | General Settings 12 | footerText 13 | This feature makes this device the one that displays the notifications from other device. Enable this feature if you would like to receive notifications on this device. If this setting is enabled, the other ones should be disabled. 14 | 15 | 16 | cell 17 | PSSwitchCell 18 | default 19 | 20 | defaults 21 | com.greg0109.forwardnotifierprefs 22 | key 23 | receiver 24 | label 25 | Set Device as Receiver 26 | PostNotification 27 | com.greg0109.forwardnotifierprefs.settingschanged 28 | 29 | 30 | cell 31 | PSGroupCell 32 | footerText 33 | Apps selected in the blacklisted section won't get their notifications forwarded. 34 | 35 | 36 | cell 37 | PSLinkCell 38 | bundle 39 | AppList 40 | isController 41 | 1 42 | label 43 | Blacklisted Apps 44 | ALAllowsSelection 45 | 1 46 | ALSettingsKeyPrefix 47 | 48 | ALSettingsDefaultValue 49 | 0 50 | ALSettingsPath 51 | /var/mobile/Library/Preferences/com.greg0109.forwardnotifierblacklist 52 | ALSingleEnabledMode 53 | 54 | 55 | 56 | cell 57 | PSGroupCell 58 | footerText 59 | Enable this option to get an error output of the notifications. It should only be enabled if the tweak is not working properly. 60 | 61 | 62 | cell 63 | PSSwitchCell 64 | default 65 | 66 | defaults 67 | com.greg0109.forwardnotifierprefs 68 | key 69 | errorlog 70 | label 71 | Post a notification if something went wrong 72 | PostNotification 73 | com.greg0109.forwardnotifierprefs.settingschanged 74 | 75 | 76 | cell 77 | PSGroupCell 78 | footerText 79 | If this setting is enabled, the device won't send the notifications when is unlocked. Disable this if you would like to receive notifications on your PC/iOS device all the time. 80 | 81 | 82 | cell 83 | PSSwitchCell 84 | default 85 | 86 | defaults 87 | com.greg0109.forwardnotifierprefs 88 | key 89 | lockstateenabled 90 | label 91 | Disable when unlocked 92 | PostNotification 93 | com.greg0109.forwardnotifierprefs.settingschanged 94 | 95 | 96 | cell 97 | PSGroupCell 98 | footerText 99 | Select which OS you would like the notifications to be forwarded: - Linux requires a package called "notify-send" to be installed. - MacOS requires a package "terminal-notifier" to be installed. - iOS requires this tweak to be installed on the receiver device with the receiver option enabled. - Windows requires the Windows Client Tool "ForwardNotifierReceiver" to be installed. This feature is not yet supported. If you are using the crossplatform server option, the server tool for each OS should be installed on the receiver. That tool can be found in my github. 100 | 101 | 102 | cell 103 | PSSegmentCell 104 | default 105 | 0 106 | defaults 107 | com.greg0109.forwardnotifierprefs 108 | key 109 | pcspecifier 110 | validValues 111 | 112 | 0 113 | 1 114 | 2 115 | 3 116 | 117 | validTitles 118 | 119 | Linux 120 | MacOS 121 | iOS 122 | Windows 123 | 124 | alignment 125 | 0 126 | PostNotification 127 | com.greg0109.forwardnotifierprefs.settingschanged 128 | 129 | 130 | cell 131 | PSGroupCell 132 | 133 | 134 | cell 135 | PSGroupCell 136 | label 137 | Notifier Settings 138 | footerText 139 | If you are using key authentication, make sure the key works before activating. This tweak has been tested with keys in the .pem format 140 | 141 | 142 | cell 143 | PSSegmentCell 144 | default 145 | 0 146 | defaults 147 | com.greg0109.forwardnotifierprefs 148 | key 149 | methodspecifier 150 | validValues 151 | 152 | 0 153 | 1 154 | 155 | validTitles 156 | 157 | SSH 158 | Crossplatform Server 159 | 160 | alignment 161 | 0 162 | PostNotification 163 | com.greg0109.forwardnotifierprefs.settingschanged 164 | 165 | 166 | cell 167 | PSEditTextCell 168 | placeholder 169 | IP or Hostaname.local 170 | defaults 171 | com.greg0109.forwardnotifierprefs 172 | key 173 | ip 174 | id 175 | hostnameip 176 | PostNotification 177 | com.greg0109.forwardnotifierprefs.settingschanged 178 | 179 | 180 | cell 181 | PSEditTextCell 182 | placeholder 183 | Port. Leave empty if its default (22) 184 | defaults 185 | com.greg0109.forwardnotifierprefs 186 | key 187 | port 188 | id 189 | hide1 190 | PostNotification 191 | com.greg0109.forwardnotifierprefs.settingschanged 192 | 193 | 194 | cell 195 | PSEditTextCell 196 | placeholder 197 | User 198 | defaults 199 | com.greg0109.forwardnotifierprefs 200 | key 201 | user 202 | id 203 | hide2 204 | PostNotification 205 | com.greg0109.forwardnotifierprefs.settingschanged 206 | 207 | 208 | cell 209 | PSSecureEditTextCell 210 | placeholder 211 | Password or path to Key Authentication File 212 | defaults 213 | com.greg0109.forwardnotifierprefs 214 | key 215 | password 216 | id 217 | hide3 218 | PostNotification 219 | com.greg0109.forwardnotifierprefs.settingschanged 220 | 221 | 222 | cell 223 | PSSwitchCell 224 | default 225 | 226 | defaults 227 | com.greg0109.forwardnotifierprefs 228 | key 229 | keyauthentication 230 | id 231 | hide4 232 | label 233 | Use key authentication 234 | PostNotification 235 | com.greg0109.forwardnotifierprefs.settingschanged 236 | 237 | 238 | cell 239 | PSGroupCell 240 | footerText 241 | This will send a test notification to the PC/iOS Device. Please, make sure all the settings are correct and that the CC module is enabled before testing. 242 | 243 | 244 | action 245 | testnotif 246 | cell 247 | PSButtonCell 248 | label 249 | Test Notification 250 | 251 | 252 | cell 253 | PSGroupCell 254 | 255 | 256 | action 257 | paypal 258 | cell 259 | PSButtonCell 260 | icon 261 | Paypal 262 | label 263 | Buy me a coffee 264 | 265 | 266 | action 267 | openTwitter 268 | cell 269 | PSButtonCell 270 | icon 271 | Twitter 272 | label 273 | Twitter (@Greg_0109) 274 | 275 | 276 | action 277 | reddit 278 | cell 279 | PSButtonCell 280 | icon 281 | Reddit 282 | label 283 | Reddit (u/greg0109) 284 | 285 | 286 | action 287 | sendEmail 288 | cell 289 | PSButtonCell 290 | icon 291 | Email 292 | label 293 | Email 294 | 295 | 296 | title 297 | ForwardNotifier 298 | 299 | 300 | -------------------------------------------------------------------------------- /.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/Twitter@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/Twitter@2x.png -------------------------------------------------------------------------------- /.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/_/Library/PreferenceBundles/ForwardNotifier.bundle/icon@2x.png -------------------------------------------------------------------------------- /.theos/_/Library/PreferenceLoader/Preferences/ForwardNotifier.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | entry 6 | 7 | bundle 8 | ForwardNotifier 9 | cell 10 | PSLinkCell 11 | detail 12 | FNPRootListController 13 | icon 14 | icon.png 15 | isController 16 | 17 | label 18 | ForwardNotifier 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.theos/_/usr/bin/ForwardNotifierReceiver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/_/usr/bin/ForwardNotifierReceiver -------------------------------------------------------------------------------- /.theos/build_session: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/build_session -------------------------------------------------------------------------------- /.theos/fakeroot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/fakeroot -------------------------------------------------------------------------------- /.theos/last_package: -------------------------------------------------------------------------------- 1 | ./packages/com.greg0109.forwardnotifier_1.4.3_iphoneos-arm.deb 2 | -------------------------------------------------------------------------------- /.theos/obj/.stamp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/.stamp -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifier.bundle/Email@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/ForwardNotifier.bundle/Email@2x.png -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifier.bundle/ForwardNotifier: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/ForwardNotifier.bundle/ForwardNotifier -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifier.bundle/IconWelcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/ForwardNotifier.bundle/IconWelcome.png -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifier.bundle/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ForwardNotifier 9 | CFBundleIdentifier 10 | com.greg0109.forwardnotifierprefs 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1.0 21 | NSPrincipalClass 22 | FNPRootListController 23 | 24 | 25 | -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifier.bundle/Paypal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/ForwardNotifier.bundle/Paypal@2x.png -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifier.bundle/Reddit@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/ForwardNotifier.bundle/Reddit@2x.png -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifier.bundle/Root.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | items 6 | 7 | 8 | cell 9 | PSGroupCell 10 | label 11 | General Settings 12 | footerText 13 | This feature makes this device the one that displays the notifications from other device. Enable this feature if you would like to receive notifications on this device. If this setting is enabled, the other ones should be disabled. 14 | 15 | 16 | cell 17 | PSSwitchCell 18 | default 19 | 20 | defaults 21 | com.greg0109.forwardnotifierprefs 22 | key 23 | receiver 24 | label 25 | Set Device as Receiver 26 | PostNotification 27 | com.greg0109.forwardnotifierprefs.settingschanged 28 | 29 | 30 | cell 31 | PSGroupCell 32 | footerText 33 | Apps selected in the blacklisted section won't get their notifications forwarded. 34 | 35 | 36 | cell 37 | PSLinkCell 38 | bundle 39 | AppList 40 | isController 41 | 1 42 | label 43 | Blacklisted Apps 44 | ALAllowsSelection 45 | 1 46 | ALSettingsKeyPrefix 47 | 48 | ALSettingsDefaultValue 49 | 0 50 | ALSettingsPath 51 | /var/mobile/Library/Preferences/com.greg0109.forwardnotifierblacklist 52 | ALSingleEnabledMode 53 | 54 | 55 | 56 | cell 57 | PSGroupCell 58 | footerText 59 | Enable this option to get an error output of the notifications. It should only be enabled if the tweak is not working properly. 60 | 61 | 62 | cell 63 | PSSwitchCell 64 | default 65 | 66 | defaults 67 | com.greg0109.forwardnotifierprefs 68 | key 69 | errorlog 70 | label 71 | Post a notification if something went wrong 72 | PostNotification 73 | com.greg0109.forwardnotifierprefs.settingschanged 74 | 75 | 76 | cell 77 | PSGroupCell 78 | footerText 79 | If this setting is enabled, the device won't send the notifications when is unlocked. Disable this if you would like to receive notifications on your PC/iOS device all the time. 80 | 81 | 82 | cell 83 | PSSwitchCell 84 | default 85 | 86 | defaults 87 | com.greg0109.forwardnotifierprefs 88 | key 89 | lockstateenabled 90 | label 91 | Disable when unlocked 92 | PostNotification 93 | com.greg0109.forwardnotifierprefs.settingschanged 94 | 95 | 96 | cell 97 | PSGroupCell 98 | footerText 99 | Select which OS you would like the notifications to be forwarded: - Linux requires a package called "notify-send" to be installed. - MacOS requires a package "terminal-notifier" to be installed. - iOS requires this tweak to be installed on the receiver device with the receiver option enabled. - Windows requires the Windows Client Tool "ForwardNotifierReceiver" to be installed. This feature is not yet supported. If you are using the crossplatform server option, the server tool for each OS should be installed on the receiver. That tool can be found in my github. 100 | 101 | 102 | cell 103 | PSSegmentCell 104 | default 105 | 0 106 | defaults 107 | com.greg0109.forwardnotifierprefs 108 | key 109 | pcspecifier 110 | validValues 111 | 112 | 0 113 | 1 114 | 2 115 | 3 116 | 117 | validTitles 118 | 119 | Linux 120 | MacOS 121 | iOS 122 | Windows 123 | 124 | alignment 125 | 0 126 | PostNotification 127 | com.greg0109.forwardnotifierprefs.settingschanged 128 | 129 | 130 | cell 131 | PSGroupCell 132 | 133 | 134 | cell 135 | PSGroupCell 136 | label 137 | Notifier Settings 138 | footerText 139 | If you are using key authentication, make sure the key works before activating. This tweak has been tested with keys in the .pem format 140 | 141 | 142 | cell 143 | PSSegmentCell 144 | default 145 | 0 146 | defaults 147 | com.greg0109.forwardnotifierprefs 148 | key 149 | methodspecifier 150 | validValues 151 | 152 | 0 153 | 1 154 | 155 | validTitles 156 | 157 | SSH 158 | Crossplatform Server 159 | 160 | alignment 161 | 0 162 | PostNotification 163 | com.greg0109.forwardnotifierprefs.settingschanged 164 | 165 | 166 | cell 167 | PSEditTextCell 168 | placeholder 169 | IP or Hostaname.local 170 | defaults 171 | com.greg0109.forwardnotifierprefs 172 | key 173 | ip 174 | id 175 | hostnameip 176 | PostNotification 177 | com.greg0109.forwardnotifierprefs.settingschanged 178 | 179 | 180 | cell 181 | PSEditTextCell 182 | placeholder 183 | Port. Leave empty if its default (22) 184 | defaults 185 | com.greg0109.forwardnotifierprefs 186 | key 187 | port 188 | id 189 | hide1 190 | PostNotification 191 | com.greg0109.forwardnotifierprefs.settingschanged 192 | 193 | 194 | cell 195 | PSEditTextCell 196 | placeholder 197 | User 198 | defaults 199 | com.greg0109.forwardnotifierprefs 200 | key 201 | user 202 | id 203 | hide2 204 | PostNotification 205 | com.greg0109.forwardnotifierprefs.settingschanged 206 | 207 | 208 | cell 209 | PSSecureEditTextCell 210 | placeholder 211 | Password or path to Key Authentication File 212 | defaults 213 | com.greg0109.forwardnotifierprefs 214 | key 215 | password 216 | id 217 | hide3 218 | PostNotification 219 | com.greg0109.forwardnotifierprefs.settingschanged 220 | 221 | 222 | cell 223 | PSSwitchCell 224 | default 225 | 226 | defaults 227 | com.greg0109.forwardnotifierprefs 228 | key 229 | keyauthentication 230 | id 231 | hide4 232 | label 233 | Use key authentication 234 | PostNotification 235 | com.greg0109.forwardnotifierprefs.settingschanged 236 | 237 | 238 | cell 239 | PSGroupCell 240 | footerText 241 | This will send a test notification to the PC/iOS Device. Please, make sure all the settings are correct and that the CC module is enabled before testing. 242 | 243 | 244 | action 245 | testnotif 246 | cell 247 | PSButtonCell 248 | label 249 | Test Notification 250 | 251 | 252 | cell 253 | PSGroupCell 254 | 255 | 256 | action 257 | paypal 258 | cell 259 | PSButtonCell 260 | icon 261 | Paypal 262 | label 263 | Buy me a coffee 264 | 265 | 266 | action 267 | openTwitter 268 | cell 269 | PSButtonCell 270 | icon 271 | Twitter 272 | label 273 | Twitter (@Greg_0109) 274 | 275 | 276 | action 277 | reddit 278 | cell 279 | PSButtonCell 280 | icon 281 | Reddit 282 | label 283 | Reddit (u/greg0109) 284 | 285 | 286 | action 287 | sendEmail 288 | cell 289 | PSButtonCell 290 | icon 291 | Email 292 | label 293 | Email 294 | 295 | 296 | title 297 | ForwardNotifier 298 | 299 | 300 | -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifier.bundle/Twitter@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/ForwardNotifier.bundle/Twitter@2x.png -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifier.bundle/icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/ForwardNotifier.bundle/icon@2x.png -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifier.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/ForwardNotifier.dylib -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifierCC.bundle/ForwardNotifierCC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/ForwardNotifierCC.bundle/ForwardNotifierCC -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifierCC.bundle/Icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/ForwardNotifierCC.bundle/Icon@2x.png -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifierCC.bundle/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | ForwardNotifierCC 7 | CFBundleExecutable 8 | ForwardNotifierCC 9 | CFBundleIdentifier 10 | com.greg0109.forwardnotifiercc 11 | CFBundleDevelopmentRegion 12 | English 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | MinimumOSVersion 22 | 7.0 23 | UIDeviceFamily 24 | 25 | 1 26 | 2 27 | 28 | NSPrincipalClass 29 | ForwardNotifierCC 30 | CFBundleSupportedPlatforms 31 | 32 | iPhoneOS 33 | 34 | CCSGetModuleSizeAtRuntime 35 | 36 | CCSModuleSize 37 | 38 | Portrait 39 | 40 | Height 41 | 1 42 | Width 43 | 1 44 | 45 | Landscape 46 | 47 | Height 48 | 1 49 | Width 50 | 1 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /.theos/obj/ForwardNotifierReceiver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/ForwardNotifierReceiver -------------------------------------------------------------------------------- /.theos/obj/arm64/FNPRootListController.m.09745f32.Td: -------------------------------------------------------------------------------- 1 | /home/glith/Escritorio/forwardnotifier/.theos/obj/arm64/FNPRootListController.m.09745f32.o: \ 2 | FNPRootListController.m /home/glith/theos/Prefix.pch \ 3 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h \ 4 | /home/glith/theos/vendor/include/theos/IOSMacros.h \ 5 | /home/glith/theos/vendor/include/HBLog.h FNPRootListController.h \ 6 | /home/glith/theos/vendor/include/Preferences/PSListController.h \ 7 | /home/glith/theos/vendor/include/Preferences/PSViewController.h \ 8 | /home/glith/theos/vendor/include/Preferences/PSSpecifier.h \ 9 | /home/glith/theos/vendor/include/Preferences/PSTableCell.h \ 10 | /home/glith/theos/include/AppList/AppList.h \ 11 | /home/glith/theos/include/AppList/ALApplicationList.h \ 12 | /home/glith/theos/include/AppList/ALApplicationTableDataSource.h \ 13 | /home/glith/theos/include/AppList/ALValueCell.h \ 14 | /home/glith/theos/vendor/include/FrontBoardServices/FBSSystemService.h \ 15 | /home/glith/theos/vendor/include/SpringBoardServices/SBSRestartRenderServerAction.h \ 16 | /home/glith/theos/vendor/include/SpringBoardServices/SBSRelaunchAction.h \ 17 | /home/glith/theos/vendor/include/BaseBoard/BSAction.h \ 18 | /home/glith/theos/vendor/include/BaseBoard/BSDescriptionProviding.h \ 19 | /home/glith/theos/vendor/include/BaseBoard/BSSettingDescriptionProvider.h \ 20 | /home/glith/theos/vendor/include/BaseBoard/BSXPCCoding.h 21 | 22 | /home/glith/theos/Prefix.pch: 23 | 24 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h: 25 | 26 | /home/glith/theos/vendor/include/theos/IOSMacros.h: 27 | 28 | /home/glith/theos/vendor/include/HBLog.h: 29 | 30 | FNPRootListController.h: 31 | 32 | /home/glith/theos/vendor/include/Preferences/PSListController.h: 33 | 34 | /home/glith/theos/vendor/include/Preferences/PSViewController.h: 35 | 36 | /home/glith/theos/vendor/include/Preferences/PSSpecifier.h: 37 | 38 | /home/glith/theos/vendor/include/Preferences/PSTableCell.h: 39 | 40 | /home/glith/theos/include/AppList/AppList.h: 41 | 42 | /home/glith/theos/include/AppList/ALApplicationList.h: 43 | 44 | /home/glith/theos/include/AppList/ALApplicationTableDataSource.h: 45 | 46 | /home/glith/theos/include/AppList/ALValueCell.h: 47 | 48 | /home/glith/theos/vendor/include/FrontBoardServices/FBSSystemService.h: 49 | 50 | /home/glith/theos/vendor/include/SpringBoardServices/SBSRestartRenderServerAction.h: 51 | 52 | /home/glith/theos/vendor/include/SpringBoardServices/SBSRelaunchAction.h: 53 | 54 | /home/glith/theos/vendor/include/BaseBoard/BSAction.h: 55 | 56 | /home/glith/theos/vendor/include/BaseBoard/BSDescriptionProviding.h: 57 | 58 | /home/glith/theos/vendor/include/BaseBoard/BSSettingDescriptionProvider.h: 59 | 60 | /home/glith/theos/vendor/include/BaseBoard/BSXPCCoding.h: 61 | -------------------------------------------------------------------------------- /.theos/obj/arm64/FNPRootListController.m.09745f32.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/FNPRootListController.m.09745f32.o -------------------------------------------------------------------------------- /.theos/obj/arm64/FNPRootListController.m.a9e3cd08.Td: -------------------------------------------------------------------------------- 1 | /Users/greg/Desktop/forwardnotifier/.theos/obj/arm64/FNPRootListController.m.a9e3cd08.o: \ 2 | FNPRootListController.m /Users/greg/theos/Prefix.pch \ 3 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h \ 4 | /Users/greg/theos/vendor/include/theos/IOSMacros.h \ 5 | /Users/greg/theos/vendor/include/HBLog.h \ 6 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h \ 7 | FNPRootListController.h \ 8 | /Users/greg/theos/vendor/include/Preferences/PSListController.h \ 9 | /Users/greg/theos/vendor/include/Preferences/PSViewController.h \ 10 | /Users/greg/theos/vendor/include/Preferences/PSSpecifier.h \ 11 | /Users/greg/theos/vendor/include/Preferences/PSTableCell.h \ 12 | /Users/greg/theos/vendor/include/AppList/AppList.h \ 13 | /Users/greg/theos/vendor/include/AppList/ALApplicationList.h \ 14 | /Users/greg/theos/vendor/include/AppList/ALApplicationTableDataSource.h \ 15 | /Users/greg/theos/vendor/include/AppList/ALValueCell.h \ 16 | /Users/greg/theos/vendor/include/FrontBoardServices/FBSSystemService.h \ 17 | /Users/greg/theos/vendor/include/SpringBoardServices/SBSRestartRenderServerAction.h \ 18 | /Users/greg/theos/vendor/include/SpringBoardServices/SBSRelaunchAction.h \ 19 | /Users/greg/theos/vendor/include/BaseBoard/BSAction.h \ 20 | /Users/greg/theos/vendor/include/BaseBoard/BSDescriptionProviding.h \ 21 | /Users/greg/theos/vendor/include/BaseBoard/BSSettingDescriptionProvider.h \ 22 | /Users/greg/theos/vendor/include/BaseBoard/BSXPCCoding.h 23 | 24 | /Users/greg/theos/Prefix.pch: 25 | 26 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h: 27 | 28 | /Users/greg/theos/vendor/include/theos/IOSMacros.h: 29 | 30 | /Users/greg/theos/vendor/include/HBLog.h: 31 | 32 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h: 33 | 34 | FNPRootListController.h: 35 | 36 | /Users/greg/theos/vendor/include/Preferences/PSListController.h: 37 | 38 | /Users/greg/theos/vendor/include/Preferences/PSViewController.h: 39 | 40 | /Users/greg/theos/vendor/include/Preferences/PSSpecifier.h: 41 | 42 | /Users/greg/theos/vendor/include/Preferences/PSTableCell.h: 43 | 44 | /Users/greg/theos/vendor/include/AppList/AppList.h: 45 | 46 | /Users/greg/theos/vendor/include/AppList/ALApplicationList.h: 47 | 48 | /Users/greg/theos/vendor/include/AppList/ALApplicationTableDataSource.h: 49 | 50 | /Users/greg/theos/vendor/include/AppList/ALValueCell.h: 51 | 52 | /Users/greg/theos/vendor/include/FrontBoardServices/FBSSystemService.h: 53 | 54 | /Users/greg/theos/vendor/include/SpringBoardServices/SBSRestartRenderServerAction.h: 55 | 56 | /Users/greg/theos/vendor/include/SpringBoardServices/SBSRelaunchAction.h: 57 | 58 | /Users/greg/theos/vendor/include/BaseBoard/BSAction.h: 59 | 60 | /Users/greg/theos/vendor/include/BaseBoard/BSDescriptionProviding.h: 61 | 62 | /Users/greg/theos/vendor/include/BaseBoard/BSSettingDescriptionProvider.h: 63 | 64 | /Users/greg/theos/vendor/include/BaseBoard/BSXPCCoding.h: 65 | -------------------------------------------------------------------------------- /.theos/obj/arm64/FNPRootListController.m.a9e3cd08.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/FNPRootListController.m.a9e3cd08.o -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifier.bundle/ForwardNotifier: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/ForwardNotifier.bundle/ForwardNotifier -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifier.bundle/ForwardNotifier.dSYM/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | com.apple.xcode.dsym.ForwardNotifier 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | dSYM 13 | CFBundleSignature 14 | ???? 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifier.bundle/ForwardNotifier.dSYM/Contents/Resources/DWARF/ForwardNotifier: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/ForwardNotifier.bundle/ForwardNotifier.dSYM/Contents/Resources/DWARF/ForwardNotifier -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifier.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/ForwardNotifier.dylib -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifier.dylib.dSYM/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | com.apple.xcode.dsym.ForwardNotifier.dylib 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | dSYM 13 | CFBundleSignature 14 | ???? 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifier.dylib.dSYM/Contents/Resources/DWARF/ForwardNotifier.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/ForwardNotifier.dylib.dSYM/Contents/Resources/DWARF/ForwardNotifier.dylib -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifierCC.bundle/ForwardNotifierCC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/ForwardNotifierCC.bundle/ForwardNotifierCC -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifierCC.bundle/ForwardNotifierCC.dSYM/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | com.apple.xcode.dsym.ForwardNotifierCC 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | dSYM 13 | CFBundleSignature 14 | ???? 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifierCC.bundle/ForwardNotifierCC.dSYM/Contents/Resources/DWARF/ForwardNotifierCC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/ForwardNotifierCC.bundle/ForwardNotifierCC.dSYM/Contents/Resources/DWARF/ForwardNotifierCC -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifierCC.m.b26de4cf.Td: -------------------------------------------------------------------------------- 1 | /Users/greg/Desktop/forwardnotifier/.theos/obj/arm64/ForwardNotifierCC.m.b26de4cf.o: \ 2 | ForwardNotifierCC.m /Users/greg/theos/Prefix.pch \ 3 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h \ 4 | /Users/greg/theos/vendor/include/theos/IOSMacros.h \ 5 | /Users/greg/theos/vendor/include/HBLog.h \ 6 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h \ 7 | ForwardNotifierCC.h \ 8 | /Users/greg/theos/include/ControlCenterUIKit/CCUIToggleModule.h \ 9 | /Users/greg/theos/include/ControlCenterUIKit/CCUICAPackageDescription.h \ 10 | /Users/greg/theos/include/ControlCenterUIKit/CCUIContentModule-Protocol.h \ 11 | /Users/greg/theos/include/ControlCenterUIKit/CCUIContentModuleContentViewController-Protocol.h 12 | 13 | /Users/greg/theos/Prefix.pch: 14 | 15 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h: 16 | 17 | /Users/greg/theos/vendor/include/theos/IOSMacros.h: 18 | 19 | /Users/greg/theos/vendor/include/HBLog.h: 20 | 21 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h: 22 | 23 | ForwardNotifierCC.h: 24 | 25 | /Users/greg/theos/include/ControlCenterUIKit/CCUIToggleModule.h: 26 | 27 | /Users/greg/theos/include/ControlCenterUIKit/CCUICAPackageDescription.h: 28 | 29 | /Users/greg/theos/include/ControlCenterUIKit/CCUIContentModule-Protocol.h: 30 | 31 | /Users/greg/theos/include/ControlCenterUIKit/CCUIContentModuleContentViewController-Protocol.h: 32 | -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifierCC.m.b26de4cf.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/ForwardNotifierCC.m.b26de4cf.o -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifierReceiver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/ForwardNotifierReceiver -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifierReceiver.dSYM/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | com.apple.xcode.dsym.ForwardNotifierReceiver 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | dSYM 13 | CFBundleSignature 14 | ???? 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /.theos/obj/arm64/ForwardNotifierReceiver.dSYM/Contents/Resources/DWARF/ForwardNotifierReceiver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/ForwardNotifierReceiver.dSYM/Contents/Resources/DWARF/ForwardNotifierReceiver -------------------------------------------------------------------------------- /.theos/obj/arm64/Tweak.x.10f0f3ca.Td: -------------------------------------------------------------------------------- 1 | /home/glith/Documentos/Coding/PrivateTweaks/forwardnotifier/.theos/obj/arm64/Tweak.x.10f0f3ca.o: \ 2 | /home/glith/Documentos/Coding/PrivateTweaks/forwardnotifier/.theos/obj/arm64/Tweak.x.m \ 3 | /home/glith/theos/Prefix.pch \ 4 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h \ 5 | /home/glith/theos/vendor/include/theos/IOSMacros.h \ 6 | /home/glith/theos/vendor/include/HBLog.h \ 7 | /home/glith/Documentos/Coding/PrivateTweaks/forwardnotifier/Tweak.h \ 8 | /home/glith/theos/include/NSTask.h \ 9 | /home/glith/theos/include/substrate.h 10 | 11 | /home/glith/theos/Prefix.pch: 12 | 13 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h: 14 | 15 | /home/glith/theos/vendor/include/theos/IOSMacros.h: 16 | 17 | /home/glith/theos/vendor/include/HBLog.h: 18 | 19 | /home/glith/Documentos/Coding/PrivateTweaks/forwardnotifier/Tweak.h: 20 | 21 | /home/glith/theos/include/NSTask.h: 22 | 23 | /home/glith/theos/include/substrate.h: 24 | -------------------------------------------------------------------------------- /.theos/obj/arm64/Tweak.x.10f0f3ca.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/Tweak.x.10f0f3ca.o -------------------------------------------------------------------------------- /.theos/obj/arm64/Tweak.x.5dac7822.Td: -------------------------------------------------------------------------------- 1 | /Users/greg/Desktop/forwardnotifier/.theos/obj/arm64/Tweak.x.5dac7822.o: \ 2 | /Users/greg/Desktop/forwardnotifier/.theos/obj/arm64/Tweak.x.m \ 3 | /Users/greg/theos/Prefix.pch \ 4 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h \ 5 | /Users/greg/theos/vendor/include/theos/IOSMacros.h \ 6 | /Users/greg/theos/vendor/include/HBLog.h \ 7 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h \ 8 | /Users/greg/Desktop/forwardnotifier/Tweak.h \ 9 | /Users/greg/theos/include/NSTask.h \ 10 | /Users/greg/theos/include/substrate.h 11 | 12 | /Users/greg/theos/Prefix.pch: 13 | 14 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h: 15 | 16 | /Users/greg/theos/vendor/include/theos/IOSMacros.h: 17 | 18 | /Users/greg/theos/vendor/include/HBLog.h: 19 | 20 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h: 21 | 22 | /Users/greg/Desktop/forwardnotifier/Tweak.h: 23 | 24 | /Users/greg/theos/include/NSTask.h: 25 | 26 | /Users/greg/theos/include/substrate.h: 27 | -------------------------------------------------------------------------------- /.theos/obj/arm64/Tweak.x.5dac7822.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/Tweak.x.5dac7822.o -------------------------------------------------------------------------------- /.theos/obj/arm64/Tweak.x.653cbd7a.Td: -------------------------------------------------------------------------------- 1 | /home/glith/Escritorio/forwardnotifier/.theos/obj/arm64/Tweak.x.653cbd7a.o: \ 2 | /home/glith/Escritorio/forwardnotifier/.theos/obj/arm64/Tweak.x.m \ 3 | /home/glith/theos/Prefix.pch \ 4 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h \ 5 | /home/glith/theos/vendor/include/theos/IOSMacros.h \ 6 | /home/glith/theos/vendor/include/HBLog.h \ 7 | /home/glith/Escritorio/forwardnotifier/Tweak.h \ 8 | /home/glith/theos/include/NSTask.h \ 9 | /home/glith/theos/include/substrate.h 10 | 11 | /home/glith/theos/Prefix.pch: 12 | 13 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h: 14 | 15 | /home/glith/theos/vendor/include/theos/IOSMacros.h: 16 | 17 | /home/glith/theos/vendor/include/HBLog.h: 18 | 19 | /home/glith/Escritorio/forwardnotifier/Tweak.h: 20 | 21 | /home/glith/theos/include/NSTask.h: 22 | 23 | /home/glith/theos/include/substrate.h: 24 | -------------------------------------------------------------------------------- /.theos/obj/arm64/Tweak.x.653cbd7a.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/Tweak.x.653cbd7a.o -------------------------------------------------------------------------------- /.theos/obj/arm64/Tweak.x.m: -------------------------------------------------------------------------------- 1 | #line 1 "Tweak.x" 2 | #import "Tweak.h" 3 | 4 | struct SBIconImageInfo iconspecs; 5 | 6 | 7 | BOOL receiver; 8 | BOOL errorlog; 9 | BOOL lockstateenabled; 10 | int pcspecifier; 11 | 12 | 13 | int methodspecifier; 14 | BOOL keyauthentication; 15 | NSString *user; 16 | NSString *ip; 17 | NSString *port; 18 | NSString *password; 19 | NSString *command; 20 | NSString *finalCommand; 21 | NSArray *arguments; 22 | 23 | 24 | NSString *pc; 25 | NSString *title; 26 | NSMutableString *finalTitle; 27 | NSString *message; 28 | NSMutableString *finalMessage; 29 | NSString *bundleID; 30 | NSString *appName; 31 | BOOL locked; 32 | 33 | 34 | NSPipe *out; 35 | static BBServer *notificationserver = nil; 36 | 37 | static void loadPrefs() { 38 | NSMutableDictionary *prefs = [NSMutableDictionary dictionaryWithContentsOfFile:@"/User/Library/Preferences/com.greg0109.forwardnotifierprefs.plist"]; 39 | receiver = prefs[@"receiver"] ? [prefs[@"receiver"] boolValue] : NO; 40 | errorlog = prefs[@"errorlog"] ? [prefs[@"errorlog"] boolValue] : NO; 41 | lockstateenabled = prefs[@"lockstateenabled"] ? [prefs[@"lockstateenabled"] boolValue] : YES; 42 | pcspecifier = prefs[@"pcspecifier"] ? [prefs[@"pcspecifier"] intValue] : 0; 43 | 44 | methodspecifier = prefs[@"methodspecifier"] ? [prefs[@"methodspecifier"] intValue] : 0; 45 | keyauthentication = prefs[@"keyauthentication"] ? [prefs[@"keyauthentication"] boolValue] : NO; 46 | user = prefs[@"user"] && !([prefs[@"user"] isEqualToString:@""]) ? [prefs[@"user"] stringValue] : @"user"; 47 | ip = prefs[@"ip"] && !([prefs[@"ip"] isEqualToString:@""]) ? [prefs[@"ip"] stringValue] : @"ip"; 48 | port = prefs[@"port"] && !([prefs[@"port"] isEqualToString:@""]) ? [prefs[@"port"] stringValue] : @"22"; 49 | password = prefs[@"password"] && !([prefs[@"password"] isEqualToString:@""]) ? [prefs[@"password"] stringValue] : @"password"; 50 | user = [user stringByReplacingOccurrencesOfString:@" " withString:@""]; 51 | ip = [ip stringByReplacingOccurrencesOfString:@" " withString:@""]; 52 | password = [password stringByReplacingOccurrencesOfString:@" " withString:@""]; 53 | } 54 | 55 | static dispatch_queue_t getBBServerQueue() { 56 | static dispatch_queue_t queue; 57 | static dispatch_once_t predicate; 58 | dispatch_once(&predicate, ^{ 59 | void *handle = dlopen(NULL, RTLD_GLOBAL); 60 | if (handle) { 61 | dispatch_queue_t __weak *pointer = (__weak dispatch_queue_t *) dlsym(handle, "__BBServerQueue"); 62 | if (pointer) { 63 | queue = *pointer; 64 | } 65 | dlclose(handle); 66 | } 67 | }); 68 | return queue; 69 | } 70 | 71 | 72 | #include 73 | #if defined(__clang__) 74 | #if __has_feature(objc_arc) 75 | #define _LOGOS_SELF_TYPE_NORMAL __unsafe_unretained 76 | #define _LOGOS_SELF_TYPE_INIT __attribute__((ns_consumed)) 77 | #define _LOGOS_SELF_CONST const 78 | #define _LOGOS_RETURN_RETAINED __attribute__((ns_returns_retained)) 79 | #else 80 | #define _LOGOS_SELF_TYPE_NORMAL 81 | #define _LOGOS_SELF_TYPE_INIT 82 | #define _LOGOS_SELF_CONST 83 | #define _LOGOS_RETURN_RETAINED 84 | #endif 85 | #else 86 | #define _LOGOS_SELF_TYPE_NORMAL 87 | #define _LOGOS_SELF_TYPE_INIT 88 | #define _LOGOS_SELF_CONST 89 | #define _LOGOS_RETURN_RETAINED 90 | #endif 91 | 92 | @class BBAction; @class SBApplicationController; @class SpringBoard; @class SBLockStateAggregator; @class BBBulletin; @class SBIconController; @class BBServer; 93 | static BBServer* (*_logos_orig$_ungrouped$BBServer$initWithQueue$)(_LOGOS_SELF_TYPE_INIT BBServer*, SEL, id) _LOGOS_RETURN_RETAINED; static BBServer* _logos_method$_ungrouped$BBServer$initWithQueue$(_LOGOS_SELF_TYPE_INIT BBServer*, SEL, id) _LOGOS_RETURN_RETAINED; static BBServer* (*_logos_orig$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$)(_LOGOS_SELF_TYPE_INIT BBServer*, SEL, id, id, id, id, id, id, id, id, id) _LOGOS_RETURN_RETAINED; static BBServer* _logos_method$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$(_LOGOS_SELF_TYPE_INIT BBServer*, SEL, id, id, id, id, id, id, id, id, id) _LOGOS_RETURN_RETAINED; static void (*_logos_orig$_ungrouped$BBServer$dealloc)(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST, SEL); static void _logos_method$_ungrouped$BBServer$dealloc(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST, SEL); 94 | static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$SBIconController(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("SBIconController"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$BBBulletin(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("BBBulletin"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$SBApplicationController(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("SBApplicationController"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$SBLockStateAggregator(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("SBLockStateAggregator"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$BBAction(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("BBAction"); } return _klass; } 95 | #line 70 "Tweak.x" 96 | 97 | static BBServer* _logos_method$_ungrouped$BBServer$initWithQueue$(_LOGOS_SELF_TYPE_INIT BBServer* __unused self, SEL __unused _cmd, id arg1) _LOGOS_RETURN_RETAINED { 98 | notificationserver = _logos_orig$_ungrouped$BBServer$initWithQueue$(self, _cmd, arg1); 99 | return notificationserver; 100 | } 101 | static BBServer* _logos_method$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$(_LOGOS_SELF_TYPE_INIT BBServer* __unused self, SEL __unused _cmd, id arg1, id arg2, id arg3, id arg4, id arg5, id arg6, id arg7, id arg8, id arg9) _LOGOS_RETURN_RETAINED { 102 | notificationserver = _logos_orig$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$(self, _cmd, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); 103 | return notificationserver; 104 | } 105 | static void _logos_method$_ungrouped$BBServer$dealloc(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd) { 106 | if (notificationserver == self) { 107 | notificationserver = nil; 108 | } 109 | _logos_orig$_ungrouped$BBServer$dealloc(self, _cmd); 110 | } 111 | 112 | 113 | void testnotif(NSString *titletest, NSString *messagetest) { 114 | BBBulletin *bulletin = [[_logos_static_class_lookup$BBBulletin() alloc] init]; 115 | 116 | bulletin.title = titletest; 117 | bulletin.message = messagetest; 118 | bulletin.sectionID = @"com.apple.Preferences"; 119 | bulletin.bulletinID = [[NSProcessInfo processInfo] globallyUniqueString]; 120 | bulletin.recordID = [[NSProcessInfo processInfo] globallyUniqueString]; 121 | bulletin.publisherBulletinID = [[NSProcessInfo processInfo] globallyUniqueString]; 122 | bulletin.date = [NSDate date]; 123 | bulletin.defaultAction = [_logos_static_class_lookup$BBAction() actionWithLaunchBundleID:@"prefs:root=ForwardNotifier" callblock:nil]; 124 | dispatch_sync(getBBServerQueue(), ^{ 125 | [notificationserver publishBulletin:bulletin destinations:14]; 126 | }); 127 | } 128 | 129 | BOOL isItLocked() { 130 | if (lockstateenabled) { 131 | locked = [[_logos_static_class_lookup$SBLockStateAggregator() sharedInstance] lockState]; 132 | } else { 133 | locked = TRUE; 134 | } 135 | return locked; 136 | } 137 | 138 | void sanitizeText() { 139 | finalTitle = [@"" mutableCopy]; 140 | for (int i=0; i 2 && errorlog) { 218 | testnotif(@"ForwardNotifier Error",erroroutput); 219 | } 220 | }); 221 | } 222 | } else if (methodspecifier == 1) { 223 | 224 | SBApplicationIcon *icon = [((SBIconController *)[_logos_static_class_lookup$SBIconController() sharedInstance]).model expectedIconForDisplayIdentifier:bundleID]; 225 | UIImage *image = nil; 226 | iconspecs.size = CGSizeMake(60, 60); 227 | iconspecs.scale = [UIScreen mainScreen].scale; 228 | iconspecs.continuousCornerRadius = 12; 229 | image = [icon generateIconImageWithInfo:iconspecs]; 230 | NSData *iconData = UIImagePNGRepresentation(image); 231 | NSString *iconBase64; 232 | if (![title isEqualToString:@"ForwardNotifier Test"]) { 233 | iconBase64 = [iconData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; 234 | } else { 235 | iconBase64 = forwardNotifierIconBase64; 236 | } 237 | 238 | NSData *titleData = [title dataUsingEncoding: NSUTF8StringEncoding]; 239 | NSString *titleBase64 = [titleData base64EncodedStringWithOptions:0]; 240 | NSData *messageData = [message dataUsingEncoding: NSUTF8StringEncoding]; 241 | NSString *messageBase64 = [messageData base64EncodedStringWithOptions:0]; 242 | if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"ForwardNotifier-Status"] isEqual:@"1"] && (locked)) { 243 | dispatch_queue_t sendnotif = dispatch_queue_create("Send Notif", NULL); 244 | dispatch_async(sendnotif, ^{ 245 | title = [title stringByReplacingOccurrencesOfString:@"\"" withString:@"\\""\""]; 246 | message = [message stringByReplacingOccurrencesOfString:@"\"" withString:@"\\""\""]; 247 | if (pcspecifier == 0) { 248 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"Linux\", \"img\": \"%@\", \"appname\": \"%@\"}",titleBase64,messageBase64,iconBase64,appName]; 249 | } else if (pcspecifier == 1) { 250 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"MacOS\", \"img\": \"%@\"}",titleBase64,messageBase64,iconBase64]; 251 | } else if (pcspecifier == 2) { 252 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"iOS\", \"img\": \"%@\"}",titleBase64,messageBase64,iconBase64]; 253 | } else if (pcspecifier == 3) { 254 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"Windows\", \"img\": \"%@\"}",titleBase64,messageBase64,iconBase64]; 255 | } 256 | NSTask *task = [[NSTask alloc] init]; 257 | [task setLaunchPath:@"/usr/bin/curl"]; 258 | [task setArguments:@[@"-sS",[NSString stringWithFormat:@"%@:8000",ip],@"-d",command ]]; 259 | out = [NSPipe pipe]; 260 | [task setStandardError:out]; 261 | [task launch]; 262 | [task waitUntilExit]; 263 | NSFileHandle * read = [out fileHandleForReading]; 264 | NSData * dataRead = [read readDataToEndOfFile]; 265 | NSString *erroroutput = [[NSString alloc] initWithData:dataRead encoding:NSUTF8StringEncoding]; 266 | if ([erroroutput length] > 2 && errorlog) { 267 | if ([erroroutput containsString:@"curl"] && ![erroroutput containsString:@"Empty reply"]) { 268 | testnotif(@"ForwardNotifier Error",erroroutput); 269 | } 270 | } 271 | }); 272 | } 273 | } 274 | } 275 | 276 | static void (*_logos_orig$sender$BBServer$publishBulletin$destinations$)(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST, SEL, BBBulletin *, unsigned long long); static void _logos_method$sender$BBServer$publishBulletin$destinations$(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST, SEL, BBBulletin *, unsigned long long); static void (*_logos_orig$sender$SpringBoard$applicationDidFinishLaunching$)(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST, SEL, id); static void _logos_method$sender$SpringBoard$applicationDidFinishLaunching$(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST, SEL, id); 277 | 278 | static void _logos_method$sender$BBServer$publishBulletin$destinations$(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd, BBBulletin * arg1, unsigned long long arg2) { 279 | _logos_orig$sender$BBServer$publishBulletin$destinations$(self, _cmd, arg1, arg2); 280 | title = arg1.content.title; 281 | message = arg1.content.message; 282 | bundleID = arg1.sectionID; 283 | SBApplication *app = [[_logos_static_class_lookup$SBApplicationController() sharedInstance] applicationWithBundleIdentifier:bundleID]; 284 | appName = app.displayName; 285 | if (([title length] != 0) || ([message length] != 0)) { 286 | if ([title length] == 0) { 287 | title = app.displayName; 288 | } 289 | if (![title containsString:@"ForwardNotifier"] && [arg1.date timeIntervalSinceNow] > -2) { 290 | NSMutableDictionary *applist = [[NSMutableDictionary alloc] initWithContentsOfFile:@"/var/mobile/Library/Preferences/com.greg0109.forwardnotifierblacklist"]; 291 | if (![applist valueForKey:arg1.sectionID] || [[NSString stringWithFormat:@"%@",[applist valueForKey:arg1.sectionID]] isEqual:@"0"]) { 292 | pushnotif(FALSE); 293 | } 294 | } else if ([title isEqualToString:@"ForwardNotifier Test"]) { 295 | pushnotif(TRUE); 296 | } 297 | } 298 | } 299 | 300 | 301 | 302 | static void _logos_method$sender$SpringBoard$applicationDidFinishLaunching$(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd, id arg1) { 303 | [[NSDistributedNotificationCenter defaultCenter] addObserverForName:@"com.greg0109.forwardnotifierreceiver/notification" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { 304 | NSString *titlenotif = notification.userInfo[@"title"]; 305 | NSString *messagenotif = notification.userInfo[@"message"]; 306 | if ([titlenotif isEqualToString:@"ActivateForwardNotifier"]) { 307 | if ([messagenotif isEqualToString:@"true"]) { 308 | [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"ForwardNotifier-Status"]; 309 | } else if ([messagenotif isEqualToString:@"false"]) { 310 | [[NSUserDefaults standardUserDefaults] setBool:FALSE forKey:@"ForwardNotifier-Status"]; 311 | } 312 | } else { 313 | [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"ForwardNotifier-Status"]; 314 | title = @"ForwardNotifier Test"; 315 | message = @"This is a test notification"; 316 | testnotif(title,message); 317 | } 318 | }]; 319 | _logos_orig$sender$SpringBoard$applicationDidFinishLaunching$(self, _cmd, arg1); 320 | } 321 | 322 | 323 | 324 | static void (*_logos_orig$devicereceiver$SpringBoard$applicationDidFinishLaunching$)(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST, SEL, id); static void _logos_method$devicereceiver$SpringBoard$applicationDidFinishLaunching$(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST, SEL, id); 325 | 326 | static void _logos_method$devicereceiver$SpringBoard$applicationDidFinishLaunching$(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd, id arg1) { 327 | [[NSDistributedNotificationCenter defaultCenter] addObserverForName:@"com.greg0109.forwardnotifierreceiver/notification" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { 328 | NSString *titlenotif = notification.userInfo[@"title"]; 329 | NSString *messagenotif = notification.userInfo[@"message"]; 330 | testnotif(titlenotif,messagenotif); 331 | }]; 332 | _logos_orig$devicereceiver$SpringBoard$applicationDidFinishLaunching$(self, _cmd, arg1); 333 | } 334 | 335 | 336 | 337 | static __attribute__((constructor)) void _logosLocalCtor_5c40de68(int __unused argc, char __unused **argv, char __unused **envp) { 338 | loadPrefs(); 339 | CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback)loadPrefs, CFSTR("com.greg0109.forwardnotifierprefs.settingschanged"), NULL, CFNotificationSuspensionBehaviorCoalesce); 340 | {Class _logos_class$_ungrouped$BBServer = objc_getClass("BBServer"); { MSHookMessageEx(_logos_class$_ungrouped$BBServer, @selector(initWithQueue:), (IMP)&_logos_method$_ungrouped$BBServer$initWithQueue$, (IMP*)&_logos_orig$_ungrouped$BBServer$initWithQueue$);}{ MSHookMessageEx(_logos_class$_ungrouped$BBServer, @selector(initWithQueue:dataProviderManager:syncService:dismissalSyncCache:observerListener:utilitiesListener:conduitListener:systemStateListener:settingsListener:), (IMP)&_logos_method$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$, (IMP*)&_logos_orig$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$);}{ MSHookMessageEx(_logos_class$_ungrouped$BBServer, sel_registerName("dealloc"), (IMP)&_logos_method$_ungrouped$BBServer$dealloc, (IMP*)&_logos_orig$_ungrouped$BBServer$dealloc);}} 341 | if (receiver) { 342 | {Class _logos_class$devicereceiver$SpringBoard = objc_getClass("SpringBoard"); { MSHookMessageEx(_logos_class$devicereceiver$SpringBoard, @selector(applicationDidFinishLaunching:), (IMP)&_logos_method$devicereceiver$SpringBoard$applicationDidFinishLaunching$, (IMP*)&_logos_orig$devicereceiver$SpringBoard$applicationDidFinishLaunching$);}} 343 | } else { 344 | {Class _logos_class$sender$BBServer = objc_getClass("BBServer"); { MSHookMessageEx(_logos_class$sender$BBServer, @selector(publishBulletin:destinations:), (IMP)&_logos_method$sender$BBServer$publishBulletin$destinations$, (IMP*)&_logos_orig$sender$BBServer$publishBulletin$destinations$);}Class _logos_class$sender$SpringBoard = objc_getClass("SpringBoard"); { MSHookMessageEx(_logos_class$sender$SpringBoard, @selector(applicationDidFinishLaunching:), (IMP)&_logos_method$sender$SpringBoard$applicationDidFinishLaunching$, (IMP*)&_logos_orig$sender$SpringBoard$applicationDidFinishLaunching$);}} 345 | } 346 | } 347 | -------------------------------------------------------------------------------- /.theos/obj/arm64/main.m.f318108f.Td: -------------------------------------------------------------------------------- 1 | /Users/greg/Desktop/forwardnotifier/.theos/obj/arm64/main.m.f318108f.o: \ 2 | main.m /Users/greg/theos/Prefix.pch \ 3 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h \ 4 | /Users/greg/theos/vendor/include/theos/IOSMacros.h \ 5 | /Users/greg/theos/vendor/include/HBLog.h \ 6 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h 7 | 8 | /Users/greg/theos/Prefix.pch: 9 | 10 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h: 11 | 12 | /Users/greg/theos/vendor/include/theos/IOSMacros.h: 13 | 14 | /Users/greg/theos/vendor/include/HBLog.h: 15 | 16 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h: 17 | -------------------------------------------------------------------------------- /.theos/obj/arm64/main.m.f318108f.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64/main.m.f318108f.o -------------------------------------------------------------------------------- /.theos/obj/arm64e/FNPRootListController.m.2caf96a5.Td: -------------------------------------------------------------------------------- 1 | /home/glith/Escritorio/forwardnotifier/.theos/obj/arm64e/FNPRootListController.m.2caf96a5.o: \ 2 | FNPRootListController.m /home/glith/theos/Prefix.pch \ 3 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h \ 4 | /home/glith/theos/vendor/include/theos/IOSMacros.h \ 5 | /home/glith/theos/vendor/include/HBLog.h FNPRootListController.h \ 6 | /home/glith/theos/vendor/include/Preferences/PSListController.h \ 7 | /home/glith/theos/vendor/include/Preferences/PSViewController.h \ 8 | /home/glith/theos/vendor/include/Preferences/PSSpecifier.h \ 9 | /home/glith/theos/vendor/include/Preferences/PSTableCell.h \ 10 | /home/glith/theos/include/AppList/AppList.h \ 11 | /home/glith/theos/include/AppList/ALApplicationList.h \ 12 | /home/glith/theos/include/AppList/ALApplicationTableDataSource.h \ 13 | /home/glith/theos/include/AppList/ALValueCell.h \ 14 | /home/glith/theos/vendor/include/FrontBoardServices/FBSSystemService.h \ 15 | /home/glith/theos/vendor/include/SpringBoardServices/SBSRestartRenderServerAction.h \ 16 | /home/glith/theos/vendor/include/SpringBoardServices/SBSRelaunchAction.h \ 17 | /home/glith/theos/vendor/include/BaseBoard/BSAction.h \ 18 | /home/glith/theos/vendor/include/BaseBoard/BSDescriptionProviding.h \ 19 | /home/glith/theos/vendor/include/BaseBoard/BSSettingDescriptionProvider.h \ 20 | /home/glith/theos/vendor/include/BaseBoard/BSXPCCoding.h 21 | 22 | /home/glith/theos/Prefix.pch: 23 | 24 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h: 25 | 26 | /home/glith/theos/vendor/include/theos/IOSMacros.h: 27 | 28 | /home/glith/theos/vendor/include/HBLog.h: 29 | 30 | FNPRootListController.h: 31 | 32 | /home/glith/theos/vendor/include/Preferences/PSListController.h: 33 | 34 | /home/glith/theos/vendor/include/Preferences/PSViewController.h: 35 | 36 | /home/glith/theos/vendor/include/Preferences/PSSpecifier.h: 37 | 38 | /home/glith/theos/vendor/include/Preferences/PSTableCell.h: 39 | 40 | /home/glith/theos/include/AppList/AppList.h: 41 | 42 | /home/glith/theos/include/AppList/ALApplicationList.h: 43 | 44 | /home/glith/theos/include/AppList/ALApplicationTableDataSource.h: 45 | 46 | /home/glith/theos/include/AppList/ALValueCell.h: 47 | 48 | /home/glith/theos/vendor/include/FrontBoardServices/FBSSystemService.h: 49 | 50 | /home/glith/theos/vendor/include/SpringBoardServices/SBSRestartRenderServerAction.h: 51 | 52 | /home/glith/theos/vendor/include/SpringBoardServices/SBSRelaunchAction.h: 53 | 54 | /home/glith/theos/vendor/include/BaseBoard/BSAction.h: 55 | 56 | /home/glith/theos/vendor/include/BaseBoard/BSDescriptionProviding.h: 57 | 58 | /home/glith/theos/vendor/include/BaseBoard/BSSettingDescriptionProvider.h: 59 | 60 | /home/glith/theos/vendor/include/BaseBoard/BSXPCCoding.h: 61 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/FNPRootListController.m.2caf96a5.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/FNPRootListController.m.2caf96a5.o -------------------------------------------------------------------------------- /.theos/obj/arm64e/FNPRootListController.m.f07d197f.Td: -------------------------------------------------------------------------------- 1 | /Users/greg/Desktop/forwardnotifier/.theos/obj/arm64e/FNPRootListController.m.f07d197f.o: \ 2 | FNPRootListController.m /Users/greg/theos/Prefix.pch \ 3 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h \ 4 | /Users/greg/theos/vendor/include/theos/IOSMacros.h \ 5 | /Users/greg/theos/vendor/include/HBLog.h \ 6 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h \ 7 | FNPRootListController.h \ 8 | /Users/greg/theos/vendor/include/Preferences/PSListController.h \ 9 | /Users/greg/theos/vendor/include/Preferences/PSViewController.h \ 10 | /Users/greg/theos/vendor/include/Preferences/PSSpecifier.h \ 11 | /Users/greg/theos/vendor/include/Preferences/PSTableCell.h \ 12 | /Users/greg/theos/vendor/include/AppList/AppList.h \ 13 | /Users/greg/theos/vendor/include/AppList/ALApplicationList.h \ 14 | /Users/greg/theos/vendor/include/AppList/ALApplicationTableDataSource.h \ 15 | /Users/greg/theos/vendor/include/AppList/ALValueCell.h \ 16 | /Users/greg/theos/vendor/include/FrontBoardServices/FBSSystemService.h \ 17 | /Users/greg/theos/vendor/include/SpringBoardServices/SBSRestartRenderServerAction.h \ 18 | /Users/greg/theos/vendor/include/SpringBoardServices/SBSRelaunchAction.h \ 19 | /Users/greg/theos/vendor/include/BaseBoard/BSAction.h \ 20 | /Users/greg/theos/vendor/include/BaseBoard/BSDescriptionProviding.h \ 21 | /Users/greg/theos/vendor/include/BaseBoard/BSSettingDescriptionProvider.h \ 22 | /Users/greg/theos/vendor/include/BaseBoard/BSXPCCoding.h 23 | 24 | /Users/greg/theos/Prefix.pch: 25 | 26 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h: 27 | 28 | /Users/greg/theos/vendor/include/theos/IOSMacros.h: 29 | 30 | /Users/greg/theos/vendor/include/HBLog.h: 31 | 32 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h: 33 | 34 | FNPRootListController.h: 35 | 36 | /Users/greg/theos/vendor/include/Preferences/PSListController.h: 37 | 38 | /Users/greg/theos/vendor/include/Preferences/PSViewController.h: 39 | 40 | /Users/greg/theos/vendor/include/Preferences/PSSpecifier.h: 41 | 42 | /Users/greg/theos/vendor/include/Preferences/PSTableCell.h: 43 | 44 | /Users/greg/theos/vendor/include/AppList/AppList.h: 45 | 46 | /Users/greg/theos/vendor/include/AppList/ALApplicationList.h: 47 | 48 | /Users/greg/theos/vendor/include/AppList/ALApplicationTableDataSource.h: 49 | 50 | /Users/greg/theos/vendor/include/AppList/ALValueCell.h: 51 | 52 | /Users/greg/theos/vendor/include/FrontBoardServices/FBSSystemService.h: 53 | 54 | /Users/greg/theos/vendor/include/SpringBoardServices/SBSRestartRenderServerAction.h: 55 | 56 | /Users/greg/theos/vendor/include/SpringBoardServices/SBSRelaunchAction.h: 57 | 58 | /Users/greg/theos/vendor/include/BaseBoard/BSAction.h: 59 | 60 | /Users/greg/theos/vendor/include/BaseBoard/BSDescriptionProviding.h: 61 | 62 | /Users/greg/theos/vendor/include/BaseBoard/BSSettingDescriptionProvider.h: 63 | 64 | /Users/greg/theos/vendor/include/BaseBoard/BSXPCCoding.h: 65 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/FNPRootListController.m.f07d197f.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/FNPRootListController.m.f07d197f.o -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifier.bundle/ForwardNotifier: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/ForwardNotifier.bundle/ForwardNotifier -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifier.bundle/ForwardNotifier.dSYM/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | com.apple.xcode.dsym.ForwardNotifier 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | dSYM 13 | CFBundleSignature 14 | ???? 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifier.bundle/ForwardNotifier.dSYM/Contents/Resources/DWARF/ForwardNotifier: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/ForwardNotifier.bundle/ForwardNotifier.dSYM/Contents/Resources/DWARF/ForwardNotifier -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifier.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/ForwardNotifier.dylib -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifier.dylib.dSYM/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | com.apple.xcode.dsym.ForwardNotifier.dylib 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | dSYM 13 | CFBundleSignature 14 | ???? 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifier.dylib.dSYM/Contents/Resources/DWARF/ForwardNotifier.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/ForwardNotifier.dylib.dSYM/Contents/Resources/DWARF/ForwardNotifier.dylib -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifierCC.bundle/ForwardNotifierCC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/ForwardNotifierCC.bundle/ForwardNotifierCC -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifierCC.bundle/ForwardNotifierCC.dSYM/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | com.apple.xcode.dsym.ForwardNotifierCC 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | dSYM 13 | CFBundleSignature 14 | ???? 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifierCC.bundle/ForwardNotifierCC.dSYM/Contents/Resources/DWARF/ForwardNotifierCC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/ForwardNotifierCC.bundle/ForwardNotifierCC.dSYM/Contents/Resources/DWARF/ForwardNotifierCC -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifierCC.m.98cdb3a4.Td: -------------------------------------------------------------------------------- 1 | /Users/greg/Desktop/forwardnotifier/.theos/obj/arm64e/ForwardNotifierCC.m.98cdb3a4.o: \ 2 | ForwardNotifierCC.m /Users/greg/theos/Prefix.pch \ 3 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h \ 4 | /Users/greg/theos/vendor/include/theos/IOSMacros.h \ 5 | /Users/greg/theos/vendor/include/HBLog.h \ 6 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h \ 7 | ForwardNotifierCC.h \ 8 | /Users/greg/theos/include/ControlCenterUIKit/CCUIToggleModule.h \ 9 | /Users/greg/theos/include/ControlCenterUIKit/CCUICAPackageDescription.h \ 10 | /Users/greg/theos/include/ControlCenterUIKit/CCUIContentModule-Protocol.h \ 11 | /Users/greg/theos/include/ControlCenterUIKit/CCUIContentModuleContentViewController-Protocol.h 12 | 13 | /Users/greg/theos/Prefix.pch: 14 | 15 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h: 16 | 17 | /Users/greg/theos/vendor/include/theos/IOSMacros.h: 18 | 19 | /Users/greg/theos/vendor/include/HBLog.h: 20 | 21 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h: 22 | 23 | ForwardNotifierCC.h: 24 | 25 | /Users/greg/theos/include/ControlCenterUIKit/CCUIToggleModule.h: 26 | 27 | /Users/greg/theos/include/ControlCenterUIKit/CCUICAPackageDescription.h: 28 | 29 | /Users/greg/theos/include/ControlCenterUIKit/CCUIContentModule-Protocol.h: 30 | 31 | /Users/greg/theos/include/ControlCenterUIKit/CCUIContentModuleContentViewController-Protocol.h: 32 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifierCC.m.98cdb3a4.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/ForwardNotifierCC.m.98cdb3a4.o -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifierReceiver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/ForwardNotifierReceiver -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifierReceiver.dSYM/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | com.apple.xcode.dsym.ForwardNotifierReceiver 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | dSYM 13 | CFBundleSignature 14 | ???? 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/ForwardNotifierReceiver.dSYM/Contents/Resources/DWARF/ForwardNotifierReceiver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/ForwardNotifierReceiver.dSYM/Contents/Resources/DWARF/ForwardNotifierReceiver -------------------------------------------------------------------------------- /.theos/obj/arm64e/Tweak.x.586144b7.Td: -------------------------------------------------------------------------------- 1 | /home/glith/Documentos/Coding/PrivateTweaks/forwardnotifier/.theos/obj/arm64e/Tweak.x.586144b7.o: \ 2 | /home/glith/Documentos/Coding/PrivateTweaks/forwardnotifier/.theos/obj/arm64e/Tweak.x.m \ 3 | /home/glith/theos/Prefix.pch \ 4 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h \ 5 | /home/glith/theos/vendor/include/theos/IOSMacros.h \ 6 | /home/glith/theos/vendor/include/HBLog.h \ 7 | /home/glith/Documentos/Coding/PrivateTweaks/forwardnotifier/Tweak.h \ 8 | /home/glith/theos/include/NSTask.h \ 9 | /home/glith/theos/include/substrate.h 10 | 11 | /home/glith/theos/Prefix.pch: 12 | 13 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h: 14 | 15 | /home/glith/theos/vendor/include/theos/IOSMacros.h: 16 | 17 | /home/glith/theos/vendor/include/HBLog.h: 18 | 19 | /home/glith/Documentos/Coding/PrivateTweaks/forwardnotifier/Tweak.h: 20 | 21 | /home/glith/theos/include/NSTask.h: 22 | 23 | /home/glith/theos/include/substrate.h: 24 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/Tweak.x.586144b7.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/Tweak.x.586144b7.o -------------------------------------------------------------------------------- /.theos/obj/arm64e/Tweak.x.6472c773.Td: -------------------------------------------------------------------------------- 1 | /Users/greg/Desktop/forwardnotifier/.theos/obj/arm64e/Tweak.x.6472c773.o: \ 2 | /Users/greg/Desktop/forwardnotifier/.theos/obj/arm64e/Tweak.x.m \ 3 | /Users/greg/theos/Prefix.pch \ 4 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h \ 5 | /Users/greg/theos/vendor/include/theos/IOSMacros.h \ 6 | /Users/greg/theos/vendor/include/HBLog.h \ 7 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h \ 8 | /Users/greg/Desktop/forwardnotifier/Tweak.h \ 9 | /Users/greg/theos/include/NSTask.h \ 10 | /Users/greg/theos/include/substrate.h 11 | 12 | /Users/greg/theos/Prefix.pch: 13 | 14 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h: 15 | 16 | /Users/greg/theos/vendor/include/theos/IOSMacros.h: 17 | 18 | /Users/greg/theos/vendor/include/HBLog.h: 19 | 20 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h: 21 | 22 | /Users/greg/Desktop/forwardnotifier/Tweak.h: 23 | 24 | /Users/greg/theos/include/NSTask.h: 25 | 26 | /Users/greg/theos/include/substrate.h: 27 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/Tweak.x.6472c773.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/Tweak.x.6472c773.o -------------------------------------------------------------------------------- /.theos/obj/arm64e/Tweak.x.9020a7f1.Td: -------------------------------------------------------------------------------- 1 | /home/glith/Escritorio/forwardnotifier/.theos/obj/arm64e/Tweak.x.9020a7f1.o: \ 2 | /home/glith/Escritorio/forwardnotifier/.theos/obj/arm64e/Tweak.x.m \ 3 | /home/glith/theos/Prefix.pch \ 4 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h \ 5 | /home/glith/theos/vendor/include/theos/IOSMacros.h \ 6 | /home/glith/theos/vendor/include/HBLog.h \ 7 | /home/glith/Escritorio/forwardnotifier/Tweak.h \ 8 | /home/glith/theos/include/NSTask.h \ 9 | /home/glith/theos/include/substrate.h 10 | 11 | /home/glith/theos/Prefix.pch: 12 | 13 | /home/glith/theos/vendor/include/theos/BackwardsCompat.h: 14 | 15 | /home/glith/theos/vendor/include/theos/IOSMacros.h: 16 | 17 | /home/glith/theos/vendor/include/HBLog.h: 18 | 19 | /home/glith/Escritorio/forwardnotifier/Tweak.h: 20 | 21 | /home/glith/theos/include/NSTask.h: 22 | 23 | /home/glith/theos/include/substrate.h: 24 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/Tweak.x.9020a7f1.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/Tweak.x.9020a7f1.o -------------------------------------------------------------------------------- /.theos/obj/arm64e/Tweak.x.m: -------------------------------------------------------------------------------- 1 | #line 1 "Tweak.x" 2 | #import "Tweak.h" 3 | 4 | struct SBIconImageInfo iconspecs; 5 | 6 | 7 | BOOL receiver; 8 | BOOL errorlog; 9 | BOOL lockstateenabled; 10 | int pcspecifier; 11 | 12 | 13 | int methodspecifier; 14 | BOOL keyauthentication; 15 | NSString *user; 16 | NSString *ip; 17 | NSString *port; 18 | NSString *password; 19 | NSString *command; 20 | NSString *finalCommand; 21 | NSArray *arguments; 22 | 23 | 24 | NSString *pc; 25 | NSString *title; 26 | NSMutableString *finalTitle; 27 | NSString *message; 28 | NSMutableString *finalMessage; 29 | NSString *bundleID; 30 | NSString *appName; 31 | BOOL locked; 32 | 33 | 34 | NSPipe *out; 35 | static BBServer *notificationserver = nil; 36 | 37 | static void loadPrefs() { 38 | NSMutableDictionary *prefs = [NSMutableDictionary dictionaryWithContentsOfFile:@"/User/Library/Preferences/com.greg0109.forwardnotifierprefs.plist"]; 39 | receiver = prefs[@"receiver"] ? [prefs[@"receiver"] boolValue] : NO; 40 | errorlog = prefs[@"errorlog"] ? [prefs[@"errorlog"] boolValue] : NO; 41 | lockstateenabled = prefs[@"lockstateenabled"] ? [prefs[@"lockstateenabled"] boolValue] : YES; 42 | pcspecifier = prefs[@"pcspecifier"] ? [prefs[@"pcspecifier"] intValue] : 0; 43 | 44 | methodspecifier = prefs[@"methodspecifier"] ? [prefs[@"methodspecifier"] intValue] : 0; 45 | keyauthentication = prefs[@"keyauthentication"] ? [prefs[@"keyauthentication"] boolValue] : NO; 46 | user = prefs[@"user"] && !([prefs[@"user"] isEqualToString:@""]) ? [prefs[@"user"] stringValue] : @"user"; 47 | ip = prefs[@"ip"] && !([prefs[@"ip"] isEqualToString:@""]) ? [prefs[@"ip"] stringValue] : @"ip"; 48 | port = prefs[@"port"] && !([prefs[@"port"] isEqualToString:@""]) ? [prefs[@"port"] stringValue] : @"22"; 49 | password = prefs[@"password"] && !([prefs[@"password"] isEqualToString:@""]) ? [prefs[@"password"] stringValue] : @"password"; 50 | user = [user stringByReplacingOccurrencesOfString:@" " withString:@""]; 51 | ip = [ip stringByReplacingOccurrencesOfString:@" " withString:@""]; 52 | password = [password stringByReplacingOccurrencesOfString:@" " withString:@""]; 53 | } 54 | 55 | static dispatch_queue_t getBBServerQueue() { 56 | static dispatch_queue_t queue; 57 | static dispatch_once_t predicate; 58 | dispatch_once(&predicate, ^{ 59 | void *handle = dlopen(NULL, RTLD_GLOBAL); 60 | if (handle) { 61 | dispatch_queue_t __weak *pointer = (__weak dispatch_queue_t *) dlsym(handle, "__BBServerQueue"); 62 | if (pointer) { 63 | queue = *pointer; 64 | } 65 | dlclose(handle); 66 | } 67 | }); 68 | return queue; 69 | } 70 | 71 | 72 | #include 73 | #if defined(__clang__) 74 | #if __has_feature(objc_arc) 75 | #define _LOGOS_SELF_TYPE_NORMAL __unsafe_unretained 76 | #define _LOGOS_SELF_TYPE_INIT __attribute__((ns_consumed)) 77 | #define _LOGOS_SELF_CONST const 78 | #define _LOGOS_RETURN_RETAINED __attribute__((ns_returns_retained)) 79 | #else 80 | #define _LOGOS_SELF_TYPE_NORMAL 81 | #define _LOGOS_SELF_TYPE_INIT 82 | #define _LOGOS_SELF_CONST 83 | #define _LOGOS_RETURN_RETAINED 84 | #endif 85 | #else 86 | #define _LOGOS_SELF_TYPE_NORMAL 87 | #define _LOGOS_SELF_TYPE_INIT 88 | #define _LOGOS_SELF_CONST 89 | #define _LOGOS_RETURN_RETAINED 90 | #endif 91 | 92 | @class BBServer; @class SpringBoard; @class SBLockStateAggregator; @class SBApplicationController; @class SBIconController; @class BBAction; @class BBBulletin; 93 | static BBServer* (*_logos_orig$_ungrouped$BBServer$initWithQueue$)(_LOGOS_SELF_TYPE_INIT BBServer*, SEL, id) _LOGOS_RETURN_RETAINED; static BBServer* _logos_method$_ungrouped$BBServer$initWithQueue$(_LOGOS_SELF_TYPE_INIT BBServer*, SEL, id) _LOGOS_RETURN_RETAINED; static BBServer* (*_logos_orig$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$)(_LOGOS_SELF_TYPE_INIT BBServer*, SEL, id, id, id, id, id, id, id, id, id) _LOGOS_RETURN_RETAINED; static BBServer* _logos_method$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$(_LOGOS_SELF_TYPE_INIT BBServer*, SEL, id, id, id, id, id, id, id, id, id) _LOGOS_RETURN_RETAINED; static void (*_logos_orig$_ungrouped$BBServer$dealloc)(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST, SEL); static void _logos_method$_ungrouped$BBServer$dealloc(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST, SEL); 94 | static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$SBLockStateAggregator(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("SBLockStateAggregator"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$BBBulletin(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("BBBulletin"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$SBApplicationController(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("SBApplicationController"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$SBIconController(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("SBIconController"); } return _klass; }static __inline__ __attribute__((always_inline)) __attribute__((unused)) Class _logos_static_class_lookup$BBAction(void) { static Class _klass; if(!_klass) { _klass = objc_getClass("BBAction"); } return _klass; } 95 | #line 70 "Tweak.x" 96 | 97 | static BBServer* _logos_method$_ungrouped$BBServer$initWithQueue$(_LOGOS_SELF_TYPE_INIT BBServer* __unused self, SEL __unused _cmd, id arg1) _LOGOS_RETURN_RETAINED { 98 | notificationserver = _logos_orig$_ungrouped$BBServer$initWithQueue$(self, _cmd, arg1); 99 | return notificationserver; 100 | } 101 | static BBServer* _logos_method$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$(_LOGOS_SELF_TYPE_INIT BBServer* __unused self, SEL __unused _cmd, id arg1, id arg2, id arg3, id arg4, id arg5, id arg6, id arg7, id arg8, id arg9) _LOGOS_RETURN_RETAINED { 102 | notificationserver = _logos_orig$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$(self, _cmd, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); 103 | return notificationserver; 104 | } 105 | static void _logos_method$_ungrouped$BBServer$dealloc(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd) { 106 | if (notificationserver == self) { 107 | notificationserver = nil; 108 | } 109 | _logos_orig$_ungrouped$BBServer$dealloc(self, _cmd); 110 | } 111 | 112 | 113 | void testnotif(NSString *titletest, NSString *messagetest) { 114 | BBBulletin *bulletin = [[_logos_static_class_lookup$BBBulletin() alloc] init]; 115 | 116 | bulletin.title = titletest; 117 | bulletin.message = messagetest; 118 | bulletin.sectionID = @"com.apple.Preferences"; 119 | bulletin.bulletinID = [[NSProcessInfo processInfo] globallyUniqueString]; 120 | bulletin.recordID = [[NSProcessInfo processInfo] globallyUniqueString]; 121 | bulletin.publisherBulletinID = [[NSProcessInfo processInfo] globallyUniqueString]; 122 | bulletin.date = [NSDate date]; 123 | bulletin.defaultAction = [_logos_static_class_lookup$BBAction() actionWithLaunchBundleID:@"prefs:root=ForwardNotifier" callblock:nil]; 124 | dispatch_sync(getBBServerQueue(), ^{ 125 | [notificationserver publishBulletin:bulletin destinations:14]; 126 | }); 127 | } 128 | 129 | BOOL isItLocked() { 130 | if (lockstateenabled) { 131 | locked = [[_logos_static_class_lookup$SBLockStateAggregator() sharedInstance] lockState]; 132 | } else { 133 | locked = TRUE; 134 | } 135 | return locked; 136 | } 137 | 138 | void sanitizeText() { 139 | finalTitle = [@"" mutableCopy]; 140 | for (int i=0; i 2 && errorlog) { 218 | testnotif(@"ForwardNotifier Error",erroroutput); 219 | } 220 | }); 221 | } 222 | } else if (methodspecifier == 1) { 223 | 224 | SBApplicationIcon *icon = [((SBIconController *)[_logos_static_class_lookup$SBIconController() sharedInstance]).model expectedIconForDisplayIdentifier:bundleID]; 225 | UIImage *image = nil; 226 | iconspecs.size = CGSizeMake(60, 60); 227 | iconspecs.scale = [UIScreen mainScreen].scale; 228 | iconspecs.continuousCornerRadius = 12; 229 | image = [icon generateIconImageWithInfo:iconspecs]; 230 | NSData *iconData = UIImagePNGRepresentation(image); 231 | NSString *iconBase64; 232 | if (![title isEqualToString:@"ForwardNotifier Test"]) { 233 | iconBase64 = [iconData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; 234 | } else { 235 | iconBase64 = forwardNotifierIconBase64; 236 | } 237 | 238 | NSData *titleData = [title dataUsingEncoding: NSUTF8StringEncoding]; 239 | NSString *titleBase64 = [titleData base64EncodedStringWithOptions:0]; 240 | NSData *messageData = [message dataUsingEncoding: NSUTF8StringEncoding]; 241 | NSString *messageBase64 = [messageData base64EncodedStringWithOptions:0]; 242 | if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"ForwardNotifier-Status"] isEqual:@"1"] && (locked)) { 243 | dispatch_queue_t sendnotif = dispatch_queue_create("Send Notif", NULL); 244 | dispatch_async(sendnotif, ^{ 245 | title = [title stringByReplacingOccurrencesOfString:@"\"" withString:@"\\""\""]; 246 | message = [message stringByReplacingOccurrencesOfString:@"\"" withString:@"\\""\""]; 247 | if (pcspecifier == 0) { 248 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"Linux\", \"img\": \"%@\", \"appname\": \"%@\"}",titleBase64,messageBase64,iconBase64,appName]; 249 | } else if (pcspecifier == 1) { 250 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"MacOS\", \"img\": \"%@\"}",titleBase64,messageBase64,iconBase64]; 251 | } else if (pcspecifier == 2) { 252 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"iOS\", \"img\": \"%@\"}",titleBase64,messageBase64,iconBase64]; 253 | } else if (pcspecifier == 3) { 254 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"Windows\", \"img\": \"%@\"}",titleBase64,messageBase64,iconBase64]; 255 | } 256 | NSTask *task = [[NSTask alloc] init]; 257 | [task setLaunchPath:@"/usr/bin/curl"]; 258 | [task setArguments:@[@"-sS",[NSString stringWithFormat:@"%@:8000",ip],@"-d",command ]]; 259 | out = [NSPipe pipe]; 260 | [task setStandardError:out]; 261 | [task launch]; 262 | [task waitUntilExit]; 263 | NSFileHandle * read = [out fileHandleForReading]; 264 | NSData * dataRead = [read readDataToEndOfFile]; 265 | NSString *erroroutput = [[NSString alloc] initWithData:dataRead encoding:NSUTF8StringEncoding]; 266 | if ([erroroutput length] > 2 && errorlog) { 267 | if ([erroroutput containsString:@"curl"] && ![erroroutput containsString:@"Empty reply"]) { 268 | testnotif(@"ForwardNotifier Error",erroroutput); 269 | } 270 | } 271 | }); 272 | } 273 | } 274 | } 275 | 276 | static void (*_logos_orig$sender$BBServer$publishBulletin$destinations$)(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST, SEL, BBBulletin *, unsigned long long); static void _logos_method$sender$BBServer$publishBulletin$destinations$(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST, SEL, BBBulletin *, unsigned long long); static void (*_logos_orig$sender$SpringBoard$applicationDidFinishLaunching$)(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST, SEL, id); static void _logos_method$sender$SpringBoard$applicationDidFinishLaunching$(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST, SEL, id); 277 | 278 | static void _logos_method$sender$BBServer$publishBulletin$destinations$(_LOGOS_SELF_TYPE_NORMAL BBServer* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd, BBBulletin * arg1, unsigned long long arg2) { 279 | _logos_orig$sender$BBServer$publishBulletin$destinations$(self, _cmd, arg1, arg2); 280 | title = arg1.content.title; 281 | message = arg1.content.message; 282 | bundleID = arg1.sectionID; 283 | SBApplication *app = [[_logos_static_class_lookup$SBApplicationController() sharedInstance] applicationWithBundleIdentifier:bundleID]; 284 | appName = app.displayName; 285 | if (([title length] != 0) || ([message length] != 0)) { 286 | if ([title length] == 0) { 287 | title = app.displayName; 288 | } 289 | if (![title containsString:@"ForwardNotifier"] && [arg1.date timeIntervalSinceNow] > -2) { 290 | NSMutableDictionary *applist = [[NSMutableDictionary alloc] initWithContentsOfFile:@"/var/mobile/Library/Preferences/com.greg0109.forwardnotifierblacklist"]; 291 | if (![applist valueForKey:arg1.sectionID] || [[NSString stringWithFormat:@"%@",[applist valueForKey:arg1.sectionID]] isEqual:@"0"]) { 292 | pushnotif(FALSE); 293 | } 294 | } else if ([title isEqualToString:@"ForwardNotifier Test"]) { 295 | pushnotif(TRUE); 296 | } 297 | } 298 | } 299 | 300 | 301 | 302 | static void _logos_method$sender$SpringBoard$applicationDidFinishLaunching$(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd, id arg1) { 303 | [[NSDistributedNotificationCenter defaultCenter] addObserverForName:@"com.greg0109.forwardnotifierreceiver/notification" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { 304 | NSString *titlenotif = notification.userInfo[@"title"]; 305 | NSString *messagenotif = notification.userInfo[@"message"]; 306 | if ([titlenotif isEqualToString:@"ActivateForwardNotifier"]) { 307 | if ([messagenotif isEqualToString:@"true"]) { 308 | [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"ForwardNotifier-Status"]; 309 | } else if ([messagenotif isEqualToString:@"false"]) { 310 | [[NSUserDefaults standardUserDefaults] setBool:FALSE forKey:@"ForwardNotifier-Status"]; 311 | } 312 | } else { 313 | [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"ForwardNotifier-Status"]; 314 | title = @"ForwardNotifier Test"; 315 | message = @"This is a test notification"; 316 | testnotif(title,message); 317 | } 318 | }]; 319 | _logos_orig$sender$SpringBoard$applicationDidFinishLaunching$(self, _cmd, arg1); 320 | } 321 | 322 | 323 | 324 | static void (*_logos_orig$devicereceiver$SpringBoard$applicationDidFinishLaunching$)(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST, SEL, id); static void _logos_method$devicereceiver$SpringBoard$applicationDidFinishLaunching$(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST, SEL, id); 325 | 326 | static void _logos_method$devicereceiver$SpringBoard$applicationDidFinishLaunching$(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST __unused self, SEL __unused _cmd, id arg1) { 327 | [[NSDistributedNotificationCenter defaultCenter] addObserverForName:@"com.greg0109.forwardnotifierreceiver/notification" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { 328 | NSString *titlenotif = notification.userInfo[@"title"]; 329 | NSString *messagenotif = notification.userInfo[@"message"]; 330 | testnotif(titlenotif,messagenotif); 331 | }]; 332 | _logos_orig$devicereceiver$SpringBoard$applicationDidFinishLaunching$(self, _cmd, arg1); 333 | } 334 | 335 | 336 | 337 | static __attribute__((constructor)) void _logosLocalCtor_5c40de68(int __unused argc, char __unused **argv, char __unused **envp) { 338 | loadPrefs(); 339 | CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback)loadPrefs, CFSTR("com.greg0109.forwardnotifierprefs.settingschanged"), NULL, CFNotificationSuspensionBehaviorCoalesce); 340 | {Class _logos_class$_ungrouped$BBServer = objc_getClass("BBServer"); { MSHookMessageEx(_logos_class$_ungrouped$BBServer, @selector(initWithQueue:), (IMP)&_logos_method$_ungrouped$BBServer$initWithQueue$, (IMP*)&_logos_orig$_ungrouped$BBServer$initWithQueue$);}{ MSHookMessageEx(_logos_class$_ungrouped$BBServer, @selector(initWithQueue:dataProviderManager:syncService:dismissalSyncCache:observerListener:utilitiesListener:conduitListener:systemStateListener:settingsListener:), (IMP)&_logos_method$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$, (IMP*)&_logos_orig$_ungrouped$BBServer$initWithQueue$dataProviderManager$syncService$dismissalSyncCache$observerListener$utilitiesListener$conduitListener$systemStateListener$settingsListener$);}{ MSHookMessageEx(_logos_class$_ungrouped$BBServer, sel_registerName("dealloc"), (IMP)&_logos_method$_ungrouped$BBServer$dealloc, (IMP*)&_logos_orig$_ungrouped$BBServer$dealloc);}} 341 | if (receiver) { 342 | {Class _logos_class$devicereceiver$SpringBoard = objc_getClass("SpringBoard"); { MSHookMessageEx(_logos_class$devicereceiver$SpringBoard, @selector(applicationDidFinishLaunching:), (IMP)&_logos_method$devicereceiver$SpringBoard$applicationDidFinishLaunching$, (IMP*)&_logos_orig$devicereceiver$SpringBoard$applicationDidFinishLaunching$);}} 343 | } else { 344 | {Class _logos_class$sender$BBServer = objc_getClass("BBServer"); { MSHookMessageEx(_logos_class$sender$BBServer, @selector(publishBulletin:destinations:), (IMP)&_logos_method$sender$BBServer$publishBulletin$destinations$, (IMP*)&_logos_orig$sender$BBServer$publishBulletin$destinations$);}Class _logos_class$sender$SpringBoard = objc_getClass("SpringBoard"); { MSHookMessageEx(_logos_class$sender$SpringBoard, @selector(applicationDidFinishLaunching:), (IMP)&_logos_method$sender$SpringBoard$applicationDidFinishLaunching$, (IMP*)&_logos_orig$sender$SpringBoard$applicationDidFinishLaunching$);}} 345 | } 346 | } 347 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/main.m.0135e4e0.Td: -------------------------------------------------------------------------------- 1 | /Users/greg/Desktop/forwardnotifier/.theos/obj/arm64e/main.m.0135e4e0.o: \ 2 | main.m /Users/greg/theos/Prefix.pch \ 3 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h \ 4 | /Users/greg/theos/vendor/include/theos/IOSMacros.h \ 5 | /Users/greg/theos/vendor/include/HBLog.h \ 6 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h 7 | 8 | /Users/greg/theos/Prefix.pch: 9 | 10 | /Users/greg/theos/vendor/include/theos/BackwardsCompat.h: 11 | 12 | /Users/greg/theos/vendor/include/theos/IOSMacros.h: 13 | 14 | /Users/greg/theos/vendor/include/HBLog.h: 15 | 16 | /Users/greg/theos/vendor/include/CoreFoundation/CFLogUtilities.h: 17 | -------------------------------------------------------------------------------- /.theos/obj/arm64e/main.m.0135e4e0.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/.theos/obj/arm64e/main.m.0135e4e0.o -------------------------------------------------------------------------------- /Artwork/Banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/Artwork/Banner.png -------------------------------------------------------------------------------- /Artwork/CC Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/Artwork/CC Icon.png -------------------------------------------------------------------------------- /Artwork/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/Artwork/Icon.png -------------------------------------------------------------------------------- /ForwardNotifier Client Tools/Crossplatform Server/Linux Autoinstall/ForwardNotifierInstaller.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | checkroot=$(whoami) 3 | if [[ $checkroot != "root" ]]; then 4 | echo "This script needs to be executed as root" 5 | exit 6 | fi 7 | checkapt=$(which apt-get) 8 | checkpacman=$(which pacman) 9 | if [[ ! -z "$checkapt" ]]; then 10 | manager="apt-get install" 11 | echo "You are using apt-get" 12 | elif [[ ! -z "$checkpacman" ]]; then 13 | manager="pacman -S" 14 | echo "You are using pacman" 15 | else 16 | echo "Package Manager not recognized" 17 | exit 18 | fi 19 | user=$(awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd) 20 | echo "Select your user account (type the number):" 21 | iter=0 22 | for username in "${user[@]}" 23 | do 24 | echo "$iter: $username" 25 | iter=$(( iter + 1 )) 26 | done 27 | read answer 28 | user="${user[$answer]}" 29 | echo "user is $user" 30 | 31 | echo "Checking python3 installation...." 32 | check=$( which python3 ) 33 | if [[ -z "$check" ]]; then 34 | sudo $manager python3 35 | else 36 | echo "Python3 is installed" 37 | fi 38 | 39 | echo "Installing python modules..." 40 | checkmodules=$(pip3 freeze) 41 | checkrequests=$(echo $checkmodules | grep -i requests) 42 | if [[ -z $checkrequests ]]; then 43 | pip3 install requests 44 | fi 45 | 46 | echo "Checking python script installation....." 47 | serverinstalled=$( ls /usr/bin | grep ForwardNotifierServer) 48 | if [[ -z $serverinstalled ]]; then 49 | echo "Installing the python script...." 50 | wget https://raw.githubusercontent.com/Greg0109/ForwardNotifier/master/ForwardNotifier%20Client%20Tools/Crossplatform%20Server/ForwardNotifierServer.py 51 | if [[ $? -ne 0 ]]; then 52 | echo "Something went wrong with the download, please make sure your internet connection is on" 53 | exit 54 | fi 55 | sudo mv ForwardNotifierServer.py /usr/bin/ 56 | echo "Python script installed" 57 | else 58 | echo "Python script is installed, updating....." 59 | sudo rm /usr/bin/ForwardNotifierServer.py 60 | wget https://raw.githubusercontent.com/Greg0109/ForwardNotifier/master/ForwardNotifier%20Client%20Tools/Crossplatform%20Server/ForwardNotifierServer.py 61 | if [[ $? -ne 0 ]]; then 62 | echo "Something went wrong with the download, please make sure your internet connection is on" 63 | exit 64 | fi 65 | sudo mv ForwardNotifierServer.py /usr/bin/ 66 | echo "Python script updated" 67 | fi 68 | 69 | echo "Checking service installation..." 70 | service=$(ls /etc/systemd/system | grep ForwardNotifierServer) 71 | if [[ -z $service ]]; then 72 | echo "Setting up the service..." 73 | sudo cat <> /etc/systemd/system/ForwardNotifierServer.service 74 | [Unit] 75 | Description=ForwardNotifierServer 76 | Requires=network-online.target 77 | 78 | [Service] 79 | User=$user 80 | ExecStart=$check /usr/bin/ForwardNotifierServer.py 81 | Type=simple 82 | RemainAfterExit=yes 83 | Environment="DISPLAY=:0" "XAUTHORITY=/home/$user/.Xauthority" 84 | 85 | [Install] 86 | WantedBy=multi-user.target 87 | EOF 88 | sudo systemctl daemon-reload 89 | sudo systemctl enable ForwardNotifierServer.service 90 | sudo systemctl start ForwardNotifierServer.service 91 | echo "Service set up, installation done!" 92 | else 93 | sudo systemctl daemon-reload 94 | sudo systemctl enable ForwardNotifierServer.service 95 | sudo systemctl start ForwardNotifierServer.service 96 | echo "Service installed" 97 | fi 98 | echo "Checking notify-send installation...." 99 | notifier=$(which notify-send) 100 | if [[ -z "$notifier" ]]; then 101 | sudo $manager libnotify-bin #sudo pacman -S libnotify 102 | else 103 | echo "Notify-send installed" 104 | fi 105 | 106 | host=$(hostname) 107 | echo "" 108 | echo "----------------------------" 109 | echo "" 110 | echo "This is your hostname: $host.local" 111 | echo "You can also use your PC's ip address" 112 | echo "Enjoy!" 113 | -------------------------------------------------------------------------------- /ForwardNotifier Client Tools/Crossplatform Server/Mac Autoinstall/ForwardNotifierInstaller.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Checking for brew installation..." 3 | 4 | brewinstallation=$(ls /usr/local/bin | grep brew) 5 | if [[ -z $brewinstallation ]]; then 6 | echo "Installing brew....." 7 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 8 | else 9 | echo "Brew is already installed" 10 | fi 11 | 12 | echo "Installing wget..." 13 | brew install wget 14 | 15 | echo "Checking for terminal-notifier installation..." 16 | terminalnotifierinstallation=$(ls /usr/local/bin | grep terminal-notifier) 17 | if [[ -z $terminalnotifierinstallation ]]; then 18 | echo "Installing terminal-notifier....." 19 | brew install terminal-notifier 20 | else 21 | echo "Terminal-notifier already installed" 22 | fi 23 | 24 | echo "Checking python3 installation...." 25 | check=$( which python3 ) 26 | if [[ -z "$check" ]]; then 27 | brew install python3 28 | else 29 | echo "Python3 is installed" 30 | fi 31 | 32 | echo "Installing python modules..." 33 | checkmodules=$(pip3 freeze) 34 | checkrequests=$(echo $checkmodules | grep -i requests) 35 | if [[ -z $checkrequests ]]; then 36 | pip3 install requests 37 | fi 38 | 39 | echo "Checking python script installation....." 40 | serverinstalled=$( ls ~/ | grep ForwardNotifierServer) 41 | if [[ -z $serverinstalled ]]; then 42 | echo "Installing the python script...." 43 | wget https://raw.githubusercontent.com/Greg0109/ForwardNotifier/master/ForwardNotifier%20Client%20Tools/Crossplatform%20Server/ForwardNotifierServer.py 44 | if [[ $? -ne 0 ]]; then 45 | echo "Something went wrong with the download, please make sure your internet connection is on" 46 | exit 47 | fi 48 | sudo mv ForwardNotifierServer.py ~/ 49 | serverpath=$(echo ~/ForwardNotifierServer.py) 50 | sudo cat <> ~/Library/LaunchAgents/ForwardNotifierServer.plist 51 | 52 | 53 | 54 | 55 | Label 56 | ForwardNotifierServer 57 | ProgramArguments 58 | 59 | $check 60 | $serverpath 61 | 62 | KeepAlive 63 | 64 | 65 | 66 | EOF 67 | sudo chown root:wheel ~/Library/LaunchAgents/ForwardNotifierServer.plist 68 | sudo chmod 644 ~/Library/LaunchAgents/ForwardNotifierServer.plist 69 | sudo launchctl load ~/Library/LaunchAgents/ForwardNotifierServer.plist 70 | sudo launchctl start ~/Library/LaunchAgents/ForwardNotifierServer.plist 71 | else 72 | 73 | echo "Python script is installed, updating....." 74 | sudo rm ~/ForwardNotifierServer.py 75 | wget https://raw.githubusercontent.com/Greg0109/ForwardNotifier/master/ForwardNotifier%20Client%20Tools/Crossplatform%20Server/ForwardNotifierServer.py 76 | if [[ $? -ne 0 ]]; then 77 | echo "Something went wrong with the download, please make sure your internet connection is on" 78 | exit 79 | fi 80 | sudo mv ForwardNotifierServer.py ~/ 81 | sudo launchctl stop ~/Library/LaunchAgents/ForwardNotifierServer.plist 82 | sudo launchctl load ~/Library/LaunchAgents/ForwardNotifierServer.plist 83 | sudo launchctl start ~/Library/LaunchAgents/ForwardNotifierServer.plist 84 | echo "Python script updated" 85 | fi 86 | 87 | 88 | host=$(hostname) 89 | echo "" 90 | echo "----------------------------" 91 | echo "" 92 | echo "This is your hostname: $host" 93 | echo "You can also use your PC's ip address" 94 | echo "Enjoy!" 95 | 96 | echo "Reboot is required, press any key to reboot, or type \"cancel\" to reboot later:" 97 | read reboot 98 | if [[ $reboot != "cancel" ]]; then 99 | sudo reboot 100 | fi 101 | -------------------------------------------------------------------------------- /ForwardNotifier Client Tools/Crossplatform Server/Windows Autoinstall/ForwardNotifierSetup.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/ForwardNotifier Client Tools/Crossplatform Server/Windows Autoinstall/ForwardNotifierSetup.exe -------------------------------------------------------------------------------- /ForwardNotifier Client Tools/Crossplatform Server/Windows Autoinstall/Program.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System; 3 | using System.Net; 4 | using System.Threading; 5 | using System.Diagnostics; 6 | using System.Security.Principal; 7 | using System.Linq.Expressions; 8 | using System.Net.Http.Headers; 9 | using System.Reflection; 10 | 11 | namespace ForwardNotifierSetup 12 | { 13 | class Program 14 | { 15 | static string PythonDirectory = ""; 16 | 17 | static bool DownloadCompleted = false; 18 | 19 | static bool IsBusy = false; 20 | 21 | static void Main(string[] args) 22 | { 23 | Console.Clear(); 24 | Console.SetCursorPosition(0, 0); 25 | if (IsAdministrator()) 26 | { 27 | if (args.Length == 0) 28 | { 29 | NoArgsMain(); 30 | } 31 | else if (args.Length == 2) 32 | { 33 | if (args[0] == "-pd" && Directory.Exists(args[1])) 34 | { 35 | PythonDirectory = args[1]; 36 | Console.WriteLine("Downloading necessary modules, please wait..."); 37 | DownloadModules(); 38 | Console.WriteLine("Done, unzipping packages."); 39 | GetServerPy(); 40 | } 41 | 42 | else if (args[0] == "-uninstall" && args[1] == "-py") 43 | { 44 | try 45 | { 46 | Console.WriteLine("Uninstalling server. . ."); 47 | Process[] p = Process.GetProcessesByName("Python"); 48 | foreach (var i in p) 49 | i.Kill(); 50 | File.Delete($"{Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)}\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\Server.pyw"); 51 | Console.WriteLine("Downloading python to uninstall python."); 52 | DownloadPython(); 53 | Console.WriteLine("Uninstalling. . ."); 54 | Process pr = Process.Start(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\python-setup.exe", "/uninstall"); 55 | pr.WaitForExit(); 56 | Console.WriteLine("Done uninstalling!"); 57 | 58 | } 59 | catch (Exception) 60 | { 61 | Console.WriteLine("Unable to uninstall. . ."); 62 | } 63 | } 64 | } 65 | else if (args.Length == 1) 66 | { 67 | if (args[0] == "-uninstall") 68 | { 69 | try 70 | { 71 | Console.WriteLine("Uninstalling server. . ."); 72 | Process[] p = Process.GetProcessesByName("Python"); 73 | foreach (var i in p) 74 | i.Kill(); 75 | File.Delete($"{Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)}\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\Server.pyw"); 76 | Console.WriteLine("Successfully uninstalled!"); 77 | } 78 | catch (Exception) 79 | { 80 | Console.WriteLine("Unable to uninstall. . ."); 81 | } 82 | Console.ReadKey(true); 83 | } 84 | } 85 | } 86 | else 87 | { 88 | Console.WriteLine("Please run this program as administrator..."); 89 | Console.ReadKey(true); 90 | } 91 | } 92 | 93 | static void NoArgsMain() 94 | { 95 | Console.WriteLine("Installing ForwardNotifier. . ."); 96 | Console.WriteLine("Checking if python is installed."); 97 | 98 | string userApps = $@"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}\Programs"; 99 | 100 | if (!Directory.Exists(userApps + "\\Python")) 101 | { 102 | DownloadPython(); 103 | } 104 | 105 | try 106 | { 107 | DirectoryInfo directories = new DirectoryInfo(userApps + @"\Python"); 108 | foreach (var i in directories.GetDirectories()) 109 | { 110 | if (i.Name == "Launcher") 111 | continue; 112 | else 113 | { 114 | PythonDirectory = i.FullName; 115 | break; 116 | } 117 | } 118 | } 119 | catch (Exception) 120 | { 121 | Console.WriteLine("Python directory not found. Press any key to run python setup else exit and contact dev."); 122 | Console.ReadKey(true); 123 | Console.Clear(); 124 | DownloadPython(); 125 | DirectoryInfo directories = new DirectoryInfo(userApps + @"\Python"); 126 | foreach (var i in directories.GetDirectories()) 127 | { 128 | if (i.Name == "Launcher") 129 | continue; 130 | else 131 | { 132 | PythonDirectory = i.FullName; 133 | break; 134 | } 135 | } 136 | } 137 | Console.WriteLine("Downloading necessary modules, please wait..."); 138 | DownloadModules(); 139 | Console.WriteLine("Done, unzipping packages."); 140 | GetServerPy(); 141 | } 142 | 143 | static void GetServerPy() 144 | { 145 | using (WebClient client = new WebClient()) 146 | { 147 | client.DownloadFile("https://raw.githubusercontent.com/Greg0109/ForwardNotifier/master/ForwardNotifier%20Client%20Tools/Crossplatform%20Server/ForwardNotifierServer.py", $"{Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)}\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\Server.pyw"); 148 | } 149 | try 150 | { 151 | Process.Start($"{Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)}\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\Server.pyw"); 152 | } 153 | catch (System.ComponentModel.Win32Exception) 154 | { 155 | Console.WriteLine("Unable to start the file. No big deal, just reboot and it will work!"); 156 | } 157 | Console.WriteLine("Done!"); 158 | Console.ReadKey(true); 159 | } 160 | 161 | static void DownloadModules() 162 | { 163 | ProcessStartInfo psi = new ProcessStartInfo(); 164 | psi.FileName = PythonDirectory + @"\Scripts\pip.exe"; 165 | psi.Arguments = "install win10toast"; 166 | psi.UseShellExecute = false; 167 | Process p = new Process(); 168 | p.StartInfo = psi; 169 | p.Start(); 170 | p.WaitForExit(); 171 | } 172 | 173 | static void DownloadPython() 174 | { 175 | Console.WriteLine("Python is not installed, installing python... please wait."); 176 | using (WebClient client = new WebClient()) 177 | { 178 | Console.CursorVisible = false; 179 | client.DownloadProgressChanged += Client_DownloadProgressChanged; 180 | client.DownloadFileCompleted += Client_DownloadFileCompleted; 181 | client.DownloadFileAsync(new Uri(Environment.Is64BitOperatingSystem ? "https://www.python.org/ftp/python/3.8.3/python-3.8.3-amd64.exe" : "https://www.python.org/ftp/python/3.8.3/python-3.8.3.exe"), Path.Combine(Directory.GetCurrentDirectory(), "python-setup.exe")); 182 | while (!DownloadCompleted) 183 | Thread.Sleep(1000); 184 | } 185 | Console.CursorVisible = true; 186 | Console.WriteLine("Download completed. Running installer."); 187 | ProcessStartInfo psi = new ProcessStartInfo(); 188 | psi.FileName = Path.Combine(Directory.GetCurrentDirectory(), "python-setup.exe"); 189 | psi.UseShellExecute = true; 190 | psi.Arguments = "/passive InstallLauncherAllUsers=0 PrependPath=1 Include_pip=1 Include_test=0"; 191 | Process p = new Process(); 192 | p.StartInfo = psi; 193 | p.Start(); 194 | p.WaitForExit(); 195 | } 196 | 197 | private static void Client_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) 198 | { 199 | DownloadCompleted = true; 200 | Console.SetCursorPosition(0, 3); 201 | } 202 | 203 | private static void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) 204 | { 205 | if (!IsBusy) 206 | { 207 | IsBusy = true; 208 | Console.SetCursorPosition(0, 3); 209 | if (e.ProgressPercentage < 10) 210 | { 211 | Console.Write("[ ] " + e.ProgressPercentage + "%"); 212 | } 213 | else if (e.ProgressPercentage < 20) 214 | { 215 | Console.Write("[# ] " + e.ProgressPercentage + "%"); 216 | } 217 | else if (e.ProgressPercentage < 30) 218 | { 219 | Console.Write("[## ] " + e.ProgressPercentage + "%"); 220 | } 221 | else if (e.ProgressPercentage < 40) 222 | { 223 | Console.Write("[### ] " + e.ProgressPercentage + "%"); 224 | } 225 | else if (e.ProgressPercentage < 50) 226 | { 227 | Console.Write("[#### ] " + e.ProgressPercentage + "%"); 228 | } 229 | else if (e.ProgressPercentage < 60) 230 | { 231 | Console.Write("[##### ] " + e.ProgressPercentage + "%"); 232 | } 233 | else if (e.ProgressPercentage < 70) 234 | { 235 | Console.Write("[###### ] " + e.ProgressPercentage + "%"); 236 | } 237 | else if (e.ProgressPercentage < 80) 238 | { 239 | Console.Write("[####### ] " + e.ProgressPercentage + "%"); 240 | } 241 | else if (e.ProgressPercentage < 90) 242 | { 243 | Console.Write("[######## ] " + e.ProgressPercentage + "%"); 244 | } 245 | else if (e.ProgressPercentage < 100) 246 | { 247 | Console.Write("[######### ] " + e.ProgressPercentage + "%"); 248 | } 249 | else 250 | { 251 | Console.Write("[##########] " + e.ProgressPercentage + "%"); 252 | } 253 | IsBusy = false; 254 | } 255 | } 256 | 257 | public static bool IsAdministrator() 258 | { 259 | return (new WindowsPrincipal(WindowsIdentity.GetCurrent())) 260 | .IsInRole(WindowsBuiltInRole.Administrator); 261 | } 262 | } 263 | } 264 | -------------------------------------------------------------------------------- /ForwardNotifier Client Tools/Windows SSH Client tool/ForwardNotifierReceiver.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/ForwardNotifier Client Tools/Windows SSH Client tool/ForwardNotifierReceiver.exe -------------------------------------------------------------------------------- /ForwardNotifier Client Tools/Windows SSH Client tool/SetEnviromentVariable.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/ForwardNotifier Client Tools/Windows SSH Client tool/SetEnviromentVariable.exe -------------------------------------------------------------------------------- /ForwardNotifier.plist: -------------------------------------------------------------------------------- 1 | { Filter = { Bundles = ( "com.apple.springboard" ); }; } 2 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | ARCHS = arm64 arm64e 2 | FINALPACKAGE = 1 3 | GO_EASY_ON_ME = 1 4 | 5 | INSTALL_TARGET_PROCESSES = SpringBoard 6 | 7 | include $(THEOS)/makefiles/common.mk 8 | 9 | TWEAK_NAME = ForwardNotifier 10 | 11 | ForwardNotifier_FILES = Tweak.x 12 | ForwardNotifier_CFLAGS = -fobjc-arc 13 | 14 | include $(THEOS_MAKE_PATH)/tweak.mk 15 | SUBPROJECTS += forwardnotifier 16 | SUBPROJECTS += forwardnotifiercc 17 | SUBPROJECTS += forwardnotifierreceiver 18 | include $(THEOS_MAKE_PATH)/aggregate.mk 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ForwardNotifier 2 | Forward your notifications from your iOS device to your PC/iOS device! 3 | 4 | 5 | Hi! This tweak forwards your notifications to your PC (Windows, Mac or Linux!) or iOS device (tested on iOS 9-13 for the receiver part) 6 | 7 | Up uptil now it only worked using SSH, but now, I am introducing the crossplatform server! A python script that creates a https server on your machine that listens to ForwardNotifier calls to display those notifications on your PC. (**Crossplatform server doesn't work on iOS devices, if you want to use an iOS device as a receiver you must use SSH. Instructions down below**). 8 | 9 | **Read both methods (SSH and Crossplatform server) to decide which method you prefer to use. If one method does not work for you, you can try the other method**. 10 | 11 | **If you are a beginner, I suggest you use the Crossplatform Server, it's much more user friendly. The SSH tutorial and Crossplatform tutorial are down below.** 12 | 13 | # SSH Setup for the Receiver 14 | ## DO NOT USE THE SSH OPTION IF YOU STILL HAVE A VERSION THAT SUPPORTS IT. IT HAS A MAJOR BUG THAT COULD BE USED TO RUN TERMINAL COMMANDS ON YOUR COMPUTER 15 | ### MacOS 16 | 17 | For MacOS you need a tool called “terminal-notifier”. It’s free and there are several tutorials on how to install it. Like this [one](https://brewinstall.org/install-terminal-notifier-on-mac-with-brew/) 18 | 19 | To enable ssh on a Mac, follow this [tutorial](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwi6pbvMidzpAhURahQKHQYaBvsQFjACegQIDBAG&url=https%3A%2F%2Fosxdaily.com%2F2011%2F09%2F30%2Fremote-login-ssh-server-mac-os-x%2F&usg=AOvVaw3qUh4DI6uMFzS8KsyDa5Wm) 20 | 21 | ### Linux 22 | 23 | For Linux you need a tool called “notify-send”. It comes preinstalled on several distros (most of Ubuntu flavors have it). 24 | To enable ssh on Linux, install openssh-server 25 | 26 | ### Windows 27 | 28 | For windows there’s a custom [tool](https://github.com/Greg0109/ForwardNotifier/tree/master/ForwardNotifier%20Client%20Tools/Windows%20SSH%20Client%20tool) (Although it is advised to use the Crossplatform server if using windows. It works better, is much more stable and it's more user friendly) 29 | 30 | You also need OpenSSH server to be installed and working (**Please install openssh from [Powershell](https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse#installing-openssh-with-powershell), in our testing it has proved to be more effective and it causes less errors**) 31 | 32 | **Please, make sure the SSH service is up and running [SSH Service Configuration](https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse#initial-configuration-of-ssh-server)** 33 | 34 | **To use the tool, you need to download both .exe files and put them in Documents/ForwardNotifier, then, open the "SetEnvironmentVariable.exe" and it will set everything up. 35 | Do not remove those .exe files, they are needed for it to work! 36 | You might need a reboot upon installation.** 37 | 38 | ### iOS 39 | 40 | On iOS you only need to have ForwardNotifier installed on both devices! 41 | 42 | Notifications can be disabled when device is unlocked. 43 | 44 | # Crossplatform Server Setup for the Receiver 45 | 46 | To install the crossplatform server, you only need to install the provided Autoinstall packages. These installers will check and install all necessary dependencies for this program to work. **The Crossplatform server will autolaunch on every boot of the system**. Follow the instructions for each specific OS down below: 47 | 48 | [MacOS](https://github.com/Greg0109/ForwardNotifier/blob/master/ForwardNotifier%20Client%20Tools/Crossplatform%20Server/Mac%20Autoinstall/ForwardNotifierInstaller.bash): Place the script anywhere you want on your Mac and launch it on terminal, like so "./ForwardNotifierInstaller" (Do not use sudo). 49 | 50 | [Windows](https://github.com/Greg0109/ForwardNotifier/blob/master/ForwardNotifier%20Client%20Tools/Crossplatform%20Server/Windows%20Autoinstall/ForwardNotifierSetup.exe): Execute it as administrator as you would any other .exe file 51 | 52 | [Linux](https://github.com/Greg0109/ForwardNotifier/blob/master/ForwardNotifier%20Client%20Tools/Crossplatform%20Server/Linux%20Autoinstall/ForwardNotifierInstaller.bash): Place the script anywhere you want on your Linux machine and launch it on terminal, like so "sudo ./ForwardNotifierInstaller" (please, use sudo). 53 | 54 | If there's a "permissions error" while trying to use the MacOS or Linux tool, give the script permissions by using "chmod +x ForwardNotifierInstaller" in terminal on the same directory as the script. 55 | 56 | # Where to find user and hostname 57 | 58 | ### In MacOS and Linux: 59 | 60 | if you open terminal and type "users" you will get the users. 61 | Also if you type "hostname", you will get the hostname. 62 | Hostname needs a .local at the end. 63 | 64 | **Password on all cases are the same as your main accounts on your devices** 65 | 66 | ### In Windows: 67 | In Windows the username is the same as your username for your account. 68 | 69 | IP can be found if you type "ipconfig" on cmd 70 | 71 | **Password on all cases are the same as your main accounts on your devices** 72 | 73 | ### In iOS: 74 | User is "root" or "mobile" 75 | Hostname can be found if you open terminal, the first line where it usually says "*s-iphone" 76 | 77 | You can also use your local ip instead of a hostname 78 | 79 | **The default iOS password for SSH is "alpine" but you should definitely change your SSH password** 80 | 81 | # ForwardNotifier sender setup 82 | ## Steps: 83 | 84 | -Once the receivers have been setup, go to the tweak settings and fill out the SSH information there. 85 | 86 | -**Make sure the user and hostname/ip are correct. Keep in mind that the crossplatform server only requires the hostname information** 87 | 88 | -Enable the necessary switches 89 | 90 | -**In order to activate the tweak, you need to activate the CC module and make sure its enabled. CC module can be found in the CC settings, if it's not there, you might need to install a third party CC module enabler like CCSupport** 91 | 92 | # Additional Information 93 | 94 | Since this tweak relies on a CC module to enable or disable it, it only supports iOS 11-13, but, I’ve tested the receiver from iOS 9-13 and it works without problems. 95 | 96 | **Don't forget to insert your password!** 97 | 98 | **If you prefer to use Key authentication, then make sure the key is working properly before using it. I've tested this tweak with keys using the .pem format** 99 | 100 | # Troubleshooting 101 | 102 | If the ssh fails, you will get a notification on your sender device with the title "ForwardNotifier Error". This will have the output of the error as a message. It will point you in the direction of where the error happened. 103 | 104 | If you don't get that message and the notifications are still not displayed on the receiver, then something is wrong on the receiver end. 105 | 106 | 107 | Other than that, there’s nothing more to it! Enjoy! 108 | 109 | # Special thanks! 110 | 111 | Thanks [u/LavamasterYT](https://www.reddit.com/u/LavamasterYT/?utm_source=share&utm_medium=ios_app&utm_name=iossmf) for making the SSH Windows Tool and the Windows Installation Package for the Crossplatform Server 112 | 113 | 114 | Thanks to [u/tokilokit](https://www.reddit.com/u/tokilokit/?utm_source=share&utm_medium=ios_app&utm_name=iossmf) for the idea and development of the python script used for the Crossplatform server. His [GitHub](https://github.com/tokfrans03). 115 | -------------------------------------------------------------------------------- /Tweak.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | #import 5 | #include 6 | 7 | @interface NSDistributedNotificationCenter : NSNotificationCenter 8 | + (instancetype)defaultCenter; 9 | - (void)postNotificationName:(NSString *)name object:(NSString *)object userInfo:(NSDictionary *)userInfo; 10 | @end 11 | 12 | @interface JBBulletinManager : NSObject 13 | +(id)sharedInstance; 14 | -(id)showBulletinWithTitle:(NSString *)title message:(NSString *)message bundleID:(NSString *)bundleID; 15 | -(id)showBulletinWithTitle:(NSString *)title message:(NSString *)message bundleID:(NSString *)bundleID hasSound:(BOOL)hasSound soundID:(int)soundID vibrateMode:(int)vibrate soundPath:(NSString *)soundPath attachmentImage:(UIImage *)attachmentImage overrideBundleImage:(UIImage *)overrideBundleImage; 16 | @end 17 | 18 | @interface SpringBoard 19 | -(void)applicationDidFinishLaunching:(id)arg1 ; 20 | @end 21 | 22 | @interface BBAction : NSObject 23 | 24 | +(id)actionWithLaunchURL:(id)arg1 callblock:(/*^block*/id)arg2 ; 25 | +(id)actionWithLaunchBundleID:(id)arg1 callblock:(/*^block*/id)arg2 ; 26 | +(id)actionWithCallblock:(/*^block*/id)arg1 ; 27 | +(id)actionWithAppearance:(id)arg1 ; 28 | +(id)actionWithLaunchURL:(id)arg1 ; 29 | +(id)actionWithActivatePluginName:(id)arg1 activationContext:(id)arg2 ; 30 | +(id)actionWithIdentifier:(id)arg1 ; 31 | +(id)actionWithIdentifier:(id)arg1 title:(id)arg2 ; 32 | +(id)actionWithLaunchBundleID:(id)arg1 ; 33 | @end 34 | 35 | @class BBContent; 36 | @interface BBContent : NSObject 37 | @property (nonatomic,retain) NSString * message; 38 | @property (nonatomic,retain) NSString * title; 39 | @end 40 | 41 | @interface BBSectionIcon : NSObject 42 | @end 43 | 44 | @interface BBBulletin : NSObject 45 | @property (nonatomic,retain) NSString * message; 46 | @property (nonatomic,retain) NSString * title; 47 | @property (nonatomic,retain) NSString * sectionID; 48 | @property (nonatomic,retain) BBSectionIcon * icon; 49 | @property (nonatomic,retain) NSString * bulletinID; 50 | @property (nonatomic,retain) NSString * recordID; 51 | @property (nonatomic,retain) NSString * publisherBulletinID; 52 | @property (nonatomic,retain) NSString * sectionDisplayName; 53 | @property (nonatomic,retain) NSDate * date; 54 | @property (nonatomic,copy) BBAction * defaultAction; 55 | @property (nonatomic,retain) BBContent * content; 56 | @end 57 | 58 | @interface BBServer 59 | -(void)publishBulletin:(id)arg1 destinations:(unsigned long long)arg2 ; 60 | @end 61 | 62 | @interface SBLockStateAggregator : NSObject 63 | +(id)sharedInstance; 64 | -(unsigned long long)lockState; 65 | @end 66 | 67 | typedef struct SBIconImageInfo { 68 | CGSize size; 69 | double scale; 70 | double continuousCornerRadius; 71 | } SBIconImageInfo; 72 | 73 | @interface SBApplicationIcon : NSObject 74 | // iOS 12 and below 75 | - (UIImage *)generateIconImage:(int)arg1; 76 | // iOS 13 77 | - (id)generateIconImageWithInfo:(SBIconImageInfo)arg1; 78 | @end 79 | 80 | @interface SBIconModel : NSObject 81 | - (SBApplicationIcon *)expectedIconForDisplayIdentifier:(id)arg1; 82 | @end 83 | 84 | @interface SBIconController : UIViewController 85 | @property (nonatomic, retain) SBIconModel *model; 86 | + (id)sharedInstance; 87 | @end 88 | 89 | @interface SBApplication : NSObject 90 | +(id)sharedInstance; 91 | -(NSString *)displayName; 92 | @end 93 | 94 | @interface SBApplicationController : NSObject 95 | -(id)applicationWithBundleIdentifier:(id)arg1 ; 96 | @end 97 | 98 | NSString *forwardNotifierIconBase64 = @"iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAYAAADhu0ooAAASJXpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjarZppdmOpskb/M4o7BLqgGQ4EsNabwRv+3YFkZdpplzNvZbpsqaQjDkTzNSC3////jvsP/ySV7LLUVnopnn+55x4HT5p//Ov3b/D5/r3/0ni+F96/7l5vRF5KduXjf+vz9TB4XX584O0eYb5/3bXnO7E9BwqvgR8zsDvb8/XzJHk9Pl4P+TlQ348npbf681TncyB9Xnin8vzNr2k9Huz/3bsXKlFawo1SjDuF5O/f9phBevwOfgt/Yyrx7RX+uftSew5GQN4t7+3R+58D9C7Ib8/cx+i/nn0IfhzP19OHWJZnjHjy6RtBPryeXreJ78rhNaP4/o25Q/plOc/fc1Y7Zz9WN3IhouVZUTfY4W0YLpyEPN2PFX4qv8Lzen86P80Pr6R8efWTHw09RG59XMhhhRFO2PdRgzLFHHesPMaoMd3XWqqxRyVHIWX7CSfW1NNKjWRp3I7M5RRfcwn3vv3eT0PjzitwaQwMFvjIlz/un978kx93jlqIgm+vWDGvaHXNNCxz9perSEg4z7zJDfDbzzP9/qf6oVTJoNwwNxY4/HwMMSX8qK1085y4Tnh8tFBwdT0HIETcW5hMSGTAl5AklOBrjDUE4thI0GDmMeU4yUAQiYtJxpzoFldji3ZvPlPDvTZKLNFeBptIBKiVKrnpaZCsnIX6qblRQ0OSZBEpUqU56TIKCFeklFKLgdyoqeYqtdRaW+11tNRyk1Zaba31NnrsCQyUXnrtrfc+RnSDGw3GGlw/eGXGmWaeMsuss80+h1I+mlW0aNWmXceKKy1gYpVVV1t9jR3cBil23rLLrrvtvseh1k46+cgpp552+hmvrD2z+svPH2QtPLMWb6bsuvrKGq+6Wt+GCAYnYjkjYzEHMl4tAxR0tJz5FnKOljnLme+RppDIJMVy41awjJHCvEOUE165+5G538qbk/ZbeYvfZc5Z6v5G5hyp+zVvn2RtGc/pzdijCy2mPtF9vL/bcHGuUDWs7Q+UK3mxpNC2jl0WqLSISg0z7hOHzdAaghuPUk8aazTxXVhcVJd1jCVtxbZWV9mtDjncp6wyE2x3dq09Mdt9FmOv1TT2snsPu8ueYSSiOM90gGBZe829WNvpMfe1WObSo5pP1n5kLN9SbivFVar0sU7eMzN9OZPyVT+GJtfUCHZMhl87ANLEe+qUQrJa0zzHHDQ5sJAlyBog8H1KHb57dB9f+PPHQDT0uLtA2VoI7F2f1K4Qgq1vk2v1rK+dTCrrqinPs5Wcl7rS0X3SpBIYQd2aEzYQvwhBJcBrxdH1wFq9V6GcVg2jysgrzrp27SytlKQlEU+pNMUkHDO6qTUTwg0hxd1LO5JrAxvJ30RBHF+nMsamaCl2qn9R+adQv4Sf2reRJqUN9zPs4hOdNfFOI+otj6az01GDfhpa+G+3FVY8mXKeMk6qZyaSzerAXdbrqlD3tOQefCyMUygpsDeumgUqrSyw6AwytbQ9O9hhRIuAGUzKM+3S+eQaLm2dRReFTrCYem+7hq6EZ+8yC0GbCgvTT4MLBnFtdBCiqbE++2y+uRNXS9f2eG467n9+dL91oSTqgvVS0MKcapNa86ReFExhvYleEwRg6lR6XZJuKLMQvzOzXdeJaiKqVYqSw04eDqV/aib+q9q4QAmldRwrJRLd6mpNIqlcTvTRJyWISlONZ4KAoIoc8gtEaK4zAnoTYixtxDb2Sq4jjO25/5ePzv/VgaqBlzUNTJQ35ABW5TkXDANCUDw9HFTZCQMkpaZmRPTlU7IkgBoYLcmtYzCmh8uUrjzUHbGjky+I0jk8NsPatjIZaKQrHSp4q6IMRPbzavfL5cEUZ73DJ03M4lzEBAoXbDSH/2wYmPbvDHO6+zvDICL+zjA3Rn9jGPNrf2WYdtyfD0OTUTsI27g8diL0ZDXmKDIQN5cVJl2IOG+6hHqDD5TajDKRMRcEEobg6+J2jydDBQBVeGBS4Q27kgoVPkMG4zbCZc+xj08LPXF5+NDic4MTZ1DE8KIDXUGbLsnmXmYuYa9YkEdgKMg4V1LghNmskpWZN8kzwEZBgaG09kSLsR5axKxVOYBSo58m6gOpkmWhtUbbzcANedJRnDBBqnUaiZ2yQx4o7ZIbUmExf0dob3xNahZry3RmRAUhHhp/YAr+QDttANKoCdMpwtPYadVs/u3Rqc5adT5btU9y+Uroc3aE8zlC6iWttxl8nID7egaW+jOn/zCBCxTM4sP9qew7hd+YwKvGyrPG3s3AfT+FH2j1TyFwvxuD70LgfjcG34XADb9GKn1v3xDDihvzddc7B8aSo6mOagy/EXvamzYUQZA4NhLH+51AdiTiQkSsg2o16sMA05LI3Nx4eyE+Uao9R8hwBT5RUzF2LeukEnAQpl7LEawEBevwHEB+Q6+t4g+iCeEKvXYq+WyfRKHnhSvco86r6ZGpIU44uevSZxsjdV37sqOndU6FZZDmFiP49iCKkFNJIGVN+0YOWYLXjxdqV0fVorUOYjqeXjdSqGusN1dIxbbXg5pPVwDAj3sz/+7RvT1pGJumtn/RcyAmqFJ0cUFjIwx2ZQiiwoonVEpprpRYLM2/PFS68nZh7laiNISer0oOgTukIJcSbNPjAT8laJUV9EDIwYBQudOdDpIGhHg3o58ekXWntUdTeAKBBbkxiq/wZKtsSJfgELfV42zYrDOierQl+taWMK+fsjqixGt+jG6NUz6NzX1ElRpBVrMdJHtR3RvEVrQ1xUIxnF3inRl69JyCaMw0ic0OlwHQdhPNvlsHgEf2RkwUyb31rlCGflITaUhJZodAa+oGp+snho9xkIK0iDEFCqwktPFsOQLeqOFMTWcUCxNEFzKvifgrHSvYRJbWFmtD/E26ArtF/4jDieEtCc6WbjpzSo1p9NNM328wf+Iu9m7dunwRSQnI7c3c8dI0IB29ccTb4SBgOagkYsDmKpTgnnunxnTMI2aPTqcrrVbKFMqpYBk6Bh8qbBXS6kFrENfhQnR4NN+MutRt1leomo2V5eZSbrP6HLGNI89GM2JaU4j4G4jFjOQsvrmYYkQuA1lC8AwGsD0B3xCybr8p3ID0w+kCF+Uw39ZR3GY6wYNupakJQIguQehKO8BhycyNYLpxTgmjT8vhJ4+QR1pIu+A+UqKZIksDYAyTMiuDjPNw6MY+QMyPtlDlUcDW328lbO1NEXcrwB0Nx5kN9YcQIdj9FiCQg4knP7fdV9+xRNMpkdCPN0PbavrSlzp5X8S3hKlkihj6/wqR4oOezK+CO3Qw3I+52CnfLgsUyr31STjd8s7ZtLzpqoit6wRJurSMd809FCxvJSkO1K+DOFGmCbPYLWYJaA2254HEwXL4gERbhJq4LBwgznfPdGIKDYO5D8SEYtv9OjiaYG31OwD2CJkIMscaYAYMUgSTH013Mlf8aPo5Rx0C2RB9R1hbWOo7fivaBmu1uZudMDQo3TQV5pIclASEel2VKyKxw4RNq/XKbGERGI9ukSMQGHOmdXCZd6sEIiFWI0V0EtaYxC7qZOaaDCfbsuQ3z/234anjnQjRqWCHdWdmqlDftC0meS6oh/Z9dbnPy+vPq8t9se3xx9XlPi+v36guAR2UyzLQmspyELiFCJm6GjQoJdChnfrp1fYTG1XiQZR9ASUXSsP2heNIZoxp90ig6h7J1QgAAzWCiz6wjcV5Paacsb4E92I6AVxLEfGkyJY8JVeAkao9tk+Vi9NYMv7AdufMiych07ZVA+iRuIxZ8Bo2y98K81II+VR9bH6gblrHhXpzpxSk7LCbTcTOAoDvBfwjBJDQphd1WWTpgkG59X1QJHyWD6UDgett4hHp/gC5s+IOPhaaZxgxyrYtJTgMASWmCATeV7oI+18XaZx5bz5uNTFsFwCl7xDz2IFq3CBGd7VJpCJPSpHp4HIQ+vkGhaqmsiEyVkwemIr6KKYNSs3ZIb2qN9CHbYz44DlbdWkJV50AW3RcpzBm8KVNZKfVUzV26VYcMHy1TY/g4BcUk6393GOze97DoLCOZhNlm6ZRE3hBzHs86oiHDxsxDpaQExARuwSq1fJp98yvGjZZckWJ1TAF/hQlJ0ujrQjFg/RdKrX1Nq2Q5xn7uZUEG6l+uRn0Un5X99ETM2JqTPc9O/cTYQLs2aVgEJLg0DV5h3TNK9WeDVXufRXFttcPKkLXIqNJwrA5zvm4n5cxKzqNkHcNQG+jLlHHTH9Wb0IZYYMXIe2Y2AGaZ4gvNe4rA/gCB4uBEfw9Fl6yKrJ40ljnCKZzsjZZd8UFHelGYdm50rYN07hJTbYzmY2IyLaROaaJApSsHRW8ssaHulfTBEQEKdyTK5vGpgQkXSddUFEa11Pm9a83aD9ipfuOin8XK913VEwl2JkwoduGLrM8NKQZgEq5D/MWZB6CJM+7UrspPZyhta6adFsY+IiyGahsihYNRnmWDr+IxII0wh5kERiXAbZbVKTH8i/YLkq5263aaAZ0WxnZlApk2/qiqB6kktNnOtl9Lpw/PvpjwtZ4X9RKGNFZjTcLmtwwLCEi8BpKtpCkGfwGcTP2davtgNLVB0h6KG2xc49pTAosgEiYxAOxQ7RCAWwXGZxI2ha1AmsQZMzQCNKYrAw+40HyiGNErD8JE23366Td6wXxqnidHk5OmSgCUnmDeCwAUEPk34Kb6HM7LMoJxZBsd1koKLETP7gI6Q6edXyILQKpzIgAu9nkbCciWCFUD9SD7Om2MCUtyGj0EElfttmEpzVhTRNRI2kVqm3bFheul/THBYRV206qADYBEoTs/zpQOIKyWC29jSMEzWZrc9d5H7kHeMRKqCX6g0/V5VH6HpuFKK+IoP0G/Ci50guU1xLGYQRPf9aAi/GDhKO8HdIJnIfXusVh+xFMYaPU4G/yzWy2sYk5djuIixS6pwYGQjHvFQEVb/lMjlw2KhxQmjAlvmT7A8XiP8BtkPumfBpIL3TBtH3zhEdici1Pk1EegKuNOjJdlrpOXgLg6OFqxxgYGLCGfkBCICYjFgbuwRsc/ISZ4r7uFkseOEFIZjoj3f2WdpQeS5lg4mEyMGC3/UA76kDTQFI4ilWZh4Ec3g+3s2sXAwJTI6D6DF8k9bucwk+PpKr7uTyozV/GAvR+Gs248zXeuwpxP5dIThjMGY2Oy/Hm5+xo57DYWKgBaxZQrD/QGUc2LY80S2K9jm6hiqC2gmrRsBZxNTnC1ApSFxQA/MmqtR8yCPP2xM72rw8PICdfBYcHzDREPs+E9ANHywwm9hHe8uHxzYt7KuYLDr0icmBo1rPawcRgbjCc2Q6hkUp497Ht/Hg4gBr2SYnMdZwEwESBN0CaXhCUbLzKEfSm3hjWZBsmYmCbNYB7dNcC3Pt2M0YTjjUBn8isQFdVOwgHNPBWIBL07ylEq3m0mW2xVOAprl0gjCC+cCei7KBwhk+wpjdlLXbmjAqzY0M7YPvuMPT16P71oejfHwjDNLzpenTSWcNOAKnXRA/dE0BpZKJftar3BFCjbUvUZN/1qIjnDZtiDh3PlcyhXmYyggK59iiTEXPrO0+MSNEI1ZOdqGjBQH0XA3oCndEAxNTTEA7UArTKsP2QYWeLtkNKC5Qi+tyDyjt/T6Huuwt+99HdE0DgMaPo9+NgYEzQmSXfI0CAiyWjGfyhSiv1gekAsfDp6D+8+KQfCzFKgwoKiq6BYcFFBZDzI5b8z0DMeGJpR9ZUuIWyPo4W8fDN4hM6/IwJcdoLV1t8QNZqzh2wt0PpalaaARBUUZupEnwyuGGSc9p3D9rGh6Fk7QjSBHsHLir+ZRt4iH2HEHNlhyPA+LAdIgoj2yE0Gqp2OrCuBJcU6gLkgw46rY0VRbbSZKrVGNqH+w2CUE2I9bMwH+j20ezLDNUqax470ACp42DKEM5YRhRc57ZZX6CkcMkpRK1au9q2FXjQsMbD9jxoQWwTsyozGiU9v58Q5xD7SkWYD5ctf+Ec2v3DBZK37bFnBZv7CLMtZhpDF+g1YjhBFBAjaYtldGcca8tLBljhsTxy1aO/ywOz0MXPaHTbORzg//0uCK0UkHf3uyDrONtkvF8GaZBFsz08FdurVGME8Onx7QT4nZ+Ts4llDG9odjBlNx819yIQpPlpw+YLx/frKtUE/7C9UiiO+mIJtuMDsTEnOwqmnTGCXeJjLwa6Q5+6/wL76UwNm4mvgAAAAYRpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAHMVfW7UiFUE7SHHIUJ0siBZx1CoUoUKoFVp1MLn0C5o0JCkujoJrwcGPxaqDi7OuDq6CIPgB4uTopOgiJf4vKbSI8eC4H+/uPe7eAf5Ghalm1wSgapaRTiaEbG5VCL6iBxEMQkBcYqY+J4opeI6ve/j4ehfjWd7n/hz9St5kgE8gnmW6YRFvEE9vWjrnfeIwK0kK8TnxuEEXJH7kuuzyG+eiw36eGTYy6XniMLFQ7GC5g1nJUInjxFFF1Sjfn3VZ4bzFWa3UWOue/IWhvLayzHWaI0hiEUsQqSMZNZRRgYUYrRopJtK0n/DwRxy/SC6ZXGUwciygChWS4wf/g9/dmoWpSTcplAC6X2z7YxQI7gLNum1/H9t28wQIPANXWttfbQAzn6TX21r0CBjYBi6u25q8B1zuAMNPumRIjhSg6S8UgPcz+qYcMHQL9K25vbX2cfoAZKir1A1wcAiMFSl73ePdvZ29/Xum1d8PuOFyw8MW66IAABBuaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczppcHRjRXh0PSJodHRwOi8vaXB0Yy5vcmcvc3RkL0lwdGM0eG1wRXh0LzIwMDgtMDItMjkvIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6cGx1cz0iaHR0cDovL25zLnVzZXBsdXMub3JnL2xkZi94bXAvMS4wLyIKICAgIHhtbG5zOkdJTVA9Imh0dHA6Ly93d3cuZ2ltcC5vcmcveG1wLyIKICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICB4bXBNTTpEb2N1bWVudElEPSJnaW1wOmRvY2lkOmdpbXA6NTVhYjc3YzItMzJjNi00NzBjLWEwNWItNzRiNDhlYTY1NjU3IgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmIxZTkyOThmLWE4ZjUtNGY3NC1iNjA0LTUwYWE0NjY2ODQ2YiIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmZjZjhkNDFlLTFhNzEtNDk3NS05MTE0LWYyYjcxZjNiYWM1OCIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iTGludXgiCiAgIEdJTVA6VGltZVN0YW1wPSIxNTkzMTk2NDExNTQwODQ0IgogICBHSU1QOlZlcnNpb249IjIuMTAuMTgiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICBleGlmOlN1YnNlY1RpbWVEaWdpdGl6ZWQ9IjI0MSIKICAgZXhpZjpTdWJzZWNUaW1lT3JpZ2luYWw9IjI0MSIKICAgcGhvdG9zaG9wOkRhdGVDcmVhdGVkPSIyMDIwLTA2LTI2VDIwOjMwOjI5IgogICB4bXA6Q3JlYXRlRGF0ZT0iMjAyMC0wNi0yNlQyMDozMDoyOSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA2LTI2VDIwOjMwOjI5Ij4KICAgPGlwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICA8aXB0Y0V4dDpMb2NhdGlvblNob3duPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6TG9jYXRpb25TaG93bj4KICAgPGlwdGNFeHQ6QXJ0d29ya09yT2JqZWN0PgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6QXJ0d29ya09yT2JqZWN0PgogICA8aXB0Y0V4dDpSZWdpc3RyeUlkPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6UmVnaXN0cnlJZD4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Y2M1MmU0ZTktMWZlMS00N2Y4LWFiYTktNDFjNzE1YzA2YjZiIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKExpbnV4KSIKICAgICAgc3RFdnQ6d2hlbj0iKzAyOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICAgPHBsdXM6SW1hZ2VTdXBwbGllcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkltYWdlU3VwcGxpZXI+CiAgIDxwbHVzOkltYWdlQ3JlYXRvcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkltYWdlQ3JlYXRvcj4KICAgPHBsdXM6Q29weXJpZ2h0T3duZXI+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpDb3B5cmlnaHRPd25lcj4KICAgPHBsdXM6TGljZW5zb3I+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpMaWNlbnNvcj4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PlljaEQAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfkBhoSIR/v0N5nAAAEHUlEQVRo3uWbX0wcVRSHv5kdlt0VsdFqSqNsokWMlRpjtWqphIAvjdSkKQkx8UWTNtpEoQm++GBMTEzFCI3xyRceKmrEql1ropS2KChNFSqQpsSGZheKlMVYkP03O7PXh90KdRe7mzDDzPB7vDM3d749955z7t1zJVbQ9oOfU1axowbYC+wEqgA31pIKjAIDwLE/fj/b98uHjTlflHI1NnSE6oD3gW3YSyPAoUBzee//gu75IOQSOm1AC/ZWuyTTevzVcj0LtKFj0gXiU2AfzlA3gqZASxpWXmoXbQ6CBNiHRNsNFs2syZM4U/WB5vJeqaalh1J/5W82dDx5O6iF4PjDcqm/ssbBkADbSv2VNXImTjpde+VMMuB07ZQzGY/TVSVbMK0zQm6ZdaJ1A6oUPNk3ymzZ6MLrltbkgxNJwfisztifKWNAN7glWuu9lN+lWMJCk2GNwz0x5lWxulP35WqPZSAB7rlT4ZVqz+qv0XvLFMutu/sK+Ka8QAXgKZIsB+opwE+sidfVU+aPaTpoJC448PECY8Gks0E1XZDQ4fDpGL0jceeC/h1bCgedQypHf4ii6cLwcU1zpaGwRmA4weC0fkP7dxMaVxejHKj1UuKV7WtRTRd8MRjjjRPRLMjrOj+r886JCDN/6fYEVTXBR6eifHXx5o4ntCh469sIF6eS9gIVwNEfY/x0JX8rLSbh3ETSXmt06JLK6aBWUJ/dWxQan/TaB1TTBV2/Jgrq8+KjxdRWFdvL607MaMwuCyMlRRK771eo2KQgyfB2T+zfZ14Fmp/28mB5kf3Cy4WppSlbfbeL55/ycqsv7Q7mI0v53yafxKF6H2W3u+wZR6eupWF2lLl4qdaH4spOvh+6Q+Zgvc/Q2Gk4aCwp8CnwQrU3C7LEK7P/sWKeeMBNkcu8HZEhoJIEjVVubrsl21ouGXZtLcZsGTJvPIrE4xXWOkU1xKL763y4FWtt1A2xqNUg8waVMnmr1ZRQxepb9PKMZjnQy1e11QftHIwTntctAxme1+n8Of8TCqmhI5S3/SWg1q+weUN+v4/bBbu2elBukvjEVEH/hQSpPL9k+lqKUwVuGAryugLSAwTz7xNRBc9uX3lHoqegqz/GmZCxS8Pw/OuzsSRDl9QVn38/HDcc0hRQgCMDca7MZa/v8xMqXaOqfePof5US8N7JKAvRpZ3LZFjjSL95x52mnQLOxQVvHo/wTEURCU3wzXgSzcQTe1P/OZqLCz4xaarmmrprM7K5UmXS9a5O16hMuqjX6RqQgWPrAPRLeSE43ke6ctmpGlkIjp9ZN2WsMkCmBr3dgZDt1+vrl1dgtwLdDoLsRqI1KwUMNPt1IdHkEMu2C4mmwGs5Lg8sl+OvgyxX3etf49v8iK0u+ESnh/t6330u54v/ANPdaJCn+0gpAAAAAElFTkSuQmCC"; 99 | -------------------------------------------------------------------------------- /Tweak.x: -------------------------------------------------------------------------------- 1 | #import "Tweak.h" 2 | 3 | struct SBIconImageInfo iconspecs; 4 | 5 | //Settings 6 | BOOL receiver; 7 | BOOL errorlog; 8 | BOOL lockstateenabled; 9 | int pcspecifier; 10 | 11 | //Settings 12 | int methodspecifier; 13 | BOOL keyauthentication; 14 | NSString *user; 15 | NSString *ip; 16 | NSString *port; 17 | NSString *password; 18 | NSString *command; 19 | NSString *finalCommand; 20 | NSArray *arguments; 21 | 22 | //Notifications 23 | NSString *pc; 24 | NSString *title; 25 | NSMutableString *finalTitle; 26 | NSString *message; 27 | NSMutableString *finalMessage; 28 | NSString *bundleID; 29 | NSString *appName; 30 | BOOL locked; 31 | 32 | //For the error output 33 | NSPipe *out; 34 | static BBServer *notificationserver = nil; 35 | 36 | static void loadPrefs() { 37 | NSMutableDictionary *prefs = [NSMutableDictionary dictionaryWithContentsOfFile:@"/User/Library/Preferences/com.greg0109.forwardnotifierprefs.plist"]; 38 | receiver = prefs[@"receiver"] ? [prefs[@"receiver"] boolValue] : NO; 39 | errorlog = prefs[@"errorlog"] ? [prefs[@"errorlog"] boolValue] : NO; 40 | lockstateenabled = prefs[@"lockstateenabled"] ? [prefs[@"lockstateenabled"] boolValue] : YES; 41 | pcspecifier = prefs[@"pcspecifier"] ? [prefs[@"pcspecifier"] intValue] : 0; 42 | 43 | methodspecifier = prefs[@"methodspecifier"] ? [prefs[@"methodspecifier"] intValue] : 0; 44 | keyauthentication = prefs[@"keyauthentication"] ? [prefs[@"keyauthentication"] boolValue] : NO; 45 | user = prefs[@"user"] && !([prefs[@"user"] isEqualToString:@""]) ? [prefs[@"user"] stringValue] : @"user"; 46 | ip = prefs[@"ip"] && !([prefs[@"ip"] isEqualToString:@""]) ? [prefs[@"ip"] stringValue] : @"ip"; 47 | port = prefs[@"port"] && !([prefs[@"port"] isEqualToString:@""]) ? [prefs[@"port"] stringValue] : @"22"; 48 | password = prefs[@"password"] && !([prefs[@"password"] isEqualToString:@""]) ? [prefs[@"password"] stringValue] : @"password"; 49 | user = [user stringByReplacingOccurrencesOfString:@" " withString:@""]; 50 | ip = [ip stringByReplacingOccurrencesOfString:@" " withString:@""]; 51 | password = [password stringByReplacingOccurrencesOfString:@" " withString:@""]; 52 | } 53 | 54 | static dispatch_queue_t getBBServerQueue() { 55 | static dispatch_queue_t queue; 56 | static dispatch_once_t predicate; 57 | dispatch_once(&predicate, ^{ 58 | void *handle = dlopen(NULL, RTLD_GLOBAL); 59 | if (handle) { 60 | dispatch_queue_t __weak *pointer = (__weak dispatch_queue_t *) dlsym(handle, "__BBServerQueue"); 61 | if (pointer) { 62 | queue = *pointer; 63 | } 64 | dlclose(handle); 65 | } 66 | }); 67 | return queue; 68 | } 69 | 70 | %hook BBServer 71 | -(id)initWithQueue:(id)arg1 { 72 | notificationserver = %orig; 73 | return notificationserver; 74 | } 75 | -(id)initWithQueue:(id)arg1 dataProviderManager:(id)arg2 syncService:(id)arg3 dismissalSyncCache:(id)arg4 observerListener:(id)arg5 utilitiesListener:(id)arg6 conduitListener:(id)arg7 systemStateListener:(id)arg8 settingsListener:(id)arg9 { 76 | notificationserver = %orig; 77 | return notificationserver; 78 | } 79 | - (void)dealloc { 80 | if (notificationserver == self) { 81 | notificationserver = nil; 82 | } 83 | %orig; 84 | } 85 | %end 86 | 87 | void testnotif(NSString *titletest, NSString *messagetest) { 88 | BBBulletin *bulletin = [[%c(BBBulletin) alloc] init]; 89 | 90 | bulletin.title = titletest; 91 | bulletin.message = messagetest; 92 | bulletin.sectionID = @"com.apple.Preferences"; 93 | bulletin.bulletinID = [[NSProcessInfo processInfo] globallyUniqueString]; 94 | bulletin.recordID = [[NSProcessInfo processInfo] globallyUniqueString]; 95 | bulletin.publisherBulletinID = [[NSProcessInfo processInfo] globallyUniqueString]; 96 | bulletin.date = [NSDate date]; 97 | bulletin.defaultAction = [%c(BBAction) actionWithLaunchBundleID:@"prefs:root=ForwardNotifier" callblock:nil]; 98 | dispatch_sync(getBBServerQueue(), ^{ 99 | [notificationserver publishBulletin:bulletin destinations:14]; 100 | }); 101 | } 102 | 103 | BOOL isItLocked() { 104 | if (lockstateenabled) { 105 | locked = [[%c(SBLockStateAggregator) sharedInstance] lockState]; 106 | } else { 107 | locked = TRUE; 108 | } 109 | return locked; 110 | } 111 | 112 | void sanitizeText() { //Thanks Tom for the idea of using \ everywhere :P 113 | finalTitle = [@"" mutableCopy]; 114 | for (int i=0; i 2 && errorlog) { 192 | testnotif(@"ForwardNotifier Error",erroroutput); 193 | } 194 | }); 195 | } 196 | } else if (methodspecifier == 1) { // Crossplatform Server 197 | // Get Icon data 198 | SBApplicationIcon *icon = [((SBIconController *)[%c(SBIconController) sharedInstance]).model expectedIconForDisplayIdentifier:bundleID]; 199 | UIImage *image = nil; 200 | iconspecs.size = CGSizeMake(60, 60); 201 | iconspecs.scale = [UIScreen mainScreen].scale; 202 | iconspecs.continuousCornerRadius = 12; 203 | image = [icon generateIconImageWithInfo:iconspecs]; 204 | NSData *iconData = UIImagePNGRepresentation(image); 205 | NSString *iconBase64; 206 | if (![title isEqualToString:@"ForwardNotifier Test"]) { 207 | iconBase64 = [iconData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; 208 | } else { 209 | iconBase64 = forwardNotifierIconBase64; 210 | } 211 | // Base64 both title and message 212 | NSData *titleData = [title dataUsingEncoding: NSUTF8StringEncoding]; 213 | NSString *titleBase64 = [titleData base64EncodedStringWithOptions:0]; 214 | NSData *messageData = [message dataUsingEncoding: NSUTF8StringEncoding]; 215 | NSString *messageBase64 = [messageData base64EncodedStringWithOptions:0]; 216 | if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"ForwardNotifier-Status"] isEqual:@"1"] && (locked)) { 217 | dispatch_queue_t sendnotif = dispatch_queue_create("Send Notif", NULL); 218 | dispatch_async(sendnotif, ^{ 219 | title = [title stringByReplacingOccurrencesOfString:@"\"" withString:@"\\""\""]; 220 | message = [message stringByReplacingOccurrencesOfString:@"\"" withString:@"\\""\""]; 221 | if (pcspecifier == 0) { // Linux 222 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"Linux\", \"img\": \"%@\", \"appname\": \"%@\"}",titleBase64,messageBase64,iconBase64,appName]; 223 | } else if (pcspecifier == 1) { // MacOS 224 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"MacOS\", \"img\": \"%@\"}",titleBase64,messageBase64,iconBase64]; 225 | } else if (pcspecifier == 2) { // iOS 226 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"iOS\", \"img\": \"%@\"}",titleBase64,messageBase64,iconBase64]; 227 | } else if (pcspecifier == 3) { // Windows 228 | command = [NSString stringWithFormat:@"{\"Title\": \"%@\", \"Message\": \"%@\", \"OS\": \"Windows\", \"img\": \"%@\"}",titleBase64,messageBase64,iconBase64]; 229 | } 230 | NSTask *task = [[NSTask alloc] init]; 231 | [task setLaunchPath:@"/usr/bin/curl"]; 232 | [task setArguments:@[@"-sS",[NSString stringWithFormat:@"%@:8000",ip],@"-d",command ]]; 233 | out = [NSPipe pipe]; 234 | [task setStandardError:out]; 235 | [task launch]; 236 | [task waitUntilExit]; 237 | NSFileHandle * read = [out fileHandleForReading]; 238 | NSData * dataRead = [read readDataToEndOfFile]; 239 | NSString *erroroutput = [[NSString alloc] initWithData:dataRead encoding:NSUTF8StringEncoding]; 240 | if ([erroroutput length] > 2 && errorlog) { 241 | if ([erroroutput containsString:@"curl"] && ![erroroutput containsString:@"Empty reply"]) { 242 | testnotif(@"ForwardNotifier Error",erroroutput); 243 | } 244 | } 245 | }); 246 | } 247 | } 248 | } 249 | 250 | %group sender 251 | %hook BBServer 252 | -(void)publishBulletin:(BBBulletin *)arg1 destinations:(unsigned long long)arg2 { 253 | %orig; 254 | title = arg1.content.title; 255 | message = arg1.content.message; 256 | bundleID = arg1.sectionID; 257 | SBApplication *app = [[%c(SBApplicationController) sharedInstance] applicationWithBundleIdentifier:bundleID]; 258 | appName = app.displayName; 259 | if (([title length] != 0) || ([message length] != 0)) { 260 | if ([title length] == 0) { 261 | title = app.displayName; 262 | } 263 | if (![title containsString:@"ForwardNotifier"] && [arg1.date timeIntervalSinceNow] > -2) { //This helps avoid the notifications to get forwarded again after a respring, which makes them avoid respring loops. If notifications are 2 seconds old, then won't get forwarded. 264 | NSMutableDictionary *applist = [[NSMutableDictionary alloc] initWithContentsOfFile:@"/var/mobile/Library/Preferences/com.greg0109.forwardnotifierblacklist"]; 265 | if (![applist valueForKey:arg1.sectionID] || [[NSString stringWithFormat:@"%@",[applist valueForKey:arg1.sectionID]] isEqual:@"0"]) { 266 | pushnotif(FALSE); 267 | } 268 | } else if ([title isEqualToString:@"ForwardNotifier Test"]) { 269 | pushnotif(TRUE); 270 | } 271 | } 272 | } 273 | %end 274 | 275 | %hook SpringBoard 276 | -(void)applicationDidFinishLaunching:(id)arg1 { 277 | [[NSDistributedNotificationCenter defaultCenter] addObserverForName:@"com.greg0109.forwardnotifierreceiver/notification" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { 278 | NSString *titlenotif = notification.userInfo[@"title"]; 279 | NSString *messagenotif = notification.userInfo[@"message"]; 280 | if ([titlenotif isEqualToString:@"ActivateForwardNotifier"]) { 281 | if ([messagenotif isEqualToString:@"true"]) { 282 | [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"ForwardNotifier-Status"]; 283 | } else if ([messagenotif isEqualToString:@"false"]) { 284 | [[NSUserDefaults standardUserDefaults] setBool:FALSE forKey:@"ForwardNotifier-Status"]; 285 | } 286 | } else { 287 | [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"ForwardNotifier-Status"]; 288 | title = @"ForwardNotifier Test"; 289 | message = @"This is a test notification"; 290 | testnotif(title,message); 291 | } 292 | }]; 293 | %orig; 294 | } 295 | %end 296 | %end 297 | 298 | %group devicereceiver 299 | %hook SpringBoard 300 | -(void)applicationDidFinishLaunching:(id)arg1 { 301 | [[NSDistributedNotificationCenter defaultCenter] addObserverForName:@"com.greg0109.forwardnotifierreceiver/notification" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { 302 | NSString *titlenotif = notification.userInfo[@"title"]; 303 | NSString *messagenotif = notification.userInfo[@"message"]; 304 | testnotif(titlenotif,messagenotif); 305 | }]; 306 | %orig; 307 | } 308 | %end 309 | %end 310 | 311 | %ctor { 312 | loadPrefs(); 313 | CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback)loadPrefs, CFSTR("com.greg0109.forwardnotifierprefs.settingschanged"), NULL, CFNotificationSuspensionBehaviorCoalesce); 314 | %init(); 315 | if (receiver) { 316 | %init(devicereceiver); 317 | } else { 318 | %init(sender); 319 | } 320 | } 321 | -------------------------------------------------------------------------------- /control: -------------------------------------------------------------------------------- 1 | Package: com.greg0109.forwardnotifier 2 | Name: ForwardNotifier 3 | Depends: mobilesubstrate, sshpass, openssh, applist, preferenceloader, curl 4 | Conflict: com.yourepo.greg0109.forwardnotifier8 5 | Replaces: com.yourepo.greg0109.forwardnotifier8 6 | Version: 1.4.3 7 | Architecture: iphoneos-arm 8 | Description: Forward Notifications to your PC! 9 | Maintainer: Greg0109 10 | Author: Greg0109 11 | Section: Tweaks 12 | -------------------------------------------------------------------------------- /forwardnotifier/.theos/build_session: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/forwardnotifier/.theos/build_session -------------------------------------------------------------------------------- /forwardnotifier/.theos/obj/.stamp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/forwardnotifier/.theos/obj/.stamp -------------------------------------------------------------------------------- /forwardnotifier/FNPRootListController.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | #import 5 | #import 6 | 7 | @interface FNPRootListController : PSListController 8 | @property (nonatomic,retain) NSMutableDictionary *savedSpecifiers; 9 | @end 10 | 11 | typedef struct SBIconImageInfo { 12 | CGSize size; 13 | double scale; 14 | double continuousCornerRadius; 15 | } SBIconImageInfo; 16 | 17 | @interface FBSSystemService (ForwardNotifier) 18 | +(id)sharedService; 19 | -(void)sendActions:(id)arg1 withResult:(/*^block*/id)arg2 ; 20 | @end 21 | 22 | @interface SBSRelaunchAction (ForwardNotifier) 23 | @property (nonatomic,copy,readonly) NSString * reason; 24 | @property (nonatomic,readonly) unsigned long long options; 25 | @property (nonatomic,retain,readonly) NSURL * targetURL; 26 | +(id)actionWithReason:(id)arg1 options:(unsigned long long)arg2 targetURL:(id)arg3 ; 27 | -(unsigned long long)options; 28 | -(NSString *)reason; 29 | -(id)initWithReason:(id)arg1 options:(unsigned long long)arg2 targetURL:(id)arg3 ; 30 | -(NSURL *)targetURL; 31 | @end 32 | 33 | 34 | @interface NSDistributedNotificationCenter : NSNotificationCenter 35 | + (instancetype)defaultCenter; 36 | - (void)postNotificationName:(NSString *)name object:(NSString *)object userInfo:(NSDictionary *)userInfo; 37 | @end 38 | 39 | @interface OBButtonTray : UIView 40 | - (void)addButton:(id)arg1; 41 | - (void)addCaptionText:(id)arg1;; 42 | @end 43 | 44 | @interface OBBoldTrayButton : UIButton 45 | -(void)setTitle:(id)arg1 forState:(unsigned long long)arg2; 46 | +(id)buttonWithType:(long long)arg1; 47 | @end 48 | 49 | @interface OBWelcomeController : UIViewController 50 | - (OBButtonTray *)buttonTray; 51 | - (id)initWithTitle:(id)arg1 detailText:(id)arg2 icon:(id)arg3; 52 | - (void)addBulletedListItemWithTitle:(id)arg1 description:(id)arg2 image:(id)arg3; 53 | @end 54 | 55 | OBWelcomeController *welcomeController; 56 | 57 | @interface UIImage (Private) 58 | + (id)_applicationIconImageForBundleIdentifier:(id)arg1 format:(int)arg2 scale:(double)arg3; 59 | @end 60 | -------------------------------------------------------------------------------- /forwardnotifier/FNPRootListController.m: -------------------------------------------------------------------------------- 1 | #include "FNPRootListController.h" 2 | 3 | int __isOSVersionAtLeast(int major, int minor, int patch) { NSOperatingSystemVersion version; version.majorVersion = major; version.minorVersion = minor; version.patchVersion = patch; return [[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:version]; } 4 | 5 | @implementation FNPRootListController 6 | 7 | - (NSArray *)specifiers { 8 | if (!_specifiers) { 9 | _specifiers = [self loadSpecifiersFromPlistName:@"Root" target:self]; 10 | NSArray *chosenIDs = @[@"hide1",@"hide2",@"hide3",@"hide4"]; 11 | self.savedSpecifiers = (!self.savedSpecifiers) ? [[NSMutableDictionary alloc] init] : self.savedSpecifiers; 12 | for(PSSpecifier *specifier in _specifiers) { 13 | if ([chosenIDs containsObject:[specifier propertyForKey:@"id"]]) { 14 | [self.savedSpecifiers setObject:specifier forKey:[specifier propertyForKey:@"id"]]; 15 | } 16 | } 17 | } 18 | return _specifiers; 19 | } 20 | 21 | - (void)viewDidLoad { 22 | [super viewDidLoad]; 23 | if (![[[NSUserDefaults standardUserDefaults] stringForKey:@"ForwardNotifier-FirstUse"] isEqual:@"1"]) { 24 | if (@available(iOS 13, *)){ 25 | [self updateController]; 26 | } else { 27 | UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"This tweak relies on a CC module!" 28 | message:@"To enable or disable ForwardNotifier, you need to use the CC module. We recomend CC support to enable third party modules. This alert and any other that show up on settings will only show up once." 29 | preferredStyle:UIAlertControllerStyleAlert]; 30 | UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault 31 | handler:^(UIAlertAction * action) {}]; 32 | [alert addAction:defaultAction]; 33 | [self presentViewController:alert animated:YES completion:nil]; 34 | [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"ForwardNotifier-FirstUse"]; 35 | } 36 | } 37 | ((UITableView *)[self.view.subviews objectAtIndex:0]).keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; 38 | if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"HideSSH"] isEqual:@"1"]) { 39 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide1"]] animated:YES]; 40 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide2"]] animated:YES]; 41 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide3"]] animated:YES]; 42 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide4"]] animated:YES]; 43 | } 44 | if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"HideSSH"] isEqual:@"0"]) { 45 | UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Possible exploit warning while using SSH" 46 | message:@"While the text has been sanitized to avoid possible execution of commands, the text is sent 'as is' and this presents a possible security risk.\nIt is advised to use the Crossplatform Server as it's more secure" 47 | preferredStyle:UIAlertControllerStyleAlert]; 48 | UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault 49 | handler:^(UIAlertAction * action) {}]; 50 | [alert addAction:defaultAction]; 51 | [self presentViewController:alert animated:YES completion:nil]; 52 | } 53 | } 54 | 55 | -(void)reloadSpecifiers { 56 | [super reloadSpecifiers]; 57 | //This will look the exact same as step 5, where we only check if specifiers need to be removed 58 | if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"HideSSH"] isEqual:@"1"]) { 59 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide1"]] animated:YES]; 60 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide2"]] animated:YES]; 61 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide3"]] animated:YES]; 62 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide4"]] animated:YES]; 63 | } 64 | } 65 | 66 | - (id)readPreferenceValue:(PSSpecifier*)specifier { 67 | NSString *path = [NSString stringWithFormat:@"/User/Library/Preferences/%@.plist", specifier.properties[@"defaults"]]; 68 | NSMutableDictionary *settings = [NSMutableDictionary dictionary]; 69 | [settings addEntriesFromDictionary:[NSDictionary dictionaryWithContentsOfFile:path]]; 70 | return (settings[specifier.properties[@"key"]]) ?: specifier.properties[@"default"]; 71 | } 72 | - (void)setPreferenceValue:(id)value specifier:(PSSpecifier*)specifier { 73 | NSString *path = [NSString stringWithFormat:@"/User/Library/Preferences/%@.plist", specifier.properties[@"defaults"]]; 74 | NSMutableDictionary *settings = [NSMutableDictionary dictionary]; 75 | [settings addEntriesFromDictionary:[NSDictionary dictionaryWithContentsOfFile:path]]; 76 | [settings setObject:value forKey:specifier.properties[@"key"]]; 77 | [settings writeToFile:path atomically:YES]; 78 | CFStringRef notificationName = (__bridge CFStringRef)specifier.properties[@"PostNotification"]; 79 | if (notificationName) { 80 | CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), notificationName, NULL, NULL, YES); 81 | } 82 | if ([[NSString stringWithFormat:@"%@",value] isEqual:@"3"] && [[NSString stringWithFormat:@"%@",specifier.properties[@"key"]] isEqual:@"pcspecifier"]) { 83 | if (![[[NSUserDefaults standardUserDefaults] stringForKey:@"ForwardNotifier-PCSpecifierWindows"] isEqual:@"1"]) { 84 | if (@available(iOS 13,*)) {} else { 85 | UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Crossplatform use is advised!" 86 | message:@"Windows SSH support is buggy at the moment. Crossplatform server use is advised." 87 | preferredStyle:UIAlertControllerStyleAlert]; 88 | UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault 89 | handler:^(UIAlertAction * action) {}]; 90 | [alert addAction:defaultAction]; 91 | [self presentViewController:alert animated:YES completion:nil]; 92 | [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"ForwardNotifier-PCSpecifierWindows"]; 93 | } 94 | } 95 | } else if ([[NSString stringWithFormat:@"%@",value] isEqual:@"2"] && [[NSString stringWithFormat:@"%@",specifier.properties[@"key"]] isEqual:@"pcspecifier"]) { 96 | if (![[[NSUserDefaults standardUserDefaults] stringForKey:@"ForwardNotifier-PCSpecifieriOS"] isEqual:@"1"]) { 97 | if (@available(iOS 13,*)) {} else { 98 | UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"iOS only supports SSH" 99 | message:@"Since the crossplatform server uses python3, iOS as a receiver only supports SSH at the moment." 100 | preferredStyle:UIAlertControllerStyleAlert]; 101 | UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault 102 | handler:^(UIAlertAction * action) {}]; 103 | [alert addAction:defaultAction]; 104 | [self presentViewController:alert animated:YES completion:nil]; 105 | [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"ForwardNotifier-PCSpecifieriOS"]; 106 | } 107 | } 108 | } else if ([[NSString stringWithFormat:@"%@",value] isEqual:@"1"] && [[NSString stringWithFormat:@"%@",specifier.properties[@"key"]] isEqual:@"methodspecifier"]) { 109 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide1"]] animated:YES]; 110 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide2"]] animated:YES]; 111 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide3"]] animated:YES]; 112 | [self removeContiguousSpecifiers:@[self.savedSpecifiers[@"hide4"]] animated:YES]; 113 | [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"HideSSH"]; 114 | } else if ([[NSString stringWithFormat:@"%@",value] isEqual:@"0"] && [[NSString stringWithFormat:@"%@",specifier.properties[@"key"]] isEqual:@"methodspecifier"]) { 115 | [self insertContiguousSpecifiers:@[self.savedSpecifiers[@"hide1"]] afterSpecifierID:@"hostnameip" animated:YES]; 116 | [self insertContiguousSpecifiers:@[self.savedSpecifiers[@"hide2"]] afterSpecifierID:@"hide1" animated:YES]; 117 | [self insertContiguousSpecifiers:@[self.savedSpecifiers[@"hide3"]] afterSpecifierID:@"hide2" animated:YES]; 118 | [self insertContiguousSpecifiers:@[self.savedSpecifiers[@"hide4"]] afterSpecifierID:@"hide3" animated:YES]; 119 | [[NSUserDefaults standardUserDefaults] setBool:FALSE forKey:@"HideSSH"]; 120 | UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Possible exploit warning while using SSH" 121 | message:@"While the text has been sanitized to avoid possible execution of commands, the text is sent 'as is' and this presents a possible security risk.\nIt is advised to use the Crossplatform Server as it's more secure" 122 | preferredStyle:UIAlertControllerStyleAlert]; 123 | UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault 124 | handler:^(UIAlertAction * action) {}]; 125 | [alert addAction:defaultAction]; 126 | [self presentViewController:alert animated:YES completion:nil]; 127 | } 128 | 129 | if ([[NSString stringWithFormat:@"%@",specifier.properties[@"key"]] isEqual:@"receiver"] || [[NSString stringWithFormat:@"%@",specifier.properties[@"key"]] isEqual:@"password"] || [[NSString stringWithFormat:@"%@",specifier.properties[@"key"]] isEqual:@"chargingenabled"]) { 130 | UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:@"Respring" style:UIBarButtonItemStylePlain target:self action:@selector(killall)]; 131 | self.navigationItem.rightBarButtonItem = button; 132 | } 133 | } 134 | 135 | -(void)updateController { 136 | if (@available(iOS 13,*)) { 137 | UIImage *iconImage = [UIImage imageNamed:@"IconWelcome" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil]; 138 | welcomeController = [[OBWelcomeController alloc] initWithTitle:@"ForwardNotifier!" detailText:@"Please, be sure to follow the github instructions carefully and enjoy the tweak!" icon:iconImage]; 139 | 140 | [welcomeController addBulletedListItemWithTitle:@"This tweak relies on a CC module!" description:@"To enable or disable ForwardNotifier, you need to use the CC module. We recommend CC support to enable third party modules." image:[UIImage systemImageNamed:@"1.circle.fill"]]; 141 | [welcomeController addBulletedListItemWithTitle:@"Use of the Crossplatform server is advised" description:@"The use of the crossplatform server is advised, as it brings more features and will have more support. Besides, it only requires the IP or hostname! No username or password is required." image:[UIImage systemImageNamed:@"2.circle.fill"]]; 142 | [welcomeController addBulletedListItemWithTitle:@"Windows" description:@"If you are using windows, please use the crossplatform server, as SSH on windows is not reliable enough." image:[UIImage systemImageNamed:@"3.circle.fill"]]; 143 | [welcomeController addBulletedListItemWithTitle:@"iOS" description:@"Using iOS as the receiver only works over SSH at the moment. Crossplatform support for iOS receiver is being researched." image:[UIImage systemImageNamed:@"4.circle.fill"]]; 144 | [welcomeController addBulletedListItemWithTitle:@"Support" description:@"If you are experiencing bugs, please read the github instructions carefuly, there is a link at the buttom of the preferences page. If you still need help, contact me via the links at the bottom of the preferences page." image:[UIImage systemImageNamed:@"5.circle.fill"]]; 145 | 146 | //welcomeController.buttonTray.effectView.effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleSystemChromeMaterial]; 147 | UIVisualEffectView *effectWelcomeView = [[UIVisualEffectView alloc] initWithFrame:welcomeController.viewIfLoaded.bounds]; 148 | effectWelcomeView.effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleSystemChromeMaterial]; 149 | [welcomeController.viewIfLoaded insertSubview:effectWelcomeView atIndex:0]; 150 | welcomeController.viewIfLoaded.backgroundColor = [UIColor clearColor]; 151 | OBBoldTrayButton* continueButton = [OBBoldTrayButton buttonWithType:1]; 152 | [continueButton addTarget:self action:@selector(dismissWelcomeController) forControlEvents:UIControlEventTouchUpInside]; 153 | [continueButton setTitle:@"Let's Go!" forState:UIControlStateNormal]; 154 | [continueButton setClipsToBounds:YES]; 155 | [continueButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 156 | [continueButton.layer setCornerRadius:15]; 157 | [welcomeController.buttonTray addButton:continueButton]; 158 | 159 | welcomeController.modalPresentationStyle = UIModalPresentationPageSheet; 160 | welcomeController.modalInPresentation = YES; 161 | welcomeController.view.tintColor = [UIColor systemBlueColor]; 162 | [self presentViewController:welcomeController animated:YES completion:nil]; 163 | } 164 | } 165 | 166 | -(void)dismissWelcomeController { // Say goodbye to your controller. :( 167 | [welcomeController dismissViewControllerAnimated:YES completion:nil]; 168 | } 169 | 170 | - (void)killall { 171 | NSURL *relaunchURL = [NSURL URLWithString:@"prefs:root=ForwardNotifier"]; 172 | SBSRelaunchAction *restartAction; 173 | restartAction = [NSClassFromString(@"SBSRelaunchAction") actionWithReason:@"RestartRenderServer" options:SBSRelaunchActionOptionsFadeToBlackTransition targetURL:relaunchURL]; 174 | [[NSClassFromString(@"FBSSystemService") sharedService] sendActions:[NSSet setWithObject:restartAction] withResult:nil]; 175 | } 176 | 177 | - (void)paypal { 178 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.paypal.me/greg0109"] options:@{} completionHandler:nil]; 179 | } 180 | 181 | - (void)openTwitter { 182 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://twitter.com/greg_0109"] options:@{} completionHandler:nil]; 183 | } 184 | 185 | - (void)reddit { 186 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.reddit.com/user/greg0109/"] options:@{} completionHandler:nil]; 187 | } 188 | 189 | - (void)sendEmail { 190 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:greg.rabago@gmail.com?subject=ForwardNotifier"] options:@{} completionHandler:nil]; 191 | } 192 | 193 | -(void)testnotif { 194 | [[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"com.greg0109.forwardnotifierreceiver/notification" object:nil userInfo:nil]; 195 | } 196 | 197 | @end 198 | -------------------------------------------------------------------------------- /forwardnotifier/Makefile: -------------------------------------------------------------------------------- 1 | ARCHS = arm64 arm64e 2 | GO_EASY_ON_ME = 1 3 | 4 | include $(THEOS)/makefiles/common.mk 5 | 6 | BUNDLE_NAME = ForwardNotifier 7 | 8 | ForwardNotifier_FILES = FNPRootListController.m 9 | ForwardNotifier_INSTALL_PATH = /Library/PreferenceBundles 10 | ForwardNotifier_FRAMEWORKS = UIKit 11 | ForwardNotifier_PRIVATE_FRAMEWORKS = Preferences OnBoardingKit 12 | ForwardNotifier_CFLAGS = -fobjc-arc 13 | 14 | include $(THEOS_MAKE_PATH)/bundle.mk 15 | 16 | internal-stage:: 17 | $(ECHO_NOTHING)mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences$(ECHO_END) 18 | $(ECHO_NOTHING)cp entry.plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/ForwardNotifier.plist$(ECHO_END) 19 | -------------------------------------------------------------------------------- /forwardnotifier/Resources/Email@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/forwardnotifier/Resources/Email@2x.png -------------------------------------------------------------------------------- /forwardnotifier/Resources/IconWelcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/forwardnotifier/Resources/IconWelcome.png -------------------------------------------------------------------------------- /forwardnotifier/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ForwardNotifier 9 | CFBundleIdentifier 10 | com.greg0109.forwardnotifierprefs 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1.0 21 | NSPrincipalClass 22 | FNPRootListController 23 | 24 | 25 | -------------------------------------------------------------------------------- /forwardnotifier/Resources/Paypal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/forwardnotifier/Resources/Paypal@2x.png -------------------------------------------------------------------------------- /forwardnotifier/Resources/Reddit@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/forwardnotifier/Resources/Reddit@2x.png -------------------------------------------------------------------------------- /forwardnotifier/Resources/Root.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | items 6 | 7 | 8 | cell 9 | PSGroupCell 10 | label 11 | General Settings 12 | footerText 13 | This feature makes this device the one that displays the notifications from other device. Enable this feature if you would like to receive notifications on this device. If this setting is enabled, the other ones should be disabled. 14 | 15 | 16 | cell 17 | PSSwitchCell 18 | default 19 | 20 | defaults 21 | com.greg0109.forwardnotifierprefs 22 | key 23 | receiver 24 | label 25 | Set Device as Receiver 26 | PostNotification 27 | com.greg0109.forwardnotifierprefs.settingschanged 28 | 29 | 30 | cell 31 | PSGroupCell 32 | footerText 33 | Apps selected in the blacklisted section won't get their notifications forwarded. 34 | 35 | 36 | cell 37 | PSLinkCell 38 | bundle 39 | AppList 40 | isController 41 | 1 42 | label 43 | Blacklisted Apps 44 | ALAllowsSelection 45 | 1 46 | ALSettingsKeyPrefix 47 | 48 | ALSettingsDefaultValue 49 | 0 50 | ALSettingsPath 51 | /var/mobile/Library/Preferences/com.greg0109.forwardnotifierblacklist 52 | ALSingleEnabledMode 53 | 54 | 55 | 56 | cell 57 | PSGroupCell 58 | footerText 59 | Enable this option to get an error output of the notifications. It should only be enabled if the tweak is not working properly. 60 | 61 | 62 | cell 63 | PSSwitchCell 64 | default 65 | 66 | defaults 67 | com.greg0109.forwardnotifierprefs 68 | key 69 | errorlog 70 | label 71 | Post a notification if something went wrong 72 | PostNotification 73 | com.greg0109.forwardnotifierprefs.settingschanged 74 | 75 | 76 | cell 77 | PSGroupCell 78 | footerText 79 | If this setting is enabled, the device won't send the notifications when is unlocked. Disable this if you would like to receive notifications on your PC/iOS device all the time. 80 | 81 | 82 | cell 83 | PSSwitchCell 84 | default 85 | 86 | defaults 87 | com.greg0109.forwardnotifierprefs 88 | key 89 | lockstateenabled 90 | label 91 | Disable when unlocked 92 | PostNotification 93 | com.greg0109.forwardnotifierprefs.settingschanged 94 | 95 | 96 | cell 97 | PSGroupCell 98 | footerText 99 | Select which OS you would like the notifications to be forwarded: - Linux requires a package called "notify-send" to be installed. - MacOS requires a package "terminal-notifier" to be installed. - iOS requires this tweak to be installed on the receiver device with the receiver option enabled. - Windows requires the Windows Client Tool "ForwardNotifierReceiver" to be installed. This feature is not yet supported. If you are using the crossplatform server option, the server tool for each OS should be installed on the receiver. That tool can be found in my github. 100 | 101 | 102 | cell 103 | PSSegmentCell 104 | default 105 | 0 106 | defaults 107 | com.greg0109.forwardnotifierprefs 108 | key 109 | pcspecifier 110 | validValues 111 | 112 | 0 113 | 1 114 | 2 115 | 3 116 | 117 | validTitles 118 | 119 | Linux 120 | MacOS 121 | iOS 122 | Windows 123 | 124 | alignment 125 | 0 126 | PostNotification 127 | com.greg0109.forwardnotifierprefs.settingschanged 128 | 129 | 130 | cell 131 | PSGroupCell 132 | 133 | 134 | cell 135 | PSGroupCell 136 | label 137 | Notifier Settings 138 | footerText 139 | If you are using key authentication, make sure the key works before activating. This tweak has been tested with keys in the .pem format 140 | 141 | 142 | cell 143 | PSSegmentCell 144 | default 145 | 0 146 | defaults 147 | com.greg0109.forwardnotifierprefs 148 | key 149 | methodspecifier 150 | validValues 151 | 152 | 0 153 | 1 154 | 155 | validTitles 156 | 157 | SSH 158 | Crossplatform Server 159 | 160 | alignment 161 | 0 162 | PostNotification 163 | com.greg0109.forwardnotifierprefs.settingschanged 164 | 165 | 166 | cell 167 | PSEditTextCell 168 | placeholder 169 | IP or Hostaname.local 170 | defaults 171 | com.greg0109.forwardnotifierprefs 172 | key 173 | ip 174 | id 175 | hostnameip 176 | PostNotification 177 | com.greg0109.forwardnotifierprefs.settingschanged 178 | 179 | 180 | cell 181 | PSEditTextCell 182 | placeholder 183 | Port. Leave empty if its default (22) 184 | defaults 185 | com.greg0109.forwardnotifierprefs 186 | key 187 | port 188 | id 189 | hide1 190 | PostNotification 191 | com.greg0109.forwardnotifierprefs.settingschanged 192 | 193 | 194 | cell 195 | PSEditTextCell 196 | placeholder 197 | User 198 | defaults 199 | com.greg0109.forwardnotifierprefs 200 | key 201 | user 202 | id 203 | hide2 204 | PostNotification 205 | com.greg0109.forwardnotifierprefs.settingschanged 206 | 207 | 208 | cell 209 | PSSecureEditTextCell 210 | placeholder 211 | Password or path to Key Authentication File 212 | defaults 213 | com.greg0109.forwardnotifierprefs 214 | key 215 | password 216 | id 217 | hide3 218 | PostNotification 219 | com.greg0109.forwardnotifierprefs.settingschanged 220 | 221 | 222 | cell 223 | PSSwitchCell 224 | default 225 | 226 | defaults 227 | com.greg0109.forwardnotifierprefs 228 | key 229 | keyauthentication 230 | id 231 | hide4 232 | label 233 | Use key authentication 234 | PostNotification 235 | com.greg0109.forwardnotifierprefs.settingschanged 236 | 237 | 238 | cell 239 | PSGroupCell 240 | footerText 241 | This will send a test notification to the PC/iOS Device. Please, make sure all the settings are correct and that the CC module is enabled before testing. 242 | 243 | 244 | action 245 | testnotif 246 | cell 247 | PSButtonCell 248 | label 249 | Test Notification 250 | 251 | 252 | cell 253 | PSGroupCell 254 | 255 | 256 | action 257 | paypal 258 | cell 259 | PSButtonCell 260 | icon 261 | Paypal 262 | label 263 | Buy me a coffee 264 | 265 | 266 | action 267 | openTwitter 268 | cell 269 | PSButtonCell 270 | icon 271 | Twitter 272 | label 273 | Twitter (@Greg_0109) 274 | 275 | 276 | action 277 | reddit 278 | cell 279 | PSButtonCell 280 | icon 281 | Reddit 282 | label 283 | Reddit (u/greg0109) 284 | 285 | 286 | action 287 | sendEmail 288 | cell 289 | PSButtonCell 290 | icon 291 | Email 292 | label 293 | Email 294 | 295 | 296 | title 297 | ForwardNotifier 298 | 299 | 300 | -------------------------------------------------------------------------------- /forwardnotifier/Resources/Twitter@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/forwardnotifier/Resources/Twitter@2x.png -------------------------------------------------------------------------------- /forwardnotifier/Resources/icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/forwardnotifier/Resources/icon@2x.png -------------------------------------------------------------------------------- /forwardnotifier/entry.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | entry 6 | 7 | bundle 8 | ForwardNotifier 9 | cell 10 | PSLinkCell 11 | detail 12 | FNPRootListController 13 | icon 14 | icon.png 15 | isController 16 | 17 | label 18 | ForwardNotifier 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /forwardnotifiercc/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/forwardnotifiercc/.DS_Store -------------------------------------------------------------------------------- /forwardnotifiercc/ForwardNotifierCC.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface ForwardNotifierCC : CCUIToggleModule { 4 | BOOL _selected; 5 | } 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /forwardnotifiercc/ForwardNotifierCC.m: -------------------------------------------------------------------------------- 1 | #import "ForwardNotifierCC.h" 2 | 3 | @implementation ForwardNotifierCC 4 | 5 | //Return the icon of your module here 6 | - (UIImage *)iconGlyph { 7 | return [UIImage imageNamed:@"Icon" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil]; 8 | } 9 | 10 | //Return the color selection color of your module here 11 | - (UIColor *)selectedColor { 12 | return [UIColor blackColor]; 13 | } 14 | 15 | - (BOOL)isSelected { 16 | if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"ForwardNotifier-Status"] isEqual:@"1"]) { 17 | return TRUE; 18 | } else { 19 | return FALSE; 20 | } 21 | } 22 | 23 | - (void)setSelected:(BOOL)selected { 24 | _selected = selected; 25 | [super refreshState]; 26 | if(_selected) { 27 | [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"ForwardNotifier-Status"]; 28 | } else { 29 | [[NSUserDefaults standardUserDefaults] setBool:FALSE forKey:@"ForwardNotifier-Status"]; 30 | } 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /forwardnotifiercc/Makefile: -------------------------------------------------------------------------------- 1 | ARCHS = arm64 arm64e 2 | GO_EASY_ON_ME = 1 3 | 4 | include $(THEOS)/makefiles/common.mk 5 | 6 | BUNDLE_NAME = ForwardNotifierCC 7 | ForwardNotifierCC_BUNDLE_EXTENSION = bundle 8 | ForwardNotifierCC_FILES = ForwardNotifierCC.m 9 | ForwardNotifierCC_PRIVATE_FRAMEWORKS = ControlCenterUIKit 10 | ForwardNotifierCC_INSTALL_PATH = /Library/ControlCenter/Bundles/ 11 | 12 | after-install:: 13 | install.exec "killall -9 SpringBoard" 14 | 15 | include $(THEOS_MAKE_PATH)/bundle.mk 16 | -------------------------------------------------------------------------------- /forwardnotifiercc/Resources/Icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/forwardnotifiercc/Resources/Icon@2x.png -------------------------------------------------------------------------------- /forwardnotifiercc/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | ForwardNotifierCC 7 | CFBundleExecutable 8 | ForwardNotifierCC 9 | CFBundleIdentifier 10 | com.greg0109.forwardnotifiercc 11 | CFBundleDevelopmentRegion 12 | English 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | MinimumOSVersion 22 | 7.0 23 | UIDeviceFamily 24 | 25 | 1 26 | 2 27 | 28 | NSPrincipalClass 29 | ForwardNotifierCC 30 | CFBundleSupportedPlatforms 31 | 32 | iPhoneOS 33 | 34 | CCSGetModuleSizeAtRuntime 35 | 36 | CCSModuleSize 37 | 38 | Portrait 39 | 40 | Height 41 | 1 42 | Width 43 | 1 44 | 45 | Landscape 46 | 47 | Height 48 | 1 49 | Width 50 | 1 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /forwardnotifiercc/control: -------------------------------------------------------------------------------- 1 | Package: com.greg0109.forwardnotifiercc 2 | Name: ForwardNotifierCC 3 | Depends: mobilesubstrate 4 | Version: 1.0 5 | Architecture: iphoneos-arm 6 | Description: CC Module for ForwardNotifier! 7 | Maintainer: Greg0109 8 | Author: Greg0109 9 | Section: Control Center (Modules) 10 | -------------------------------------------------------------------------------- /forwardnotifierreceiver/Makefile: -------------------------------------------------------------------------------- 1 | ARCHS = arm64 arm64e 2 | GO_EASY_ON_ME = 1 3 | 4 | include $(THEOS)/makefiles/common.mk 5 | 6 | TOOL_NAME = ForwardNotifierReceiver 7 | 8 | ForwardNotifierReceiver_FILES = main.m 9 | ForwardNotifierReceiver_CFLAGS = -fobjc-arc 10 | 11 | include $(THEOS_MAKE_PATH)/tool.mk 12 | -------------------------------------------------------------------------------- /forwardnotifierreceiver/main.m: -------------------------------------------------------------------------------- 1 | #include 2 | #import 3 | 4 | @interface NSDistributedNotificationCenter : NSNotificationCenter 5 | + (instancetype)defaultCenter; 6 | - (void)postNotificationName:(NSString *)name object:(NSString *)object userInfo:(NSDictionary *)userInfo; 7 | @end 8 | 9 | 10 | int main(int argc, char **argv, char **envp) { 11 | NSString *title = [NSString stringWithUTF8String:argv[1]]; 12 | NSString *message = [NSString stringWithUTF8String:argv[2]]; 13 | if ([title isEqualToString:@"ActivateForwardNotifier"]) { 14 | if ([message isEqualToString:@"true"]) { 15 | printf("ForwardNotifier Activated!"); 16 | } else if ([message isEqualToString:@"false"]) { 17 | printf("ForwardNotifier Deactivated!"); 18 | } 19 | } 20 | [[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"com.greg0109.forwardnotifierreceiver/notification" object:nil userInfo:@{@"title" : title, @"message" : message}]; 21 | return 0; 22 | } 23 | -------------------------------------------------------------------------------- /packages/com.greg0109.forwardnotifier_1.4.3_iphoneos-arm.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greg0109/ForwardNotifier/39dfa98e78c7d7580ae4f6b88fe59b1ad6556d8a/packages/com.greg0109.forwardnotifier_1.4.3_iphoneos-arm.deb --------------------------------------------------------------------------------