コード例 #1
0
        excursion_slides = excursion_description['slides']
        # TODO: sort by name?
        for pos, slide in enumerate(excursion_slides):
            widgets.append({
                'name' : '%s__%s' % (slide['id'], pos),
                'description' : slide['id'],
            })
        return widgets

    def load_widget(self, reservation_id, widget_name, **kwargs):
        number = POS_REGEX.match(widget_name).groups()[0]
        obj = EXCURSION_REGEX.match(reservation_id)
        if not obj:
            return {
                'url' : url_for('vish.index', _external = True)
            }
        excursion_identifier = obj.groups()[0]

        return {
            'url' : 'http://vishub.org/excursions/%s.full#%s?uniq=true' % (excursion_identifier, number)
        }

register("ViSH", ['1.0'], __name__)

vish_blueprint = Blueprint('vish', __name__)
@vish_blueprint.route('/')
def index():
    return "Invalid reservation identifier"

register_blueprint(vish_blueprint, '/vish')
コード例 #2
0
ファイル: virtual.py プロジェクト: Kiolali/labmanager
        if translations:
            return translations
        try:
            r = VIRTUAL_LABS.cached_session.get(self.translation_url)
            r.raise_for_status()
            translations_json = r.json()
        except Exception as e:
            traceback.print_exc()
            response = {'error': unicode(e)}
            VIRTUAL_LABS.rlms_cache['translations'] = response
            return response
        else:
            VIRTUAL_LABS.rlms_cache['translations'] = translations_json
            return translations_json

    def list_widgets(self, laboratory_id, **kwargs):
        default_widget = dict(name='default', description='Default widget')
        if self.height is not None:
            default_widget['height'] = self.height
        return [default_widget]


def populate_cache(rlms):
    rlms.get_translations(None)


VIRTUAL_LABS = register("Virtual labs", ['0.1'], __name__)
VIRTUAL_LABS.add_local_periodic_task("Retrieve translations",
                                     populate_cache,
                                     minutes=55)
コード例 #3
0
ファイル: rest.py プロジェクト: antonioIrizar/labmanager
        request.update(kwargs)
        response = self._request_post('/reserve', request)
        return {
            'reservation_id' : response['reservation_id'],
            'load_url' : response['load_url']
        }

    def load_widget(self, reservation_id, widget_name, **kwargs):
        response = self._request('/widget?widget_name=%s' % widget_name, headers = { 'X-G4L-reservation-id' : reservation_id })
        return {
            'url' : response['url']
        }

    def list_widgets(self, laboratory_id, **kwargs):
        widgets_json = self._request('/widgets?laboratory_id=%s' % urllib2.quote(laboratory_id))
        widgets = []
        for widget_json in widgets_json['widgets']:
            widget = {
                'name' : widget_json['name'],
                'description' : widget_json.get('description',''),
            }
            widgets.append(widget)

        return widgets

PLUGIN_NAME = "HTTP plug-in"
PLUGIN_VERSIONS = ['1.0']

register(PLUGIN_NAME, PLUGIN_VERSIONS, __name__)

