Skip to main content

s3scorm plugin for Tutor

Project description

Using SCORM modules in multi-server deployments offer a number of challenges. A full list of scenarios and solutions can be found in this document.

Basically a SCORM component is a set of files packed in a zip file that includes all assets to display and control its behaviour. This file is uploaded in Studio, stored and unpacked in the default file storage and displayed in the LMS from there.

SCORM components are inserted in the LMS as an iframe by the SCORM Xblock plugin. When the SCORM XBlock is configured as graded, it will call an API located at the parent window to communicate the result of the activity to the LMS. When the SCORM assets are served from an origin different than the url of the LMS, this will usually fail due to cross-origin restrictions imposed by the browser.

Scalable LMS implementations require that the file storage is located outside of the LMS and CMS workloads, typically in an object storage service like AWS S3. In this scenario the standard configuration may allow SCORM blocks to be displayed, but the grading function will certainly fail.

This plugin addresses this issue to make graded SCORM XBlocks work.

https://img.shields.io/badge/linting-pylint-yellowgreen

How it works

This plugin will add a reverse proxy statement to the lms matcher in the Caddyfile, so that requests to LMS_BASE/scorm/ will be proxied to the S3 endpoint corresponding to the bucket. This will cause that all SCORM assets will be served from the same origin url as the LMS. The effect is that the scorm components will be able to access the api located at the parent window.

To have the

Installation

pip install tutor-contrib-s3scorm

This release targets Tutor 21 / Open edX Ulmo.

Configuration

This plugin integrates with tutor-contrib-s3. By default, S3SCORM_BUCKET inherits the value of S3_STORAGE_BUCKET if that setting is defined. You only need to set S3SCORM_BUCKET explicitly when SCORM files live in a different bucket.

These parameters are used by the plugin:

  • S3SCORM_BUCKET (optional): name of the bucket (e.g., openedx-my-file-bucket). Defaults to S3_STORAGE_BUCKET if that variable is defined.

  • S3SCORM_ENDPOINT (optional): S3 endpoint. E.g., s3.us-east-1.amazonaws.com. If unset, the plugin falls back to S3_HOST and S3_PORT, then s3.<S3_REGION>.amazonaws.com.

  • S3SCORM_PATH (optional): Path inside the bucket where the ‘scorm’ directory is located. Include a leading slash and no trailing slash (e.g. “/openedx/media”). Defaults to empty path (root of the bucket).

  • S3SCORM_URL_STYLE (optional): How the upstream bucket is addressed. Use virtual for <bucket>.<endpoint> and path for <endpoint>/<bucket>. Defaults to virtual.

Optional parameters:

  • S3SCORM_USE_SSL: Default true.

When S3SCORM_PATH is set, the proxy preserves the public /scorm/... URL and rewrites the upstream request to <S3SCORM_PATH>/scorm/... inside the bucket. The upstream endpoint is resolved in this order: S3SCORM_ENDPOINT, S3_HOST plus S3_PORT if set, and finally s3.<S3_REGION>.amazonaws.com. When S3SCORM_URL_STYLE is set to path, the bucket is placed in the upstream URI path instead of the hostname.

Usage

tutor plugins enable s3scorm

License

This software is licensed under the terms of the AGPLv3.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tutor_contrib_s3scorm-21.0.0.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tutor_contrib_s3scorm-21.0.0-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file tutor_contrib_s3scorm-21.0.0.tar.gz.

File metadata

  • Download URL: tutor_contrib_s3scorm-21.0.0.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tutor_contrib_s3scorm-21.0.0.tar.gz
Algorithm Hash digest
SHA256 72da1f577725a3d3a73e04559e3bd291d962a88c0fa160d18953b63194cfc789
MD5 f7a2b435c66ddd02c06f1d1251b1255e
BLAKE2b-256 ea9f9b051423584f84d948500d4ac96e4dee1d1eff15fdcfb04fc126fbd74eaf

See more details on using hashes here.

Provenance

The following attestation bundles were made for tutor_contrib_s3scorm-21.0.0.tar.gz:

Publisher: publish.yml on aulasneo/tutor-contrib-s3scorm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tutor_contrib_s3scorm-21.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for tutor_contrib_s3scorm-21.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0f744b52d78ede68083bae3313b4a442a9587e1949ba7edca73a93e47566868a
MD5 9f37b58e0db51fe5ef76e8d80500e153
BLAKE2b-256 033884c45b0036762a50a92b7f3cf66b4770418a6c038e2d48d8475ff3f3ba0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tutor_contrib_s3scorm-21.0.0-py3-none-any.whl:

Publisher: publish.yml on aulasneo/tutor-contrib-s3scorm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page