ldapUserName and ldapUserRealname can now be set to for example: {{{givenName}}} {{{sn}}} (#4276)

Ylian Saint-Hilaire committed Jul 20, 2022 at 00:50 UTC b7bc172c40867ae5ff7bf3f773a1f6e3c6bba3a6
2 files changed +86 -66
agents/hashagents.json
+69 -63
@@ -1,128 +1,134 @@
1 {
2 "3": {
3 "filename": "MeshService.exe",
4 - "hash": "B23D7FE5B2378D1AD208F3B31642DF40BBE2705317C4620329D9FC67CB8B36FD8C97440A9C5E37E6C8FE8121D45DE626",
5 - "size": 3789824,
6 - "mtime": "2022-07-19T22:51:13Z"
4 + "hash": "C0E5DB22DE5DED510C48141D7CFE4807F98B8205D680F5FC8A5D15950F17A1465E0953B7BFA7FAEED72019E765E1C8E1",
5 + "size": 3680256,
6 + "mtime": "2022-04-04T17:13:59Z"
7 },
8 "4": {
9 "filename": "MeshService64.exe",
10 - "hash": "2B08CC44D4C13185B84B7AC8BFF0AAA7B7A4C70BC61D195E9FC01BE7C054C622B9A5A2C2CB82FA02BC8CFFE62FC0ECF2",
11 - "size": 3419648,
12 - "mtime": "2022-07-19T22:50:43Z"
10 + "hash": "47A927806EDB6DFAC2C79467719FADA0F3625010D551C6D0EA6EA7DB99F088C088E70F562416FC1809B014913CFEA7E0",
11 + "size": 3293184,
12 + "mtime": "2022-03-25T19:04:18Z"
13 },
14 "5": {
15 "filename": "meshagent_x86",
16 - "hash": "259AD0C46A8C9C7D4C661580EAA2C089A30B27D6A540D78E7D19E3119F75191A268BC7A7F544C43D76936DA9900E6FB0",
17 - "size": 3666464,
18 - "mtime": "2022-07-19T23:10:37Z"
16 + "hash": "E984791A6FB96E06191AEA1D7B3066AB8B2170DC7B8A64D7C9A605CDC79B463541D994587E85E3FD4644359329344734",
17 + "size": 3650016,
18 + "mtime": "2022-04-04T17:22:17Z"
19 },
20 "6": {
21 "filename": "meshagent_x86-64",
22 - "hash": "A72427913C9CE24B2E19518933C14D5E9FA9F5B02D4CACF2CD6BF0A8B13776659BBCE4CA006ED6463B65816628609C11",
23 - "size": 3741136,
24 - "mtime": "2022-07-19T23:10:45Z"
22 + "hash": "F6A48178D7BCE798CDF36AC8F49D9650674E38E266DB396A84657EE8FD81BF85FA998456245F2AFE4A20FDD08CD73D2E",
23 + "size": 3724624,
24 + "mtime": "2022-04-04T17:22:25Z"
25 },
26 "7": {
27 "filename": "meshagent_mips",
28 - "hash": "4DD7EA95238FCC527E1399515D1CDC43EF9873D3581066F03A8906A38D75B63A3BB492B338A4342E4043C90C5C5313C8",
29 - "size": 4543564,
30 - "mtime": "2022-07-19T23:10:53Z"
28 + "hash": "2D913C118114219CF127D9415174645A3F11464A4B13D07A702AFC2A836381C52C4A2854403215DAFF4582C058E8B824",
29 + "size": 4522304,
30 + "mtime": "2022-04-04T17:22:32Z"
31 },
32 "9": {
33 "filename": "meshagent_arm",
34 - "hash": "B7DA684D1425A24D9234711115893B330DD5F13A906B41DE84B2A226D0E9B95FB2C03AB2DE1F7738018257CCC21C08C8",
35 - "size": 3148064,
36 - "mtime": "2022-07-19T23:11:02Z"
34 + "hash": "AD1C9D2A1E468AEB26FD6443581C3CE3F5F8D0A3779BA0EA5BA06C20B5094B095B5F0D0F104B2F26053877E5D005FBAB",
35 + "size": 3132180,
36 + "mtime": "2022-04-04T17:22:41Z"
37 },
38 "13": {
39 "filename": "meshagent_pogo",
40 - "hash": "45415D3F6F31861F010B4C1538ABFF99EE9C6DB01EEB46E08D56F5FDE6134370D0BF41EB0961C0E95AC0828F03E48057",
41 - "size": 3156272,
42 - "mtime": "2022-07-19T23:11:11Z"
40 + "hash": "F9E19D72922732BC4C9F84F90CAB380E6A3851B8137A69AB648E1B145BA4F257B5C2C47BBE36CBE62E364328854DD844",
41 + "size": 3140884,
42 + "mtime": "2022-04-04T17:22:51Z"
43 },
44 "15": {
45 "filename": "meshagent_poky",
46 - "hash": "AA61B7452257FDA5D9B60D12205852256BED392AD604B2A4183D423E31217610B1AC45C267EB3D906EBA759257963126",
47 - "size": 3792504,
48 - "mtime": "2022-07-19T23:11:21Z"
46 + "hash": "DFBF910AC01FE7D8BD2E6649908E0BBE0C553C12ACADB4C73C32BC65BCDCCDF336C39BA47A08C6659F9CB8E475C3677F",
47 + "size": 3776024,
48 + "mtime": "2022-04-04T17:23:00Z"
49 },
50 "16": {
51 "filename": "meshagent_osx-x86-64",
52 - "hash": "CE573066BCE2C37AC4F50D5C5FBE246EF1540D8E0F7431CE78BF1D5988803AFDF1307E59E6F6DF32AC52F4030E2CA5A8",
53 - "size": 4687168,
54 - "mtime": "2022-07-19T06:25:24Z"
52 + "hash": "77A87BCAE3534061CE15060C4F8971074B7AEBC88957CC9FF50BF8F6B234E3AFAE48DCB9A44681A24393F20191BB3DA1",
53 + "size": 4391904,
54 + "mtime": "2022-03-25T23:51:40Z"
55 },
56 "18": {
57 "filename": "meshagent_poky64",
58 - "hash": "A679356D5010A2ED8BB9C6875B11792BE88E3159EC472C691B6A518AE2BCB8DDB27D5D4D4ED59DB8CAA6651A8EFF5131",
59 - "size": 3495416,
60 - "mtime": "2022-07-19T23:11:32Z"
58 + "hash": "0DDF6A2CABC3B1D40CBE9CA4A6EB2103308F228D5332F64E3C9B01A54BC968B0120D2A50B71111D70682435A07577ABD",
59 + "size": 3478872,
60 + "mtime": "2022-04-04T17:23:11Z"
61 },
62 "19": {
63 "filename": "meshagent_x86_nokvm",
64 - "hash": "BF3CD00DC7AF8031E23A91FD137BD38792D99FF31FE9F2500BA21234DF2F41F5950BF99C5BB57C8C03BE15548AD1F413",
65 - "size": 3381636,
66 - "mtime": "2022-07-19T23:11:39Z"
64 + "hash": "2AFC43684BD2A2601FAA32BF86F35EAEB29CDD00ABE3BEB3446448EC44E3151E459909569044681C507FE11A82139914",
65 + "size": 3365188,
66 + "mtime": "2022-04-04T17:23:19Z"
67 },
68 "20": {
69 "filename": "meshagent_x86-64_nokvm",
70 - "hash": "3AAD8F890EF129F5F0521B6FA96B72E9D6FF7166A75182C6D931DF3EC6A8B7EC4B789415733FE36F54A21F09CD2B1673",
71 - "size": 3442096,
72 - "mtime": "2022-07-19T23:11:47Z"
70 + "hash": "1B198D624FA99E4D6B52AD139A19259B491FA233A2783F5E4C46955A6AD37DDF5053D7F022C95C8F04684CCADFD2CC3D",
71 + "size": 3425584,
72 + "mtime": "2022-04-04T17:23:27Z"
73 },
74 "24": {
75 "filename": "meshagent_arm-linaro",
76 - "hash": "1324A6EE63FC6317CF455B34A4D0C5CEE1FFA166BB4CD0D985F372BE3854D9930888E76AD50D169005F606914C2390C5",
77 - "size": 2207060,
78 - "mtime": "2022-07-19T23:12:00Z"
76 + "hash": "2F5D211E983A738ABE31A6EAF4B73629FD937D34D5BD8380A420BAB7108040CA2320EADA8F02CFEF763A3C1D0EA8F1A2",
77 + "size": 2194704,
78 + "mtime": "2022-04-04T17:23:39Z"
79 },
80 "25": {
81 "filename": "meshagent_armhf",
82 - "hash": "614CC92DC41FCA4F2BC95020778C5B4B967DBF244E091AB84ABEFAB18E4775EF6ED0F97EB8181CB2FC776B30724EB179",
83 - "size": 3180252,
84 - "mtime": "2022-07-19T05:55:00Z"
82 + "hash": "37F717A44CDA07F88D51A5FF9FD220FEA7F61307BD3A418CC8D9E45D9B9EDB1CB069A9398318E0DF2042C4D204657F7D",
83 + "size": 3166784,
84 + "mtime": "2022-03-25T23:37:14Z"
85 + },
86 + "27": {
87 + "filename": "meshagent_armhf2",
88 + "hash": "0AE840520D3B677B9767EA097F3AA5A1E24212529E688200F43935DB1541AB9FB441EC2C7BA8002D45299B04695FD037",
89 + "size": 2837724,
90 + "mtime": "2021-08-30T21:10:03Z"
91 },
92 "28": {
93 "filename": "meshagent_mips24kc",
88 - "hash": "8AC9BB2A9365C992C40DE0AB654AE5E8A88295C64827325162C7EF218E0EDAA0122983998850902CA3EB31D79BE7E377",
89 - "size": 4180968,
90 - "mtime": "2022-07-19T05:56:10Z"
94 + "hash": "636B02BD3DD7DED0BB79FAF1B991F7DB89FF23DC1373D3F5E3EA76897B4BF44E8F00A57A3B6C87EBECA8142D9AD5B7B9",
95 + "size": 4163768,
96 + "mtime": "2022-03-25T23:38:44Z"
97 },
98 "29": {
99 "filename": "meshagent_osx-arm-64",
94 - "hash": "030935BA1A455F5E18E081C539D2461902DA1D5EE8390C690EDEB203B3C2586AC1BA37F0A0AB8A0A534B21DCBB26C04E",
95 - "size": 3945560,
96 - "mtime": "2022-07-19T06:25:24Z"
100 + "hash": "D1D8CDAF59105E4E8A753CCC9032F1653AE4DB973765E3E009CA9F352BA7B3C8E487B4F34BB9A0C4A629C29DE55FFF69",
101 + "size": 3911880,
102 + "mtime": "2022-03-25T23:51:40Z"
103 },
104 "30": {
105 "filename": "meshagent_freebsd_x86-64",
100 - "hash": "6934C785992896EAA5B7DE0604326C7937A9788F2987DBF52C38CE928BA30524F2DD0CF8767A0147B1F8DA5ED1349030",
101 - "size": 4671416,
102 - "mtime": "2022-07-19T06:23:50Z"
106 + "hash": "4EA888AAD34D104E7FD898E4F331A9A65EB2EB85C7181DADF1E2A5C04B8F22B91B46AEBDC512D714D11D04B4C2B1EA3E",
107 + "size": 4657032,
108 + "mtime": "2022-03-25T23:51:56Z"
109 },
110 "32": {
111 "filename": "meshagent_aarch64",
106 - "hash": "2BCEDB1042642D9B970F7B2532B700C4D3EA02F934CC6167E89E819C245A502043BDEBF64B4A2D75E0437F56AF1FFC17",
107 - "size": 3248496,
108 - "mtime": "2022-07-19T05:53:38Z"
112 + "hash": "27B50D0696EA3156BA91CBE0EFC2775217A2DCB1BC7AB0B079DCDE52E7D2B3E2A2647FDC6F74087C4D8D748FD90F59AD",
113 + "size": 3227888,
114 + "mtime": "2022-03-25T23:34:50Z"
115 },
116 "40": {
117 "filename": "meshagent_mipsel24kc",
112 - "hash": "15A135796664E2C6BA485A67246E0A5D8E9949FABB8F89DCF9C1C0D1701326DF356FD4003B54B3478B0400A798D7FA79",
113 - "size": 4177256,
114 - "mtime": "2022-07-19T05:57:12Z"
118 + "hash": "31F3377C4703CFFDD6905FC0EFC96C4BB328474CE62BECB2E79860C5841CA9019EFC6945974847D03797EE49529DDDE0",
119 + "size": 4160072,
120 + "mtime": "2022-03-25T23:40:12Z"
121 },
122 "41": {
123 "filename": "meshagent_aarch64-cortex-a53",
118 - "hash": "CA2034354732DF86F5D8E66B84E44F8DDB217E4059CBF473F85DD9E1A5B6583B7587053BF192FFCE301BD0F93E40DB9D",
119 - "size": 3076424,
120 - "mtime": "2022-07-19T05:58:08Z"
124 + "hash": "E6D65EB2F8013E4DB811E2E73150C063EB41DF8C9D8321D1F2CA2FAEEA7DBA203032AD4E95A467A0D8FD836E18EE3D0D",
125 + "size": 3059896,
126 + "mtime": "2022-03-25T23:41:28Z"
127 },
128 "10005": {
129 "filename": "meshagent_osx-universal-64",
124 - "hash": "0092732E6602AF83DB316BF1924D6DA609534C50287B87A4E044E7595756890AEF19186A9C4618753C37EE114A035B75",
125 - "size": 8664152,
126 - "mtime": "2022-07-19T06:25:24Z"
130 + "hash": "5AB5C0580E9B7B0689C20FD01561997D7B17CA5E14C747E981888C74B8CCECEE827E141ECF6CBD76C5040051C09DE840",
131 + "size": 8335560,
132 + "mtime": "2022-03-25T23:51:40Z"
133 }
134 }
webserver.js
+17 -3
@@ -453,7 +453,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
453 // Work on getting the userid for this LDAP user
454 var shortname = null;
455 var username = xxuser['displayName'];
456 - if (domain.ldapusername) { username = xxuser[domain.ldapusername]; }
456 + if (typeof domain.ldapusername == 'string') {
457 + if (domain.ldapusername.indexOf('{{{') >= 0) { username = assembleStringFromObject(domain.ldapusername, xxuser); } else { username = xxuser[domain.ldapusername]; }
458 + }
459 if (domain.ldapuserbinarykey) {
460 // Use a binary key as the userid
461 if (xxuser[domain.ldapuserbinarykey]) { shortname = Buffer.from(xxuser[domain.ldapuserbinarykey], 'binary').toString('hex').toLowerCase(); }
@@ -474,12 +476,14 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
476 // Get the email address for this LDAP user
477 var email = null;
478 if (domain.ldapuseremail) { email = xxuser[domain.ldapuseremail]; } else if (xxuser.mail) { email = xxuser.mail; } // Use given feild name or default
477 - if ('[object Array]' == Object.prototype.toString.call(email)) { email = email[0]; } // Mail may be multivalued in LDAP in which case, answer is an array. Use the 1st value.
479 + if (Array.isArray(email)) { email = email[0]; } // Mail may be multivalued in LDAP in which case, answer is an array. Use the 1st value.
480 if (email) { email = email.toLowerCase(); } // it seems some code elsewhere also lowercase the emailaddress, so let's be consistant.
481
482 // Get the real name for this LDAP user
483 var realname = null;
482 - if (domain.ldapuserrealname) { realname = xxuser[domain.ldapuserrealname]; }
484 + if (typeof domain.ldapuserrealname == 'string') {
485 + if (domain.ldapuserrealname.indexOf('{{{') >= 0) { realname = assembleStringFromObject(domain.ldapuserrealname, xxuser); } else { realname = xxuser[domain.ldapuserrealname]; }
486 + }
487 else { if (typeof xxuser['name'] == 'string') { realname = xxuser['name']; } }
488
489 // Get the phone number for this LDAP user
@@ -500,6 +504,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
504 // Display user information extracted from LDAP data
505 /*
506 console.log('shortname', shortname);
507 + console.log('username', username);
508 console.log('email', email);
509 console.log('realname', realname);
510 console.log('phonenumber', phonenumber);
@@ -8537,5 +8542,14 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
8542 return require('ipcheck').match(cookieip, ip + '/24'); // 'lax' - IP address need to be in the some range
8543 }
8544
8545 + // Takes a formating string like "this {{{a}}} is an {{{b}}} example" and fills the a and b with input o.a and o.b
8546 + function assembleStringFromObject(format, o) {
8547 + var r = '', i = format.indexOf('{{{');
8548 + if (i > 0) { r = format.substring(0, i); format = format.substring(i); }
8549 + const cmd = format.split('{{{');
8550 + for (var j in cmd) { if (j == 0) continue; i = cmd[j].indexOf('}}}'); r += o[cmd[j].substring(0, i)] + cmd[j].substring(i + 3); }
8551 + return r;
8552 + }
8553 +
8554 return obj;
8555 };