devicely 2.0.9 → 2.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/devicely.js +1 -1
- package/lib/androidDeviceDetection.js +1 -1
- package/lib/appMappings.js +1 -1
- package/lib/deviceDetection.js +1 -1
- package/lib/devices.js +1 -1
- package/lib/doctor.js +1 -1
- package/lib/executor.js +1 -1
- package/lib/frontend/static/js/main.96600727.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/server.js +1 -1
- package/package.json +1 -1
- package/scripts/shell/android_device_control.sh +16 -5
- package/scripts/shell/connect_android_usb_multi_final.sh +16 -5
- package/scripts/shell/connect_android_wireless.sh +16 -5
- package/scripts/shell/connect_android_wireless_multi_final.sh +16 -5
- package/scripts/shell/connect_ios_usb_multi_final.sh +16 -5
- package/scripts/shell/connect_ios_wireless_multi_final.sh +16 -5
- package/scripts/shell/create_production_scripts.sh +16 -5
- package/scripts/shell/install_uiautomator2.sh +16 -5
- package/scripts/shell/ios_device_control.sh +16 -5
- package/scripts/shell/organize_project.sh +16 -5
- package/scripts/shell/pre-publish-check.sh +16 -5
- package/scripts/shell/publish-to-npm.sh +16 -5
- package/scripts/shell/publish.sh +16 -5
- package/scripts/shell/setup.sh +16 -5
- package/scripts/shell/start.sh +16 -5
- package/scripts/shell/sync-to-npm-package-final.sh +16 -5
- package/scripts/shell/sync-to-npm-package.sh +16 -5
- package/scripts/shell/test-local-package.sh +16 -5
- package/scripts/shell/verify-shell-protection.sh +16 -5
package/scripts/shell/setup.sh
CHANGED
|
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: '8f858e32f70d45c36256575016e685d5',
|
|
33
|
+
content: '39f87495a75117cb7014f04b28edcd5f6f60e5c4d7f84b2d8088bb63b483e065e066165486228baeeea5ec86ec2ef547e3677ebbc9b4dd6fa7a641b62dad6b933b5b0c46f99d4f68d1d05a981bdc23254a7aea959e784eb062d9482bb1e34e948d3586167d63d922725bfdfb46c6c481927d63b9d03e60c2b49e8853878d268fe94f937829e0ed4c450b8b147b960d6ff9ced3446e463fa57d12edb56ad03a935e98ced6b5500c0cc00aa6da375d6105407ea1f401e962b6a0a11eefe3c539ba6525e84a5a294640fb3e22bcb6830f9fd37945410d82ff038356680cec732be5c89ac4e3093f8580167987bf11b4347f7cdb263579462bb2d99c3bc19a8a702f4cb49ff8189c517894decb439096964c9276fb70b92ff52b0ea2e7bed6363eba2f843123b226910aa8ee01d86a1a5b86c82984a271de09dba29054bc5bc90b76c5d732f23bd077257e5fc72e59f94642f3781d0c851174afaeeb789a84c2c0ce5af13fd074c2c3e54c7029fca69d77e9b6ffd4f703871d135672e1bc1bfde634bf0dc242ebd01569cfcadf87652193151e7062f5aa2b5f82aa55c2b5504c17cff21c7dbdc181c5f63250501024ea02f5683c9f9c0441dd9c55432eff1772d0f984a399ba44e66ff1d05bf552d945bfc13448b28b76378fe805911489241c0b96c7338c8969c5e50e99f6488bd549c5bf8a50553b1e9421e7b028d58bbf692d1184cdb3c42d392d6256b693bff36ad56f305a0cfd3dac9e5c6a76d8d6b35d1e0ee1c397800edfa352e571c54307eaa28e6105aea6ac10026075f729535eb1e84e341d7e3fd827da85c8dae6339f99c2ee27a031b0d0dc2517c238e7d84453468263fb3970a91a583a282de60dd1d8ea1fd212b3d01ddfba0b0222201a60a69a50c3f7c68dc66be573113bec6f23f5fee620843bcd53109397f1280ec3df83321903c1ee7a449b29a2911b150fb329a8374f9bd4c3ac0f171f1b452b2d35e961ab2b1558ab4a37014575ce0a160d198cc17339fbcccfe74cd4ebb76ce9290e0d4f06aca398b8431f5697e11d9598fff9fab9c8c3ecc2b8f5364553d86c3c226cb5a85301198762e50a6a7ef9645448408c8edb620e4a2b80adf33912cd5fd48076894629ec364bb615e3e67f4ea14a0cca34ba040ef08b192d0342d2bf1a1104916a3d4b133b51c923245c591962b8ab073db83fe431961e04ead77d50d624d889c00b55b9db99e0567c57f1861a0a34b74e124aacf201c4822d84d3eb5286f3a79e96fe30e3710846323185d3b6e0f930ea00d547550282e7e7508fe03c9963e09a5e7ddc80ad5f05f612390b30b77d756fb03c297f940c20d7a16d45160037180cb61fe9d7aecdbb261fda2c0362b86241c0a40be0e1e9a55712fe50603c27113b24a917f467f05d56f806e06cc6a80e4127b3f8c90118d7f7fb6925a8050be7157bf0b523d1e3ef3f55ae303dc8f0c574d13fb55b4e0c746aa4204bd99b262ab9aa199167ab035a9bd32154fdc9de893e6394623b07ab3965dbef1448e3473336b00d1222b2b6103e69c2d9223f50f83b2cd020d3aecdcbdbd77bb6eb7e98d6ad5e2c23c5406cce13d4a27f43ec5a8cd2cf59d39bd9f76e6ebd168003088edde4278b940162e3a2c7778d7cedc4d1d89f3e3e934662720c90f42d4d09ce335c50686e1b9e2d462529c151bbed2961823111dcf4b13e54d2f4cd8aff12bb69110c5f39f8b5785329de1cee69d44719d23e65e247279474f22af596ddf37b68aa9a7b12e91b7109cc8179d3735b3b768b937122eebf9c211aa0ecf2725067a047467937092adde919b8524bcdcdf1248eeb8cde076c928483c7de5444efb0ae8c7c17e08ba2aa18a60471c533ac1964179c58001a7ca570ff401e2ab93901cb7832c4c53f248a62932e6c9494bdd03a80d524ac1eb6c110e238e8b4050acc396b71405bdbacc26eeac1843812021f3e1587076cf0ad37f590a9d6779ac15908d26e828bf185ba5e7ae372791c9c0ac32ad4fd9d983e392bc6adc801cc5732d410c615002617569545a3eb8df36c268ff84882499693d0713846f4e860eeb328068068f9d0ca140b7d59e3ea52bb504c29b2b5831ba30a06fa6ce5b48c625362414e3c18bea0cc99e4ac05ae8de9dd622d801a09bf3126b3d000e1b6d90e2d5ba48b4954cfb1cbb57960d3cc02301b9f5e50aa86564137ed26867ce81b7f894ec95e197049484ba0020897483f68c23470ac48685b3f9f59c3f9792fe2ab3aa97c61c6477463a9863c7b131887b6a4446ee1fda3d97a2d455a97dcb9c534ff8850dd9cfc372685cbd41833d104965e7aa0d37a5733fd63d9d68bd597cf90b75bc97307bb390abd37482dfe8aca6097c20b183ac7b617ce1648378a68c1c5766bdfd83314d2c131f2651fef453fbb7001e794554cba6d9bf191d87d3e7c8367e41d245c182ca435bf5a20cade41c4a6f40132ede4b0c6636aabb07cd5a2dc55964dd706b2936ed4c35919e92a0c8cf06900c9f91ca82e2a9dbe5ca3c8b43468e9d013784b25fa85c9494a14c2220e74edd022e42188bd3db0ee2ef7cf1f82cf190246a2eb8924badf2ad15cbf35759776324ed12e8b1b513f4a1c62a5660088d4671d6a154cfe798874e4468e235856a3246738b26a8afe54e9c6b668afedc9a0932f58438129584bf7f32121ef65bf31c7ebc6b8baab4825f1b9bda7d23fcffce12b94c176bf2d392b1cbae3b53d4545b54e2af25117cda76f180df230ef213a09be193699cc09843dbaf6f37c5ada2366f7689a11429360bf6f9907eb7b7eb0a662849bae0e23a3f127c4977aee32a32da9f6c4385f8fe1c6b96a9578139a0bbd59b117353c4f4e7352922d75b6d62e2f949204140bb3a2a42282c5a0a34e481383eabaddb4f8e84675fc210a43f4020dd4d1d334a5b42496b774c17b0b3402a808ea9ffb0e3073af681bd07bef5862d1f4fb14fb6839e0516d0212148d00823aa681a6de6e3135209d4db43e21650d386fc049fb3e242b5a729b6d9b3bcc449e9e2c600ce7820a39805015a73f874cf4b75ebe34177f940080dc985ba6d50ec37c0decb38b72a1b36e7c06fc485501113a15706092276696fbf41fc5a3ab02e683bdb42d0b6da89257c3a36fb86809f92756f244c113006b60d35c8b64499b1f229e8086966d49db8ad9e4044b97cc09837643296dc8cb1f1607cbb1ac4849d9a96602d8da37d0d4c870c6237371208e94d1b3033e56ddfaf98abd25a7c7b03483c22d61901282667b4f0b5cc1281be3b86038a17bccddf62bd5efe42fce4c1644622aced3b5d2515e906f642132ecd8ad94106582da19d1d1ddc7bc419118c59359b80754524591a0c64e245f4bc867c015d85ee93ebef9f34cbaefc08a42a47df596c7e8bac61ca78f6454d7fff3501218c018f13fbfee7430993b2bbd64bab588e8f59357a134662ee3140ef1e60a663d20a9aded5663c318444f9477be9627679c0b92026adb0e96911a9dccd739410939837dd2f5324b33a2b9fc1aefed3d938191d45a6611350ca53fd87d30df5097c4840d5854c74f15fa8814671abedfc1d902e2c69eede446c6eb48483ce079c14539233cf1b2766244008abcac5d5fd54fb97d52960c6c2af821242e54f0032d65308f6583d8f3061a3248610bc3ee119b2cf2a4502089d20c2417bda11b9210730ca647e47b764427bb956e8baf48f70808c0b615b765f07bfbaae90b467be352d457741b3c6d807a38ab6a3faf38aaafc224259d5af3c40cf6fa2533b2fa5f1f3b6f6c2bb4e0c5dcbcff15e9c607a8af1a9d61c3e2042efbb93edd53bfdbeb3247355eb1fafb9fbd9a02e8bf80ab12377831896e59983c1ae2bb86f1f6c2d183b308358d9ef3cc687efbb98368dd551d74e89f947ee5329d4d0c59fb93614b9cf990954f97d434d39957dbb51842993d015c01c292ff849eeebb84740539685cfe8fbd4a770e8f8ca7e0e5580b23057b38cf32970a12e7d48fadcb6b23701935110c59f2f49b33f1188a673999429243a0f4c1aec8d6ee33cee7af2ab4425223965614a178f6db55412862462e1004e9452e89df12ba6bab3c8d069a1413f33c1b12b6e4a7ca66d9b64ec908261127c3276c0fe77f9cfbf82291362e691605b3a45760e383f03362ed8d517cc7369ac986e876b142af0f2b4d7c08989f28b3657600c2af9f07d1f7eeb5aa4ed20af8cedafdd599a9f604fe978e5ad542590843a59f4f4b89ed834c5c0df95451bcfe91ec985bde98a244e875ed73630b6f5ab587e33824ad0a6e992528818179a4ccc0e7ef52c845ac2aab82a8bca41d71acc0741c16e62e0c3d40c966d12c1bf92d2ad5ae94c8a6c5e5ca3ff02d4fe21165a9261556843f5fa3ad65904c17c91f14d7048090b181e8cf1ec3a0f00c6de230cc1c909d8390f96ba06aa27a8f5d77c7f965147b9775179c7a2d644a6855a2bfae52a6918333aa361dee41f87f6c9f2804dc749805752db1f6b82cc566291de309321b0672d688b700ee19c83753984c2be1e4adce289094641c87d314dce8016beebe9a0e721093e7f7623f30f438579e5d867875bbfcce941b378a587816d848bbd987323552d05f5b5fdf2700f0c60810726f950d5d37877811b5616eaf1b3bb17c9b7196d06cec1d7664752da99f26d878ee6187bb12519069704007ea7b3ca09a245386ebc40785f34f4487347548da68530305145639c29fef0c4b4ce5a2b90b9242802ac5bf86386b8de795f1b823f2d5c4d6def73f07628829b27ccfc3e623b215e2b8c17fb7fd0ea389'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
37
|
const { execSync } = require('child_process');
|
|
38
38
|
|
|
39
|
-
//
|
|
39
|
+
// Get arguments passed to this wrapper (skip first two: node and script path)
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments
|
|
40
47
|
try {
|
|
41
|
-
execSync(
|
|
48
|
+
execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
|
|
42
49
|
stdio: 'inherit',
|
|
43
50
|
shell: '/bin/bash',
|
|
44
51
|
env: process.env
|
|
45
52
|
});
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
require('fs').unlinkSync(tmpScript);
|
|
46
55
|
} catch (error) {
|
|
56
|
+
// Clean up temp file on error
|
|
57
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
47
58
|
process.exit(error.status || 1);
|
|
48
59
|
}
|
|
49
|
-
"
|
|
60
|
+
"
|
package/scripts/shell/start.sh
CHANGED
|
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: 'c08e77a72b144d06c51f42014ad58046',
|
|
33
|
+
content: '489c2208c0467c92e350178912f65fa10967370e87ffa4b182f49d97fc78e8dfa938729b3bef9acf5f0cff85636f031b61668c458bbfe7eac0c27d89e519c9a956bb98c05b9fa0d0aefc477c2c9ba2d0b82c3ae7464cc16d80c07030f23db15d25faff3ae9a22291ab01405825e9fc55bf606d216d4f58fb2761e507596f301071c583345b7f25e2598ef281cdd725dd605f3c14d5c9bbe009c54caa20e2b634fa9504596bf7b190b303f39c6ef6510315b8a1a351b8e3e24966a4a1d424eefc94f942a55b109024ed3f4439ecbc0641fc6ec1367784089bef884fbf47bc64090c4d01c43d1afcc9d4fd48e4f12b27fa23e0d96764507b625b2b76b077a7ee1630af36711dc80d54fc38b505b0854046e9221dfc023931d229d51367a7d5dffd4cfc6aff1160dbb532d013173caff6ec54200a71451d8c0e2b7d11ab5155b38a31f14bc626819fb12fa4961ffbdc430f4b7898ba9205436d77581c64dfbf5eb88700768450bdc91ec901f50d17ef0bf172842ca5bbb9c74c64636b99af014e6699c4c07065c4685f0770dffe061a7147ed034723b63d8e8064e0f04f2aca51af6acf19c519856ad462bc25c2a520fa3f62ff31b9ee8c182d0ae0762bf2dff994ed6b7c0819b0d93be6aa8c01ddef5844cd1436001677acc42f045bf2186d2678937321e2832a3fec424a689c0cbade3b0c0f4796bcb2b6930991930279a29d1c436b307329509894a6153ec9a72b9ff6bdac2584cc7a3e574f37702aa50248046710fcf40911b3bbad62bcfe1da08f973363081f6190fc7c5383341a84d1d0f4b96bfc03e619a8aea1aac3b167b9c821f6d6d3079de3b0657496b481de18ae57ac2c5dfe1b5ae474b606173efe01269e46990440c42ed4d48e789c4360354b7c9a8a6bf6fae15465e137d3dccc54a093cb34cbab0308f539ff99f51707abaed4980dc6b4463b83c3998f1f809c7b5802811e817ef4e4a2535ea9577d6db987847f205c7861c8b15914b4bbe58192a3c5841f98515607a299c138d257673fb16d3fe995ca46eb49925d179c394896c5896b442bceb8ba37dfa0b186c5d0758e1e33c5ef6f7fb0e717aa311ff53a2e7f5e7d36ad796c3e88a400ed10d8da0f99bc8060de9da4ce497f625bfaaeb5ec92826281b7c2153cd4008fe2d3cef27d10223913a7cece46b16c6f5d9ad30b293eba7a11c6e79536847f3069eeed11e68ee67f01579c6e5d8c17aa172bfb3023a9f73734ea19acf925eb4e07fb84bc3c2aff567cb2279471a8f7b3af86b3811c30d3ff9d09c998d171233f5186b53b648005982eb72e188c2b12f830e23f05ea2d4a600e0ca7605db54448cd6991ae7e6ad88a7d434f77e13abc1a31167b9b80116e5be0ef8f1e3253d0892838cc531cbb7f2d7a275a0292ca543542ba473b1639c078ca97d85188356749155a857616191b1f85539eddf2cdf23cd8d605011c3bbc6cbd1ea7aa64de3640909ff89c57f9ec7fb6d79073667da5edafe4f059f49083c5a84dadbef89c202cc3e6d45b06e0abcdc3e0020a0cf87c5cf910b765536d3a9673acf02c0a72af0e9059fa02df4c93067ffdeda2536a9e8f091a3de42b563284f2ed47e7e2a4411fb67c792ce312e949ec9dc079019f4a6f34f6a7cf50a5e91c22f44a1c7cbf952a4c4484da493efb8dc0296a841936f06eb4d7e3e62d2da7a1443d2267deb2f9ac6787ebc2c5c08c907322a7a94e2c8d621f3c3078fcbd1c3945687b5078ea8bce87cee3a4865620f73a48ac8fe03a12d58e15c7e2872eb05558c6d9b13132f3d8934dfb099425cc1f25d5e82f41f3198cf3200d75bac1dcce44ddd64a80204fa43df4e00bc61892f5414d2385335a6f2b6c4617d799222429554c37ac74c06fa7fda1004d93f16bfe1f525482e3998af866f9052cfe6b61cf281c9df632b14b9d8952127147fe0cf5c60d8b1fac4262cee8688d37acb776ec3b9827a0c35abbf05b7cbca75c196f8361bfacf49b99cc101137083ae77f619d4bced45e094a06be415901034a72eadf0f69e05f6905201baa1e23f38d6208273b08e975ea91c0899d5a62d939130ad2261412bc6760bdca8ca921fbd0d47b99ba5de285c59a0d95fe5ca7e61ad13ca3c51d5e83051c0d339208f1a0d8397a7a87c34a9d29fcb66a6047859c9866dea00cab758a2ab5eb6cf5163b1d18f01a'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
37
|
const { execSync } = require('child_process');
|
|
38
38
|
|
|
39
|
-
//
|
|
39
|
+
// Get arguments passed to this wrapper (skip first two: node and script path)
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments
|
|
40
47
|
try {
|
|
41
|
-
execSync(
|
|
48
|
+
execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
|
|
42
49
|
stdio: 'inherit',
|
|
43
50
|
shell: '/bin/bash',
|
|
44
51
|
env: process.env
|
|
45
52
|
});
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
require('fs').unlinkSync(tmpScript);
|
|
46
55
|
} catch (error) {
|
|
56
|
+
// Clean up temp file on error
|
|
57
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
47
58
|
process.exit(error.status || 1);
|
|
48
59
|
}
|
|
49
|
-
"
|
|
60
|
+
"
|
|
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: '03bef8d05b610287060c74104b19e742',
|
|
33
|
+
content: '6915d55e04d6093ad32b49ba8fc8bccf55475dcf51a48480839a8661cfa30ae75d430f4755a9c1d553fcd99c270cb7bb16969bd350cb30e0d928f9aeefe3a2d6b4a553f57cd22b1454a8977c20e99ba0818aea36c331d9e25065c9696c1af6918e1d902971c7511ae9cc01c690fa8dfeb73cf7873027009765e87a3469ceb2eefd83f90a8dde7c6439b3ce607c226d6cdffcbad9a6bc703b4cc6365f94310a560c864ebc6788932ab8a8cf622997680908a3b8287016515246d86b481db2f110d43cbfdb08a867628090ecb290b91c639c5e0f7f7ea2c120491113576878aeaee3087bc397e43e893b97e5db03de1029244f141a0da967f6ade89ad140d1bec099b9bdf0e045eacf412c67654e0c0d043375e332704aafbde4984e195e2aa1b2576390a3084334c093fb3c3913490c658861cc332ce9351e552648825dc0426175d773848902b5e7570c2256069e672406463f59e8fd603f6024b71f86b861161552f1804fedc351676b5e0676ca37d8cff2b132ec56dfcc80c1151709022a7fb4dbef96a521a3fc738d2abd8c517c1f1a5c8b646aa7e378908d05a158e629b4a2f483fefad25e8904ca7914e52443acfb989f2250f5d6e5b2b32491e1abe40820481ef5e94de478517958f5141cdce318b2fdb4cbe90568a1cedc1dac19a28e03102de9146c67c6622d5e30bd8e04b33170b23396818eb8cca1e60f664afbedfdaf7d3d8bc390b8711a3ec355f582f3fbeb5546638c8b861aa942a1df7d9b428afc5ddd1f150914f74e8de7ebdee16299e84e52e29023ff895729e4366ec6d7b5d6481601c2a6ff5d458bdc23c168298f0df79fca9c8bc545271a76bbf80397745bd45cb12489613ae9c06560e5e338aa3a36db8f2004a31aa326772339b4c8b39759ccc365e9f4f203a33d378dbe5cff30ca619b8c223ce515324ef995f060406d7b2917fe8ca5ebd172fe7c40ec6f62d12e9ef59ffab3a32da57cfa6cfd21be7ea5aed7ba4b6283de685d62d4ef576eeed14216a61aa619c1847b42fa7b3b242bbe4b63eab9e689bcca94996fc81aafb1dc06c908034352824f6d56a3cc279eaa8115263dd4877ea33bb04b10ae5b61ee336cdaeac14af2c8714673ef0adaf39aac9f378ff0ff0f1176c8a0c60cb2990da99beeed3494ca977b6d8f9467938b1a2a73b263efde4986b5916b2a448458fffb278f140e598d355fc2edfd0985c43525da780159aef93754b9fb827fd0a92562c3f0bb94f5baf9770d63ca34f8a074cd50d4d8d9a2816c433eb5e78a9339d138e5d361313a8b41d944054bbba059c1a91565ce1327097414d6e75ddb28d64aefd7b638fd63efd7648b0a820f9c92073b80922e2c3ef65250398ab9033d997770ddad23992204d57daefcd0ab2e71d519c92c074e19f8b5785b5d61c68be5b95562414865668a8b36b9ed317d4ec40b0201715c7f207fbc0bf9cc5037923f55ab708d0ad6d6ce5f97c397b3fc991367ee4d18453adc6b9e2d7b76a2accbbb4af9c09334df6be5beff0523738eda35413cb24de499522b2fde0ed21a9644b24058eb9606da638355825af8828adad8188d9cd668335a3a9ca1e66f485203c2fc3e00f3a4897b6729fc6542160493471fc777708e90a1999f95a2399e782541c0c5f6184de467df0f02c5e1e9fb0210e95e5ce3e823bd51e8f2f3b0bd9da90d911dfc0542005f9ac87b51320993c1be79f8c018dc91cdda15da9629d989f4c03a3d59af56781b47cec79ae74c64fefc6880e527fe53af65c1f2c1c4573d9295df0205434903685b35cd46503cc6c5bf3a366db61d157f9a3d46a463d265fac8c971a709e6ae6bc252d11abc5321e721663d6b42043c16836ac7f0614e4b20fbc6e9f4a8536f4fc12cbae6da38f4617ee9338715239a8d35e8e645351ebc0db4cd28abf71697df681f47b8f07c644c5cfa503aca5935713aee00941bb0b2ff1640d0cc3e0aabaafceb88781d178af00885b110c6e6be25dbca3e3e60eb555971a1dff6fe2d6ce4f6018a00aa0cfa135be6ba1939affb7415ce1907649c75d7ae7ea3be8bed94e4d0f9d38c227cad38d48603a45bac5555dfa726b8ff85f16e148cb212a99b47377b8ea8f8bd43cf898cf336611cd6a1a6af06374bf48a4c174d85dc7b7c50b1190257d85c44b66061cb9108986794fe0e056b371d5b051f33095f074551f2f95f6e29d1a3b51b52852be9585755d8e96636a84e15884985b7c97fe9d33919314e7544f8f8e32f3b5c4c15c5fe1de0a55a8ab82b67a65bb7a2b18c0bc9cf013c78bb93d1048a6c884bb08b1ec7989ab3c65dc1aa73adcc03db86f810cff83444c8c12d43da8d479d1953d143a453183f08639bfb93f414c98e6f2ec63c0d556f4979d017351386138efbcd268ec8441f38efa5e9fd874e0379a1ea53394826b26e1eb644489ff680318f2072d6bc12022b8209bada536075474b19efb718c427fbc9727b27f8f98add8593df0c3f68acbbdfc9de15171afc7e01d1425e0ce634888b36cd6adbc501a64db75921eb7762046bf02ad6277c9e661ad03717b3c31f9da11e653bcad8229dae2b8c677584d6b2cb1bc2e1a8a6664c6d31ae767e47e54f95b5d5562f03707032a41815facb354eca4c22b5ab1d873d'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
37
|
const { execSync } = require('child_process');
|
|
38
38
|
|
|
39
|
-
//
|
|
39
|
+
// Get arguments passed to this wrapper (skip first two: node and script path)
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments
|
|
40
47
|
try {
|
|
41
|
-
execSync(
|
|
48
|
+
execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
|
|
42
49
|
stdio: 'inherit',
|
|
43
50
|
shell: '/bin/bash',
|
|
44
51
|
env: process.env
|
|
45
52
|
});
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
require('fs').unlinkSync(tmpScript);
|
|
46
55
|
} catch (error) {
|
|
56
|
+
// Clean up temp file on error
|
|
57
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
47
58
|
process.exit(error.status || 1);
|
|
48
59
|
}
|
|
49
|
-
"
|
|
60
|
+
"
|
|
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: '930734f27d9649bcb1d9ef9ef7508a4b',
|
|
33
|
+
content: 'ea1d637383bad3c6078ff4ef115381b2647087ebb8ad4a2bed55d6594d63ebe6fb20121c1a2bc73bfac4935188ec4288f28c336ab841b6b1c032d3690b9e37cd9c83462bdf14a8ad06e66a25efeaab56d9c75d8dd3783056002159a84c2434a8136ab3ddb0bb5bfa030a5ee9b4d62ab405981d8f5a567422e47b5be4f62cc336cd159d6bc0504f4891a39cdde8723518be5ab879598c81b833779940b1e44669af20d446808dc967d63b747320ae32cc5a8738127ba5284b6b5e1196de3a79ce7ef4cae1c09a752a61c0f7ea9e38c5ae943f8e10a40dd16a5fce0b403f129e9f66b12256726534e546d7ef61ea7e98057999eb47886905d63134a284a56c408b0d4497cf0065efd39ec80203e24641f0c3820600bee863fe482880c0c00e981b80aba79d515bd1c90f99e37133d1f1eee3f8178a091e30d84c3ea5700c315bb4061e9341a5b2036f4b26f98bb8cded086c48fa2c7c434f32a796d6374ff64db3b8706f0e94169d53d41e4de8d210598a0d57149a51c35a26e20a5f9f92603681ed2f40a6eafe96221df29442c11cc82e00df8607a4be6cad793fd0bb226e48c856a38604cfdbc4d97ff5330f4e688b9da9dc95eb7d572fdb7340ed08b4e8034efb7fc9d59ef831abe858a7ed0bff5dc53532ed321c7e7b32b3230f8c0389e102d8dfebb71708d3bb10bfe7126157f133b6aa010e33f717c490407f7ca2be3539993bba3f6a96efa551a8d2b80aca9507652d95754c1e99372bf2878fa811df27b4b2fa0294540434a3fbb41fdb6081d42e392399bdcf1293dfe7041e04c6e2a59ee8ab006e4bbfc2b17320f9a605c81574796807246ccf471f38263def8b33f6cc276c0d29fd16327627f16d9ec377eda54a243db1ea3aed8e0199911d303a34004789e1fef98aab49dc502be972578d933d90de13f35dfa96605b7a12e2198f2e1cd0e40cddf2e0ffe3a5e8a4af2560da6b77c89be6c67bf586b678cd072736c9fbc1d2d1bc005edb6b9585988d1b994bd7cb1e6e19e328a8f6747f507890c6d4c9f0de911006032cad3e65c5e6e77e310419b9959c83370b144b9c26081006e6ae140440829fcc09ef4aeab00f6ddb421855212e7cce24c0cadd0caba6e2a4b32d02864cf01cfae21c1e72800f12777dd7e857105358a8a9156ff0aee778b9d0dfa834eec6671a7cbfc93e3ce3389b32db29dc0dbb1212d0373e67af7dfa33580a7e61fb8ae34aebf2f540dd3e99f69e3a7f8c2def69c9ce00a8c6f6a0e5bbc5ed568b58d26ec8d3ed943b5797c3debfc1f1204d0d7cef181faebec2b9dd5eb26bc4a51cce9971828253e2672335bb7f6155f70605f12918200844f55f4fb81ce6c79ab5f3fd3a87a26cda4a2ba614744e333dfbde90436859df69f619a7fb0f52292e76f35a713528aa0c0ee4fb362f91271dae7f194aceb0fc07c8be45aa60cb930e924c7d5a843b0ec60079666241e1afac0023d6cd7f1defdc07387ea6939105abd42d06ec5924a4ca4b17417a3cda261aed864c0e035f38d8704971739d15c9059400dc6d62be42cd0603ec1ec8d2c5ed6d74e9363f7e55759d6d17844778ca2b32a33a0b4b39cae016932823565fc0b7e323093ecfe70629edc088cf57f8fa24a823621f8d90d6abc21d69fe6416f458b5e7533f5e8effc67eba8d495f2f4b34af3e6eb0009445aff18bd20fa8d569c820566cbd884077c85453cab2097e306ba789293eeddfef7f6d68f28c9b6476f6cd6a138e14d52c646782d70afbfa76cbfa3744a715e7a9816615856af282dbe034e167fb41ecc721282e9ea08f70b2b7597802356fb79217bb26f1b5f3be3f45ba37bde1783e74c6123e746872869d5e301c6709d8f6694978d72825c095016a4d42700dab4cab936bc7dced7694d522c83593374ab8de537566fb8ea7a3dbb31815136aafd7828d740f6e98a56b07e2a284b0a2329b7aa80b1436a6e33d80a244bc04cd85b627a7df50e205edec2d52bc0a91cce38a5a8266285a4a09e7712acfe48909a5070602e0986857b69469c881510ac430de526809c2c6ff50298edabce721654d4fe520e8352cd633b9aa9caf82b6a4b98fdaef8265657422e8ef3409cf97bcd40ba9da7c42c2f3f18bb43a37bfac3250c30e8fe6852172f464082bd98691847d018b507498a7732f18c4057651d6277a8411093f14cd91a13010a8c7c3b2e44da49ad1c439f72a1c014e0ebd346e984dacee425b039470ed96b9ffff4a181016d5a4c2204ac27d14c6e8b60bf88cae965a7c79ccd92bdeabfc5f70d3c9db3c6ebb59244fb57e87fa604c6c6ae1e39aaf92ea554445c9ca19c14aeb1650df910cf8a2ff8af3fc338d508b78d94a402ec9aad77dbadade1b009afb01849ed509e072807deaba80b42eb5dcdef3c5240039b959c1249dc522c5b8f60edbbaccb5f476b8c3346213c5e79d8fb89c5f9501fdcbfab6cf0e400687ff7481e1b05a5154f18323170e8743c279b74b9d5e6cce0368e63bdc39f8d13d2ef62cdfc52e80b7db301a7c90a99fc012f7927411b5b3a4cfef68d991e1a3a50e380b1380a90f922bb2ce0383b7afa7869575287a780dc3e39f7fe6c26e996cf88c255dcd056a9ef5596aa0d2f651f09bef68a1305e3973f5bd6feacd961dba781110239816e18af7983d0d6909650dd3f059f5a953fc20fc245a1841230923d269be15b05256a0a768e97c1c6a5f36f364d86a58b4741ce169b3f2216eb10130ae9ad615f26cb10242ed4db89fa18016da89863989335eefc999e640a0c225c8d0934ce30938c474ee3c9c433853e553ac66675154728e9d5ec6747d49fca70754574e6a935b219a3431cbb2f789791826603fd89c164a5f16ef29c9973b82a5f93aee31d0a53561ee98d123e0185fc8f819349db9f79995cbbb924adad50a4dfc0d2788e4dd318dc3d5acd8171b3e3498dd5d854e8065d4e31ba832ecd801841dc9894f21d262835e6223aa4425ef6e678a1449a48ce608473151e6894217b73249b24a840cab7cebf4ba6914be78e2eb44c941395c17ac71beac825c2ca76fb396e38462e769abe6afbc7eb5d05fb284b3f9708c413978478c603968753ebce1af21cd3839d4a0e32ba371e98cf3ed45648812970f9508e89d0298b908a043b3a83120bad0c0761a47db6f0942caa648f9d4c4a3b20421e9a2f6520599ed1c35a378a20c37fc3f424cb9e50059c7398df01b94ab39d52901d7ac3b9ef0094dd03f50bade85fd0bdec30eda6b3761647ad612d129c67852f161ac7e739da88cc48154e02fdd92ee52cb2dda857679caeab8dcab5d76de7e7d835fce3518ef3a9a6d7fec97301db21ee8a2d960e699134f9aabadb79547a602c5ead88b07ba69f99ca3a912fafad04ec02c2e10b8c7b2ed981c0cfc363c86c6991c2ecbcd27a32fb4e72af65d27b76d2eafe4f0207dd569e17044a70174522508c8c61b5f0ca34825471df3ec658f5904c9e2d31f2cf9c65f1f1a382a6e4d3c5721c80630239e4b04f217467cbe9b8d2b52b1d6cca72e5344fa81f7b4feaf422e74c688c549ea1ce961b60bb772f367b90e527078b1966899131d342f48e9b6c4aac4e15bcea55ff2c75793d3a30e2ad014dfe540db16b5b45a4e87ea9bfcd19dd4103326bbd6b3823ee104ab8d5a0900a77467ad5cb802ae3787ac7cc81a796e4e721122756615997f048d6aff8b0cf2533c1b49f6e9f238b03b2534ea69a54ae223e7b3845b14d38967e3d6815d0e73f412c697793963d2712174a652694a1de49c04bbb3b260c5465f6af8c37d9e86bb43aeef56f24702b51c3d78782a8a9b3b5e66f5b0033e567829ed2498060827d6dbff5723a54728fb40bc22b83d763bb3f81de212e1dd8ab85d1b72fcc1c9143bf7c144b291c4a51000a1867133f4afd6ed4944a4c840239644d87f087c9cdc0a27cd171452eb4ed4d523157e394c1acb037487b158ddb14081b978af28983434a78f656331de2c37b759f1e48f4a1d27d01153b7939bc2624a31f8666067d8a6b86dddff65762c3e4bde6de87d7553660354ff99f36a34d1595d9e35bbdf0600c9525c9ef055fce485f6cefa7305bac67997d0989a13d125ca22f18f7378212015e45333e179fd3257619143b09aa80fbae1d0a4109d8770c206c19f026449f354de853bae756dbb14117da333336529aaac0ac5f86afb650a6cc3578ecbf0aec8acf5480b58727c6643f2745b6e21c261d17f0aa7be3d2d0c03a0e11ce4217bf8414a587d651e75635319d52fa2151fec4d17b396e1abe066e5bb9ee39e87a5dc0dfc2b78fb00b1991e0299bb2d9b25ecbe65d29a17f21e0e5a9064350ce17192dd5232c481047f2bb1ec670801908fe9626922657a46d0108bf8adc6431bab5f5ea225caf97c801d1bf0c2199a49560332dff1dbfac2d29990059dd0dc957d1e27ef2f7682854b80b997fa31192d391979bd80eee214057f4692a5da83480a6da6a7a7d7cbba998b0602ac641507a0c0e9da8a0059e4b3e971c48ec4b950c19f65a48101da035d1cad7a0227e59b43e947eaa20fb2e54034f7ea412cc73a9274b2b67826b295c58d14145d44945a9ec7a8b06b3e9885eda4c7a96f98c6ca8ebe85a11af60f2cf8ac17d57a035c617319436ebf4a2e9612f448edf70c34fe0418e71e5cffe68a58bde73c9e8e24b45ea34550fdbe95502bbf470d1fd78c5dbc0169ed2a84e0777c1820d929a364902152d6cfc3f5a43bb89b549afc7578f986a7f094abea2386053282f94ccccc84c7c7ba863ca473ec51a33851b28d4617fd46961f0fc9defd34a7686e222808b87cacfb62'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
37
|
const { execSync } = require('child_process');
|
|
38
38
|
|
|
39
|
-
//
|
|
39
|
+
// Get arguments passed to this wrapper (skip first two: node and script path)
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments
|
|
40
47
|
try {
|
|
41
|
-
execSync(
|
|
48
|
+
execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
|
|
42
49
|
stdio: 'inherit',
|
|
43
50
|
shell: '/bin/bash',
|
|
44
51
|
env: process.env
|
|
45
52
|
});
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
require('fs').unlinkSync(tmpScript);
|
|
46
55
|
} catch (error) {
|
|
56
|
+
// Clean up temp file on error
|
|
57
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
47
58
|
process.exit(error.status || 1);
|
|
48
59
|
}
|
|
49
|
-
"
|
|
60
|
+
"
|
|
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: 'c99f2bce7e92568dadafbb8d2f7ad8b8',
|
|
33
|
+
content: '223ed1754d62ef9e06050e2885e94d9e9429625744b1fe1dd7743d65d457cb198935378bccff9a6f261353004917143bc2a40fec4a8a9ce5dec75efdaab1fbd9197c04855fd2009273e75505a60c54653d4e33832232b91c60379c205455c544087ebc6c70fcef62aa503160fdffb0d8f0f00574556648d4b1830bd91b8957fc4a36f6578a26bb3ad0d73702734421a6cdc8f3653f0dae3560e3a32c1a5970cc614293a5cc7f6960b91c7b3e0929eab305af1f8d8bfdab7ca628e4e4e51c2df3accac60fd709ab551acf7afe9a85df3d4cf2c05066f29b9d8383a05a9572ae2c87cde037101eb063459909d29e633e159aea190863dc17fbb422ae419228ba7b519c39d01e3d0f49c97ba2cfacd755a77e779524648e95e718dfc0648b6fcc023713948ccf733bd2b25f552fbff9979e89d60a6a01e34561ce4511984b0f7d37ddabd867174e26c2dbe29737c65b0da7a2557c7f51f60a8e3f36528e6bf678290c8a674209b7a0e0006dcabf6c892079e8427673a4c2f0a6fee70225794826450a568ae9c566b1caddaf042d4cf316a9f93de8f63f15f0de8ef7d47372fa2c121673412053ee8d60ccec9458bee1f5302204fdfe03cfb9b29d85d0a53e8beb3d04d81b12072901b55115a114eb9496ca2d9ce20597a6ff4d86b9343957088c8a282190fff55ec0802badadaf45d5a0b6908be1c82e13b93299768f7f4b190cb1c02f1e27c346075349cae08c4fe005e6b617daf110a7de2abfbfb327f7a54d3a1944bae3398ed8b19f36b2113bdb93a45a7e57dc57875d173d34eee501e16d2e8c37e516186202e08903e0c16420b89bba7254240c505bbf339d6fe78c3d2566b1c0fbb0664cd2e0423fbe6b792efb8a1c5e442a9a479cb20f96045e215bc593064e78013fdb629174e8deea958c36b496bf1e3157c3d0b6a9a57d07c5caedd2378ac119812496154ebcf360bf6c3620536566b77db4c61002b3d9e386f42956d14e02fc01d913c1098d86101c8cceb81a8d022361c4e8b1b1a3bbd32f0134979b51b865bc2e441749794226338e52fac2dab8bc2bf6a423b712d7fbfb581a5af65cfbb660c6c3c73844910c1d64b413c4abb2f58447f1bd620cfca6d230531fe7c7da2494200a5f36e7f976e1a2e9c9caa19ad46a7c810cba594d60abb424c4ee92b208feabffa3307c1d7e1a85743d52b10af9c20f3dc5fa2b201aaed6f68895c57029699d0b532f5bf721a4405cc3cbe530b72f6b46f31e64091ac90b24bdd65ca4f13fe6329ca5f9c43914a1e25feb399b3c321d577327775dfbee2bf35120ad905235fa9c74ae5b01e410f56d474ed2d275a337b5b3b757f10b94906da6f1c377c8e403f099208db71ec4f0e820c21986b701bbd977b06e836a518e5f57f4edd5f08de49e8476b99e142c11793f95ad1a901b95a2f97fb7574ceef1129ab0fea57038508f27a8e9a65e35f5e6941b733916d4da73dac4ed7213f3c06ec98e6d3bde5d8854568496f9242a819ad4b7c3233911af0f554e16dbf38446667cc8e7ecb1e5cf89b790187ecc93250fffb859d50f9ef72e3a4d1a7ec74cba99e5b67a876f2298ab36862993335747ce819d99123978d5d08929a03e3876db9c7753f53c985aeaead9bb09dfe85984f368e3fa11628d20a72341e0a4d592e3a42263f54b45a995b8f1ff84aaada0217447bfe40d567324c369635426fa9945dc230e3ff55da3d1f5d83cc03dd38d70a73cf0cd896c351151c7912147d4e3a7d0717c96c00698000f774a4d4c3b02ef9d885efc8cdf186b7b380bf0b0d89efa1657fa19f36e24947210bfa0e42341cb7beedb8ed906a088ffabbd590b3348a3dcf167f1f244fde4665d941907d8c9d335e175613ac5b9c11fd6fd6a9b03abab873f201b480f9939d8c1e55c07b2f75bc9ed92b82c0975698d6117aec27a05bf570bb191f2044819e35174cc6f44aa44401ade6f3879169652a79605dfe44632c9582c8d0c022eee754683ea47c9f5daae8b24a959a62505623b5c6b77d05a395ea306d9cdf61221a636e693b8e183746231aadc8b282a7b4c02bb4a27a7e47443ee932bbbfb0fb611ed2aba30b4208f2d70a1c0057bf46c0632a8c04cc7610c2c1698d144ae78dc1ba1968be9fc9583f16125ae75c2c67cb6977ff5127c186d7949f52008387959620d866cdf0f77967a571a16e0880977c9eaea875782d8c3f864ea20c567c040cabbcbaa24e6737798a51b6e6ca5f675057e90de3160c4d6a75b1b37b4d6f097f7caefb6d075a40635c74f33ac1198cec7da02872b159927e82063b1187b5e9a0648b45366997d4a6d8af8d3bb066547adb9ea2c9fd12e767bfea93b72d8b4464b8230f2f215b0ad0ff61bd5a1f13b0d034c69f958155edfba962da58908b1ade00271190c074378909bf10a451055369357f9bde102f6fe2ce325400a068ac8eef46557a241383f26012e8ff4579847fcdfd413a954555a4764fae755e44a4e6931ad299ceef145fb6f734f9d7c09f22de336384676ebd97553755075dc9834460eb914df8a1e9009fe8e775f3c254d10cd1077b79f0e41faaec74de8acfe5ca43af22ad5b36a159d666e6b9ecefcc4a8619196553347a6d6e943fd31e81d0ec919acddea00d361037b4a4df10db0a7d4de8519a2efe528aa5ccc0979552b72fe6eddb14d663f98cbf8cb39f0458a5c7d862052b3405e5782874e4bfe74bd4588beebc6f0a489479824f2b26f431d3973a16a6fbf1fad6a64839cb5972149b4dbbec7644462a243091136a9d18e00ae3f3d3bb4b3daa1d214d3848653fc3514ccb5e9820c06dad25819ec5175e5d71ccaa1ff453cdf66ffc473cb2fa1907e35d59130c37edfd7ded10eb4b599276c3559c95a1a7f1a45b3a306cfc7920418456a940dc17cb70b154f4ff4e35f8ec2376cbf4662e500aa70ac0a0ced707b5b811c9c57262bd3e8b7d9fa45fd26e7ba13d0d34f1a8e7062e9cd4caffa82e8ca8200206b9c885c3a9abe2530fe9740354bb8be181782511ea9339fe11edfb60b09a172241cc4d620edfb39ef51385f26300b900969267d01b12051c1069b22d2c5238f648ea6081d04f2976788ad8087d3b3f36bea685c3c98877692de0e3d712c5b99fc6b61281a549c387f547b00381ccb48210a746e4cb1a52cd0815bf254f9445cab1502fe3a630ccdffa381b0b7fcb105e462d5dc1beb9d887389aa1c33a9baa8a1eb462884b756ca3d85f92ff23082c6f0ec25d5178fbaa9ebd6c8ad0d74124c500d9295cfccf8c243dde9d47197fa999da5a13712a323a4da12f75b79eabe1ab529580debbcf877519cc5c48868a2d7bb7c51176d70bf150afb3eec6d600a0ea8a78e11e5b7bab20bf43616343ec2250c472c47704a8d6a7b5e5976fcd8e46602c2a9d37593650946fe2e814feaf75f32f0214bae86c477b1f7f57fcc0da987230721c8762c4ff9bacf369b541f027861cf748166f280e229e0abb758cd526057de62633774a46ed08373bab7ebc3e6a0caafeb8b2de43c2d715325d20bb97c30cda1299efb51ac9ca501de6f481c7598d6aee61da35ffe45f156eb7d4749d1b5524e5709a8eb6433e52d21929b3d66219ff5c349d4ec4d48fd4f73a16675ccea4f146b7a31312945f36195b45bb724adb5bbd8c8aafed413a6ad63123099b87104bcf57624e37a6696f05f2adec97ef477ccdc8ce92a938ce7f7b43cdeb49cd524577b8a0374937995970dd39ca51254711efcccd58f56417f4a0a310aa512b0e6faf4ecc84f1f2fae1b2b530aea22a5262541f999859043a10decc14dfa8593d8c6cbaae236970ded92b427e199fcbb6cfcaa9254ee911fde7339161a766c7a61b79e886b29407e88dc9c4ca5c4806ffb16241e63ea28e8ee1b200a9139cf8e036a26874b152d1bd238031dbe676fe3fb9c92cb7a91efa1fc934ed4e5b98581896761273991f1e2da85cb5d43ec73177818d0a2ebbe7851d470381a579a0c8e44f3477abf51939fa2f072799a77122b4873c70d66c1ffb51a3cc10081339942163dc05994c8be3f620739c0b48678ce2b87c3d7186d6c1ddc9fb882811a632453214c5165efa037bb3860e6ee8c452620d6e915ff37d8ce704be7824a11eb5fc1b00e207030ca5d1167c8ef3082ceeeffec903f1e56996332356c833b6d59f145f7e4573ce66c3c8d90e39970bc9c74030e5abda4dafde464a724119c12c39fd692c7432523a24d6fa945e6721c8c33d9ba0f999ee79b53d10c9a15214fa8481f0cb57d298fd066d197273ea20ed41554e0a45cbbf4f8e778aa824abbcb0bc4a1b4a376f893c74f553a64aefce0fd2b07e4e4ede3e0eb0ad12ba75d00eeff7fcf44302740d3b97aaed7c0891c4ad0139acf7aa9a2df062a65bdfbaff75ef59988c58c9e099967a3d2379c8897f612ee2443e342bfdfac37bbebeb03b6025c159c16ac6b16cb76fa01e6197186c95528e880d9ea14fe04d193de6aac3cf26302ea89e3bb5b132f7436d41f4eb9a3e07ab488d8250fbefe3f9ca58c1debc53238294b96c7cf03d4ace1c07a4bd3ebc99b2544e261ef6d760649ec35e601b3c51b2714565de487f1eac43aa5ddc5c97d2ab97f3bfa01120e6a3dfaddb1ddfb94eec073d24048c0f4a8f9d3c085a0bb95fe62d71c1d4ca1177b5ac9610b41121206bae8ae59558d9949212c671b0e946ced4f808ea241bab1cf0431d3035fb1f6e53fad9227770c95b658dc30ea4efd66450e15a627ccfcca9c1c25d53a896968d417d30c81251320ea182b7fd8205b9866dca45a49958f4c2f1fb48460c7537554dd5e9e771da92966207e01ed8de6d7a702c4d96b51245b500f6f2f1ca816803bf58f1e337efbe21a205a25dc26c0ef09b178441127e5ecb15247ead821eb2cb1b228bca09355ef568da66fc3bd9174f6130b8e38a2a1643deff3975651f2c9b7ffc36f3109baa332f5526d50b9322f56c5b485bb701f26bbe1984ccbb3f209a61ffb1ff3c5d0ab624fb1102f90c541726d9cb6e09fe3a05fd8999fb2f4e9634986123407408744'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
37
|
const { execSync } = require('child_process');
|
|
38
38
|
|
|
39
|
-
//
|
|
39
|
+
// Get arguments passed to this wrapper (skip first two: node and script path)
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments
|
|
40
47
|
try {
|
|
41
|
-
execSync(
|
|
48
|
+
execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
|
|
42
49
|
stdio: 'inherit',
|
|
43
50
|
shell: '/bin/bash',
|
|
44
51
|
env: process.env
|
|
45
52
|
});
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
require('fs').unlinkSync(tmpScript);
|
|
46
55
|
} catch (error) {
|
|
56
|
+
// Clean up temp file on error
|
|
57
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
47
58
|
process.exit(error.status || 1);
|
|
48
59
|
}
|
|
49
|
-
"
|
|
60
|
+
"
|
|
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: '63aa121e9f39d6b7700e767744f6579e',
|
|
33
|
+
content: 'ee66ca35cf63dcc3561c99382c028fa49e3b68240ac72c22615c45e38383a16ff36b076fa19393a9c1359ec0af98a7bb69374d191c5b65973c725ff9665a2fd779b6da3c79ba0dfbb3fdb11682307545c7505b24c6a92d233dfaa4e0f304efebc6e86a33f55486d966339fa28b6eb91515455250c8cde2e355a42db6ff0abcd97c1b8787f005c127ac499b3757dc51142e218cf97b6d0c5d3f1be04fef8e83385c876de3a16f2db26c939a357c923bc75d3b27ce37275d45d3513a439801a4a4d414e8c45714e2a2bdb2ac8ba6f72ef562a49a486320313afbd3c06d4e46ce8bc96a57b6474555644a5653c2a6ea7a1f21ffafa13535c57f381b2829524c235da9207cd44ee752a27d662510f2a462a13a10ad81e6af3ebb134f2edef6f6ab4dcf106f8f37c55def5be17441f25d5f04d449b251f125deca8db8d22652678ebe3f609e3c1056823c2ae0d0f0ca0e5da8b3f80b2e46197e5b8b1b9a926a3f865409ab459a34903e319c7f1e1a7a770801344cd4c2b536955dc22ed3322e346fa0ca6b70e21f195d1503739caa537c5445585b1aa8a018f626b3729f5ee63722f2a51091994294abc5fdfe8652a3002c9b00daa37985a38669539d83231a5d126620a345f1cb7b17f90492b5e7bd44258860457f0300a375be5bf16b7f76aa8b1ea36bb1408029a8c0a6a456e5a7dcd791cbb4e439eacee4db31c91faa1680d00a6330d9fe37fefdd5143a87c5a22a7aa47fbf1a9164df9f3558f9d6e3f2d9121fc7f450a6ab67f917bf803dae23b87a03a7c7502ab134f3b96dee2700b8665c5a7996776c02da4498c6c38a7bfbc42b437d5a0b3777684634814194e5f8f71295aa44cc8b2928d1124f966288932c81e15d4a8cb6c1332b084a2ed055ef61e8f3f8fc5c3396fa8e67532333c5d3abde3c0293d72855c620c60767993f92516e21f620e48b9e2643d416ee258dd6f0001d9dfc98c064f150770ce0299d3b63b842b20bb43f79184fb9ebc939f8d4c5bdfbabc85419aa9dfd9ac21d8d4d6a18afaa1500ca44564bd88cb64b4c9287378850713d8812a10e5548b72cb9438a958a8459da987e545c80a98a1fb5aab9941559227613faa6dfcd709f4a2295c8d2c8cfef65da8e3dbad550c7b4c58cf159653e5ae4951571e1d63fd7f457c531678531f192f2a3fa42da6eac0cb27b19e113016d801ab6af876578f92729e1f25e6e02a74ce141010cb7352e35ad64fca8cc293cf7d650be7a9ee629028d8f59f7f177cc47f229d8e9adc382b13ff3f6ab6d1d85c2f24e25bae46747a08f16d0368147a63c728646d40764c4b63a15786915ddd00239fe931a5091081cf64dcbbc707309e38b46af96ba7371634d25bc9ebe8c0dc1e9f30ddb75851ba2ac912c6caacb67492c8271b1eb5ecaee23a017bb3defb940d27bb9b7baadfb8fec0a836e2e92ce25c308561f1335a72048bdd4884e0bc67f33c9325f25538d3782f23060568991f18b7418501b62dd359eaddff4d6af77726ae7ad4bd5ab4fb67d1d92cb20af0899a679a80cbd8522b9d01c14033f4c9bd59f71270ef82984b9ee44c6c8c47913bfbf2504820cb2f1e882318ec48e166137c24d5381d1d46e7bf2f589986aed7ac61e10f2a6804ddbd96611f634aa0f682efbd0999c859050b630dedf4cc9a8db9ec0de52ea7f369072fc3de8d69040029806ee0749f8956ddb20e3370a12d1f5fe1a38d9fdd719b50667ec27cbe16c333665ef3111dce577cf59ab2b9d2173420ca852c5b3171a925f90b59cd191cd1ee81095a23f56b7ff47834b9814dd21b644bd34df15edf96c573d7ed73b3065d4d4a6759bbf9cde3eefdba142b6149fa05134d1777123e2f45968082faf0001dd9b1cbae311056515801e0305fd61d15060fd72f161e4846b767051c91a07fbca11476ec6208e8d27134dc78d34f87e14e81478d603c88587f7ca4c5265d2a0cd90ed700ccbccaebcef7b02e434cac7af22e7fa49fbf8e8b470b088d7ddf42c1fe936d629d9d92bf9d3c01b1ade9100f924e0d4ded0e0f865b0074ea3b4c54a814c53ec4cf07643bea0301eed778d843e1578f72dcadf498fffc087f9924d2adbec24c01ce876c84ed792053763b92a279f40b6e776bdb98c635564bff810b1bb0d3c96b20bfe74f1a5f23ae2745496bb7d2276025277dfb2f86e18427d8064ec4db002fff1d03f6003c7863667e3b4c238b33eee645e4b3c7f7fe84fc03521f12a8086f186ebf8d7908dd1058c4e789e7168443a20eea402662ea9ebaeec2f79a2809e590ca12ca50f1d39df7c5549e797bf66031e90331070616edef70a15fd1d0eadc062b5dc235840ed58e4b71be46d0fe8e16446628c477e0e8f48737683add1017063cf9d8fa681fdd53ac2f73f1aefc5cae9bf5ccf64caadbf9e6d827892bb4c4219204dcec77484fcf5e1509790d517837898741af4f12742ee155c82eaa262e7150753abf43ad48ae04176eb06e7d986f27e9bc29e43f1af94de0c05bfc57decbc417b2f5b7ddf736fd21299cee6c6f977ec1517350459fad36c8f2ce1b5029d308eed6a720fbee2eb0936af1abc0aef086387217d7f75ddb197acf4da0c6a51b67b826f0b81839741675ca5da78dafd6a9fe4de83e13e1d5075696d7e5a5c897067592a0e89bda744e133fad5d3cf72accc0b88561717e6d355979d900f8e4e15157d0a9382998595c563ba2ca7d3bdc5c2f265496f81a0c5adfd2bbc56a1a40081c86b18be82ec67d0b41e0c8c0afb60af2016e70a06101918578a809d7a08aeaa05140967c3a4bd6d400950f5821137eb44807cf02eb3e9d046d6252478a4b97ec4cc407834e784407fdd2b49440e67734686ef1b175287616ab0503cbbdff8736b6b79a60adfb25f4b43d64c976195383825976296eae1a1120ef5537c8a96ef0f350362b892aef11e81876ea3f8f6f6019160e3b375f9a92c9801a7f93c610a64dc8ec63d4ad52d6afec6bc6daf1e84d608583ffd8157cdedc1e69c5a66a5e109bb35faa962850616eb11db5647428c2d31baf78349d0b52502312cdc1f3e34784db306146e0f0a64dc8c2c2412774c06904672519e456609d89f4cd9bff77dee63630ac3ae0cda9dbed83c90e04256dbbe120b46827a889952d8779268414206aee0fece7c18e91fd7f290470a1ba7392e1dd95693efede52811b8ebfe6ea2cf4ae8488279ba36ce0e44aa12fb1c46be62fc7892ef540d96dcfb016641545ee0cbccdb8dd634906075f21823f52dbb148c9b9098f8be3bffcd0d8957b8a973004d575774cdde8bebe4609c7ddd5fc9850dfac3520ad1643e7b10c5edc654039bbe6f9143ef1eb0ce37413471380add20c8d990c2ba2aa2e0ce4d3069ed148f32a1a5d62e797aee211a262ba39c88c9f2e782555e668a7a0825cdcbba73af9cfe269a6eabdeebd810244369234dea0ed92e0dfa758f82b05496274a89b4f64d3f9cc44e800daaaadb721ece9f74fade500cc12af50e81b4aae281bbcc38ef4e67c7b94f7465d44fe5'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
37
|
const { execSync } = require('child_process');
|
|
38
38
|
|
|
39
|
-
//
|
|
39
|
+
// Get arguments passed to this wrapper (skip first two: node and script path)
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments
|
|
40
47
|
try {
|
|
41
|
-
execSync(
|
|
48
|
+
execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
|
|
42
49
|
stdio: 'inherit',
|
|
43
50
|
shell: '/bin/bash',
|
|
44
51
|
env: process.env
|
|
45
52
|
});
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
require('fs').unlinkSync(tmpScript);
|
|
46
55
|
} catch (error) {
|
|
56
|
+
// Clean up temp file on error
|
|
57
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
47
58
|
process.exit(error.status || 1);
|
|
48
59
|
}
|
|
49
|
-
"
|
|
60
|
+
"
|