{ Filter = { Bundles = ( "com.blackboard.student" ); }; } |
Copyright (c) 2018 Gh0stByte | |||||
Permission is hereby granted, free of charge, to any person obtaining a copy | |||||
of this software and associated documentation files (the "Software"), to deal | |||||
in the Software without restriction, including without limitation the rights | |||||
to use, copy, modify, merge, publish, or distribute copies of the Software, | |||||
and to permit persons to whom the Software is furnished to do so, subject to | |||||
the following conditions: | |||||
The above copyright notice and this permission notice shall be included in all | |||||
copies or substantial portions of the Software. | |||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||||
SOFTWARE. | |||||
In addition to the above terms, you are prohibited from charging money for the | |||||
Software. You may not accept donations, purchases, or any other form of monetary | |||||
transactions for your work on or hosting Melody. | |||||
You may not modify the included list of developers and other people who have | |||||
contributed to the software or any donation links in the compiled tweak | |||||
or source code without the express approval of Gh0stByte beforehand. | |||||
You may not submit a compiled version of this Software or any other software using | |||||
its source code to any repository included upon the initial installation of Cydia | |||||
("default repositories") or commercial Cydia repository without the consent of | |||||
Gh0stByte. What is defined as a "commercial Cydia repository" in this license is | |||||
up to the descretion of Gh0stByte. | |||||
By using any of the source code of the Software in any other pieces of software, | |||||
you agree to the terms of this license. You must also include the original Credits | |||||
from the Software in that piece of software. | |||||
When distributing this tweak, you must provide notices which make it clear that | |||||
the Software is originally and mainly developed by Gh0stByte, you are not associated | |||||
with AppleBetas in any way, shape, or form. If necessary, | |||||
please also state that your version of the Software has been modified and may behave | |||||
incorrectly or differently than the original Software. |
include $(THEOS)/makefiles/common.mk | |||||
TWEAK_NAME = BlackBoardHVCCAutoLogin | |||||
BlackBoardHVCCAutoLogin_FILES = Tweak.xm | |||||
BlackBoardHVCCAutoLogin_FRAMEWORKS = UIKit | |||||
include $(THEOS_MAKE_PATH)/tweak.mk | |||||
after-install:: | |||||
install.exec "killall -9 BbStudent" | |||||
# Auto-login / Auto-fill for Blackboard's iOS app (Hudson Valley Community College) | |||||
====== | |||||
## About | |||||
This tweak will auto-fill your username and password for HVCC's single sign-on. Very helpfull if you use blackboard across multiple devices and keep having to re-login manually on your mobile. | |||||
## Media | |||||
 | |||||
 | |||||