コード例 #4
0
ファイル: g4l_rlms_unr.py プロジェクト: gateway4labs/rlms_unr
    Using the http://en.wikipedia.org/wiki/ARC4 
    """
    # The key-scheduling algorithm (KSA)
    S = range(256)
    j = 0
    for i in xrange(256):
        j = ( j + S[i] + ord(key[i % len(key)]) ) % 256

        S[i], S[j] = S[j], S[i]

    # The pseudo-random generation algorithm (PRGA)
    i = 0
    j = 0
    output = []

    for c in data:
        i = (i + 1) % 256
        j = (j + S[i]) % 256

        S[i], S[j] = S[j], S[i]

        k = ord(c) ^ S[ (S[i] + S[j]) % 256]
        output.append( chr(k) )

    return ''.join(output)


register("FCEIA-UNR", ['1.0'], __name__)

コード例 #5
0
            'url' : reservation_id
        }

    def list_widgets(self, laboratory_id, **kwargs):
        default_widget = dict( name = 'default', description = 'Default widget' )
        return [ default_widget ]

    def get_downloads(self, laboratory_id):
        return {
            'en_ALL': url_for('physicsaviary.physicsaviary_download', laboratory_id=laboratory_id, _external=True),
        }

def populate_cache(rlms):
    rlms.get_laboratories()

PHYSICSAVIARY = register("PhysicsAviary", ['1.0'], __name__)
PHYSICSAVIARY.add_local_periodic_task('Populating cache', populate_cache, hours = 15)

physicsaviary_blueprint = Blueprint('physicsaviary', __name__)

@physicsaviary_blueprint.route('/id/<path:laboratory_id>')
def physicsaviary_download(laboratory_id):
    laboratories, identifiers = get_laboratories()
    lab_data = identifiers.get(laboratory_id)
    if not lab_data:
        return "Not found", 404

    link = lab_data['link']
    generated = webpage2html.generate(index=link, keep_script=True, verbose=False)
    return generated.encode()
コード例 #6
0
    def get_laboratories(self, **kwargs):
        return retrieve_labs()

    def reserve(self, laboratory_id, username, institution, general_configuration_str, particular_configurations, request_payload, user_properties, *args, **kwargs):
        url = 'http://lab.concord.org/embeddable.html#{0}'.format(urllib2.unquote(laboratory_id))
        response = {
            'reservation_id' : url,
            'load_url' : url
        }
        return response

def populate_cache():
    rlms = RLMS("{}")
    rlms.get_laboratories()

CONCORD = register("Concord", ['1.0'], __name__)
CONCORD.add_global_periodic_task('Populating cache', populate_cache, hours = 23)

def main():
    rlms = RLMS("{}")
    t0 = time.time()
    laboratories = rlms.get_laboratories()
    tf = time.time()
    print len(laboratories), (tf - t0), "seconds"
    for lab in laboratories[:5]:
        t0 = time.time()
        print rlms.reserve(lab.laboratory_id, 'tester', 'foo', '', '', '', '', locale = lang)
        tf = time.time()
        print tf - t0, "seconds"

if __name__ == '__main__':
コード例 #7
0
ファイル: __init__.py プロジェクト: gateway4labs/rlms_http
        return None
            
    def reserve(self, laboratory_id, username, institution, general_configuration_str, particular_configurations, request_payload, user_properties, *args, **kwargs):
        return None

    def get_http_user(self):
        return self.http_user

    @app.route('/get_properties/<mself>')
    def get_properties(mself):
        # 
        # TODO: CSRF is not used here. Security hole
        # 
        
        http_user = mself.get_http_user()
    
        asasa
          




http_blueprint = Blueprint('http', __name__)
@http_blueprint.route('/')
def index():
    return "This is the index for HTTP"

register("HTTP", ['0.1'], __name__)
register_blueprint(http_blueprint, '/http')
コード例 #8
0

    def load_widget(self, reservation_id, widget_name, **kwargs):
        return {
            'url' : reservation_id
        }

    def list_widgets(self, laboratory_id, **kwargs):
        default_widget = dict( name = 'default', description = 'Default widget' )
        return [ default_widget ]


def populate_cache(rlms):
    rlms.get_laboratories()

ACADEMO = register("Academo", ['1.0'], __name__)
ACADEMO.add_local_periodic_task('Populating cache', populate_cache, hours = 15)

DEBUG = ACADEMO.is_debug() or (os.environ.get('G4L_DEBUG') or '').lower() == 'true' or False
DEBUG_LOW_LEVEL = DEBUG and (os.environ.get('G4L_DEBUG_LOW') or '').lower() == 'true'

if DEBUG:
    print("Debug activated")

if DEBUG_LOW_LEVEL:
    print("Debug low level activated")

sys.stdout.flush()

if __name__ == '__main__':
    rlms = RLMS('{}')
コード例 #9
0
        window.onload = function() {
            var labframe = document.getElementById("labframe").contentWindow;
            labframe.postMessage(message, "https://gateway.golabz.eu");
        };
    </script>

    <iframe id="labframe" border="0" src="https://gateway.golabz.eu/proxy/http://chemcollective.org/chem/jsvlab/vlab.html" style="width: 100%; height: 100%; border-size: 0px"></iframe>
</body>
</html>
"""


register_blueprint(chemcollective_blueprint, url='/chemcollective')

CHEMCOLLECTIVE = register("ChemCollective", ['1.0'], __name__)
CHEMCOLLECTIVE.add_local_periodic_task('Populating cache',
                                       populate_cache,
                                       hours=13)

DEBUG = CHEMCOLLECTIVE.is_debug() or (os.environ.get('G4L_DEBUG')
                                      or '').lower() == 'true' or False
DEBUG_LOW_LEVEL = DEBUG and (os.environ.get('G4L_DEBUG_LOW')
                             or '').lower() == 'true'

if DEBUG:
    print("Debug activated")

if DEBUG_LOW_LEVEL:
    print("Debug low level activated")
コード例 #10
0
ファイル: fake_rlms.py プロジェクト: antonioIrizar/labmanager
def register_fake():
    register("FakeRLMS", ['1.0'], __name__)
コード例 #11
0
def register_fake():
    register("FakeRLMS", ['1.0'], __name__)
