use of com.wso2.mobile.mdm.api.ApplicationManager in project MDM-Android-Agent by wso2-attic.
the class Operation method doTask.
@SuppressWarnings("static-access")
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void doTask(String code_in, String data_in, int req_mode) {
String code_input = code_in;
String data_input = data_in;
String notification = "";
String ssid = "";
String password = "";
devicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
appList = new ApplicationManager(context);
deviceInfo = new DeviceInfo(context);
gps = new GPSTracker(context);
smsManager = SmsManager.getDefault();
conversations = new TrackCallSMS(context);
deviceState = new PhoneState(context);
if (code_input.equals(CommonUtilities.OPERATION_DEVICE_INFO)) {
PhoneState phoneState = new PhoneState(context);
JSONObject obj = new JSONObject();
JSONObject battery_obj = new JSONObject();
JSONObject inmemory_obj = new JSONObject();
JSONObject exmemory_obj = new JSONObject();
JSONObject location_obj = new JSONObject();
double latitude = 0;
double longitude = 0;
try {
latitude = gps.getLatitude();
longitude = gps.getLongitude();
int batteryLevel = (int) Math.floor(phoneState.getBatteryLevel());
battery_obj.put("level", batteryLevel);
inmemory_obj.put("total", deviceInfo.getTotalInternalMemorySize());
inmemory_obj.put("available", deviceInfo.getAvailableInternalMemorySize());
exmemory_obj.put("total", deviceInfo.getTotalExternalMemorySize());
exmemory_obj.put("available", deviceInfo.getAvailableExternalMemorySize());
location_obj.put("latitude", latitude);
location_obj.put("longitude", longitude);
obj.put("battery", battery_obj);
obj.put("internal_memory", inmemory_obj);
obj.put("external_memory", exmemory_obj);
obj.put("location_obj", location_obj);
obj.put("operator", deviceInfo.getNetworkOperatorName());
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
params.put("status", "200");
params.put("data", obj.toString());
Map<String, String> as = new HashMap<String, String>();
as.put("all", params.toString());
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Battery Level : " + phoneState.getBatteryLevel() + ", Total Memory : " + deviceInfo.formatSizeGB(deviceInfo.getTotalInternalMemorySize() + deviceInfo.getTotalExternalMemorySize()) + ", Available Memory : " + deviceInfo.formatSizeGB(deviceInfo.getAvailableInternalMemorySize() + deviceInfo.getAvailableExternalMemorySize()), null, null);
}
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_DEVICE_LOCATION)) {
LocationServices ls = new LocationServices(context);
Log.v("Latitude", ls.getLatitude());
double latitude = 0;
double longitude = 0;
JSONObject obj = new JSONObject();
try {
latitude = gps.getLatitude();
longitude = gps.getLongitude();
obj.put("latitude", latitude);
obj.put("longitude", longitude);
Map<String, String> params = new HashMap<String, String>();
params.put("code", CommonUtilities.OPERATION_DEVICE_LOCATION);
params.put("msgID", token);
params.put("status", "200");
params.put("data", obj.toString());
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Longitude : " + longitude + ",Latitude : " + latitude, null, null);
}
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_GET_APPLICATION_LIST)) {
ArrayList<PInfo> apps = appList.getInstalledApps(false);
/*
* false =
* no system
* packages
*/
JSONArray jsonArray = new JSONArray();
int max = apps.size();
String apz = "";
Log.e("APP TOTAL : ", "" + max);
for (int i = 0; i < max; i++) {
JSONObject jsonObj = new JSONObject();
try {
jsonObj.put("name", apps.get(i).appname);
jsonObj.put("package", apps.get(i).pname);
jsonObj.put("icon", apps.get(i).icon);
apz += apps.get(i).appname + " ,";
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jsonArray.put(jsonObj);
}
JSONObject appsObj = new JSONObject();
try {
appsObj.put("apps", jsonArray);
Map<String, String> params = new HashMap<String, String>();
params.put("code", CommonUtilities.OPERATION_GET_APPLICATION_LIST);
params.put("msgID", token);
params.put("status", "200");
params.put("data", Uri.encode(jsonArray.toString()));
Log.e("PASSING MSG ID : ", token);
Log.e("PASSING CODE : ", code_input);
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, apz, null, null);
}
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_LOCK_DEVICE)) {
Log.d(TAG, "Locking device now");
try {
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
params.put("status", "200");
if (req_mode == REQUEST_MODE_NORMAL) {
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Device Locked Successfully", null, null);
}
} else {
if (policy_count != 0) {
policy_count++;
}
bundle_params.put("" + policy_count, params.toString());
}
devicePolicyManager.lockNow();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_WIPE_DATA)) {
Log.d(TAG, "RESETing device now - all user data will be ERASED to factory settings");
String pin = null;
SharedPreferences mainPref = context.getSharedPreferences("com.mdm", Context.MODE_PRIVATE);
String pinSaved = mainPref.getString("pin", "");
try {
JSONObject jobj = new JSONObject(data_input);
pin = (String) jobj.get("pin");
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
if (pin.trim().equals(pinSaved.trim())) {
params.put("status", "200");
} else {
params.put("status", "400");
}
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
if (pin.trim().equals(pinSaved.trim())) {
smsManager.sendTextMessage(recepient, null, "Device Wiped Successfully", null, null);
} else {
smsManager.sendTextMessage(recepient, null, "Wrong PIN", null, null);
}
}
if (pin.trim().equals(pinSaved.trim())) {
Toast.makeText(context, "Device is being wiped", Toast.LENGTH_LONG).show();
startUnRegistration(context);
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
devicePolicyManager.wipeData(ACTIVATION_REQUEST);
} else {
Toast.makeText(context, "Device wipe failed due to wrong PIN", Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_CLEAR_PASSWORD)) {
ComponentName demoDeviceAdmin = new ComponentName(context, WSO2DeviceAdminReceiver.class);
try {
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
params.put("status", "200");
if (req_mode == REQUEST_MODE_NORMAL) {
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Lock code cleared Successfully", null, null);
}
} else {
if (policy_count != 0) {
policy_count++;
}
bundle_params.put("" + policy_count, params.toString());
}
devicePolicyManager.setPasswordQuality(demoDeviceAdmin, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
devicePolicyManager.setPasswordMinimumLength(demoDeviceAdmin, 0);
devicePolicyManager.resetPassword("", DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
devicePolicyManager.lockNow();
devicePolicyManager.setPasswordQuality(demoDeviceAdmin, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_NOTIFICATION)) {
JSONParser jp = new JSONParser();
try {
JSONObject jobj = new JSONObject(data_input);
if (jobj.get("notification").toString() != null || jobj.get("notification").toString().equals("")) {
notification = jobj.get("notification").toString();
} else if (jobj.get("Notification").toString() != null || jobj.get("Notification").toString().equals("")) {
notification = jobj.get("Notification").toString();
} else {
notification = "";
}
Log.v("Notification", notification);
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
params.put("status", "200");
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Notification Receieved Successfully", null, null);
}
Intent intent = new Intent(context, AlertActivity.class);
intent.putExtra("message", notification);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_WIFI)) {
boolean wifistatus = false;
JSONParser jp = new JSONParser();
try {
JSONObject jobj = new JSONObject(data_input);
if (!jobj.isNull("ssid")) {
ssid = (String) jobj.get("ssid");
}
if (!jobj.isNull("password")) {
password = (String) jobj.get("password");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Map<String, String> inparams = new HashMap<String, String>();
inparams.put("code", code_input);
inparams.put("msgID", token);
WiFiConfig config = new WiFiConfig(context);
try {
wifistatus = config.saveWEPConfig(ssid, password);
if (wifistatus) {
inparams.put("status", "200");
} else {
inparams.put("status", "400");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (req_mode == REQUEST_MODE_NORMAL) {
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(inparams, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "WiFi Configured Successfully", null, null);
}
} else {
if (policy_count != 0) {
policy_count++;
}
bundle_params.put("" + policy_count, inparams.toString());
}
}
} else if (code_input.equals(CommonUtilities.OPERATION_DISABLE_CAMERA)) {
boolean camFunc = false;
JSONParser jp = new JSONParser();
try {
JSONObject jobj = new JSONObject(data_input);
if (!jobj.isNull("function") && jobj.get("function").toString().equalsIgnoreCase("enable")) {
camFunc = false;
} else if (!jobj.isNull("function") && jobj.get("function").toString().equalsIgnoreCase("disable")) {
camFunc = true;
} else if (!jobj.isNull("function")) {
camFunc = Boolean.parseBoolean(jobj.get("function").toString());
}
ComponentName cameraAdmin = new ComponentName(context, WSO2DeviceAdminReceiver.class);
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
params.put("status", "200");
String cammode = "Disabled";
if (camFunc) {
cammode = "Disabled";
} else {
cammode = "Enabled";
}
if (req_mode == REQUEST_MODE_NORMAL) {
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Camera " + cammode + " Successfully", null, null);
}
} else {
if (policy_count != 0) {
policy_count++;
}
bundle_params.put("" + policy_count, params.toString());
}
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
devicePolicyManager.setCameraDisabled(cameraAdmin, camFunc);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_INSTALL_APPLICATION) || code_input.equals(CommonUtilities.OPERATION_INSTALL_APPLICATION_BUNDLE)) {
try {
if (code_input.equals(CommonUtilities.OPERATION_INSTALL_APPLICATION)) {
JSONObject jobj = new JSONObject(data_input);
installApplication(jobj, code_input);
} else if (code_input.equals(CommonUtilities.OPERATION_INSTALL_APPLICATION_BUNDLE)) {
JSONArray jArray = null;
jArray = new JSONArray(data_input);
for (int i = 0; i < jArray.length(); i++) {
JSONObject appObj = (JSONObject) jArray.getJSONObject(i);
installApplication(appObj, code_input);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_UNINSTALL_APPLICATION)) {
String packageName = "";
JSONParser jp = new JSONParser();
try {
JSONObject jobj = new JSONObject(data_input);
packageName = (String) jobj.get("identity");
Log.v("Package Name : ", packageName);
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
params.put("status", "200");
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Application uninstalled Successfully", null, null);
}
appList.unInstallApplication(packageName);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_ENCRYPT_STORAGE)) {
boolean encryptFunc = true;
String pass = "";
JSONParser jp = new JSONParser();
try {
JSONObject jobj = new JSONObject(data_input);
if (!jobj.isNull("function") && jobj.get("function").toString().equalsIgnoreCase("encrypt")) {
encryptFunc = true;
} else if (!jobj.isNull("function") && jobj.get("function").toString().equalsIgnoreCase("decrypt")) {
encryptFunc = false;
} else if (!jobj.isNull("function")) {
encryptFunc = Boolean.parseBoolean(jobj.get("function").toString());
}
ComponentName admin = new ComponentName(context, WSO2DeviceAdminReceiver.class);
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
if (encryptFunc && devicePolicyManager.getStorageEncryptionStatus() != devicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED) {
if (devicePolicyManager.getStorageEncryptionStatus() == devicePolicyManager.ENCRYPTION_STATUS_INACTIVE) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
devicePolicyManager.setStorageEncryption(admin, encryptFunc);
Intent intent = new Intent(DevicePolicyManager.ACTION_START_ENCRYPTION);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
} else if (!encryptFunc && devicePolicyManager.getStorageEncryptionStatus() != devicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED) {
if (devicePolicyManager.getStorageEncryptionStatus() == devicePolicyManager.ENCRYPTION_STATUS_ACTIVE || devicePolicyManager.getStorageEncryptionStatus() == devicePolicyManager.ENCRYPTION_STATUS_ACTIVATING) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
devicePolicyManager.setStorageEncryption(admin, encryptFunc);
}
}
}
if (devicePolicyManager.getStorageEncryptionStatus() != devicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED) {
params.put("status", "200");
} else {
params.put("status", "400");
}
if (req_mode == REQUEST_MODE_NORMAL) {
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Storage Encrypted Successfully", null, null);
}
} else {
if (policy_count != 0) {
policy_count++;
}
bundle_params.put("" + policy_count, params.toString());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_MUTE)) {
Log.d(TAG, "Muting Device");
try {
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
params.put("status", "200");
if (req_mode == REQUEST_MODE_NORMAL) {
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Device Muted Successfully", null, null);
}
} else {
if (policy_count != 0) {
policy_count++;
}
bundle_params.put("" + policy_count, params.toString());
}
muteDevice();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_TRACK_CALLS)) {
try {
Map<String, String> params = new HashMap<String, String>();
params.put("code", CommonUtilities.OPERATION_TRACK_CALLS);
params.put("msgID", token);
params.put("status", "200");
params.put("data", conversations.getCallDetails().toString());
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, conversations.getCallDetails().toString(), null, null);
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_TRACK_SMS)) {
int MESSAGE_TYPE_INBOX = 1;
int MESSAGE_TYPE_SENT = 2;
JSONObject smsObj = new JSONObject();
try {
smsObj.put("inbox", conversations.getSMS(MESSAGE_TYPE_INBOX));
smsObj.put("sent", conversations.getSMS(MESSAGE_TYPE_SENT));
Map<String, String> params = new HashMap<String, String>();
params.put("code", CommonUtilities.OPERATION_TRACK_SMS);
params.put("msgID", token);
params.put("status", "200");
params.put("data", smsObj.toString());
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, smsObj.toString(), null, null);
}
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_DATA_USAGE)) {
JSONObject dataObj = new JSONObject();
try {
Map<String, String> params = new HashMap<String, String>();
params.put("code", CommonUtilities.OPERATION_DATA_USAGE);
params.put("msgID", token);
params.put("status", "200");
params.put("data", deviceState.takeDataUsageSnapShot().toString());
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, dataObj.toString(), null, null);
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_STATUS)) {
boolean encryptStatus = false;
boolean passCodeStatus = false;
try {
if (devicePolicyManager.getStorageEncryptionStatus() != devicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED) {
if (devicePolicyManager.getStorageEncryptionStatus() == devicePolicyManager.ENCRYPTION_STATUS_ACTIVE || devicePolicyManager.getStorageEncryptionStatus() == devicePolicyManager.ENCRYPTION_STATUS_ACTIVATING) {
encryptStatus = true;
} else {
encryptStatus = false;
}
}
if (devicePolicyManager.isActivePasswordSufficient()) {
passCodeStatus = true;
} else {
passCodeStatus = false;
}
} catch (Exception ex) {
ex.printStackTrace();
passCodeStatus = false;
}
JSONObject dataObj = new JSONObject();
try {
dataObj.put("encryption", encryptStatus);
dataObj.put("passcode", passCodeStatus);
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
params.put("status", "200");
params.put("data", dataObj.toString());
if (req_mode == REQUEST_MODE_NORMAL) {
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, dataObj.toString(), null, null);
}
} else {
if (policy_count != 0) {
policy_count++;
}
bundle_params.put("" + policy_count, params.toString());
}
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_WEBCLIP)) {
String appUrl = "";
String title = "";
JSONParser jp = new JSONParser();
try {
JSONObject jobj = new JSONObject(data_input);
Log.v("WEBCLIP DATA : ", data.toString());
appUrl = (String) jobj.get("identity");
title = (String) jobj.get("title");
Log.v("Web App URL : ", appUrl);
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
params.put("status", "200");
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "WebClip created Successfully", null, null);
}
appList.createWebAppBookmark(appUrl, title);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_PASSWORD_POLICY)) {
ComponentName demoDeviceAdmin = new ComponentName(context, WSO2DeviceAdminReceiver.class);
int attempts, length, history, specialChars;
String alphanumeric, complex;
boolean b_alphanumeric, b_complex;
long timout;
Map<String, String> inparams = new HashMap<String, String>();
JSONParser jp = new JSONParser();
try {
JSONObject jobj = new JSONObject(data_input);
if (!jobj.isNull("maxFailedAttempts") && jobj.get("maxFailedAttempts") != null) {
attempts = Integer.parseInt((String) jobj.get("maxFailedAttempts"));
devicePolicyManager.setMaximumFailedPasswordsForWipe(demoDeviceAdmin, attempts);
}
if (!jobj.isNull("minLength") && jobj.get("minLength") != null) {
length = Integer.parseInt((String) jobj.get("minLength"));
devicePolicyManager.setPasswordMinimumLength(demoDeviceAdmin, length);
}
if (!jobj.isNull("pinHistory") && jobj.get("pinHistory") != null) {
history = Integer.parseInt((String) jobj.get("pinHistory"));
devicePolicyManager.setPasswordHistoryLength(demoDeviceAdmin, history);
}
if (!jobj.isNull("minComplexChars") && jobj.get("minComplexChars") != null) {
specialChars = Integer.parseInt((String) jobj.get("minComplexChars"));
devicePolicyManager.setPasswordMinimumSymbols(demoDeviceAdmin, specialChars);
}
if (!jobj.isNull("requireAlphanumeric") && jobj.get("requireAlphanumeric") != null) {
if (jobj.get("requireAlphanumeric") instanceof String) {
alphanumeric = (String) jobj.get("requireAlphanumeric");
if (alphanumeric.equals("true")) {
devicePolicyManager.setPasswordQuality(demoDeviceAdmin, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);
}
} else if (jobj.get("requireAlphanumeric") instanceof Boolean) {
b_alphanumeric = jobj.getBoolean("requireAlphanumeric");
if (b_alphanumeric) {
devicePolicyManager.setPasswordQuality(demoDeviceAdmin, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);
}
}
}
if (!jobj.isNull("allowSimple") && jobj.get("allowSimple") != null) {
if (jobj.get("allowSimple") instanceof String) {
complex = (String) jobj.get("allowSimple");
if (!complex.equals("true")) {
devicePolicyManager.setPasswordQuality(demoDeviceAdmin, DevicePolicyManager.PASSWORD_QUALITY_COMPLEX);
}
} else if (jobj.get("allowSimple") instanceof Boolean) {
b_complex = jobj.getBoolean("allowSimple");
if (!b_complex) {
devicePolicyManager.setPasswordQuality(demoDeviceAdmin, DevicePolicyManager.PASSWORD_QUALITY_COMPLEX);
}
}
}
if (!jobj.isNull("maxPINAgeInDays") && jobj.get("maxPINAgeInDays") != null) {
int daysOfExp = Integer.parseInt((String) jobj.get("maxPINAgeInDays"));
timout = (long) (daysOfExp * 24 * 60 * 60 * 1000);
devicePolicyManager.setPasswordExpirationTimeout(demoDeviceAdmin, timout);
}
SharedPreferences mainPref = context.getSharedPreferences("com.mdm", Context.MODE_PRIVATE);
String policy = mainPref.getString("policy", "");
inparams.put("code", code_input);
inparams.put("msgID", token);
inparams.put("status", "200");
} catch (Exception e) {
// TODO Auto-generated catch block
params.put("status", "400");
e.printStackTrace();
} finally {
try {
if (req_mode == REQUEST_MODE_NORMAL) {
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(inparams, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Password Policies Successfully Set", null, null);
}
} else {
if (policy_count != 0) {
policy_count++;
}
bundle_params.put("" + policy_count, inparams.toString());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
} else if (code_input.equals(CommonUtilities.OPERATION_EMAIL_CONFIGURATION)) {
String emailname = "", emailtype = "", ic_username = "", ic_password = "", ic_hostname = "";
long timout;
Map<String, String> inparams = new HashMap<String, String>();
JSONParser jp = new JSONParser();
try {
JSONObject jobj = new JSONObject(data_input);
if (!jobj.isNull("type") && jobj.get("type") != null) {
emailtype = (String) jobj.get("type");
}
if (!jobj.isNull("displayname") && jobj.get("displayname") != null) {
emailname = (String) jobj.get("displayname");
}
if (!jobj.isNull("username") && jobj.get("username") != null) {
ic_username = (String) jobj.get("username");
}
if (!jobj.isNull("password") && jobj.get("password") != null) {
ic_password = (String) jobj.get("password");
}
if (emailtype.trim().equals("GMAIL")) {
ic_hostname = "imap.googlemail.com";
} else if (emailtype.equals("YAHOO")) {
ic_hostname = "";
} else if (emailtype.equals("HOTMAIL")) {
ic_hostname = "";
}
inparams.put("code", code_input);
inparams.put("msgID", token);
inparams.put("status", "200");
} catch (Exception e) {
// TODO Auto-generated catch block
params.put("status", "400");
e.printStackTrace();
} finally {
try {
if (req_mode == REQUEST_MODE_NORMAL) {
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(inparams, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Email Configured Successfully Set", null, null);
}
} else {
if (policy_count != 0) {
policy_count++;
}
bundle_params.put("" + policy_count, inparams.toString());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
} else if (code_input.equals(CommonUtilities.OPERATION_INSTALL_GOOGLE_APP)) {
String packageName = "";
JSONParser jp = new JSONParser();
try {
JSONObject jobj = new JSONObject(data_input);
packageName = (String) jobj.get("package");
Log.v("Package Name : ", packageName);
Map<String, String> params = new HashMap<String, String>();
params.put("code", code_input);
params.put("msgID", token);
params.put("status", "200");
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Application installed Successfully", null, null);
}
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("market://details?id=" + packageName));
context.startActivity(intent);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_CHANGE_LOCK_CODE)) {
ComponentName demoDeviceAdmin = new ComponentName(context, WSO2DeviceAdminReceiver.class);
devicePolicyManager.setPasswordMinimumLength(demoDeviceAdmin, 3);
String pass = "";
Map<String, String> inparams = new HashMap<String, String>();
JSONParser jp = new JSONParser();
try {
JSONObject jobj = new JSONObject(data_input);
if (!jobj.isNull("password")) {
pass = (String) jobj.get("password");
}
inparams.put("code", code_input);
inparams.put("msgID", token);
inparams.put("status", "200");
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(inparams, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Lock code changed Successfully", null, null);
}
if (!pass.equals("")) {
devicePolicyManager.resetPassword(pass, DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
devicePolicyManager.lockNow();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (req_mode == REQUEST_MODE_NORMAL) {
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(inparams, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Lock code changed Successfully", null, null);
}
} else {
if (policy_count != 0) {
policy_count++;
}
bundle_params.put("" + policy_count, inparams.toString());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
} else if (code_input.equals(CommonUtilities.OPERATION_POLICY_BUNDLE)) {
Map<String, String> params = new HashMap<String, String>();
try {
params.put("code", code);
params.put("msgID", policy_token);
params.put("status", "200");
params.put("data", bundle_params.toString());
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Bundle Executed Successfully", null, null);
}
} catch (Exception ex) {
ex.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_POLICY_MONITOR)) {
JSONArray sendjArray;
try {
JSONObject jobj = new JSONObject(this.data);
sendjArray = jobj.getJSONArray("policies");
int type = Integer.parseInt((String) jobj.get("type").toString().trim());
if (type != 1 && type != 2 && type != 3) {
type = 1;
}
Log.e("PASSING MSG ID : ", policy_token);
Log.e("PASSING CODE : ", code_input);
Log.e("PASSING TYPE : ", String.valueOf(type));
PolicyTester tester = new PolicyTester(context, sendjArray, type, policy_token);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_POLICY_REVOKE)) {
try {
Map<String, String> inparams = new HashMap<String, String>();
inparams.put("code", code_input);
inparams.put("msgID", token);
inparams.put("status", "200");
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(inparams, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, "Lock code changed Successfully", null, null);
}
revokePolicy();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (code_input.equals(CommonUtilities.OPERATION_BLACKLIST_APPS)) {
ArrayList<PInfo> apps = appList.getInstalledApps(false);
/*
* false =
* no system
* packages
*/
JSONArray jsonArray = new JSONArray();
int max = apps.size();
if (max > 10) {
// max = 10;
}
String apz = "";
try {
JSONObject appsObj = new JSONObject(data_input);
JSONObject appObj = (JSONObject) appsObj.get("data");
String identity = (String) appObj.get("identity");
for (int j = 0; j < max; j++) {
JSONObject jsonObj = new JSONObject();
try {
jsonObj.put("name", apps.get(j).appname);
jsonObj.put("package", apps.get(j).pname);
if (identity.trim().equals(apps.get(j).pname)) {
jsonObj.put("notviolated", false);
jsonObj.put("package", apps.get(j).pname);
} else {
jsonObj.put("notviolated", true);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jsonArray.put(jsonObj);
}
} catch (Exception ex) {
ex.printStackTrace();
}
JSONObject appsObj = new JSONObject();
try {
appsObj.put("apps", jsonArray);
Map<String, String> params = new HashMap<String, String>();
params.put("code", CommonUtilities.OPERATION_GET_APPLICATION_LIST);
params.put("msgID", token);
params.put("status", "200");
params.put("data", jsonArray.toString());
if (mode == CommonUtilities.MESSAGE_MODE_GCM) {
ServerUtilities.pushData(params, context);
} else if (mode == CommonUtilities.MESSAGE_MODE_SMS) {
smsManager.sendTextMessage(recepient, null, apz, null, null);
}
SharedPreferences mainPref = context.getSharedPreferences("com.mdm", Context.MODE_PRIVATE);
String policy = mainPref.getString("policy", "");
if (policy != null && policy != "") {
if (apz != null || !apz.trim().equals("")) {
}
}
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
Aggregations