diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 7b03794..8618dce 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2404,13 +2404,13 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) #endif -#ifdef _FREEBSD - // Helper to locate installed libraries. Currently only supports FreeBSD - duk_peval_string_noresult(ctx, "addCompressedModule('lib-finder', Buffer.from('eJytVVFv2zYQfrYA/YebUIBSq8px3pbAA7w0xYwGDhCnCwrbGGiJtonIpEZSdoIk/30fJc1w0m4vmx9M83j33Xd3H+n++zC40NWjkeuNo9OTwc80Vk6UdKFNpQ13UqswCIMrmQtlRUG1KoQhtxE0qniOpTtJ6XdhLLzpNDuh2DtE3VGUnIfBo65pyx9JaUe1FUCQllayFCQeclE5kopyva1KyVUuaC/dpsnSYWRh8K1D0EvH4czhXmG3OnYj7jxbwmfjXHXW7+/3+4w3TDNt1v2y9bP9q/HF5WR6+RFsfcRXVQpryYg/a2lQ5vKReAUyOV+CYsn3pA3xtRE4c9qT3RvppFqnZPXK7bkRYVBI64xc1u5Vn/6mhnqPHdAprigaTWk8jejX0XQ8TcPgbnz72/XXW7ob3dyMJrfjyyld39DF9eTT+HZ8PcHuM40m3+jLePIpJYEuIYt4qIxnD4rSd1AUaNdUiFfpV7qlYyuRy5XMUZRa13wtaK13wijUQpUwW2n9FC3IFWFQyq10jQjs9xUhyfu+b96qVrn3wTxVESu+FUkYPIVBz2KM+SaujM7BL6tK7kBji9OeP+7lHMTYCl1d2oKdeVNvxw3G4GhIs8X5wZJvZFnA1g0oZo3hjw6ZJZl4EPlnyClm/aVUfbthKc0YlkXSojQBmXWFrh0WAzDGfnCkVcwK7jjiD3XFeUJPjWSbyA9DyjOnp5ilWsfJOb28zSFV5vUh4qi6X0MtK00RfSDfGiwRPRNg2HyumP9+ZjDw/T0xZOFDixG6+N1JSi6leTTdcK/IK7m0hHp3shDF2RyXiuQq5sPhqefWxrjZ6SKlUi59XOtTgaPzptlgAaL0wg7Jn1lHoUv+5AG75IMUrbYeJrMaQL8MfJYW7N2gBZor8SDdXEWvqt9z6S5hj5Pzo3latPvtBDL0bxsnWZsScKwLgUZiHyb9PUNs0lgbxfR64PgTbDO5AAY3zt7hEsRdZxnYssRTzbXC9awFqLZxHnAHFk/e9YxaiJc2Ye+/y+vf9PX/CewHCmMHhX0sIaCDyPxY8V5VjW2XHVn9sOfsSGkYttP3KUX9TlXYzfhiOIxex0bfaWB+EAF7zfCtCnq7rNR585L8sxI6V9z+rKrtJt51lnaCMNdGxVha89IIfu9/4fjFP0NbXdSlwKjwx+W84PxzBIe/ALtaHGg=', 'base64'));"); +#ifdef _POSIX + // Helper to locate installed libraries and binaries. + duk_peval_string_noresult(ctx, "addCompressedModule('lib-finder', Buffer.from('eJytVl1v4jgUfQaJ/3AnGo2TGRravm0RKzGdjhZtRaXS2WoEaGUSA1aDnbEdaNX2v+9xkjLQj33YHR4wub4fx/cc39D52Gqe6vzOyMXS0fHh0W80UE5kdKpNrg13UqtWs9U8l4lQVqRUqFQYcktB/ZwnWOqdNv0ljIU3HceHFHqHoN4Kom6reacLWvE7UtpRYQUySEtzmQkSt4nIHUlFiV7lmeQqEbSRbllWqXPEreb3OoOeOQ5nDvccT/NdN+LOoyV8ls7lJ53OZrOJeYk01mbRySo/2zkfnJ4NR2cHQOsjvqlMWEtG/CikwTFnd8RzgEn4DBAzviFtiC+MwJ7THuzGSCfVok1Wz92GG9FqptI6I2eF2+vTEzScd9cBneKKgv6IBqOAPvdHg1G71bweXP1x8e2KrvuXl/3h1eBsRBeXdHox/DK4GlwM8fSV+sPv9Odg+KVNAl1CFXGbG48eEKXvoEjRrpEQe+XnuoJjc5HIuUxwKLUo+ELQQq+FUTgL5cKspPUsWoBLW81MrqQrRWBfnghFPnZ88+aFSrwP+FRpqPhKRK3mfavZsKAxWYa50QnwxXnGHWCssNvw242EAxibo6szm7ITb2qsuQENjno0nna3lmQpsxS2mqCQlYa/68wsisWtSL5CTiHrzKTq2CVr05hhmUZVljIgti7VhcNikIyxV7a0ClnKHUf89lxhEtF9Kdky8lOPktjpEbhUizDq0uPzGlLFXh8iDPKbBdQy1xTQJ/KtwRLQAyENm0wU898PDAa+uSGGKrxnQaEL3x+2ybVpEoyW3CvyXM4s4bxrmYr0ZIJLRXIe8l7v2GOrYtz4eNqmTM58XOWTA6PzpvHRFEDpkW2LP7AaQl383iesix+10Wrr08RWI9HvR75Klez9UZVoosStdBMV7J1+w6U7gz2Mujt8WrT7OQMx+rcKo7gqiXSsDoFGQh8m/T1DbFRaS8U0GsD4DraxnCIHN85e4xKEdWcZ0LLIQ020wvUsBKBWcT7hGijuvesJVSkeq4KN/y+vf9PXrxPYKwpjW4UdZBDQVmSeVsyrvLSt4x2rJ3vCdpQGsp2+aVPQqVWFpzGf9nrBfmzwQgOTrQjYPsLnKmis40wn5SR5Wwm1K25/nBd2Ga5rS8UgzIVRIZbaPDOC3/ifftxXoyQD5bflIKH6U0VRuGV2pZV02hz4loHYhXC4WQM8VIMr6u4EbysAwePepFty+1kqbu5CyKGadj5AzunFtKN3vSdg9OEDvbr9NAJ9g58Qz3lmRVTq16f+BVOw7NMbMn2x959lupfp5yDc4E0l8A70cxDY6jFYD55aVMfPp8rPXHuC2iX2DS2VbS1FWRK30mmRCfQHf2qcH0b+VdV9bo+3tMJj+xtu/wBgt82A', 'base64'), '2022-03-21T18:50:50.000-07:00');"); #endif // monitor-info: Refer to modules/monitor-info.js - duk_peval_string_noresult(ctx, "addCompressedModule('monitor-info', Buffer.from('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', 'base64'), '2022-03-15T18:58:29.000-07:00');"); + duk_peval_string_noresult(ctx, "addCompressedModule('monitor-info', Buffer.from('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', 'base64'), '2022-03-20T18:46:40.000-07:00');"); // service-host. Refer to modules/service-host.js duk_peval_string_noresult(ctx, "addCompressedModule('service-host', Buffer.from('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', 'base64'));"); @@ -2422,6 +2422,9 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) // service-manager, which on linux has a dependency on user-sessions and process-manager. Refer to /modules folder for human readable versions. duk_peval_string_noresult(ctx, "addCompressedModule('process-manager', Buffer.from('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', 'base64'));"); + // Helper functions for KVM + duk_peval_string_noresult(ctx, "addCompressedModule('kvm-helper', Buffer.from('eJytV21v2zYQ/h4g/+H6JZJQW123T5XhDVnWrRmapKiTrkBqBLRE2wRkyuOL4yz1f99REiXqbfWwCYZfeHcPj8fnOdKnJ6cnS81jxTIOK6ruJBXSD05Pnk9PAJ8dESCoHAEbgdYwhefDpLAI+qdmgvqexpCxpFIihPSC8EILQbnyK1hfB/BsUDBcT+AQIEKBscwE+AwYN9agGCsnNg9bgr8VWYzY4TYlCt038GIK3iPjP3zvlaj3bB7OiukvE5yiHNIswbmaYNZbEUVhikDnmOGOevD1K3RsFxnnNFY0ySfS+r6TyrRKBX7qZhI5mcyrvKqcDrYI31plpyxmT+SWPHKySDFVUGsmwzRbMX7HEty8Se1aF7gKCGqrg2kTwWVWnnXuU+A6TYOmeyvaPP3R4I5NmlHOBrXrUhDm3kbUS9G6WxN0Drdars0C2NyW4GCRlBY8335jyWforbrZ0JRxvfeaCiBpmj3S5O7yl0ZKMRJeAS7yYUP2+Q4PSMIIiyVIqCVb+UF4df65gbAm8vNuuXARUrYYLxlPqMBwtP/MOBFPvrdHv7HQ3AvaCL/xbENL9h2DtDL+Nkmv1mS+XrFCiIer2TvM1ln8pGYsuhhZKPGE7836/D67uQ63REhaeB0gJipeg/9X0PG9N4Kw+2RwX5wLQZ5CJvNP3/EOBqJdHTnmMKV8pdZmT7/r8qVYoSUA/tqFpkhO0yJFeymYQ0KpiFDyD6bWvjceO/NMvSAom5orpKPrE8ptypTvIc7967mBOrZc/6VknQ40VLkOwCDJ3Q5UY1cFzZvAJyaUJmlJU3+H2ulv+8YCP1ptDfcsw1bjOoU8YmwjJj1umC8nG/otoZZuvsmtByZeszT5UBDHhcrHH0pGeX2R2dYUwgQhL562NGpghTNToFscl+Ht249XI6B8F6Hru8vZ7cXN9e3Hm/cReAx1K+giU2vPMKFnGkXFBjWe4jwNfLqn8a8sxVRfLRh/JdfeyKZUq98+FgR5n2RahbhZXkIUwZhaIrFhh2lAWUpDxpfZaz8OVTZTgnHsc21ZtHEZDx8FU5iQ1ODBy3qHXoL3hXdq2B9rOyKMObx5A2MCjc4GZ0cj0T1TX3jxPhzySJh6iz5+28P2ihZvHLHSVNJBJtvwXX98V1DYy5tymuntNhPK7zsd7QE4wHvEem/ke6FSODurDqTiq3uyOCdrJyGnAfTeWVI0ISk3WaKRL3RvkpX2eGm6Nq+a+SzV8W9ghhsCNtxjrikGBC8K81yM1Z0tgnLckLFoJCPIb4SovJm9xaAG0Fj5Fh4Yf43URb+ckIbOld22lOi4xlPGBR11H5o/q2OiteCeS5VLArw+TVqcam4JTAerGwuKxWjSLupr7aNm3BBXo39gcQvCVExG1X+UlrXiXlR/bbmURIvc82zUqBS+Cok+/y9lcf4AoaSd20SucDgcXaMlwaz+VTn61tpc6t/EwfvB', 'base64'), '2022-03-22T20:04:50.000-07:00');"); + #if defined(_POSIX) && !defined(__APPLE__) && !defined(_FREEBSD) duk_peval_string_noresult(ctx, "addCompressedModule('linux-dbus', Buffer.from('eJzdWW1v20YS/lwD/g9ToSjJWKJsAwUOVtTCiR2crjk7iJymhS0Ea3IlrU2RvN2lZcHRf+/MkuK7bCX9djQgibuzM8+87uy6/2p/720Ur6SYzTUcHx79C0ah5gG8jWQcSaZFFO7v7e+9Fx4PFfchCX0uQc85nMbMw69spgt/cKmQGo7dQ7CJoJNNdZzB/t4qSmDBVhBGGhLFkYNQMBUBB/7o8ViDCMGLFnEgWOhxWAo9N1IyHu7+3l8Zh+hWMyRmSB7j27RMBkwTWsBnrnV80u8vl0uXGaRuJGf9IKVT/fejt+cX4/MeoqUVn8KAKwWS/y8REtW8XQGLEYzHbhFiwJYQSWAzyXFORwR2KYUW4awLKprqJZN8f88XSktxm+iKnTbQUN8yAVqKhdA5HcNo3IE3p+PRuLu/93l09e/LT1fw+fTjx9OLq9H5GC4/wtvLi7PR1ejyAt/ewenFX/D76OKsCxythFL4YywJPUIUZEHuo7nGnFfET6MUjoq5J6bCQ6XCWcJmHGbRA5ch6gIxlwuhyIsKwfn7e4FYCG2CQDU1QiGv+mQ8LVfwBJe3d9zTrs+nIuQfZITM9Mo+lZKt3FhGOtKrGMOkE3N+3+niggcWJPwEpknokQSwHRyUXCcypAASyg14OMM4+BUO4TcTMdfl4R4cTeDE4CKRvjOANazNp8e0NwebE8c1QaS/XJB/myib+T4ZrQuJ8NGS4YOzv/eUhk6/76HCUcDdIJq1EA5SsgcmIYpT4wxREE6d0IehPKEPGA4hTIIA0feOIB1aZ6vFFOwyyc8/09rNKwEv8V4PUjVooTHBl9TaozOctQIRJo890srKmGdxbFv8gYdaWY57Tj/O0ZuaS9djQWAs3AUtE+6ki+hxPcmZ5obatpSYhSywNgq3ezjl00Fdyl41qm4WppC9uQhQ3wKcGfiCseGhfREjf+TeOywJdqd/K8K+miPD6w5+TbobY7RwRDzKkyLWkfwv18xnmlWNAk/GHxYcGFQHYHUhc2o6mr3QzJosWHXQj5lH0tGnwlZlDEr7InSpJqBeJLS3iEKBkKDXw3JjCmOHEmB4k1n1BlEILLVyyjwarQG5sTrwFWxYzqlGolN8+HMAfgTcm0fQ+enPDr2FHJybMHfQOv3igeLfj3alNF80wBK8TSr8OCSD/Ga/pIHlnNj44dDb92tTA86ldKMQYaOfEUBRPTzKmdaYo2VRgoFLwTA0M9uJvmCJpvixniGJeehTvRzC9aSFjODxR6Er8EwpegbcJg8+5LzztbUpuxmK1Yr1n/HlhUs7TTgT0zRBc8xdE8xdOHKcPNILRBnRlVhwxARp5A8KKip5GBFpSaoO60XcpY/jCluaEeE0ysyeS7g+nLgKtyosMoPc4fTQNmULJD8agIDXZnFW8AdwcCBKtaqkf1nUMS6m72uRixhWRGyS2xAjECq96e+jiVMlq4mgB9W/3qx00cYL25lkEolBNlQTty5e19t1rVhoN6VJj6phSWvNpFafsTnAEm7CADALd9LMMuXbmjT8VRizYzmo53YF6aEK9DK22wgjFpug7wBnQjxmUvEWESlOMDif8cRO9mPUv+yO0FSlSbkwlJ/c4QJL4jc4vST1hx+q8J9H7wtPY1uBDZrRoLrYcKuMUArRknNasUnyFpq75jCqZt8NxaAK527iCmzPHi+ntuVYzuvDwcHBHVbCdStbrB7jNFxr0ecq6ttt0b1z3LtIhMa57dCQx++csOfMGnHbvuoPFjTn0AyNsSd8N4NVSsMB2gSjADzUaCO+KA+19U2LmB7W5k4TQFN6ufpbl5cfxmljk0PJBG5fk227L4KigDOabi0yrWCh+mTGGsKG1/Me2hVGIsjK8PUrtEyauX+GD3bGlyfR9ZYwnOTMm+xKhcSNEzW3c24tLqJqckdHoUE9vdfN+kHPbqV527ZRMlvbcGa8F3eP7RtzRTfj5eauvCOQDMxxvVvZRke+qm7qqfT2Lb3+NLxGLJ9btMU/LcMtQ7fYQ9/v1GRUHLHZmIppxfVoseC+wFOfXXSreFBX27sOblpply9EcUikBSVA6y6kB0Oczhv67d1ve0c/T8L7tmYXPtDOD2dvPo3hDFcVc43AzlpZ6r49bDZk9t5ONHi2DS5btdpwW8NfqdwavK6O0oS3zbnndRritY643jtH99wc9OscNnlSOhXRk/URIsxWvtAfGppGhhu37dTZNIxaupghw2ZztUPKoB63tdcqxzRlNkgrkVS23rNQtlphi1cx9jfhUASd4sGUlKLvVqW68MvhYRrdNZjmi8YM5EXkJxgf/DGO0OgojnJmUB9350yNuXzA/qZ85CtG7ZAteHE3ReGy+0WKlV2kYFpdW/iVG7ZynM5PvLDjKdvYk1YdYMiWwnVQnHAr2d0iYHvSf6uA4iYDOyboJ0qiwkzyvrnYOOqr1I6q/8rNfsJXmEkeQ4eSlsy7uaBgy3vovRvCjfVEmw/8dDwc1ogIXYxgNE6a+8YbTE467JdSNIW2ZEKf40S+c2yuNuumyfYXumiyDI91M0pmXGfxoMphUhq2qzFiFKyc36vXlaUJU01olj1SSWFylizo1rBZeWlDXsU8mto50TV7nDjDYdYwWNtzMANUWdhMnxekROYG8hkphYIvCFqXr/kIGzk2w2hVAsT8It9b5G/TPhWUVl7l/mFiNm44/y8z1KSkwmJauhbt9Xyu9DCSM3dK/1/h6l5HsXv2JlE4Z64hF1zPI/8LXVvjkEm/HjogWEGf/qlTWtY3y9p4ue+F0heYx6rs1F1yt/AvZnD5aG+2cnPpVRoo7eWtad6ypefXAofZlYBh0XIXUElFsO2s1c7391SC89IFRi1nWm8ltkHYwoOedjQtHbDZxBfxzgeOLT0+eiNtG8qXQcS2cv/TBmB7Y1L6mR2UdkJaQ/jtyIqqlK03OwV+Z+3E3+f0HlM=', 'base64'));"); duk_peval_string_noresult(ctx, "addCompressedModule('linux-gnome-helpers', Buffer.from('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', 'base64'));"); diff --git a/modules/kvm-helper.js b/modules/kvm-helper.js new file mode 100644 index 0000000..926bd48 --- /dev/null +++ b/modules/kvm-helper.js @@ -0,0 +1,117 @@ + + +function getUsers() +{ + var res, i, uu = {}; + require('user-sessions').Current(function (u) { res = u; }); + + for (i in res) + { + if (process.platform != 'win32') { res[i].SessionId = res[i].uid; } + if (res[i].State == 'Active' || res[i].State == 'Connected') { uu[process.platform == 'win32' ? res[i].SessionId : res[i].uid] = res[i]; } + } + + if (process.platform != 'win32') + { + var spawnable = this.loginUids(); + for (i in spawnable) + { + if (uu[spawnable[i].uid] == null) + { + uu[spawnable[i].uid] = spawnable[i]; + } + } + } + + res = []; + for (i in uu) + { + res.push(uu[i]); + } + return (res); +} + +if (process.platform == 'linux') +{ + var allowedUIDs = []; + const uid_max = require('user-sessions').getUidConfig().MAX; + const hasXvfb = require('lib-finder').hasBinary('xvfb-run'); + const hasGnomeSession = require('lib-finder').hasBinary('gnome-session'); + + var arg = _MSH().allowedUIDs; + if (arg) { try { allowedUIDs = JSON.parse(arg) } catch (z) { allowedUIDs = []; } } + if (!Array.isArray(allowedUIDs)) { allowedUIDs = []; } + + if (allowedUIDs.length == 0) + { + arg = process.argv.find(function (a) { return (a.startsWith('--allowedUIDs=')); }); + if (arg) { try { allowedUIDs = JSON.parse(arg.split('=')[1]); } catch (z) { allowedUIDs = []; } } + if (!Array.isArray(allowedUIDs)) { allowedUIDs = []; } + } + + if (allowedUIDs.length == 0) { allowedUIDs = require('user-sessions').loginUids(); } + + function spawnVirtualSession(vuid) + { + if (vuid > uid_max) + { + var uid = vuid - uid_max; + var username = require('user-sessions').getUsername(uid); + var childProcess = require('child_process'); + var options = { type: childProcess.SpawnTypes.TERM, env: { HISTCONTROL: 'ignoreboth' } }; + var terminal = childProcess.execFile('/bin/sh', options); + + terminal.stdout.on('data', function (c) { console.info1(c.toString()); }); + terminal.stdin.write('su ' + username + '\n'); + terminal.stdin.write('xvfb-run -n 99 -a gnome-session &\n'); + terminal.stdin.write('exit\nexit\n'); + terminal.waitExit(); + return (uid); + } + else + { + return (vuid); + } + } + + function hasVirtualSessionSupport() + { + return (require('user-sessions').hasLoginCtl && hasXvfb && hasGnomeSession); + } + + + function loginUids() + { + var lids = module.exports.allowed + var uu = {}; + for (i in lids) + { + try + { + uu[lids[i]] = { SessionId: lids[i] + uid_max, State: 'Spawnable', uid: lids[i], StationName: 'xvfb-' + lids[i], Username: require('user-sessions').getUsername(lids[i]) }; + } + catch (z) + { } + } + return (uu); + } + + module.exports = + { + createVirtualSession: spawnVirtualSession, + hasVirtualSessionSupport: hasVirtualSessionSupport(), + users: getUsers, + loginUids: loginUids, + allowed: allowedUIDs, + } +} +else +{ + module.exports = + { + createVirtualSession: function (uid) { return (uid); }, + hasVirtualSessionSupport: false, + users: getUsers, + allowed: allowedUIDs + } +} \ No newline at end of file diff --git a/modules/lib-finder.js b/modules/lib-finder.js index 8d9cd42..bd03b18 100644 --- a/modules/lib-finder.js +++ b/modules/lib-finder.js @@ -39,8 +39,23 @@ function find(name) ret.push(v); } return(ret); - break; + break; + case 'linux': + return (require('monitor-info').getLibInfo(name)); + break; } } +function hasBinary(bin) +{ + if (process.platform != 'linux' && process.platform != 'freebsd') { return (false); } + var child = require('child_process').execFile('/bin/sh', ['sh']); + child.stdout.str = ''; + child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stdin.write("whereis " + bin + " | awk '{ print $2 }'\nexit\n"); + child.waitExit(); + return (child.stdout.str.trim() != ''); +} + module.exports = find; +module.exports.hasBinary = hasBinary; diff --git a/modules/monitor-info.js b/modules/monitor-info.js index 84fffb3..f1d2f83 100644 --- a/modules/monitor-info.js +++ b/modules/monitor-info.js @@ -813,7 +813,7 @@ function monitorinfo() } } } - else + else if(ret.display == null || ret.display === '') { // We need to find $DISPLAY by looking at all the processes running on the same tty as the XServer instance for this user session child = require('child_process').execFile('/bin/sh', ['sh']);