<div dir="ltr"><div>Hi,</div><div><br></div><div>I looked around the source code and made some modifications to fit my needs.</div><div>With this patch,</div><div><br></div><div>server=/.google./<a href="http://127.0.0.1#5053">127.0.0.1#5053</a>  # match domains with .google. in it or ending with .google<br></div><div><div><div>#server=/.google/<a href="http://127.0.0.1#5053">127.0.0.1#5053</a>  # ditto</div><div>server=/.google.co./<a href="http://127.0.0.1#5053">127.0.0.1#5053</a>    # the same as server=/.<a href="http://google.co/127.0.0.1#5053">google.co/127.0.0.1#5053</a></div></div></div><div><div>server=/.<a href="http://google.com/127.0.0.1#5053">google.com/127.0.0.1#5053</a>  # the same as server=/.google.com./<a href="http://127.0.0.1#5053">127.0.0.1#5053</a></div><div><br></div><div>.<a href="http://google.com.hk">google.com.hk</a> will match the /.<a href="http://google.com/">google.com/</a>, and .<a href="http://google.co.hk">google.co.hk</a> will match the /.google.co./<br></div></div><div><br></div><div>Regards,</div><div>hmj</div><div><br></div><div>---<br></div><div>diff --git a/src/forward.c b/src/forward.c</div>index e4745a3..6b5976e 100644<br>--- a/src/forward.c<br>+++ b/src/forward.c<br>@@ -150,10 +150,19 @@ static unsigned int search_servers(time_t now, union all_addr **addrpp, unsigned<br>       }<br>     else if (serv->flags & SERV_HAS_DOMAIN)<br>       {<br>+ int isequal;<br>         unsigned int domainlen = strlen(serv->domain);<br>-    char *matchstart = qdomain + namelen - domainlen;<br>+    char *matchstart = strcasestr(qdomain, serv->domain);<br>+     if ((matchstart != NULL) && (*(matchstart+domainlen) == 0 || *(matchstart+domainlen) == '.'))<br>+            isequal = 1;<br>+   else<br>+          {<br>+          matchstart = qdomain + namelen - domainlen;<br>+        isequal = hostname_isequal(matchstart, serv->domain);<br>+         }<br>+<br>      if (namelen >= domainlen &&<br>-           hostname_isequal(matchstart, serv->domain) &&<br>+           isequal &&<br>         (domainlen == 0 || namelen == domainlen || *(matchstart-1) == '.' ))<br>     {<br>             if ((serv->flags & SERV_NO_REBIND) && norebind)    <br>@@ -589,9 +598,17 @@ static size_t process_reply(struct dns_header *header, time_t now, struct server<br>       unsigned int matchlen = 0;<br>       for (ipset_pos = daemon->ipsets; ipset_pos; ipset_pos = ipset_pos->next) <br>   {<br>+      int isequal;<br>        unsigned int domainlen = strlen(ipset_pos->domain);<br>-      char *matchstart = daemon->namebuff + namelen - domainlen;<br>-       if (namelen >= domainlen && hostname_isequal(matchstart, ipset_pos->domain) &&<br>+        char *matchstart = strcasestr(daemon->namebuff, ipset_pos->domain);<br>+   if ((matchstart != NULL) && (*(matchstart+domainlen) == 0 || *(matchstart+domainlen) == '.'))<br>+           isequal = 1;<br>+          else<br>+            {<br>+              matchstart = daemon->namebuff + namelen - domainlen;<br>+           isequal = hostname_isequal(matchstart, ipset_pos->domain);<br>+           }<br>+        if (namelen >= domainlen && isequal &&<br>               (domainlen == 0 || namelen == domainlen || *(matchstart - 1) == '.' ) &&<br>          domainlen >= matchlen) <br><div>           {</div><div>--<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Nov 24, 2019 at 4:45 PM Geert Stappers <<a href="mailto:stappers@stappers.nl">stappers@stappers.nl</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Sun, Nov 24, 2019 at 09:09:20AM +0800, Top Quoter wrote:<br>
> On Sun, Nov 24, 2019 at 1:10 AM Geert Stappers wrote:<br>
> > On Sat, Nov 23, 2019 at 11:48:45PM +0800, New to Mailinglists wrote:<br>
> > > In the config file, I have to write several lines for all domains .<br>
> > > <a href="http://google.com.ar" rel="noreferrer" target="_blank">google.com.ar</a>, .<a href="http://google.com.jp" rel="noreferrer" target="_blank">google.com.jp</a>, etc. For example,<br>
> > ><br>
> > >     server=/.<a href="http://google.com.ar/127.0.0.1#5053" rel="noreferrer" target="_blank">google.com.ar/127.0.0.1#5053</a><br>
> > >     server=/.<a href="http://google.com.jp/127.0.0.1#5053" rel="noreferrer" target="_blank">google.com.jp/127.0.0.1#5053</a><br>
> > ><br>
> > > I just wonder it may be more friendly to use only one line, as follows,<br>
> > ><br>
> > >    server=/.google.com./<a href="http://127.0.0.1#5053" rel="noreferrer" target="_blank">127.0.0.1#5053</a><br>
> > ><br>
> > > to match any .google.com.XX<br>
> > ><br>
> ><br>
> > Please report back if<br>
> ><br>
> >     server=/.google.com.*/<a href="http://127.0.0.1#5053" rel="noreferrer" target="_blank">127.0.0.1#5053</a><br>
> ><br>
> > fits your needs.<br>
> ><br>
> ><br>
> No.<br>
> <br>
> server=/.google.com.*/<a href="http://127.0.0.1#5053" rel="noreferrer" target="_blank">127.0.0.1#5053</a><br>
> <br>
> will not match .google.com.XX<br>
<br>
<br>
Acknowledge.<br>
<br>
Time will tell which other possiblities exist.<br>
<br>
<br>
Regards<br>
Geert Stappers<br>
<br>
P.S.<br>
Make reading in the discussion order possible.<br>
Example given<br>
<a href="http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2019q4/013526.html" rel="noreferrer" target="_blank">http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2019q4/013526.html</a><br>
Reply below the text.<br>
<br>
_______________________________________________<br>
Dnsmasq-discuss mailing list<br>
<a href="mailto:Dnsmasq-discuss@lists.thekelleys.org.uk" target="_blank">Dnsmasq-discuss@lists.thekelleys.org.uk</a><br>
<a href="http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss" rel="noreferrer" target="_blank">http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss</a><br>
</blockquote></div>