#!/usr/bin/env python2.4 # # Univention Configuration Registry # list modified templates # # Copyright 2011 Univention GmbH # # http://www.univention.de/ # # All rights reserved. # # The source code of this program is made available # under the terms of the GNU Affero General Public License version 3 # (GNU AGPL V3) as published by the Free Software Foundation. # # Binary versions of this program provided by Univention to you as # well as other copyrighted, protected or trademarked materials like # Logos, graphics, fonts, specific documentations and configurations, # cryptographic keys etc. are subject to a license agreement between # you and Univention and not subject to the GNU AGPL V3. # # In the case you use this program under the terms of the GNU AGPL V3, # the program is provided 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public # License with the Debian GNU/Linux or Univention distribution in file # /usr/share/common-licenses/AGPL-3; if not, see # . import sys, md5 def md5sum(fpath): m = md5.new() try: f = file(fpath, 'rb') except IOError, e: return None buf = f.read(65536) while len(buf) > 0: m.update(buf) buf = f.read(65536) return m.hexdigest() try: dpkg_status = open('/var/lib/dpkg/status', 'r') except IOError, e: print e sys.exit(1) modified = [] original = [] for line in dpkg_status.readlines(): if line.startswith(' /etc/univention/templates/files/'): # path md5sum (obsolete) line = line.strip().split(' ') fpath = line[0].strip() fmd5 = line[1].strip() # skip obsolete and new conffiles if len( line ) > 2 or fmd5 == 'newconffile': continue if not fpath in original and not fpath in modified: if fmd5 == md5sum( fpath ): original.append( fpath ) else: modified.append( fpath ) for f in modified: print f sys.exit( len(modified) )