コード例 #12
0
    try:
        tasks = []
        for lab in rlms.get_laboratories():
            for lang in LANGUAGES:
                tasks.append(_QueueTask(lab.laboratory_id, lang))

        _run_tasks(tasks)

        dbg("Finished")
    finally:
        ALL_LINKS = None
        sys.stdout.flush()
        sys.stderr.flush()

PHET = register("PhET", ['1.0'], __name__)
PHET.add_global_periodic_task('Populating cache', populate_cache, hours = 11)

DEBUG = PHET.is_debug() or (os.environ.get('G4L_DEBUG') or '').lower() == 'true' or False
DEBUG_LOW_LEVEL = DEBUG and (os.environ.get('G4L_DEBUG_LOW') or '').lower() == 'true'

if DEBUG:
    print("Debug activated")

if DEBUG_LOW_LEVEL:
    print("Debug low level activated")

sys.stdout.flush()

def main():
    with CacheDisabler():
コード例 #13
0
        return labs

    def get_check_urls(self, laboratory_id):
        return [ laboratory_id ]

    def reserve(self, laboratory_id, username, institution, general_configuration_str, particular_configurations, request_payload, user_properties, *args, **kwargs):
        url = laboratory_id
        return {
            'reservation_id' : requests.utils.quote(url, ''),
            'load_url' : url
        }

def populate_cache():
    get_lab_listing()

QUVIS = register("QuVis", ['1.0'], __name__)
QUVIS.add_global_periodic_task('Populating cache', populate_cache, minutes = 55)

def main():
    rlms = RLMS("{}")
    laboratories = rlms.get_laboratories()
    print len(laboratories)
    print
    print laboratories[:10]
    print
    for lab in laboratories[:5]:
        print rlms.reserve(lab.laboratory_id, 'tester', 'foo', '', '', '', '')

if __name__ == '__main__':
    main()
コード例 #14
0
        return {'url': create_url(reservation_id, locale)}

    def list_widgets(self, laboratory_id, **kwargs):
        default_widget = dict(name='default', description='Default widget')
        return [default_widget]


class VascakTaskQueue(QueueTask):
    RLMS_CLASS = RLMS


def populate_cache(rlms):
    rlms.get_laboratories()


VASCAK = register("Vascak", ['1.0'], __name__)
VASCAK.add_local_periodic_task('Populating cache', populate_cache, hours=23)

DEBUG = VASCAK.is_debug() or (os.environ.get('G4L_DEBUG')
                              or '').lower() == 'true' or False
DEBUG_LOW_LEVEL = DEBUG and (os.environ.get('G4L_DEBUG_LOW')
                             or '').lower() == 'true'

if DEBUG:
    print("Debug activated")

if DEBUG_LOW_LEVEL:
    print("Debug low level activated")

vascak_blueprint = Blueprint('vascak', __name__)
コード例 #15
0
ファイル: virtual.py プロジェクト: gateway4labs/labmanager
        translations = VIRTUAL_LABS.rlms_cache.get('translations')
        if translations:
            return translations
        try:
            r = VIRTUAL_LABS.cached_session.get(self.translation_url)
            r.raise_for_status()
            translations_json = r.json()
        except Exception as e:
            traceback.print_exc()
            response = {
                'error' : unicode(e)
            }
            VIRTUAL_LABS.rlms_cache['translations'] = response
            return response
        else:
            VIRTUAL_LABS.rlms_cache['translations'] = translations_json
            return translations_json

    def list_widgets(self, laboratory_id, **kwargs):
        default_widget = dict( name = 'default', description = 'Default widget')
        if self.height is not None:
            default_widget['height'] = self.height
        return [ default_widget ]


def populate_cache(rlms):
    rlms.get_translations(None)

VIRTUAL_LABS = register("Virtual labs", ['0.1'], __name__)
VIRTUAL_LABS.add_local_periodic_task("Retrieve translations", populate_cache, minutes = 55)
コード例 #16
0
        ilab_labs = self._get_labs_data(use_cache = False)
        lab_data = ilab_labs[laboratory_id]

        url = launchilab(unique_user_id, self.sb_guid, self.sb_service_url, self.authority_guid, self.group_name, lab_data)
        if DEBUG:
            print repr(url)
        return {
            'load_url' : url,
            'reservation_id' : url
        }

def populate_cache(rlms):
    for lab in rlms.get_laboratories():
        rlms.get_translations(lab.laboratory_id)

ILAB = register("iLabs", ['1.0'], __name__)
ILAB.add_local_periodic_task('Populating cache', populate_cache, minutes = 55)

