Changeset 44354
- Timestamp:
- 12/20/2018 07:45:15 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Gruntfile.js
r44282 r44354 6 6 var path = require('path'), 7 7 fs = require( 'fs' ), 8 rot = require( 'rot' ); 9 esprima = require( 'esprima' ); 10 estraverse = require( 'estraverse' ); 11 escodegen = require( 'escodegen' ); 8 12 spawn = require( 'child_process' ).spawnSync, 9 13 SOURCE_DIR = 'src/', … … 681 685 '!wp-admin/js/farbtastic.js', 682 686 '!wp-includes/js/swfobject.js', 683 '!wp-includes/js/wp-embed.js' // We have extra options for this, see uglify:embed 687 '!wp-includes/js/wp-embed.js', // We have extra options for this, see uglify:embed 688 689 // .min files that still need to be minified. 690 'wp-includes/js/zxcvbn.min.js' 684 691 ] 685 692 }, … … 1069 1076 } 1070 1077 }, 1078 rot13: { 1079 zxcvbn: { 1080 src: './node_modules/zxcvbn/dist/zxcvbn.js', 1081 dest: 'build/wp-includes/js/zxcvbn.min.js' 1082 }, 1083 }, 1071 1084 _watch: { 1072 1085 options: { … … 1347 1360 'webpack:dev', 1348 1361 'copy:js', 1362 'rot13:zxcvbn', 1349 1363 'file_append', 1350 1364 'uglify:all', … … 1365 1379 'clean:all', 1366 1380 'copy:all', 1381 'rot13:zxcvbn', 1367 1382 'file_append', 1368 1383 'cssmin:core', … … 1437 1452 grunt.registerTask('default', ['build']); 1438 1453 1454 grunt.registerMultiTask('rot13', 'ROT-13 zxcvbn passwords for PG-ness.', function() { 1455 this.files.forEach(function(f) { 1456 // Build AST from source code 1457 var code = grunt.file.read(f.src); 1458 var ast = esprima.parse(code); 1459 1460 ast = estraverse.replace(ast, { 1461 enter: function(node) { 1462 // Filter string 1463 let key_names = [ 1464 'passwords', 1465 'english_wikipedia', 1466 'female_names', 1467 'surnames', 1468 'us_tv_and_film', 1469 'male_names' 1470 ]; 1471 1472 if( node.type === 'Property' && key_names.includes( node.key.name ) ) { 1473 // Wrap encrypted string with decrypt function. 1474 var value = { 1475 type: 'CallExpression', 1476 callee: { 1477 type: 'Identifier', 1478 name: 'rot' 1479 }, 1480 arguments: [{ 1481 type: 'Literal', 1482 value: rot(node.value.callee.object.value, 13), 1483 raw: rot(node.value.callee.object.raw, 13) 1484 }, { 1485 type: 'Literal', 1486 value: 13, 1487 raw: 13 1488 }] 1489 }; 1490 node.value = value; 1491 return node; 1492 } 1493 } 1494 }); 1495 1496 // ROT-13 decode function 1497 var prependCode = 'var lowercase="abcdefghijklmnopqrstuvwxyz",uppercase="ABCDEFGHIJKLMNOPQRSTUVWXYZ",regexLowercase=/[a-z]/,regexUppercase=/[A-Z]/,rot=function(e,r){if(null==r&&(r=13),r=Number(r),e=String(e),0==r)return e;0>r&&(r+=26);for(var a,c,t,s=e.length,p=-1,n="";++p<s;)a=e.charAt(p),regexLowercase.test(a)?(c=lowercase.indexOf(a),t=(c+r)%26,n+=lowercase.charAt(t)):regexUppercase.test(a)?(c=uppercase.indexOf(a),t=(c+r)%26,n+=uppercase.charAt(t)):n+=a;return n};\n'; 1498 1499 // Generate new file from modified AST 1500 var modifiedCode = prependCode + escodegen.generate(ast); 1501 grunt.file.write(f.dest, modifiedCode); 1502 1503 grunt.log.writeln('File "' + f.dest + '" encrypted.'); 1504 }); 1505 }); 1506 1439 1507 /* 1440 1508 * Automatically updates the `:dynamic` configurations -
trunk/package-lock.json
r44319 r44354 4429 4429 } 4430 4430 }, 4431 "deep-is": { 4432 "version": "0.1.3", 4433 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 4434 "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" 4435 }, 4431 4436 "deepmerge": { 4432 4437 "version": "1.5.2", … … 4989 4994 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 4990 4995 }, 4996 "escodegen": { 4997 "version": "1.10.0", 4998 "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz", 4999 "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==", 5000 "requires": { 5001 "esprima": "^3.1.3", 5002 "estraverse": "^4.2.0", 5003 "esutils": "^2.0.2", 5004 "optionator": "^0.8.1", 5005 "source-map": "~0.6.1" 5006 }, 5007 "dependencies": { 5008 "esprima": { 5009 "version": "3.1.3", 5010 "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", 5011 "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" 5012 }, 5013 "source-map": { 5014 "version": "0.6.1", 5015 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 5016 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 5017 "optional": true 5018 } 5019 } 5020 }, 4991 5021 "eslint-scope": { 4992 5022 "version": "4.0.0", … … 5000 5030 }, 5001 5031 "esprima": { 5002 "version": "1.0.4", 5003 "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", 5004 "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", 5005 "dev": true 5032 "version": "4.0.0", 5033 "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", 5034 "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" 5006 5035 }, 5007 5036 "esrecurse": { … … 5017 5046 "version": "4.2.0", 5018 5047 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 5019 "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 5020 "dev": true 5048 "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" 5021 5049 }, 5022 5050 "esutils": { … … 5384 5412 "dev": true 5385 5413 }, 5414 "fast-levenshtein": { 5415 "version": "2.0.6", 5416 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 5417 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" 5418 }, 5386 5419 "faye-websocket": { 5387 5420 "version": "0.10.0", … … 7080 7113 "requires": { 7081 7114 "esprima": "~1.0.0" 7115 }, 7116 "dependencies": { 7117 "esprima": { 7118 "version": "1.0.4", 7119 "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", 7120 "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", 7121 "dev": true 7122 } 7082 7123 } 7083 7124 }, … … 9275 9316 } 9276 9317 }, 9318 "levn": { 9319 "version": "0.3.0", 9320 "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 9321 "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 9322 "requires": { 9323 "prelude-ls": "~1.1.2", 9324 "type-check": "~0.3.2" 9325 } 9326 }, 9277 9327 "line-height": { 9278 9328 "version": "0.3.1", … … 11150 11200 } 11151 11201 }, 11202 "optionator": { 11203 "version": "0.8.2", 11204 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 11205 "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 11206 "requires": { 11207 "deep-is": "~0.1.3", 11208 "fast-levenshtein": "~2.0.4", 11209 "levn": "~0.3.0", 11210 "prelude-ls": "~1.1.2", 11211 "type-check": "~0.3.2", 11212 "wordwrap": "~1.0.0" 11213 }, 11214 "dependencies": { 11215 "wordwrap": { 11216 "version": "1.0.0", 11217 "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 11218 "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" 11219 } 11220 } 11221 }, 11152 11222 "optipng-bin": { 11153 11223 "version": "3.1.4", … … 12146 12216 } 12147 12217 } 12218 }, 12219 "prelude-ls": { 12220 "version": "1.1.2", 12221 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 12222 "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" 12148 12223 }, 12149 12224 "prepend-http": { … … 13243 13318 } 13244 13319 }, 13320 "rot": { 13321 "version": "0.1.0", 13322 "resolved": "https://registry.npmjs.org/rot/-/rot-0.1.0.tgz", 13323 "integrity": "sha1-rPQEhNIAhC6LxIRDgmFuSGNdSN4=" 13324 }, 13245 13325 "rtlcss": { 13246 13326 "version": "2.2.1", … … 15303 15383 "resolved": "https://registry.npmjs.org/twemoji/-/twemoji-11.0.0.tgz", 15304 15384 "integrity": "sha1-fuxX0Sv9H//o1efwXaC2QipgeQ8=" 15385 }, 15386 "type-check": { 15387 "version": "0.3.2", 15388 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 15389 "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 15390 "requires": { 15391 "prelude-ls": "~1.1.2" 15392 } 15305 15393 }, 15306 15394 "type-is": { … … 16786 16874 "readable-stream": "^2.0.0" 16787 16875 } 16876 }, 16877 "zxcvbn": { 16878 "version": "4.4.2", 16879 "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz", 16880 "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA=" 16788 16881 } 16789 16882 } -
trunk/package.json
r44319 r44354 95 95 "backbone": "1.3.3", 96 96 "element-closest": "^2.0.2", 97 "escodegen": "1.10.0", 98 "esprima": "4.0.0", 99 "estraverse": "4.2.0", 97 100 "formdata-polyfill": "^3.0.12", 98 101 "imagesloaded": "3.2.0", … … 108 111 "react": "^16.6.3", 109 112 "react-dom": "^16.6.3", 113 "rot": "0.1.0", 110 114 "twemoji": "11.0.0", 111 115 "underscore": "1.8.3", 116 "zxcvbn": "4.4.2", 112 117 "whatwg-fetch": "^3.0.0" 113 118 },
Note: See TracChangeset
for help on using the changeset viewer.