diff --git a/go.mod b/go.mod index 8033aed..75f72a9 100644 --- a/go.mod +++ b/go.mod @@ -5,11 +5,11 @@ go 1.22.0 toolchain go1.22.2 require ( - github.com/fluffy-melli/korcen-go v1.0.2 github.com/gin-gonic/gin v1.10.0 github.com/swaggo/files v1.0.1 github.com/swaggo/gin-swagger v1.6.0 github.com/swaggo/swag v1.16.4 + github.com/fluffy-melli/korcen-go v1.1.0 ) require ( @@ -22,6 +22,7 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/cloudwego/base64x v0.1.4 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/fluffy-melli/korcen-go v1.1.0 // indirect github.com/gabriel-vasile/mimetype v1.4.8 // indirect github.com/gin-contrib/sse v1.0.0 // indirect github.com/go-logr/logr v1.3.0 // indirect @@ -35,6 +36,7 @@ require ( github.com/go-playground/validator/v10 v10.24.0 // indirect github.com/goccy/go-json v0.10.4 // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/google/btree v1.1.3 // indirect github.com/google/uuid v1.5.0 // indirect github.com/gyarang/gohangul v0.1.3 // indirect github.com/josharian/intern v1.0.0 // indirect diff --git a/go.sum b/go.sum index d8c9e5a..e5aa072 100644 --- a/go.sum +++ b/go.sum @@ -24,6 +24,8 @@ github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/fluffy-melli/korcen-go v1.0.2 h1:svrN7f1cUVxKgiP2jiDSrWr6skFMz3OlV7TbvzwwZTk= github.com/fluffy-melli/korcen-go v1.0.2/go.mod h1:s6yddpCHLCtfuNohsvDaK7KM8Xk9EMRsRR6gYyajLmQ= +github.com/fluffy-melli/korcen-go v1.1.0 h1:SxHU0w+aT4bFI5N8gktnD/5J6/BUXO9dqd/T8Pf1YaA= +github.com/fluffy-melli/korcen-go v1.1.0/go.mod h1:Oqxz2xXSPS0EYoCAv/7EX6F6Xl+zkXpfZUpNytszCrQ= github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM= github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8= github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= @@ -59,6 +61,8 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= diff --git a/limit_test.asm b/limit_test.asm new file mode 100644 index 0000000..ee31fcd --- /dev/null +++ b/limit_test.asm @@ -0,0 +1,241 @@ +; limit_test.asm +; NASM syntax x86-64 Windows + +; 아직 미완 + +BITS 64 + +SECTION .data + jsonData db '{"input":"string","replace-end":"string","replace-front":"string"}',0 + jsonDataLen equ $ - jsonData - 1 + + httpRequestHeader db "POST /api/v1/korcen HTTP/1.1\r\nHost: localhost:7777\r\nContent-Type: application/json\r\nContent-Length: 64\r\nConnection: close\r\n\r\n",0 + httpRequestHeaderLen equ $ - httpRequestHeader -1 + + completeMsg db "200 HTTP POST Complete",10,0 + wsaStartMsg db "WSAStartup successful",10,0 + socketCreatedMsg db "Socket created",10,0 + connectedMsg db "Connected to server",10,0 + sendHeaderMsg db "HTTP header sent",10,0 + sendJsonMsg db "JSON data sent",10,0 + recvMsg db "Response received",10,0 + connectFailedMsg db "Connect failed",10,0 + sendFailedMsg db "Send failed",10,0 + recvFailedMsg db "Recv failed",10,0 + cleanupMsg db "WSACleanup called",10,0 + exitErrorMsg db "WSAStartup failed",10,0 + +sockaddr_in: + dw 2 + dw 0x1E61 + dd 0x0100007F + times 8 db 0 + +SECTION .bss + wsaData resb 104 + sock resq 1 + recvBuffer resb 4096 + +SECTION .text + extern ExitProcess + extern WSAStartup + extern WSACleanup + extern socket + extern connect + extern send + extern recv + extern closesocket + extern printf + + global main + +main: + mov ecx, 0x0202 + lea rdx, [rel wsaData] + sub rsp, 40 + call WSAStartup + add rsp, 40 + cmp eax, 0 + jne exit_error + + lea rcx, [rel wsaStartMsg] + sub rsp, 40 + call printf + add rsp, 40 + + mov r12d, 0 + +send_loop: + cmp r12d, 200 + jge end_loop + + mov ecx, 2 + mov edx, 1 + mov r8d, 6 + sub rsp, 40 + call socket + add rsp, 40 + cmp rax, -1 + je loop_continue + mov [rel sock], rax + + lea rcx, [rel socketCreatedMsg] + sub rsp, 40 + call printf + add rsp, 40 + + mov rax, [rel sock] + mov rcx, rax + lea rdx, [rel sockaddr_in] + mov r8d, 16 + sub rsp, 40 + call connect + add rsp, 40 + cmp eax, -1 + je connect_failed + + lea rcx, [rel connectedMsg] + sub rsp, 40 + call printf + add rsp, 40 + + mov rax, [rel sock] + mov rcx, rax + lea rdx, [rel httpRequestHeader] + mov r8d, httpRequestHeaderLen + mov r9d, 0 + sub rsp, 40 + call send + add rsp, 40 + cmp eax, -1 + je send_failed + + lea rcx, [rel sendHeaderMsg] + sub rsp, 40 + call printf + add rsp, 40 + + mov rax, [rel sock] + mov rcx, rax + lea rdx, [rel jsonData] + mov r8d, jsonDataLen + mov r9d, 0 + sub rsp, 40 + call send + add rsp, 40 + cmp eax, -1 + je send_failed + + lea rcx, [rel sendJsonMsg] + sub rsp, 40 + call printf + add rsp, 40 + + mov rax, [rel sock] + mov rcx, rax + lea rdx, [rel recvBuffer] + mov r8d, 4096 + mov r9d, 0 + sub rsp, 40 + call recv + add rsp, 40 + cmp eax, -1 + je recv_failed + + lea rcx, [rel recvMsg] + sub rsp, 40 + call printf + add rsp, 40 + + mov rax, [rel sock] + mov rcx, rax + sub rsp, 40 + call closesocket + add rsp, 40 + + inc r12d + + jmp send_loop + +connect_failed: + lea rcx, [rel connectFailedMsg] + sub rsp, 40 + call printf + add rsp, 40 + + mov rax, [rel sock] + mov rcx, rax + sub rsp, 40 + call closesocket + add rsp, 40 + + inc r12d + + jmp send_loop + +send_failed: + lea rcx, [rel sendFailedMsg] + sub rsp, 40 + call printf + add rsp, 40 + + mov rax, [rel sock] + mov rcx, rax + sub rsp, 40 + call closesocket + add rsp, 40 + + inc r12d + + jmp send_loop + +recv_failed: + lea rcx, [rel recvFailedMsg] + sub rsp, 40 + call printf + add rsp, 40 + + mov rax, [rel sock] + mov rcx, rax + sub rsp, 40 + call closesocket + add rsp, 40 + + inc r12d + + jmp send_loop + +loop_continue: + inc r12d + jmp send_loop + +end_loop: + sub rsp, 40 + call WSACleanup + add rsp, 40 + + lea rcx, [rel cleanupMsg] + sub rsp, 40 + call printf + add rsp, 40 + + lea rcx, [rel completeMsg] + sub rsp, 40 + call printf + add rsp, 40 + + xor ecx, ecx + sub rsp, 40 + call ExitProcess + add rsp, 40 + +exit_error: + lea rcx, [rel exitErrorMsg] + sub rsp, 40 + call printf + add rsp, 40 + + mov ecx, 1 + sub rsp, 40 + call ExitProcess + add rsp, 40