if __name__ == '__main__':
    DEBUG = True
    import getpass, sys, pprint
    if len(sys.argv) == 2:
        auth_key = sys.argv[1]
    else:
        auth_key = getpass.getpass("Provide auth key: ")
    pprint.pprint(get_foreign_credentials('http://ilabs.cti.ac.at/iLabServiceBroker/', auth_key))
    configuration = json.dumps({
        'sb_url' : 'http://ilabs.cti.ac.at/iLabServiceBroker/',
        'authority_guid' : auth_key,
    })
    rlms = RLMS(configuration)
コード例 #17
0
    try:
        tasks = []
        for lab in rlms.get_laboratories():
            for lang in LANGUAGES:
                tasks.append(_QueueTask(lab.laboratory_id, lang))

        _run_tasks(tasks)

        dbg("Finished")
    finally:
        ALL_LINKS = None
        sys.stdout.flush()
        sys.stderr.flush()


PHET = register("PhET", ['1.0'], __name__)
PHET.add_global_periodic_task('Populating cache', populate_cache, hours=11)

DEBUG = PHET.is_debug() or (os.environ.get('G4L_DEBUG')
                            or '').lower() == 'true' or False
DEBUG_LOW_LEVEL = DEBUG and (os.environ.get('G4L_DEBUG_LOW')
                             or '').lower() == 'true'

if DEBUG:
    print("Debug activated")

if DEBUG_LOW_LEVEL:
    print("Debug low level activated")

sys.stdout.flush()
コード例 #18
0
ファイル: virtual.py プロジェクト: antonioIrizar/labmanager
    def get_capabilities(self): 
        return [ Capabilities.WIDGET ] 

    def test(self):
        json.loads(self.configuration)
        # TODO
        return None

    def get_laboratories(self, **kwargs):
        return [ Laboratory(self.name, self.name, autoload = True) ]

    def reserve(self, laboratory_id, username, institution, general_configuration_str, particular_configurations, request_payload, user_properties, *args, **kwargs):
        return {
            'reservation_id' : 'not-required',
            'load_url' : self.web
        }

    def load_widget(self, reservation_id, widget_name, **kwargs):
        return {
            'url' : self.web
        }

    def list_widgets(self, laboratory_id, **kwargs):
        default_widget = dict( name = 'default', description = 'Default widget')
        if self.height is not None:
            default_widget['height'] = self.height
        return [ default_widget ]


register("Virtual labs", ['0.1'], __name__)
コード例 #19
0
ファイル: rest.py プロジェクト: Kiolali/labmanager
            'url' : response['url']
        }

    def list_widgets(self, laboratory_id, **kwargs):
        widgets_json = self._request('/widgets?laboratory_id=%s' % requests.utils.quote(laboratory_id))
        widgets = []
        for widget_json in widgets_json['widgets']:
            widget = {
                'name' : widget_json['name'],
                'description' : widget_json.get('description',''),
            }
            widgets.append(widget)

        return widgets

PLUGIN_NAME = "HTTP plug-in"
PLUGIN_VERSIONS = ['1.0']

def populate_cache(rlms):
    capabilities = rlms.get_capabilities()
    for lab in rlms.get_laboratories():
        if Capabilities.TRANSLATIONS in capabilities:
            rlms.get_translations(lab.laboratory_id)
        if Capabilities.TRANSLATION_LIST in capabilities:
            rlms.get_translation_list(lab.laboratory_id)
    

HTTP_PLUGIN = register(PLUGIN_NAME, PLUGIN_VERSIONS, __name__)
HTTP_PLUGIN.add_local_periodic_task('Populating cache', populate_cache, minutes = 55)

コード例 #20
0
            global_min_priority = None

        overall_max_time = min(global_max_time or MAX, max_time or MAX)
        if overall_max_time is MAX:
            overall_max_time = None

        overall_min_priority = max(global_min_priority, min_priority)

        consumer_data = {}
        if overall_min_priority is not None:
            consumer_data['priority'] = overall_min_priority
        if overall_max_time is not None:
            consumer_data['time_allowed'] = overall_max_time
        return consumer_data


def populate_cache(rlms):
    for laboratory in rlms.get_laboratories():
        rlms.get_translations(laboratory.laboratory_id)

WEBLAB_DEUSTO = register("WebLab-Deusto", ['5.0'], __name__)
WEBLAB_DEUSTO.add_local_periodic_task('Populating cache', populate_cache, minutes = 55)


weblabdeusto_blueprint = Blueprint('weblabdeusto', __name__)
@weblabdeusto_blueprint.route('/')
def index():
    return "This is the index for WebLab-Deusto"

register_blueprint(weblabdeusto_blueprint, '/weblabdeusto')