This file is indexed.

/usr/share/doc/python3-dns/examples/caching.py is in python3-dns 3.0.4-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 
# From: KevinL <darius@bofh.net.au>
#   A simple dns answer cache - it's author notes:
#     "It's probably really bodgy code, tho - it was my early python..."
#   So don't send him abusive messages if you hate it. 
#
class DNSCache:
    """
    Covers the DNS object, keeps a cache of answers.  Clumsy as hell.
    """
    forCache = {}
    revCache = {}
    # cache failures for this long, in seconds
    negCache = 3600

    def __init__(self):
       import DNS
       DNS.ParseResolvConf()

    def lookup(self,IP = None,name = None):
        import DNS
	now = time.time()
        if (not IP) and (not name):
            return None
        if IP:
            if type(IP) != type(''):
                return None
            a = string.split(IP, '.')
            a.reverse()  
            name = string.join(a, '.')+'.in-addr.arpa'
            cache = self.revCache
            qt = 'ptr'
        else:
            if type(name) != type(''):
                return None
            cache = self.forCache
            qt = 'a'
        if name in cache:
	    # Check if it's timed out or not
            if cache[name][1] < now:
                del(cache[name])
            else:
                return(cache[name][0])
        x = DNS.DnsRequest(name,qtype=qt)
        try:
            x.req()
        except:
            return 'Timeout'
        if len(x.response.answers) > 0:
            cache[name] = ( x.response.answers[0]['data'], x.time_finish + 
			    x.response.answers[0]['ttl'])
        else:
            cache[name] = (None,now+self.negCache)
        return cache[name][0]