X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fclient_OLD%2Fjavascripts%2Fshared%2FchallengeCheck.js;fp=client%2Fclient_OLD%2Fjavascripts%2Fshared%2FchallengeCheck.js;h=85d8571d1bee65d6e71b9df28c18d392405ad643;hb=625022fdcf750f0aff8fcd699f7e9b89730e1d10;hp=0000000000000000000000000000000000000000;hpb=b955c65b942d09d24b5c3bed0d755d4f2f8f71f1;p=vchess.git diff --git a/client/client_OLD/javascripts/shared/challengeCheck.js b/client/client_OLD/javascripts/shared/challengeCheck.js new file mode 100644 index 00000000..85d8571d --- /dev/null +++ b/client/client_OLD/javascripts/shared/challengeCheck.js @@ -0,0 +1,53 @@ +// 'vname' for 'variant name' is defined when run on client side +function checkChallenge(c, vname) +{ + const vid = parseInt(c.vid); + if (isNaN(vid) || vid <= 0) + return "Please select a variant"; + + const mainTime = parseInt(c.mainTime); + const increment = parseInt(c.increment); + if (isNaN(mainTime) || mainTime <= 0) + return "Main time should be strictly positive"; + if (isNaN(increment) || increment < 0) + return "Increment must be positive"; + + // Basic alphanumeric check for players names + let playerCount = 0; + for (p of c.players) + { + if (p.name.length > 0) + { + if (!p.name.match(/^[\w]+$/)) + return "Wrong characters in players names"; + playerCount++; + } + } + + if (playerCount > 0 && playerCount != c.nbPlayers-1) + return "None, or all of the opponent names must be filled" + + if (typeof document !== "undefined") //client side + { + const V = eval(vname + "Rules"); + // Allow custom FEN (and check it) only for individual challenges + if (c.fen.length > 0 && playerCount > 0) + { + if (!V.IsGoodFen(c.fen)) + return "Bad FEN string"; + } + else + { + // Generate a FEN + c.fen = V.GenRandInitFen(); + } + } + else + { + // Just characters check on server: + if (!c.fen.match(/^[a-zA-Z0-9, /-]*$/)) + return "Bad FEN string"; + } +} + +try { module.exports = checkChallenge; } catch(e) { } //for server