X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=src%2Fro%2Fieval%2Ffonbot%2FFonBotMainService.java;h=5508557d749fcc5699312dbc54e2e1144710acf0;hb=46c0afcb1fa2b4688dbb250e9d56e0913a681772;hp=dd13affe715aef6f403d1fba71fc6c87e00bf8ac;hpb=82a2d0c2eef2659b6189a1bad2996843d7102094;p=fonbot.git diff --git a/src/ro/ieval/fonbot/FonBotMainService.java b/src/ro/ieval/fonbot/FonBotMainService.java index dd13aff..5508557 100644 --- a/src/ro/ieval/fonbot/FonBotMainService.java +++ b/src/ro/ieval/fonbot/FonBotMainService.java @@ -8,8 +8,11 @@ import java.util.Collections; import java.util.EnumSet; import java.util.Set; +import javax.net.ssl.SSLException; + import org.eclipse.jdt.annotation.Nullable; +import ro.ieval.fonbot.Address.Protocol; import ro.ieval.fonbot.Utils.OngoingEvent; import android.app.Notification; @@ -81,6 +84,8 @@ public final class FonBotMainService extends Service { runnable.doRun(); } catch (final SocketTimeoutException e){ Log.d("LongPollRunnable", "Socket timeout, refreshing connection"); + } catch (final SSLException e){ + Log.d("LongPollRunnable", "Got SSLException, refreshing connection"); } catch (final Exception ex){ ex.printStackTrace(); break; @@ -98,6 +103,21 @@ public final class FonBotMainService extends Service { */ public static final String ACTION_DELETE_ONGOING="ro.ieval.fonbot.FonBotMainService.ACTION_DELETE_ONGOING"; + /** + * Broadcast action: process a command received via SMS + */ + public static final String ACTION_PROCESS_COMMAND="ro.ieval.fonbot.FonBotMainService.ACTION_PROCESS_COMMAND"; + + /** + * Extra: command line + */ + public static final String EXTRA_COMMAND_LINE="ro.ieval.fonbot.FonBotMainService.EXTRA_COMMAND_LINE"; + + /** + * Extra: SMS originating address + */ + public static final String EXTRA_SMS_ORIGIN_ADDRESS="ro.ieval.fonbot.FonBotMainService.EXTRA_SMS_ORIGIN_ADDRESS"; + /** * Extra: ongoing event id * @@ -175,8 +195,21 @@ public final class FonBotMainService extends Service { LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(ACTION_ONGOING_UPDATE)); updateNotification=true; } + if(intent!=null && intent.getAction()==ACTION_PROCESS_COMMAND) { + final String cmdline = intent.getStringExtra(EXTRA_COMMAND_LINE); + final String origin = intent.getStringExtra(EXTRA_SMS_ORIGIN_ADDRESS); + final Address address= new Address(toNonNull(Protocol.SMS), origin);//NOPMD variable depends on originAddress + final String[] words=Utils.shellwords(toNonNull(cmdline)); + final String[] args=new String[words.length-1];//NOPMD variable size depends on words.length + System.arraycopy(words, 1, args, 0, args.length); + + Utils.processCommand(this, toNonNull(words[0]), args, toNonNull(address)); + } - if(longPollThread == null || !longPollThread.isAlive()){ + final String user=PreferenceManager.getDefaultSharedPreferences(this).getString("username", null); + final String password=PreferenceManager.getDefaultSharedPreferences(this).getString("password", null); + final boolean has_user_pass = user != null && password != null && user.length() > 0 && password.length() > 0; + if((longPollThread == null || !longPollThread.isAlive()) && has_user_pass){ longPollThread = new Thread(new LongPollRunnable()); longPollThread.start(); }