├── .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
--------------------------------------------------------------------------------