diff --git a/exec/load/install-3rdp-xtrn.js b/exec/load/install-3rdp-xtrn.js index 68305e6a3a5d115e70967ef77dbbc183bc49415f..f9f81bada40cabb6b996429a566bf547edb6b1c3 100755 --- a/exec/load/install-3rdp-xtrn.js +++ b/exec/load/install-3rdp-xtrn.js @@ -9,7 +9,12 @@ // The additional install-xtrn.ini keys are: // exe = filename of door's executable -// md5 = comma-separated list of md5-sums (in lowercase hexadecimal) + +// The additional install-xtrn.ini sections are: +// [md5:<md5-sum>] where <md5-sum> is a hex md5-sum of a version of the exe file +// ver = <optional version information, don't start with "v" or "version"> +// url = <optional location to find corresponding distribution/install archive> + "use strict"; @@ -32,22 +37,24 @@ function scan(options) return; } const ini = f.iniGetObject(/* lowercase: */true); + const md5 = f.iniGetAllObjects("sum", "md5:", /* lowercase: */true); f.close(); if (!ini.exe) { out.push("!No executable filename specified in " + f.name); return; } - if (!ini.md5) { + if (!md5) { out.push("!No md5 list specified in " + f.name); return; } if (!exe_list[ini.exe]) exe_list[ini.exe] = {}; - var md5_list = ini.md5.split(','); - for(var i in md5_list) - exe_list[ini.exe][md5_list[i]] = f.name; + for(var i in md5) { + exe_list[ini.exe][md5[i].sum] = md5; + exe_list[ini.exe][md5[i].sum].ini_fname = f.name; + } }); - + for(var i in exe_list) { directory(options.xtrn_dir + '*').forEach(function (e) { const f = new File(e + i); @@ -57,8 +64,10 @@ function scan(options) var md5 = f.md5_hex; f.close(); if(!exe_list[i][md5]) { - if(options.debug) + if(options.debug) { out.push("!MD5 sum of " + f.name + " (" + md5 + ") not found."); + out.push(JSON.stringify(exe_list, null, 4)); + } return; } var startup_dir = f.name.substr(0, Math.max(f.name.lastIndexOf("/"), f.name.lastIndexOf("\\"), 0)); @@ -68,11 +77,12 @@ function scan(options) out.push(ini_fname + " already exists"); return; } - if (!file_copy(exe_list[i][md5], ini_fname)) { - out.push("!Error copying " + exe_list[i][md5] + " to " + ini_fname); + var src = exe_list[i][md5].ini_fname; + if (!file_copy(src, ini_fname)) { + out.push("!Error copying " + src + " to " + ini_fname); return; } - out.push(exe_list[i][md5] + " copied to " + ini_fname); + out.push(src + " copied to " + ini_fname); }); } return out; diff --git a/xtrn/3rdp-install/README.md b/xtrn/3rdp-install/README.md index 3e0a6a7e311e79dc0ffa4d7d5c61058fd3f7cd70..c19671a9bec4be9862cf408657d14917ca60f6a9 100644 --- a/xtrn/3rdp-install/README.md +++ b/xtrn/3rdp-install/README.md @@ -4,10 +4,13 @@ The `.ini` files in this directory are in the Synchronet `install-xtrn.ini` format with base filenames reflecting the door they are intended to help install into a Synchronet system. -The additional keys expected are: +The additional keys/sections expected are: ~~~ -exe = name of the executable file -md5 = comma-separated list of MD5-sums for supported executable file versions +exe = name of the executable file (in the root/unnamed section) [one] + +[md5:<sum>] Hex MD5-sum for a supported executable file version [multiple] +ver = <optional version information - start with a number, not 'v') +url = <optional distribution/install package location - start with scheme://> ~~~ MD5-sums are presented in lowercase hexadecimal (e.g. same format returned by *nix `md5sum` utility). diff --git a/xtrn/3rdp-install/doormud.ini b/xtrn/3rdp-install/doormud.ini index b21ad50d4cec595eff56f73e6ada236c2e6d2f0a..37d145e81947dea70fb8a9c714269ef3281d523e 100644 --- a/xtrn/3rdp-install/doormud.ini +++ b/xtrn/3rdp-install/doormud.ini @@ -5,7 +5,7 @@ By: RhythmNp (Evan Elias) Cats: Games Subs: Multiplayer, Adventure, MUD, Native exe: dmud32.exe -md5: b92fe52e1883ad8502cb2ea9de75173f +[md5:b92fe52e1883ad8502cb2ea9de75173f] [prog:DOORMUD] cmd = dmud32 diff --git a/xtrn/3rdp-install/foodfite-wilson.ini b/xtrn/3rdp-install/foodfite-wilson.ini index 4bf25d4f815613e6fb4dffb6c08f0839186d4a66..83ea5ccbf8018dce82eb22ddd6b8bdfd364c87bb 100644 --- a/xtrn/3rdp-install/foodfite-wilson.ini +++ b/xtrn/3rdp-install/foodfite-wilson.ini @@ -6,17 +6,26 @@ By: Mike Wilson Cats: Games Subs: Multiplayer, RPG exe: FOODFITE.EXE -; 591c73daff36feb8ba36ebb8b322307e 4.61 -; 591c73daff36feb8ba36ebb8b322307e 4.6 -; b42ed4a7d5cb0689d835def10a86b67b 4.5 -; bde3e380329a902c5fcf1391ec06f440 4.4 -; b8a9e177e208df0b496cad7f7c77aec2 4.0 -; 939bb5189d4535f6388e6c35b96cc45f 3.3 -; 33cd35708a5cf17ce2415636f715f196 3.2 -; 36be50db6c3ef653ff1024bdd4e8f0dc 3.0 -; fe15a026d4fd10db3f67997c2ac146d2 2.5 -; 94ba5e82ab234124ddad72eaa7dc4658 2.0 -md5: 591c73daff36feb8ba36ebb8b322307e,bde3e380329a902c5fcf1391ec06f440,b42ed4a7d5cb0689d835def10a86b67b,591c73daff36feb8ba36ebb8b322307e,b8a9e177e208df0b496cad7f7c77aec2,939bb5189d4535f6388e6c35b96cc45f,33cd35708a5cf17ce2415636f715f196,36be50db6c3ef653ff1024bdd4e8f0dc,fe15a026d4fd10db3f67997c2ac146d2,94ba5e82ab234124ddad72eaa7dc4658 +[md5:591c73daff36feb8ba36ebb8b322307e] +ver = 4.61 +[md5:591c73daff36feb8ba36ebb8b322307e] +ver = 4.6 +[md5:b42ed4a7d5cb0689d835def10a86b67b] +ver = 4.5 +[md5:bde3e380329a902c5fcf1391ec06f440] +ver = 4.4 +[md5:b8a9e177e208df0b496cad7f7c77aec2] +ver = 4.0 +[md5:939bb5189d4535f6388e6c35b96cc45f] +ver = 3.3 +[md5:33cd35708a5cf17ce2415636f715f196] +ver = 3.2 +[md5:36be50db6c3ef653ff1024bdd4e8f0dc] +ver = 3.0 +[md5:fe15a026d4fd10db3f67997c2ac146d2] +ver = 2.5 +[md5:94ba5e82ab234124ddad72eaa7dc4658] +ver = 2.0 [prog:FOODFITE] ; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX