diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /tools/asn2deb | |
parent | Initial commit. (diff) | |
download | wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip |
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tools/asn2deb')
-rwxr-xr-x | tools/asn2deb | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/tools/asn2deb b/tools/asn2deb new file mode 100755 index 00000000..926d34e2 --- /dev/null +++ b/tools/asn2deb @@ -0,0 +1,179 @@ +#!/usr/bin/env python3 + +# asn2deb - quick hack by W. Borgert <debacle@debian.org> to create +# Debian GNU/Linux packages from ASN.1 files for Wireshark. +# Copyright 2004, W. Borgert + +# ASN.1 module for Wireshark, use of snacc type table: +# Copyright 2003, Matthijs Melchior <matthijs.melchior@xs4all.nl> +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.com> +# Copyright 1998 Gerald Combs + +# SPDX-License-Identifier: GPL-2.0-or-later + +import getopt, os, string, sys, time + +scriptinfo = """asn2deb version 2004-02-17 +Copyright 2004, W. Borgert +Free software, released under the terms of the GPL.""" + +options = {'asn': None, + 'dbopts': "", + 'email': "invalid@invalid.invalid", + 'help': 0, + 'name': "No Name", + 'preserve': 0, + 'version': 0} + +def create_file(filename, content, mode = None): + """Create a file with given content.""" + global options + if options['preserve'] and os.path.isfile(filename): + return + f = open(filename, 'w') + f.write(content) + f.close() + if mode: + os.chmod(filename, mode) + +def create_files(version, deb, email, asn, name, iso, rfc): + """Create all files for the .deb build process.""" + base = asn.lower()[:-5] + + if not os.path.isdir("packaging/debian"): + os.mkdir("packaging/debian") + + create_file("packaging/debian/rules", """#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/autotools.mk + +PREFIX=`pwd`/packaging/debian/wireshark-asn1-%s + +binary-post-install/wireshark-asn1-%s:: + rm -f $(PREFIX)/usr/lib/wireshark/plugins/%s/*.a +""" % (base, base, version), 0o755) + + create_file("packaging/debian/control", """Source: wireshark-asn1-%s +Section: net +Priority: optional +Maintainer: %s <%s> +Standards-Version: 3.6.1.0 +Build-Depends: snacc, autotools-dev, debhelper, cdbs + +Package: wireshark-asn1-%s +Architecture: all +Depends: wireshark (= %s) +Description: ASN.1/BER dissector for %s + This package provides a type table for decoding BER (Basic Encoding + Rules) data over TCP or UDP, described by an ASN.1 (Abstract Syntax + Notation 1) file '%s.asn1'. +""" % (base, name, email, base, deb, base, base)) + + create_file("packaging/debian/changelog", + """wireshark-asn1-%s (0.0.1-1) unstable; urgency=low + + * Automatically created package. + + -- %s <%s> %s +""" % (base, name, email, rfc + "\n (" + iso + ")")) + + create_file("packaging/debian/copyright", + """This package has been created automatically be asn2deb on +%s for Debian GNU/Linux. + +Wireshark: https://www.wireshark.com/ + +Copyright: + +GPL, as evidenced by existence of GPL license file \"COPYING\". +(the GNU GPL may be viewed on Debian systems in +/usr/share/common-licenses/GPL) +""" % (iso)) + +def get_wrs_version(): + """Detect version of wireshark-dev package.""" + deb = os.popen( + "dpkg-query -W --showformat='${Version}' wireshark-dev").read() + debv = string.find(deb, "-") + if debv == -1: debv = len(deb) + version = deb[string.find(deb, ":")+1:debv] + return version, deb + +def get_time(): + """Detect current time and return ISO and RFC time string.""" + currenttime = time.gmtime() + return time.strftime("%Y-%m-%d %H:%M:%S +0000", currenttime), \ + time.strftime("%a, %d %b %Y %H:%M:%S +0000", currenttime) + +def main(): + global options + process_opts(sys.argv) + iso, rfc = get_time() + version, deb = get_wrs_version() + create_files(version, deb, + options['email'], options['asn'], options['name'], + iso, rfc) + os.system("dpkg-buildpackage " + options['dbopts']) + +def process_opts(argv): + """Process command line options.""" + global options + try: + opts, args = getopt.getopt(argv[1:], "a:d:e:hn:pv", + ["asn=", + "dbopts=", + "email=", + "help", + "name=", + "preserve", + "version"]) + except getopt.GetoptError: + usage(argv[0]) + sys.exit(1) + for o, a in opts: + if o in ("-a", "--asn"): + options['asn'] = a + if o in ("-d", "--dbopts"): + options['dbopts'] = a + if o in ("-e", "--email"): + options['email'] = a + if o in ("-h", "--help"): + options['help'] = 1 + if o in ("-n", "--name"): + options['name'] = a + if o in ("-p", "--preserve"): + options['preserve'] = 1 + if o in ("-v", "--version"): + options['version'] = 1 + if options['help']: + usage(argv[0]) + sys.exit(0) + if options['version']: + print(scriptinfo) + sys.exit(0) + if not options['asn']: + print("mandatory ASN.1 file parameter missing") + sys.exit(1) + if not os.access(options['asn'], os.R_OK): + print("ASN.1 file not accessible") + sys.exit(1) + +def usage(name): + """Print usage help.""" + print("Usage: " + name + " <parameters>\n" + \ + "Parameters are\n" + \ + " --asn -a asn1file, ASN.1 file to use (mandatory)\n" + \ + " --dbopts -d opts, options for dpkg-buildpackage\n" + \ + " --email -e address, use e-mail address\n" + \ + " --help -h, print help and exit\n" + \ + " --name -n name, use user name\n" + \ + " --preserve -p, do not overwrite files\n" + \ + " --version -v, print version and exit\n" + \ + "Example:\n" + \ + name + " -e me@foo.net -a bar.asn1 -n \"My Name\" " + \ + "-d \"-rfakeroot -uc -us\"") +if __name__ == '__main__': + main() |