URL checker

This commit is contained in:
jens committed 2026-10-01 18:29:17 +02:00
1 parent 81812eba1b
commit ce32502eaa
5 files changed
+58 -1

No files matched your search

@@ -6,6 +6,9 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
@@ -27,9 +30,13 @@ import androidx.annotation.NonNull;
import com.jens.automation2.Action.Action_Enum;
import org.apache.commons.lang3.StringUtils;
import org.w3c.dom.Text;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Map;
import java.util.regex.Pattern;
public class ActivityManageActionTriggerUrl extends Activity
{
@@ -39,7 +46,7 @@ public class ActivityManageActionTriggerUrl extends Activity
CheckBox chkTriggerUrlUseAuthentication;
RadioButton rbTriggerUrlMethodGet, rbTriggerUrlMethodPost;
TableLayout tlTriggerUrlAuthentication;
TextView tvHttpParameterExplanation;
TextView tvHttpParameterExplanation, tvUrlValidator;
ArrayAdapter<String> httpParametersAdapter;
private ArrayList<String> httpParamsList = new ArrayList<>();
@@ -70,6 +77,7 @@ public class ActivityManageActionTriggerUrl extends Activity
etParameterValue = (EditText)findViewById(R.id.etParameterValue);
bAddHttpParam = (Button)findViewById(R.id.bAddHttpParam);
tvHttpParameterExplanation = (TextView)findViewById(R.id.tvHttpParameterExplanation);
tvUrlValidator = (TextView)findViewById(R.id.tvUrlValidator);
etParameterName.setEnabled(false);
etParameterValue.setEnabled(false);
@@ -173,6 +181,33 @@ public class ActivityManageActionTriggerUrl extends Activity
});
updateListView();
etTriggerUrl.addTextChangedListener(new TextWatcher()
{
@Override
public void afterTextChanged(Editable editable)
{
if(etTriggerUrl.getText() != null && etTriggerUrl.getText().length() > 0)
{
if(Miscellaneous.isValidUrl(etTriggerUrl.getText().toString()))
tvUrlValidator.setText("");
else
tvUrlValidator.setText(getResources().getString(R.string.enter_valid_url));
}
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2)
{
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
{
}
});
if(getIntent().hasExtra(ActivityManageRule.intentNameActionParameter2))
{
// username,password,URL,etc.
@@ -105,6 +105,8 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
@@ -133,6 +135,9 @@ public class Miscellaneous extends Service
protected final static String httpMainData = "httpMainData";
protected final static String doNoEncodingString = "NoEncoding";
protected final static String httpEncoding = "UTF-8";
protected final static String URL_REGEX = "^(https?):\\/\\/([a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*)(:[0-9]{1,5})?([\\/\\?#].*)?$";
// protected final static String URL_REGEX = "^(https?|ftp):\\/\\/([a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*)(:[0-9]{1,5})?([\\/\\?#].*)?$";
protected final static Pattern URL_PATTERN = Pattern.compile(URL_REGEX, Pattern.CASE_INSENSITIVE);
public static Context startupContext;
public static final String lineSeparator = System.getProperty("line.separator");
@@ -2428,4 +2433,13 @@ public class Miscellaneous extends Service
StackTraceElement callingFrame = Thread.currentThread().getStackTrace()[4];
return callingFrame.getMethodName();
}
public static boolean isValidUrl(String input)
{
if (input == null || input.length() == 0)
return false;
Matcher matcher = URL_PATTERN.matcher(input);
return matcher.matches(); // Returns true if the entire string matches
}
}