mirror of https://github.com/OpenVidu/openvidu.git
NEW SYNTAX FOR CONFIGURATION PROPERTIES
parent
b7a36700f9
commit
3dd048b318
|
@ -110,7 +110,7 @@ public class KurentoOptions {
|
||||||
* value to this property will override the global configuration set in <a
|
* value to this property will override the global configuration set in <a
|
||||||
* href="https://docs.openvidu.io/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server"
|
* href="https://docs.openvidu.io/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server"
|
||||||
* target="_blank">OpenVidu Server configuration</a> (parameter
|
* target="_blank">OpenVidu Server configuration</a> (parameter
|
||||||
* <code>openvidu.streams.video.max-recv-bandwidth</code>) for every incoming
|
* <code>OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH</code>) for every incoming
|
||||||
* stream of the user owning the token. <br>
|
* stream of the user owning the token. <br>
|
||||||
* <strong>WARNING</strong>: the lower value set to this property limits every
|
* <strong>WARNING</strong>: the lower value set to this property limits every
|
||||||
* other bandwidth of the WebRTC pipeline this server-to-client stream belongs
|
* other bandwidth of the WebRTC pipeline this server-to-client stream belongs
|
||||||
|
@ -127,7 +127,7 @@ public class KurentoOptions {
|
||||||
* to this property will override the global configuration set in <a href=
|
* to this property will override the global configuration set in <a href=
|
||||||
* "https://docs.openvidu.io/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server"
|
* "https://docs.openvidu.io/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server"
|
||||||
* target="_blank">OpenVidu Server configuration</a> (parameter
|
* target="_blank">OpenVidu Server configuration</a> (parameter
|
||||||
* <code>openvidu.streams.video.min-recv-bandwidth</code>) for every incoming
|
* <code>OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH</code>) for every incoming
|
||||||
* stream of the user owning the token.
|
* stream of the user owning the token.
|
||||||
*/
|
*/
|
||||||
public Integer getVideoMinRecvBandwidth() {
|
public Integer getVideoMinRecvBandwidth() {
|
||||||
|
@ -140,7 +140,7 @@ public class KurentoOptions {
|
||||||
* to this property will override the global configuration set in <a href=
|
* to this property will override the global configuration set in <a href=
|
||||||
* "https://docs.openvidu.io/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server"
|
* "https://docs.openvidu.io/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server"
|
||||||
* target="_blank">OpenVidu Server configuration</a> (parameter
|
* target="_blank">OpenVidu Server configuration</a> (parameter
|
||||||
* <code>openvidu.streams.video.max-send-bandwidth</code>) for every outgoing
|
* <code>OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH</code>) for every outgoing
|
||||||
* stream of the user owning the token. <br>
|
* stream of the user owning the token. <br>
|
||||||
* <strong>WARNING</strong>: this value limits every other bandwidth of the
|
* <strong>WARNING</strong>: this value limits every other bandwidth of the
|
||||||
* WebRTC pipeline this client-to-server stream belongs to. This includes every
|
* WebRTC pipeline this client-to-server stream belongs to. This includes every
|
||||||
|
@ -156,7 +156,7 @@ public class KurentoOptions {
|
||||||
* this property will override the global configuration set in <a href=
|
* this property will override the global configuration set in <a href=
|
||||||
* "https://docs.openvidu.io/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server"
|
* "https://docs.openvidu.io/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server"
|
||||||
* target="_blank">OpenVidu Server configuration</a> (parameter
|
* target="_blank">OpenVidu Server configuration</a> (parameter
|
||||||
* <code>openvidu.streams.video.min-send-bandwidth</code>) for every outgoing
|
* <code>OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH</code>) for every outgoing
|
||||||
* stream of the user owning the token.
|
* stream of the user owning the token.
|
||||||
*/
|
*/
|
||||||
public Integer getVideoMinSendBandwidth() {
|
public Integer getVideoMinSendBandwidth() {
|
||||||
|
|
|
@ -185,7 +185,7 @@ public class OpenVidu {
|
||||||
* or it is already being recorded</li>
|
* or it is already being recorded</li>
|
||||||
* <li><code>501</code>: OpenVidu Server
|
* <li><code>501</code>: OpenVidu Server
|
||||||
* recording module is disabled
|
* recording module is disabled
|
||||||
* (<i>openvidu.recording</i> property set
|
* (<i>OPENVIDU_RECORDING</i> property set
|
||||||
* to <i>false</i>)</li>
|
* to <i>false</i>)</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
|
@ -282,7 +282,7 @@ public class OpenVidu {
|
||||||
* or it is already being recorded</li>
|
* or it is already being recorded</li>
|
||||||
* <li><code>501</code>: OpenVidu Server
|
* <li><code>501</code>: OpenVidu Server
|
||||||
* recording module is disabled
|
* recording module is disabled
|
||||||
* (<i>openvidu.recording</i> property set
|
* (<i>OPENVIDU_RECORDING</i> property set
|
||||||
* to <i>false</i>)</li>
|
* to <i>false</i>)</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
|
@ -323,7 +323,7 @@ public class OpenVidu {
|
||||||
* or it is already being recorded</li>
|
* or it is already being recorded</li>
|
||||||
* <li><code>501</code>: OpenVidu Server
|
* <li><code>501</code>: OpenVidu Server
|
||||||
* recording module is disabled
|
* recording module is disabled
|
||||||
* (<i>openvidu.recording</i> property set
|
* (<i>OPENVIDU_RECORDING</i> property set
|
||||||
* to <i>false</i>)</li>
|
* to <i>false</i>)</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -197,7 +197,7 @@ public class Recording {
|
||||||
* <code>null</code> until recording reaches "ready" or "failed" status. If
|
* <code>null</code> until recording reaches "ready" or "failed" status. If
|
||||||
* <a href="https://docs.openvidu.io/en/stable/reference-docs/openvidu-server-params/" target=
|
* <a href="https://docs.openvidu.io/en/stable/reference-docs/openvidu-server-params/" target=
|
||||||
* "_blank">OpenVidu Server configuration</a> property
|
* "_blank">OpenVidu Server configuration</a> property
|
||||||
* <code>openvidu.recording.public-access</code> is false, this path will be
|
* <code>OPENVIDU_RECORDING_PUBLIC_ACCESS</code> is false, this path will be
|
||||||
* secured with OpenVidu credentials
|
* secured with OpenVidu credentials
|
||||||
*/
|
*/
|
||||||
public String getUrl() {
|
public String getUrl() {
|
||||||
|
|
|
@ -130,7 +130,7 @@ export class OpenVidu {
|
||||||
* - `422`: when passing [[RecordingProperties]], `resolution` parameter exceeds acceptable values (for both width and height, min 100px and max 1999px) or trying
|
* - `422`: when passing [[RecordingProperties]], `resolution` parameter exceeds acceptable values (for both width and height, min 100px and max 1999px) or trying
|
||||||
* to start a recording with both `hasAudio` and `hasVideo` to false
|
* to start a recording with both `hasAudio` and `hasVideo` to false
|
||||||
* - `409`: the session is not configured for using [[MediaMode.ROUTED]] or it is already being recorded
|
* - `409`: the session is not configured for using [[MediaMode.ROUTED]] or it is already being recorded
|
||||||
* - `501`: OpenVidu Server recording module is disabled (`openvidu.recording` property set to `false`)
|
* - `501`: OpenVidu Server recording module is disabled (`OPENVIDU_RECORDING` property set to `false`)
|
||||||
*/
|
*/
|
||||||
public startRecording(sessionId: string, param2?: string | RecordingProperties): Promise<Recording> {
|
public startRecording(sessionId: string, param2?: string | RecordingProperties): Promise<Recording> {
|
||||||
return new Promise<Recording>((resolve, reject) => {
|
return new Promise<Recording>((resolve, reject) => {
|
||||||
|
|
|
@ -49,7 +49,7 @@ export class Recording {
|
||||||
duration = 0;
|
duration = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* URL of the recording. You can access the file from there. It is `null` until recording reaches "ready" or "failed" status. If OpenVidu Server configuration property `openvidu.recording.public-access` is false, this path will be secured with OpenVidu credentials
|
* URL of the recording. You can access the file from there. It is `null` until recording reaches "ready" or "failed" status. If OpenVidu Server configuration property `OPENVIDU_RECORDING_PUBLIC_ACCESS` is false, this path will be secured with OpenVidu credentials
|
||||||
*/
|
*/
|
||||||
url: string;
|
url: string;
|
||||||
|
|
||||||
|
|
|
@ -42,18 +42,18 @@ export interface TokenOptions {
|
||||||
* You can adjust:
|
* You can adjust:
|
||||||
* - `videoMaxRecvBandwidth`: maximum number of Kbps that the client owning the token will be able to receive from Kurento Media Server. 0 means unconstrained. Giving a value to this property will override
|
* - `videoMaxRecvBandwidth`: maximum number of Kbps that the client owning the token will be able to receive from Kurento Media Server. 0 means unconstrained. Giving a value to this property will override
|
||||||
* the global configuration set in [OpenVidu Server configuration](/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server)
|
* the global configuration set in [OpenVidu Server configuration](/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server)
|
||||||
* (parameter `openvidu.streams.video.max-recv-bandwidth`) for every incoming stream of the user owning the token.
|
* (parameter `OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH`) for every incoming stream of the user owning the token.
|
||||||
* _**WARNING**: the lower value set to this property limits every other bandwidth of the WebRTC pipeline this server-to-client stream belongs to. This includes the user publishing the stream and every other user subscribed to the stream_
|
* _**WARNING**: the lower value set to this property limits every other bandwidth of the WebRTC pipeline this server-to-client stream belongs to. This includes the user publishing the stream and every other user subscribed to the stream_
|
||||||
* - `videoMinRecvBandwidth`: minimum number of Kbps that the client owning the token will try to receive from Kurento Media Server. 0 means unconstrained. Giving a value to this property will override
|
* - `videoMinRecvBandwidth`: minimum number of Kbps that the client owning the token will try to receive from Kurento Media Server. 0 means unconstrained. Giving a value to this property will override
|
||||||
* the global configuration set in [OpenVidu Server configuration](/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server)
|
* the global configuration set in [OpenVidu Server configuration](/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server)
|
||||||
* (parameter `openvidu.streams.video.min-recv-bandwidth`) for every incoming stream of the user owning the token
|
* (parameter `OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH`) for every incoming stream of the user owning the token
|
||||||
* - `videoMaxSendBandwidth`: maximum number of Kbps that the client owning the token will be able to send to Kurento Media Server. 0 means unconstrained. Giving a value to this property will override
|
* - `videoMaxSendBandwidth`: maximum number of Kbps that the client owning the token will be able to send to Kurento Media Server. 0 means unconstrained. Giving a value to this property will override
|
||||||
* the global configuration set in [OpenVidu Server configuration](/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server)
|
* the global configuration set in [OpenVidu Server configuration](/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server)
|
||||||
* (parameter `openvidu.streams.video.max-send-bandwidth`) for every outgoing stream of the user owning the token.
|
* (parameter `OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH`) for every outgoing stream of the user owning the token.
|
||||||
* _**WARNING**: this value limits every other bandwidth of the WebRTC pipeline this client-to-server stream belongs to. This includes every other user subscribed to the stream_
|
* _**WARNING**: this value limits every other bandwidth of the WebRTC pipeline this client-to-server stream belongs to. This includes every other user subscribed to the stream_
|
||||||
* - `videoMinSendBandwidth`: minimum number of Kbps that the client owning the token will try to send to Kurento Media Server. 0 means unconstrained. Giving a value to this property will override
|
* - `videoMinSendBandwidth`: minimum number of Kbps that the client owning the token will try to send to Kurento Media Server. 0 means unconstrained. Giving a value to this property will override
|
||||||
* the global configuration set in [OpenVidu Server configuration](/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server)
|
* the global configuration set in [OpenVidu Server configuration](/en/stable/reference-docs/openvidu-server-params/#configuration-parameters-for-openvidu-server)
|
||||||
* (parameter `openvidu.streams.video.min-send-bandwidth`) for every outgoing stream of the user owning the token
|
* (parameter `OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH`) for every outgoing stream of the user owning the token
|
||||||
* - `allowedFilters`: names of the filters the user owning the token will be able to apply. See [Voice and video filters](/en/stable/advanced-features/filters/)
|
* - `allowedFilters`: names of the filters the user owning the token will be able to apply. See [Voice and video filters](/en/stable/advanced-features/filters/)
|
||||||
*/
|
*/
|
||||||
kurentoOptions?: {
|
kurentoOptions?: {
|
||||||
|
|
|
@ -26,25 +26,21 @@ CERTIFICATE_TYPE=selfsigned
|
||||||
# If CERTIFICATE_TYPE=letsencrypt, you need to configure a valid email for notifications
|
# If CERTIFICATE_TYPE=letsencrypt, you need to configure a valid email for notifications
|
||||||
LETSENCRYPT_EMAIL=user@example.com
|
LETSENCRYPT_EMAIL=user@example.com
|
||||||
|
|
||||||
# Parameter "openvidu.recording.path"
|
|
||||||
# Openvidu Folder Record used for save the openvidu recording videos. Change it
|
# Openvidu Folder Record used for save the openvidu recording videos. Change it
|
||||||
# with the folder you want to use from your host.
|
# with the folder you want to use from your host.
|
||||||
OPENVIDU_RECORDING_PATH=/opt/openvidu/recordings
|
OPENVIDU_RECORDING_PATH=/opt/openvidu/recordings
|
||||||
|
|
||||||
# Parameter "openvidu.recording.custom-layout"
|
|
||||||
# System path where OpenVidu Server should look for custom recording layouts
|
# System path where OpenVidu Server should look for custom recording layouts
|
||||||
OPENVIDU_RECORDING_CUSTOM_LAYOUT=/opt/openvidu/custom-layout
|
OPENVIDU_RECORDING_CUSTOM_LAYOUT=/opt/openvidu/custom-layout
|
||||||
|
|
||||||
# Parameter "openvidu.recording.public-access"
|
|
||||||
# if true any client can connect to
|
# if true any client can connect to
|
||||||
# https://OPENVIDU_SERVER_IP:OPENVIDU_PORT/recordings/any_session_file.mp4
|
# https://OPENVIDU_SERVER_IP:OPENVIDU_PORT/recordings/any_session_file.mp4
|
||||||
# and access any recorded video file. If false this path will be secured with
|
# and access any recorded video file. If false this path will be secured with
|
||||||
# openvidu.secret param just as OpenVidu Server dashboard at
|
# OPENVIDU_SECRET param just as OpenVidu Server dashboard at
|
||||||
# https://OPENVIDU_SERVER_IP:OPENVIDU_PORT
|
# https://OPENVIDU_SERVER_IP:OPENVIDU_PORT
|
||||||
# Values: true | false
|
# Values: true | false
|
||||||
OPENVIDU_RECORDING_PUBLIC_ACCESS=false
|
OPENVIDU_RECORDING_PUBLIC_ACCESS=false
|
||||||
|
|
||||||
# Parameter "openvidu.recording.notification"
|
|
||||||
# Which users should receive the recording events in the client side
|
# Which users should receive the recording events in the client side
|
||||||
# (recordingStarted, recordingStopped). Can be all (every user connected to
|
# (recordingStarted, recordingStopped). Can be all (every user connected to
|
||||||
# the session), publisher_moderator (users with role 'PUBLISHER' or
|
# the session), publisher_moderator (users with role 'PUBLISHER' or
|
||||||
|
@ -52,7 +48,6 @@ OPENVIDU_RECORDING_PUBLIC_ACCESS=false
|
||||||
# (no user will receive these events)
|
# (no user will receive these events)
|
||||||
OPENVIDU_RECORDING_NOTIFICATION=publisher_moderator
|
OPENVIDU_RECORDING_NOTIFICATION=publisher_moderator
|
||||||
|
|
||||||
# Parameter "openvidu.recording.autostop-timeout"
|
|
||||||
# Timeout in seconds for recordings to automatically stop (and the session involved to be closed)
|
# Timeout in seconds for recordings to automatically stop (and the session involved to be closed)
|
||||||
# when conditions are met: a session recording is started but no user is publishing to it or a session
|
# when conditions are met: a session recording is started but no user is publishing to it or a session
|
||||||
# is being recorded and last user disconnects. If a user publishes within the timeout in either case,
|
# is being recorded and last user disconnects. If a user publishes within the timeout in either case,
|
||||||
|
@ -60,66 +55,54 @@ OPENVIDU_RECORDING_NOTIFICATION=publisher_moderator
|
||||||
# 0 means no timeout
|
# 0 means no timeout
|
||||||
OPENVIDU_RECORDING_AUTOSTOP_TIMEOUT=120
|
OPENVIDU_RECORDING_AUTOSTOP_TIMEOUT=120
|
||||||
|
|
||||||
# Parameter "openvidu.streams.video.max-recv-bandwidth"
|
|
||||||
# Maximum video bandwidth sent from clients to OpenVidu Server, in kbps.
|
# Maximum video bandwidth sent from clients to OpenVidu Server, in kbps.
|
||||||
# 0 means unconstrained
|
# 0 means unconstrained
|
||||||
OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH=1000
|
OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH=1000
|
||||||
|
|
||||||
# Parameter "openvidu.streams.video.min-recv-bandwidth"
|
|
||||||
# Minimum video bandwidth sent from clients to OpenVidu Server, in kbps.
|
# Minimum video bandwidth sent from clients to OpenVidu Server, in kbps.
|
||||||
# 0 means unconstrained
|
# 0 means unconstrained
|
||||||
OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH=300
|
OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH=300
|
||||||
|
|
||||||
# Parameter "openvidu.streams.video.max-send-bandwidth"
|
|
||||||
# Maximum video bandwidth sent from OpenVidu Server to clients, in kbps.
|
# Maximum video bandwidth sent from OpenVidu Server to clients, in kbps.
|
||||||
# 0 means unconstrained
|
# 0 means unconstrained
|
||||||
OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH=1000
|
OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH=1000
|
||||||
|
|
||||||
# Parameter "openvidu.streams.video.min-send-bandwidth"
|
|
||||||
# Minimum video bandwidth sent from OpenVidu Server to clients, in kbps.
|
# Minimum video bandwidth sent from OpenVidu Server to clients, in kbps.
|
||||||
# 0 means unconstrained
|
# 0 means unconstrained
|
||||||
OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH=300
|
OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH=300
|
||||||
|
|
||||||
# Parameter "openvidu.webhook"
|
|
||||||
# true to enable OpenVidu Server Webhook service. false' otherwise
|
# true to enable OpenVidu Server Webhook service. false' otherwise
|
||||||
# Values: true | false
|
# Values: true | false
|
||||||
OPENVIDU_WEBHOOK=false
|
OPENVIDU_WEBHOOK=false
|
||||||
|
|
||||||
# Parameter "openvidu.webhook.endpoint"
|
|
||||||
# HTTP endpoint where OpenVidu Server will send Webhook HTTP POST messages
|
# HTTP endpoint where OpenVidu Server will send Webhook HTTP POST messages
|
||||||
# Must be a valid URL: http(s)://ENDPOINT
|
# Must be a valid URL: http(s)://ENDPOINT
|
||||||
#OPENVIDU_WEBHOOK_ENDPOINT=
|
#OPENVIDU_WEBHOOK_ENDPOINT=
|
||||||
|
|
||||||
# Parameter "openvidu.webhook.headers"
|
|
||||||
# List of headers that OpenVidu Server Webhook service will attach to HTTP POST messages
|
# List of headers that OpenVidu Server Webhook service will attach to HTTP POST messages
|
||||||
#OPENVIDU_WEBHOOK_HEADERS=
|
#OPENVIDU_WEBHOOK_HEADERS=
|
||||||
|
|
||||||
# Parameter "openvidu.webhook.events"
|
|
||||||
# List of events that will be sent by OpenVidu Server Webhook service
|
# List of events that will be sent by OpenVidu Server Webhook service
|
||||||
# Leave blank if all events.
|
# Leave blank if all events.
|
||||||
OPENVIDU_WEBHOOK_EVENTS=[sessionCreated,sessionDestroyed,participantJoined,participantLeft,webrtcConnectionCreated,webrtcConnectionDestroyed,recordingStatusChanged,filterEventDispatched,mediaNodeStatusChanged]
|
OPENVIDU_WEBHOOK_EVENTS=[sessionCreated,sessionDestroyed,participantJoined,participantLeft,webrtcConnectionCreated,webrtcConnectionDestroyed,recordingStatusChanged,filterEventDispatched,mediaNodeStatusChanged]
|
||||||
|
|
||||||
# Parameter "openvidu.sessions.garbage.interval"
|
|
||||||
# How often the garbage collector of non active sessions runs.
|
# How often the garbage collector of non active sessions runs.
|
||||||
# This helps cleaning up sessions that have been initialized through
|
# This helps cleaning up sessions that have been initialized through
|
||||||
# REST API (and maybe tokens have been created for them) but have had no users connected.
|
# REST API (and maybe tokens have been created for them) but have had no users connected.
|
||||||
# Default to 900s (15 mins). 0 to disable non active sessions garbage collector
|
# Default to 900s (15 mins). 0 to disable non active sessions garbage collector
|
||||||
OPENVIDU_SESSIONS_GARBAGE_INTERVAL=900
|
OPENVIDU_SESSIONS_GARBAGE_INTERVAL=900
|
||||||
|
|
||||||
# Parameter "openvidu.sessions.garbage.threshold"
|
|
||||||
# Minimum time in seconds that a non active session must have been in existence
|
# Minimum time in seconds that a non active session must have been in existence
|
||||||
# for the garbage collector of non active sessions to remove it. Default to 3600s (1 hour).
|
# for the garbage collector of non active sessions to remove it. Default to 3600s (1 hour).
|
||||||
# If non active sessions garbage collector is disabled
|
# If non active sessions garbage collector is disabled
|
||||||
# (property 'openvidu.sessions.garbage.interval' to 0) this property is ignored
|
# (property 'OPENVIDU_SESSIONS_GARBAGE_INTERVAL' to 0) this property is ignored
|
||||||
OPENVIDU_SESSIONS_GARBAGE_THRESHOLD=3600
|
OPENVIDU_SESSIONS_GARBAGE_THRESHOLD=3600
|
||||||
|
|
||||||
# Parameter "openvidu.cdr"
|
|
||||||
# Call Detail Record enabled
|
# Call Detail Record enabled
|
||||||
# Whether to enable Call Detail Record or not
|
# Whether to enable Call Detail Record or not
|
||||||
# Values: true | false
|
# Values: true | false
|
||||||
OPENVIDU_CDR=false
|
OPENVIDU_CDR=false
|
||||||
|
|
||||||
# Parameter "openvidu.cdr.path"
|
|
||||||
# Path where the cdr log file is hosted
|
# Path where the cdr log file is hosted
|
||||||
OPENVIDU_CDR_PATH=/opt/openvidu/log
|
OPENVIDU_CDR_PATH=/opt/openvidu/log
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ public class OpenViduServer implements JsonRpcConfigurer {
|
||||||
@DependsOn("openviduConfig")
|
@DependsOn("openviduConfig")
|
||||||
public KmsManager kmsManager(OpenviduConfig openviduConfig) {
|
public KmsManager kmsManager(OpenviduConfig openviduConfig) {
|
||||||
if (openviduConfig.getKmsUris().isEmpty()) {
|
if (openviduConfig.getKmsUris().isEmpty()) {
|
||||||
throw new IllegalArgumentException("'kms.uris' should contain at least one KMS url");
|
throw new IllegalArgumentException("'KMS_URIS' should contain at least one KMS url");
|
||||||
}
|
}
|
||||||
String firstKmsWsUri = openviduConfig.getKmsUris().get(0);
|
String firstKmsWsUri = openviduConfig.getKmsUris().get(0);
|
||||||
log.info("OpenVidu Server using one KMS: {}", firstKmsWsUri);
|
log.info("OpenVidu Server using one KMS: {}", firstKmsWsUri);
|
||||||
|
@ -114,13 +114,13 @@ public class OpenViduServer implements JsonRpcConfigurer {
|
||||||
log.info("OpenVidu CDR service is enabled");
|
log.info("OpenVidu CDR service is enabled");
|
||||||
loggers.add(new CDRLoggerFile());
|
loggers.add(new CDRLoggerFile());
|
||||||
} else {
|
} else {
|
||||||
log.info("OpenVidu CDR service is disabled (may be enable with 'openvidu.cdr=true')");
|
log.info("OpenVidu CDR service is disabled (may be enable with 'OPENVIDU_CDR=true')");
|
||||||
}
|
}
|
||||||
if (openviduConfig.isWebhookEnabled()) {
|
if (openviduConfig.isWebhookEnabled()) {
|
||||||
log.info("OpenVidu Webhook service is enabled");
|
log.info("OpenVidu Webhook service is enabled");
|
||||||
loggers.add(new CDRLoggerWebhook(openviduConfig));
|
loggers.add(new CDRLoggerWebhook(openviduConfig));
|
||||||
} else {
|
} else {
|
||||||
log.info("OpenVidu Webhook service is disabled (may be enabled with 'openvidu.webhook=true')");
|
log.info("OpenVidu Webhook service is disabled (may be enabled with 'OPENVIDU_WEBHOOK=true')");
|
||||||
}
|
}
|
||||||
return new CallDetailRecord(loggers);
|
return new CallDetailRecord(loggers);
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ import io.openvidu.server.webhook.CDRLoggerWebhook;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CDR logger to register all information of a Session.
|
* CDR logger to register all information of a Session.
|
||||||
* Enabled by property 'openvidu.cdr=true'
|
* Enabled by property 'OPENVIDU_CDR=true'
|
||||||
*
|
*
|
||||||
* - 'sessionCreated': {sessionId, timestamp}
|
* - 'sessionCreated': {sessionId, timestamp}
|
||||||
* - 'sessionDestroyed': {sessionId, timestamp, startTime, duration, reason}
|
* - 'sessionDestroyed': {sessionId, timestamp, startTime, duration, reason}
|
||||||
|
|
|
@ -433,62 +433,62 @@ public class OpenviduConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<String> getNonUserProperties() {
|
protected List<String> getNonUserProperties() {
|
||||||
return Arrays.asList("coturn.ip", "coturn.redis.ip", "kms.uris", "server.port", "coturn.redis.dbname",
|
return Arrays.asList("COTURN_IP", "COTURN_REDIS_IP", "KMS_URIS", "SERVER_PORT", "COTURN_REDIS_DBNAME",
|
||||||
"coturn.redis.password", "coturn.redis.connect-timeout");
|
"COTURN_REDIS_PASSWORD", "COTURN_REDIS_CONNECT_TIMEOUT");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Properties
|
// Properties
|
||||||
|
|
||||||
protected void checkConfigurationProperties() {
|
protected void checkConfigurationProperties() {
|
||||||
|
|
||||||
serverPort = getValue("server.port");
|
serverPort = getValue("SERVER_PORT");
|
||||||
|
|
||||||
coturnRedisDbname = getValue("coturn.redis.dbname");
|
coturnRedisDbname = getValue("COTURN_REDIS_DBNAME");
|
||||||
|
|
||||||
coturnRedisPassword = getValue("coturn.redis.password");
|
coturnRedisPassword = getValue("COTURN_REDIS_PASSWORD");
|
||||||
|
|
||||||
coturnRedisConnectTimeout = getValue("coturn.redis.connect-timeout");
|
coturnRedisConnectTimeout = getValue("COTURN_REDIS_CONNECT_TIMEOUT");
|
||||||
|
|
||||||
openviduSecret = asNonEmptyString("openvidu.secret");
|
openviduSecret = asNonEmptyString("OPENVIDU_SECRET");
|
||||||
|
|
||||||
checkOpenviduPublicurl();
|
checkOpenviduPublicurl();
|
||||||
|
|
||||||
openviduCdr = asBoolean("openvidu.cdr");
|
openviduCdr = asBoolean("OPENVIDU_CDR");
|
||||||
|
|
||||||
openviduCdrPath = asFileSystemPath("openvidu.cdr.path");
|
openviduCdrPath = asFileSystemPath("OPENVIDU_CDR_PATH");
|
||||||
|
|
||||||
openviduRecording = asBoolean("openvidu.recording");
|
openviduRecording = asBoolean("OPENVIDU_RECORDING");
|
||||||
openviduRecordingPublicAccess = asBoolean("openvidu.recording.public-access");
|
openviduRecordingPublicAccess = asBoolean("OPENVIDU_RECORDING_PUBLIC_ACCESS");
|
||||||
openviduRecordingAutostopTimeout = asNonNegativeInteger("openvidu.recording.autostop-timeout");
|
openviduRecordingAutostopTimeout = asNonNegativeInteger("OPENVIDU_RECORDING_AUTOSTOP_TIMEOUT");
|
||||||
openviduRecordingPath = asFileSystemPath("openvidu.recording.path");
|
openviduRecordingPath = asFileSystemPath("OPENVIDU_RECORDING_PATH");
|
||||||
openviduRecordingCustomLayout = asFileSystemPath("openvidu.recording.custom-layout");
|
openviduRecordingCustomLayout = asFileSystemPath("OPENVIDU_RECORDING_CUSTOM_LAYOUT");
|
||||||
openviduRecordingVersion = asNonEmptyString("openvidu.recording.version");
|
openviduRecordingVersion = asNonEmptyString("OPENVIDU_RECORDING_VERSION");
|
||||||
openviduRecordingComposedUrl = asOptionalURL("openvidu.recording.composed-url");
|
openviduRecordingComposedUrl = asOptionalURL("OPENVIDU_RECORDING_COMPOSED_URL");
|
||||||
checkOpenviduRecordingNotification();
|
checkOpenviduRecordingNotification();
|
||||||
|
|
||||||
openviduStreamsVideoMaxRecvBandwidth = asNonNegativeInteger("openvidu.streams.video.max-recv-bandwidth");
|
openviduStreamsVideoMaxRecvBandwidth = asNonNegativeInteger("OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH");
|
||||||
openviduStreamsVideoMinRecvBandwidth = asNonNegativeInteger("openvidu.streams.video.min-recv-bandwidth");
|
openviduStreamsVideoMinRecvBandwidth = asNonNegativeInteger("OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH");
|
||||||
openviduStreamsVideoMaxSendBandwidth = asNonNegativeInteger("openvidu.streams.video.max-send-bandwidth");
|
openviduStreamsVideoMaxSendBandwidth = asNonNegativeInteger("OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH");
|
||||||
openviduStreamsVideoMinSendBandwidth = asNonNegativeInteger("openvidu.streams.video.min-send-bandwidth");
|
openviduStreamsVideoMinSendBandwidth = asNonNegativeInteger("OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH");
|
||||||
|
|
||||||
openviduSessionsGarbageInterval = asNonNegativeInteger("openvidu.sessions.garbage.interval");
|
openviduSessionsGarbageInterval = asNonNegativeInteger("OPENVIDU_SESSIONS_GARBAGE_INTERVAL");
|
||||||
openviduSessionsGarbageThreshold = asNonNegativeInteger("openvidu.sessions.garbage.threshold");
|
openviduSessionsGarbageThreshold = asNonNegativeInteger("OPENVIDU_SESSIONS_GARBAGE_THRESHOLD");
|
||||||
|
|
||||||
kmsUrisList = checkKmsUris();
|
kmsUrisList = checkKmsUris();
|
||||||
|
|
||||||
checkCoturnIp();
|
checkCoturnIp();
|
||||||
|
|
||||||
coturnRedisIp = asOptionalInetAddress("coturn.redis.ip");
|
coturnRedisIp = asOptionalInetAddress("COTURN_REDIS_IP");
|
||||||
|
|
||||||
checkWebhook();
|
checkWebhook();
|
||||||
|
|
||||||
checkCertificateType();
|
checkCertificateType();
|
||||||
|
|
||||||
dotenvPath = getValue("dotenv.path");
|
dotenvPath = getValue("DOTENV_PATH");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkCertificateType() {
|
private void checkCertificateType() {
|
||||||
String property = "certificate.type";
|
String property = "CERTIFICATE_TYPE";
|
||||||
certificateType = asNonEmptyString(property);
|
certificateType = asNonEmptyString(property);
|
||||||
|
|
||||||
if (certificateType != null && !certificateType.isEmpty()) {
|
if (certificateType != null && !certificateType.isEmpty()) {
|
||||||
|
@ -500,7 +500,7 @@ public class OpenviduConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkCoturnIp() {
|
private void checkCoturnIp() {
|
||||||
String property = "coturn.ip";
|
String property = "COTURN_IP";
|
||||||
coturnIp = asOptionalIPv4OrIPv6(property);
|
coturnIp = asOptionalIPv4OrIPv6(property);
|
||||||
|
|
||||||
if (coturnIp == null || this.coturnIp.isEmpty()) {
|
if (coturnIp == null || this.coturnIp.isEmpty()) {
|
||||||
|
@ -513,36 +513,35 @@ public class OpenviduConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkWebhook() {
|
private void checkWebhook() {
|
||||||
openviduWebhookEnabled = asBoolean("openvidu.webhook");
|
openviduWebhookEnabled = asBoolean("OPENVIDU_WEBHOOK");
|
||||||
openviduWebhookEndpoint = asOptionalURL("openvidu.webhook.endpoint");
|
openviduWebhookEndpoint = asOptionalURL("OPENVIDU_WEBHOOK_ENDPOINT");
|
||||||
webhookHeadersList = checkWebhookHeaders();
|
webhookHeadersList = checkWebhookHeaders();
|
||||||
webhookEventsList = getWebhookEvents();
|
webhookEventsList = getWebhookEvents();
|
||||||
|
|
||||||
if (openviduWebhookEnabled && (openviduWebhookEndpoint == null || openviduWebhookEndpoint.isEmpty())) {
|
if (openviduWebhookEnabled && (openviduWebhookEndpoint == null || openviduWebhookEndpoint.isEmpty())) {
|
||||||
addError("openvidu.webhook.endpoint",
|
addError("OPENVIDU_WEBHOOK_ENDPOINT",
|
||||||
"With " + getPropertyName("openvidu.webhook") + "=true, this property cannot be empty");
|
"With " + getPropertyName("OPENVIDU_WEBHOOK") + "=true, this property cannot be empty");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkOpenviduRecordingNotification() {
|
private void checkOpenviduRecordingNotification() {
|
||||||
|
String recordingNotif = asNonEmptyString("OPENVIDU_RECORDING_NOTIFICATION");
|
||||||
String recordingNotif = asNonEmptyString("openvidu.recording.notification");
|
|
||||||
try {
|
try {
|
||||||
openviduRecordingNotification = RecordingNotification.valueOf(recordingNotif);
|
openviduRecordingNotification = RecordingNotification.valueOf(recordingNotif);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
addError("openvidu.recording.notification",
|
addError("OPENVIDU_RECORDING_NOTIFICATION",
|
||||||
"Must be one of the values " + Arrays.asList(RecordingNotification.values()));
|
"Must be one of the values " + Arrays.asList(RecordingNotification.values()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkOpenviduPublicurl() {
|
private void checkOpenviduPublicurl() {
|
||||||
final String property = "openvidu.domain.or.public.ip";
|
final String property = "OPENVIDU_DOMAIN_OR_PUBLIC_IP";
|
||||||
String domain = getValue(property);
|
String domain = getValue(property);
|
||||||
|
|
||||||
if (domain != null && !domain.isEmpty()) {
|
if (domain != null && !domain.isEmpty()) {
|
||||||
this.openviduPublicUrl = "https://" + domain;
|
this.openviduPublicUrl = "https://" + domain;
|
||||||
} else {
|
} else {
|
||||||
final String urlProperty = "openvidu.publicurl";
|
final String urlProperty = "OPENVIDU_PUBLICURL";
|
||||||
String publicurl = getValue(urlProperty);
|
String publicurl = getValue(urlProperty);
|
||||||
if (publicurl == null || publicurl.isEmpty()) {
|
if (publicurl == null || publicurl.isEmpty()) {
|
||||||
addError(property, "Cannot be empty");
|
addError(property, "Cannot be empty");
|
||||||
|
@ -607,7 +606,7 @@ public class OpenviduConfig {
|
||||||
|
|
||||||
public List<String> checkKmsUris() {
|
public List<String> checkKmsUris() {
|
||||||
|
|
||||||
String property = "kms.uris";
|
String property = "KMS_URIS";
|
||||||
|
|
||||||
return asKmsUris(property, getValue(property));
|
return asKmsUris(property, getValue(property));
|
||||||
|
|
||||||
|
@ -638,7 +637,7 @@ public class OpenviduConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Header> checkWebhookHeaders() {
|
private List<Header> checkWebhookHeaders() {
|
||||||
String property = "openvidu.webhook.headers";
|
String property = "OPENVIDU_WEBHOOK_HEADERS";
|
||||||
List<String> headers = asJsonStringsArray(property);
|
List<String> headers = asJsonStringsArray(property);
|
||||||
List<Header> headerList = new ArrayList<>();
|
List<Header> headerList = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -663,7 +662,7 @@ public class OpenviduConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<CDREventName> getWebhookEvents() {
|
private List<CDREventName> getWebhookEvents() {
|
||||||
String property = "openvidu.webhook.events";
|
String property = "OPENVIDU_WEBHOOK_EVENTS";
|
||||||
List<String> events = asJsonStringsArray(property);
|
List<String> events = asJsonStringsArray(property);
|
||||||
List<CDREventName> eventList = new ArrayList<>();
|
List<CDREventName> eventList = new ArrayList<>();
|
||||||
|
|
||||||
|
|
|
@ -438,7 +438,7 @@ public class SessionEventsHandler {
|
||||||
|
|
||||||
public void sendRecordingStartedNotification(Session session, Recording recording) {
|
public void sendRecordingStartedNotification(Session session, Recording recording) {
|
||||||
|
|
||||||
// Filter participants by roles according to "openvidu.recording.notification"
|
// Filter participants by roles according to "OPENVIDU_RECORDING_NOTIFICATION"
|
||||||
Set<Participant> filteredParticipants = this.filterParticipantsByRole(
|
Set<Participant> filteredParticipants = this.filterParticipantsByRole(
|
||||||
this.openviduConfig.getRolesFromRecordingNotification(), session.getParticipants());
|
this.openviduConfig.getRolesFromRecordingNotification(), session.getParticipants());
|
||||||
|
|
||||||
|
@ -457,7 +457,7 @@ public class SessionEventsHandler {
|
||||||
// Be sure to clean this map (this should return null)
|
// Be sure to clean this map (this should return null)
|
||||||
this.recordingsStarted.remove(session.getSessionId());
|
this.recordingsStarted.remove(session.getSessionId());
|
||||||
|
|
||||||
// Filter participants by roles according to "openvidu.recording.notification"
|
// Filter participants by roles according to "OPENVIDU_RECORDING_NOTIFICATION"
|
||||||
Set<Participant> existingParticipants;
|
Set<Participant> existingParticipants;
|
||||||
try {
|
try {
|
||||||
existingParticipants = session.getParticipants();
|
existingParticipants = session.getParticipants();
|
||||||
|
|
|
@ -429,7 +429,7 @@ public abstract class SessionManager {
|
||||||
private void startSessionGarbageCollector() {
|
private void startSessionGarbageCollector() {
|
||||||
if (openviduConfig.getSessionGarbageInterval() == 0) {
|
if (openviduConfig.getSessionGarbageInterval() == 0) {
|
||||||
log.info(
|
log.info(
|
||||||
"Garbage collector for non active sessions is disabled (property 'openvidu.sessions.garbage.interval' is 0)");
|
"Garbage collector for non active sessions is disabled (property 'OPENVIDU_SESSIONS_GARBAGE_INTERVAL' is 0)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TimerTask task = new TimerTask() {
|
TimerTask task = new TimerTask() {
|
||||||
|
|
|
@ -135,11 +135,11 @@ public class RecordingManager {
|
||||||
} else if (e.getCodeValue() == Code.RECORDING_PATH_NOT_VALID.getValue()) {
|
} else if (e.getCodeValue() == Code.RECORDING_PATH_NOT_VALID.getValue()) {
|
||||||
finalErrorMessage = "Error initializing recording path \""
|
finalErrorMessage = "Error initializing recording path \""
|
||||||
+ this.openviduConfig.getOpenViduRecordingPath()
|
+ this.openviduConfig.getOpenViduRecordingPath()
|
||||||
+ "\" set with system property \"openvidu.recording.path\"";
|
+ "\" set with system property \"OPENVIDU_RECORDING_PATH\"";
|
||||||
} else if (e.getCodeValue() == Code.RECORDING_FILE_EMPTY_ERROR.getValue()) {
|
} else if (e.getCodeValue() == Code.RECORDING_FILE_EMPTY_ERROR.getValue()) {
|
||||||
finalErrorMessage = "Error initializing recording custom layouts path \""
|
finalErrorMessage = "Error initializing recording custom layouts path \""
|
||||||
+ this.openviduConfig.getOpenviduRecordingCustomLayout()
|
+ this.openviduConfig.getOpenviduRecordingCustomLayout()
|
||||||
+ "\" set with system property \"openvidu.recording.custom-layout\"";
|
+ "\" set with system property \"OPENVIDU_RECORDING_CUSTOM_LAYOUT\"";
|
||||||
}
|
}
|
||||||
log.error(finalErrorMessage + ". Shutting down OpenVidu Server");
|
log.error(finalErrorMessage + ". Shutting down OpenVidu Server");
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
|
@ -212,7 +212,7 @@ public class RecordingManager {
|
||||||
if ("docker".equals(openviduConfig.getSpringProfile())) {
|
if ("docker".equals(openviduConfig.getSpringProfile())) {
|
||||||
final String NEW_LINE = System.getProperty("line.separator");
|
final String NEW_LINE = System.getProperty("line.separator");
|
||||||
message += ": make sure you include the following flags in your \"docker run\" command:" + NEW_LINE
|
message += ": make sure you include the following flags in your \"docker run\" command:" + NEW_LINE
|
||||||
+ " -e openvidu.recording.path=/YOUR/PATH/TO/VIDEO/FILES" + NEW_LINE
|
+ " -e OPENVIDU_RECORDING_PATH=/YOUR/PATH/TO/VIDEO/FILES" + NEW_LINE
|
||||||
+ " -e MY_UID=$(id -u $USER)" + NEW_LINE + " -v /var/run/docker.sock:/var/run/docker.sock"
|
+ " -e MY_UID=$(id -u $USER)" + NEW_LINE + " -v /var/run/docker.sock:/var/run/docker.sock"
|
||||||
+ NEW_LINE + " -v /YOUR/PATH/TO/VIDEO/FILES:/YOUR/PATH/TO/VIDEO/FILES" + NEW_LINE;
|
+ NEW_LINE + " -v /YOUR/PATH/TO/VIDEO/FILES:/YOUR/PATH/TO/VIDEO/FILES" + NEW_LINE;
|
||||||
} else {
|
} else {
|
||||||
|
@ -649,7 +649,7 @@ public class RecordingManager {
|
||||||
|
|
||||||
// Check Kurento Media Server write permissions in recording path
|
// Check Kurento Media Server write permissions in recording path
|
||||||
if (this.kmsManager.getKmss().isEmpty()) {
|
if (this.kmsManager.getKmss().isEmpty()) {
|
||||||
log.warn("No KMSs were defined in kms.uris array. Recording path check aborted");
|
log.warn("No KMSs were defined in KMS_URIS array. Recording path check aborted");
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
MediaPipeline pipeline = this.kmsManager.getLessLoadedConnectedAndRunningKms().getKurentoClient()
|
MediaPipeline pipeline = this.kmsManager.getLessLoadedConnectedAndRunningKms().getKurentoClient()
|
||||||
|
@ -708,7 +708,7 @@ public class RecordingManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (openviduConfig.openviduRecordingCustomLayoutChanged(openviduRecordingCustomLayout)) {
|
if (openviduConfig.openviduRecordingCustomLayoutChanged(openviduRecordingCustomLayout)) {
|
||||||
// Property openvidu.recording.custom-layout changed
|
// Property OPENVIDU_RECORDING_CUSTOM_LAYOUT changed
|
||||||
File dir = new File(openviduRecordingCustomLayout);
|
File dir = new File(openviduRecordingCustomLayout);
|
||||||
if (dir.exists()) {
|
if (dir.exists()) {
|
||||||
if (!dir.isDirectory()) {
|
if (!dir.isDirectory()) {
|
||||||
|
@ -733,7 +733,7 @@ public class RecordingManager {
|
||||||
try {
|
try {
|
||||||
Files.createDirectories(dir.toPath());
|
Files.createDirectories(dir.toPath());
|
||||||
log.warn(
|
log.warn(
|
||||||
"OpenVidu custom layouts path (system property 'openvidu.recording.custom-layout') has been created, being folder {}. "
|
"OpenVidu custom layouts path (system property 'OPENVIDU_RECORDING_CUSTOM_LAYOUT') has been created, being folder {}. "
|
||||||
+ "It is an empty folder, so no custom layout is currently present",
|
+ "It is an empty folder, so no custom layout is currently present",
|
||||||
dir.getAbsolutePath());
|
dir.getAbsolutePath());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
|
@ -27,12 +27,12 @@ import io.openvidu.server.config.OpenviduConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class serves custom recording layouts from host folder indicated in
|
* This class serves custom recording layouts from host folder indicated in
|
||||||
* configuration property openvidu.recording.custom-layout
|
* configuration property OPENVIDU_RECORDING_CUSTOM_LAYOUT
|
||||||
*
|
*
|
||||||
* @author Pablo Fuente (pablofuenteperez@gmail.com)
|
* @author Pablo Fuente (pablofuenteperez@gmail.com)
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
@ConditionalOnProperty(name = "openvidu.recording", havingValue = "true")
|
@ConditionalOnProperty(name = "OPENVIDU_RECORDING", havingValue = "true")
|
||||||
public class RecordingCustomLayoutsResourceHandler implements WebMvcConfigurer {
|
public class RecordingCustomLayoutsResourceHandler implements WebMvcConfigurer {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
|
@ -26,7 +26,7 @@ import io.openvidu.server.config.OpenviduConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class serves recording files from host folder indicated in configuration
|
* This class serves recording files from host folder indicated in configuration
|
||||||
* property openvidu.recording.path
|
* property OPENVIDU_RECORDING_PATH
|
||||||
*
|
*
|
||||||
* @author Pablo Fuente (pablofuenteperez@gmail.com)
|
* @author Pablo Fuente (pablofuenteperez@gmail.com)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -444,7 +444,7 @@ public class SessionRestController {
|
||||||
log.info("REST API: POST /api/recordings/start {}", params.toString());
|
log.info("REST API: POST /api/recordings/start {}", params.toString());
|
||||||
|
|
||||||
if (!this.openviduConfig.isRecordingModuleEnabled()) {
|
if (!this.openviduConfig.isRecordingModuleEnabled()) {
|
||||||
// OpenVidu Server configuration property "openvidu.recording" is set to false
|
// OpenVidu Server configuration property "OPENVIDU_RECORDING" is set to false
|
||||||
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
|
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,181 +1,180 @@
|
||||||
{
|
{
|
||||||
"properties": [
|
"properties": [
|
||||||
{
|
{
|
||||||
"name": "dotenv.path",
|
"name": "DOTENV_PATH",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Path to the .env configuration file"
|
"description": "Path to the .env configuration file"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "kms.uris",
|
"name": "KMS_URIS",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "KMS URL's to which OpenVidu Server will try to connect. They are tested in order until a valid one is found",
|
"description": "KMS URL's to which OpenVidu Server will try to connect. They are tested in order until a valid one is found",
|
||||||
"defaultValue": "[\"ws://localhost:8888/kurento\"]"
|
"defaultValue": "[\"ws://localhost:8888/kurento\"]"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.secret",
|
"name": "OPENVIDU_SECRET",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Secret used to connect to OpenVidu Server. This value is required when using the REST API or any server client, as well as when connecting to openvidu-server dashboard",
|
"description": "Secret used to connect to OpenVidu Server. This value is required when using the REST API or any server client, as well as when connecting to openvidu-server dashboard",
|
||||||
"defaultValue": "MY_SECRET"
|
"defaultValue": "MY_SECRET"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.publicurl",
|
"name": "OPENVIDU_PUBLICURL",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "URL to connect clients to OpenVidu Server. This must be the full IP of your OpenVidu Server, including protocol, host and port (for example: https://my.openvidu.server.ip:4443). If no port argument is provided, 'server.port' param will be appended to it",
|
"description": "URL to connect clients to OpenVidu Server. This must be the full IP of your OpenVidu Server, including protocol, host and port (for example: https://my.openvidu.server.ip:4443). If no port argument is provided, 'server.port' param will be appended to it",
|
||||||
"defaultValue": "local"
|
"defaultValue": "local"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.cdr",
|
"name": "OPENVIDU_CDR",
|
||||||
"type": "java.lang.Boolean",
|
"type": "java.lang.Boolean",
|
||||||
"description": "Whether to enable Call Detail Record or not",
|
"description": "Whether to enable Call Detail Record or not",
|
||||||
"defaultValue": false
|
"defaultValue": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.cdr.path",
|
"name": "OPENVIDU_CDR_PATH",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Where to store CDR files",
|
"description": "Where to store CDR files",
|
||||||
"defaultValue": "log"
|
"defaultValue": "log"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.recording",
|
"name": "OPENVIDU_RECORDING",
|
||||||
"type": "java.lang.Boolean",
|
"type": "java.lang.Boolean",
|
||||||
"description": "Whether to start OpenVidu Server with recording module service available or not (a Docker image will be downloaded during the first execution). Apart from setting this param to true, it is also necessary to explicitly configure sessions to be recorded",
|
"description": "Whether to start OpenVidu Server with recording module service available or not (a Docker image will be downloaded during the first execution). Apart from setting this param to true, it is also necessary to explicitly configure sessions to be recorded",
|
||||||
"defaultValue": false
|
"defaultValue": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.recording.path",
|
"name": "OPENVIDU_RECORDING_PATH",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Where to store the recorded video files",
|
"description": "Where to store the recorded video files",
|
||||||
"defaultValue": "/opt/openvidu/recordings"
|
"defaultValue": "/opt/openvidu/recordings"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.recording.public-access",
|
"name": "OPENVIDU_RECORDING_PUBLIC_ACCESS",
|
||||||
"type": "java.lang.Boolean",
|
"type": "java.lang.Boolean",
|
||||||
"description": "'true' to allow public access to the video files specified in 'openviu.recording.path'. 'false' to only allow access to authenticated users",
|
"description": "'true' to allow public access to the video files specified in 'openviu.recording.path'. 'false' to only allow access to authenticated users",
|
||||||
"defaultValue": false
|
"defaultValue": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.recording.notification",
|
"name": "OPENVIDU_RECORDING_NOTIFICATION",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Which users will receive a notfication (client events 'recordingStarted' and 'recordingStopped') when recording starts and stops: 'none', 'publisher_moderator', 'all'",
|
"description": "Which users will receive a notfication (client events 'recordingStarted' and 'recordingStopped') when recording starts and stops: 'none', 'publisher_moderator', 'all'",
|
||||||
"defaultValue": "publisher_moderator"
|
"defaultValue": "publisher_moderator"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.recording.custom-layout",
|
"name": "OPENVIDU_RECORDING_CUSTOM_LAYOUT",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Where should OpenVidu Server look for custom recording layouts",
|
"description": "Where should OpenVidu Server look for custom recording layouts",
|
||||||
"defaultValue": "/opt/openvidu/custom-layout"
|
"defaultValue": "/opt/openvidu/custom-layout"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.recording.version",
|
"name": "OPENVIDU_RECORDING_VERSION",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Tag for openvidu/openvidu-recording Docker image"
|
"description": "Tag for openvidu/openvidu-recording Docker image"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.recording.autostop-timeout",
|
"name": "OPENVIDU_RECORDING_AUTOSTOP_TIMEOUT",
|
||||||
"type": "java.lang.Integer",
|
"type": "java.lang.Integer",
|
||||||
"description": "Timeout in seconds for automatically stopping the recording of a session when last user disconnects or when it starts and no user is publishing (only if RecordingMode.MANUAL)",
|
"description": "Timeout in seconds for automatically stopping the recording of a session when last user disconnects or when it starts and no user is publishing (only if RecordingMode.MANUAL)",
|
||||||
"defaultValue": 120
|
"defaultValue": 120
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.recording.composed-url",
|
"name": "OPENVIDU_RECORDING_COMPOSED_URL",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "URL the composed-video recording dockerized Chrome will use to connect to the recording layouts inside OpenVidu Server host. This will affect all video recording layouts (default one BEST_FIT, all CUSTOM layouts). This allows changing the default URL, which is 'openvidu.publicurl', for those cases where OpenVidu Server host does not allow back and forth connections using the public url from inside the host",
|
"description": "URL the composed-video recording dockerized Chrome will use to connect to the recording layouts inside OpenVidu Server host. This will affect all video recording layouts (default one BEST_FIT, all CUSTOM layouts). This allows changing the default URL, which is 'OPENVIDU_PUBLICURL', for those cases where OpenVidu Server host does not allow back and forth connections using the public url from inside the host",
|
||||||
"defaultValue": ""
|
"defaultValue": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.webhook",
|
"name": "OPENVIDU_WEBHOOK",
|
||||||
"type": "java.lang.Boolean",
|
"type": "java.lang.Boolean",
|
||||||
"description": "'true' to enable OpenVidu Server Webhook service. 'false' otherwise",
|
"description": "'true' to enable OpenVidu Server Webhook service. 'false' otherwise",
|
||||||
"defaultValue": false
|
"defaultValue": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.webhook.endpoint",
|
"name": "OPENVIDU_WEBHOOK_ENDPOINT",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "HTTP endpoint where OpenVidu Server will send Webhook HTTP POST messages",
|
"description": "HTTP endpoint where OpenVidu Server will send Webhook HTTP POST messages",
|
||||||
"defaultValue": ""
|
"defaultValue": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.webhook.headers",
|
"name": "OPENVIDU_WEBHOOK_HEADERS",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "List of headers that OpenVidu Server Webhook service will attach to HTTP POST messages",
|
"description": "List of headers that OpenVidu Server Webhook service will attach to HTTP POST messages",
|
||||||
"defaultValue": "[]"
|
"defaultValue": "[]"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.webhook.events",
|
"name": "OPENVIDU_WEBHOOK_EVENTS",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "List of events that will be sent by OpenVidu Server Webhook service",
|
"description": "List of events that will be sent by OpenVidu Server Webhook service",
|
||||||
"defaultValue": "[\"sessionCreated\",\"sessionDestroyed\",\"participantJoined\",\"participantLeft\",\"webrtcConnectionCreated\",\"webrtcConnectionDestroyed\",\"recordingStatusChanged\"]"
|
"defaultValue": "[\"sessionCreated\",\"sessionDestroyed\",\"participantJoined\",\"participantLeft\",\"webrtcConnectionCreated\",\"webrtcConnectionDestroyed\",\"recordingStatusChanged\"]"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.streams.video.max-recv-bandwidth",
|
"name": "OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH",
|
||||||
"type": "java.lang.Integer",
|
"type": "java.lang.Integer",
|
||||||
"description": "Maximum video bandwidth sent from clients to OpenVidu Server, in kbps. 0 means unconstrained",
|
"description": "Maximum video bandwidth sent from clients to OpenVidu Server, in kbps. 0 means unconstrained",
|
||||||
"defaultValue": 1000
|
"defaultValue": 1000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.streams.video.min-recv-bandwidth",
|
"name": "OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH",
|
||||||
"type": "java.lang.Integer",
|
"type": "java.lang.Integer",
|
||||||
"description": "Minimum video bandwidth sent from clients to OpenVidu Server, in kbps. 0 means unconstrained",
|
"description": "Minimum video bandwidth sent from clients to OpenVidu Server, in kbps. 0 means unconstrained",
|
||||||
"defaultValue": 300
|
"defaultValue": 300
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.streams.video.max-send-bandwidth",
|
"name": "OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH",
|
||||||
"type": "java.lang.Integer",
|
"type": "java.lang.Integer",
|
||||||
"description": "Maximum video bandwidth sent from OpenVidu Server to clients, in kbps. 0 means unconstrained",
|
"description": "Maximum video bandwidth sent from OpenVidu Server to clients, in kbps. 0 means unconstrained",
|
||||||
"defaultValue": 1000
|
"defaultValue": 1000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.streams.video.min-send-bandwidth",
|
"name": "OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH",
|
||||||
"type": "java.lang.Integer",
|
"type": "java.lang.Integer",
|
||||||
"description": "Minimum video bandwidth sent from OpenVidu Server to clients, in kbps. 0 means unconstrained",
|
"description": "Minimum video bandwidth sent from OpenVidu Server to clients, in kbps. 0 means unconstrained",
|
||||||
"defaultValue": 300
|
"defaultValue": 300
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.sessions.garbage.interval",
|
"name": "OPENVIDU_SESSIONS_GARBAGE_INTERVAL",
|
||||||
"type": "java.lang.Integer",
|
"type": "java.lang.Integer",
|
||||||
"description": "How often the garbage collector of non active sessions runs. This helps cleaning up sessions that have been initialized through REST API (and maybe tokens have been created for them) but have had no users connected. Default to 900s (15 mins). 0 to disable non active sessions garbage collector",
|
"description": "How often the garbage collector of non active sessions runs. This helps cleaning up sessions that have been initialized through REST API (and maybe tokens have been created for them) but have had no users connected. Default to 900s (15 mins). 0 to disable non active sessions garbage collector",
|
||||||
"defaultValue": 900
|
"defaultValue": 900
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "openvidu.sessions.garbage.threshold",
|
"name": "OPENVIDU_SESSIONS_GARBAGE_THRESHOLD",
|
||||||
"type": "java.lang.Integer",
|
"type": "java.lang.Integer",
|
||||||
"description": "Minimum time in seconds that a non active session must have been in existence for the garbage collector of non active sessions to remove it. Default to 3600s (1 hour). If non active sessions garbage collector is disabled (property 'openvidu.sessions.garbage.interval' to 0) this property is ignored",
|
"description": "Minimum time in seconds that a non active session must have been in existence for the garbage collector of non active sessions to remove it. Default to 3600s (1 hour). If non active sessions garbage collector is disabled (property 'OPENVIDU_SESSIONS_GARBAGE_INTERVAL' to 0) this property is ignored",
|
||||||
"defaultValue": 3600
|
"defaultValue": 3600
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "coturn.ip",
|
"name": "COTURN_IP",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Coturn IP of a deployed coturn server"
|
"description": "Coturn IP of a deployed coturn server"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "coturn.redis.ip",
|
"name": "COTURN_REDIS_IP",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Redis IP where OpenVidu Server should connect to store TURN credentials",
|
"description": "Redis IP where OpenVidu Server should connect to store TURN credentials",
|
||||||
"defaultValue": "127.0.0.1"
|
"defaultValue": "127.0.0.1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "coturn.redis.dbname",
|
"name": "COTURN_REDIS_DBNAME",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Redis database where to store TURN credentials",
|
"description": "Redis database where to store TURN credentials",
|
||||||
"defaultValue": "0"
|
"defaultValue": "0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "coturn.redis.password",
|
"name": "COTURN_REDIS_PASSWORD",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Password to connect OpenVidu Server to Redis database to store TURN credentials",
|
"description": "Password to connect OpenVidu Server to Redis database to store TURN credentials",
|
||||||
"defaultValue": "turn"
|
"defaultValue": "turn"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "coturn.redis.connect-timeout",
|
"name": "COTURN_REDIS_CONNECT_TIMEOUT",
|
||||||
"type": "java.lang.Integer",
|
"type": "java.lang.Integer",
|
||||||
"description": "Timeout in seconds when OpenVidu Server is connecting to Redis database to store TURN credentials",
|
"description": "Timeout in seconds when OpenVidu Server is connecting to Redis database to store TURN credentials",
|
||||||
"defaultValue": 30
|
"defaultValue": 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "coturn.sqlite",
|
"name": "CERTIFICATE_TYPE",
|
||||||
"type": "java.lang.String",
|
"type": "java.lang.String",
|
||||||
"description": "Path to COTURN sqlite database to add and remove TURN user credentials",
|
"description": "Which kind of certificate shall be used by OpenVidu in production mode [selfsigned,letsencrypt,owncert]"
|
||||||
"defaultValue": "/opt/openvidu/coturn/turndb"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "jsonRpcClientWebSocket.reconnectionDelay",
|
"name": "jsonRpcClientWebSocket.reconnectionDelay",
|
||||||
|
@ -218,11 +217,6 @@
|
||||||
"type": "java.lang.Long",
|
"type": "java.lang.Long",
|
||||||
"description": "Maximum number of websocket sessions that openvidu-server will be able to hold",
|
"description": "Maximum number of websocket sessions that openvidu-server will be able to hold",
|
||||||
"defaultValue": 9223372036854775807
|
"defaultValue": 9223372036854775807
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "certificate.type",
|
|
||||||
"type": "java.lang.String",
|
|
||||||
"description": "A description for 'certificate.type'"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -1,25 +1,22 @@
|
||||||
spring.profiles.active: docker
|
spring.profiles.active: docker
|
||||||
|
|
||||||
server.address: 0.0.0.0
|
server.address: 0.0.0.0
|
||||||
server.ssl.enabled: true
|
|
||||||
openvidu.recording.version: 2.9.0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
server.port: 4443
|
server.port: 4443
|
||||||
|
server.ssl.enabled: true
|
||||||
server.ssl.key-store: classpath:openvidu-selfsigned.jks
|
server.ssl.key-store: classpath:openvidu-selfsigned.jks
|
||||||
server.ssl.key-store-password: openvidu
|
server.ssl.key-store-password: openvidu
|
||||||
server.ssl.key-store-type: JKS
|
server.ssl.key-store-type: JKS
|
||||||
server.ssl.key-alias: openvidu-selfsigned
|
server.ssl.key-alias: openvidu-selfsigned
|
||||||
kms.uris=["ws://localhost:8888/kurento"]
|
|
||||||
|
|
||||||
openvidu.secret: MY_SECRET
|
KMS_URIS=["ws://localhost:8888/kurento"]
|
||||||
openvidu.publicurl: local
|
|
||||||
openvidu.cdr: false
|
|
||||||
|
|
||||||
openvidu.recording: false
|
OPENVIDU_SECRET: MY_SECRET
|
||||||
openvidu.recording.path: /opt/openvidu/recordings
|
OPENVIDU_PUBLICURL: local
|
||||||
openvidu.recording.public-access: false
|
OPENVIDU_CDR: false
|
||||||
openvidu.recording.notification: publisher_moderator
|
|
||||||
openvidu.recording.custom-layout: /opt/openvidu/custom-layout
|
OPENVIDU_RECORDING: false
|
||||||
openvidu.recording.autostop-timeout: 120
|
OPENVIDU_RECORDING_VERSION: 2.9.0
|
||||||
|
OPENVIDU_RECORDING_PATH: /opt/openvidu/recordings
|
||||||
|
OPENVIDU_RECORDING_PUBLIC_ACCESS: false
|
||||||
|
OPENVIDU_RECORDING_NOTIFICATION: publisher_moderator
|
||||||
|
OPENVIDU_RECORDING_CUSTOM_LAYOUT: /opt/openvidu/custom-layout
|
||||||
|
OPENVIDU_RECORDING_AUTOSTOP_TIMEOUT: 120
|
|
@ -1,5 +1,3 @@
|
||||||
dotenv.path=.
|
|
||||||
|
|
||||||
server.address=0.0.0.0
|
server.address=0.0.0.0
|
||||||
server.ssl.enabled=true
|
server.ssl.enabled=true
|
||||||
server.port=4443
|
server.port=4443
|
||||||
|
@ -11,38 +9,40 @@ server.ssl.key-alias=openvidu-selfsigned
|
||||||
logging.level.root=info
|
logging.level.root=info
|
||||||
spring.main.allow-bean-definition-overriding=true
|
spring.main.allow-bean-definition-overriding=true
|
||||||
|
|
||||||
certificate.type=selfsigned
|
DOTENV_PATH=.
|
||||||
kms.uris=["ws://localhost:8888/kurento"]
|
|
||||||
|
|
||||||
openvidu.publicurl=local
|
CERTIFICATE_TYPE=selfsigned
|
||||||
openvidu.secret=MY_SECRET
|
KMS_URIS=["ws://localhost:8888/kurento"]
|
||||||
|
|
||||||
openvidu.cdr=false
|
OPENVIDU_PUBLICURL=local
|
||||||
openvidu.cdr.path=log
|
OPENVIDU_SECRET=MY_SECRET
|
||||||
|
|
||||||
openvidu.webhook=false
|
OPENVIDU_CDR=false
|
||||||
openvidu.webhook.endpoint=
|
OPENVIDU_CDR_PATH=log
|
||||||
openvidu.webhook.headers=[]
|
|
||||||
openvidu.webhook.events=["sessionCreated","sessionDestroyed","participantJoined","participantLeft","webrtcConnectionCreated","webrtcConnectionDestroyed","recordingStatusChanged","filterEventDispatched","mediaNodeStatusChanged"]
|
|
||||||
|
|
||||||
openvidu.recording=false
|
OPENVIDU_WEBHOOK=false
|
||||||
openvidu.recording.version=2.9.0
|
OPENVIDU_WEBHOOK_ENDPOINT=
|
||||||
openvidu.recording.path=/opt/openvidu/recordings
|
OPENVIDU_WEBHOOK_HEADERS=[]
|
||||||
openvidu.recording.public-access=false
|
OPENVIDU_WEBHOOK_EVENTS=["sessionCreated","sessionDestroyed","participantJoined","participantLeft","webrtcConnectionCreated","webrtcConnectionDestroyed","recordingStatusChanged","filterEventDispatched","mediaNodeStatusChanged"]
|
||||||
openvidu.recording.notification=publisher_moderator
|
|
||||||
openvidu.recording.custom-layout=/opt/openvidu/custom-layout
|
|
||||||
openvidu.recording.autostop-timeout=120
|
|
||||||
openvidu.recording.composed-url=
|
|
||||||
|
|
||||||
openvidu.streams.video.max-recv-bandwidth=1000
|
OPENVIDU_RECORDING=false
|
||||||
openvidu.streams.video.min-recv-bandwidth=300
|
OPENVIDU_RECORDING_VERSION=2.9.0
|
||||||
openvidu.streams.video.max-send-bandwidth=1000
|
OPENVIDU_RECORDING_PATH=/opt/openvidu/recordings
|
||||||
openvidu.streams.video.min-send-bandwidth=300
|
OPENVIDU_RECORDING_PUBLIC_ACCESS=false
|
||||||
|
OPENVIDU_RECORDING_NOTIFICATION=publisher_moderator
|
||||||
|
OPENVIDU_RECORDING_CUSTOM_LAYOUT=/opt/openvidu/custom-layout
|
||||||
|
OPENVIDU_RECORDING_AUTOSTOP_TIMEOUT=120
|
||||||
|
OPENVIDU_RECORDING_COMPOSED_URL=
|
||||||
|
|
||||||
openvidu.sessions.garbage.interval=900
|
OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH=1000
|
||||||
openvidu.sessions.garbage.threshold=3600
|
OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH=300
|
||||||
|
OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH=1000
|
||||||
|
OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH=300
|
||||||
|
|
||||||
coturn.redis.ip=127.0.0.1
|
OPENVIDU_SESSIONS_GARBAGE_INTERVAL=900
|
||||||
coturn.redis.dbname=0
|
OPENVIDU_SESSIONS_GARBAGE_THRESHOLD=3600
|
||||||
coturn.redis.password=turn
|
|
||||||
coturn.redis.connect-timeout=30
|
COTURN_REDIS_IP=127.0.0.1
|
||||||
|
COTURN_REDIS_DBNAME=0
|
||||||
|
COTURN_REDIS_PASSWORD=turn
|
||||||
|
COTURN_REDIS_CONNECT_TIMEOUT=30
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
|
|
||||||
<springProperty scope="context" name="cdrPath" source="openvidu.cdr.path" />
|
<springProperty scope="context" name="cdrPath" source="OPENVIDU_CDR_PATH" />
|
||||||
|
|
||||||
<timestamp key="myTimestamp" timeReference="contextBirth"
|
<timestamp key="myTimestamp" timeReference="contextBirth"
|
||||||
datePattern="HH-mm-ss" />
|
datePattern="HH-mm-ss" />
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
<level value="INFO" />
|
<level value="INFO" />
|
||||||
<appender-ref ref="STDOUT" />
|
<appender-ref ref="STDOUT" />
|
||||||
</root>
|
</root>
|
||||||
<if condition='property("openvidu.cdr").equalsIgnoreCase("true")'>
|
<if condition='property("OPENVIDU_CDR").equalsIgnoreCase("true")'>
|
||||||
<then>
|
<then>
|
||||||
<appender name="CDR"
|
<appender name="CDR"
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
|
|
@ -47,7 +47,7 @@ import io.openvidu.server.test.integration.config.IntegrationTestConfiguration;
|
||||||
/**
|
/**
|
||||||
* @author Pablo Fuente (pablofuenteperez@gmail.com)
|
* @author Pablo Fuente (pablofuenteperez@gmail.com)
|
||||||
*/
|
*/
|
||||||
@SpringBootTest(properties = { "openvidu.sessions.garbage.interval=1", "openvidu.sessions.garbage.threshold=1" })
|
@SpringBootTest(properties = { "OPENVIDU_SESSIONS_GARBAGE_INTERVAL=1", "OPENVIDU_SESSIONS_GARBAGE_THRESHOLD=1" })
|
||||||
@TestPropertySource(locations = "classpath:integration-test.properties")
|
@TestPropertySource(locations = "classpath:integration-test.properties")
|
||||||
@ContextConfiguration(classes = { IntegrationTestConfiguration.class })
|
@ContextConfiguration(classes = { IntegrationTestConfiguration.class })
|
||||||
@WebAppConfiguration
|
@WebAppConfiguration
|
||||||
|
|
|
@ -2,7 +2,7 @@ server.port: 4443
|
||||||
server.address: 0.0.0.0
|
server.address: 0.0.0.0
|
||||||
server.ssl.enabled: false
|
server.ssl.enabled: false
|
||||||
|
|
||||||
kms.uris=[\"ws://localhost:8888/kurento\"]
|
KMS_URIS=[\"ws://localhost:8888/kurento\"]
|
||||||
|
|
||||||
openvidu.secret: MY_SECRET
|
OPENVIDU_SECRET: MY_SECRET
|
||||||
openvidu.publicurl: local
|
OPENVIDU_PUBLICURL: local
|
|
@ -9,37 +9,37 @@ server.ssl.key-alias=openvidu-selfsigned
|
||||||
logging.level.root=info
|
logging.level.root=info
|
||||||
spring.main.allow-bean-definition-overriding=true
|
spring.main.allow-bean-definition-overriding=true
|
||||||
|
|
||||||
kms.uris=["ws://localhost:8888/kurento"]
|
KMS_URIS=["ws://localhost:8888/kurento"]
|
||||||
|
|
||||||
openvidu.publicurl=local
|
OPENVIDU_PUBLICURL=local
|
||||||
openvidu.secret=MY_SECRET
|
OPENVIDU_SECRET=MY_SECRET
|
||||||
|
|
||||||
openvidu.cdr=false
|
OPENVIDU_CDR=false
|
||||||
openvidu.cdr.path=log
|
OPENVIDU_CDR_PATH=log
|
||||||
|
|
||||||
openvidu.webhook=false
|
OPENVIDU_WEBHOOK=false
|
||||||
openvidu.webhook.endpoint=
|
OPENVIDU_WEBHOOK_ENDPOINT=
|
||||||
openvidu.webhook.headers=[]
|
OPENVIDU_WEBHOOK_HEADERS=[]
|
||||||
openvidu.webhook.events=["sessionCreated","sessionDestroyed","participantJoined","participantLeft","webrtcConnectionCreated","webrtcConnectionDestroyed","recordingStatusChanged","filterEventDispatched","mediaNodeStatusChanged"]
|
OPENVIDU_WEBHOOK_EVENTS=["sessionCreated","sessionDestroyed","participantJoined","participantLeft","webrtcConnectionCreated","webrtcConnectionDestroyed","recordingStatusChanged","filterEventDispatched","mediaNodeStatusChanged"]
|
||||||
|
|
||||||
openvidu.recording=false
|
OPENVIDU_RECORDING=false
|
||||||
openvidu.recording.version=2.9.0
|
OPENVIDU_RECORDING_VERSION=2.9.0
|
||||||
openvidu.recording.path=/opt/openvidu/recordings
|
OPENVIDU_RECORDING_PATH=/opt/openvidu/recordings
|
||||||
openvidu.recording.public-access=false
|
OPENVIDU_RECORDING_PUBLIC_ACCESS=false
|
||||||
openvidu.recording.notification=publisher_moderator
|
OPENVIDU_RECORDING_NOTIFICATION=publisher_moderator
|
||||||
openvidu.recording.custom-layout=/opt/openvidu/custom-layout
|
OPENVIDU_RECORDING_CUSTOM_LAYOUT=/opt/openvidu/custom-layout
|
||||||
openvidu.recording.autostop-timeout=120
|
OPENVIDU_RECORDING_AUTOSTOP_TIMEOUT=120
|
||||||
openvidu.recording.composed-url=
|
OPENVIDU_RECORDING_COMPOSED_URL=
|
||||||
|
|
||||||
openvidu.streams.video.max-recv-bandwidth=1000
|
OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH=1000
|
||||||
openvidu.streams.video.min-recv-bandwidth=300
|
OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH=300
|
||||||
openvidu.streams.video.max-send-bandwidth=1000
|
OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH=1000
|
||||||
openvidu.streams.video.min-send-bandwidth=300
|
OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH=300
|
||||||
|
|
||||||
openvidu.sessions.garbage.interval=900
|
OPENVIDU_SESSIONS_GARBAGE_INTERVAL=900
|
||||||
openvidu.sessions.garbage.threshold=3600
|
OPENVIDU_SESSIONS_GARBAGE_THRESHOLD=3600
|
||||||
|
|
||||||
coturn.redis.ip=127.0.0.1
|
COTURN_REDIS_IP=127.0.0.1
|
||||||
coturn.redis.dbname=0
|
COTURN_REDIS_DBNAME=0
|
||||||
coturn.redis.password=turn
|
COTURN_REDIS_PASSWORD=turn
|
||||||
coturn.redis.connect-timeout=30
|
COTURN_REDIS_CONNECT_TIMEOUT=30
|
||||||
|
|
Loading…
Reference in New Issue