• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/ap/gpl/timemachine/avahi-0.6.25/avahi-python/avahi/
1#!@PYTHON@
2# -*-python-*-
3# $Id$
4
5# This file is part of avahi.
6#
7# avahi is free software; you can redistribute it and/or modify it
8# under the terms of the GNU Lesser General Public License as
9# published by the Free Software Foundation; either version 2 of the
10# License, or (at your option) any later version.
11#
12# avahi is distributed in the hope that it will be useful, but WITHOUT
13# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15# License for more details.
16#
17# You should have received a copy of the GNU Lesser General Public
18# License along with avahi; if not, write to the Free Software
19# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
20# USA.
21
22import @DBM@
23import locale
24import re
25
26locale.setlocale(locale.LC_ALL, '')
27
28class ServiceTypeDatabase:
29
30    def __init__(self, filename = "@pkglibdir@/service-types.db"):
31
32        self.db = @DBM@.open(filename, "r")
33
34        l = locale.getlocale(locale.LC_MESSAGES)
35
36        self.suffixes = ()
37
38        if not l[0] is None:
39
40            if not l[1] is None:
41                self.suffixes += (l[0] + "@" + l[1], )
42
43            self.suffixes += (l[0], )
44
45            i = l[0].find("_")
46
47            if i >= 0:
48
49                k = l[0][:i]
50                
51                if not l[1] is None:
52                    self.suffixes += (k + "@" + l[1], )
53
54                self.suffixes += (k, )
55            
56            
57        self.suffixes = tuple(map(lambda x:  "["+x+"]", self.suffixes)) + ("", )
58
59    def __getitem__(self, key):
60
61        for suffix in self.suffixes:
62            try:
63                return self.db[key + suffix]
64            except KeyError:
65                pass
66
67        raise KeyError()
68
69    def items(self):
70
71        items = []
72        @FIRST_KEY@
73        @CHECK_KEY@
74            if re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+', key) and not re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+\[.*\]', key):
75                localized_service_name = self[key]
76                items.append((key, localized_service_name))
77            @NEXT_KEY@
78        return items
79
80    def has_key(self, key):
81
82        for suffix in self.suffixes:
83
84            if self.db.has_key(key + suffix):
85                return True
86            
87        return False
88
89    def __contains__(self, item):
90
91        for suffix in self.suffixes:
92
93            if item+suffix in self.db:
94                return True
95
96        return False
97        
98
99        
100if __name__ == "__main__":
101    
102    b = ServiceTypeDatabase()
103    print b.items()
104
105    print b["_http._tcp"]
106    print b["_ftp._tcp"]
107    print b["_webdav._tcp"]
108    print b["_webdavs._tcp"]
109
110    print b["gurki._tcp"]
111