Esempio n. 1
0
def _populate(app):
    bidmgr = BrowserIdManager(idmgr_name)
    tf = MountedTemporaryFolder(tf_name, 'Temporary Folder')
    toc = TransientObjectContainer(toc_name, title='Temporary '
        'Transient Object Container', timeout_mins=1)
    session_data_manager=SessionDataManager(id=sdm_name,
        path='/'+tf_name+'/'+toc_name, title='Session Data Manager')

    try: app._delObject(idmgr_name)
    except AttributeError: pass

    try: app._delObject(tf_name)
    except AttributeError: pass

    try: app._delObject(sdm_name)
    except AttributeError: pass

    app._setObject(idmgr_name, bidmgr)

    app._setObject(sdm_name, session_data_manager)

    app._setObject(tf_name, tf)
    transaction.commit()

    app.temp_folder._setObject(toc_name, toc)
    transaction.commit()
Esempio n. 2
0
def setup_sdm(portal):
    """
    Setup session data manager.
    """
    tf_name = 'temp_folder'
    idmgr_name = 'browser_id_manager'
    toc_name = 'temp_transient_container'
    sdm_name = 'session_data_manager'

    from Products.Sessions.BrowserIdManager import BrowserIdManager
    from Products.Sessions.SessionDataManager import SessionDataManager
    from Products.TemporaryFolder.TemporaryFolder import MountedTemporaryFolder
    from Products.Transience.Transience import TransientObjectContainer

    import transaction

    bidmgr = BrowserIdManager(idmgr_name)
    tf = MountedTemporaryFolder(tf_name, title='Temporary Folder')
    toc = TransientObjectContainer(
        toc_name,
        title='Temporary Transient Object Container',
        timeout_mins=20,
    )
    session_data_manager = SessionDataManager(
        id=sdm_name,
        path=tf_name + '/' + toc_name,
        title='Session Data Manager',
        requestName='TESTOFSESSION',
    )
    portal._setObject(idmgr_name, bidmgr)
    portal._setObject(sdm_name, session_data_manager)
    portal._setObject(tf_name, tf)
    portal.temp_folder._setObject(toc_name, toc)
    transaction.commit()
Esempio n. 3
0
    def test_encodeUrl_safe(self):
        from Products.Sessions.BrowserIdManager import BrowserIdManager
        if not hasattr(self.app, 'browser_id_manager'):
            bid = BrowserIdManager('browser_id_manager', 'Browser Id Manager')
            self.app._setObject('browser_id_manager', bid)

        res = self.publish(
            '/browser_id_manager/encodeUrl?url=%3Chtml%3EEVIL%2Fhtml%3E%3C!--')
        self.assertFalse("<html>EVIL/html>" in res.getBody())
Esempio n. 4
0
def _populate(app):
    from OFS.DTMLMethod import DTMLMethod
    from Products.Sessions.BrowserIdManager import BrowserIdManager
    from Products.Sessions.SessionDataManager import SessionDataManager
    from Products.TemporaryFolder.TemporaryFolder import MountedTemporaryFolder
    from Products.Transience.Transience import TransientObjectContainer
    import transaction
    bidmgr = BrowserIdManager(idmgr_name)
    tf = MountedTemporaryFolder(tf_name, title="Temporary Folder")
    toc = TransientObjectContainer(toc_name,
                                   title='Temporary '
                                   'Transient Object Container',
                                   timeout_mins=20)
    session_data_manager = SessionDataManager(id=sdm_name,
                                              path='/' + tf_name + '/' +
                                              toc_name,
                                              title='Session Data Manager',
                                              requestName='TESTOFSESSION')

    try:
        app._delObject(idmgr_name)
    except (AttributeError, KeyError):
        pass

    try:
        app._delObject(tf_name)
    except (AttributeError, KeyError):
        pass

    try:
        app._delObject(sdm_name)
    except (AttributeError, KeyError):
        pass

    try:
        app._delObject('index_html')
    except (AttributeError, KeyError):
        pass

    app._setObject(idmgr_name, bidmgr)

    app._setObject(sdm_name, session_data_manager)

    app._setObject(tf_name, tf)
    transaction.commit()

    app.temp_folder._setObject(toc_name, toc)
    transaction.commit()

    # index_html necessary for publishing emulation for testAutoReqPopulate
    app._setObject('index_html', DTMLMethod('', __name__='foo'))
    transaction.commit()
Esempio n. 5
0
 def setUp(self):
     self.app = Application()
     self.app.id = 'App'
     mgr = BrowserIdManager('browser_id_manager')
     self.app._setObject('browser_id_manager', mgr)
     self.m = self.app.browser_id_manager
     resp = HTTPResponse()
     environ = {}
     environ['SERVER_NAME'] = 'fred'
     environ['SERVER_PORT'] = '80'
     self.req = HTTPRequest(stdin, environ, resp)
     self.req['TraversalRequestNameStack'] = ['foo', 'bar']
     self.app.REQUEST = self.req
