mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-01-27 00:58:20 +08:00
CURLOPT_FOLLOWLOCATION curl workaround (for safe_mode/open_basedir) (#138)
This commit is contained in:
parent
0fcd7cf122
commit
5fff5afd16
8 changed files with 186 additions and 273 deletions
|
@ -263,6 +263,8 @@ AbstractApp.prototype.pub = function (sName, aArgs)
|
|||
|
||||
AbstractApp.prototype.bootstart = function ()
|
||||
{
|
||||
var self = this;
|
||||
|
||||
Utils.initOnStartOrLangChange(function () {
|
||||
Utils.initNotificationLanguage();
|
||||
}, null);
|
||||
|
@ -276,9 +278,11 @@ AbstractApp.prototype.bootstart = function ()
|
|||
'maxWidth': 767,
|
||||
'onEnter': function() {
|
||||
$html.addClass('ssm-state-mobile');
|
||||
self.pub('ssm.mobile-enter');
|
||||
},
|
||||
'onLeave': function() {
|
||||
$html.removeClass('ssm-state-mobile');
|
||||
self.pub('ssm.mobile-leave');
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1077,7 +1077,35 @@ Utils.initLayoutResizer = function (sLeft, sRight, sClientSideKeyName)
|
|||
var
|
||||
oLeft = $(sLeft),
|
||||
oRight = $(sRight),
|
||||
|
||||
mLeftWidth = RL.local().get(sClientSideKeyName) || null,
|
||||
|
||||
fSetWidth = function (iWidth) {
|
||||
if (iWidth)
|
||||
{
|
||||
oLeft.css({
|
||||
'width': '' + iWidth + 'px'
|
||||
});
|
||||
|
||||
oRight.css({
|
||||
'left': '' + iWidth + 'px'
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// fDisable = function (bDisable) {
|
||||
// if (bDisable)
|
||||
// {
|
||||
// oLeft.resizable('disable');
|
||||
// fSetWidth(5);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// oLeft.resizable('enable');
|
||||
// fSetWidth(RL.local().get(sClientSideKeyName) || 150);
|
||||
// }
|
||||
// },
|
||||
|
||||
fResizeFunction = function (oEvent, oObject) {
|
||||
if (oObject && oObject.size && oObject.size.width)
|
||||
{
|
||||
|
@ -1092,13 +1120,7 @@ Utils.initLayoutResizer = function (sLeft, sRight, sClientSideKeyName)
|
|||
|
||||
if (null !== mLeftWidth)
|
||||
{
|
||||
oLeft.css({
|
||||
'width': '' + mLeftWidth + 'px'
|
||||
});
|
||||
|
||||
oRight.css({
|
||||
'left': '' + mLeftWidth + 'px'
|
||||
});
|
||||
fSetWidth(mLeftWidth);
|
||||
}
|
||||
|
||||
oLeft.resizable({
|
||||
|
@ -1108,90 +1130,15 @@ Utils.initLayoutResizer = function (sLeft, sRight, sClientSideKeyName)
|
|||
'handles': 'e',
|
||||
'stop': fResizeFunction
|
||||
});
|
||||
};
|
||||
|
||||
//Utils.initLayoutResizer1 = function (sLeft, sRight, sParent/*, koSwither*/,
|
||||
// iLimitL, iMaxL, iDefL, iLimitR, sClientSideKeyName)
|
||||
//{
|
||||
// iLimitL = iLimitL || 300;
|
||||
// iMaxL = iMaxL || 500;
|
||||
// iDefL = iDefL || (iMaxL - iLimitL / 2);
|
||||
// iLimitR = iLimitR || 300;
|
||||
//
|
||||
// var
|
||||
// iTemp = 0,
|
||||
// oLeft = $(sLeft),
|
||||
// oRight = $(sRight),
|
||||
// oParent = $(sParent),
|
||||
// iLeftWidth = RL.local().get(sClientSideKeyName) || iDefL,
|
||||
// fFunction = function (oEvent, oObject, bForce) {
|
||||
//
|
||||
// if (oObject || bForce)
|
||||
// {
|
||||
// var
|
||||
// iWidth = oParent.width(),
|
||||
// iProc = oObject ? oObject.size.width / iWidth * 100 : null
|
||||
// ;
|
||||
//
|
||||
// if (null === iProc && bForce)
|
||||
// {
|
||||
// iProc = oLeft.width() / iWidth * 100;
|
||||
// }
|
||||
//
|
||||
// if (null !== iProc)
|
||||
// {
|
||||
// oLeft.css({
|
||||
// 'width': '',
|
||||
// 'height': '',
|
||||
// 'right': '' + (100 - iProc) + '%'
|
||||
// });
|
||||
//
|
||||
// oRight.css({
|
||||
// 'width': '',
|
||||
// 'height': '',
|
||||
// 'left': '' + iProc + '%'
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// fResiseFunction = function (oEvent, oObject)
|
||||
// {
|
||||
// if (/*koSwither && koSwither() && */oObject && oObject.element &&
|
||||
// oObject.element[0]['id'] && '#' + oObject.element[0]['id'] === '' + sLeft)
|
||||
// {
|
||||
// var iWidth = oParent.width();
|
||||
// iTemp = iWidth - iLimitR;
|
||||
// iTemp = iMaxL > iTemp ? iTemp : iMaxL;
|
||||
// oLeft.resizable('option', 'maxWidth', iTemp);
|
||||
// if (oObject.size && oObject.size.width)
|
||||
// {
|
||||
// RL.local().set(sClientSideKeyName, oObject.size.width);
|
||||
// }
|
||||
//
|
||||
// fFunction(null, null, true);
|
||||
// }
|
||||
// }
|
||||
// ;
|
||||
//
|
||||
// if (iLeftWidth)
|
||||
// {
|
||||
// oLeft.width(iLeftWidth);
|
||||
// }
|
||||
//
|
||||
// iTemp = oParent.width() - iLimitR;
|
||||
// iTemp = iMaxL > iTemp ? iTemp : iMaxL;
|
||||
//
|
||||
// oLeft.resizable({
|
||||
// 'minWidth': iLimitL,
|
||||
// 'maxWidth': iTemp,
|
||||
// 'handles': 'e',
|
||||
// 'resize': fFunction,
|
||||
// 'stop': fFunction
|
||||
// RL.sub('ssm.mobile-enter', function () {
|
||||
// fDisable(true);
|
||||
// });
|
||||
//
|
||||
// fFunction(null, null, true);
|
||||
// $window.resize(_.throttle(fResiseFunction, 400));
|
||||
//};
|
||||
// RL.sub('ssm.mobile-leave', function () {
|
||||
// fDisable(false);
|
||||
// });
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Object} oMessageTextBody
|
||||
|
|
|
@ -208,7 +208,7 @@ function MailBoxMessageListViewModel()
|
|||
return oMessage ? oMessage.generateUid() : '';
|
||||
});
|
||||
|
||||
oData.messageListEndHash.subscribe(function (mValue) {
|
||||
oData.messageListEndHash.subscribe(function () {
|
||||
this.selector.scrollToTop();
|
||||
}, this);
|
||||
|
||||
|
|
|
@ -460,10 +460,70 @@ class Client {
|
|||
protected function curlRequest($url, $settings) {
|
||||
|
||||
$curl = curl_init($url);
|
||||
curl_setopt_array($curl, $settings);
|
||||
if (ini_get('open_basedir') === '' && ini_get('safe_mode' === 'Off'))
|
||||
{
|
||||
curl_setopt_array($curl, $settings);
|
||||
$data = curl_exec($curl);
|
||||
}
|
||||
else
|
||||
{
|
||||
$settings[CURLOPT_FOLLOWLOCATION] = false;
|
||||
curl_setopt_array($curl, $settings);
|
||||
|
||||
$max_redirects = isset($settings[CURLOPT_MAXREDIRS]) ? $settings[CURLOPT_MAXREDIRS] : 5;
|
||||
$mr = $max_redirects;
|
||||
if ($mr > 0)
|
||||
{
|
||||
$newurl = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
|
||||
|
||||
$rcurl = curl_copy_handle($curl);
|
||||
curl_setopt($rcurl, CURLOPT_HEADER, true);
|
||||
curl_setopt($rcurl, CURLOPT_NOBODY, true);
|
||||
curl_setopt($rcurl, CURLOPT_FORBID_REUSE, false);
|
||||
curl_setopt($rcurl, CURLOPT_RETURNTRANSFER, true);
|
||||
do
|
||||
{
|
||||
curl_setopt($rcurl, CURLOPT_URL, $newurl);
|
||||
$header = curl_exec($rcurl);
|
||||
if (curl_errno($rcurl))
|
||||
{
|
||||
$code = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$code = curl_getinfo($rcurl, CURLINFO_HTTP_CODE);
|
||||
if ($code == 301 || $code == 302)
|
||||
{
|
||||
$matches = array();
|
||||
preg_match('/Location:(.*?)\n/', $header, $matches);
|
||||
$newurl = trim(array_pop($matches));
|
||||
}
|
||||
else
|
||||
{
|
||||
$code = 0;
|
||||
}
|
||||
}
|
||||
} while ($code && --$mr);
|
||||
|
||||
curl_close($rcurl);
|
||||
if ($mr > 0)
|
||||
{
|
||||
curl_setopt($curl, CURLOPT_URL, $newurl);
|
||||
}
|
||||
}
|
||||
|
||||
if ($mr == 0 && $max_redirects > 0)
|
||||
{
|
||||
$data = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$data = curl_exec($curl);
|
||||
}
|
||||
}
|
||||
|
||||
return array(
|
||||
curl_exec($curl),
|
||||
$data,
|
||||
curl_getinfo($curl),
|
||||
curl_errno($curl),
|
||||
curl_error($curl)
|
||||
|
|
|
@ -1799,7 +1799,35 @@ Utils.initLayoutResizer = function (sLeft, sRight, sClientSideKeyName)
|
|||
var
|
||||
oLeft = $(sLeft),
|
||||
oRight = $(sRight),
|
||||
|
||||
mLeftWidth = RL.local().get(sClientSideKeyName) || null,
|
||||
|
||||
fSetWidth = function (iWidth) {
|
||||
if (iWidth)
|
||||
{
|
||||
oLeft.css({
|
||||
'width': '' + iWidth + 'px'
|
||||
});
|
||||
|
||||
oRight.css({
|
||||
'left': '' + iWidth + 'px'
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// fDisable = function (bDisable) {
|
||||
// if (bDisable)
|
||||
// {
|
||||
// oLeft.resizable('disable');
|
||||
// fSetWidth(5);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// oLeft.resizable('enable');
|
||||
// fSetWidth(RL.local().get(sClientSideKeyName) || 150);
|
||||
// }
|
||||
// },
|
||||
|
||||
fResizeFunction = function (oEvent, oObject) {
|
||||
if (oObject && oObject.size && oObject.size.width)
|
||||
{
|
||||
|
@ -1814,13 +1842,7 @@ Utils.initLayoutResizer = function (sLeft, sRight, sClientSideKeyName)
|
|||
|
||||
if (null !== mLeftWidth)
|
||||
{
|
||||
oLeft.css({
|
||||
'width': '' + mLeftWidth + 'px'
|
||||
});
|
||||
|
||||
oRight.css({
|
||||
'left': '' + mLeftWidth + 'px'
|
||||
});
|
||||
fSetWidth(mLeftWidth);
|
||||
}
|
||||
|
||||
oLeft.resizable({
|
||||
|
@ -1830,90 +1852,15 @@ Utils.initLayoutResizer = function (sLeft, sRight, sClientSideKeyName)
|
|||
'handles': 'e',
|
||||
'stop': fResizeFunction
|
||||
});
|
||||
};
|
||||
|
||||
//Utils.initLayoutResizer1 = function (sLeft, sRight, sParent/*, koSwither*/,
|
||||
// iLimitL, iMaxL, iDefL, iLimitR, sClientSideKeyName)
|
||||
//{
|
||||
// iLimitL = iLimitL || 300;
|
||||
// iMaxL = iMaxL || 500;
|
||||
// iDefL = iDefL || (iMaxL - iLimitL / 2);
|
||||
// iLimitR = iLimitR || 300;
|
||||
//
|
||||
// var
|
||||
// iTemp = 0,
|
||||
// oLeft = $(sLeft),
|
||||
// oRight = $(sRight),
|
||||
// oParent = $(sParent),
|
||||
// iLeftWidth = RL.local().get(sClientSideKeyName) || iDefL,
|
||||
// fFunction = function (oEvent, oObject, bForce) {
|
||||
//
|
||||
// if (oObject || bForce)
|
||||
// {
|
||||
// var
|
||||
// iWidth = oParent.width(),
|
||||
// iProc = oObject ? oObject.size.width / iWidth * 100 : null
|
||||
// ;
|
||||
//
|
||||
// if (null === iProc && bForce)
|
||||
// {
|
||||
// iProc = oLeft.width() / iWidth * 100;
|
||||
// }
|
||||
//
|
||||
// if (null !== iProc)
|
||||
// {
|
||||
// oLeft.css({
|
||||
// 'width': '',
|
||||
// 'height': '',
|
||||
// 'right': '' + (100 - iProc) + '%'
|
||||
// });
|
||||
//
|
||||
// oRight.css({
|
||||
// 'width': '',
|
||||
// 'height': '',
|
||||
// 'left': '' + iProc + '%'
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// fResiseFunction = function (oEvent, oObject)
|
||||
// {
|
||||
// if (/*koSwither && koSwither() && */oObject && oObject.element &&
|
||||
// oObject.element[0]['id'] && '#' + oObject.element[0]['id'] === '' + sLeft)
|
||||
// {
|
||||
// var iWidth = oParent.width();
|
||||
// iTemp = iWidth - iLimitR;
|
||||
// iTemp = iMaxL > iTemp ? iTemp : iMaxL;
|
||||
// oLeft.resizable('option', 'maxWidth', iTemp);
|
||||
// if (oObject.size && oObject.size.width)
|
||||
// {
|
||||
// RL.local().set(sClientSideKeyName, oObject.size.width);
|
||||
// }
|
||||
//
|
||||
// fFunction(null, null, true);
|
||||
// }
|
||||
// }
|
||||
// ;
|
||||
//
|
||||
// if (iLeftWidth)
|
||||
// {
|
||||
// oLeft.width(iLeftWidth);
|
||||
// }
|
||||
//
|
||||
// iTemp = oParent.width() - iLimitR;
|
||||
// iTemp = iMaxL > iTemp ? iTemp : iMaxL;
|
||||
//
|
||||
// oLeft.resizable({
|
||||
// 'minWidth': iLimitL,
|
||||
// 'maxWidth': iTemp,
|
||||
// 'handles': 'e',
|
||||
// 'resize': fFunction,
|
||||
// 'stop': fFunction
|
||||
// RL.sub('ssm.mobile-enter', function () {
|
||||
// fDisable(true);
|
||||
// });
|
||||
//
|
||||
// fFunction(null, null, true);
|
||||
// $window.resize(_.throttle(fResiseFunction, 400));
|
||||
//};
|
||||
// RL.sub('ssm.mobile-leave', function () {
|
||||
// fDisable(false);
|
||||
// });
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Object} oMessageTextBody
|
||||
|
@ -7952,6 +7899,8 @@ AbstractApp.prototype.pub = function (sName, aArgs)
|
|||
|
||||
AbstractApp.prototype.bootstart = function ()
|
||||
{
|
||||
var self = this;
|
||||
|
||||
Utils.initOnStartOrLangChange(function () {
|
||||
Utils.initNotificationLanguage();
|
||||
}, null);
|
||||
|
@ -7965,9 +7914,11 @@ AbstractApp.prototype.bootstart = function ()
|
|||
'maxWidth': 767,
|
||||
'onEnter': function() {
|
||||
$html.addClass('ssm-state-mobile');
|
||||
self.pub('ssm.mobile-enter');
|
||||
},
|
||||
'onLeave': function() {
|
||||
$html.removeClass('ssm-state-mobile');
|
||||
self.pub('ssm.mobile-leave');
|
||||
}
|
||||
});
|
||||
|
||||
|
|
6
rainloop/v/0.0.0/static/js/admin.min.js
vendored
6
rainloop/v/0.0.0/static/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -1803,7 +1803,35 @@ Utils.initLayoutResizer = function (sLeft, sRight, sClientSideKeyName)
|
|||
var
|
||||
oLeft = $(sLeft),
|
||||
oRight = $(sRight),
|
||||
|
||||
mLeftWidth = RL.local().get(sClientSideKeyName) || null,
|
||||
|
||||
fSetWidth = function (iWidth) {
|
||||
if (iWidth)
|
||||
{
|
||||
oLeft.css({
|
||||
'width': '' + iWidth + 'px'
|
||||
});
|
||||
|
||||
oRight.css({
|
||||
'left': '' + iWidth + 'px'
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// fDisable = function (bDisable) {
|
||||
// if (bDisable)
|
||||
// {
|
||||
// oLeft.resizable('disable');
|
||||
// fSetWidth(5);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// oLeft.resizable('enable');
|
||||
// fSetWidth(RL.local().get(sClientSideKeyName) || 150);
|
||||
// }
|
||||
// },
|
||||
|
||||
fResizeFunction = function (oEvent, oObject) {
|
||||
if (oObject && oObject.size && oObject.size.width)
|
||||
{
|
||||
|
@ -1818,13 +1846,7 @@ Utils.initLayoutResizer = function (sLeft, sRight, sClientSideKeyName)
|
|||
|
||||
if (null !== mLeftWidth)
|
||||
{
|
||||
oLeft.css({
|
||||
'width': '' + mLeftWidth + 'px'
|
||||
});
|
||||
|
||||
oRight.css({
|
||||
'left': '' + mLeftWidth + 'px'
|
||||
});
|
||||
fSetWidth(mLeftWidth);
|
||||
}
|
||||
|
||||
oLeft.resizable({
|
||||
|
@ -1834,90 +1856,15 @@ Utils.initLayoutResizer = function (sLeft, sRight, sClientSideKeyName)
|
|||
'handles': 'e',
|
||||
'stop': fResizeFunction
|
||||
});
|
||||
};
|
||||
|
||||
//Utils.initLayoutResizer1 = function (sLeft, sRight, sParent/*, koSwither*/,
|
||||
// iLimitL, iMaxL, iDefL, iLimitR, sClientSideKeyName)
|
||||
//{
|
||||
// iLimitL = iLimitL || 300;
|
||||
// iMaxL = iMaxL || 500;
|
||||
// iDefL = iDefL || (iMaxL - iLimitL / 2);
|
||||
// iLimitR = iLimitR || 300;
|
||||
//
|
||||
// var
|
||||
// iTemp = 0,
|
||||
// oLeft = $(sLeft),
|
||||
// oRight = $(sRight),
|
||||
// oParent = $(sParent),
|
||||
// iLeftWidth = RL.local().get(sClientSideKeyName) || iDefL,
|
||||
// fFunction = function (oEvent, oObject, bForce) {
|
||||
//
|
||||
// if (oObject || bForce)
|
||||
// {
|
||||
// var
|
||||
// iWidth = oParent.width(),
|
||||
// iProc = oObject ? oObject.size.width / iWidth * 100 : null
|
||||
// ;
|
||||
//
|
||||
// if (null === iProc && bForce)
|
||||
// {
|
||||
// iProc = oLeft.width() / iWidth * 100;
|
||||
// }
|
||||
//
|
||||
// if (null !== iProc)
|
||||
// {
|
||||
// oLeft.css({
|
||||
// 'width': '',
|
||||
// 'height': '',
|
||||
// 'right': '' + (100 - iProc) + '%'
|
||||
// });
|
||||
//
|
||||
// oRight.css({
|
||||
// 'width': '',
|
||||
// 'height': '',
|
||||
// 'left': '' + iProc + '%'
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// fResiseFunction = function (oEvent, oObject)
|
||||
// {
|
||||
// if (/*koSwither && koSwither() && */oObject && oObject.element &&
|
||||
// oObject.element[0]['id'] && '#' + oObject.element[0]['id'] === '' + sLeft)
|
||||
// {
|
||||
// var iWidth = oParent.width();
|
||||
// iTemp = iWidth - iLimitR;
|
||||
// iTemp = iMaxL > iTemp ? iTemp : iMaxL;
|
||||
// oLeft.resizable('option', 'maxWidth', iTemp);
|
||||
// if (oObject.size && oObject.size.width)
|
||||
// {
|
||||
// RL.local().set(sClientSideKeyName, oObject.size.width);
|
||||
// }
|
||||
//
|
||||
// fFunction(null, null, true);
|
||||
// }
|
||||
// }
|
||||
// ;
|
||||
//
|
||||
// if (iLeftWidth)
|
||||
// {
|
||||
// oLeft.width(iLeftWidth);
|
||||
// }
|
||||
//
|
||||
// iTemp = oParent.width() - iLimitR;
|
||||
// iTemp = iMaxL > iTemp ? iTemp : iMaxL;
|
||||
//
|
||||
// oLeft.resizable({
|
||||
// 'minWidth': iLimitL,
|
||||
// 'maxWidth': iTemp,
|
||||
// 'handles': 'e',
|
||||
// 'resize': fFunction,
|
||||
// 'stop': fFunction
|
||||
// RL.sub('ssm.mobile-enter', function () {
|
||||
// fDisable(true);
|
||||
// });
|
||||
//
|
||||
// fFunction(null, null, true);
|
||||
// $window.resize(_.throttle(fResiseFunction, 400));
|
||||
//};
|
||||
// RL.sub('ssm.mobile-leave', function () {
|
||||
// fDisable(false);
|
||||
// });
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Object} oMessageTextBody
|
||||
|
@ -12224,7 +12171,7 @@ function MailBoxMessageListViewModel()
|
|||
return oMessage ? oMessage.generateUid() : '';
|
||||
});
|
||||
|
||||
oData.messageListEndHash.subscribe(function (mValue) {
|
||||
oData.messageListEndHash.subscribe(function () {
|
||||
this.selector.scrollToTop();
|
||||
}, this);
|
||||
|
||||
|
@ -18463,6 +18410,8 @@ AbstractApp.prototype.pub = function (sName, aArgs)
|
|||
|
||||
AbstractApp.prototype.bootstart = function ()
|
||||
{
|
||||
var self = this;
|
||||
|
||||
Utils.initOnStartOrLangChange(function () {
|
||||
Utils.initNotificationLanguage();
|
||||
}, null);
|
||||
|
@ -18476,9 +18425,11 @@ AbstractApp.prototype.bootstart = function ()
|
|||
'maxWidth': 767,
|
||||
'onEnter': function() {
|
||||
$html.addClass('ssm-state-mobile');
|
||||
self.pub('ssm.mobile-enter');
|
||||
},
|
||||
'onLeave': function() {
|
||||
$html.removeClass('ssm-state-mobile');
|
||||
self.pub('ssm.mobile-leave');
|
||||
}
|
||||
});
|
||||
|
||||
|
|
4
rainloop/v/0.0.0/static/js/app.min.js
vendored
4
rainloop/v/0.0.0/static/js/app.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue