From a5fe320c470c43e1aaaab293b25bd27c56548a84 Mon Sep 17 00:00:00 2001 From: "jgwashburn@gmail.com" <jgwashburn@gmail.com> Date: Sun, 27 Nov 2016 10:45:25 -0800 Subject: [PATCH] specify_hostname --- app/app.iml | 16 ++++---- .../medtronic/GetHmacAndKeyActivity.java | 40 +++++++++++++++---- app/src/main/res/layout/activity_login.xml | 10 +++++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 52 insertions(+), 15 deletions(-) diff --git a/app/app.iml b/app/app.iml index ef183c6..f36de19 100644 --- a/app/app.iml +++ b/app/app.iml @@ -67,14 +67,6 @@ <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> @@ -83,6 +75,14 @@ <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/23.4.0/jars" /> diff --git a/app/src/main/java/info/nightscout/android/medtronic/GetHmacAndKeyActivity.java b/app/src/main/java/info/nightscout/android/medtronic/GetHmacAndKeyActivity.java index e8f955e..691bef2 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/GetHmacAndKeyActivity.java +++ b/app/src/main/java/info/nightscout/android/medtronic/GetHmacAndKeyActivity.java @@ -71,6 +71,7 @@ public class GetHmacAndKeyActivity extends AppCompatActivity implements LoaderCa // UI references. private EditText mUsernameView; private EditText mPasswordView; + private EditText mHostnameView; private View mProgressView; private View mLoginFormView; private TextView mRegisteredStickView; @@ -99,6 +100,16 @@ public class GetHmacAndKeyActivity extends AppCompatActivity implements LoaderCa } }); + mHostnameView = (EditText) findViewById(R.id.hostname); + mHostnameView.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) { + attemptLogin(); + return true; + } + }); + + mLoginFormView = findViewById(R.id.login_form); mProgressView = findViewById(R.id.login_progress); mRegisteredStickView = (TextView) findViewById(R.id.registered_usb_devices); @@ -148,10 +159,12 @@ public class GetHmacAndKeyActivity extends AppCompatActivity implements LoaderCa // Reset errors. mUsernameView.setError(null); mPasswordView.setError(null); + mHostnameView.setError(null); // Store values at the time of the login attempt. String username = mUsernameView.getText().toString(); String password = mPasswordView.getText().toString(); + String hostname = mHostnameView.getText().toString(); boolean cancel = false; View focusView = null; @@ -170,6 +183,11 @@ public class GetHmacAndKeyActivity extends AppCompatActivity implements LoaderCa cancel = true; } + // Check for a carelink server hostname (this is optional for a user to define) + if (TextUtils.isEmpty(hostname)) { + hostname = getString(R.string.server_hostname); // default + } + if (cancel) { // There was an error; don't attempt login and focus the first // form field with an error. @@ -178,7 +196,7 @@ public class GetHmacAndKeyActivity extends AppCompatActivity implements LoaderCa // Show a progress spinner, and kick off a background task to // perform the user login attempt. showProgress(true); - mHmacAndKeyTask = new GetHmacAndKey(username, password); + mHmacAndKeyTask = new GetHmacAndKey(username, password, hostname); mHmacAndKeyTask.execute((Void) null); } } @@ -280,6 +298,7 @@ public class GetHmacAndKeyActivity extends AppCompatActivity implements LoaderCa private final String mUsername; private final String mPassword; + private final String mHostname; // Note: if AsyncTask declaration can be located and changed, // then we can pass status to onPostExecute() in return value @@ -287,22 +306,24 @@ public class GetHmacAndKeyActivity extends AppCompatActivity implements LoaderCa // and not have to store it this way. private String mStatus = "success"; - GetHmacAndKey(String username, String password) { + GetHmacAndKey(String username, String password, String hostname) { mUsername = username; mPassword = password; + mHostname = hostname; } @Override protected Boolean doInBackground(final Void... params) { + HttpResponse response; try { DefaultHttpClient client = new DefaultHttpClient(); - HttpPost loginPost = new HttpPost("https://carelink.minimed.eu/patient/j_security_check"); + HttpPost loginPost = new HttpPost(mHostname + "/patient/j_security_check"); List<NameValuePair> nameValuePairs = new ArrayList<>(); nameValuePairs.add(new BasicNameValuePair("j_username", mUsername)); nameValuePairs.add(new BasicNameValuePair("j_password", mPassword)); nameValuePairs.add(new BasicNameValuePair("j_character_encoding", "UTF-8")); loginPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); - HttpResponse response = client.execute(loginPost); + response = client.execute(loginPost); if (response.getStatusLine().getStatusCode() == 200) { // Get the HMAC/keys for every serial we have seen @@ -317,7 +338,7 @@ public class GetHmacAndKeyActivity extends AppCompatActivity implements LoaderCa hmacRequest.writeInt(0x1c); hmacRequest.writeObject(longSerial.replaceAll("\\d+-", "")); - HttpPost hmacPost = new HttpPost("https://carelink.minimed.eu/patient/secure/SnapshotServer/"); + HttpPost hmacPost = new HttpPost(mHostname + "/patient/secure/SnapshotServer/"); hmacPost.setEntity(new ByteArrayEntity(buffer.toByteArray())); hmacPost.setHeader("Content-type", "application/octet-stream"); response = client.execute(hmacPost); @@ -335,7 +356,7 @@ public class GetHmacAndKeyActivity extends AppCompatActivity implements LoaderCa keyRequest.writeInt(0x1f); keyRequest.writeObject(longSerial); - HttpPost keyPost = new HttpPost("https://carelink.minimed.eu/patient/secure/SnapshotServer/"); + HttpPost keyPost = new HttpPost(mHostname + "/patient/secure/SnapshotServer/"); keyPost.setEntity(new ByteArrayEntity(buffer.toByteArray())); keyPost.setHeader("Content-type", "application/octet-stream"); response = client.execute(keyPost); @@ -364,7 +385,12 @@ public class GetHmacAndKeyActivity extends AppCompatActivity implements LoaderCa mStatus = getString(R.string.error_class_not_found_exception); return false; } +<<<<<<< HEAD mStatus = getString(R.string.error_http_response); +======= + + mStatus = getString(R.string.error_http_response) + "http response: " + response.getStatusLine(); +>>>>>>> specify_hostname return false; } @@ -392,4 +418,4 @@ public class GetHmacAndKeyActivity extends AppCompatActivity implements LoaderCa showProgress(false); } } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 56ac4a9..462bade 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -62,6 +62,16 @@ android:maxLines="1" android:singleLine="true"/> + <AutoCompleteTextView + android:id="@+id/hostname" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="Carelink hostname (optional)" + android:imeOptions="actionDone" + android:inputType="text" + android:maxLines="1"/> + + </LinearLayout> <LinearLayout diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dc91b9c..00a255b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -19,6 +19,7 @@ <string name="title_activity_login">CareLink login</string> <!-- Strings related to login --> + <string name="server_hostname">https://carelink.minimed.eu</string> <string name="prompt_username">CareLink Username</string> <string name="prompt_password">Password</string> <string name="action_sign_in">Retrieve keys for USB</string> -- GitLab