summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-08-27 17:12:48 +0000
committerLennart Poettering <lennart@poettering.net>2005-08-27 17:12:48 +0000
commit3c7af5cffa21cf302b357c6ab722cdb0615e1950 (patch)
tree065b692530f07e6db0d3372593bd1d83427bf238
parente7e6788a9596c781528980fca066f57d4afc3adb (diff)
* add new object ServiceTypeDatabase to avahi module for python
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@456 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
-rw-r--r--avahi-utils/avahi/Makefile.am17
-rw-r--r--avahi-utils/avahi/ServiceTypeDatabase.py.in97
2 files changed, 110 insertions, 4 deletions
diff --git a/avahi-utils/avahi/Makefile.am b/avahi-utils/avahi/Makefile.am
index 68c7147..c5a4be8 100644
--- a/avahi-utils/avahi/Makefile.am
+++ b/avahi-utils/avahi/Makefile.am
@@ -17,13 +17,22 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
+EXTRA_DIST = __init__.py SimpleGladeApp.py ServiceTypeDatabase.py.in
+
if HAVE_PYTHON
avahidir = $(pythondir)/avahi
-avahi_PYTHON = __init__.py SimpleGladeApp.py
+avahi_PYTHON = __init__.py SimpleGladeApp.py ServiceTypeDatabase.py
+
+BUILT_SOURCES = ServiceTypeDatabase.py
+
+ServiceTypeDatabase.py: ServiceTypeDatabase.py.in
+ sed -e 's,@PYTHON\@,$(PYTHON),g' \
+ -e 's,@pkgdatadir\@,$(pkgdatadir),g' $< > $@
+ chmod +x $@
+
+CLEANFILES=*.pyc *.pyo ServiceTypeDatabase.py
+
endif
-EXTRA_DIST = __init__.py SimpleGladeApp.py
-clean-local:
- rm -rf *.pyc *.pyo
diff --git a/avahi-utils/avahi/ServiceTypeDatabase.py.in b/avahi-utils/avahi/ServiceTypeDatabase.py.in
new file mode 100644
index 0000000..863c85d
--- /dev/null
+++ b/avahi-utils/avahi/ServiceTypeDatabase.py.in
@@ -0,0 +1,97 @@
+#!@PYTHON@
+# -*-python-*-
+# $Id$
+
+# This file is part of avahi.
+#
+# avahi is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# avahi is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with avahi; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA.
+
+import anydbm
+import locale
+
+locale.setlocale(locale.LC_ALL, '')
+
+class ServiceTypeDatabase:
+
+ def __init__(self, filename = "@pkgdatadir@/service-types.db"):
+
+ self.db = anydbm.open(filename, "r")
+
+ l = locale.getlocale(locale.LC_MESSAGES)
+
+ self.suffixes = ()
+
+ if not l[0] is None:
+
+ if not l[1] is None:
+ self.suffixes += (l[0] + "@" + l[1], )
+
+ self.suffixes += (l[0], )
+
+ i = l[0].find("_")
+
+ if i >= 0:
+
+ k = l[0][:i]
+
+ if not l[1] is None:
+ self.suffixes += (k + "@" + l[1], )
+
+ self.suffixes += (k, )
+
+
+ self.suffixes = tuple(map(lambda x: "["+x+"]", self.suffixes)) + ("", )
+
+ def __getitem__(self, key):
+
+ for suffix in self.suffixes:
+ try:
+ return self.db[key + suffix]
+ except KeyError:
+ pass
+
+ raise KeyError()
+
+ def has_key(self, key):
+
+ for suffix in self.suffixes:
+
+ if self.db.has_key(key + suffix):
+ return True
+
+ return False
+
+ def __contains__(self, item):
+
+ for suffix in self.suffixes:
+
+ if item+suffix in self.db:
+ return True
+
+ return False
+
+
+
+if __name__ == "__main__":
+
+ b = ServiceTypeDatabase()
+
+ print b["_http._tcp"]
+ print b["_ftp._tcp"]
+ print b["_webdav._tcp"]
+ print b["_webdavs._tcp"]
+
+ print b["gurki._tcp"]