From 46a68ee40ddcb3aec63791a8a0f9f279814638fa Mon Sep 17 00:00:00 2001 From: Fil Date: Tue, 7 Mar 2017 23:14:00 +0100 Subject: Removed bin directory, renamed root directory --- project/src/fil/libre/repwifiapp/Commons.java | 156 -------- .../repwifiapp/activities/CreditsActivity.java | 56 --- .../activities/InputPasswordActivity.java | 112 ------ .../repwifiapp/activities/LongTaskActivity.java | 174 --------- .../libre/repwifiapp/activities/MainActivity.java | 378 -------------------- .../activities/NetworkDetailsActivity.java | 145 -------- .../activities/SelectNetworkActivity.java | 222 ------------ .../repwifiapp/activities/ShowStatusActivity.java | 131 ------- .../libre/repwifiapp/helpers/AccessPointInfo.java | 196 ---------- .../libre/repwifiapp/helpers/ConnectionStatus.java | 106 ------ .../src/fil/libre/repwifiapp/helpers/Engine.java | 397 --------------------- .../fil/libre/repwifiapp/helpers/Engine4p2.java | 131 ------- .../fil/libre/repwifiapp/helpers/Engine6p0.java | 360 ------------------- .../src/fil/libre/repwifiapp/helpers/IEngine.java | 41 --- .../libre/repwifiapp/helpers/NetworkButton.java | 41 --- .../libre/repwifiapp/helpers/NetworkManager.java | 288 --------------- .../fil/libre/repwifiapp/helpers/RootCommand.java | 109 ------ .../src/fil/libre/repwifiapp/helpers/Utils.java | 205 ----------- 18 files changed, 3248 deletions(-) delete mode 100644 project/src/fil/libre/repwifiapp/Commons.java delete mode 100644 project/src/fil/libre/repwifiapp/activities/CreditsActivity.java delete mode 100644 project/src/fil/libre/repwifiapp/activities/InputPasswordActivity.java delete mode 100644 project/src/fil/libre/repwifiapp/activities/LongTaskActivity.java delete mode 100644 project/src/fil/libre/repwifiapp/activities/MainActivity.java delete mode 100644 project/src/fil/libre/repwifiapp/activities/NetworkDetailsActivity.java delete mode 100644 project/src/fil/libre/repwifiapp/activities/SelectNetworkActivity.java delete mode 100644 project/src/fil/libre/repwifiapp/activities/ShowStatusActivity.java delete mode 100644 project/src/fil/libre/repwifiapp/helpers/AccessPointInfo.java delete mode 100644 project/src/fil/libre/repwifiapp/helpers/ConnectionStatus.java delete mode 100644 project/src/fil/libre/repwifiapp/helpers/Engine.java delete mode 100644 project/src/fil/libre/repwifiapp/helpers/Engine4p2.java delete mode 100644 project/src/fil/libre/repwifiapp/helpers/Engine6p0.java delete mode 100644 project/src/fil/libre/repwifiapp/helpers/IEngine.java delete mode 100644 project/src/fil/libre/repwifiapp/helpers/NetworkButton.java delete mode 100644 project/src/fil/libre/repwifiapp/helpers/NetworkManager.java delete mode 100644 project/src/fil/libre/repwifiapp/helpers/RootCommand.java delete mode 100644 project/src/fil/libre/repwifiapp/helpers/Utils.java (limited to 'project/src') diff --git a/project/src/fil/libre/repwifiapp/Commons.java b/project/src/fil/libre/repwifiapp/Commons.java deleted file mode 100644 index dcf8893..0000000 --- a/project/src/fil/libre/repwifiapp/Commons.java +++ /dev/null @@ -1,156 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp; - -import java.io.File; - -import fil.libre.repwifiapp.helpers.Engine4p2; -import fil.libre.repwifiapp.helpers.Engine6p0; -import fil.libre.repwifiapp.helpers.IEngine; -import fil.libre.repwifiapp.helpers.NetworkManager; - - - -public abstract class Commons { - - - //------------- Enviromnet Constants ---------------------------------------- - public static final String v4p2 = "4.2"; - public static final String v6p0 = "6.0"; - public static final String SCAN_FILE_HDR = "bssid / frequency / signal level / flags / ssid"; - public static final String INTERFACE_NAME="wlan0"; - public static final String WORKDIR = "/data/misc/wifi"; - public static final String PID_FILE = WORKDIR + "/pidfile"; - public static final String SOCKET_DIR = WORKDIR + "/sockets/"; - public static final String SOFTAP_FILE = WORKDIR + "/softap.conf"; - public static final String P2P_CONF = WORKDIR + "/p2p_supplicant.conf"; - public static final String WPA_CONF = WORKDIR + "/wpa_supplicant.conf"; - public static final String ENTROPY_FILE = WORKDIR + "/entropy.bin"; - public static final String OVERLAY_FILE = "/system/etc/wifi/wpa_supplicant_overlay.conf"; - //------------------------------------------------------------------------------ - - //------------- Shared Engines ----------------------- - public static IEngine connectionEngine = null; - public static NetworkManager storage = null; - //---------------------------------------------------- - - - //------------- Shared Resources --------------------- - public static int colorThemeDark; - public static int colorThemeLight; - public static int colorBlack; - //---------------------------------------------------- - - //------------- Activity Interaction ----------------- - public static final String EXTRA_APINFO = "ExAPInfo"; - public static final String EXTRA_APINFO_ARR = "ExAPInfoArr"; - public static final String EXTRA_CONSTATUS = "ExConSts"; - public static final String EXTRA_BOOLEAN = "ExBool"; - public static final String EXTRA_REQCODE = "ExReqCode"; - public static final String EXTRA_RESCAN = "ExRescan"; - public static final String EXTRA_DELETE = "ExDelete"; - - public class RequestCode{ - public static final int NONE = 0; - public static final int SELECT_CONN = 1; - public static final int PASS_INPUT = 2; - public static final int STATUS_SHOW = 3; - public static final int STATUS_GET = 4; - public static final int CONNECT = 5; - public static final int NETWORKS_GET = 6; - public static final int SELECT_DETAILS = 7; - public static final int DETAILS_SHOW = 8; - public static final int NETWORK_DELETE = 9; - } - //---------------------------------------------------- - - - //----------------- Application Files -------------------- - private static String APP_DATA_FOLDER; - public static void setAppDataFolder(String path){ - File f = new File(path); - if (f.exists()){ - APP_DATA_FOLDER = path; - } - } - public static String getNetworkStorageFile(){ - if (APP_DATA_FOLDER == null){ - return null; - }else{ - return APP_DATA_FOLDER + "/repwifi_storage.conf"; - } - } - public static String getScriptScan(){ - return APP_DATA_FOLDER + "/scan.sh"; - } - public static String getScriptScanRes(){ - return APP_DATA_FOLDER + "/get_scan_results.sh"; - } - public static String getScriptDhcpcd(){ - return APP_DATA_FOLDER + "/run_dhcpcd.sh"; - } - public static String getScanFile(){ - return APP_DATA_FOLDER + "/scanres.txt"; - } - public static String getStatusFile(){ - return APP_DATA_FOLDER + "/tmpStatus"; - } - public static String getGwFile(){ - return APP_DATA_FOLDER + "/gw.txt"; - } - public static String getTempOutFile(){ - return APP_DATA_FOLDER + "/tmpout.txt"; - } - //-------------------------------------------------------- - - - //----------- Initialization methods --------------------------- - public static void initObjects()throws Exception{ - - initEngine(); - initNetworkStorage(); - } - - private static void initEngine() throws Exception{ - - String vers = android.os.Build.VERSION.RELEASE; - - if (vers.startsWith(Commons.v4p2)){ - Commons.connectionEngine = new Engine4p2(); - } - else if(vers.startsWith(Commons.v6p0)){ - Commons.connectionEngine = new Engine6p0(); - } - else{ - throw new Exception("System version not recognized!"); - } - - } - - private static void initNetworkStorage() throws Exception{ - - Commons.storage = new NetworkManager(getNetworkStorageFile()); - - } - //-------------------------------------------------------------- - - -} diff --git a/project/src/fil/libre/repwifiapp/activities/CreditsActivity.java b/project/src/fil/libre/repwifiapp/activities/CreditsActivity.java deleted file mode 100644 index 4a0cb4c..0000000 --- a/project/src/fil/libre/repwifiapp/activities/CreditsActivity.java +++ /dev/null @@ -1,56 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.activities; - -import fil.libre.repwifiapp.R; - -import android.os.Bundle; -import android.app.Activity; -import android.text.Html; -import android.text.method.LinkMovementMethod; -import android.text.method.ScrollingMovementMethod; -import android.view.Menu; -import android.widget.TextView; - -public class CreditsActivity extends Activity { - - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_credits); - - String content = getResources().getString(R.string.credit_text); - TextView tv = (TextView)findViewById(R.id.txt_credits); - tv.setMovementMethod(new ScrollingMovementMethod()); - tv.setText(Html.fromHtml(content)); - tv.setMovementMethod(LinkMovementMethod.getInstance()); - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - //getMenuInflater().inflate(R.menu.activity_credits, menu); - return true; - } - -} diff --git a/project/src/fil/libre/repwifiapp/activities/InputPasswordActivity.java b/project/src/fil/libre/repwifiapp/activities/InputPasswordActivity.java deleted file mode 100644 index e46d7d9..0000000 --- a/project/src/fil/libre/repwifiapp/activities/InputPasswordActivity.java +++ /dev/null @@ -1,112 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.activities; - - -import fil.libre.repwifiapp.Commons; -import fil.libre.repwifiapp.R; -import fil.libre.repwifiapp.helpers.AccessPointInfo; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.text.InputType; -import android.view.Menu; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.CompoundButton.OnCheckedChangeListener; -import android.widget.EditText; -import android.widget.TextView; - - -public class InputPasswordActivity extends Activity implements OnCheckedChangeListener{ - - AccessPointInfo apinfo = null; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - setContentView(R.layout.activity_input_password); - - CheckBox c = (CheckBox)findViewById(R.id.chk_show_pass); - c.setOnCheckedChangeListener(this); - - setTitle("Input password"); - - TextView v = (TextView)findViewById(R.id.txt_insert_pass); - - //get the network to set password to: - this.apinfo = (AccessPointInfo)getIntent().getSerializableExtra(Commons.EXTRA_APINFO); - v.append(" " + apinfo.getSSID()); - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - //super.onCreateOptionsMenu(menu); - //getMenuInflater().inflate(R.menu.activity_input_password, menu); - return true; - } - - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - - if(buttonView == findViewById(R.id.chk_show_pass)){ - chkShowPassChanged(); - } - } - - public void onBtnNextClick(View v){ - - EditText txpass = (EditText)findViewById(R.id.txt_password); - String pass = txpass.getText().toString(); - if (pass.length()>0){ - - this.apinfo.setPassword(pass); - - Intent intent = new Intent(); - intent.putExtra(Commons.EXTRA_APINFO, this.apinfo); - setResult(RESULT_OK, intent); - finish(); - - } - - - } - - public void chkShowPassChanged(){ - - CheckBox c = (CheckBox)findViewById(R.id.chk_show_pass); - EditText txtPass = (EditText)findViewById(R.id.txt_password); - - if (c.isChecked()){ - txtPass.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); - txtPass.setSelection(txtPass.getText().length()); - }else{ - txtPass.setInputType(129); - txtPass.setSelection(txtPass.getText().length()); - } - - } - -} diff --git a/project/src/fil/libre/repwifiapp/activities/LongTaskActivity.java b/project/src/fil/libre/repwifiapp/activities/LongTaskActivity.java deleted file mode 100644 index a9f010a..0000000 --- a/project/src/fil/libre/repwifiapp/activities/LongTaskActivity.java +++ /dev/null @@ -1,174 +0,0 @@ -package fil.libre.repwifiapp.activities; - - -import fil.libre.repwifiapp.Commons; -import fil.libre.repwifiapp.R; -import fil.libre.repwifiapp.helpers.AccessPointInfo; -import fil.libre.repwifiapp.helpers.ConnectionStatus; -import fil.libre.repwifiapp.helpers.Utils; - -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.Menu; -import android.widget.TextView; -import android.app.Activity; -import android.content.Intent; - -public class LongTaskActivity extends Activity { - - - private class Task extends AsyncTask{ - - private int REQ_CODE; - - public Task(int reqCode, Object input){ - this.REQ_CODE = reqCode; - } - - @Override - protected Object doInBackground(Object... params) { - - Object ret = null; - - switch (this.REQ_CODE){ - - case Commons.RequestCode.CONNECT: - - ret = Commons.connectionEngine.connect((AccessPointInfo)params[0]); - break; - - case Commons.RequestCode.NETWORKS_GET: - - ret = Commons.connectionEngine.getAvailableNetworks(); - break; - - case Commons.RequestCode.STATUS_GET: - - ret = Commons.connectionEngine.getConnectionStatus(); - break; - - default: - - break; - - } - - return ret; - - } - - protected void onPostExecute(Object result) { - taskCompleted(result, this.REQ_CODE); - } - - } - - private AccessPointInfo currentNetwork = null; - - @Override - public void onCreate(Bundle savedInstanceState){ - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_long_task); - - startTask(); - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu){ - return true; - } - - private void startTask() { - - //retrieve the request code: - Intent intent = getIntent(); - if (! intent.hasExtra(Commons.EXTRA_REQCODE)){ - this.setResult(RESULT_CANCELED); - finish(); - } - - Object input = null; - int reqCode = intent.getExtras().getInt(Commons.EXTRA_REQCODE); - - switch (reqCode) { - - case Commons.RequestCode.CONNECT: - setTitle("Connecting..."); - setMessage("Connecting..."); - //Extract AccessPointInfo - input = intent.getExtras().getSerializable(Commons.EXTRA_APINFO); - currentNetwork = (AccessPointInfo)input; - break; - - case Commons.RequestCode.NETWORKS_GET: - setTitle("Scanning..."); - setMessage("Scanning for Networks..."); - - case Commons.RequestCode.STATUS_GET: - setTitle("Checking status..."); - setMessage("Checking status..."); - - default: - setTitle("Please wait..."); - setMessage("Please wait..."); - break; - } - - Task task = new Task(reqCode, input); - task.execute(input); - - } - - private void taskCompleted(Object result, int reqCode){ - - Utils.logDebug("Finished long task reqCode: "+ reqCode,1); - - //Return to caller: - Intent intent = this.getIntent(); - - - switch (reqCode){ - - case Commons.RequestCode.CONNECT: - - intent.putExtra(Commons.EXTRA_BOOLEAN, (Boolean)result); - intent.putExtra(Commons.EXTRA_APINFO, this.currentNetwork); - break; - - case Commons.RequestCode.NETWORKS_GET: - - intent.putExtra(Commons.EXTRA_APINFO_ARR, (AccessPointInfo[])result); - break; - - case Commons.RequestCode.STATUS_GET: - - intent.putExtra(Commons.EXTRA_CONSTATUS, (ConnectionStatus)result); - break; - - default: - - Utils.logDebug("Task terminating in null: ",1); - break; - - } - - this.setResult(RESULT_OK, intent); - finish(); - - } - - - private void setMessage(String msg) { - TextView txt = (TextView)findViewById(R.id.txt_msg); - txt.setText(msg); - } - - @Override - public void onBackPressed() { - //suppress - } - - - -} diff --git a/project/src/fil/libre/repwifiapp/activities/MainActivity.java b/project/src/fil/libre/repwifiapp/activities/MainActivity.java deleted file mode 100644 index aa92767..0000000 --- a/project/src/fil/libre/repwifiapp/activities/MainActivity.java +++ /dev/null @@ -1,378 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.activities; - - - - - -import java.io.IOException; - -import fil.libre.repwifiapp.Commons; -import fil.libre.repwifiapp.R; -import fil.libre.repwifiapp.Commons.RequestCode; -import fil.libre.repwifiapp.helpers.AccessPointInfo; -import fil.libre.repwifiapp.helpers.ConnectionStatus; -import fil.libre.repwifiapp.helpers.NetworkManager; -import fil.libre.repwifiapp.helpers.RootCommand; -import fil.libre.repwifiapp.helpers.Utils; - -import android.os.Bundle; -import android.app.Activity; -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.ImageView; -import android.widget.Toast; - -public class MainActivity extends Activity{ - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - setImage(); - setupSharedResources(); - - RootCommand su = new RootCommand(null); - try { - su.execute(); - } catch (Exception e) { - Utils.logError("Error while trying to get first Super User access. Aborting.",e); - finish(); - } - - try { - Commons.initObjects(); - } catch (Exception e) { - Utils.logError("Error on creating engine. Aborting.",e); - finish(); - } - - - checkConnectionStatus(); - - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.activity_main, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle item selection - switch (item.getItemId()) { - case R.id.menu_credits: - launchCreditsActivity(); - return true; - - default: - return true; - } - } - - @Override - public void onRestart(){ - super.onRestart(); - - ConnectionStatus status = Commons.connectionEngine.getConnectionStatus(); - if (status != null && status.isConnected()){ - launchStatusActivity(status); - } - - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent intent){ - - Utils.logDebug("Main onActivityResult(): ",1); - - if (intent == null){ - return; - } - - if (resultCode != RESULT_OK){ - return; - } - - AccessPointInfo i = null; - if (intent.hasExtra(Commons.EXTRA_APINFO)){ - i = (AccessPointInfo)intent.getExtras().getSerializable(Commons.EXTRA_APINFO); - } - - switch (requestCode) { - - case RequestCode.PASS_INPUT: - handleResultSetPass(i); - break; - - case RequestCode.SELECT_CONN: - boolean rescan = (boolean)intent.getExtras().getBoolean(Commons.EXTRA_RESCAN); - handleResultSelect(i, rescan); - break; - - case RequestCode.CONNECT: - boolean conres = intent.getExtras().getBoolean(Commons.EXTRA_BOOLEAN); - handleFinishedConnecting(conres, i); - break; - - case RequestCode.STATUS_GET: - ConnectionStatus status = (ConnectionStatus)intent.getExtras().getSerializable(Commons.EXTRA_CONSTATUS); - handleResultGetStatus(status); - break; - - case RequestCode.NETWORKS_GET: - AccessPointInfo[] nets = (AccessPointInfo[])intent.getExtras().getSerializable(Commons.EXTRA_APINFO_ARR); - launchSelectActivity(nets, true); - - case RequestCode.STATUS_SHOW: - //do nothing - break; - - case RequestCode.SELECT_DETAILS: - launchDetailsActivity(i); - break; - - case RequestCode.DETAILS_SHOW: - boolean del = intent.getExtras().getBoolean(Commons.EXTRA_DELETE); - if (del){ deleteNetwork(i); } - break; - - default: - - break; - - } - - - } - - private void setImage(){ - - ImageView img = (ImageView)findViewById(R.id.img_logo); - - try { - Drawable d = Drawable.createFromStream(getAssets().open("repwifi-logo-0.png"),null); - img.setImageDrawable(d); - } catch (IOException e) { - Utils.logError("Error while loading logo image",e); - } - - } - - private void setupSharedResources(){ - Commons.colorThemeDark = getResources().getColor(R.color.ThemeDark); - Commons.colorThemeLight = getResources().getColor(R.color.ThemeLight); - Commons.colorBlack = getResources().getColor(R.color.black); - Commons.setAppDataFolder(getExternalFilesDir(null).getAbsolutePath()); - } - - private void handleResultSelect(AccessPointInfo i, boolean rescan){ - - if (rescan){ - - doScan(); - - }else if (i != null){ - - if (i.needsPassword()){ - - //try to fetch network's password from storage - AccessPointInfo fromStorage = Commons.storage.getSavedNetwork(i); - if (fromStorage == null){ - - launchPasswordActivity(i); - return; - - }else{ - //use fetched network - i = fromStorage; - } - - } - - connectToNetwork(i); - } - - } - - private void handleResultSetPass(AccessPointInfo i){ - connectToNetwork(i); - } - - private void handleResultGetStatus(ConnectionStatus status){ - if (status != null && status.isConnected()){ - launchStatusActivity(status); - } - } - - private void handleFinishedConnecting(boolean connectionResult, AccessPointInfo info){ - - if(connectionResult && info.needsPassword()){ - - //Save network - if (Commons.storage.save(info)){ - Toast toast2 = Toast.makeText(getApplicationContext(), "Network Saved!",Toast.LENGTH_LONG); - toast2.show(); - - }else { - Toast toast2 = Toast.makeText(getApplicationContext(), "FAILED to save network!",Toast.LENGTH_LONG); - toast2.show(); - } - - checkConnectionStatus(); - - }else{ - //alert that connection failed - Toast toast = Toast.makeText(getApplicationContext(), "FAILED to connect!", Toast.LENGTH_LONG); - toast.show(); - } - } - - private void launchPasswordActivity(AccessPointInfo info){ - - Intent intent = new Intent(); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - intent.setClass(getApplicationContext(), InputPasswordActivity.class); - intent.putExtra(Commons.EXTRA_APINFO, info); - - startActivityForResult(intent, RequestCode.PASS_INPUT); - - } - - private void launchStatusActivity(ConnectionStatus status){ - - Intent intent = new Intent(); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - intent.putExtra(Commons.EXTRA_CONSTATUS, status); - intent.setClass(getApplicationContext(), ShowStatusActivity.class); - startActivityForResult(intent, RequestCode.STATUS_SHOW); - - } - - private void launchSelectActivity(AccessPointInfo[] nets,boolean forConnection){ - - Intent intent = new Intent(this, SelectNetworkActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - intent.putExtra(Commons.EXTRA_APINFO_ARR, nets); - - if (forConnection){ - intent.putExtra(Commons.EXTRA_REQCODE, RequestCode.SELECT_CONN); - startActivityForResult(intent, RequestCode.SELECT_CONN); - } - else{ - intent.putExtra(Commons.EXTRA_REQCODE, RequestCode.SELECT_DETAILS); - startActivityForResult(intent, RequestCode.SELECT_DETAILS); - } - - } - - private void launchDetailsActivity(AccessPointInfo info){ - - Intent intent = new Intent(this, NetworkDetailsActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - intent.putExtra(Commons.EXTRA_APINFO, info); - startActivityForResult(intent, RequestCode.DETAILS_SHOW); - - } - - private void launchCreditsActivity(){ - - Intent intent = new Intent(this, CreditsActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - startActivityForResult(intent, RequestCode.NONE); - - } - - private void deleteNetwork(AccessPointInfo info){ - - NetworkManager manager = new NetworkManager(Commons.getNetworkStorageFile()); - String msg = ""; - if (manager.remove(info)){ - msg = "Network info deleted!"; - }else{ - msg = "FAILED to delete network info!"; - } - - Toast toast = Toast.makeText(this, msg, Toast.LENGTH_LONG); - toast.show(); - - } - - private void connectToNetwork(AccessPointInfo info){ - - Intent intent = new Intent(this, LongTaskActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - intent.putExtra(Commons.EXTRA_REQCODE, RequestCode.CONNECT); - intent.putExtra(Commons.EXTRA_APINFO, info); - startActivityForResult(intent, RequestCode.CONNECT); - - } - - private void checkConnectionStatus(){ - - Intent intent = new Intent(this, LongTaskActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - intent.putExtra(Commons.EXTRA_REQCODE, RequestCode.STATUS_GET); - startActivityForResult(intent, RequestCode.STATUS_GET); - - } - - private void doScan(){ - - Intent intent = new Intent(this, LongTaskActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - intent.putExtra(Commons.EXTRA_REQCODE, RequestCode.NETWORKS_GET); - startActivityForResult(intent, RequestCode.NETWORKS_GET); - - } - - public void btnScanClick(View v){ - - doScan(); - - } - - public void btnManageClick(View v){ - - NetworkManager manager = new NetworkManager(Commons.getNetworkStorageFile()); - AccessPointInfo[] infos = manager.getKnownNetworks(); - - if (infos == null || infos.length == 0){ - Toast toast = Toast.makeText(this, "No saved network", Toast.LENGTH_LONG); - toast.show(); - } - else{ - launchSelectActivity(infos, false); - } - - } - -} diff --git a/project/src/fil/libre/repwifiapp/activities/NetworkDetailsActivity.java b/project/src/fil/libre/repwifiapp/activities/NetworkDetailsActivity.java deleted file mode 100644 index e43eee2..0000000 --- a/project/src/fil/libre/repwifiapp/activities/NetworkDetailsActivity.java +++ /dev/null @@ -1,145 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.activities; - -import java.util.Date; - - -import fil.libre.repwifiapp.Commons; -import fil.libre.repwifiapp.R; -import fil.libre.repwifiapp.helpers.AccessPointInfo; - -import android.os.Bundle; -import android.app.Activity; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.format.DateFormat; -import android.view.Menu; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.TextView; -import android.widget.CompoundButton.OnCheckedChangeListener; - -public class NetworkDetailsActivity extends Activity implements OnCheckedChangeListener { - - private AccessPointInfo currentNetwor; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_network_details); - - CheckBox c = (CheckBox)findViewById(R.id.chk_show_pass_details); - c.setOnCheckedChangeListener(this); - - Intent intent = getIntent(); - if (! intent.hasExtra(Commons.EXTRA_APINFO)){ - this.setResult(RESULT_CANCELED); - this.finish(); - return; - } - - this.currentNetwor = (AccessPointInfo)intent.getExtras().getSerializable(Commons.EXTRA_APINFO); - if (this.currentNetwor == null){ - this.setResult(RESULT_CANCELED); - this.finish(); - return; - } - - loadNetwork(false); - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - //getMenuInflater().inflate(R.menu.activity_manage_networks, menu); - return true; - } - - private void loadNetwork(boolean showPassword){ - - setTitle(this.currentNetwor.getSSID()); - - TextView v = (TextView)findViewById(R.id.txt_net_details); - v.setText("SSID: " + this.currentNetwor.getSSID()); - v.append("\nBSSID: " + this.currentNetwor.getBSSID()); - - long lastused = this.currentNetwor.getLastTimeUsed(); - if (lastused > 0){ - Date ts = new Date(lastused); - String formstring = "dd-MMM-yyyy kk:mm:ss"; - v.append("\nLast Used: " + DateFormat.format(formstring, ts)); - } - - if (showPassword){ - v.append("\n\nPassword:\n" + this.currentNetwor.getPassword()); - }else{ - v.append("\n\n\n"); - } - - } - - public void btnDeleteClick(View v){ - - - AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); - dlgAlert.setMessage("Are you sure you want to delete this network?"); - dlgAlert.setPositiveButton("Yes",new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - returnResult(true); - } - }); - dlgAlert.setNegativeButton("NO",new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - //nothing - } - }); - - dlgAlert.setCancelable(true); - dlgAlert.create().show(); - - } - - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - - if (buttonView == findViewById(R.id.chk_show_pass_details)){ - loadNetwork(isChecked); - } - - } - - private void returnResult(boolean delete){ - - Intent i = new Intent(); - i.putExtra(Commons.EXTRA_DELETE, delete); - i.putExtra(Commons.EXTRA_APINFO, this.currentNetwor); - this.setResult(RESULT_OK,i); - finish(); - - } - - - -} diff --git a/project/src/fil/libre/repwifiapp/activities/SelectNetworkActivity.java b/project/src/fil/libre/repwifiapp/activities/SelectNetworkActivity.java deleted file mode 100644 index 275ce08..0000000 --- a/project/src/fil/libre/repwifiapp/activities/SelectNetworkActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.activities; - - - - -import fil.libre.repwifiapp.Commons; -import fil.libre.repwifiapp.R; -import fil.libre.repwifiapp.helpers.AccessPointInfo; -import fil.libre.repwifiapp.helpers.NetworkButton; -import fil.libre.repwifiapp.helpers.Utils; - -import android.os.Bundle; -import android.app.Activity; -import android.content.Intent; -import android.view.Gravity; -import android.view.Menu; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup.LayoutParams; -import android.widget.Button; -import android.widget.TableLayout; -import android.widget.TableRow; -import android.widget.TextView; - -public class SelectNetworkActivity extends Activity implements OnClickListener { - - private AccessPointInfo[] aps; - - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_select_network); - - setTitle("Select network"); - - getNetworks(); - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - //getMenuInflater().inflate(R.menu.activity_select_network, menu); - return true; - } - - private void writeOut(String msg) { - - TextView v = (TextView)findViewById(R.id.txt_selnets); - v.setText(msg); - - } - - private void getNetworks(){ - - Intent intent = getIntent(); - if(! intent.hasExtra(Commons.EXTRA_APINFO_ARR)){ - this.setResult(RESULT_CANCELED); - finish(); - return; - } - AccessPointInfo[] nets = (AccessPointInfo[])intent.getExtras().getSerializable(Commons.EXTRA_APINFO_ARR); - if (nets == null){ - this.setResult(RESULT_CANCELED); - finish(); - return; - } - - int reqCode = intent.getExtras().getInt(Commons.EXTRA_REQCODE); - - this.aps = nets; - - if (reqCode == Commons.RequestCode.SELECT_CONN){ - showNetworksForConnection(nets); - } - else{ - showNetworksForManagement(nets); - } - - } - - public void btnScanClick(View v){ - returnResults(null, true); - } - - @Override - public void onClick(View v) { - - if (v instanceof NetworkButton){ - networkNameClick((NetworkButton)v); - } - - } - - public void networkNameClick(NetworkButton b){ - - for(AccessPointInfo i : this.aps){ - - if (i.getBSSID().equals(b.getNetworkBSSID())){ - - returnResults(i,false); - - } - - } - } - - private void returnResults(AccessPointInfo i, boolean rescan){ - - Intent intent = new Intent(); - intent.putExtra(Commons.EXTRA_APINFO, i); - intent.putExtra(Commons.EXTRA_RESCAN, rescan); - setResult(RESULT_OK, intent); - finish(); - - } - - private void showNetworksForConnection(AccessPointInfo[] info) { - - if (info == null){ - Utils.logError("Unable to retrieve network list!"); - writeOut("Unable to retrieve network list!"); - return; - } - - if (info.length == 0){ - writeOut("No network found."); - toggleBtnRescan(true); - return; - } - - writeOut("Select the network you want to connect to:"); - toggleBtnRescan(false); - - for (AccessPointInfo i : info){ - - addButtonForNetwork(i); - - } - - } - - private void showNetworksForManagement(AccessPointInfo[] info){ - - if (info == null || info.length == 0){ - return; - } - - writeOut("Select network info to manage:"); - toggleBtnRescan(false); - - for (AccessPointInfo i : info){ - - addButtonForNetwork(i); - - } - - } - - private void toggleBtnRescan(boolean enable) { - - Button b = (Button)findViewById(R.id.btn_rescan); - if (enable){ - b.setVisibility(View.VISIBLE); - } - else{ - b.setVisibility(View.INVISIBLE); - } - } - - private void addButtonForNetwork(AccessPointInfo info){ - - TableLayout s = (TableLayout)findViewById(R.id.table_networks); - TableLayout.LayoutParams tableParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT); - TableRow row = new TableRow(this); - TableRow.LayoutParams rowParams = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - rowParams.gravity = Gravity.FILL_HORIZONTAL; - row.setPadding(10, 10, 10, 10); - row.setLayoutParams(rowParams); - row.setGravity(Gravity.FILL_HORIZONTAL); - row.setLayoutParams(rowParams); - - NetworkButton button = new NetworkButton(this, info.getBSSID()); - - TableRow.LayoutParams params = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - button.setLayoutParams(params); - button.setBackgroundColor(Commons.colorThemeDark); - button.setTextColor(Commons.colorThemeLight); - button.setTextSize(20); - button.setPadding(10, 10, 10, 10); - button.setGravity(Gravity.CENTER_HORIZONTAL); - button.setText(info.getSSID()); - button.setOnClickListener(this); - - row.addView(button,params); - s.addView(row,tableParams); - s.setGravity(Gravity.FILL_HORIZONTAL); - - } - -} diff --git a/project/src/fil/libre/repwifiapp/activities/ShowStatusActivity.java b/project/src/fil/libre/repwifiapp/activities/ShowStatusActivity.java deleted file mode 100644 index 2674737..0000000 --- a/project/src/fil/libre/repwifiapp/activities/ShowStatusActivity.java +++ /dev/null @@ -1,131 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - - - -package fil.libre.repwifiapp.activities; - - -import fil.libre.repwifiapp.Commons; -import fil.libre.repwifiapp.R; -import fil.libre.repwifiapp.helpers.ConnectionStatus; -import fil.libre.repwifiapp.helpers.Utils; - -import android.os.Bundle; -import android.app.Activity; -import android.view.Menu; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; -import android.widget.Toast; - -public class ShowStatusActivity extends Activity { - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_show_status); - showStatus(); - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - //getMenuInflater().inflate(R.menu.activity_show_status, menu); - return true; - } - - @Override - public void onRestart(){ - super.onRestart(); - showStatus(); - } - - private void setMessage(String msg){ - TextView view = (TextView)findViewById(R.id.txt_status); - view.setText(msg); - } - - private void showStatus(){ - - ConnectionStatus status = Commons.connectionEngine.getConnectionStatus(); - if (status == null){ - this.finish(); - - }else if (status.isConnected()){ - Utils.logDebug("StatusActivity isConnected,showing buttons"); - setMessage("Connected to " + status.SSID + "\n\n" + "IP Address: " + status.IP + "\n"); - toggleBtnDisconnect(true); - - - }else{ - Utils.logDebug("StatusActivity status Else"); - setMessage("Status:\n" + status.status); - toggleBtnDisconnect(false); - - } - } - - private void toggleBtnDisconnect(boolean enable){ - - Button b = (Button)findViewById(R.id.btn_disconnect); - Button bk = (Button)findViewById(R.id.btn_back); - b.setEnabled(enable); - bk.setEnabled(! enable); - - if (enable){ - b.setVisibility(View.VISIBLE); - bk.setVisibility(View.INVISIBLE); - }else{ - b.setVisibility(View.INVISIBLE); - bk.setVisibility(View.VISIBLE); - } - - } - - public void onBtnDisconnectClick(View v){ - - boolean res = Commons.connectionEngine.disconnect(); - String msg = ""; - if (res){ - msg = "Disconnected."; - } - else{ - msg = "FAILED to disconnect!"; - } - - Toast toast = Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT); - toast.show(); - - showStatus(); - - } - - public void onBtnMainClick(View v){ - finish(); - } - - @Override - public void onBackPressed() { - moveTaskToBack(true); - } - -} diff --git a/project/src/fil/libre/repwifiapp/helpers/AccessPointInfo.java b/project/src/fil/libre/repwifiapp/helpers/AccessPointInfo.java deleted file mode 100644 index 65c8b24..0000000 --- a/project/src/fil/libre/repwifiapp/helpers/AccessPointInfo.java +++ /dev/null @@ -1,196 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.helpers; - -import java.io.File; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -import fil.libre.repwifiapp.Commons; - - -public class AccessPointInfo implements Serializable{ - - private static final long serialVersionUID = 1L; - - private String _ssid; - private String _bssid; - private String _auth; - private String _level; - private String _freq; - private String _password; - private long _lastTimeUsed; - - public AccessPointInfo(String ssid, String bssid, String authType, String level, String freq){ - - this._ssid = ssid; - this._bssid = bssid; - this._auth = authType; - this._level = level; - this._freq = freq; - - } - - public String getSSID(){ - return this._ssid; - } - - public String getBSSID(){ - return this._bssid; - } - - public String getAuthType(){ - return this._auth; - } - - public String getSignlalStrength(){ - return this._level; - } - - public String getFrequency(){ - return this._freq; - } - - public long getLastTimeUsed(){ - return this._lastTimeUsed; - } - - public void setLastTimeUsed(long timeStampInMillis){ - this._lastTimeUsed = timeStampInMillis; - } - - public boolean isOlderThan(int days){ - - if (this._lastTimeUsed == 0){ - return false; - } - - long timeDiff = System.currentTimeMillis() - this._lastTimeUsed; - long spanMillis = Utils.daysToMilliseconds(days); - - if (timeDiff > spanMillis){ - return true; - }else{ - return false; - } - - - } - - public String getPassword(){ - return this._password; - } - - public void setPassword(String password){ - this._password = password; - } - - public boolean needsPassword(){ - - if ( (this._auth == null) || (this._auth.equals("")) ){ - //TODO - //check if default behavior should be with or without password, - //when no auth info is available. - return false; - } - - if (this._auth.contains("WPA2") || this._auth.contains("WPA")){ - return true; - } - else { - return false; - } - - } - - protected static AccessPointInfo parseLine(String line){ - - try{ - - String[] params = line.split("\t"); - if (params.length != 5){ - return null; - } - - String bssid = params[0]; - String freq = params[1]; - String level = params[2]; - String auth = params[3]; - String ssid = params [4]; - - AccessPointInfo info = new AccessPointInfo(ssid, bssid, auth, level, freq); - return info; - - }catch (Exception e){ - Utils.logError("Error while parsing line: " + line, e); - return null; - } - - } - - public static AccessPointInfo[] parseScanResult(String scanResultFile){ - - try { - - File f = new File(scanResultFile); - if (! f.exists()){ - Utils.logError("AccessPointInfo.parseScanResult(): The provided scan result file doesn't exist"); - return null; - } - - String[] lines = Utils.readFileLines(Commons.getScanFile()); - List nets = new ArrayList(); - - for(String l : lines){ - if (l.startsWith(Commons.SCAN_FILE_HDR)){ - //strip off the header - continue; - } - - if (l.trim().equals("")){ - //empty line, skip. - continue; - } - - //try to parse line into network info - AccessPointInfo info = AccessPointInfo.parseLine(l); - if (info == null){ - Utils.logError("Failed to parse line into AccessPointInfo: " + l); - continue; - } - - nets.add(info); - - } - - AccessPointInfo[] a = new AccessPointInfo[nets.size()]; - a = nets.toArray(a); - return a; - - } catch (Exception e) { - Utils.logError("Error while parsing scan results in class AccessPointInfo",e); - return null; - } - - } - -} diff --git a/project/src/fil/libre/repwifiapp/helpers/ConnectionStatus.java b/project/src/fil/libre/repwifiapp/helpers/ConnectionStatus.java deleted file mode 100644 index f7cb8d7..0000000 --- a/project/src/fil/libre/repwifiapp/helpers/ConnectionStatus.java +++ /dev/null @@ -1,106 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.helpers; - -import java.io.Serializable; - -public class ConnectionStatus implements Serializable{ - - /** - * - */ - private static final long serialVersionUID = 1L; - public static final String STATUS_CONNECTED = "COMPLETED"; - public static final String STATUS_INACTIVE = "INACTIVE"; - public static final String STATUS_DISCONNECTED = "DISCONNECTED"; - public static final String STATUS_UNDEFINED = "UNDEFINED"; - - public String status; - public String SSID; - public String BSSID; - public String IP; - - private static final String F_SEP = "="; - private static final String KeyStatus = "wpa_state"; - private static final String KeySSID = "ssid"; - private static final String KeyBSSID = "bssid"; - private static final String KeyIP = "ip_address"; - - public static ConnectionStatus parseWpaCliOutput(String wpaCliOutput){ - - if (wpaCliOutput == null){ - return null; - } - - if (wpaCliOutput.trim().length() == 0){ - return null; - } - - String[] lines = wpaCliOutput.split("\n"); - - ConnectionStatus s = new ConnectionStatus(); - for(String line : lines){ - - if (line.trim().equals("")){ - continue; - } - - String[] fields = line.split(F_SEP); - if(fields.length < 2){ - continue; - } - - String key = fields[0]; - String val = fields[1]; - - if (key.equals(KeyBSSID)){ - s.BSSID = val; - } - else if (key.equals(KeySSID)){ - s.SSID = val; - } - else if (key.equals(KeyStatus)){ - s.status = val; - } - else if (key.equals(KeyIP)){ - s.IP = val; - } - - } - - return s; - - } - - public boolean isConnected(){ - - if (this.status == null){ - return false; - } - - if (this.status.equals(STATUS_CONNECTED)){ - return true; - }else{ - return false; - } - } - -} diff --git a/project/src/fil/libre/repwifiapp/helpers/Engine.java b/project/src/fil/libre/repwifiapp/helpers/Engine.java deleted file mode 100644 index cdddb0b..0000000 --- a/project/src/fil/libre/repwifiapp/helpers/Engine.java +++ /dev/null @@ -1,397 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.helpers; - -import fil.libre.repwifiapp.Commons; - - -public abstract class Engine implements IEngine{ - - protected String getCmdWpaSup(){ - return "wpa_supplicant -B -dd -i" + Commons.INTERFACE_NAME + " -C\"" +Commons.SOCKET_DIR + "\" -P\"" + Commons.PID_FILE + "\""; - } - - protected String getCmdWpaCli() { - return "wpa_cli -p" + Commons.SOCKET_DIR + " -P" + Commons.PID_FILE + " -i" + Commons.INTERFACE_NAME; - } - - protected abstract String getCmdWpaStart(); - - public static final String DNS1 = "193.183.98.154"; - public static final String DNS2 = "87.98.175.85"; - - public boolean deleteFileIfExists(String filePath){ - - if (filePath == null){ - return false; - } - - if (filePath.contains("*")){ - //it's safer to reject bulk rm'ing - return false; - } - - if (filePath.contains(" -r ")){ - //only file rm'ing acceppted - return false; - } - - return executeRootCmd("if [ -e \""+ filePath + "\" ]; then rm \"" + filePath + "\"; fi"); - } - - public boolean chmodFile(String filePath, String mod){ - return executeRootCmd("chmod " + mod + " \"" + filePath + "\""); - } - - @Override - public boolean killPreviousConnections() { - - Utils.logDebug("killing wpa_supplicant..:"); - if (executeRootCmd("killall -SIGINT wpa_supplicant")){ - Utils.logDebug("Killed wpa_supplicant"); - }else{ - Utils.logDebug("Wpa_supplicant NOT killed."); - } - - Utils.logDebug("killing dhcpcd.."); - if (executeRootCmd("killall -SIGINT dhcpcd")){ - Utils.logDebug("Killed dhcpcd"); - }else{ - Utils.logDebug("dhcpcd NOT killed."); - } - - - return true; - - } - - @Override - public boolean clearWorkingDir(){ - - Utils.logDebug("clearWorkingDir():"); - - if (executeRootCmd("rm -r " + Commons.SOCKET_DIR)){ - Utils.logDebug("removed socket dir"); - } - - if (executeRootCmd("rm " + Commons.ENTROPY_FILE)){ - Utils.logDebug("removed entropy file"); - } - - if (executeRootCmd("rm " + Commons.PID_FILE)){ - Utils.logDebug("removed pidfile"); - } - - if (executeRootCmd("rm " + Commons.SOFTAP_FILE)){ - Utils.logDebug("removed softap file"); - } - - if (executeRootCmd("rm " + Commons.WPA_CONF)){ - Utils.logDebug("removed wpa conf file"); - } - - if (executeRootCmd("rm " + Commons.P2P_CONF)){ - Utils.logDebug("removed p2p conf file"); - } - - - return true; - - } - - @Override - public boolean startWpaSupplicant(){ - - Utils.logDebug("startWpaSupplicant():"); - - if (executeRootCmd(getCmdWpaSup())){ - return true; - }else{ - Utils.logDebug("Failed to start wpa"); - return false; - } - - } - - @Override - public AccessPointInfo[] getAvailableNetworks(){ - - Utils.logDebug("getAvailableNetworks():"); - - killPreviousConnections(); - - if (! clearWorkingDir()){ - Utils.logError("Failed clearing dir"); - return null; - } - - if (! startWpaSupplicant()){ - Utils.logError("Failed starting wpa_supplicant"); - return null; - } - - if (! createScanScripts()){ - Utils.logError("Failed creating scripts"); - return null; - } - - if (! scanNetworks()){ - Utils.logError("failed scanning networks"); - return null; - } - - if (!getScanResults()){ - Utils.logError("failed getting scan results"); - return null; - } - - //chmod 666 scan_file to make it readable - if (!chmodFile(Commons.getScanFile(), "666")){ - Utils.logError("failed chmodding scan_file"); - return null; - } - - AccessPointInfo[] a = AccessPointInfo.parseScanResult(Commons.getScanFile()); - if (a == null){ - Utils.logError("Unable to parse scan file into AccessPointInfo array"); - } - - - return a; - - } - - @Override - public abstract boolean connect(AccessPointInfo info); - - @Override - public boolean disconnect(){ - - if (! isWpaSupplicantRunning()){ - return true; - } - - try { - - RootCommand su = new RootCommand(getCmdWpaCli() + " disconnect"); - if (su.execute() == 0){ - String out = su.getOutput(); - if (out != null && out.trim().replace("\n", "").equals("OK")){ - return true; - }else { - return false; - } - } - else{ - return false; - } - - } catch (Exception e) { - Utils.logError("Error while enabling network", e); - return false; - } - } - - /*** - * returns null if unable to determine connection status for any reason. - */ - @Override - public ConnectionStatus getConnectionStatus(){ - - Utils.logDebug("called getConnecitonStatus()"); - if (! isWpaSupplicantRunning()){ - //wpa_supplicant is not running. - //unable to determin status. - Utils.logDebug("wpa not running, cannot get connection status."); - return null; - - } - - try { - - RootCommand su = new RootCommand(getCmdWpaCli() + " status"); - if(su.execute() == 0){ - String out = su.getOutput(); - if (out == null || out.trim().equals("")){ - return null; - } - else { - return ConnectionStatus.parseWpaCliOutput(out); - } - } - else { - return null; - } - - } catch (Exception e) { - Utils.logError("Error while executing wpa_cli status", e); - return null; - } - - } - - public boolean runDhcpcd(){ - - return executeRootCmd("dhcpcd " + Commons.INTERFACE_NAME); - - } - - public boolean interfaceUp(){ - return executeRootCmd("ifconfig " + Commons.INTERFACE_NAME + " up"); - } - - protected boolean executeRootCmd(String cmd){ - - try { - - RootCommand c = new RootCommand(cmd); - if ( c.execute() == 0){ - return true; - }else { - return false; - } - - } catch (Exception e) { - Utils.logError("Error executing \"" + cmd + "\"",e); - return false; - } - } - - protected boolean isWpaSupplicantRunning(){ - - boolean retval = false; - - try { - - RootCommand su = new RootCommand("pidof wpa_supplicant"); - if (su.execute() == 0){ - - if (su.getOutput().trim().equals("")){ - retval = false; - }else{ - retval = true; - } - - }else { - retval = false; - } - - - } catch (Exception e) { - Utils.logError("Exception during isWpaSupplicantRunning()",e); - retval = false; - } - - return retval; - - } - - protected boolean scanNetworks(){ - - return executeRootCmd("bash " + Commons.getScriptScan()); - - } - - protected boolean getScanResults(){ - - return executeRootCmd("bash " + Commons.getScriptScanRes()); - - } - - protected boolean createScanScripts(){ - - try { - - String scan = getCmdWpaCli() + " scan\n" + - "if [ $? -ne 0 ]; then\n" + - "exit 1\n" + - "fi\n" + - "sleep 2s\n"; - - String scanRes = "if [ -e \"" + Commons.getScanFile() + "\" ]; then\n" + - " rm \"" + Commons.getScanFile() + "\"\n" + - "fi\n" + - getCmdWpaCli() + " scan_results > \""+ Commons.getScanFile() + "\"\n" + - "if [ $? -ne 0 ]; then\n" + - " exit 1\n" + - "fi\n" + - "sleep 1s\n"; - - - //Try to create and chmod script scan - /* executeRootCmd("echo > " + Commons.getSCRIPT_SCAN()); - chmodFile(Commons.getSCRIPT_SCAN(), "666");*/ - - - if (! Utils.writeFile(Commons.getScriptScan(),scan,true) ){ - - Exception e = Utils.getLastException(); - if (e != null){ - Utils.logError("Error while writing scan script.",e); - } - - return false; - } - - //Try to create and chmod script scanres - /*executeRootCmd("echo > " + Commons.getSCRIPT_SCANRES()); - chmodFile(Commons.getSCRIPT_SCANRES(), "666");*/ - - if (! Utils.writeFile(Commons.getScriptScanRes(),scanRes,true) ){ - - Exception e = Utils.getLastException(); - if (e != null){ - Utils.logError("Error while writing getScanResults script.",e); - } - - return false; - } - - - return true; - - } catch (Exception e) { - - Utils.logError("Error while creating the scanning script.",e); - return false; - } - - } - - /*protected boolean createDhcpcdScritp(){ - - String scriptDhcp = "dhcpcd "+ Commons.INTERFACE_NAME + "\n" + - "sleep 3s\n"; - - if (! Utils.writeFile(Commons.getScriptDhcpcd(),scriptDhcp,true) ){ - - Exception e = Utils.getLastException(); - if (e != null){ - Utils.logError("Error while writing dhcpcd script.",e); - } - - return false; - } - - return true; - - }*/ -} diff --git a/project/src/fil/libre/repwifiapp/helpers/Engine4p2.java b/project/src/fil/libre/repwifiapp/helpers/Engine4p2.java deleted file mode 100644 index 12d8da8..0000000 --- a/project/src/fil/libre/repwifiapp/helpers/Engine4p2.java +++ /dev/null @@ -1,131 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.helpers; - -import fil.libre.repwifiapp.Commons; - - -public class Engine4p2 extends Engine{ - - @Override - protected String getCmdWpaStart(){ - return "wpa_supplicant -B -dd -i" + Commons.INTERFACE_NAME + " -C\"" + Commons.SOCKET_DIR + "\" -c\"" + Commons.WPA_CONF + "\" -P\"" + Commons.PID_FILE + "\""; - } - - public boolean loadModules(){ - try { - //TODO - //implement kernel modules loading - return true; - } catch (Exception e) { - Utils.logError("Error while loading kernel modules",e); - return false; - } - } - - @Override - public boolean connect(AccessPointInfo info){ - - killPreviousConnections(); - - if (info == null){ - Utils.logDebug("Engine's connect() received a null AccessPointInfo"); - return false; - } - - if (! createConfigFile(info)){ - return false; - } - - //launch wpa_supplicant specifying our custom configuration and the socket file - if (! executeRootCmd(getCmdWpaStart())){ - Utils.logError("wpa_supplicant connection command failed."); - return false; - } - - //negotiate DHCP lease - if (!runDhcpcd()){ - return false; - } - - //set DNS's - if (! executeRootCmd("setprop net.dns1 " + DNS1)){ - Utils.logError("setting dns1 failed"); - return false; - } - - if (! executeRootCmd("setprop net.dns2 " + DNS2)){ - Utils.logError("setting dns2 failed"); - return false; - } - - //TODO - //implement wpa_cli command to query wpa_supplicant's state - //in order to confirm that connection was successful. - - return true; - - } - - private boolean createConfigFile(AccessPointInfo info){ - - try { - - if (! deleteFileIfExists(Commons.WPA_CONF)){ - Utils.logError("Unable to remove wpa_supplicant.conf before writing it."); - return false; - } - - String configText = "ctrl_interface=DIR=" + Commons.SOCKET_DIR + "\n" + - "update_config=1\n" + - "network={\n"+ - " ssid=\"" + info.getSSID() + "\"\n"; - - if (info.needsPassword()){ - configText += " psk=\""+ info.getPassword() + "\"\n"; - }else { - configText += " key_mgmt=NONE\n"; - } - - configText += "}\n"; - - if ( ! Utils.writeFile(Commons.WPA_CONF, configText, true) ){ - Utils.logError("Unable to write wpa_supplicant.conf file!"); - return false; - } - - //chmod wpa_supplicant.conf, in order to make it accessible - if(chmodFile(Commons.WPA_CONF, "666")){ - return true; - }else { - Utils.logError("Unable to chmod wpa_supplicant.conf"); - return false; - } - - } catch (Exception e) { - Utils.logError("Error while creating wpa_supplicant.conf",e); - return false; - } - - } - - -} diff --git a/project/src/fil/libre/repwifiapp/helpers/Engine6p0.java b/project/src/fil/libre/repwifiapp/helpers/Engine6p0.java deleted file mode 100644 index 24096d2..0000000 --- a/project/src/fil/libre/repwifiapp/helpers/Engine6p0.java +++ /dev/null @@ -1,360 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.helpers; - -import fil.libre.repwifiapp.Commons; - - -public class Engine6p0 extends Engine{ - - @Override - protected String getCmdWpaStart(){ - return "wpa_supplicant -B -dd -i" + Commons.INTERFACE_NAME + " -C" + Commons.SOCKET_DIR + " -P" + Commons.PID_FILE + " -I" + Commons.OVERLAY_FILE + " -e" + Commons.ENTROPY_FILE; - } - - @Override - public boolean connect(AccessPointInfo info){ - - killPreviousConnections(); - - if (info == null){ - Utils.logDebug("Engine's connect() received a null AccessPointInfo"); - return false; - } - - //clear any previously set network - if (! destroyNetwork()){ - Utils.logDebug("Unable to ndc destroy network"); - return false; - } - - //clear interface's ip - if (! clearAddrs()){ - Utils.logDebug("Unable to ndc clearaddrs"); - return false; - } - - //bring up interface - if(! interfaceUp()){ - Utils.logDebug("Unable to bring up interface."); - return false; - } - - //launch wpa_supplicant specifying our custom configuration and the socket file - if (! executeRootCmd(getCmdWpaStart())){ - Utils.logDebug("Unable to run wpa start"); - return false; - } - - //create new network and get network id - String netID = createNetworkGetId(); - if (netID == null){ - Utils.logDebug("Unable to fetch network id"); - return false; - } - - //set network SSID - if (! setNetworkSSID(info.getSSID(), netID)){ - Utils.logDebug("Failed to set network ssid"); - return false; - } - - //set password (if any) - if(! setNetworkPSK(info, netID)){ - Utils.logDebug("Failed to set network psk"); - return false; - } - - // select the network we just created - if (! selectNetwork(netID)){ - Utils.logDebug("Unable to wpa_cli select network"); - return false; - } - - //enable the newtork - if (! enableNetwork(netID)){ - Utils.logDebug("Unable to wpa_cli enable_newtork"); - return false; - } - - //try to reassociate to Access Point - if (! reassociate()){ - Utils.logDebug("Unable to wpa_cli reassociate"); - return false; - } - - //get DHCP - Utils.logDebug("Attempt to run dhcpcd.."); - if (!runDhcpcd()){ - Utils.logDebug("Failed to run dhcpcd"); - return false; - } - - //try to fetch gateway - String gw = getGateway(); - if (gw == null || gw.trim().length() < 7){ - //failed to get gateway - Utils.logDebug("Failed to get gateway"); - return false; - } - - if (! executeRootCmd("ndc network create 1")){ - Utils.logDebug("Failed to wpa_cli network create 1 "); - return false; - } - - if (! executeRootCmd("ndc network interface add 1 " + Commons.INTERFACE_NAME)){ - Utils.logDebug("Failed to add interface."); - return false; - } - - // set route to gateway for all traffic - if (! executeRootCmd("ndc network route add 1 " + Commons.INTERFACE_NAME + " 0.0.0.0/0 " + gw)){ - Utils.logDebug("Failed to add route to gateway"); - return false; - } - - //set DNS - if (! executeRootCmd("ndc resolver setnetdns 1 " + " " + DNS1 + " " + DNS2)){ - Utils.logDebug("Failed to set DNS"); - return false; - } - - //use network - if (! executeRootCmd("ndc network default set 1")){ - Utils.logDebug("Failed to set network as default"); - return false; - } - - //TODO - //implement wpa_cli query for status - //in order to be sure that connection is extablished - - return true; - - - - } - - private String createNetworkGetId(){ - - try { - - RootCommand su = new RootCommand(getCmdWpaCli() + " add_network"); - if(su.execute() == 0){ - String out = su.getOutput(); - if (out == null || out.trim().equals("")){ - return null; - } - else { - return out.replace("\n", ""); - } - } - else { - return null; - } - - } catch (Exception e) { - Utils.logError("Error while creating network", e); - return null; - } - - } - - private boolean destroyNetwork(){ - return executeRootCmd("ndc network destroy 1"); - } - - private boolean setNetworkSSID(String ssid, String networkID){ - - try { - - RootCommand su = new RootCommand(getCmdWpaCli() + " set_network " + networkID + " ssid '\"" + ssid + "\"'" ); - if (su.execute() == 0){ - String out = su.getOutput(); - if (out != null && out.trim().replace("\n", "").equals("OK")){ - return true; - }else { - return false; - } - } - else{ - return false; - } - - } catch (Exception e) { - Utils.logError("Error while setting network SSID", e); - return false; - } - - } - - private boolean setNetworkPSK(AccessPointInfo info, String networkID){ - - try { - - String cmdSetPass = null; - if (info.needsPassword()){ - cmdSetPass = getCmdWpaCli() + " set_network " + networkID + " psk '\"" + info.getPassword() + "\"'"; - } - else{ - cmdSetPass = getCmdWpaCli() + " set_network " + networkID + " key_mgmt NONE"; - } - - RootCommand su = new RootCommand(cmdSetPass); - if (su.execute() == 0){ - String out = su.getOutput(); - if (out != null && out.trim().replace("\n", "").equals("OK")){ - return true; - }else { - return false; - } - } - else{ - return false; - } - - } catch (Exception e) { - Utils.logError("Error while setting network PSK", e); - return false; - } - - - } - - private boolean selectNetwork(String networkID){ - - try { - - RootCommand su = new RootCommand(getCmdWpaCli() + " select_network " + networkID); - if (su.execute() == 0){ - String out = su.getOutput(); - if (out != null && out.trim().replace("\n", "").equals("OK")){ - return true; - }else { - return false; - } - } - else{ - return false; - } - - } catch (Exception e) { - Utils.logError("Error while selecting network", e); - return false; - } - - } - - private boolean enableNetwork(String networkID){ - - try { - - RootCommand su = new RootCommand(getCmdWpaCli() + " enable_network " + networkID); - if (su.execute() == 0){ - String out = su.getOutput(); - if (out != null && out.trim().replace("\n", "").equals("OK")){ - return true; - }else { - return false; - } - } - else{ - return false; - } - - } catch (Exception e) { - Utils.logError("Error while enabling network", e); - return false; - } - - } - - private boolean reassociate(){ - - try { - - RootCommand su = new RootCommand(getCmdWpaCli() + " reassociate"); - if (su.execute() == 0){ - String out = su.getOutput(); - if (out != null && out.trim().replace("\n", "").equals("OK")){ - return true; - }else { - return false; - } - } - else{ - return false; - } - - } catch (Exception e) { - Utils.logError("Error while reassociating network", e); - return false; - } - - } - - private String getGateway(){ - - try { - - RootCommand su = new RootCommand("ip route show dev " + Commons.INTERFACE_NAME); - if (su.execute() != 0){ - Utils.logDebug("command failed show route"); - return null; - } - - //read command output - String out = su.getOutput(); - if (out == null){ - return null; - } - - String[] lines = out.split("\n"); - - for (String l : lines){ - - if (l.contains("default via")){ - - String[] f = l.split(" "); - if (f.length > 2){ - - //found route's address: - return f[2]; - - } - } - } - - return null; - - } catch (Exception e) { - Utils.logError("Error while trying to fetch route",e); - return null; - } - - } - - private boolean clearAddrs(){ - return executeRootCmd("ndc interface clearaddrs " + Commons.INTERFACE_NAME); - } - -} \ No newline at end of file diff --git a/project/src/fil/libre/repwifiapp/helpers/IEngine.java b/project/src/fil/libre/repwifiapp/helpers/IEngine.java deleted file mode 100644 index 67ffb86..0000000 --- a/project/src/fil/libre/repwifiapp/helpers/IEngine.java +++ /dev/null @@ -1,41 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.helpers; - - -public interface IEngine { - - public boolean startWpaSupplicant(); - - public boolean killPreviousConnections(); - - public boolean clearWorkingDir(); - - public AccessPointInfo[] getAvailableNetworks(); - - public boolean connect(AccessPointInfo info); - - public boolean disconnect(); - - public ConnectionStatus getConnectionStatus(); - - -} diff --git a/project/src/fil/libre/repwifiapp/helpers/NetworkButton.java b/project/src/fil/libre/repwifiapp/helpers/NetworkButton.java deleted file mode 100644 index 9a7c523..0000000 --- a/project/src/fil/libre/repwifiapp/helpers/NetworkButton.java +++ /dev/null @@ -1,41 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.helpers; - -import android.content.Context; -import android.widget.Button; - -public class NetworkButton extends Button{ - - private String _bssid = ""; - - public NetworkButton(Context context, String networkBSSID){ - super(context); - this._bssid = networkBSSID; - } - - public String getNetworkBSSID(){ - return this._bssid; - } - - - -} diff --git a/project/src/fil/libre/repwifiapp/helpers/NetworkManager.java b/project/src/fil/libre/repwifiapp/helpers/NetworkManager.java deleted file mode 100644 index bc59862..0000000 --- a/project/src/fil/libre/repwifiapp/helpers/NetworkManager.java +++ /dev/null @@ -1,288 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.helpers; - -import java.io.File; -import java.util.ArrayList; - -public class NetworkManager { - - private static final String F_SEP = "\t"; - private static final int NET_MAX_AGE = 365; //Expressed in days - - private String _knownNetworksFile = null; - - public NetworkManager(String networksFilePath){ - this._knownNetworksFile = networksFilePath; - } - - private AccessPointInfo searchInFile(AccessPointInfo i){ - - if (i == null){ - return null; - } - - String bssid = i.getBSSID(); - String ssid = i.getSSID(); - - if (bssid == null || ssid == null || bssid.trim().equals("") || ssid.trim().equals("")){ - return null; - } - - AccessPointInfo ret = null; - AccessPointInfo[] list = getKnownNetworks(); - - if (list == null){ - return null; - } - - for(AccessPointInfo toTest : list){ - - // try to match both bssid and ssid. - // if bssid doesn't match, but ssid does, - // then the network is a candidate. - // if no bssid equality is found, - // then return the best match (only ssid), if any - if (toTest.getSSID().equals(ssid)){ - - if (toTest.getBSSID().equals(bssid)){ - i.setPassword(toTest.getPassword()); - return i; - - }else{ - i.setPassword(toTest.getPassword()); - ret = i; - } - - } - - } - - return ret; - - } - - private boolean saveOrRemove(AccessPointInfo info, boolean save){ - - String iText = InfoToString(info); - if (iText == null){ - return false; - } - - AccessPointInfo[] existingNets = getKnownNetworks(); - - ArrayList newlist = new ArrayList(); - - if (existingNets == null || existingNets.length == 0){ - //no existing storage yet, create it - - if (save){ - //set timestamp - info.setLastTimeUsed(System.currentTimeMillis()); - newlist.add(info); - AccessPointInfo[] newContents = new AccessPointInfo[newlist.size()]; - newContents = newlist.toArray(newContents); - - return saveList(newContents); - - }else{ - //nothing to do, return - return true; - } - - } - - for(AccessPointInfo old : existingNets){ - - if (old == null){ - continue; - } - - if (old.getBSSID().equals(info.getBSSID()) && old.getSSID().equals(info.getSSID())){ - - //found previous entry for this network, - //if the call is for saving, overwrite the entry with the new one, - //else omit the line, to remove network from the saved list. - if (save){ - info.setLastTimeUsed(System.currentTimeMillis()); - newlist.add(info); - } - - }else{ - //other network, keep it in the file - // only if it's not older than the max age for a network - if (! info.isOlderThan(NET_MAX_AGE)){ - newlist.add(old); - } - } - - } - - AccessPointInfo[] newContents = new AccessPointInfo[newlist.size()]; - newContents = newlist.toArray(newContents); - - return saveList(newContents); - - } - - private AccessPointInfo getFromString(String savedString){ - - if (savedString == null || savedString.trim().equals("")) { - return null; - } - - String[] fields = savedString.split(F_SEP); - - if (fields.length != 4 ){ - return null; - } - - String bssid = fields[0]; - String ssid = fields[1]; - String pass = fields[2]; - String lastUsed = fields[3]; - - long lastusedmillis = 0; - try { - lastusedmillis = Long.parseLong(lastUsed); - } catch (NumberFormatException e) { - //invalid format - Utils.logError("Invalid time format in network manager \""+lastUsed +"\". Network BSSID: " + bssid, e); - } - - if (bssid.trim().equals("") || ssid.trim().equals("") || pass.trim().equals("")){ - return null; - } - - AccessPointInfo i = new AccessPointInfo(ssid, bssid, null, null, null); - i.setPassword(pass); - i.setLastTimeUsed(lastusedmillis); - - return i; - - } - - private String InfoToString(AccessPointInfo info){ - - if (info == null){ - return null; - } - - String bssid = info.getBSSID(); - String ssid = info.getSSID(); - String pass = info.getPassword(); - String tsLastUsed = "" + info.getLastTimeUsed(); - - if (bssid == null || bssid.trim().equals("")){ - return null; - } - - if (ssid == null || ssid.trim().equals("")){ - return null; - } - - if (pass == null || pass.trim().equals("")){ - return null; - } - - String iText = info.getBSSID() + F_SEP + info.getSSID() + F_SEP + info.getPassword() + F_SEP + tsLastUsed; - return iText; - - } - - private boolean saveList(AccessPointInfo[] list){ - - if (list == null){ - return false; - } - - String[] lines = new String[list.length]; - - for (int i = 0; i list = new ArrayList(); - - File f = new File(this._knownNetworksFile); - if (! f.exists()){ - return null; - } - - String[] lines = Utils.readFileLines(_knownNetworksFile); - if (lines.length == 0){ - return null; - } - - for(String l : lines){ - - AccessPointInfo info = getFromString(l); - if (info != null){ - list.add(info); - } - - } - - AccessPointInfo[] ret = new AccessPointInfo[list.size()]; - ret = list.toArray(ret); - - return ret; - - } - - public boolean isKnown(AccessPointInfo info){ - - AccessPointInfo i = searchInFile(info); - if (i == null){ - return false; - }else { - return true; - } - - } - - public boolean save(AccessPointInfo info){ - return saveOrRemove(info, true); - } - - public boolean remove(AccessPointInfo info){ - return saveOrRemove(info, false); - } - - public AccessPointInfo getSavedNetwork(AccessPointInfo i){ - return searchInFile(i); - } - - - -} diff --git a/project/src/fil/libre/repwifiapp/helpers/RootCommand.java b/project/src/fil/libre/repwifiapp/helpers/RootCommand.java deleted file mode 100644 index 3da4ae0..0000000 --- a/project/src/fil/libre/repwifiapp/helpers/RootCommand.java +++ /dev/null @@ -1,109 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.helpers; -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.InputStream; -import java.io.InputStreamReader; - -import fil.libre.repwifiapp.Commons; - -public class RootCommand { - - private String _cmdOut = ""; - private String _cmdTxt = ""; - - public RootCommand(String commandText){ - this._cmdTxt = commandText; - } - - public int execute() throws Exception{ - return execute(0); - } - - public int execute(int sleepSecsAfterCmd) throws Exception{ - - Process su = Runtime.getRuntime().exec("su"); - - DataOutputStream stdin = new DataOutputStream(su.getOutputStream()); - InputStream os = su.getInputStream(); - BufferedReader stdOut = new BufferedReader(new InputStreamReader(os)); - InputStream es = su.getErrorStream(); - BufferedReader stdError = new BufferedReader(new InputStreamReader(es)); - - if ( this._cmdTxt != null ){ - - Utils.logDebug("EXEC: " + this._cmdTxt); - - this._cmdTxt += " > " + Commons.getTempOutFile(); - - stdin.writeBytes(this._cmdTxt + "\n"); - stdin.flush(); - } - - /* if (sleepSecsAfterCmd > 0){ - Thread.sleep(sleepSecsAfterCmd * 1000); - }*/ - - StringBuilder sb = new StringBuilder(); - String s = null; - - while ( (es.available() > 0) && (s = stdError.readLine()) != null) { - sb.append(s + "\n"); - } - - while ( (os.available() > 0) && (s = stdOut.readLine()) != null) { - sb.append(s + "\n"); - } - - this._cmdOut = sb.toString(); - - stdin.writeBytes("exit\n"); - stdin.flush(); - - int res = su.waitFor(); - - Utils.logDebug("OUT: " + getOutput()); - - return res; - - } - - public String getOutput(){ - - String[] lastOut = Utils.readFileLines(Commons.getTempOutFile()); - if (lastOut == null){ - return this._cmdOut; - } - - String fout = ""; - - for (String s : lastOut){ - fout += s + "\n"; - } - - return fout; - - } - - - -} diff --git a/project/src/fil/libre/repwifiapp/helpers/Utils.java b/project/src/fil/libre/repwifiapp/helpers/Utils.java deleted file mode 100644 index 2e5fa27..0000000 --- a/project/src/fil/libre/repwifiapp/helpers/Utils.java +++ /dev/null @@ -1,205 +0,0 @@ -// -// Copyright 2017 Filippo "Fil" Bergamo -// -// This file is part of RepWifiApp. -// -// RepWifiApp 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. -// -// RepWifiApp 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. -// -// You should have received a copy of the GNU General Public License -// along with RepWifiApp. If not, see . -// -// ******************************************************************** - -package fil.libre.repwifiapp.helpers; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import android.util.Log; - -public class Utils { - - private static final long MILLIS_IN_DAY = 86400000; - - public static final int logLevel = 1; - - public static final String APP_NAME = "RepWifi"; - - private static Exception _lastException = null; - - public static Exception getLastException(){ - return _lastException; - } - - public static void logError(String msg, Exception e){ - Log.e(APP_NAME,msg,e); - } - - public static void logError(String msg){ - Log.e(APP_NAME,msg); - } - - public static void logDebug(String msg){ - logDebug(msg,0); - } - - public static void logDebug(String msg, int level){ - - if (level < logLevel){ - return; - } - - Log.d(APP_NAME,msg); - } - - public static boolean writeFile(String filePath, String text, boolean overwrite){ - - - FileWriter writer = null; - boolean retval = false; - try { - - writer = new FileWriter(filePath, (! overwrite)); - writer.write(text); - - retval = true; - - } catch (Exception e) { - _lastException = e; - retval = false; - } - finally{ - - if (writer != null){ - try { - writer.close(); - } catch (IOException e) { - //suppress - } - } - - } - - return retval; - - } - - public static boolean writeFileLines(String filePath, String[] lines, boolean overwrite){ - - if (lines == null){ - return false; - } - - FileWriter writer = null; - boolean retval = false; - try { - - writer = new FileWriter(filePath, (! overwrite)); - - if (lines.length == 0){ - writer.write(""); - } - - for(String l : lines){ - writer.write(l + "\n"); - } - - retval = true; - - } catch (Exception e) { - _lastException = e; - retval = false; - } - finally{ - - if (writer != null){ - try { - writer.close(); - } catch (IOException e) { - //suppress - } - } - - } - - return retval; - - } - - public static String[] readFileLines(String filePath){ - - if (filePath == null){ - return null; - } - - File f = new File(filePath); - if (! f.exists()){ - logError("File doesn't exist: " + filePath); - return null; - } - - FileReader fr = null; - BufferedReader bufr = null; - - List lines = new ArrayList(); - String[] ret = null; - - try { - - fr = new FileReader(filePath); - bufr = new BufferedReader(fr); - String line =""; - while((line = bufr.readLine()) != null){ - lines.add(line); - } - - String[] ar = new String[lines.size()]; - ret = lines.toArray(ar); - - } catch (Exception e) { - logError("Error while reading file " + filePath,e); - ret = null; - } - finally{ - try { - if (bufr != null){ - bufr.close(); - } - } catch (IOException ex) { - //suppress - } - try { - if (fr != null){ - fr.close(); - } - }catch(IOException exc){ - //suppress - } - } - - return ret; - - } - - public static long daysToMilliseconds(int days){ - return (days * MILLIS_IN_DAY); - } - - public static long millisecondsToDays(long milliseconds){ - return (milliseconds / MILLIS_IN_DAY); - } - -} -- cgit v1.1