Re: [Twisted-Python] How to get the client ip when it ask a resolution with twisted.names

2021-05-01 Thread Adi Roiban
Hi

On Sat, 1 May 2021 at 07:43, cont...@benoit-laviale.fr <
cont...@benoit-laviale.fr> wrote:

> Dear all,
>
> I am working on twisted names since some days to make kind of filtering
> system (with domains blacklists).
> So I made my own resolver that can reply defer.fail(error.DomainError())
> to send the query to the next resolver (and in this case, it will be
> resolve) or defer.fail(dns.AuthoritativeDomainError(query.name.name)) to
> reply NXDOMAIN that can "block" the domain to the final client.
>
> That part is working well.
>
> Next, i would like to "block" the resolution regarding the device (Mac
> address/IP/???).
>
> I would like something like that :
>
> if self.query.meta.client.ip == b"192.168.0.5" or
> self.query.meta.client.mac == "XX:YY:ZZ:":
>  self.do_something()
>
> My use case is that device of Kelly, (Kelly is a teenager of 12 years)
> cant use youtube.com at all, but other devices are allowed to get the
> resolution.
> How can I get the IP/Name/mac (an identifier) of the device that's
> querying my custom dns?
> I read something about datagrams, but in my case i think i must get this
> information in my resolver...
>
> Thx and cheers.
>

I think you are using DNS over UDP... so to understand how UDP works with
Twisted you can check this page
https://twistedmatrix.com/documents/current/core/howto/udp.html

 I have never used Twisted names so I am just trying to help based on my
general knowledge of Twisted design
... but I think the entry point is here

https://github.com/twisted/twisted/blob/63649469c1fe46d8a713e8034239ac3cc0498ea7/src/twisted/names/dns.py#L3242

then it goes to here

https://github.com/twisted/twisted/blob/63649469c1fe46d8a713e8034239ac3cc0498ea7/src/twisted/names/server.py#L538

and then in handleQuery where I see that the  query is done without the
`address`...but the address is available again in
`gotResolverResponse`.. so maybe that help

---

Hope it helps

Cheers

-- 
Adi Roiban
___
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python


Re: [Twisted-Python] Does anyone know why trunk is failing CI on PyPy 7.3.4?

2021-05-01 Thread Adi Roiban
On Thu, 29 Apr 2021 at 07:23, Glyph  wrote:

> It's merged.
>
>
Thanks for the merge.

I will try to help Twisted by keeping the trunk green.

If there is any other issue with the trunk branch getting red out of the
blue, ping me and I will try to help.

---

We now have a fix for Twisted, but I think that this is a bug in PYPY 7.3.4

FYI I have reported this bug upstream.

https://foss.heptapod.net/pypy/pypy/-/issues/3451

Cheers


