Wowza server side modules. Uses Wowza provided Java API to restrict access to content to authorized users. Relies on Stacks for minting and verifying tokens.
Uses Gradle (via Gradle wrapper) as the build tool (akin to Ruby's rake).
We should be trying to use a recent and supported version of Java in local development, on CI/build servers, and on deployed Wowza servers.
For local development, jenv
(akin to e.g. rbenv
or n
) can help if you need to manage multiple versions of Java. Documentation for jenv.
If it's been a few weeks or months since the project has been touched, you can install the latest Gradle by running:
./gradlew wrapper --gradle-version=latest --distribution-type=bin # you can also install a specific version, e.g. --gradle-version=8.4
If updates are generated, please commit the changes (likely gradle/wrapper/gradle-wrapper.properties
, gradlew
, gradlew.bat
, gradle/wrapper/gradle-wrapper.jar
; possibly build.gradle
if you have to fix deprecated build config).
See "Upgrade with the Gradle Wrapper" in the installation instructions, and the more detailed Gradle Wrapper doc.
./gradlew build
Before running this command, you'll need to set these environment variables:
WOWZA_HONEYBADGER_API_KEY
: You can get the API key from our Honeybadger project (DLSS-Wowza
). Note that you may need to get added to the DLSS-Wowza
project as a user in order to obtain the key (someone from Devops should be able to add you).WOWZA_HONEYBADGER_ENV
: Anything other than the names of the deployed environments should be fine. E.g., something like dlss_wowza_laptop_$USER
.If the environment variables are not set, your tests will fail.
./gradlew check # will invoke build tasks as needed
The coverage report is available in the project directory at build/reports/jacoco/test/html/index.html
.
In the Wowza GUI interface, select your Wowza Application, and click on the modules tab. Add a module with the class name edu.stanford.dlss.wowza.SulWowza
(the name and description are arbitrary strings).
Alternatively, you can manually edit Application.xml and then reload the Wowza application. The <Modules>
element in Application.xml
should include something like this:
<Module>
<Name>SulWowza</Name>
<Description>SUL Authorization against Stacks</Description>
<Class>edu.stanford.dlss.wowza.SulWowza</Class>
</Module>
You can configure the SulWowza plugin using Wowza's GUI interface, but you will also need to add some properties. The three properties our SulWowza plugin uses are:
stacksURL
stacksConnectionTimeout
stacksReadTimeout
You can add these properties using the Wowza GUI interface: select your Wowza application, click on the properties tab; scroll to the bottom for custom properties and add them.
Alternatively, you can manually edit Application.xml and then reload the Wowza application. The <Properties>
element in Application.xml
should include something like this:
<Property>
<!-- stacks token verification baseURL -->
<Name>stacksURL</Name>
<Value>https://stacks-test.stanford.edu</Value>
</Property>
<Property>
<!-- stacks service connection timeout (time to establish a connection), in seconds; default is 30 -->
<Name>stacksConnectionTimeout</Name>
<Value>20</Value>
<Type>Integer</Type>
</Property>
<Property>
<!-- stacks service connection timeout (time for reading stream after connection is established),
in seconds; default is 30 -->
<Name>stacksReadTimeout</Name>
<Value>20</Value>
<Type>Integer</Type>
</Property>
conf/version
. This should be just the version number itself, e.g. 1.7.1
or 2.0.0-beta
.v
prefix, e.g. v1.7.1
or v2.0.0-beta
(corresponding with the conf/version
example).deploymentJar
gradle task (a la Jenkins), the git tag (e.g v1.7.1
) must match the contents of conf/version
(e.g. 1.7.1
) other than the leading v, present only in the git tag.wowza-auth-plugin
) that creates the versioned .jar artifact for deployment.
./gradlew deploymentJar
or ./gradlew deploymentJarRelaxed
(the latter is needed if conf/version
doesn't match the head commit in the current branch)./gradlew clean
Can be combined with other tasks, e.g. ./gradlew clean check
.
./gradlew tasks --all
./gradlew --help
javac -d classes -cp .:libs/wms-restlet-2.2.2.jar:libs/wms-server.jar:libs/wms-httpstreamer-cupertinostreaming.jar:libs/wms-httpstreamer-mpegdashstreaming.jar:libs/log4j-1.2.17.jar:libs/junit.jar src/edu/stanford/dlss/wowza/SulWowza.java src/edu/stanford/dlss/wowza/SulWowzaTester.java
jar cf dlss-wowza.jar classes/edu/stanford/dlss/wowza/SulWowza* conf