rules: support more dnsmasq rules. close #122

This commit is contained in:
PeratX 2022-05-24 11:37:44 +08:00
parent e559925805
commit 29b60b3ba7
2 changed files with 14 additions and 5 deletions

View File

@ -57,11 +57,13 @@ public class Daedalus extends Application {
public static final ArrayList<Rule> RULES = new ArrayList<Rule>() {{ public static final ArrayList<Rule> RULES = new ArrayList<Rule>() {{
add(new Rule("googlehosts/hosts", "googlehosts.hosts", Rule.TYPE_HOSTS, add(new Rule("googlehosts/hosts", "googlehosts.hosts", Rule.TYPE_HOSTS,
"https://raw.githubusercontent.com/googlehosts/hosts/master/hosts-files/hosts", false)); "https://raw.githubusercontent.com/googlehosts/hosts/master/hosts-files/hosts", false));
add(new Rule("vokins/yhosts", "vokins.hosts", Rule.TYPE_HOSTS, add(new Rule("VeleSila/yhosts", "vokins.hosts", Rule.TYPE_HOSTS,
"https://raw.githubusercontent.com/vokins/yhosts/master/hosts", false)); "https://raw.githubusercontent.com/VeleSila/yhosts/master/hosts.txt", false));
add(new Rule("adaway", "adaway.hosts", Rule.TYPE_HOSTS, add(new Rule("adaway", "adaway.hosts", Rule.TYPE_HOSTS,
"https://adaway.org/hosts.txt", false)); "https://adaway.org/hosts.txt", false));
//Build-in DNSMasq rule providers //Build-in DNSMasq rule providers
add(new Rule("anti-AD", "antiad.dnsmasq", Rule.TYPE_DNAMASQ,
"https://anti-ad.net/anti-ad-for-dnsmasq.conf", false));
add(new Rule("vokins/yhosts/union", "union.dnsmasq", Rule.TYPE_DNAMASQ, add(new Rule("vokins/yhosts/union", "union.dnsmasq", Rule.TYPE_DNAMASQ,
"https://raw.githubusercontent.com/vokins/yhosts/master/dnsmasq/union.conf", false)); "https://raw.githubusercontent.com/vokins/yhosts/master/dnsmasq/union.conf", false));
}}; }};

View File

@ -108,7 +108,7 @@ public class RuleResolver implements Runnable {
for (String hostsFile : hostsFiles) { for (String hostsFile : hostsFiles) {
File file = new File(hostsFile); File file = new File(hostsFile);
if (file.canRead()) { if (file.canRead()) {
Logger.info("Loading hosts from " + file.toString()); Logger.info("Loading hosts from " + file);
FileInputStream stream = new FileInputStream(file); FileInputStream stream = new FileInputStream(file);
BufferedReader dataIO = new BufferedReader(new InputStreamReader(stream)); BufferedReader dataIO = new BufferedReader(new InputStreamReader(stream));
String strLine; String strLine;
@ -136,7 +136,7 @@ public class RuleResolver implements Runnable {
for (String dnsmasqFile : dnsmasqFiles) { for (String dnsmasqFile : dnsmasqFiles) {
File file = new File(dnsmasqFile); File file = new File(dnsmasqFile);
if (file.canRead()) { if (file.canRead()) {
Logger.info("Loading DNSMasq configuration from " + file.toString()); Logger.info("Loading DNSMasq configuration from " + file);
FileInputStream stream = new FileInputStream(file); FileInputStream stream = new FileInputStream(file);
BufferedReader dataIO = new BufferedReader(new InputStreamReader(stream)); BufferedReader dataIO = new BufferedReader(new InputStreamReader(stream));
String strLine; String strLine;
@ -145,7 +145,12 @@ public class RuleResolver implements Runnable {
while ((strLine = dataIO.readLine()) != null) { while ((strLine = dataIO.readLine()) != null) {
if (!strLine.equals("") && !strLine.startsWith("#")) { if (!strLine.equals("") && !strLine.startsWith("#")) {
data = strLine.split("/"); data = strLine.split("/");
if (data.length == 3 && data[0].equals("address=")) { if (data.length >= 2 && data[0].equals("address=")) {
if (data.length == 2) {
rulesA.put(data[1], "0.0.0.0");
count++;
continue;
}
if (data[1].startsWith(".")) { if (data[1].startsWith(".")) {
data[1] = data[1].substring(1); data[1] = data[1].substring(1);
} }
@ -153,6 +158,8 @@ public class RuleResolver implements Runnable {
rulesAAAA.put(data[1], data[2]); rulesAAAA.put(data[1], data[2]);
} else if (strLine.contains(".")) {//IPv4 } else if (strLine.contains(".")) {//IPv4
rulesA.put(data[1], data[2]); rulesA.put(data[1], data[2]);
} else {
rulesA.put(data[1], "0.0.0.0");
} }
count++; count++;
} }