#236 de-escape configured text to send

This commit is contained in:
Anton Keks 2020-05-12 22:02:03 +03:00
parent 8b169bc91a
commit d40dc2d78d
3 changed files with 12 additions and 21 deletions

View File

@ -16,7 +16,6 @@ import javax.inject.Inject;
* @author Anton Keks
*/
public class HTTPSenderFetcher extends PortTextFetcher {
@Inject public HTTPSenderFetcher(ScannerConfig scannerConfig) {
super(scannerConfig, 80, "HEAD / HTTP/1.0\r\n\r\n", "Date: (.*)$");
}
@ -24,5 +23,4 @@ public class HTTPSenderFetcher extends PortTextFetcher {
public String getId() {
return "fetcher.httpSender";
}
}

View File

@ -43,10 +43,10 @@ public abstract class PortTextFetcher extends AbstractFetcher {
protected Pattern matchingRegexp;
protected int extractGroup;
public PortTextFetcher(ScannerConfig scannerConfig, int defaultPort, String textToSend, String matchingRegexp) {
public PortTextFetcher(ScannerConfig scannerConfig, int defaultPort, String defaultTextToSend, String matchingRegexp) {
this.scannerConfig = scannerConfig;
this.defaultPort = defaultPort;
this.textToSend = getPreferences().get("textToSend", textToSend);
this.textToSend = getPreferences().get("textToSend", defaultTextToSend);
this.matchingRegexp = Pattern.compile(getPreferences().get("matchingRegexp", matchingRegexp));
this.extractGroup = getPreferences().getInt("extractGroup", 1);
}

View File

@ -28,7 +28,6 @@ import static java.lang.Integer.parseInt;
* @author Anton Keks
*/
public class PortTextFetcherPrefs extends AbstractModalDialog implements FetcherPrefs {
private PortTextFetcher fetcher;
private Text textToSend;
private Text matchingRegexp;
@ -59,7 +58,7 @@ public class PortTextFetcherPrefs extends AbstractModalDialog implements Fetcher
sendLabel.setText(Labels.getLabel("text.fetcher.portText.send"));
sendLabel.setLayoutData(LayoutHelper.formData(new FormAttachment(0), null, null, new FormAttachment(predefinedCombo, 0, SWT.BOTTOM)));
textToSend = new Text(shell, SWT.BORDER);
textToSend.setText(stringToText(fetcher.getTextToSend()));
textToSend.setText(toEditableText(fetcher.getTextToSend()));
textToSend.setLayoutData(LayoutHelper.formData(new FormAttachment(0), new FormAttachment(100), new FormAttachment(sendLabel), null));
Label matchLabel = new Label(shell, SWT.NONE);
@ -102,8 +101,9 @@ public class PortTextFetcherPrefs extends AbstractModalDialog implements Fetcher
void savePreferences() {
Preferences prefs = fetcher.getPreferences();
fetcher.setTextToSend(textToSend.getText());
prefs.put("textToSend", fetcher.getTextToSend());
String text = toRealText(textToSend.getText());
fetcher.setTextToSend(text);
prefs.put("textToSend", text);
fetcher.setMatchingRegexp(Pattern.compile(matchingRegexp.getText()));
prefs.put("matchingRegexp", fetcher.getMatchingRegexp().pattern());
@ -112,18 +112,11 @@ public class PortTextFetcherPrefs extends AbstractModalDialog implements Fetcher
prefs.putInt("extractGroup", fetcher.getExtractGroup());
}
private String stringToText(String s) {
StringBuilder t = new StringBuilder();
for (char c : s.toCharArray()) {
if (c == '\n')
t.append("\\n");
else if (c == '\r')
t.append("\\r");
else if (c == '\t')
t.append("\\t");
else
t.append(c);
}
return t.toString();
private String toEditableText(String s) {
return s.replace("\n", "\\n").replace("\r", "\\r").replace("\t", "\\t");
}
private String toRealText(String s) {
return s.replace("\\n", "\n").replace("\\r", "\r").replace("\\t", "\t");
}
}