From 6dd81f5a91dfeb6eaf16108fdd8bb917002306df Mon Sep 17 00:00:00 2001 From: kakwa Date: Wed, 8 Jul 2015 01:55:31 +0200 Subject: [PATCH] implementing various autofill javascript functions --- resources/static/js/lc-filler.js | 16 ++-- resources/static/js/md5.min.js | 1 + resources/static/js/sha1.js | 147 +++++++++++++++++++++++++++++++ resources/templates/base.tmpl | 1 + 4 files changed, 159 insertions(+), 6 deletions(-) create mode 100644 resources/static/js/md5.min.js create mode 100644 resources/static/js/sha1.js diff --git a/resources/static/js/lc-filler.js b/resources/static/js/lc-filler.js index 4f4eb0c..0170bac 100644 --- a/resources/static/js/lc-filler.js +++ b/resources/static/js/lc-filler.js @@ -8,7 +8,9 @@ */ function lcUid(firstname, lastname){ - return 'test'; + var ascii_firstname = removeDiacritics(firstname).toLowerCase().replace(/[^a-z]/g, ''); + var ascii_lastname = removeDiacritics(lastname).toLowerCase().replace(/[^a-z]/g, ''); + return ascii_firstname.charAt(0)+ascii_lastname.substring(0,7); } function lcDisplayName(firstname, lastname){ @@ -16,13 +18,15 @@ function lcDisplayName(firstname, lastname){ } function lcMail(firstname, lastname, domain){ - return 'test@test'; + return lcUid(firstname, lastname)+domain; } -function lcUidNumber(firstname, lastname){ - return 42; +function lcUidNumber(firstname, lastname, minuid, maxuid){ + var iminuid = parseInt(minuid); + var imaxuid = parseInt(maxuid); + return (parseInt('0x'+sha1(firstname+lastname)) % imaxuid) + iminuid; } -function lcHomeDir(firstname, lastname){ - return '/home/test'; +function lcHomeDir(firstname, lastname, basedir){ + return basedir+lcUid(firstname, lastname); } diff --git a/resources/static/js/md5.min.js b/resources/static/js/md5.min.js new file mode 100644 index 0000000..11b1545 --- /dev/null +++ b/resources/static/js/md5.min.js @@ -0,0 +1 @@ +!function(a){"use strict";function b(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function c(a,b){return a<>>32-b}function d(a,d,e,f,g,h){return b(c(b(b(d,a),b(f,h)),g),e)}function e(a,b,c,e,f,g,h){return d(b&c|~b&e,a,b,f,g,h)}function f(a,b,c,e,f,g,h){return d(b&e|c&~e,a,b,f,g,h)}function g(a,b,c,e,f,g,h){return d(b^c^e,a,b,f,g,h)}function h(a,b,c,e,f,g,h){return d(c^(b|~e),a,b,f,g,h)}function i(a,c){a[c>>5]|=128<>>9<<4)+14]=c;var d,i,j,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(d=0;d>5]>>>b%32&255);return c}function k(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=i(e,8*a.length)),c=0;16>c;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=i(f.concat(k(b)),512+8*b.length),j(i(g.concat(d),640))}function n(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function o(a){return unescape(encodeURIComponent(a))}function p(a){return l(o(a))}function q(a){return n(p(a))}function r(a,b){return m(o(a),o(b))}function s(a,b){return n(r(a,b))}function t(a,b,c){return b?c?r(b,a):s(b,a):c?p(a):q(a)}"function"==typeof define&&define.amd?define(function(){return t}):a.md5=t}(this); \ No newline at end of file diff --git a/resources/static/js/sha1.js b/resources/static/js/sha1.js new file mode 100644 index 0000000..b110c11 --- /dev/null +++ b/resources/static/js/sha1.js @@ -0,0 +1,147 @@ +function sha1(str) { + // discuss at: http://phpjs.org/functions/sha1/ + // original by: Webtoolkit.info (http://www.webtoolkit.info/) + // improved by: Michael White (http://getsprink.com) + // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // input by: Brett Zamir (http://brett-zamir.me) + // example 1: sha1('Kevin van Zonneveld'); + // returns 1: '54916d2e62f65b3afa6e192e6a601cdbe5cb5897' + + var rotate_left = function(n, s) { + var t4 = (n << s) | (n >>> (32 - s)); + return t4; + }; + + /*var lsb_hex = function (val) { + // Not in use; needed? + var str=""; + var i; + var vh; + var vl; + + for ( i=0; i<=6; i+=2 ) { + vh = (val>>>(i*4+4))&0x0f; + vl = (val>>>(i*4))&0x0f; + str += vh.toString(16) + vl.toString(16); + } + return str; + };*/ + + var cvt_hex = function(val) { + var str = ''; + var i; + var v; + + for (i = 7; i >= 0; i--) { + v = (val >>> (i * 4)) & 0x0f; + str += v.toString(16); + } + return str; + }; + + var blockstart; + var i, j; + var W = new Array(80); + var H0 = 0x67452301; + var H1 = 0xEFCDAB89; + var H2 = 0x98BADCFE; + var H3 = 0x10325476; + var H4 = 0xC3D2E1F0; + var A, B, C, D, E; + var temp; + + // utf8_encode + str = unescape(encodeURIComponent(str)); + var str_len = str.length; + + var word_array = []; + for (i = 0; i < str_len - 3; i += 4) { + j = str.charCodeAt(i) << 24 | str.charCodeAt(i + 1) << 16 | str.charCodeAt(i + 2) << 8 | str.charCodeAt(i + 3); + word_array.push(j); + } + + switch (str_len % 4) { + case 0: + i = 0x080000000; + break; + case 1: + i = str.charCodeAt(str_len - 1) << 24 | 0x0800000; + break; + case 2: + i = str.charCodeAt(str_len - 2) << 24 | str.charCodeAt(str_len - 1) << 16 | 0x08000; + break; + case 3: + i = str.charCodeAt(str_len - 3) << 24 | str.charCodeAt(str_len - 2) << 16 | str.charCodeAt(str_len - 1) << + 8 | 0x80; + break; + } + + word_array.push(i); + + while ((word_array.length % 16) != 14) { + word_array.push(0); + } + + word_array.push(str_len >>> 29); + word_array.push((str_len << 3) & 0x0ffffffff); + + for (blockstart = 0; blockstart < word_array.length; blockstart += 16) { + for (i = 0; i < 16; i++) { + W[i] = word_array[blockstart + i]; + } + for (i = 16; i <= 79; i++) { + W[i] = rotate_left(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1); + } + + A = H0; + B = H1; + C = H2; + D = H3; + E = H4; + + for (i = 0; i <= 19; i++) { + temp = (rotate_left(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5A827999) & 0x0ffffffff; + E = D; + D = C; + C = rotate_left(B, 30); + B = A; + A = temp; + } + + for (i = 20; i <= 39; i++) { + temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff; + E = D; + D = C; + C = rotate_left(B, 30); + B = A; + A = temp; + } + + for (i = 40; i <= 59; i++) { + temp = (rotate_left(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff; + E = D; + D = C; + C = rotate_left(B, 30); + B = A; + A = temp; + } + + for (i = 60; i <= 79; i++) { + temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff; + E = D; + D = C; + C = rotate_left(B, 30); + B = A; + A = temp; + } + + H0 = (H0 + A) & 0x0ffffffff; + H1 = (H1 + B) & 0x0ffffffff; + H2 = (H2 + C) & 0x0ffffffff; + H3 = (H3 + D) & 0x0ffffffff; + H4 = (H4 + E) & 0x0ffffffff; + } + + temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4); + return temp.toLowerCase(); +} diff --git a/resources/templates/base.tmpl b/resources/templates/base.tmpl index c138f16..8ce3bb4 100644 --- a/resources/templates/base.tmpl +++ b/resources/templates/base.tmpl @@ -41,6 +41,7 @@ +