Mercurial > 510Connectbot
comparison src/com/five_ten_sg/connectbot/HostListActivity.java @ 132:265a4733edcb
read deployment.connections on startup for new host entries
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Thu, 19 Jun 2014 15:47:34 -0700 |
parents | 77ac18bc1b2f |
children | 81cafbe7cd9b |
comparison
equal
deleted
inserted
replaced
131:adf9ca45675b | 132:265a4733edcb |
---|---|
23 import com.five_ten_sg.connectbot.service.TerminalBridge; | 23 import com.five_ten_sg.connectbot.service.TerminalBridge; |
24 import com.five_ten_sg.connectbot.service.TerminalManager; | 24 import com.five_ten_sg.connectbot.service.TerminalManager; |
25 import com.five_ten_sg.connectbot.transport.TransportFactory; | 25 import com.five_ten_sg.connectbot.transport.TransportFactory; |
26 import com.five_ten_sg.connectbot.util.HostDatabase; | 26 import com.five_ten_sg.connectbot.util.HostDatabase; |
27 import com.five_ten_sg.connectbot.util.PreferenceConstants; | 27 import com.five_ten_sg.connectbot.util.PreferenceConstants; |
28 import java.nio.file.Files; | |
28 import android.app.Activity; | 29 import android.app.Activity; |
29 import android.app.AlertDialog; | 30 import android.app.AlertDialog; |
30 import android.app.ListActivity; | 31 import android.app.ListActivity; |
31 import android.content.ComponentName; | 32 import android.content.ComponentName; |
32 import android.content.Context; | 33 import android.content.Context; |
38 import android.content.SharedPreferences.Editor; | 39 import android.content.SharedPreferences.Editor; |
39 import android.content.res.ColorStateList; | 40 import android.content.res.ColorStateList; |
40 import android.net.Uri; | 41 import android.net.Uri; |
41 import android.os.Build; | 42 import android.os.Build; |
42 import android.os.Bundle; | 43 import android.os.Bundle; |
44 import android.os.Environment; | |
43 import android.os.Handler; | 45 import android.os.Handler; |
44 import android.os.IBinder; | 46 import android.os.IBinder; |
45 import android.os.Message; | 47 import android.os.Message; |
46 import android.preference.PreferenceManager; | 48 import android.preference.PreferenceManager; |
47 import android.util.Log; | 49 import android.util.Log; |
179 | 181 |
180 makingShortcut = Intent.ACTION_CREATE_SHORTCUT.equals(getIntent().getAction()) | 182 makingShortcut = Intent.ACTION_CREATE_SHORTCUT.equals(getIntent().getAction()) |
181 || Intent.ACTION_PICK.equals(getIntent().getAction()); | 183 || Intent.ACTION_PICK.equals(getIntent().getAction()); |
182 // connect with hosts database and populate list | 184 // connect with hosts database and populate list |
183 hostdb = new HostDatabase(this); | 185 hostdb = new HostDatabase(this); |
186 createDeploymentHosts(); // build hosts from a deployment text file | |
184 updateList(); | 187 updateList(); |
185 sortedByColor = prefs.getBoolean(PreferenceConstants.SORT_BY_COLOR, false); | 188 sortedByColor = prefs.getBoolean(PreferenceConstants.SORT_BY_COLOR, false); |
186 registerForContextMenu(getListView()); | 189 registerForContextMenu(getListView()); |
187 getListView().setOnItemClickListener(new OnItemClickListener() { | 190 getListView().setOnItemClickListener(new OnItemClickListener() { |
188 | 191 |
385 intent.setData(uri); | 388 intent.setData(uri); |
386 startActivity(intent); | 389 startActivity(intent); |
387 return true; | 390 return true; |
388 } | 391 } |
389 | 392 |
393 private void createDeploymentHosts() { | |
394 try { | |
395 String fn = Environment.getExternalStorageDirectory().getAbsolutePath() + | |
396 File.separator + "deployment.connections"; | |
397 BufferedReader reader = new BufferedReader(new FileReader(fn)); | |
398 String line = null; | |
399 while ((line = reader.readLine()) != null) { | |
400 if (line.length() == 0) continue; // empty | |
401 if (line.substring(0,1).equals("#")) continue; // comment | |
402 if (!line.contains("://")) continue; // invalid uri | |
403 Uri uri = Uri.parse(line); | |
404 ContentValues values = null; | |
405 while ((line = reader.readLine()).length() > 0) { | |
406 String [] parts = line.split("="); | |
407 if (parts.length() != 2) continue; | |
408 if (values == null) values = new ContentValues(); | |
409 values.put(parts[0], parts[1]); | |
410 } | |
411 HostBean host = TransportFactory.findHost(hostdb, uri); | |
412 if (host == null) { | |
413 host = TransportFactory.getTransport(uri.getScheme()).createHost(uri); | |
414 host.setColor(HostDatabase.COLOR_GRAY); | |
415 host.setPubkeyId(HostDatabase.PUBKEYID_ANY); | |
416 hostdb.saveHost(host); | |
417 } | |
418 host = TransportFactory.findHost(hostdb, uri); | |
419 if (host == null) continue; | |
420 if (values == null) continue; | |
421 SQLiteDatabase db = hostdb.getWritableDatabase(); | |
422 db.update(HostDatabase.TABLE_HOSTS, values, "_id = ?", new String[] { String.valueOf(host.getId()) }); | |
423 db.close(); | |
424 } | |
425 reader.close(); | |
426 Files.delete(fn); | |
427 } | |
428 catch (Exception e) { | |
429 Log.d(TAG, "Deployment scan failed.", e); | |
430 } | |
431 } | |
432 | |
390 protected void updateList() { | 433 protected void updateList() { |
391 if (prefs.getBoolean(PreferenceConstants.SORT_BY_COLOR, false) != sortedByColor) { | 434 if (prefs.getBoolean(PreferenceConstants.SORT_BY_COLOR, false) != sortedByColor) { |
392 Editor edit = prefs.edit(); | 435 Editor edit = prefs.edit(); |
393 edit.putBoolean(PreferenceConstants.SORT_BY_COLOR, sortedByColor); | 436 edit.putBoolean(PreferenceConstants.SORT_BY_COLOR, sortedByColor); |
394 edit.commit(); | 437 edit.commit(); |