UNPKG

@naimi/alib

Version:
571 lines (504 loc) 17.9 kB
//!--- Ali --- get_fn = function(fn) { try { var fn_path = fn.split("/").slice(0, -1).join("/"); if (fn_path == "") fn_path = fn.split("\\").slice(0, -1).join("\\"); //split to array & remove last element if (fn_path == "") fn_path = ".\\"; if (jscript) { return { // example: c:\temp\naimi.txt f: fs.GetAbsolutePathName(fn), // c:\temp\naimi.txt // fn : fs.GetFile(fn), // DNW l3ch: fs.GetBaseName(fn).slice(-3), // imi n: fs.GetBaseName(fn), // naimi nx: fs.GetFileName(fn), // naimi.txt p: fn_path, // c:\temp // folder : fs.GetFolder(fn), // DNW pr: fs.GetParentFolderName(fn), // c:\temp pn: fs.GetParentFolderName(fn) + "\\" + fs.GetBaseName(fn), // c:\temp\naimi x: fs.GetExtensionName(fn) // txt }; } else { path=require('path'); return { n: (fn.split('\\').pop().split('/').pop().split('.'))[0], p: path.dirname(fn) } } } catch (e) { console.log("ERROR " + e.number + ": " + e.description + " - processing file/folder names (" + fn + ")\n"); return -1; } } //!--- make a copy of an object read_json = function(file_name) { console.log("read_json"); try { console.log(file_name); if (typeof js_engine != 'undefined') //! if (js_engine) //js_engine = 0: node, 1: JScript str = fs.OpenTextFile(file_name, 1).ReadAll(); else str = require('fs').readFileSync(file_name, 'utf8'); return JSON.parse(str); } catch (e) { console.log("ERROR " + e.number + ": " + e.description + " - while loading alib.jse (" + file_name + ")\n"); return -1; } } //!--- make a copy of an object clone_obj = function(obj) { return JSON.parse(JSON.stringify(obj)); } //!--- remove all functions, properties, arrays, ... clean_obj = function(obj_ref) { var obj = JSON.parse(JSON.stringify(obj_ref)); for (var prop in obj) { //! remove arrays if (Array.isArray(obj[prop])) { delete(obj[prop]) } if (typeof(obj[prop] != "string")) { delete(obj[prop]) } typeof(obj[prop] != "string") } } GetCurrentDate = function() { var dt = new Date(); return "Now: " + format_dt(dt); } getFileDate = function(file_name) { var f = fs.GetFile(file_name); var dt = new Date(f.DateLastModified); return (file_name + " was last modified on: " + format_dt(dt)); } jalali = function(dt) { // var dt = (item.imgDate.getFullYear() < 1900) ? item.modifiedDate : item.imgDate; var dt_g = dt.getFullYear() + "-" + ("0" + (dt.getMonth() + 1)).slice(-2) + "-" + ("0" + dt.getDate()).slice(-2); dt_g = dt_g + " " + ("0" + dt.getHours()).slice(-2) + "-" + ("0" + dt.getMinutes()).slice(-2) + "-" + ("0" + dt.getSeconds()).slice(-2); //var alreadyRenYr = parseInt(item.name.substr(0, 4)); //var alreadyRen = (alreadyRenYr > 1950 & alreadyRenYr < 2300); //! Jalali Cal var gy = dt.getFullYear(); var gm = dt.getMonth() + 1; var gd = dt.getDate(); var g_d_m, jy, jm, jd, gy2, days; var g_d_m = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; var jy, jm, jd = 0; if (gy > 1600) { jy = 979; gy -= 1600; } else { jy = 0; gy -= 621; } var gy2 = (gm > 2) ? (gy + 1) : gy; var days = (365 * gy) + (parseInt((gy2 + 3) / 4)) - (parseInt((gy2 + 99) / 100)) + (parseInt((gy2 + 399) / 400)) - 80 + gd + g_d_m[gm - 1]; jy += 33 * (parseInt(days / 12053)); days %= 12053; jy += 4 * (parseInt(days / 1461)); days %= 1461; if (days > 365) { jy += parseInt((days - 1) / 365); days = (days - 1) % 365; } jm = (days < 186) ? 1 + parseInt(days / 31) : 7 + parseInt((days - 186) / 30); jd = 1 + ((days < 186) ? (days % 31) : ((days - 186) % 30)); var dt_j = jy + "-" + ("0" + (jm + 1)).slice(-2) + "-" + ("0" + (jd + 1)).slice(-2); //! Combine Stuff: //var oldNameStuff = alreadyRen ? item.name.substr(33, 400) : item.name; var str = dt_g + " (" + dt_j + ")"; //str += " " + oldNameStuff ; return str; } Date.prototype.dt = function() { yyyy = this.getFullYear(); mm = this.getMonth() + 1; //! getMonth() is zero-based mm = (mm > 9 ? '' : '0') + mm; dd = this.getDate(); dd = (dd > 9 ? '' : '0') + dd; d = new Date(); hh = addZero(d.getHours()); mn = addZero(d.getMinutes()); ss = addZero(d.getSeconds()); return yyyy + "-" + mm + "-" + dd + "_" + hh + mn + ss; }; Date.prototype.yyyymmdd = function() { yyyy = this.getFullYear(); mm = this.getMonth() + 1; //! getMonth() is zero-based mm = (mm > 9 ? '' : '0') + mm; dd = this.getDate(); dd = (dd > 9 ? '' : '0') + dd; d = new Date(); hh = addZero(d.getHours()); mn = addZero(d.getMinutes()); ss = addZero(d.getSeconds()); return yyyy + mm + dd; }; format_dt = function(dt) { dt_formatted_old = dt.getFullYear() + "-" + ("0" + (dt.getMonth() + 1)).slice(-2) + "-" + ("0" + dt.getDate()).slice(-2) + " " + ("0" + dt.getHours()).slice(-2) + "-" + ("0" + dt.getMinutes()).slice(-2) + "-" + ("0" + dt.getSeconds()).slice(-2); dt_formatted = dt.getFullYear() + "-" + ("0" + (dt.getMonth() + 1)).slice(-2) + "-" + ("0" + dt.getDate()).slice(-2) + "_" + ("0" + dt.getHours()).slice(-2) + "" + ("0" + dt.getMinutes()).slice(-2) + "" + ("0" + dt.getSeconds()).slice(-2); return dt_formatted; } simpleCrypto = { _charset: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789%", rotateKey: function(s, amt) { amt = amt % s.length; if (amt < 0) { amt = s.length + amt; } if (amt != 0) { return s.substr(s.length - amt, amt) + s.substr(0, s.length - amt); } else { return unescape(s); } }, generateKey: function() { var str = ""; var tar; tar = new Array(); for (var c = 0; c < this._charset.length; c++) { tar.push(this._charset.substr(c, 1)); } for (var c = 0; c < this._charset.length; c++) { str += tar.splice(Math.round(Math.random() * (tar.length - 1)), 1); } return str; }, encrypt: function(v, _key) { var str = ""; var key = _key; if (_key.length > 0 && v.length > 0) { //v = Server.URLEncode(v); for (var c = 0; c < v.length; c++) { var ch = this._charset.indexOf(v.substr(c, 1)); if (ch > -1) { str += key.substr(ch, 1); key = this.rotateKey(key, v.charCodeAt(c)); } } return str; } else { return ""; } }, decrypt: function(v, _key) { var str = ""; var key = this._charset; if (_key.length > 0 && v.length > 0) { for (var c = 0; c < v.length; c++) { var ch = _key.indexOf(v.substr(c, 1)); if (ch > -1) { str += key.substr(ch, 1); key = this.rotateKey(key, -key.charCodeAt(ch)); } } return str; } else { return ""; } } } Base64 = { // private property _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", // public method for encoding encode: function(input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = Base64._utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); } return output; }, // public method for decoding decode: function(input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } output = Base64._utf8_decode(output); return output; }, // private method for UTF-8 encoding _utf8_encode: function(string) { string = string.replace(/\r\n/g, "\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if ((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }, // private method for UTF-8 decoding _utf8_decode: function(utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while (i < utftext.length) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if ((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i + 1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i + 1); c3 = utftext.charCodeAt(i + 2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } } MD5 = function(string) { function RotateLeft(lValue, iShiftBits) { return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)); } function AddUnsigned(lX, lY) { var lX4, lY4, lX8, lY8, lResult; lX8 = (lX & 0x80000000); lY8 = (lY & 0x80000000); lX4 = (lX & 0x40000000); lY4 = (lY & 0x40000000); lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF); if (lX4 & lY4) { return (lResult ^ 0x80000000 ^ lX8 ^ lY8); } if (lX4 | lY4) { if (lResult & 0x40000000) { return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); } else { return (lResult ^ 0x40000000 ^ lX8 ^ lY8); } } else { return (lResult ^ lX8 ^ lY8); } } function F(x, y, z) { return (x & y) | ((~x) & z); } function G(x, y, z) { return (x & z) | (y & (~z)); } function H(x, y, z) { return (x ^ y ^ z); } function I(x, y, z) { return (y ^ (x | (~z))); } function FF(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; function GG(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; function HH(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; function II(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; function ConvertToWordArray(string) { var lWordCount; var lMessageLength = string.length; var lNumberOfWords_temp1 = lMessageLength + 8; var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64; var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16; var lWordArray = Array(lNumberOfWords - 1); var lBytePosition = 0; var lByteCount = 0; while (lByteCount < lMessageLength) { lWordCount = (lByteCount - (lByteCount % 4)) / 4; lBytePosition = (lByteCount % 4) * 8; lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition)); lByteCount++; } lWordCount = (lByteCount - (lByteCount % 4)) / 4; lBytePosition = (lByteCount % 4) * 8; lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition); lWordArray[lNumberOfWords - 2] = lMessageLength << 3; lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29; return lWordArray; }; function WordToHex(lValue) { var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount; for (lCount = 0; lCount <= 3; lCount++) { lByte = (lValue >>> (lCount * 8)) & 255; WordToHexValue_temp = "0" + lByte.toString(16); WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2); } return WordToHexValue; }; function Utf8Encode(string) { string = string.replace(/\r\n/g, "\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if ((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }; var x = Array(); var k, AA, BB, CC, DD, a, b, c, d; var S11 = 7, S12 = 12, S13 = 17, S14 = 22; var S21 = 5, S22 = 9, S23 = 14, S24 = 20; var S31 = 4, S32 = 11, S33 = 16, S34 = 23; var S41 = 6, S42 = 10, S43 = 15, S44 = 21; string = Utf8Encode(string); x = ConvertToWordArray(string); a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; for (k = 0; k < x.length; k += 16) { AA = a; BB = b; CC = c; DD = d; a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478); d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756); c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB); b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE); a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF); d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A); c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613); b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501); a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8); d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF); c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1); b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE); a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122); d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193); c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E); b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821); a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562); d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340); c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51); b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA); a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D); d = GG(d, a, b, c, x[k + 10], S22, 0x2441453); c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681); b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8); a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6); d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6); c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87); b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED); a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905); d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8); c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9); b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A); a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942); d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681); c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122); b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C); a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44); d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9); c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60); b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70); a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6); d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA); c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085); b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05); a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039); d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5); c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8); b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665); a = II(a, b, c, d, x[k + 0], S41, 0xF4292244); d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97); c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7); b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039); a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3); d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92); c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D); b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1); a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F); d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0); c = II(c, d, a, b, x[k + 6], S43, 0xA3014314); b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1); a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82); d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235); c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB); b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391); a = AddUnsigned(a, AA); b = AddUnsigned(b, BB); c = AddUnsigned(c, CC); d = AddUnsigned(d, DD); } var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d); return temp.toLowerCase(); }