diff --git a/src/ConnectChannel.kt b/src/ConnectChannel.kt index 345123f..8e507d3 100644 --- a/src/ConnectChannel.kt +++ b/src/ConnectChannel.kt @@ -2,17 +2,59 @@ import Collections.Stack import org.json.JSONObject import seekdasky.UTF8Encoding.encode import seekdasky.kWebSocket.Client +import seekdasky.kWebSocket.Event import seekdasky.kWebSocket.InteropEvent +import seekdasky.kWebSocket.Listeners.AsynchronousListener import seekdasky.kWebSocket.Listeners.InteropListener import seekdasky.kWebSocket.Message.InteropMessage +import seekdasky.kWebSocket.Message.buildTextMessage -object ConnectChannel : InteropListener { +object ConnectChannel : InteropListener, AsynchronousListener() { private var lastGuestIndex = 0; private val notBoundYet = Stack>(500); private val connected = mutableMapOf(); + override fun filter(c: Client): Boolean { + return c.URL == "/connect"; + } + + override fun processClosed(e: Event) { + return; + } + + override fun processConnection(c: Client) { + return + } + + override fun processEvent(e: Event) { + try { + val json = JSONObject(e.message.toString()); + + if(json.getString("type") == "guest"){ + this.lastGuestIndex = ++this.lastGuestIndex % 500; + val guestName = "Guest"+this.lastGuestIndex; + val jsonReturn = JSONObject(); + jsonReturn.put("error", false); + jsonReturn.put("name", guestName); + + this.notBoundYet.push(Pair("guest",guestName)); + + + e.client.send(buildTextMessage(jsonReturn.toString())); + }else{ + val jsonReturn = JSONObject(); + jsonReturn.put("error", "Admin or User login is disabled when using the websocket API, please use the REST API to access you account"); + + e.client.send(buildTextMessage(jsonReturn.toString())); + } + }catch (ex : Exception){ + val jsonReturn = JSONObject(); + jsonReturn.put("error",true); + e.client.send(buildTextMessage(jsonReturn.toString())); + } + } override fun filter(e: InteropEvent): Boolean { try{ diff --git a/src/Main.kt b/src/Main.kt index c38247c..28b15ee 100644 --- a/src/Main.kt +++ b/src/Main.kt @@ -15,7 +15,9 @@ fun main(args: Array){ server.addListener(Channel(server,"/chat")); server.addListener(emergencyChannel); - server.addListener(eventChannel); + server.addListener(eventChannel) + server.addListener(ConnectChannel); + server.addInteropListener(PostMessage(emergencyChannel,eventChannel)); server.addInteropListener(DelMessage(emergencyChannel,eventChannel)); server.addInteropListener(UpdMessage(emergencyChannel,eventChannel));