diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 00000000000..d2c8ad3ba66 --- /dev/null +++ b/server/.gitignore @@ -0,0 +1,2 @@ +.idea/workspace.xml +out diff --git a/server/.idea/.name b/server/.idea/.name new file mode 100644 index 00000000000..f083ce87fcb --- /dev/null +++ b/server/.idea/.name @@ -0,0 +1 @@ +Server \ No newline at end of file diff --git a/server/.idea/compiler.xml b/server/.idea/compiler.xml new file mode 100644 index 00000000000..96cc43efa6a --- /dev/null +++ b/server/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/.idea/copyright/profiles_settings.xml b/server/.idea/copyright/profiles_settings.xml new file mode 100644 index 00000000000..e7bedf3377d --- /dev/null +++ b/server/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/server/.idea/libraries/KotlinJavaRuntime.xml b/server/.idea/libraries/KotlinJavaRuntime.xml new file mode 100644 index 00000000000..207fc74dd51 --- /dev/null +++ b/server/.idea/libraries/KotlinJavaRuntime.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/server/.idea/libraries/netty_all_4_1_2_Final_sources.xml b/server/.idea/libraries/netty_all_4_1_2_Final_sources.xml new file mode 100644 index 00000000000..bb3c6ba13b1 --- /dev/null +++ b/server/.idea/libraries/netty_all_4_1_2_Final_sources.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/server/.idea/misc.xml b/server/.idea/misc.xml new file mode 100644 index 00000000000..18d93cc08af --- /dev/null +++ b/server/.idea/misc.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/.idea/modules.xml b/server/.idea/modules.xml new file mode 100644 index 00000000000..3b4a6bb2039 --- /dev/null +++ b/server/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/server/carEmulator/carEmulator.iml b/server/carEmulator/carEmulator.iml new file mode 100644 index 00000000000..245d3429faa --- /dev/null +++ b/server/carEmulator/carEmulator.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/server/carEmulator/src/Main.kt b/server/carEmulator/src/Main.kt new file mode 100644 index 00000000000..bcb73dc4216 --- /dev/null +++ b/server/carEmulator/src/Main.kt @@ -0,0 +1,7 @@ +/** + * Created by user on 7/6/16. + */ + +fun main(args: Array) { + println("test") +} diff --git a/server/lib/kotlin-reflect.jar b/server/lib/kotlin-reflect.jar new file mode 100644 index 00000000000..578ee08e778 Binary files /dev/null and b/server/lib/kotlin-reflect.jar differ diff --git a/server/lib/kotlin-runtime-sources.jar b/server/lib/kotlin-runtime-sources.jar new file mode 100644 index 00000000000..5a6848d4c9e Binary files /dev/null and b/server/lib/kotlin-runtime-sources.jar differ diff --git a/server/lib/kotlin-runtime.jar b/server/lib/kotlin-runtime.jar new file mode 100644 index 00000000000..00e4eb00dd6 Binary files /dev/null and b/server/lib/kotlin-runtime.jar differ diff --git a/server/lib/netty-all-4.1.2.Final-sources.jar b/server/lib/netty-all-4.1.2.Final-sources.jar new file mode 100644 index 00000000000..4c74f90cee0 Binary files /dev/null and b/server/lib/netty-all-4.1.2.Final-sources.jar differ diff --git a/server/lib/netty-all-4.1.2.Final.jar b/server/lib/netty-all-4.1.2.Final.jar new file mode 100644 index 00000000000..27ba26d09e1 Binary files /dev/null and b/server/lib/netty-all-4.1.2.Final.jar differ diff --git a/server/server.iml b/server/server.iml new file mode 100644 index 00000000000..dc2bad21409 --- /dev/null +++ b/server/server.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/src/Main.kt b/server/src/Main.kt new file mode 100644 index 00000000000..231a438eb33 --- /dev/null +++ b/server/src/Main.kt @@ -0,0 +1,14 @@ +import Server.Server + +/** + * Created by user on 7/6/16. + */ + +val port:Int = 7925; + +fun main(args: Array) { + println("server started") + val server = Server(port) + val serverThread = Thread(server); + serverThread.start() +} \ No newline at end of file diff --git a/server/src/Server/Server.kt b/server/src/Server/Server.kt new file mode 100644 index 00000000000..4ca1c8cefec --- /dev/null +++ b/server/src/Server/Server.kt @@ -0,0 +1,42 @@ +package Server + +import io.netty.bootstrap.ServerBootstrap +import io.netty.channel.nio.NioEventLoopGroup +import io.netty.channel.socket.nio.NioServerSocketChannel +import io.netty.handler.logging.LogLevel +import io.netty.handler.logging.LoggingHandler + +/** + * Created by user on 7/6/16. + */ +class Server : Runnable { + + val port: Int; + + constructor(port: Int) { + this.port = port + } + + override fun run() { + val bossGroup = NioEventLoopGroup(1) + val workerGroup = NioEventLoopGroup() + val b = ServerBootstrap() + b.group(bossGroup, workerGroup) + .channel(NioServerSocketChannel().javaClass) + .handler(LoggingHandler(LogLevel.INFO)) + .childHandler(ServerInitializer()) + + try { + val channel = b.bind(port).sync().channel() + channel.closeFuture().sync() + } catch (e: InterruptedException) { + e.printStackTrace() + //todo + } finally { + bossGroup.shutdownGracefully() + workerGroup.shutdownGracefully() + } + + } + +} \ No newline at end of file diff --git a/server/src/Server/ServerHandler.kt b/server/src/Server/ServerHandler.kt new file mode 100644 index 00000000000..aa97ad6398d --- /dev/null +++ b/server/src/Server/ServerHandler.kt @@ -0,0 +1,50 @@ +package Server + +import io.netty.channel.ChannelHandlerContext +import io.netty.channel.SimpleChannelInboundHandler +import io.netty.handler.codec.http.* +import io.netty.util.CharsetUtil +import java.io.File +import java.text.SimpleDateFormat +import java.util.* + +/** + * Created by user on 7/6/16. + */ +class ServerHandler : SimpleChannelInboundHandler() { + + val sb: StringBuilder = StringBuilder(); + + object static { + val stf = SimpleDateFormat("HH-mm-ss"); + } + + override fun channelReadComplete(ctx: ChannelHandlerContext) { + + val dateTime = ServerHandler.static.stf.format(Date(System.currentTimeMillis())) + val fileName: String = "request_$dateTime.log"; + val response = DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK) + response.headers().setInt(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes()) + ctx.writeAndFlush(response) + writeToFile(sb.toString(), fileName); + } + + + override fun channelRead0(ctx: ChannelHandlerContext, msg: Any) { + if (msg is HttpRequest) { + sb.append("" + msg.method() + " " + msg.protocolVersion() + "\n") + for (header in msg.headers()) { + sb.append(header.key + ":" + header.value + "\n") + } + } + if (msg is DefaultHttpContent) { + sb.append(msg.content().toString(CharsetUtil.UTF_8)) + } + } + + fun writeToFile(toFile: String, fileName: String) { + val f = File(fileName) + if (!f.exists()) f.createNewFile() + f.writeText(toFile); + } +} \ No newline at end of file diff --git a/server/src/Server/ServerInitializer.kt b/server/src/Server/ServerInitializer.kt new file mode 100644 index 00000000000..edd6d26b033 --- /dev/null +++ b/server/src/Server/ServerInitializer.kt @@ -0,0 +1,26 @@ +package Server + +import Server.ServerHandler +import io.netty.channel.ChannelInitializer +import io.netty.channel.ChannelPipeline +import io.netty.channel.socket.SocketChannel +import io.netty.handler.codec.http.HttpRequestDecoder +import io.netty.handler.codec.http.HttpResponseEncoder + +/** + * Created by user on 7/6/16. + */ +class ServerInitializer : ChannelInitializer { + + constructor() { + + } + + override fun initChannel(channel: SocketChannel) { + println("init") + val p: ChannelPipeline = channel.pipeline() + p.addLast(HttpRequestDecoder()) + p.addLast(HttpResponseEncoder()) + p.addLast(ServerHandler()) + } +} \ No newline at end of file