![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/tech_preview/hr/ |
Upload File : |
/* connector = filemanager.connect({ (optional) host: "", mode: "session" / "inherit" / "token", username: "admin", password: "123456", (optional) onsuccess: function (), (optional) onfailed: function (content) }); connector.loadFolder({ index: 0, path: [], onsuccess: function (content), (optional) onfailed: function (content) }); connector.download({ index: 0, path: [], filename: "test.php", onsuccess: function (content), (optional) onprogress: function (content), (optional) onfailed: function (content) }); connector.upload({ index: 0, path: [], filehandle: filehandle, (optional) filename: "test.php", (optional) onsuccess: function (content), (optional) onprogress: function (content), (optional) onfailed: function (content) }); connector.uploadFilesFromInput({ index: 0, path: [], (optional) onsuccess: function (content), (optional) onprogress: function (content), (optional) onfailed: function (content) }); connector.delete({ index: 0, path: [], files: ["test.php"], (optional) onsuccess: function (), (optional) onfailed: function (content) }); connector.mkdir({ index: 0, path: [], foldername: "test", (optional) onsuccess: function (), (optional) onfailed: function (content) }); connector.rmdir({ index: 0, path: [], foldername: "test", (optional) onsuccess: function (), (optional) onfailed: function (content) }); connector.logout({ (optional) onsuccess: function (), (optional) onfailed: function (content) }); */ const filemanager = Object.freeze ({ connect: function () { tcore = {}; tcore.connect = function (core) { return function (local, username, password) { var f = function (local) { return function (success, message) { var r; if (success) { if (message.substr(0, 2) == "ok") { r = EncodingClass.string.toVariable(message.substr(2)); if (r.result) { local.id = r.info.id; local.username = r.info.username; local.folders = r.info.folders; local.status = "connected"; if (local.mode == "token") local.token = r.token; local.keepAliveThread = function (core, local) { return function () { setTimeout(function (core, local) { return function () { core.keepAliveThread(local); } } (core, local), 300000); } } (core, local); local.keepAliveThread(); if (local.onsuccess !== undefined) local.onsuccess(); } else { local.status = "disconnected"; if (local.onfailed !== undefined) local.onfailed({ type: "response", message: r.message }); } } else { local.status = "disconnected"; if (local.onfailed !== undefined) local.onfailed({ type: "run-time", message: message }); } } else { local.status = "disconnected"; if (local.onfailed !== undefined) local.onfailed({ type: "system", message: message }); } } } (local); switch (local.mode) { case "token": case "session": FormClass.api_call({ url: local.host + "task_login.php", params: [ { name: "username", value: username }, { name: "password", value: password }, { name: "mode", value: local.mode } ], cors: true, func: f }); break; case "inherit": FormClass.api_call({ url: local.host + "task_inherit.php", params: [], cors: true, func: f }); break; } }; } (tcore); tcore.keepAliveThread = function (core) { return function (local) { if (local.status != "connected") { local.keepAliveThread(); return; } var params = [ { name: "mode", value: local.mode } ]; if (local.mode == "token") params.push({ name: "token", value: local.token }); FormClass.api_call({ url: local.host + "keepalive.php", cors: true, params: params, func: function (local, index) { return function (success, message) { local.keepAliveThread(); } } (local) }); }; } (tcore); tcore.loadcontent = function (local, index, path, onsuccess, onfailed) { if (local.status != "connected") { onfailed({ type: "system", message: "invalid connection status" }); return; } var f = function (onsuccess, onfailed) { return function (success, message) { var r; if (success) { if (message.substr(0, 2) == "ok") { r = EncodingClass.string.toVariable(message.substr(2)); if (r.result) { onsuccess(r.content); } else { onfailed({ type: "response", message: r.message }); } } else { onfailed({ type: "run-time", message: message }); } } else { onfailed({ type: "system", message: message }); } } } (onsuccess, onfailed); var params = [ { name: "index", value: index }, { name: "path", value: EncodingClass.string.fromVariable(path) }, { name: "mode", value: local.mode } ]; if (local.mode == "token") params.push({ name: "token", value: local.token }); FormClass.api_call({ url: local.host + "task_loadcontent.php", cors: true, params: params, func: f }); } tcore.download = function (local, index, path, filename, start, onsuccess, onfailed) { var f, params; if (local.status != "connected") { onfailed({ type: "system", message: "invalid connection status" }); return; } f = function (local, onsuccess, onfailed) { return function (success, message) { var r, i, n; if (success) { if (message.substr(0, 2) == "ok") { r = EncodingClass.string.toVariable(message.substr(2)); if (r.result) { n = r.content.length; if (n > 0) { for (i = 0; i < n; i++) { r.content[i] = String.fromCharCode(r.content[i]); } onsuccess(EncodingClass.string.merge(r.content)); } else { onsuccess(""); } } else { onfailed({ type: "response", message: r.message }); } } else { onfailed({ type: "run-time", message: message }); } } else { onfailed({ type: "system", message: message }); } } } (local, onsuccess, onfailed); if (local.mode == "token") { params = [ { name: "mode", value: "token" }, { name: "token", value: local.token } ]; } else { params = [{ name: "mode", value: "session" }]; } params.push({ name: "index", value: index }); params.push({ name: "start", value: start }); params.push({ name: "path", value: EncodingClass.string.fromVariable(path) }); params.push({ name: "filename", value: filename }); FormClass.api_call({ url: local.host + "task_download.php", params: params, cors: true, func: f }); } tcore.upload = function (local, filename, privindex, path, content, partindex, isSinglePart, onsuccess, onfailed) { var params = [ { name: "index", value: privindex }, { name: "filename", value: filename }, { name: "partindex", value: partindex }, { name: "singlepart", value: isSinglePart }, { name: "path", value: EncodingClass.string.fromVariable(path) } ]; if (local.mode == "token") { params.push({ name: "mode", value: "token" }); params.push({ name: "token", value: local.token }); } else { params.push({ name: "mode", value: "session" }); } FormClass.api_call({ url: local.host + "task_upload2.php", params: params, fileuploads: [{ name: "fcontent", filename: filename, content: content }], cors: true, func: function (onsuccess, onfailed) { return function (success, message) { if (success) { if (message.substr(0, 2) == "ok") { r = EncodingClass.string.toVariable(message.substr(2)); if (r.result) { onsuccess(); return; } if (r.content !== undefined) { onfailed({ type: "run-time", content: r.content }); } else { onfailed({ type: "run-time", message: "undefined content", content: r }); } } else { onfailed({ type: "run-time", content: message }); } } else { onfailed({ type: "system", content: message }); } } } (onsuccess, onfailed) }); } tcore.mergeUploadParts = function (local, content, index, filename, totalindex, path, onsuccess, onfailed) { var params = [ { name: "index", value: index }, { name: "filename", value: filename }, { name: "totalindex", value: totalindex }, { name: "path", value: EncodingClass.string.fromVariable(path) } ]; if (local.mode == "token") { params.push({ name: "mode", value: "token" }); params.push({ name: "token", value: local.token }); } else { params.push({ name: "mode", value: "session" }); } FormClass.api_call({ url: local.host + "task_upload2a.php", params: params, cors: true, func: function (content, onsuccess, onfailed) { return function (success, message) { if (message.substr(0, 2) == "ok") { r = EncodingClass.string.toVariable(message.substr(2)); if (r.result) { onsuccess({ index: content.index, path: content.path, filename: content.filename, filesize: content.size }); } else { onfailed({ type: "run-time", index: content.index, path: content.path, filename: content.filename, message: "Can not merge partial files", content: r.message }); } } else { onfailed({ type: "system", index: content.index, path: content.path, filename: content.filename, message: "Can not merge partial files", content: message }); } } } (content, onsuccess, onfailed) }); } tcore.uploadThread = function (core) { return function (local, content, threadIndex, onsuccess, onprogress, onfailed) { var vbuf; var i, buflen; var usize = content.size; var singlepart, startpoint; buflen = 1048576; if (usize > content.start + buflen) usize = content.start + buflen; usize -= content.start; var f = new FileReader(); onprogress({ index: content.index, path: content.path, filename: content.filename, uploaded: content.start, filesize: content.size }); if ((content.partindex == 0) && (usize == content.size)) { singlepart = 1; } else { singlepart = 0; } f.onload = function (core, local, content, start, partindex, singlepart, usize) { return function (e) { core.upload(local, content.filename, content.index, content.path, e.target.result, partindex, singlepart, function () { // onsuccess var i, n; if (content.terminated) return; if (content.start < content.size) { setTimeout(function (local, content, threadIndex, onsuccess, onprogress, onfailed) { return function () { core.uploadThread(local, content, threadIndex, onsuccess, onprogress, onfailed); } } (local, content, threadIndex, onsuccess, onprogress, onfailed), 10); return; } content.uploadThread[threadIndex] = true; n = content.uploadThread.length; for (i = 0; i < n; i++) { if (!content.uploadThread[i]) return; } setTimeout(function (local, content, onsuccess, onfailed) { return function () { if (content.partindex == 1) { onsuccess({ index: content.index, path: content.path, filename: content.filename, filesize: content.size }); return; } core.mergeUploadParts(local, content, content.index, content.filename, content.partindex, content.path, onsuccess, onfailed); } } (local, content, onsuccess, onfailed), 10); }, function (onfailed, start, usize, partindex) { // onfailed return function (failedcontent) { content.terminated = true; failedcontent.start = start; failedcontent.size = usize; failedcontent.partindex = partindex; onfailed(failedcontent); } } (onfailed, start, usize, partindex) ); } } (core, local, content, content.start, content.partindex, singlepart, usize); startpoint = content.start; content.partindex++; content.start += usize; f.readAsBinaryString(content.buffer.slice(startpoint, startpoint + usize)); } } (tcore); tcore.uploadProcess = function (core) { return function (local) { var i, content; if (local.uploadQueue.length == 0) return; content = local.uploadQueue[0]; for (i = 0; (i < 8) && (content.start < content.size); i++) { content.uploadThread.push(false); core.uploadThread(local, content, i, content.onsuccess, content.onprogress, content.onfailed); } } } (tcore); tcore.addToUploadQueue = function (core) { return function (local, index, path, filename, filehandle, onsuccess, onprogress, onfailed) { var content = { index: index, filename: filename, path: path, size: filehandle.size, buffer: filehandle, start: 0, partindex: 0, uploadThread: [], onsuccess: function (core, local, onsuccess) { return function (successcontent) { onsuccess(successcontent); local.uploadQueue.shift(); if (local.uploadQueue.length > 0) core.uploadProcess(local); } } (core, local, onsuccess), onprogress: onprogress, onfailed: function (core, local, onfailed) { return function (failedcontent) { onfailed(failedcontent); local.uploadQueue.shift(); if (local.uploadQueue.length > 0) core.uploadProcess(local); } } (core, local, onfailed), terminated: false }; local.uploadQueue.push(content); if (local.uploadQueue.length == 1) core.uploadProcess(local); } } (tcore); tcore.delete = function (local, index, path, files, onsuccess, onfailed) { if (local.status != "connected") { onfailed({ type: "system", message: "invalid connection status" }); return; } var f = function (onsuccess, onfailed) { return function (success, message) { var r; if (success) { if (message.substr(0, 2) == "ok") { r = EncodingClass.string.toVariable(message.substr(2)); if (r.result) { onsuccess(); } else { onfailed({ type: "response", message: r.message }); } } else { onfailed({ type: "run-time", message: message }); } } else { onfailed({ type: "system", message: message }); } } } (onsuccess, onfailed); var params = [ { name: "index", value: index }, { name: "data", value: EncodingClass.string.fromVariable({ path: path, files: files }) }, { name: "mode", value: local.mode } ]; if (local.mode == "token") params.push({ name: "token", value: local.token }); FormClass.api_call({ url: local.host + "task_delete.php", cors: true, params: params, func: f }); } tcore.mkdir = function (local, index, path, foldername, onsuccess, onfailed) { if (local.status != "connected") { onfailed({ type: "system", message: "invalid connection status" }); return; } var f = function (onsuccess, onfailed) { return function (success, message) { var r; if (success) { if (message.substr(0, 2) == "ok") { r = EncodingClass.string.toVariable(message.substr(2)); if (r.result) { onsuccess(); } else { onfailed({ type: "response", message: r.message }); } } else { onfailed({ type: "run-time", message: message }); } } else { onfailed({ type: "system", message: message }); } } } (onsuccess, onfailed); var params = [ { name: "index", value: index }, { name: "path", value: EncodingClass.string.fromVariable(path) }, { name: "filename", value: foldername }, { name: "mode", value: local.mode } ]; if (local.mode == "token") params.push({ name: "token", value: local.token }); FormClass.api_call({ url: local.host + "task_mkdir.php", cors: true, params: params, func: f }); } tcore.rmdir = function (local, index, path, foldername, onsuccess, onfailed) { if (local.status != "connected") { onfailed({ type: "system", message: "invalid connection status" }); return; } var f = function (onsuccess, onfailed) { return function (success, message) { var r; if (success) { if (message.substr(0, 2) == "ok") { r = EncodingClass.string.toVariable(message.substr(2)); if (r.result) { onsuccess(); } else { onfailed({ type: "response", message: r.message }); } } else { onfailed({ type: "run-time", message: message }); } } else { onfailed({ type: "system", message: message }); } } } (onsuccess, onfailed); var params = [ { name: "index", value: index }, { name: "path", value: EncodingClass.string.fromVariable(path) }, { name: "fname", value: foldername }, { name: "mode", value: local.mode } ]; if (local.mode == "token") params.push({ name: "token", value: local.token }); FormClass.api_call({ url: local.host + "task_rmdir.php", cors: true, params: params, func: f }); } tcore.logout = function (local, onsuccess, onfailed) { var f, params; if (local.status != "connected") { onfailed({ type: "system", message: "invalid connection status" }); return; } f = function (local, onsuccess, onfailed) { return function (success, message) { var r; if (success) { if (message.substr(0, 2) == "ok") { r = EncodingClass.string.toVariable(message.substr(2)); if (r.result) { local.status = "disconnected"; local.keepAliveThread = function () {}; onsuccess(); } else { onfailed({ type: "response", message: r.message }); } } else { onfailed({ type: "run-time", message: message }); } } else { onfailed({ type: "system", message: message }); } } } (local, onsuccess, onfailed); if (local.mode == "token") { params = [ { name: "mode", value: "token" }, { name: "token", value: local.token } ]; } else { params = [{ name: "mode", value: "session" }]; } FormClass.api_call({ url: local.host + "task_logout.php", params: params, cors: true, func: f }); } var fconnect = function (core) { return function (params) { var local = { id: 0, folders: [], uploadQueue: [] }; var retval = {}; var host, mode, username, password, onsuccess, onfailed; if (params === undefined) { params = { mode: "inherit" }; } if (params.host !== undefined) { host = params.host; } else { host = ""; } if (host.length > 0) { if (host.substr(host.length - 1, 1) != "/") host += "/"; } local.host = host; Object.defineProperty(retval, "status", { get: function (local) { return function () { return local.status; } } (local) }); Object.defineProperty(retval, "id", { get: function (local) { return function () { return local.id; } } (local) }); Object.defineProperty(retval, "username", { get: function (local) { return function () { return local.username; } } (local) }); Object.defineProperty(retval, "folders", { get: function (local) { return function () { return EncodingClass.string.duplicate(local.folders); } } (local) }); Object.defineProperty(retval, "mode", { get: function (local) { return function () { return local.mode; } } (local) }); retval.loadFolder = function (local, core) { return function (params) { var i, onfailed; if (params.index === undefined) { console.error("no index"); console.trace(); return; } if (params.path === undefined) { console.error("no path"); console.trace(); return; } if (!EncodingClass.type.isArray(params.path)) { console.error("invalid path type (must be array)"); console.trace(); return; } for (i = 0; i < params.path.length; i++) { if (!EncodingClass.type.isString(params.path[i])) { console.error("invalid path [" + i + "] type (must be string)"); console.trace(); return; } } if (params.onsuccess === undefined) { console.error("no trigger"); console.trace(); return; } if (!EncodingClass.type.isFunction(params.onsuccess)) { console.error("invalid onsuccess function"); console.trace(); return; } onfailed = function () {}; if (params.onfailed !== undefined) { if (EncodingClass.type.isFunction(params.onfailed)) { onfailed = params.onfailed; } else { console.error("invalid onfailed function"); console.trace(); } } core.loadcontent(local, params.index, params.path, params.onsuccess, onfailed); } } (local, core); retval.download = function (core, local) { return function (params) { var onsuccess = params.onsuccess, onprogress = params.onprogress, onfailed = params.onfailed; var xp, f, i; if (params.index === undefined) { console.error("no index"); console.trace(); return; } if (params.path === undefined) { console.error("no path"); console.trace(); return; } if (!EncodingClass.type.isArray(params.path)) { console.error("invalid path type (must be array)"); console.trace(); return; } for (i = 0; i < params.path.length; i++) { if (!EncodingClass.type.isString(params.path[i])) { console.error("invalid path [" + i + "] type (must be string)"); console.trace(); return; } } if (params.filename === undefined) { console.error("no filename"); console.trace(); return; } if (!EncodingClass.type.isString(params.filename)) { console.error("invalid filename type (must be string)"); console.trace(); return; } if (onsuccess === undefined) { console.error("onsuccess function can not be missing"); console.trace(); return; } if (!EncodingClass.type.isFunction(onsuccess)) { console.error("invalid onsuccess function"); console.trace(); return; } if (onprogress !== undefined) { if (!EncodingClass.type.isFunction(onprogress)) onprogress = undefined; } if (onprogress === undefined) { onprogress = function (content) {}; } if (onfailed !== undefined) { if (!EncodingClass.type.isFunction(onfailed)) onfailed = undefined; } if (onfailed === undefined) { onfailed = function (content) {}; } f = function (params) { params.core.download(params.local, params.index, params.path, params.filename, params.start, function (params) { // onsuccess return function (content) { var n = content.length; if (n > 0) { params.content = params.content + content; params.onprogress({ index: params.index, path: params.path, filename: params.filename, content: params.content }); params.start += n; params.threadcall(); } else { params.onsuccess({ index: params.index, path: params.path, filename: params.filename, content: params.content }); } } } (params), function (params) { // onfailed return function (content) { params.onfailed({ index: params.index, path: params.path, filename: params.filename, content: params.content, reason: content }); } } (params) ); } xp = { index: params.index, path: params.path, filename: params.filename, start: 0, onsuccess: onsuccess, onprogress: onprogress, onfailed: onfailed, core: core, local: local, content: "" } xp.threadcall = function (xp, func) { return function () { setTimeout(function (xp, func) { func(xp); } (xp, func), 10); } } (xp, f); xp.threadcall(); } } (core, local); retval.upload = function (core, local) { return function (params) { var index, path, filename, filehandle, onsuccess, onprogress, onfailed; var i; index = params.index; path = params.path; filename = params.filename; filehandle = params.filehandle; onsuccess = params.onsuccess; onprogress = params.onprogress; onfailed = params.onfailed; if (index === undefined) { console.error("index can not be missing"); console.trace(); return; } if (!EncodingClass.type.isNumber(index)) { console.error("invalid index value"); console.trace(); return; } if (path === undefined) { console.error("path can not be missing"); console.trace(); return; } if (!EncodingClass.type.isArray(path)) { console.error("invalid path value"); console.trace(); return; } for (i = 0; i < path.length; i++) { if (!EncodingClass.type.isString(path[i])) { console.error("invalid path value [" + i + "]"); console.trace(); return; } } if (filehandle === undefined) { console.error("filehandle can not be missing"); console.trace(); return; } if (filename === undefined) filename = filehandle.name; if (!EncodingClass.type.isString(filename)) { console.error("invalid filename value"); console.trace(); return; } if (onsuccess === undefined) onsuccess = function (successcontent) {}; if (onprogress === undefined) onprogress = function (progresscontent) {}; if (onfailed === undefined) onfailed = function (failedcontent) {}; if (!EncodingClass.type.isFunction(onsuccess)) { console.error("invalid onsuccess function"); console.trace(); return; } if (!EncodingClass.type.isFunction(onprogress)) { console.error("invalid onprogress function"); console.trace(); return; } if (!EncodingClass.type.isFunction(onfailed)) { console.error("invalid onfailed function"); console.trace(); return; } core.addToUploadQueue(local, index, path, filename, filehandle, onsuccess, onprogress, onfailed); } } (core, local); retval.uploadFilesFromInput = function (core, local, connector) { return function (params) { var index, path, onsuccess, onprogress, onfailed; var i; index = params.index; path = params.path; onsuccess = params.onsuccess; onprogress = params.onprogress; onfailed = params.onfailed; if (index === undefined) { console.error("index can not be missing"); console.trace(); return; } if (!EncodingClass.type.isNumber(index)) { console.error("invalid index value"); console.trace(); return; } if (path === undefined) { console.error("path can not be missing"); console.trace(); return; } if (!EncodingClass.type.isArray(path)) { console.error("invalid path value"); console.trace(); return; } for (i = 0; i < path.length; i++) { if (!EncodingClass.type.isString(path[i])) { console.error("invalid path value [" + i + "]"); console.trace(); return; } } if (onsuccess === undefined) onsuccess = function (successcontent) {}; if (onprogress === undefined) onprogress = function (progresscontent) {}; if (onfailed === undefined) onfailed = function (failedcontent) {}; if (!EncodingClass.type.isFunction(onsuccess)) { console.error("invalid onsuccess function"); console.trace(); return; } if (!EncodingClass.type.isFunction(onprogress)) { console.error("invalid onprogress function"); console.trace(); return; } if (!EncodingClass.type.isFunction(onfailed)) { console.error("invalid onfailed function"); console.trace(); return; } var x = DOMElement.input({ attrs: { type: "file", onchange: function (connector, index, path, onsuccess, onprogress, onfailed) { return function (event, me) { var i, n = me.files.length; if (n == 0) return; for (i = 0; i < n; i++) { connector.upload({ index: index, path: path, filename: me.files[i].name, filehandle: me.files[i], onsuccess: onsuccess, onprogress: onprogress, onfailed: onfailed }); } } } (connector, index, path, onsuccess, onprogress, onfailed), multiple: true } }); document.body.appendChild(x); x.click(); document.body.removeChild(x); } } (core, local, retval); retval.delete = function (core, local) { return function (params) { var onsuccess = params.onsuccess, onfailed = params.onfailed; var i; if (params.index === undefined) { console.error("no index"); console.trace(); return; } if (params.path === undefined) { console.error("no path"); console.trace(); return; } if (!EncodingClass.type.isArray(params.path)) { console.error("invalid path type (must be array)"); console.trace(); return; } for (i = 0; i < params.path.length; i++) { if (!EncodingClass.type.isString(params.path[i])) { console.error("invalid path [" + i + "] type (must be string)"); console.trace(); return; } } if (params.files === undefined) { console.error("no filelist"); console.trace(); return; } if (!EncodingClass.type.isArray(params.files)) { console.error("invalid filelist type (must be array)"); console.trace(); return; } for (i = 0; i < params.files.length; i++) { if (!EncodingClass.type.isString(params.files[i])) { console.error("invalid filename(" + i + ") type (must be string)"); console.trace(); return; } } if (onsuccess !== undefined) { if (!EncodingClass.type.isFunction(onsuccess)) onsuccess = undefined; } if (onsuccess === undefined) { onsuccess = function () {}; } if (onfailed !== undefined) { if (!EncodingClass.type.isFunction(onfailed)) onfailed = undefined; } if (onfailed === undefined) { onfailed = function (content) {}; } core.delete(local, params.index, params.path, params.files, onsuccess, onfailed); } } (core, local); retval.mkdir = function (core, local) { return function (params) { var onsuccess = params.onsuccess, onfailed = params.onfailed; var i; if (params.index === undefined) { console.error("no index"); console.trace(); return; } if (params.path === undefined) { console.error("no path"); console.trace(); return; } if (!EncodingClass.type.isArray(params.path)) { console.error("invalid path type (must be array)"); console.trace(); return; } for (i = 0; i < params.path.length; i++) { if (!EncodingClass.type.isString(params.path[i])) { console.error("invalid path [" + i + "] type (must be string)"); console.trace(); return; } } if (params.foldername === undefined) { console.error("no foldername"); console.trace(); return; } if (!EncodingClass.type.isString(params.foldername)) { console.error("invalid foldername type (must be string)"); console.trace(); return; } if (onsuccess !== undefined) { if (!EncodingClass.type.isFunction(onsuccess)) onsuccess = undefined; } if (onsuccess === undefined) { onsuccess = function () {}; } if (onfailed !== undefined) { if (!EncodingClass.type.isFunction(onfailed)) onfailed = undefined; } if (onfailed === undefined) { onfailed = function (content) {}; } core.mkdir(local, params.index, params.path, params.foldername, onsuccess, onfailed); } } (core, local); retval.rmdir = function (core, local) { return function (params) { var onsuccess = params.onsuccess, onfailed = params.onfailed; var i; if (params.index === undefined) { console.error("no index"); console.trace(); return; } if (params.path === undefined) { console.error("no path"); console.trace(); return; } if (!EncodingClass.type.isArray(params.path)) { console.error("invalid path type (must be array)"); console.trace(); return; } for (i = 0; i < params.path.length; i++) { if (!EncodingClass.type.isString(params.path[i])) { console.error("invalid path [" + i + "] type (must be string)"); console.trace(); return; } } if (params.foldername === undefined) { console.error("no foldername"); console.trace(); return; } if (!EncodingClass.type.isString(params.foldername)) { console.error("invalid foldername type (must be string)"); console.trace(); return; } if (onsuccess !== undefined) { if (!EncodingClass.type.isFunction(onsuccess)) onsuccess = undefined; } if (onsuccess === undefined) { onsuccess = function () {}; } if (onfailed !== undefined) { if (!EncodingClass.type.isFunction(onfailed)) onfailed = undefined; } if (onfailed === undefined) { onfailed = function (content) {}; } core.rmdir(local, params.index, params.path, params.foldername, onsuccess, onfailed); } } (core, local); retval.logout = function (core, local) { return function (params) { var onsuccess = params.onsuccess, onfailed = params.onfailed; if (onsuccess === undefined) { onsuccess = function () {}; } if (!EncodingClass.type.isFunction(onsuccess)) { onsuccess = function () {}; } if (onfailed === undefined) { onfailed = function () {}; } if (!EncodingClass.type.isFunction(onfailed)) { onfailed = function () {}; } core.logout(local, onsuccess, onfailed); } } (core, local); if (params.mode == "inherit") { local.mode = "inherit"; } else if (params.mode == "token") { local.mode = "token"; } else { local.mode = "session"; } if (local.mode != "inherit") { retval.reconnect = function (local) { return function () { if (local.status == "disconnected") local.reconnect(); } } (local); } username = params.username; password = params.password; if (params.onsuccess !== undefined) { if (EncodingClass.type.isFunction(params.onsuccess)) local.onsuccess = params.onsuccess; } if (params.onfailed !== undefined) { if (EncodingClass.type.isFunction(params.onfailed)) local.onfailed = params.onfailed; } if ((local.mode != "inherit") && ((username === undefined) || (password === undefined))) { console.error("no username or password"); console.trace(); return undefined; } local.reconnect = function (core, local, username, password) { return function () { local.status = "connecting"; core.connect(local, username, password); } } (core, local, username, password); local.reconnect(); return retval; } } (tcore); return fconnect; } () });