diff --git a/jtserv/jtserv.rb b/jtserv/jtserv.rb index cb1ddcb..0bb17a9 100755 --- a/jtserv/jtserv.rb +++ b/jtserv/jtserv.rb @@ -458,6 +458,7 @@ STDERR.printf("RECV%s: [%s]\n", user ? "("+user+")" : "", json.reject{|k,v|k=="Passcode"}.to_json) if skey then + userinfo["trial"] = 0 # Reset auth count if json["team"] then #team[json["team"]][json["name"]] ||= nil userinfo = {"team" => json["team"], "name" => json["name"]} @@ -516,6 +517,8 @@ ws_conn.send(JSON.generate({"yourtext" => r})) end else ########## Before authenticated + userinfo["trial"] ||= 0 + p userinfo["trial"] if json["Login"] user = json["Login"] email = db.email(user) @@ -551,6 +554,7 @@ p textDB.textfiles ws_conn.send(j) # Login success by skey else + ## Need too frequent trial barrier here? ws_conn.send(JSON.generate({"fail" => "nokey"})) end elsif json["Passcode"] @@ -569,6 +573,15 @@ j = JSON.generate(r) ws_conn.send(j) # Login success by token+tmpkey else + case userinfo["trial"]+=1 + when 0..3 + when 4..8 + sleep 3 + else + ws_conn.send(JSON.generate({"user"=>user, "fail"=>"byebye"})) + ws_conn.close + next + end j = JSON.generate({"user" => user, "fail" => "fail"}) ws_conn.send(j) # Login failure by token end