view roundup/scripts/roundup_demo.py @ 6834:5129fc03dc1f

issue2551137, 2551138 - roundup-server SSL issues. Python3 no longer supports socket._fileobject, so fake it using SocketIO and layering io.BufferedReader as in: https://bugs.launchpad.net/python-glanceclient/+bug/1812525 Also handle SSL.ZeroReturnError exception by ignoring it. This exception is thrown when the SSL layer has been closed and a read happens. There is a warning in openssl as well as python docs that the underlying (unencrypted) socket may not be closed. In manual testing, netstat -anp didn't show any unclosed socket so.... Could it leak a fd still, unknown. This also seesm to have fixed an error when running under python2 where socket shutdown throws an error. Maybe ignoring ZeroErrorREturn handled that case? Also added doc to man page recommending not using -s and using a real web server instead. Also added doc on format of pem file passed to -e. No automated testing on this, so no test updates 8-(.
author John Rouillard <rouilj@ieee.org>
date Thu, 18 Aug 2022 14:44:16 -0400
parents d09a1d6a3bd9
children 062a54eeb0a1
line wrap: on
line source

#! /usr/bin/env python
#
# Copyright 2004 Richard Jones (richard@mechanicalcat.net)
#

DEFAULT_HOME = './demo'
DEFAULT_TEMPLATE = 'classic'


import sys


# --- patch sys.path to make sure 'import roundup' finds correct version
import os.path as osp

thisdir = osp.dirname(osp.abspath(__file__))
rootdir = osp.dirname(osp.dirname(thisdir))
if (osp.exists(thisdir + '/__init__.py') and
        osp.exists(rootdir + '/roundup/__init__.py')):
    # the script is located inside roundup source code
    sys.path.insert(0, rootdir)
# --/


from roundup import admin, configuration, demo, instance
from roundup.i18n import _
from roundup.anypy.my_input import my_input
from roundup import version_check

def run():
    home = DEFAULT_HOME
    template = DEFAULT_TEMPLATE
    nuke = sys.argv[-1] == 'nuke'
    # if there is no tracker in home, force nuke
    try:
        instance.open(home)
    except configuration.NoConfigError:
        nuke = 1
    # if we are to create the tracker, prompt for home
    if nuke:
        if len(sys.argv) > 2:
            backend = sys.argv[-2]
        else:
            backend = 'anydbm'
        # FIXME: i'd like to have an option to abort the tracker creation
        #   say, by entering a single dot.  but i cannot think of
        #   appropriate prompt for that.
        home = my_input(
            _('Enter directory path to create demo tracker [%s]: ') % home)
        if not home:
            home = DEFAULT_HOME
        templates = admin.AdminTool().listTemplates().keys()
        template = my_input(
            _('Enter tracker template to use (one of (%s)) [%s]: ') %
            (','.join(templates), template))
        if not template:
            template = DEFAULT_TEMPLATE
        # install
        demo.install_demo(home, backend,
                          admin.AdminTool().listTemplates()[template]['path'])
    # run
    demo.run_demo(home)


if __name__ == '__main__':
    run()

# vim: set et sts=4 sw=4 :

Roundup Issue Tracker: http://roundup-tracker.org/