1 package com.example.lede2;
\r
3 import android.app.ProgressDialog;
\r
4 import android.content.Context;
\r
5 import android.os.Bundle;
\r
6 import android.support.v7.app.AppCompatActivity;
\r
7 import android.util.Log;
\r
8 import android.view.WindowManager;
\r
9 import android.widget.Spinner;
\r
11 import java.io.File;
\r
12 import java.util.ArrayList;
\r
13 import java.util.List;
\r
16 * Created by Brian on 2/23/2018.
\r
19 public class UpdateLocalConfigFiles extends AppCompatActivity {
\r
20 private SSH_MySQL ssh_mySQL1;//Connection object between Android & Host
\r
21 private SSH_MySQL ssh_mySQL2;
\r
22 private SSH_MySQL ssh_mySQL3;
\r
23 private SSH sshDevDat;
\r
24 private SSH routerSSH;
\r
26 List<String> temp;//data structure which has IoT device information already registered on LEDE2
\r
27 String filename_device;
\r
30 protected void onCreate(Bundle savedInstanceState) {
\r
31 super.onCreate(savedInstanceState);
\r
32 setContentView(R.layout.update);
\r
33 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
\r
34 // 1)updates config files on the pi
\r
35 // 2)cats the structure of the database
\r
36 // 3)cats instances of devices on the database
\r
37 String command1 = this.getString(R.string.update_DBInformation_File);
\r
38 String command2 = this.getString(R.string.cat_device_types);
\r
39 String command3 = this.getString(R.string.cat_subtypes);
\r
40 String commandRouter = "cat /tmp/dhcp.leases";
\r
41 filename = this.getString(R.string.device_param_config_filename);
\r
42 filename_device = "initial_DHCP.txt";
\r
43 ssh_mySQL1 = new SSH_MySQL();
\r
44 ssh_mySQL2 = new SSH_MySQL();
\r
45 ssh_mySQL3 = new SSH_MySQL();
\r
46 routerSSH = new SSH();
\r
47 sshDevDat = new SSH();
\r
49 List<String> results = new ArrayList<>();
\r
53 //executes command and wait till result lines are no longer empty.
\r
54 //result lines are the lines that the pi outputs after running the command
\r
55 ssh_mySQL1.execute(command1);
\r
56 Thread.sleep(1000);//To execute asyntask in ssh object, we have to sleep main thread
\r
57 results = ssh_mySQL1.getResultLines();
\r
58 while(results.size() == 0){
\r
60 results = ssh_mySQL1.getResultLines();
\r
61 System.out.println(results);
\r
63 }catch (Exception e){
\r
64 e.printStackTrace();
\r
65 Log.d("Sleep exception", "exception at SSH3");
\r
69 ssh_mySQL2.execute(command2);
\r
70 Thread.sleep(1000);//To execute asyntask in ssh object, we have to sleep main thread
\r
71 results = ssh_mySQL2.getResultLines();
\r
72 while(results.size() == 0){
\r
74 results = ssh_mySQL2.getResultLines();
\r
77 addSSHResultsToConfig(results, filename);
\r
78 System.out.println(results);
\r
81 } catch (Exception e) {
\r
82 Log.d("Sleep exception", "exception at oncreate of update SSH2");
\r
87 ssh_mySQL3.execute(command3);
\r
89 results = ssh_mySQL3.getResultLines();
\r
90 while(results.size() == 0){
\r
92 results = ssh_mySQL3.getResultLines();
\r
95 filename = this.getString(R.string.device_id_config_filename);
\r
96 addSSHResultsToConfig(results, filename);
\r
98 catch (Exception e){
\r
99 e.printStackTrace();
\r
100 Log.d("Sleep exception", "exception at SSH3");
\r
105 sshDevDat.execute("-ln");
\r
106 Thread.sleep(1000);
\r
107 results = sshDevDat.getResultLines();
\r
108 while(results.size() == 0){
\r
110 results = sshDevDat.getResultLines();
\r
111 System.out.println(results);
\r
113 addSSHResultsToConfig(results,this.getString(R.string.devices_dat_filename));
\r
115 catch (Exception e){
\r
116 e.printStackTrace();
\r
117 Log.d("cat device dat", "exception at cat device.dat");
\r
122 //writes ssh result into a local config
\r
123 private void addSSHResultsToConfig(List<String> results, String filename) {
\r
124 File dir = getFilesDir();
\r
125 File file = new File(dir, filename);
\r
127 for (int i = 0; i < results.size(); i++) {
\r
128 ConfigFileIO.writeToFile(filename, results.get(i), this);
\r