work around osx anti-automation measures
Former-commit-id: 7d4e53b82c
Former-commit-id: 8b79c9cf398a93a4fe42a3446ef856c9d5cee351
This commit is contained in:
@ -25,7 +25,7 @@
|
|||||||
</target>
|
</target>
|
||||||
|
|
||||||
<property name="javac.compilerargs" value="" />
|
<property name="javac.compilerargs" value="" />
|
||||||
<property name="javac.version" value="1.7" />
|
<property name="javac.version" value="1.8" />
|
||||||
|
|
||||||
<target name="compile">
|
<target name="compile">
|
||||||
<mkdir dir="./build" />
|
<mkdir dir="./build" />
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
package net.i2p.i2pfirefox;
|
package net.i2p.i2pfirefox;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* I2PChromium.java
|
* I2PChromium.java
|
||||||
@ -507,19 +511,39 @@ public class I2PChromium extends I2PCommonBrowser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isOSX()) {
|
if (isOSX()) {
|
||||||
String argString =
|
String argString = join(Arrays.copyOfRange(newArgs, 1, newArgs.length));
|
||||||
join(Arrays.copyOfRange(newArgs, 1, newArgs.length));
|
String[] fg = {""};
|
||||||
String[] finalArgs = {"open", newArgs[0], "--args", argString};
|
String[] lastArgs =
|
||||||
return new ProcessBuilder(finalArgs).directory(
|
Stream.concat(Arrays.stream(newArgs), Arrays.stream(fg))
|
||||||
I2PChromiumProfileBuilder.runtimeDirectory(true));
|
.toArray(String[] ::new);
|
||||||
|
// String[] finalArgs = Stream.concat(Arrays.stream(initArgs),
|
||||||
|
// Arrays.stream(lastArgs)).toArray(String[]::new);
|
||||||
|
File bashScript = new File("i2pchromium.sh");
|
||||||
|
if (bashScript.exists()) {
|
||||||
|
bashScript.delete();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
FileWriter bWriter = new FileWriter(bashScript);
|
||||||
|
PrintWriter bpWriter = new PrintWriter(bWriter);
|
||||||
|
bpWriter.println("#! /usr/bin/env sh");
|
||||||
|
bpWriter.println(join(lastArgs));
|
||||||
|
bpWriter.close();
|
||||||
|
bWriter.close();
|
||||||
|
if (!bashScript.canExecute()) {
|
||||||
|
bashScript.setExecutable(true);
|
||||||
|
}
|
||||||
|
return new ProcessBuilder(bashScript.getAbsolutePath())
|
||||||
|
.directory(I2PFirefoxProfileBuilder.runtimeDirectory(true));
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.warning(e.toString());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return new ProcessBuilder(newArgs).directory(
|
return new ProcessBuilder(newArgs).directory(
|
||||||
I2PChromiumProfileBuilder.runtimeDirectory(true));
|
I2PChromiumProfileBuilder.runtimeDirectory(true));
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
logger.info("No Chromium found.");
|
|
||||||
return new ProcessBuilder(args);
|
|
||||||
}
|
}
|
||||||
|
logger.info("No Chromium found.");
|
||||||
|
return new ProcessBuilder(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Process launchAndDetatch(boolean privateWindow, String[] url) {
|
public Process launchAndDetatch(boolean privateWindow, String[] url) {
|
||||||
|
@ -418,11 +418,11 @@ public class I2PCommonBrowser {
|
|||||||
public void setProxyTimeoutTime(int time) { CONFIGURED_TIMEOUT = time; }
|
public void setProxyTimeoutTime(int time) { CONFIGURED_TIMEOUT = time; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
protected static String join(String[] arr){
|
protected static String join(String[] arr) {
|
||||||
StringBuilder val = new StringBuilder("");
|
StringBuilder val = new StringBuilder("");
|
||||||
for (int x = 0; x < arr.length; x++){
|
for (int x = 0; x < arr.length; x++) {
|
||||||
val.append(" ");
|
val.append(" ");
|
||||||
val.append(arr[x]);
|
val.append(arr[x]);
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package net.i2p.i2pfirefox;
|
package net.i2p.i2pfirefox;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* I2PFirefox.java
|
* I2PFirefox.java
|
||||||
@ -58,14 +61,18 @@ public class I2PFirefox extends I2PCommonBrowser {
|
|||||||
return exePath;
|
return exePath;
|
||||||
}
|
}
|
||||||
private static String[] FIND_FIREFOX_SEARCH_PATHS_OSX() {
|
private static String[] FIND_FIREFOX_SEARCH_PATHS_OSX() {
|
||||||
String[] path =
|
String[] path = new String[] {"/Applications/Firefox.app/Contents/MacOS",
|
||||||
new String[] {"/Applications/Firefox.app", "/Applications/Waterfox.app",
|
"/Applications/Waterfox.app/Contents/MacOS",
|
||||||
"/Applications/Librewolf.app"};
|
"/Applications/Librewolf.app/Contents/MacOS"};
|
||||||
String[] exePath = new String[path.length];
|
String[] exes = new String[] {"firefox", "firefox-bin", "firefox-esr",
|
||||||
|
"waterfox", "waterfox-bin", "librewolf"};
|
||||||
|
String[] exePath = new String[path.length * exes.length];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (String s : path) {
|
for (String s : path) {
|
||||||
exePath[i] = s;
|
for (String exe : exes) {
|
||||||
i++;
|
exePath[i] = s + "/" + exe;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return exePath;
|
return exePath;
|
||||||
}
|
}
|
||||||
@ -439,20 +446,43 @@ public class I2PFirefox extends I2PCommonBrowser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isOSX()) {
|
if (isOSX()) {
|
||||||
String argString =
|
String argString = join(Arrays.copyOfRange(newArgs, 1, newArgs.length));
|
||||||
join(Arrays.copyOfRange(newArgs, 1, newArgs.length));
|
String[] fg = {""};
|
||||||
String[] finalArgs = {"open", newArgs[0], "--args", argString};
|
String[] lastArgs =
|
||||||
return new ProcessBuilder(finalArgs).directory(
|
Stream.concat(Arrays.stream(newArgs), Arrays.stream(fg))
|
||||||
I2PFirefoxProfileBuilder.runtimeDirectory(true));
|
.toArray(String[] ::new);
|
||||||
|
// String[] finalArgs = Stream.concat(Arrays.stream(initArgs),
|
||||||
|
// Arrays.stream(lastArgs)).toArray(String[]::new);
|
||||||
|
File bashScript = new File("i2pfirefox.sh");
|
||||||
|
if (bashScript.exists()) {
|
||||||
|
bashScript.delete();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
FileWriter bWriter = new FileWriter(bashScript);
|
||||||
|
PrintWriter bpWriter = new PrintWriter(bWriter);
|
||||||
|
bpWriter.println("#! /usr/bin/env sh");
|
||||||
|
bpWriter.println(join(lastArgs));
|
||||||
|
bpWriter.close();
|
||||||
|
bWriter.close();
|
||||||
|
if (!bashScript.canExecute()) {
|
||||||
|
bashScript.setExecutable(true);
|
||||||
|
}
|
||||||
|
return new ProcessBuilder(bashScript.getAbsolutePath())
|
||||||
|
.directory(I2PFirefoxProfileBuilder.runtimeDirectory(true));
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.warning(e.toString());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
} else {
|
} else {
|
||||||
return new ProcessBuilder(newArgs).directory(
|
return new ProcessBuilder(newArgs).directory(
|
||||||
I2PFirefoxProfileBuilder.runtimeDirectory(true));
|
I2PFirefoxProfileBuilder.runtimeDirectory(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} // else {
|
||||||
logger.info("No Firefox found.");
|
logger.info("No Firefox found.");
|
||||||
return new ProcessBuilder(args);
|
return new ProcessBuilder(args);
|
||||||
}
|
//}
|
||||||
|
// return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String usabilityMode() {
|
private String usabilityMode() {
|
||||||
@ -489,7 +519,7 @@ public class I2PFirefox extends I2PCommonBrowser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (validateProfileFirstRun(profileDirectory)) {
|
if (validateProfileFirstRun(profileDirectory)) {
|
||||||
if (isWindows() || isOSX()) {
|
if (isWindows()) {
|
||||||
ProcessBuilder hpb = headlessProcessBuilder(url);
|
ProcessBuilder hpb = headlessProcessBuilder(url);
|
||||||
try {
|
try {
|
||||||
Process hp = hpb.start();
|
Process hp = hpb.start();
|
||||||
|
Reference in New Issue
Block a user