Ensure that channels can't be created with DAV reserved paths as a redress. Sabre mentions in several places that trying to change these paths to other strings; while possible - is unsupported and likely to cause problems. So for now, we're stuck with 'principals', 'addressbooks', and 'calendars'. If you already have these redresses on your site, you're basically buggered.
This commit is contained in:
parent
4dd3839c41
commit
32ad8bbaac
@ -9,15 +9,19 @@ function import_channel($channel, $account_id, $seize) {
|
||||
$channel['channel_removed'] = (($channel['channel_pageflags'] & 0x8000) ? 1 : 0);
|
||||
}
|
||||
|
||||
// Ignore the hash provided and re-calculate
|
||||
|
||||
$channel['channel_hash'] = make_xchan_hash($channel['channel_guid'],$channel['channel_guid_sig']);
|
||||
|
||||
// Check for duplicate channels
|
||||
|
||||
$r = q("select * from channel where (channel_guid = '%s' or channel_hash = '%s' or channel_address = '%s' ) limit 1",
|
||||
dbesc($channel['channel_guid']),
|
||||
dbesc($channel['channel_hash']),
|
||||
dbesc($channel['channel_address'])
|
||||
);
|
||||
|
||||
// We should probably also verify the hash
|
||||
|
||||
if($r) {
|
||||
if(($r) || (check_webbie(array($channel['channel_hash'])) !== $channel['channel_hash'])) {
|
||||
if($r[0]['channel_guid'] === $channel['channel_guid'] || $r[0]['channel_hash'] === $channel['channel_hash']) {
|
||||
logger('mod_import: duplicate channel. ', print_r($channel,true));
|
||||
notice( t('Cannot create a duplicate channel identifier on this system. Import failed.') . EOL);
|
||||
|
@ -2025,7 +2025,7 @@ function check_webbie($arr) {
|
||||
if(strlen($reservechan))
|
||||
$taken = explode(',', $reservechan);
|
||||
else
|
||||
$taken = array();
|
||||
$taken = array('principals','addressbooks','calendars');
|
||||
|
||||
$str = '';
|
||||
if(count($arr)) {
|
||||
@ -2057,6 +2057,20 @@ function check_webbie($arr) {
|
||||
return '';
|
||||
}
|
||||
|
||||
function ids_to_array($arr,$idx = 'id') {
|
||||
$t = array();
|
||||
if($arr) {
|
||||
foreach($arr as $x) {
|
||||
if(! in_array($x[$idx],$t)) {
|
||||
$t[] = $x[$idx];
|
||||
}
|
||||
}
|
||||
}
|
||||
return($t);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function ids_to_querystr($arr,$idx = 'id') {
|
||||
$t = array();
|
||||
|
Reference in New Issue
Block a user