> On Wed, Apr 28, 2021, at 3:07 AM, Adi Roiban wrote:
>
> Hi
>
> PR at https://github.com/twisted/twisted/pull/1592
>
> I hope we can get a quick review and make the trunk green again :)
>
> Cheeers
>
> On Wed, 28 Apr 2021 at 10:30, Adi Roiban  wrote:
>
> Hi,
>
> A quick diff to fix it... and a ticket
> https://twistedmatrix.com/trac/ticket/10187
>
> I will create a PR and we can refine the fix during the review.
>
>
> diff --git a/src/twisted/words/protocols/irc.py
> b/src/twisted/words/protocols/irc.py
> index 75300019b..a97abce2e 100644
> --- a/src/twisted/words/protocols/irc.py
> +++ b/src/twisted/words/protocols/irc.py
> @@ -3678,10 +3678,10 @@ def ctcpExtract(message):
>  normal_messages.append(messages.pop(0))
>  odd = not odd
>
> -extended_messages[:] = filter(None, extended_messages)
> -normal_messages[:] = filter(None, normal_messages)
> +extended_messages[:] = list(filter(None, extended_messages))
> +normal_messages[:] = list(filter(None, normal_messages))
>
> -extended_messages[:] = map(ctcpDequote, extended_messages)
> +extended_messages[:] = list(map(ctcpDequote, extended_messages))
>
>
> On Wed, 28 Apr 2021 at 10:01, Adi Roiban  wrote:
>
> Hi Wim,
>
> Thanks for the report
>
> On Tue, 27 Apr 2021 at 08:14, Wim Lewis  wrote:
>
> TLDR: Twisted appears broken on PyPy 7.3.4 (aka "3.7.10")?
>
> I don't have time right now to set up a PyPy-capable environment and try
> to reproduce this, but perhaps someone does?
>
> Long version:
>
> Trunk has been broken since the last merge a week or so ago, but I
> don't think the breakage is due to that merge.  As an experiment I made
> a PR based off the last successful version of trunk, with a whitespace
> change, and it now fails CI as well. So I think the failure must be due
> to some change that isn't in Twisted or controlled-for by tox.
>
> The failure in all cases is in the pypy-3.7-alldeps-nocov-posix task.
> Unlike our usual CI problems it doesn't seem to be a random failure: it
> fails all the time in the same place. But the place doesn't make sense
> to me. It's in the IRC CTCP tests, and they fail in the same ways each
> time (an expected response is not received).
>
> The pair of CI runs closest to the change are these:
>
> run 5793: https://github.com/twisted/twisted/runs/2328450554
> run 5809: https://github.com/twisted/twisted/runs/2360415474
>
> There are a lot of differences, but sys.version went from 3.7.9 to
> 3.7.10 between those runs, so that seems like the most likely culprit.
>
> Last working:
> >  sys.version  : 3.7.9 (7e6e2bb30ac5, Nov 18 2020, 10:55:52)
> >  [PyPy 7.3.3-beta0 with GCC 7.3.1 20180303 (Red Hat 7.3.1-5)]
> >  sys.prefix   : /opt/hostedtoolcache/PyPy/3.7.9/x64
> >  sys.exec_prefix  : /opt/hostedtoolcache/PyPy/3.7.9/x64
> >  sys.executable   :
> /opt/hostedtoolcache/PyPy/3.7.9/x64/bin/python
>
> First broken:
> >  sys.version  : 3.7.10 (51efa818fd9b, Apr 04 2021, 11:22:34)
> >  [PyPy 7.3.4 with GCC 7.3.1 20180303 (Red Hat 7.3.1-5)]
> >  sys.prefix   : /opt/hostedtoolcache/PyPy/3.7.10/x64
> >  sys.exec_prefix  : /opt/hostedtoolcache/PyPy/3.7.10/x64
> >  sys.executable   :
> /opt/hostedtoolcache/PyPy/3.7.10/x64/bin/python
>
> PyPy's release notes for 7.3.4 don't list anything that jumps out at me:
>
> https://doc.pypy.org/en/latest/whatsnew-pypy3-7.3.4.html
>
> My guess would be some latent timing bug in Twisted that was uncovered
> by pypy execution time changes (I don't imagine that the CTCP code gets
> exercised very heavily these days) or perhaps PyPy got a bug.
>
>
> Wim.
>
>
> I have setup a pyp3.7.4 and I can reproduce it.
>
> I see 3 options:
>
> * Option A: Skip those tests on pypy  and open a separate ticket to fix
> the test
> * Option B: Pin pypy 3.7.9 for GHA and open a separate ticket to fix the
> test and unpin it
> * Option C: Just fix the tests :)
>
> I am looking at option C for one hour... if I can't find a fix will look
> into option A.
>
> Cheers
>
> --
> Adi Roiban
>
>
>
> --
> Adi Roiban
>
>
>
> --
> Adi Roiban
> ___
> Twisted-Python mailing list
> Twisted-Python@twistedmatrix.com
> https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
>
>

-- 
Adi Roiban
___
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python


[Twisted-Python] How to get the client ip when it ask a resolution with twisted.names

2021-05-01 Thread cont...@benoit-laviale.fr

Dear all,

I am working on twisted names since some days to make kind of filtering system 
(with domains blacklists).
So I made my own resolver that can reply defer.fail(error.DomainError()) to 
send the query to the next resolver (and in this case, it will be resolve) or 
defer.fail(dns.AuthoritativeDomainError(query.name.name)) to reply NXDOMAIN 
that can "block" the domain to the final client.

That part is working well.

Next, i would like to "block" the resolution regarding the device (Mac 
address/IP/???).

I would like something like that :

if self.query.meta.client.ip == b"192.168.0.5" or self.query.meta.client.mac == 
"XX:YY:ZZ:":
 self.do_something()

My use case is that device of Kelly, (Kelly is a teenager of 12 years) cant use 
youtube.com at all, but other devices are allowed to get the resolution.
How can I get the IP/Name/mac (an identifier) of the device that's querying my 
custom dns?
I read something about datagrams, but in my case i think i must get this 
information in my resolver...

Thx and cheers.

Benoît
 
___
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python