mirror of
https://github.com/asterisk/asterisk.git
synced 2026-01-15 22:34:13 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b3a8807ea3 | ||
|
|
092e2ea600 | ||
|
|
6e820514a9 | ||
|
|
a37491c125 | ||
|
|
27af3cf46a | ||
|
|
4ed56df62c | ||
|
|
f42ada7a25 | ||
|
|
84c5074ec3 | ||
|
|
932f5ca647 | ||
|
|
71fdd7d526 | ||
|
|
643879cabc | ||
|
|
703220f1f4 | ||
|
|
27290e8976 |
1
.lastclean
Normal file
1
.lastclean
Normal file
@@ -0,0 +1 @@
|
||||
9
|
||||
2
LICENSE
2
LICENSE
@@ -58,7 +58,7 @@ contact us:
|
||||
+1.877.546.8963 (via telephone in the USA)
|
||||
+1.256.428.6000 (via telephone outside the USA)
|
||||
+1.256.864.0464 (via FAX inside or outside the USA)
|
||||
IAX2/misery.digium.com/6000 (via IAX2)
|
||||
IAX2/pbx.digium.com (via IAX2)
|
||||
licensing@digium.com (via email)
|
||||
|
||||
Digium, Inc.
|
||||
|
||||
@@ -294,7 +294,7 @@ static int hash_zero(const void *user_obj, const int flags)
|
||||
* A container is just an object, after all!
|
||||
*/
|
||||
struct ao2_container *
|
||||
ao2_container_alloc(const uint n_buckets, ao2_hash_fn hash_fn,
|
||||
ao2_container_alloc(const unsigned int n_buckets, ao2_hash_fn hash_fn,
|
||||
ao2_callback_fn cmp_fn)
|
||||
{
|
||||
/* XXX maybe consistency check on arguments ? */
|
||||
|
||||
@@ -164,6 +164,7 @@ static int trunkfreq = 20;
|
||||
static int authdebug = 1;
|
||||
static int autokill = 0;
|
||||
static int iaxcompat = 0;
|
||||
static int lastauthmethod = 0;
|
||||
|
||||
static int iaxdefaultdpcache=10 * 60; /* Cache dialplan entries for 10 minutes by default */
|
||||
|
||||
@@ -272,6 +273,7 @@ enum {
|
||||
IAX_DELAYPBXSTART = (1 << 25), /*!< Don't start a PBX on the channel until the peer sends us a
|
||||
response, so that we've achieved a three-way handshake with
|
||||
them before sending voice or anything else*/
|
||||
IAX_ALLOWFWDOWNLOAD = (1 << 26), /*!< Allow the FWDOWNL command? */
|
||||
} iax2_flags;
|
||||
|
||||
static int global_rtautoclear = 120;
|
||||
@@ -1282,7 +1284,7 @@ static int find_callno(unsigned short callno, unsigned short dcallno, struct soc
|
||||
}
|
||||
|
||||
/* Look for an existing connection first */
|
||||
for (x=1;(res < 1) && (x<maxnontrunkcall);x++) {
|
||||
for (x=2;(res < 1) && (x<maxnontrunkcall);x++) {
|
||||
ast_mutex_lock(&iaxsl[x]);
|
||||
if (iaxs[x]) {
|
||||
/* Look for an exact match */
|
||||
@@ -1317,10 +1319,10 @@ static int find_callno(unsigned short callno, unsigned short dcallno, struct soc
|
||||
|
||||
gettimeofday(&now, NULL);
|
||||
|
||||
start = 1 + (rand() % (TRUNK_CALL_START - 1));
|
||||
start = 2 + (rand() % (TRUNK_CALL_START - 1));
|
||||
for (x = start; 1; x++) {
|
||||
if (x == TRUNK_CALL_START) {
|
||||
x = 0;
|
||||
x = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -2749,7 +2751,7 @@ static struct iax2_peer *realtime_peer(const char *peername, struct sockaddr_in
|
||||
if (peername) {
|
||||
var = ast_load_realtime("iaxpeers", "name", peername, "host", "dynamic", NULL);
|
||||
if (!var && sin)
|
||||
var = ast_load_realtime("iaxpeers", "name", peername, "host", ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr));
|
||||
var = ast_load_realtime("iaxpeers", "name", peername, "host", ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr), (char *) NULL);
|
||||
} else if (sin) {
|
||||
char porta[25];
|
||||
ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr);
|
||||
@@ -2873,7 +2875,7 @@ static struct iax2_user *realtime_user(const char *username, struct sockaddr_in
|
||||
|
||||
var = ast_load_realtime("iaxusers", "name", username, "host", "dynamic", NULL);
|
||||
if (!var && sin)
|
||||
var = ast_load_realtime("iaxusers", "name", username, "host", ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr));
|
||||
var = ast_load_realtime("iaxusers", "name", username, "host", ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr), (char *) NULL);
|
||||
if (!var && sin) {
|
||||
char porta[6];
|
||||
snprintf(porta, sizeof(porta), "%d", ntohs(sin->sin_port));
|
||||
@@ -3098,6 +3100,15 @@ struct parsed_dial_string {
|
||||
char *options;
|
||||
};
|
||||
|
||||
static int send_apathetic_reply(unsigned short callno, unsigned short dcallno, struct sockaddr_in *sin, int command, int ts, unsigned char seqno)
|
||||
{
|
||||
struct ast_iax2_full_hdr f = { .scallno = htons(0x8000 | callno), .dcallno = htons(dcallno),
|
||||
.ts = htonl(ts), .iseqno = seqno, .oseqno = 0, .type = AST_FRAME_IAX,
|
||||
.csub = compress_subclass(command) };
|
||||
|
||||
return sendto(defaultsockfd, &f, sizeof(f), 0, (struct sockaddr *)sin, sizeof(*sin));
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Parses an IAX dial string into its component parts.
|
||||
* \param data the string to be parsed
|
||||
@@ -5366,6 +5377,12 @@ static int register_verify(int callno, struct sockaddr_in *sin, struct iax_ies *
|
||||
ast_log(LOG_NOTICE, "Empty registration from %s\n", ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr));
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_copy_string(iaxs[callno]->peer, peer, sizeof(iaxs[callno]->peer));
|
||||
/* Choose lowest expiry number */
|
||||
if (expire && (expire < iaxs[callno]->expiry))
|
||||
iaxs[callno]->expiry = expire;
|
||||
|
||||
/* We release the lock for the call to prevent a deadlock, but it's okay because
|
||||
only the current thread could possibly make it go away or make changes */
|
||||
ast_mutex_unlock(&iaxsl[callno]);
|
||||
@@ -5376,6 +5393,7 @@ static int register_verify(int callno, struct sockaddr_in *sin, struct iax_ies *
|
||||
if (!p) {
|
||||
if (authdebug)
|
||||
ast_log(LOG_NOTICE, "No registration for peer '%s' (from %s)\n", peer, ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr));
|
||||
ast_copy_string(iaxs[callno]->secret, "invalidpassword", sizeof(iaxs[callno]->secret));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -5463,18 +5481,16 @@ static int register_verify(int callno, struct sockaddr_in *sin, struct iax_ies *
|
||||
destroy_peer(p);
|
||||
return -1;
|
||||
}
|
||||
} else if (!ast_strlen_zero(md5secret) || !ast_strlen_zero(secret)) {
|
||||
if (authdebug)
|
||||
ast_log(LOG_NOTICE, "Inappropriate authentication received\n");
|
||||
} else if (!ast_strlen_zero(p->secret) || !ast_strlen_zero(p->inkeys)) {
|
||||
if (authdebug &&
|
||||
((!ast_strlen_zero(p->secret) && (p->authmethods & IAX_AUTH_MD5) && !ast_strlen_zero(iaxs[callno]->challenge)) ||
|
||||
(!ast_strlen_zero(p->inkeys) && (p->authmethods & IAX_AUTH_RSA) && !ast_strlen_zero(iaxs[callno]->challenge)))) {
|
||||
ast_log(LOG_NOTICE, "Inappropriate authentication received for '%s'\n", p->name);
|
||||
}
|
||||
if (ast_test_flag(p, IAX_TEMPONLY))
|
||||
destroy_peer(p);
|
||||
return -1;
|
||||
}
|
||||
ast_copy_string(iaxs[callno]->peer, peer, sizeof(iaxs[callno]->peer));
|
||||
/* Choose lowest expiry number */
|
||||
if (expire && (expire < iaxs[callno]->expiry))
|
||||
iaxs[callno]->expiry = expire;
|
||||
|
||||
ast_device_state_changed("IAX2/%s", p->name); /* Activate notification */
|
||||
|
||||
if (ast_test_flag(p, IAX_TEMPONLY))
|
||||
@@ -6077,23 +6093,34 @@ static int registry_authrequest(char *name, int callno)
|
||||
{
|
||||
struct iax_ie_data ied;
|
||||
struct iax2_peer *p;
|
||||
int authmethods;
|
||||
|
||||
if (!callno || !iaxs[callno]) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* SLD: third call to find_peer in registration */
|
||||
p = find_peer(name, 1);
|
||||
if (p) {
|
||||
memset(&ied, 0, sizeof(ied));
|
||||
iax_ie_append_short(&ied, IAX_IE_AUTHMETHODS, p->authmethods);
|
||||
if (p->authmethods & (IAX_AUTH_RSA | IAX_AUTH_MD5)) {
|
||||
/* Build the challenge */
|
||||
snprintf(iaxs[callno]->challenge, sizeof(iaxs[callno]->challenge), "%d", rand());
|
||||
iax_ie_append_str(&ied, IAX_IE_CHALLENGE, iaxs[callno]->challenge);
|
||||
}
|
||||
iax_ie_append_str(&ied, IAX_IE_USERNAME, name);
|
||||
if (ast_test_flag(p, IAX_TEMPONLY))
|
||||
destroy_peer(p);
|
||||
return send_command(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_REGAUTH, 0, ied.buf, ied.pos, -1);;
|
||||
}
|
||||
ast_log(LOG_WARNING, "No such peer '%s'\n", name);
|
||||
return 0;
|
||||
if ((p = find_peer(name, 1))) {
|
||||
lastauthmethod = p->authmethods;
|
||||
}
|
||||
|
||||
authmethods = p ? p->authmethods : lastauthmethod ? lastauthmethod : (IAX_AUTH_PLAINTEXT | IAX_AUTH_MD5);
|
||||
if (p && ast_test_flag(p, IAX_TEMPONLY)) {
|
||||
destroy_peer(p);
|
||||
} else if (!p && !delayreject) {
|
||||
ast_log(LOG_WARNING, "No such peer '%s'\n", name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
memset(&ied, 0, sizeof(ied));
|
||||
iax_ie_append_short(&ied, IAX_IE_AUTHMETHODS, authmethods);
|
||||
if (authmethods & (IAX_AUTH_RSA | IAX_AUTH_MD5)) {
|
||||
/* Build the challenge */
|
||||
snprintf(iaxs[callno]->challenge, sizeof(iaxs[callno]->challenge), "%d", rand());
|
||||
iax_ie_append_str(&ied, IAX_IE_CHALLENGE, iaxs[callno]->challenge);
|
||||
}
|
||||
iax_ie_append_str(&ied, IAX_IE_USERNAME, name);
|
||||
return send_command(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_REGAUTH, 0, ied.buf, ied.pos, -1);;
|
||||
}
|
||||
|
||||
static int registry_rerequest(struct iax_ies *ies, int callno, struct sockaddr_in *sin)
|
||||
@@ -6828,6 +6855,17 @@ static int socket_read(int *id, int fd, short events, void *cbdata)
|
||||
} else {
|
||||
f.subclass = uncompress_subclass(fh->csub);
|
||||
}
|
||||
|
||||
/* Deal with POKE/PONG without allocating a callno */
|
||||
if (f.frametype == AST_FRAME_IAX && f.subclass == IAX_COMMAND_POKE) {
|
||||
/* Reply back with a PONG, but don't care about the result. */
|
||||
send_apathetic_reply(1, ntohs(fh->scallno), &sin, IAX_COMMAND_PONG, ntohs(fh->ts), fh->iseqno + 1);
|
||||
return 1;
|
||||
} else if (f.frametype == AST_FRAME_IAX && f.subclass == IAX_COMMAND_ACK && dcallno == 1) {
|
||||
/* Ignore */
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ((f.frametype == AST_FRAME_IAX) && ((f.subclass == IAX_COMMAND_NEW) || (f.subclass == IAX_COMMAND_REGREQ) ||
|
||||
(f.subclass == IAX_COMMAND_POKE) || (f.subclass == IAX_COMMAND_FWDOWNL) ||
|
||||
(f.subclass == IAX_COMMAND_REGREL)))
|
||||
@@ -7812,11 +7850,7 @@ retryowner2:
|
||||
/* For security, always ack immediately */
|
||||
if (delayreject)
|
||||
send_command_immediate(iaxs[fr->callno], AST_FRAME_IAX, IAX_COMMAND_ACK, fr->ts, NULL, 0,fr->iseqno);
|
||||
if (register_verify(fr->callno, &sin, &ies)) {
|
||||
/* Send delayed failure */
|
||||
auth_fail(fr->callno, IAX_COMMAND_REGREJ);
|
||||
break;
|
||||
}
|
||||
register_verify(fr->callno, &sin, &ies);
|
||||
if ((ast_strlen_zero(iaxs[fr->callno]->secret) && ast_strlen_zero(iaxs[fr->callno]->inkeys)) || ast_test_flag(&iaxs[fr->callno]->state, IAX_STATE_AUTHENTICATED)) {
|
||||
if (f.subclass == IAX_COMMAND_REGREL)
|
||||
memset(&sin, 0, sizeof(sin));
|
||||
@@ -7921,6 +7955,10 @@ retryowner2:
|
||||
break;
|
||||
case IAX_COMMAND_FWDOWNL:
|
||||
/* Firmware download */
|
||||
if (!ast_test_flag(&globalflags, IAX_ALLOWFWDOWNLOAD)) {
|
||||
send_command_final(iaxs[fr->callno], AST_FRAME_IAX, IAX_COMMAND_UNSUPPORT, 0, NULL, 0, -1);
|
||||
break;
|
||||
}
|
||||
memset(&ied0, 0, sizeof(ied0));
|
||||
res = iax_firmware_append(&ied0, (unsigned char *)ies.devicetype, ies.fwdesc);
|
||||
if (res < 0)
|
||||
@@ -9188,6 +9226,8 @@ static int set_config(char *config_file, int reload)
|
||||
delayreject = ast_true(v->value);
|
||||
else if (!strcasecmp(v->name, "mailboxdetail"))
|
||||
ast_set2_flag((&globalflags), ast_true(v->value), IAX_MESSAGEDETAIL);
|
||||
else if (!strcasecmp(v->name, "allowfwdownload"))
|
||||
ast_set2_flag((&globalflags), ast_true(v->value), IAX_ALLOWFWDOWNLOAD);
|
||||
else if (!strcasecmp(v->name, "rtcachefriends"))
|
||||
ast_set2_flag((&globalflags), ast_true(v->value), IAX_RTCACHEFRIENDS);
|
||||
else if (!strcasecmp(v->name, "rtignoreregexpire"))
|
||||
|
||||
@@ -255,6 +255,16 @@ autokill=yes
|
||||
; The default value is 'host'
|
||||
;
|
||||
;codecpriority=host
|
||||
;
|
||||
; allowfwdownload controls whether this host will serve out firmware to
|
||||
; IAX clients which request it. This has only been used for the IAXy,
|
||||
; and it has been recently proven that this firmware distribution method
|
||||
; can be used as a source of traffic amplification attacks. Also, the
|
||||
; IAXy firmware has not been updated for at least 18 months, so unless
|
||||
; you are provisioning IAXys in a secure network, we recommend that you
|
||||
; leave this option to the default, off.
|
||||
;
|
||||
;allowfwdownload=yes
|
||||
|
||||
;rtcachefriends=yes ; Cache realtime friends by adding them to the internal list
|
||||
; just like friends added from the config file only on a
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
#ifndef _ASTERISK_ASTOBJ2_H
|
||||
#define _ASTERISK_ASTOBJ2_H
|
||||
|
||||
#include "asterisk/compat.h"
|
||||
|
||||
/*! \file
|
||||
*
|
||||
* \brief Object Model implementing objects and containers.
|
||||
@@ -330,7 +332,7 @@ struct ao2_container;
|
||||
*
|
||||
* destructor is set implicitly.
|
||||
*/
|
||||
struct ao2_container *ao2_container_alloc(const uint n_buckets,
|
||||
struct ao2_container *ao2_container_alloc(const unsigned int n_buckets,
|
||||
ao2_hash_fn hash_fn, ao2_callback_fn cmp_fn);
|
||||
|
||||
/*!
|
||||
@@ -527,11 +529,11 @@ struct ao2_iterator {
|
||||
/*! current bucket */
|
||||
int bucket;
|
||||
/*! container version */
|
||||
uint c_version;
|
||||
unsigned int c_version;
|
||||
/*! pointer to the current object */
|
||||
void *obj;
|
||||
/*! container version when the object was created */
|
||||
uint version;
|
||||
unsigned int version;
|
||||
};
|
||||
|
||||
struct ao2_iterator ao2_iterator_init(struct ao2_container *c, int flags);
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
typedef unsigned char u_int8_t;
|
||||
typedef unsigned short u_int16_t;
|
||||
typedef unsigned int u_int32_t;
|
||||
typedef unsigned int uint;
|
||||
#endif
|
||||
|
||||
char* strsep(char** str, const char* delims);
|
||||
|
||||
310
sounds/LICENSE
Normal file
310
sounds/LICENSE
Normal file
@@ -0,0 +1,310 @@
|
||||
LICENSE FOR VOICE PROMPT FILES
|
||||
------------------------------
|
||||
|
||||
The voice prompt files distributed herewith are Copyright (C) 2003-2008
|
||||
Allison Smith, and provided under terms of the following License. For
|
||||
more information, or to purchase custom voice prompt files, please
|
||||
visit:
|
||||
|
||||
http://www.digium.com/ivr or http://www.theasteriskvoice.com
|
||||
|
||||
LICENSE
|
||||
-------
|
||||
|
||||
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
|
||||
CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS
|
||||
PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE
|
||||
WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
|
||||
PROHIBITED.
|
||||
|
||||
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
|
||||
AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS
|
||||
LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU
|
||||
THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH
|
||||
TERMS AND CONDITIONS.
|
||||
|
||||
1. Definitions.
|
||||
|
||||
a. "Collective Work" means a work, such as a periodical issue,
|
||||
anthology or encyclopedia, in which the Work in its entirety in
|
||||
unmodified form, along with one or more other contributions,
|
||||
constituting separate and independent works in themselves, are
|
||||
assembled into a collective whole. A work that constitutes a
|
||||
Collective Work will not be considered a Derivative Work (as defined
|
||||
below) for the purposes of this License.
|
||||
|
||||
b. "Creative Commons Compatible License" means a license that is
|
||||
listed at http://creativecommons.org/compatiblelicenses that has been
|
||||
approved by Creative Commons as being essentially equivalent to this
|
||||
License, including, at a minimum, because that license: (i) contains
|
||||
terms that have the same purpose, meaning and effect as the License
|
||||
Elements of this License; and, (ii) explicitly permits the relicensing
|
||||
of derivatives of works made available under that license under this
|
||||
License or either a Creative Commons unported license or a Creative
|
||||
Commons jurisdiction license with the same License Elements as this
|
||||
License.
|
||||
|
||||
c. "Derivative Work" means a work based upon the Work or upon the Work
|
||||
and other pre-existing works, such as a translation, musical
|
||||
arrangement, dramatization, fictionalization, motion picture version,
|
||||
sound recording, art reproduction, abridgment, condensation, or any
|
||||
other form in which the Work may be recast, transformed, or adapted,
|
||||
except that a work that constitutes a Collective Work will not be
|
||||
considered a Derivative Work for the purpose of this License. For the
|
||||
avoidance of doubt, where the Work is a musical composition or sound
|
||||
recording, the synchronization of the Work in timed-relation with a
|
||||
moving image ("synching") will be considered a Derivative Work for the
|
||||
purpose of this License.
|
||||
|
||||
d. "License Elements" means the following high-level license
|
||||
attributes as selected by Licensor and indicated in the title of this
|
||||
License: Attribution, ShareAlike.
|
||||
|
||||
e. "Licensor" means the individual, individuals, entity or entities
|
||||
that offers the Work under the terms of this License.
|
||||
|
||||
f. "Original Author" means the individual, individuals, entity or
|
||||
entities who created the Work.
|
||||
|
||||
g. "Work" means the copyrighted voice prompt files recorded by Allison
|
||||
Smith for Asterisk and distributed with this License.
|
||||
|
||||
h. "You" means an individual or entity exercising rights under this
|
||||
License who has not previously violated the terms of this License with
|
||||
respect to the Work, or who has received express permission from the
|
||||
Licensor to exercise rights under this License despite a previous
|
||||
violation.
|
||||
|
||||
2. Fair Use Rights.
|
||||
|
||||
Nothing in this license is intended to reduce, limit, or restrict any
|
||||
rights arising from fair use, first sale or other limitations on the
|
||||
exclusive rights of the copyright owner under copyright law or other
|
||||
applicable laws.
|
||||
|
||||
3. License Grant.
|
||||
|
||||
Subject to the terms and conditions of this License, Licensor hereby
|
||||
grants You a worldwide, royalty-free, non-exclusive, perpetual (for
|
||||
the duration of the applicable copyright) license to exercise the
|
||||
rights in the Work as stated below:
|
||||
|
||||
a. to reproduce the Work, to incorporate the Work into one or more
|
||||
Collective Works, and to reproduce the Work as incorporated in the
|
||||
Collective Works;
|
||||
|
||||
b. to create and reproduce Derivative Works provided that any such
|
||||
Derivative Work, including any translation in any medium, takes
|
||||
reasonable steps to clearly label, demarcate or otherwise identify
|
||||
that changes were made to the original Work. For example, a
|
||||
translation could be marked "The original work was translated from
|
||||
English to Spanish," or a modification could indicate "The original
|
||||
work has been modified.";
|
||||
|
||||
c. to distribute copies or phonorecords of, display publicly, perform
|
||||
publicly, and perform publicly by means of a digital audio
|
||||
transmission the Work including as incorporated in Collective Works;
|
||||
|
||||
d. to distribute copies or phonorecords of, display publicly, perform
|
||||
publicly, and perform publicly by means of a digital audio
|
||||
transmission Derivative Works.
|
||||
|
||||
e. For the avoidance of doubt, where the Work is a musical
|
||||
composition:
|
||||
|
||||
i. Performance Royalties Under Blanket Licenses. Licensor waives the
|
||||
exclusive right to collect, whether individually or, in the event
|
||||
that Licensor is a member of a performance rights society
|
||||
(e.g. ASCAP, BMI, SESAC), via that society, royalties for the public
|
||||
performance or public digital performance e.g. webcast) of the Work.
|
||||
|
||||
ii.Mechanical Rights and Statutory Royalties. Licensor waives the
|
||||
exclusive right to collect, whether individually or via a music
|
||||
rights agency or designated agent (e.g. Harry Fox Agency), royalties
|
||||
for any phonorecord You create from the Work ("cover version") and
|
||||
distribute, subject to the compulsory license created by 17 USC
|
||||
Section 115 of the US Copyright Act (or the equivalent in other
|
||||
jurisdictions).
|
||||
|
||||
f. Webcasting Rights and Statutory Royalties. For the avoidance of
|
||||
doubt, where the Work is a sound recording, Licensor waives the
|
||||
exclusive right to collect, whether individually or via a
|
||||
performance-rights society (e.g. SoundExchange), royalties for the
|
||||
public digital performance (e.g. webcast) of the Work, subject to the
|
||||
compulsory license created by 17 USC Section 114 of the US Copyright
|
||||
Act (or the equivalent in other jurisdictions).
|
||||
|
||||
The above rights may be exercised in all media and formats whether now
|
||||
known or hereafter devised. The above rights include the right to make
|
||||
such modifications as are technically necessary to exercise the rights
|
||||
in other media and formats. All rights not expressly granted by
|
||||
Licensor are hereby reserved.
|
||||
|
||||
4. Restrictions.
|
||||
|
||||
The license granted in Section 3 above is expressly made subject to
|
||||
and limited by the following restrictions:
|
||||
|
||||
a. You may distribute, publicly display, publicly perform, or publicly
|
||||
digitally perform the Work only under the terms of this License, and
|
||||
You must include a copy of, or the Uniform Resource Identifier for,
|
||||
this License with every copy or phonorecord of the Work You
|
||||
distribute, publicly display, publicly perform, or publicly digitally
|
||||
perform. You may not offer or impose any terms on the Work that
|
||||
restrict the terms of this License or the ability of a recipient of
|
||||
the Work to exercise of the rights granted to that recipient under the
|
||||
terms of the License. You may not sublicense the Work. You must keep
|
||||
intact all notices that refer to this License and to the disclaimer of
|
||||
warranties. When You distribute, publicly display, publicly perform,
|
||||
or publicly digitally perform the Work, You may not impose any
|
||||
technological measures on the Work that restrict the ability of a
|
||||
recipient of the Work from You to exercise of the rights granted to
|
||||
that recipient under the terms of the License. This Section 4(a)
|
||||
applies to the Work as incorporated in a Collective Work, but this
|
||||
does not require the Collective Work apart from the Work itself to be
|
||||
made subject to the terms of this License. If You create a Collective
|
||||
Work, upon notice from any Licensor You must, to the extent
|
||||
practicable, remove from the Collective Work any credit as required by
|
||||
Section 4(c), as requested. If You create a Derivative Work, upon
|
||||
notice from any Licensor You must, to the extent practicable, remove
|
||||
from the Derivative Work any credit as required by Section 4(c), as
|
||||
requested.
|
||||
|
||||
b. You may distribute, publicly display, publicly perform, or publicly
|
||||
digitally perform a Derivative Work only under: (i) the terms of this
|
||||
License; (ii) a later version of this License with the same License
|
||||
Elements as this License; (iii) either the Creative Commons (Unported)
|
||||
license or a Creative Commons jurisdiction license (either this or a
|
||||
later license version) that contains the same License Elements as this
|
||||
License (e.g. Attribution-ShareAlike 3.0 (Unported)); (iv) a Creative
|
||||
Commons Compatible License. If you license the Derivative Work under
|
||||
one of the licenses mentioned in (iv), you must comply with the terms
|
||||
of that license. If you license the Derivative Work under the terms of
|
||||
any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable
|
||||
License"), you must comply with the terms of the Applicable License
|
||||
generally and with the following provisions: (I) You must include a
|
||||
copy of, or the Uniform Resource Identifier for, the Applicable
|
||||
License with every copy or phonorecord of each Derivative Work You
|
||||
distribute, publicly display, publicly perform, or publicly digitally
|
||||
perform; (II) You may not offer or impose any terms on the Derivative
|
||||
Works that restrict the terms of the Applicable License or the ability
|
||||
of a recipient of the Work to exercise the rights granted to that
|
||||
recipient under the terms of the Applicable License; (III) You must
|
||||
keep intact all notices that refer to the Applicable License and to
|
||||
the disclaimer of warranties; and, (IV) when You distribute, publicly
|
||||
display, publicly perform, or publicly digitally perform the Work, You
|
||||
may not impose any technological measures on the Derivative Work that
|
||||
restrict the ability of a recipient of the Derivative Work from You to
|
||||
exercise the rights granted to that recipient under the terms of the
|
||||
Applicable License. This Section 4(b) applies to the Derivative Work
|
||||
as incorporated in a Collective Work, but this does not require the
|
||||
Collective Work apart from the Derivative Work itself to be made
|
||||
subject to the terms of the Applicable License.
|
||||
|
||||
c. If You distribute, publicly display, publicly perform, or publicly
|
||||
digitally perform the Work (as defined in Section 1 above) or any
|
||||
Derivative Works (as defined in Section 1 above) or Collective Works
|
||||
(as defined in Section 1 above), You must, unless a request has been
|
||||
made pursuant to Section 4(a), keep intact all copyright notices for
|
||||
the Work and provide, reasonable to the medium or means You are
|
||||
utilizing: (i) the name of the Original Author (or pseudonym, if
|
||||
applicable) if supplied, and/or (ii) if the Original Author and/or
|
||||
Licensor designate another party or parties (e.g. a sponsor institute,
|
||||
publishing entity, journal) for attribution ("Attribution Parties") in
|
||||
Licensor's copyright notice, terms of service or by other reasonable
|
||||
means, the name of such party or parties; the title of the Work if
|
||||
supplied; to the extent reasonably practicable, the Uniform Resource
|
||||
Identifier, if any, that Licensor specifies to be associated with the
|
||||
Work, unless such URI does not refer to the copyright notice or
|
||||
licensing information for the Work; and, consistent with Section 3(b)
|
||||
in the case of a Derivative Work, a credit identifying the use of the
|
||||
Work in the Derivative Work (e.g., "French translation of the Work by
|
||||
Original Author," or "Screenplay based on original Work by Original
|
||||
Author"). The credit required by this Section 4(c) may be implemented
|
||||
in any reasonable manner; provided, however, that in the case of a
|
||||
Derivative Work or Collective Work, at a minimum such credit will
|
||||
appear, if a credit for all contributing authors of the Derivative
|
||||
Work or Collective Work appears, then as part of these credits and in
|
||||
a manner at least as prominent as the credits for the other
|
||||
contributing authors. For the avoidance of doubt, You may only use the
|
||||
credit required by this Section for the purpose of attribution in the
|
||||
manner set out above and, by exercising Your rights under this
|
||||
License, You may not implicitly or explicitly assert or imply any
|
||||
connection with, sponsorship or endorsement by the Original Author,
|
||||
Licensor and/or Attribution Parties, as appropriate, of You or Your
|
||||
use of the Work, without the separate, express prior written
|
||||
permission of the Original Author, Licensor and/or Attribution
|
||||
Parties.
|
||||
|
||||
5. Representations, Warranties and Disclaimer.
|
||||
|
||||
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING,
|
||||
LICENSOR OFFERS THE WORK AS-IS AND ONLY TO THE EXTENT OF ANY RIGHTS
|
||||
HELD IN THE LICENSED WORK BY THE LICENSOR. THE LICENSOR MAKES NO
|
||||
REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK,
|
||||
EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT
|
||||
LIMITATION, WARRANTIES OF TITLE, MARKETABILITY, MERCHANTIBILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
|
||||
LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF
|
||||
ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW
|
||||
THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY
|
||||
TO YOU.
|
||||
|
||||
6. Limitation on Liability.
|
||||
|
||||
EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL
|
||||
LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT
|
||||
OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
7. Termination.
|
||||
|
||||
a. This License and the rights granted hereunder will terminate
|
||||
automatically upon any breach by You of the terms of this
|
||||
License. Individuals or entities who have received Derivative Works or
|
||||
Collective Works from You under this License, however, will not have
|
||||
their licenses terminated provided such individuals or entities remain
|
||||
in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8
|
||||
will survive any termination of this License.
|
||||
|
||||
b. Subject to the above terms and conditions, the license granted here
|
||||
is perpetual (for the duration of the applicable copyright in the
|
||||
Work). Notwithstanding the above, Licensor reserves the right to
|
||||
release the Work under different license terms or to stop distributing
|
||||
the Work at any time; provided, however that any such election will
|
||||
not serve to withdraw this License (or any other license that has
|
||||
been, or is required to be, granted under the terms of this License),
|
||||
and this License will continue in full force and effect unless
|
||||
terminated as stated above.
|
||||
|
||||
8. Miscellaneous.
|
||||
|
||||
a. Each time You distribute or publicly digitally perform the Work (as
|
||||
defined in Section 1 above) or a Collective Work (as defined in
|
||||
Section 1 above), the Licensor offers to the recipient a license to
|
||||
the Work on the same terms and conditions as the license granted to
|
||||
You under this License.
|
||||
|
||||
b. Each time You distribute or publicly digitally perform a Derivative
|
||||
Work, Licensor offers to the recipient a license to the original Work
|
||||
on the same terms and conditions as the license granted to You under
|
||||
this License.
|
||||
|
||||
c. If any provision of this License is invalid or unenforceable under
|
||||
applicable law, it shall not affect the validity or enforceability of
|
||||
the remainder of the terms of this License, and without further action
|
||||
by the parties to this agreement, such provision shall be reformed to
|
||||
the minimum extent necessary to make such provision valid and
|
||||
enforceable.
|
||||
|
||||
d. No term or provision of this License shall be deemed waived and no
|
||||
breach consented to unless such waiver or consent shall be in writing
|
||||
and signed by the party to be charged with such waiver or consent.
|
||||
|
||||
e. This License constitutes the entire agreement between the parties
|
||||
with respect to the Work licensed here. There are no understandings,
|
||||
agreements or representations with respect to the Work not specified
|
||||
here. Licensor shall not be bound by any additional provisions that
|
||||
may appear in any communication from You. This License may not be
|
||||
modified without the mutual written agreement of the Licensor and You.
|
||||
Reference in New Issue
Block a user