![]() 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/keeview_app/html/ |
Upload File : |
'use strict' var FormClass = function () { var core = { apiqueue: [], apiThreadCount: 0 }; var retval = {}; retval.openUrlInNewTab = function (url) { // must exec in "onclick" event window.open(url, "_blank"); }; retval.form_post_newtab = function (me) { return function (url, params) { me.form_post(url, params, "_blank"); }; } (retval); retval.form_post = function (url, params, target) { var form = document.createElement("form"); if (params === undefined) { params = []; target = null; } else if (target === undefined) { target = null; } var hiddenField; var i; form.setAttribute("method", "post"); form.setAttribute("action", url); if (target != null) form.setAttribute("target", target); for (i = 0; i < params.length; i++) { hiddenField = document.createElement("input"); hiddenField.setAttribute("type", "hidden"); hiddenField.setAttribute("name", params[i][0]); hiddenField.setAttribute("value", params[i][1]); form.appendChild(hiddenField); } document.body.appendChild(form); form.submit(); }; retval.unpackString = function (params) { var xlen, hlen, data; if (params.offset === undefined) params.offset = 0; xlen = parseInt(param.text.substr(params.offset, 1), 16); params.offset += 1; hlen = parseInt(param.text.substr(params.offset, xlen), 16); params.offset += xlen; data = param.text.substr(params.offset, hlen); params.offset += hlen; return data; }; retval.parseArray_o = function (params) { var i, len, code, data; code = params.text.substr(params.offset, 1); params.offset += 1; if (code == "v") { return EncodingClass.utf8.decode(FormClass.unpackString(params)); } if (code == "a") { len = parseInt(FormClass.unpackString(params), 10); data = []; for (i = 0; i < len; i++) { data.push(FormClass.parseArray_o(params)); } return data; } return null; }; retval.parseArray = function (me) { return function (str) { return me.parseArray_o({text: str, offset: 0}); }; } (retval); retval.urlencode = function (str) { str = (str + ''); return encodeURIComponent(str) .replace(/!/g, '%21') .replace(/'/g, '%27') .replace(/\(/g, '%28') .replace(/\)/g, '%29') .replace(/\*/g, '%2A') .replace(/%20/g, '+'); }; retval.queue = function (n) { var r, i, x = []; for (i = 0; i < n; i++) x.push(null); r = { list: [], buffer: x, } r.call = function (r) { return function (tparams) { r.list.push(tparams); } }(r); r.release = function (r) { return function () { r.list = null; r.buffer = null; }; }(r); r.thread = function(r) { return function () { var i, j, c, x, t; if ((r.buffer != null) && (r.list != null)) { if (r.list.length > 0) { c = 0; for (i = 0; i < r.buffer.length; i++) { if (r.buffer[i] == null) { c = 1; break; } } if (c > 0) { for (i = 0; i < r.buffer.length; i++) { if (r.buffer[i] == null) { r.buffer[i] = r.list[0].func; r.list[0].func = function(i) { return function (success, message) { var t; if (r.buffer != null) { t = r.buffer[i]; r.buffer[i] = null; if (t != null) t(success, message); } } }(i); t = r.list.shift(); FormClass.api_call(t); if (r.list.length == 0) break; } } } } setTimeout(function() {r.thread();}, 10); } } } (r); setTimeout(function() {r.thread();}, 10); return r; }; retval.hook = function (me) { return function (func) { var i, n; if (me.hookList === undefined) me.hookList = []; if (!EncodingClass.type.isFunction(func)) return false; n = me.hookList.length; for (i = 0; i < n; i++) { if (me.hookList[i] === func) return; } me.hookList.push(func); } } (retval); core.responseFunc = function (func, event) { var i, n, p; var stacks; if (FormClass.hookList === undefined) n = 0; try { for (i = 0; i < n; i++) { p = FormClass.hookList[i](event); if (p === true) break; } if (event.cancel === true) return; p = (new Date()).getTime(); func(event.success, event.message); p = (new Date()).getTime() - p; if (p > 200) { console.log("api_call callbackfunc's time alert (" + p + ")", {func: func}); } } catch (e) { console.error(e); } } core.exec_apicall = function (calldata) { var st; var i, k; var boundary; var index, url, params, fileuploads, func; var lp; var x = { req: null, func: calldata.func }; calldata = EncodingClass.string.duplicateObject(calldata); params = calldata.params; if ((FormClass.prefix === undefined) || (calldata.url.indexOf("://") >= 0) || (calldata.url.substr(0, 1) == "/")) { url = calldata.url; } else if (EncodingClass.type.isString(FormClass.prefix)) { if (FormClass.prefix.length > 0) { lp = FormClass.prefix.substr(FormClass.prefix.length - 1, 1); if (lp == "/") { url = FormClass.prefix + calldata.url; } else { url = FormClass.prefix + "/" + calldata.url; } } else { url = calldata.url; } } else { url = calldata.url; } if (calldata.fileuploads !== undefined) { fileuploads = calldata.fileuploads; } else { fileuploads = []; } try { x.req = new XMLHttpRequest(); } catch (e) { try { x.req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { x.req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (oc) { alert("No AJAX Support"); return; } } } if (calldata.retry === undefined) calldata.retry = 3; if (!EncodingClass.type.isNumber(calldata.retry)) calldata.retry = 3; calldata.responseFunc = function (calldata) { return function (success, message) { Thread.setTimeout({ func: core.responseFunc, args: [calldata.func, { success: success, message: message, cancel: false }] }); } } (calldata); x.req.onreadystatechange = function (x, calldata) { return function () { var getraw = false; var i, n; if (calldata.rawcontent === true) getraw = true; if (x.req.readyState == 4) { if (x.req.status == 200) { if (!getraw) { calldata.responseFunc(true, x.req.responseText); } else { calldata.responseFunc(true, new Uint8Array(x.req.response)); } } else if ((x.req.status == 0) && (calldata.retry > 0)) { calldata.retry -= 1; console.log("network connection failed, retry (" + calldata.retry + ") in 2 secs"); Thread.setTimeout({ func: FormClass.api_call, args: [calldata], time: 2000 }); } else if (x.req.statusText != "") { calldata.responseFunc(false, "Response Code: " + x.req.status + " / " + x.req.statusText); } else { calldata.responseFunc(false, "Response Code: " + x.req.status); } } } } (x, calldata); if ((params.length > 0) || (fileuploads.length > 0)) { x.req.open("POST", url, true); if (calldata.nocache !== undefined) { if (calldata.nocache !== false) { x.req.setRequestHeader("Cache-Control", "no-cache, no-store, must-revalidate"); x.req.setRequestHeader("Pragma", "no-cache"); x.req.setRequestHeader("Expires", "0"); } } if (calldata.cors === true) { //x.req.setRequestHeader("Access-Control-Allow-Origin", "*"); } if (calldata.withCredentials === true) { x.req.withCredentials = true; } i = ((new Date()).getTime()); boundary = i + EncodingClass.md5.encode(i); x.req.setRequestHeader("Content-type", "multipart/form-data; boundary=" + boundary); st = ""; for (i = 0; i < params.length; i++) { st += "--" + boundary + "\r\n"; st += "Content-Disposition: form-data; "; st += "name=\"" + EncodingClass.utf8.encode(params[i].name) + "\"\r\n\r\n"; st += EncodingClass.utf8.encode(params[i].value) + "\r\n"; } for (i = 0; i < fileuploads.length; i++) { st += "--" + boundary + "\r\n"; st += "Content-Disposition: form-data; "; st += "name=\"" + EncodingClass.utf8.encode(fileuploads[i].name) + "\"; filename=\"" + EncodingClass.utf8.encode(fileuploads[i].filename) + "\"\r\n\r\n"; st += fileuploads[i].content + "\r\n"; } st += "--" + boundary + "--\r\n"; var nBytes = st.length, ui8Data = new Uint8Array(nBytes); for (var nIdx = 0; nIdx < nBytes; nIdx++) { ui8Data[nIdx] = st.charCodeAt(nIdx) & 0xff; } if (calldata.rawcontent === true) x.req.responseType = "arraybuffer"; x.req.send(ui8Data); } else { x.req.open("GET", url, true); if (calldata.nocache !== undefined) { if (calldata.nocache !== false) { x.req.setRequestHeader("Cache-Control", "no-cache, no-store, max-age=0"); x.req.setRequestHeader("Expires", "Tue, 01 Jan 1980 1:00:00 GMT"); x.req.setRequestHeader("Pragma", "no-cache"); } } if (calldata.cors === true) { //x.req.setRequestHeader("Access-Control-Allow-Origin", "*"); } if (calldata.withCredentials === true) { x.req.withCredentials = true; } if (calldata.rawcontent === true) x.req.responseType = "arraybuffer"; x.req.send(null); } }; retval.api_call = function (calldata) { var keys, ndata = {}; var i; keys = Object.keys(calldata); for (i = 0; i < keys.length; i++) { ndata[keys[i]] = calldata[keys[i]]; } core.apiqueue.push(ndata); } core.apiThread = function () { var instance; while ((core.apiqueue.length > 0) && (core.apiThreadCount < 6)) { instance = {}; instance.exec = function (me) { return function () { var data = core.apiqueue.shift(); data.func = function (me, oldfunc) { return function (success, message) { if (oldfunc !== undefined) { if (EncodingClass.type.isFunction(oldfunc)) { Thread.setTimeout({ func: oldfunc, args: [success, message] }); } } if (core.apiqueue.length > 0) { me.exec(); } else { core.apiThreadCount--; } } } (instance, data.func); core.exec_apicall(data); } } (instance); instance.exec(); core.apiThreadCount++; } Thread.setTimeout({ func: core.apiThread, time: 2 }); } Thread.setTimeout({func: core.apiThread}); core.unpackZipResponse = Thread.createWorkerPool({ extcode: EncodingClass.exportCode(), modules: { unpackSinglePart: function (message, start) { var status, slength, content, chksum, t; var i; if (message.length - start < 43) return {success: false, message: "invalid response"}; status = EncodingClass.string.fromUint8Array(message, start, 3); switch (status) { case "txt": case "bin": t = EncodingClass.base64.decode(EncodingClass.string.fromUint8Array(message, start + 3, 8)); slength = EncodingClass.number.fromString("i32", t); chksum = EncodingClass.string.fromUint8Array(message, start + slength + 11, 32); if (EncodingClass.md5.encode(message, start + 11, slength) != chksum) { return {success: false, message: "invalid checksum", value: EncodingClass.string.fromUint8Array(message, start)}; } content = EncodingClass.base64.decodeu8(message, start + 11, slength); transferList.push(content.buffer); return { success: true, type: status, value: content, offset: start + slength + 43 }; case "err": default: return {success: false, message: "invalid status (" + status + ")", value: EncodingClass.string.fromUint8Array(message, start)}; } }, unpackMultiplePart: function (message) { var offset, t, h, l, i, r = []; offset = 3; while (offset < message.length) { t = unpackSinglePart(message, offset); if (t.success) { r.push({type: t.type, content: t.value}); offset = t.offset; } else { transferList = []; return { success: false, message: t.message, value: EncodingClass.string.fromUint8Array(message, offset) }; } } return { success: true, value: r }; } }, func: function (params) { var t; transferList = []; if (EncodingClass.string.fromUint8Array(params.message, 0, 3) == "mtp") { t = unpackMultiplePart(params.message); if (t.success) return { type: "multiple", value: t.value }; } else { t = unpackSinglePart(params.message, 0); if (t.success) return { type: "single", type: t.type, value: t.value } } return t; } }); core.decodebin = Thread.createWorkerPool({ extcode: EncodingClass.exportCode(), func: function (params) { var content; if (params.ru8 === true) { content = EncodingClass.base64.decodeu8(params.content); transferList = [content.buffer]; } else { content = EncodingClass.base64.decode(params.content); } return content; } }); core.extractSinglePart = function (ru8, data, callbackfunc) { var func; if (ru8 === true) { func = ZipWorkerClass.extractu8; } else { func = ZipWorkerClass.extract; } func([{content: data}], function (retval) { var fname = Object.keys(retval)[0]; callbackfunc(retval[fname].content); }, [data.buffer]); } core.extractData = function (func, ru8, data) { var thost, i; if ((data.type == "bin") || (data.type == "txt") || (data.type == "err")) { core.extractSinglePart(ru8, data.value, function (retval) { var transferList = []; if (data.type == "bin") { if (ru8 === true) transferList = [retval.buffer]; core.decodebin.call({ params: { ru8: ru8, content: retval }, transferList: transferList, callbackfunc: function (retval) { Thread.setTimeout({ func: func, args: [true, retval] }); } }); return; } Thread.setTimeout({ func: func, args: [true, retval] }); }); } else { thost = { queue: [], finished: 0, total: data.value.length }; for (i = 0; i < data.value.length; i++) { thost.queue.push(null); core.extractSinglePart(ru8, data.value[i].content, function (index, type) { return function (retval) { var transferList = []; if (type != "bin") { thost.queue[index] = {success: true, content: retval}; thost.finished++; if (thost.finished == thost.total) { Thread.setTimeout({ func: func, args: [true, thost.queue] }); } return; } if (ru8 === true) transferList = [retval.buffer]; core.decodebin.call({ params: { ru8: ru8, content: retval }, transferList: transferList, callbackfunc: function (retval) { thost.queue[index] = {success: true, status: true, content: retval}; thost.finished++; if (thost.finished == thost.total) { Thread.setTimeout({ func: func, args: [true, thost.queue] }); } } }); } } (i, data.value[i].type)); } } } retval.zip_call = function (calldata) { var host = {func: calldata.func}; calldata = EncodingClass.string.duplicateObject(calldata); calldata.rawcontent = true; host.singleResponse = function (host) { return function (success, status, content) { host.func(success && status, content); } } (host); /* host.singlepart = function (host) { return function (message, start, callbackfunc) { var status, slength, content, chksum, t; var i; if (message.length < 43) { Thread.setTimeout({ func: callbackfunc, args: [false, false, { type: "run-time", message: "invalid response (" + message + ")" }] }); return message.length; } status = EncodingClass.string.fromUint8Array(message, start, 3); switch (status) { case "txt": case "bin": case "err": t = EncodingClass.base64.decode(EncodingClass.string.fromUint8Array(message, start + 3, 8)); slength = EncodingClass.number.fromString("i32", t); chksum = EncodingClass.string.fromUint8Array(message, start + slength + 11, 32); if (EncodingClass.md5.encode(message, start + 11, slength) != chksum) { Thread.setTimeout({ func: callbackfunc, args: [false, false, { type: "run-time", message: "invalid checksum (" + EncodingClass.string.fromUint8Array(message, start) + ")" }] }); return message.length; } content = EncodingClass.base64.decodeu8(message, start + 11, slength); host.extract(content, function (status, callbackfunc) { return function (content) { if (status == "bin") { if (calldata.ru8 === true) { content = EncodingClass.base64.decodeu8(content); } else { content = EncodingClass.base64.decode(content); } } Thread.setTimeout({ func: callbackfunc, args: [true, status != "err", content] }); } } (status, callbackfunc)); return start + slength + 43; default: Thread.setTimeout({ func: callbackfunc, args: [false, false, { type: "run-time", message: "invalid status (" + status + ")" }] }); return message.length; } } } (host); host.multiplepart = function (host) { return function () { var offset; host.finished = 0; host.success = true; offset = 3; while (offset < host.message.length) { offset = host.singlepart(host.message, offset, function (host, index) { return function (success, status, content) { if (!success) host.success = false; host.contents[index] = { status: status, content: content }; host.finished++; if (host.finished == host.contents.length) { delete host.message; Thread.setTimeout({ func: host.func, args: [host.success, host.contents] }); } } } (host, host.contents.length)); host.contents.push(null); } } } (host); */ calldata.func = function (host) { return function (success, message) { if (!success) { host.func( false, { type: "system", message: message } ); return; } if (message.length < 3) { host.func( false, { type: "run-time", message: message } ); return; } core.unpackZipResponse.call({ params: { message: message }, transferList: [message.buffer], callbackfunc: function (retval) { if (retval.success === false) { Thread.setTimeout({ func: host.func, args: [false, retval.message] }); return; } core.extractData(host.func, calldata.ru8 === true, retval); } }); } } (host); FormClass.api_call(calldata); }; retval.convertFileToFunctionString = function () { var x = DOMElement.input({ attrs: { type: "file", multiple: true } }); var convertfunc = function (flist, tf) { var i, n; if (flist.length == 0) return; var f = new FileReader(); var filehandle = flist.shift(); f.onload = function (flist, tf, filehandle) { return function (e) { var st; var i, k, n; n = e.target.result.length; st = "function () {\r\n"; st += "var s = \"\";\r\n"; for (i = 0; i < n; i = k) { k = i + 96; if (k > n) k = n; st += "s += \"" + EncodingClass.base64.encode(e.target.result.substr(i, k - i)) + "\";\r\n"; } st += "return EncodingClass.base64.decode(s);\r\n"; st += "}();"; FormClass.saveAsText(filehandle.name + ".txt", st); setTimeout(function (flist, tf) { return function () { tf(flist, tf); } } (flist, tf), 100); }; } (flist, tf, filehandle); f.readAsBinaryString(filehandle); } var submitbutton = DOMElement.input({ attrs: { type: "submit", value: "Convert", onclick: function (inputElement, func) { return function (event, me) { var i, n = inputElement.files.length; var flist = []; if (n == 0) return; for (i = 0; i < n; i++) { flist.push(inputElement.files[i]); } setTimeout(function (func, flist) { return function () {func(flist, func);} } (func, flist), 100); ModalElement.close(); } } (x, convertfunc) }, }); ModalElement.showWindow({ title: "convert file", bodycontent: DOMElement.table({ data: [[ x, {style: {width: "20px", height: "28px"}}, submitbutton ]] }) }); }; retval.raw2blob = function (content, contentType, filename) { if (contentType === undefined) contentType = "application/octet-binary"; if (!EncodingClass.type.isString(contentType)) contentType = "application/octet-binary"; var blob = new Blob(content, {type: contentType}); blob.lastModifiedDate = new Date(); blob.lastModified = blob.lastModifiedDate.getTime(); if (filename !== undefined) { if (EncodingClass.type.isString(filename)) { blob.name = filename; } } return blob; }; retval.rawText2blob = function (textcontent, contentType, filename) { var nBytes = textcontent.length; var x = new ArrayBuffer(nBytes); var ui8Data = new Uint8Array(x); for (var nIdx = 0; nIdx < nBytes; nIdx++) { ui8Data[nIdx] = textcontent.charCodeAt(nIdx) & 0xff; } return FormClass.raw2blob([new DataView(x)], contentType, filename); }; retval.text2blob = function (textcontent, filename) { return FormClass.rawText2blob(EncodingClass.utf8.encode(textcontent), "plain/text", filename); }; retval.saveAsRawText = function (filename, textcontent) { var nBytes = textcontent.length; var x = new ArrayBuffer(nBytes); var ui8Data = new Uint8Array(x); for (var nIdx = 0; nIdx < nBytes; nIdx++) { ui8Data[nIdx] = textcontent.charCodeAt(nIdx) & 0xff; } return FormClass.saveAsRaw(filename, [new DataView(x)]); }; retval.saveAsText = function (filename, textcontent) { return FormClass.saveAsRawText(filename, EncodingClass.utf8.encode(textcontent)); }; retval.saveAs = function (filename, content) { var nBytes = content.length; var x = new ArrayBuffer(nBytes); var ui8Data = new Uint8Array(x); for (var nIdx = 0; nIdx < nBytes; nIdx++) { ui8Data[nIdx] = content[nIdx] & 0xff; } return FormClass.saveAsRaw(filename, [new DataView(x)]); }; retval.saveAsRaw = function (filename, content) { var xurl = window.URL || window.webkitURL; if (xurl == null) return false; var blob = FormClass.raw2blob(content, "application/octet-binary", filename); var element = document.createElement('a'); if (element == null) return false; element.setAttribute('href', xurl.createObjectURL(blob)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); return true; }; retval.readFile = function (filehandle, callbackFunc) { var f = new FileReader(); f.onload = function (callbackFunc, filehandle) { return function (e) { callbackFunc([{ name: filehandle.name, type: filehandle.type, size: filehandle.size, lastModified: new Date(filehandle.lastModified), content: e.target.result }]); }; } (callbackFunc, filehandle); f.readAsBinaryString(filehandle); }; retval.readFileFromInput = function (inputElement, callbackFunc) { var rv, i, f; if (inputElement.files.length == 0) { callbackFunc([]); return; } if (inputElement.files.length == 1) { FormClass.readFile(inputElement.files[0], callbackFunc); } else { rv = []; for (i = 0; i < inputElement.files.length; i++) { rv.push(undefined); } for (i = 0; i < inputElement.files.length; i++) { FormClass.readFile(inputElement.files[i], function (rv, index, callbackFunc) { return function (retval) { var i; rv[index] = retval[0]; for (i = 0; i < rv.length; i++) { if (rv[i] === undefined) return; } callbackFunc(rv); } } (rv, i, callbackFunc)); } } }; retval.readSingleFile = function (callbackFunc, accept) { if (accept === undefined) accept = null; var fi = DOMElement.input({ attrs: { type: "file", style: {display: "none"}, accept: accept } }); var x = function (element, callbackFunc) { return function (retval) { DOMElement.bodyElement.removeChild(element); return callbackFunc(retval); } } (fi, callbackFunc); fi.onchange = function (callbackFunc) { return function (event) { FormClass.readFileFromInput(this, callbackFunc); } } (x); DOMElement.bodyElement.appendChild(fi); fi.click(); }; retval.readMultipleFiles = function (callbackFunc, accept) { if (accept === undefined) accept = null; var fi = DOMElement.input({ attrs: { type: "file", style: {display: "none"}, accept: accept, multiple: true } }); var x = function (element, callbackFunc) { return function (retval) { DOMElement.bodyElement.removeChild(element); return callbackFunc(retval); } } (fi, callbackFunc); fi.onchange = function (callbackFunc) { return function (event) { FormClass.readFileFromInput(this, callbackFunc); } } (x); DOMElement.bodyElement.appendChild(fi); fi.click(); }; retval.injectJS = function (iframeElement, content) { var iFrameHead = iframeElement.contentWindow.document.getElementsByTagName("head")[0]; var myscript = iframeElement.contentWindow.document.createElement("script"); //myscript.type = 'text/javascript'; //myscript.src = 'myscript.js'; // replace this with your SCRIPT myscript.append(content); iFrameHead.appendChild(myscript); }; return retval; } (); if (window.ModuleManagerClass !== undefined) { ModuleManagerClass.register({ name: "FormClass", prerequisites: ["EncodingClass"] }); }