Esempio n. 6
0
 def install_browser_id_manager(self):
     app = self.getApp()
     if app._getInitializerFlag('browser_id_manager'):
         # do nothing if we've already installed one
         return
     # Ensure that a browser ID manager exists
     if not hasattr(app, 'browser_id_manager'):
         from Products.Sessions.BrowserIdManager import BrowserIdManager
         bid = BrowserIdManager('browser_id_manager', 'Browser Id Manager')
         app._setObject('browser_id_manager', bid)
         # FIXME explicitely call manage_afterAdd, as sometimes
         # events are initialized too late
         browser_id_manager = app.browser_id_manager
         browser_id_manager.manage_afterAdd(browser_id_manager, app)
         app._setInitializerFlag('browser_id_manager')
         self.commit('Added browser_id_manager')
Esempio n. 7
0
def install_browser_id_manager(self):
    app = self.getApp()
    if app._getInitializerFlag('browser_id_manager'):
        # do nothing if we've already installed one
        return
    # Ensure that a browser ID manager exists
    if not hasattr(app, 'browser_id_manager'):
        from Products.Sessions.BrowserIdManager import BrowserIdManager
        bid = BrowserIdManager('browser_id_manager', 'Browser Id Manager')
        app._setObject('browser_id_manager', bid)
        # Added for Five 1.2:
        browser_id_manager = app.browser_id_manager
        browser_id_manager.manage_afterAdd(browser_id_manager, app)
        # End added
        app._setInitializerFlag('browser_id_manager')
        self.commit('Added browser_id_manager')
Esempio n. 8
0
def setupCoreSessions(app):
    '''Sets up the session_data_manager e.a.'''
    commit = 0

    try:
        from Products.TemporaryFolder.TemporaryFolder import \
            MountedTemporaryFolder
        from Products.Transience.Transience import TransientObjectContainer
        from Products.Sessions.BrowserIdManager import BrowserIdManager
        from Products.Sessions.SessionDataManager import SessionDataManager
    except ImportError:
        pass
    else:
        if not hasattr(app, 'temp_folder'):
            tf = MountedTemporaryFolder('temp_folder', 'Temporary Folder')
            app._setObject('temp_folder', tf)
            commit = 1

        if not hasattr(aq_base(app.temp_folder), 'session_data'):
            toc = TransientObjectContainer('session_data',
                                           'Session Data Container',
                                           timeout_mins=3,
                                           limit=100)
            app.temp_folder._setObject('session_data', toc)
            commit = 1

        if not hasattr(app, 'browser_id_manager'):
            bid = BrowserIdManager('browser_id_manager', 'Browser Id Manager')
            app._setObject('browser_id_manager', bid)
            commit = 1

        if not hasattr(app, 'session_data_manager'):
            sdm = SessionDataManager('session_data_manager',
                                     title='Session Data Manager',
                                     path='/temp_folder/session_data',
                                     requestName='SESSION')
            app._setObject('session_data_manager', sdm)
            commit = 1

        if commit:
            transaction.commit()
Esempio n. 9
0
def setupCoreSessions(app=None):
    '''Sets up the session_data_manager e.a.'''
    from Acquisition import aq_base
    commit = 0

    if app is None:
        return appcall(setupCoreSessions)

    if not hasattr(app, 'temp_folder'):
        from Products.TemporaryFolder.TemporaryFolder import MountedTemporaryFolder
        tf = MountedTemporaryFolder('temp_folder', 'Temporary Folder')
        app._setObject('temp_folder', tf)
        commit = 1

    if not hasattr(aq_base(app.temp_folder), 'session_data'):
        from Products.Transience.Transience import TransientObjectContainer
        toc = TransientObjectContainer('session_data',
                                       'Session Data Container',
                                       timeout_mins=3,
                                       limit=100)
        app.temp_folder._setObject('session_data', toc)
        commit = 1

    if not hasattr(app, 'browser_id_manager'):
        from Products.Sessions.BrowserIdManager import BrowserIdManager
        bid = BrowserIdManager('browser_id_manager', 'Browser Id Manager')
        app._setObject('browser_id_manager', bid)
        commit = 1

    if not hasattr(app, 'session_data_manager'):
        from Products.Sessions.SessionDataManager import SessionDataManager
        sdm = SessionDataManager('session_data_manager',
                                 title='Session Data Manager',
                                 path='/temp_folder/session_data',
                                 requestName='SESSION')
        app._setObject('session_data_manager', sdm)
        commit = 1

    if commit:
        transaction.commit()
Esempio n. 10
0
from ZODB import FileStorage
import transaction

from Products.Sessions.BrowserIdManager import BrowserIdManager
from Products.Sessions.SessionDataManager import SessionDataManager
from Products.TemporaryFolder.TemporaryFolder import MountedTemporaryFolder

fs = FileStorage.FileStorage(os.path.join(Globals.data_dir, 'Data.fs.in'))
db = DB(fs)
conn = db.open()
root = conn.root()
app = root['Application']

print "Patching Data.fs.in"

tf = MountedTemporaryFolder('temp_folder', 'Temporary Folder')
app._setObject('temp_folder', tf)

bid = BrowserIdManager('browser_id_manager', 'Browser Id Manager')
app._setObject('browser_id_manager', bid)

sdm = r.SessionDataManager('session_data_manager',
                           title='Session Data Manager',
                           path='/temp_folder/transient_container',
                           automatic=0)
app._setObject('session_data_manager', sdm)

app._p_changed = 1

transaction.commit()