com.mobshep.insufficienttls.MainActivity.java Source code

Java tutorial

Introduction

Here is the source code for com.mobshep.insufficienttls.MainActivity.java

Source

package com.mobshep.insufficienttls;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.StrictMode;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import java.util.ArrayList;

/**
 * This file is part of the Security Shepherd Project.
 *
 * The Security Shepherd project is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.<br/>
 *
 * The Security Shepherd project is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.<br/>
 *
 * You should have received a copy of the GNU General Public License
 * along with the Security Shepherd project.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @author Sean Duggan
 */

public class MainActivity extends AppCompatActivity {

    EditText username, password;
    SharedPreferences storedPref;
    SharedPreferences.Editor toEdit;

    TextView tvResponse;

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        referenceXML();

        logPrefSession();
        logProviderSession();

        if (checkSession()) {
            // Intent intent = new Intent(MainActivity.this, LoggedIn.class);
            // startActivity(intent);
        }

        //TODO
        //Remove this and replace with AsyncTask
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        //end remove

        SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        String address = SP.getString("server_preference", "NA");

        Toast addressTest = Toast.makeText(MainActivity.this, "Server Address : " + address, Toast.LENGTH_LONG);
        addressTest.show();

    }

    public void submitClicked(View v) {

        if (username.getText().toString().equals("") || password.getText().toString().equals("")) {
            Toast blank = Toast.makeText(MainActivity.this, "Blank Fields Detected!", Toast.LENGTH_SHORT);
            blank.show();
            return;
        }

        ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
        postParameters.add(new BasicNameValuePair("login", username.getText().toString()));
        postParameters.add(new BasicNameValuePair("pwd", password.getText().toString()));

        try {

            SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
            String address = SP.getString("server_preference", "NA");

            String res = CustomHttpClient.executeHttpPost(address + "/mobileLogin", postParameters);

            JSONObject jObject = new JSONObject(res);

            String response = jObject.getString("JSESSIONID");

            System.out.println("SessionId: " + response);

            response = response.replaceAll("\\s+", "");

            Toast responseError = Toast.makeText(MainActivity.this, response, Toast.LENGTH_SHORT);
            responseError.show();

            Log.i(TAG, "Server Response:" + response);

            if (response.contains(" ERROR ")) {
                tvResponse.setText("Invalid username or password");
            }

            if (res != null) {
                Toast valid = Toast.makeText(MainActivity.this, "Logged In!", Toast.LENGTH_SHORT);
                valid.show();

                storedPref = getSharedPreferences("Sessions", MODE_PRIVATE);
                toEdit = storedPref.edit();
                toEdit.putString("sessionId", response);
                toEdit.commit();

                //Intent intent = new Intent(MainActivity.this, LoggedIn.class);
                //startActivity(intent);

            } else {
                Toast.makeText(getBaseContext(), "Invalid Credentials!", Toast.LENGTH_SHORT).show();
            }
        } catch (Exception e) {

            if (e.toString().contains("ERROR")) {
                tvResponse.setText("Invalid Credentials");
            }

            else {

                Toast responseError = Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG);
                responseError.show();

                tvResponse.setText(e.toString());
            }
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        switch (id) {

        case R.id.action_settings:

            Intent goToSettings = new Intent(this, Preferences.class);
            startActivity(goToSettings);
            return true;

        case R.id.action_exit:

            this.finish();

            break;

        default:

        }
        return super.onOptionsItemSelected(item);
    }

    private void referenceXML() {

        //username = (EditText) findViewById(R.id.etUsername);

    }

    public boolean checkSession() {

        SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        String sesh = SP.getString("session", "null");

        if (sesh.equals("null")) {
            return false;
        } else {
            return true;
        }
    }

    private void logPrefSession() {
        SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        String sesh = SP.getString("session", "NA");
        Log.i(TAG, "Preference session is:" + sesh);
    }

    private void logProviderSession() {
        Log.i(TAG, "Provider session is:");
    }
}