Software: Apache. PHP/5.3.29 uname -a: Linux tardis23.nocplanet.net 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024
Safe-mode: OFF (not secure) /home/memoriacel/public_html/2018/panel/FileAPI-master/lib/ drwxr-xr-x | |
| Viewing file: Select action/file-type: /*global window, FileAPI, Uint8Array */
(function (window, api){
"use strict";
var
noop = function (){}
, document = window.document
, XHR = function (options){
this.uid = api.uid();
this.xhr = {
abort: noop
, getResponseHeader: noop
, getAllResponseHeaders: noop
};
this.options = options;
},
_xhrResponsePostfix = { '': 1, XML: 1, Text: 1, Body: 1 }
;
XHR.prototype = {
status: 0,
statusText: '',
constructor: XHR,
getResponseHeader: function (name){
return this.xhr.getResponseHeader(name);
},
getAllResponseHeaders: function (){
return this.xhr.getAllResponseHeaders() || {};
},
end: function (status, statusText){
var _this = this, options = _this.options;
_this.end =
_this.abort = noop;
_this.status = status;
if( statusText ){
_this.statusText = statusText;
}
api.log('xhr.end:', status, statusText);
options.complete(status == 200 || status == 201 ? false : _this.statusText || 'unknown', _this);
if( _this.xhr && _this.xhr.node ){
setTimeout(function (){
var node = _this.xhr.node;
try { node.parentNode.removeChild(node); } catch (e){}
try { delete window[_this.uid]; } catch (e){}
window[_this.uid] = _this.xhr.node = null;
}, 9);
}
},
abort: function (){
this.end(0, 'abort');
if( this.xhr ){
this.xhr.aborted = true;
this.xhr.abort();
}
},
send: function (FormData){
var _this = this, options = this.options;
FormData.toData(function (data){
if( data instanceof Error ){
_this.end(0, data.message);
}
else{
// Start uploading
options.upload(options, _this);
_this._send.call(_this, options, data);
}
}, options);
},
_send: function (options, data){
var _this = this, xhr, uid = _this.uid, onLoadFnName = _this.uid + "Load", url = options.url;
api.log('XHR._send:', data);
if( !options.cache ){
// No cache
url += (~url.indexOf('?') ? '&' : '?') + api.uid();
}
if( data.nodeName ){
var jsonp = options.jsonp;
// prepare callback in GET
url = url.replace(/([a-z]+)=(\?)/i, '$1='+uid);
// legacy
options.upload(options, _this);
var
onPostMessage = function (evt){
if( ~url.indexOf(evt.origin) ){
try {
var result = api.parseJSON(evt.data);
if( result.id == uid ){
complete(result.status, result.statusText, result.response);
}
} catch( err ){
complete(0, err.message);
}
}
},
// jsonp-callack
complete = window[uid] = function (status, statusText, response){
_this.readyState = 4;
_this.responseText = response;
_this.end(status, statusText);
api.event.off(window, 'message', onPostMessage);
window[uid] = xhr = transport = window[onLoadFnName] = null;
}
;
_this.xhr.abort = function (){
try {
if( transport.stop ){ transport.stop(); }
else if( transport.contentWindow.stop ){ transport.contentWindow.stop(); }
else { transport.contentWindow.document.execCommand('Stop'); }
}
catch (er) {}
complete(0, "abort");
};
api.event.on(window, 'message', onPostMessage);
window[onLoadFnName] = function (){
try {
var
win = transport.contentWindow
, doc = win.document
, result = win.result || api.parseJSON(doc.body.innerHTML)
;
complete(result.status, result.statusText, result.response);
} catch (e){
api.log('[transport.onload]', e);
}
};
xhr = document.createElement('div');
xhr.innerHTML = '<form target="'+ uid +'" action="'+ url +'" method="POST" enctype="multipart/form-data" style="position: absolute; top: -1000px; overflow: hidden; width: 1px; height: 1px;">'
+ '<iframe name="'+ uid +'" src="javascript:false;" onload="window.' + onLoadFnName + ' && ' + onLoadFnName + '();"></iframe>'
+ (jsonp && (options.url.indexOf('=?') < 0) ? '<input value="'+ uid +'" name="'+jsonp+'" type="hidden"/>' : '')
+ '</form>'
;
// get form-data & transport
var
form = xhr.getElementsByTagName('form')[0]
, transport = xhr.getElementsByTagName('iframe')[0]
;
form.appendChild(data);
api.log(form.parentNode.innerHTML);
// append to DOM
document.body.appendChild(xhr);
// keep a reference to node-transport
_this.xhr.node = xhr;
// send
_this.readyState = 2; // loaded
try {
form.submit();
} catch (err) {
api.log('iframe.error: ' + err);
}
form = null;
}
else {
// Clean url
url = url.replace(/([a-z]+)=(\?)&?/i, '');
// html5
if (this.xhr && this.xhr.aborted) {
api.log("Error: already aborted");
return;
}
xhr = _this.xhr = api.getXHR();
if (data.params) {
url += (url.indexOf('?') < 0 ? "?" : "&") + data.params.join("&");
}
xhr.open('POST', url, true);
if( api.withCredentials ){
xhr.withCredentials = "true";
}
if( !options.headers || !options.headers['X-Requested-With'] ){
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
}
api.each(options.headers, function (val, key){
xhr.setRequestHeader(key, val);
});
if ( options._chunked ) {
// chunked upload
if( xhr.upload ){
xhr.upload.addEventListener('progress', api.throttle(function (/**Event*/evt){
if (!data.retry) {
// show progress only for correct chunk uploads
options.progress({
type: evt.type
, total: data.size
, loaded: data.start + evt.loaded
, totalSize: data.size
}, _this, options);
}
}, 100), false);
}
xhr.onreadystatechange = function (){
var lkb = parseInt(xhr.getResponseHeader('X-Last-Known-Byte'), 10);
_this.status = xhr.status;
_this.statusText = xhr.statusText;
_this.readyState = xhr.readyState;
if( xhr.readyState == 4 ){
for( var k in _xhrResponsePostfix ){
_this['response'+k] = xhr['response'+k];
}
xhr.onreadystatechange = null;
if (!xhr.status || xhr.status - 201 > 0) {
api.log("Error: " + xhr.status);
// some kind of error
// 0 - connection fail or timeout, if xhr.aborted is true, then it's not recoverable user action
// up - server error
if (((!xhr.status && !xhr.aborted) || 500 == xhr.status || 416 == xhr.status) && ++data.retry <= options.chunkUploadRetry) {
// let's try again the same chunk
// only applicable for recoverable error codes 500 && 416
var delay = xhr.status ? 0 : api.chunkNetworkDownRetryTimeout;
// inform about recoverable problems
options.pause(data.file, options);
// smart restart if server reports about the last known byte
api.log("X-Last-Known-Byte: " + lkb);
if (lkb) {
data.end = lkb;
} else {
data.end = data.start - 1;
if (416 == xhr.status) {
data.end = data.end - options.chunkSize;
}
}
setTimeout(function () {
_this._send(options, data);
}, delay);
} else {
// no mo retries
_this.end(xhr.status);
}
} else {
// success
data.retry = 0;
if (data.end == data.size - 1) {
// finished
_this.end(xhr.status);
} else {
// next chunk
// shift position if server reports about the last known byte
api.log("X-Last-Known-Byte: " + lkb);
if (lkb) {
data.end = lkb;
}
data.file.FileAPIReadPosition = data.end;
setTimeout(function () {
_this._send(options, data);
}, 0);
}
}
xhr = null;
}
};
data.start = data.end + 1;
data.end = Math.max(Math.min(data.start + options.chunkSize, data.size) - 1, data.start);
// Retrieve a slice of file
var
file = data.file
, slice = (file.slice || file.mozSlice || file.webkitSlice).call(file, data.start, data.end + 1)
;
if( data.size && !slice.size ){
setTimeout(function (){
_this.end(-1);
});
} else {
xhr.setRequestHeader("Content-Range", "bytes " + data.start + "-" + data.end + "/" + data.size);
xhr.setRequestHeader("Content-Disposition", 'attachment; filename=' + encodeURIComponent(data.name));
xhr.setRequestHeader("Content-Type", data.type || "application/octet-stream");
xhr.send(slice);
}
file = slice = null;
} else {
// single piece upload
if( xhr.upload ){
// https://github.com/blueimp/jQuery-File-Upload/wiki/Fixing-Safari-hanging-on-very-high-speed-connections-%281Gbps%29
xhr.upload.addEventListener('progress', api.throttle(function (/**Event*/evt){
options.progress(evt, _this, options);
}, 100), false);
}
xhr.onreadystatechange = function (){
_this.status = xhr.status;
_this.statusText = xhr.statusText;
_this.readyState = xhr.readyState;
if( xhr.readyState == 4 ){
for( var k in _xhrResponsePostfix ){
_this['response'+k] = xhr['response'+k];
}
xhr.onreadystatechange = null;
if (!xhr.status || xhr.status > 201) {
api.log("Error: " + xhr.status);
if (((!xhr.status && !xhr.aborted) || 500 == xhr.status) && (options.retry || 0) < options.uploadRetry) {
options.retry = (options.retry || 0) + 1;
var delay = api.networkDownRetryTimeout;
// inform about recoverable problems
options.pause(options.file, options);
setTimeout(function () {
_this._send(options, data);
}, delay);
} else {
//success
_this.end(xhr.status);
}
} else {
//success
_this.end(xhr.status);
}
xhr = null;
}
};
if( api.isArray(data) ){
// multipart
xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=_'+api.expando);
var rawData = data.join('') +'--_'+ api.expando +'--';
/** @namespace xhr.sendAsBinary https://developer.mozilla.org/ru/XMLHttpRequest#Sending_binary_content */
if( xhr.sendAsBinary ){
xhr.sendAsBinary(rawData);
}
else {
var bytes = Array.prototype.map.call(rawData, function(c){ return c.charCodeAt(0) & 0xff; });
xhr.send(new Uint8Array(bytes).buffer);
}
} else {
// FormData
xhr.send(data);
}
}
}
}
};
// @export
api.XHR = XHR;
})(window, FileAPI);
|
:: Command execute :: | |
--[ c99shell v.2.1 [PHP 7 Update] [1.12.2019] maintained by KaizenLouie and updated by cermmik | C99Shell Github (MySQL update) | Generation time: 0.0078 ]-- |