diff --git a/media-dispatcher b/media-dispatcher old mode 100644 new mode 100755 index 58411a2..4269843 --- a/media-dispatcher +++ b/media-dispatcher @@ -1,77 +1,77 @@ -#!/usr/bin/env python +#!/usr/bin/python2 if __name__ == '__main__': import mediaproxy import sys from application import log from application.process import process, ProcessError from argparse import ArgumentParser name = 'media-dispatcher' fullname = 'MediaProxy Dispatcher' description = 'MediaProxy Dispatcher component' process.configuration.user_directory = None process.configuration.subdirectory = mediaproxy.mediaproxy_subdirectory process.runtime.subdirectory = mediaproxy.mediaproxy_subdirectory parser = ArgumentParser(usage='%(prog)s [options]') parser.add_argument('--version', action='version', version='%(prog)s {}'.format(mediaproxy.__version__)) parser.add_argument('--systemd', action='store_true', help='run as a systemd simple service and log to journal') parser.add_argument('--no-fork', action='store_false', dest='fork', help='run in the foreground and log to the terminal') parser.add_argument('--config-dir', dest='config_directory', default=None, help='the configuration directory ({})'.format(process.configuration.system_directory), metavar='PATH') parser.add_argument('--runtime-dir', dest='runtime_directory', default=None, help='the runtime directory ({})'.format(process.runtime.directory), metavar='PATH') parser.add_argument('--debug', action='store_true', help='enable verbose logging') parser.add_argument('--debug-memory', action='store_true', help='enable memory debugging') options = parser.parse_args() log.Formatter.prefix_format = '{record.levelname:<8s} ' if options.config_directory is not None: process.configuration.local_directory = options.config_directory if options.runtime_directory is not None: process.runtime.directory = options.runtime_directory try: process.runtime.create_directory() except ProcessError as e: log.critical('Cannot start %s: %s' % (fullname, e)) sys.exit(1) if options.systemd: from systemd.journal import JournalHandler log.set_handler(JournalHandler(SYSLOG_IDENTIFIER=name)) log.capture_output() elif options.fork: try: process.daemonize(pidfile='{}.pid'.format(name)) except ProcessError as e: log.critical('Cannot start %s: %s' % (fullname, e)) sys.exit(1) log.use_syslog(name) log.info('Starting %s %s' % (fullname, mediaproxy.__version__)) from mediaproxy.dispatcher import Dispatcher from mediaproxy.configuration import DispatcherConfig log.level.current = log.level.DEBUG if options.debug else DispatcherConfig.log_level if options.debug_memory: from application.debug.memory import memory_dump try: dispatcher = Dispatcher() except Exception as e: log.critical('Failed to create %s: %s' % (fullname, e)) if type(e) is not RuntimeError: log.exception() sys.exit(1) dispatcher.run() if options.debug_memory: memory_dump() diff --git a/media-relay b/media-relay old mode 100644 new mode 100755 index 05b5162..5c59023 --- a/media-relay +++ b/media-relay @@ -1,120 +1,120 @@ -#!/usr/bin/env python +#!/usr/bin/python2 if __name__ == '__main__': import mediaproxy import errno import sys import subprocess from application import log from application.process import process, ProcessError from application.version import Version from argparse import ArgumentParser IP_FORWARD_FILE = '/proc/sys/net/ipv4/ip_forward' CONNTRACK_ACCT_FILE = '/proc/sys/net/netfilter/nf_conntrack_acct' KERNEL_VERSION_FILE = '/proc/sys/kernel/osrelease' name = 'media-relay' fullname = 'MediaProxy Relay' description = 'MediaProxy Relay component' process.configuration.user_directory = None process.configuration.subdirectory = mediaproxy.mediaproxy_subdirectory process.runtime.subdirectory = mediaproxy.mediaproxy_subdirectory parser = ArgumentParser(usage='%(prog)s [options]') parser.add_argument('--version', action='version', version='%(prog)s {}'.format(mediaproxy.__version__)) parser.add_argument('--systemd', action='store_true', help='run as a systemd simple service and log to journal') parser.add_argument('--no-fork', action='store_false', dest='fork', help='run in the foreground and log to the terminal') parser.add_argument('--config-dir', dest='config_directory', default=None, help='the configuration directory ({})'.format(process.configuration.system_directory), metavar='PATH') parser.add_argument('--runtime-dir', dest='runtime_directory', default=None, help='the runtime directory ({})'.format(process.runtime.directory), metavar='PATH') parser.add_argument('--debug', action='store_true', help='enable verbose logging') parser.add_argument('--debug-memory', action='store_true', help='enable memory debugging') options = parser.parse_args() log.Formatter.prefix_format = '{record.levelname:<8s} ' if options.config_directory is not None: process.configuration.local_directory = options.config_directory if options.runtime_directory is not None: process.runtime.directory = options.runtime_directory if not sys.platform.startswith('linux'): log.critical('Cannot start %s. A Linux host is required for operation.' % fullname) sys.exit(1) try: subprocess.call(['modprobe', 'ip_tables'], env={'PATH': '/usr/sbin:/sbin:/usr/bin:/bin'}) except OSError as e: log.critical('Cannot start %s: failed to load the ip_tables kernel module: %s' % (fullname, e)) sys.exit(1) try: kernel_version = Version.parse(open(KERNEL_VERSION_FILE).read().strip()) except (OSError, IOError, ValueError): log.critical('Could not determine Linux kernel version') sys.exit(1) if kernel_version < Version(2, 6, 18): log.critical('Linux kernel version 2.6.18 or newer is required to run the media relay') sys.exit(1) try: ip_forward = bool(int(open(IP_FORWARD_FILE).read())) except (OSError, IOError, ValueError): ip_forward = False if not ip_forward: log.critical('IP forwarding is not available or not enabled (check %s)' % IP_FORWARD_FILE) sys.exit(1) try: with open(CONNTRACK_ACCT_FILE, 'w') as acct_file: acct_file.write('1') except (IOError, OSError) as e: if e.errno != errno.ENOENT: log.critical('Could not enable conntrack rule counters (check %s): %s' % (CONNTRACK_ACCT_FILE, e)) sys.exit(1) if options.systemd: from systemd.journal import JournalHandler log.set_handler(JournalHandler(SYSLOG_IDENTIFIER=name)) log.capture_output() elif options.fork: try: process.daemonize(pidfile='{}.pid'.format(name)) except ProcessError as e: log.critical('Cannot start %s: %s' % (fullname, e)) sys.exit(1) log.use_syslog(name) log.info('Starting %s %s' % (fullname, mediaproxy.__version__)) try: process.wait_for_network(wait_time=10, wait_message='Waiting for network to become available...') except KeyboardInterrupt: sys.exit(0) except RuntimeError as e: log.critical('Cannot start %s: %s' % (fullname, e)) sys.exit(1) try: from mediaproxy.relay import MediaRelay from mediaproxy.configuration import RelayConfig log.level.current = log.level.DEBUG if options.debug else RelayConfig.log_level if options.debug_memory: from application.debug.memory import memory_dump relay = MediaRelay() except Exception as e: log.critical('Failed to create %s: %s' % (fullname, e)) if type(e) is not RuntimeError: log.exception() sys.exit(1) relay.run() if options.debug_memory: memory_dump() diff --git a/setup.py b/setup.py old mode 100644 new mode 100755 index e448388..e2a8d2f --- a/setup.py +++ b/setup.py @@ -1,54 +1,54 @@ -#!/usr/bin/python +#!/usr/bin/python2 import re import sys import mediaproxy from distutils.core import setup, Extension # Get the title and description from README readme = open('README').read() title, description = re.findall(r'^\s*([^\n]+)\s+(.*)$', readme, re.DOTALL)[0] # media-relay is not supported on non-linux platforms # if sys.platform == 'linux2': scripts = ['media-relay', 'media-dispatcher'] ext_modules = [Extension(name='mediaproxy.interfaces.system._conntrack', sources=['mediaproxy/interfaces/system/_conntrack.c'], libraries=['netfilter_conntrack', 'ip4tc'], define_macros=[('MODULE_VERSION', mediaproxy.__version__)])] else: print('WARNING: skipping the media relay component as this is a non-linux platform') scripts = ['media-dispatcher'] ext_modules = [] setup( name='mediaproxy', version=mediaproxy.__version__, description=title, long_description=description, url='http://www.ag-projects.com/MediaProxy.html', author='AG Projects', author_email='support@ag-projects.com', license='GPLv2', platforms=['Linux'], classifiers=[ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Service Providers', 'License :: GNU General Public License (GPLv2)', 'Operating System :: POSIX :: Linux', 'Programming Language :: Python', 'Programming Language :: C' ], packages=['mediaproxy', 'mediaproxy.configuration', 'mediaproxy.interfaces', 'mediaproxy.interfaces.accounting', 'mediaproxy.interfaces.system'], data_files=[('/etc/mediaproxy', ['config.ini.sample']), ('/etc/mediaproxy/radius', ['radius/dictionary']), ('/etc/mediaproxy/tls', ['tls/README'])], scripts=scripts, ext_modules=ext_modules )