## Installation | |||||
Go to Releases and download latest deb & install with iFile, Filza, dpkg or whatever suits your fancy. | |||||
OR | |||||
Clone repo and compile with theos | |||||
## Usage | |||||
### Setup Auto-fill | |||||
* Select "SUNY - Hudson Valleu Community College" from the dropdown menu | |||||
* Click the "Web Login" | |||||
* Enter your username & password and hit "OK" | |||||
* Click Web Login button again and give it a second. | |||||
* Enjoy never having to type your username and password in again! | |||||
### Resetting your login information | |||||
* Logout if not already | |||||
* Press the help button | |||||
* Choose "Change" | |||||
* Fill out user & pass then "OK" | |||||
## Contributing | |||||
1. Fork it! | |||||
2. Create your feature branch: `git checkout -b add-my-uni` | |||||
3. Commit your changes: `git commit -am 'Add support for my college'` | |||||
4. Push to the branch: `git push origin add-my-uni` | |||||
5. Submit a pull request :D | |||||
## History/Changelog | |||||
#### 1.0.0 (1/16/2018) | |||||
* Initial Release | |||||
## Credits | |||||
Made by [Gh0stByte](http://twitter.com/Gh0stByte) | |||||
## License | |||||
### Modified MIT License. READ IN FULL *BEFORE* USE | |||||
[License.md](../License.md) |
NSString *username, *password; | |||||
// Hook into the main view controller | |||||
%hook BBLFTWViewController | |||||
// Hook into when the login page finishes loading | |||||
- (void)webViewDidFinishLoad:(UIWebView *)webView { | |||||
// The javascript that we're gonna execute, which will set the username & password to what we've stored | |||||
NSString *inject = [NSString stringWithFormat:@"document.getElementById('username').value = '%@';document.getElementById('password').value = '%@';", username, password]; | |||||
// Inject the JS | |||||
[webView stringByEvaluatingJavaScriptFromString:inject]; | |||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void) | |||||
{ | |||||
// Submit the form by pressing the button. | |||||
[webView stringByEvaluatingJavaScriptFromString:@"document.forms[\"fm1\"].submit.click();"]; | |||||
}); | |||||
%orig; | |||||
} | |||||
%end | |||||
// Interface so we can call our custom method | |||||
@interface BBLFTWViewController : UIViewController | |||||
-(void)getAutofillInfo; | |||||
@end | |||||
// Hook into the login view controller | |||||
%hook BBLoginViewController | |||||
// Hook into when the login button is pressed | |||||
-(void)loginBtnTapped { | |||||
// Grab your username and password from the userdefaults | |||||
username = [[NSUserDefaults standardUserDefaults] objectForKey:@"USERNAME"]; | |||||
password = [[NSUserDefaults standardUserDefaults] objectForKey:@"PASSWORD"]; | |||||
// If you don't have an username & password setup | |||||
if(!(username && password) || ([username isEqualToString:@""] || [password isEqualToString:@""])) { | |||||
// Setup your username & password | |||||
[self getAutofillInfo]; | |||||
} else { | |||||
// Otherwise, load up the webview | |||||
%orig; | |||||
} | |||||
} | |||||
// Hook into when the help button is tapped | |||||
-(void)helpBtnTapped { | |||||
// Ask the user if they want to change their information | |||||
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Auto-Login" message:@"Would you like to change your login information?" preferredStyle:UIAlertControllerStyleAlert]; | |||||
UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"Change" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { | |||||
// If so, setup their username and pass | |||||
[self getAutofillInfo]; | |||||
}]; | |||||
[alertController addAction:confirmAction]; | |||||
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { | |||||
// Otherwise, use the normal function for the help button | |||||
%orig; | |||||
}]; | |||||
[alertController addAction:cancelAction]; | |||||
// Present the alert | |||||
[self presentViewController:alertController animated:YES completion:nil]; | |||||
} | |||||
// New function to get the login info | |||||
%new | |||||
-(void)getAutofillInfo { | |||||
// Ask the user to enter their input | |||||
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Auto-Login" message:@"Enter your username & password\n(Note: Information stored plaintext in the standard app defaults. To change the information, press the help button)" preferredStyle:UIAlertControllerStyleAlert]; | |||||
[alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { | |||||
textField.placeholder = @"Username"; | |||||
}]; | |||||
[alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { | |||||
textField.placeholder = @"Password"; | |||||
textField.secureTextEntry = YES; | |||||
}]; | |||||
UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { | |||||
//Store the information | |||||
[[NSUserDefaults standardUserDefaults] setObject:[[alertController textFields][0] text] forKey:@"USERNAME"]; | |||||
[[NSUserDefaults standardUserDefaults] setObject:[[alertController textFields][1] text] forKey:@"PASSWORD"]; | |||||
[[NSUserDefaults standardUserDefaults] synchronize]; | |||||
}]; | |||||
[alertController addAction:confirmAction]; | |||||
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { | |||||
}]; | |||||
[alertController addAction:cancelAction]; | |||||
// Show the alert | |||||
[self presentViewController:alertController animated:YES completion:nil]; | |||||
} | |||||
%end |
Package: ga.gh0stbyte.blackboardhvcc | |||||
Name: BlackBoard AutoLogin (HVCC) | |||||
Depends: mobilesubstrate | |||||
Version: 1.0.0 | |||||
Architecture: iphoneos-arm | |||||
Description: Auto HVCC SSO login | |||||
Allows you to login to HVCC through | |||||
the blackboard app automatically | |||||
Maintainer: Gh0stByte<gh0stbyte01@gmail.com> | |||||
Author: Gh0stByte<gh0stbyte01@gmail.com> | |||||
Section: Tweaks |